diff --git a/packages/firebase-admob/project.json b/packages/firebase-admob/project.json
index 93bfedee..254b7feb 100644
--- a/packages/firebase-admob/project.json
+++ b/packages/firebase-admob/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-admob/*.md",
"packages/firebase-admob/index.d.ts",
+ "packages/firebase-admob/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-admob/typings/index.d.ts b/packages/firebase-admob/typings/index.d.ts
new file mode 100644
index 00000000..edb5b66e
--- /dev/null
+++ b/packages/firebase-admob/typings/index.d.ts
@@ -0,0 +1,6 @@
+///
+///
+///
+///
+///
+///
diff --git a/packages/firebase-analytics/project.json b/packages/firebase-analytics/project.json
index cd2f946f..1b330717 100644
--- a/packages/firebase-analytics/project.json
+++ b/packages/firebase-analytics/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-analytics/*.md",
"packages/firebase-analytics/index.d.ts",
+ "packages/firebase-analytics/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-analytics/typings/index.d.ts b/packages/firebase-analytics/typings/index.d.ts
new file mode 100644
index 00000000..c6e6872d
--- /dev/null
+++ b/packages/firebase-analytics/typings/index.d.ts
@@ -0,0 +1,2 @@
+///
+///
diff --git a/packages/firebase-app-check-debug/project.json b/packages/firebase-app-check-debug/project.json
index f9ef02f3..1cffd957 100644
--- a/packages/firebase-app-check-debug/project.json
+++ b/packages/firebase-app-check-debug/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-app-check-debug/*.md",
"packages/firebase-app-check-debug/index.d.ts",
+ "packages/firebase-app-check-debug/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-app-check-debug/typings/index.d.ts b/packages/firebase-app-check-debug/typings/index.d.ts
new file mode 100644
index 00000000..67cd3ef9
--- /dev/null
+++ b/packages/firebase-app-check-debug/typings/index.d.ts
@@ -0,0 +1,3 @@
+///
+///
+///
diff --git a/packages/firebase-app-check/project.json b/packages/firebase-app-check/project.json
index e2b0c504..73cc4a30 100644
--- a/packages/firebase-app-check/project.json
+++ b/packages/firebase-app-check/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-app-check/*.md",
"packages/firebase-app-check/index.d.ts",
+ "packages/firebase-app-check/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-app-check/typings/index.d.ts b/packages/firebase-app-check/typings/index.d.ts
new file mode 100644
index 00000000..67cd3ef9
--- /dev/null
+++ b/packages/firebase-app-check/typings/index.d.ts
@@ -0,0 +1,3 @@
+///
+///
+///
diff --git a/packages/firebase-auth/project.json b/packages/firebase-auth/project.json
index 122182c7..5a90dc26 100644
--- a/packages/firebase-auth/project.json
+++ b/packages/firebase-auth/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-auth/*.md",
"packages/firebase-auth/index.d.ts",
+ "packages/firebase-auth/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-auth/typings/index.d.ts b/packages/firebase-auth/typings/index.d.ts
new file mode 100644
index 00000000..00cb6354
--- /dev/null
+++ b/packages/firebase-auth/typings/index.d.ts
@@ -0,0 +1,4 @@
+///
+///
+///
+///
diff --git a/packages/firebase-core/project.json b/packages/firebase-core/project.json
index 869136d7..a729dceb 100644
--- a/packages/firebase-core/project.json
+++ b/packages/firebase-core/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-core/*.md",
"packages/firebase-core/index.d.ts",
+ "packages/firebase-core/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-core/typings/index.d.ts b/packages/firebase-core/typings/index.d.ts
new file mode 100644
index 00000000..19aa2452
--- /dev/null
+++ b/packages/firebase-core/typings/index.d.ts
@@ -0,0 +1,2 @@
+///
+///
diff --git a/packages/firebase-crashlytics/project.json b/packages/firebase-crashlytics/project.json
index 62376b89..5393538e 100644
--- a/packages/firebase-crashlytics/project.json
+++ b/packages/firebase-crashlytics/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-crashlytics/*.md",
"packages/firebase-crashlytics/index.d.ts",
+ "packages/firebase-crashlytics/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-crashlytics/typings/index.d.ts b/packages/firebase-crashlytics/typings/index.d.ts
new file mode 100644
index 00000000..9c9a6544
--- /dev/null
+++ b/packages/firebase-crashlytics/typings/index.d.ts
@@ -0,0 +1,3 @@
+///
+///
+///
diff --git a/packages/firebase-database/project.json b/packages/firebase-database/project.json
index bf2b1df8..67e78da0 100644
--- a/packages/firebase-database/project.json
+++ b/packages/firebase-database/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-database/*.md",
"packages/firebase-database/index.d.ts",
+ "packages/firebase-database/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-database/typings/index.d.ts b/packages/firebase-database/typings/index.d.ts
new file mode 100644
index 00000000..35a9d924
--- /dev/null
+++ b/packages/firebase-database/typings/index.d.ts
@@ -0,0 +1,3 @@
+///
+///
+///
diff --git a/packages/firebase-dynamic-links/project.json b/packages/firebase-dynamic-links/project.json
index 5d08a659..735921fe 100644
--- a/packages/firebase-dynamic-links/project.json
+++ b/packages/firebase-dynamic-links/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-dynamic-links/*.md",
"packages/firebase-dynamic-links/index.d.ts",
+ "packages/firebase-dynamic-links/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-dynamic-links/typings/index.d.ts b/packages/firebase-dynamic-links/typings/index.d.ts
new file mode 100644
index 00000000..83dbfd47
--- /dev/null
+++ b/packages/firebase-dynamic-links/typings/index.d.ts
@@ -0,0 +1,4 @@
+///
+///
+///
+///
diff --git a/packages/firebase-firestore/project.json b/packages/firebase-firestore/project.json
index 20b6742c..8af8e143 100644
--- a/packages/firebase-firestore/project.json
+++ b/packages/firebase-firestore/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-firestore/*.md",
"packages/firebase-firestore/index.d.ts",
+ "packages/firebase-firestore/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-firestore/typings/index.d.ts b/packages/firebase-firestore/typings/index.d.ts
new file mode 100644
index 00000000..dca77e39
--- /dev/null
+++ b/packages/firebase-firestore/typings/index.d.ts
@@ -0,0 +1,3 @@
+///
+///
+///
diff --git a/packages/firebase-functions/project.json b/packages/firebase-functions/project.json
index 6974bba6..a960b78a 100644
--- a/packages/firebase-functions/project.json
+++ b/packages/firebase-functions/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-functions/*.md",
"packages/firebase-functions/index.d.ts",
+ "packages/firebase-functions/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-functions/typings/index.d.ts b/packages/firebase-functions/typings/index.d.ts
new file mode 100644
index 00000000..3b935fcc
--- /dev/null
+++ b/packages/firebase-functions/typings/index.d.ts
@@ -0,0 +1,3 @@
+///
+///
+///
diff --git a/packages/firebase-in-app-messaging/project.json b/packages/firebase-in-app-messaging/project.json
index 14ed5e83..261f55ea 100644
--- a/packages/firebase-in-app-messaging/project.json
+++ b/packages/firebase-in-app-messaging/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-in-app-messaging/*.md",
"packages/firebase-in-app-messaging/index.d.ts",
+ "packages/firebase-in-app-messaging/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-in-app-messaging/typings/index.d.ts b/packages/firebase-in-app-messaging/typings/index.d.ts
new file mode 100644
index 00000000..fe9cc23b
--- /dev/null
+++ b/packages/firebase-in-app-messaging/typings/index.d.ts
@@ -0,0 +1,2 @@
+///
+///
diff --git a/packages/firebase-installations/project.json b/packages/firebase-installations/project.json
index 868b97dd..4f0a6030 100644
--- a/packages/firebase-installations/project.json
+++ b/packages/firebase-installations/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-installations/*.md",
"packages/firebase-installations/index.d.ts",
+ "packages/firebase-installations/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-installations/typings/index.d.ts b/packages/firebase-installations/typings/index.d.ts
new file mode 100644
index 00000000..273387d3
--- /dev/null
+++ b/packages/firebase-installations/typings/index.d.ts
@@ -0,0 +1,3 @@
+///
+///
+///
diff --git a/packages/firebase-messaging/project.json b/packages/firebase-messaging/project.json
index fc4b1f5b..b046a301 100644
--- a/packages/firebase-messaging/project.json
+++ b/packages/firebase-messaging/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-messaging/*.md",
"packages/firebase-messaging/index.d.ts",
+ "packages/firebase-messaging/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-messaging/typings/index.d.ts b/packages/firebase-messaging/typings/index.d.ts
new file mode 100644
index 00000000..cbd0bcf1
--- /dev/null
+++ b/packages/firebase-messaging/typings/index.d.ts
@@ -0,0 +1,4 @@
+///
+///
+///
+///
diff --git a/packages/firebase-performance/project.json b/packages/firebase-performance/project.json
index 690b312a..668a2293 100644
--- a/packages/firebase-performance/project.json
+++ b/packages/firebase-performance/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-performance/*.md",
"packages/firebase-performance/index.d.ts",
+ "packages/firebase-performance/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-performance/typings/index.d.ts b/packages/firebase-performance/typings/index.d.ts
new file mode 100644
index 00000000..1d097822
--- /dev/null
+++ b/packages/firebase-performance/typings/index.d.ts
@@ -0,0 +1,2 @@
+///
+///
diff --git a/packages/firebase-remote-config/project.json b/packages/firebase-remote-config/project.json
index 72b2ddd4..85f5f9b1 100644
--- a/packages/firebase-remote-config/project.json
+++ b/packages/firebase-remote-config/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-remote-config/*.md",
"packages/firebase-remote-config/index.d.ts",
+ "packages/firebase-remote-config/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-remote-config/typings/index.d.ts b/packages/firebase-remote-config/typings/index.d.ts
new file mode 100644
index 00000000..b669656a
--- /dev/null
+++ b/packages/firebase-remote-config/typings/index.d.ts
@@ -0,0 +1,3 @@
+///
+///
+///
diff --git a/packages/firebase-storage/project.json b/packages/firebase-storage/project.json
index f18f6dec..784594db 100644
--- a/packages/firebase-storage/project.json
+++ b/packages/firebase-storage/project.json
@@ -13,6 +13,7 @@
"assets": [
"packages/firebase-storage/*.md",
"packages/firebase-storage/index.d.ts",
+ "packages/firebase-storage/typings/*.d.ts",
"LICENSE",
{
"glob": "**/*",
diff --git a/packages/firebase-storage/typings/index.d.ts b/packages/firebase-storage/typings/index.d.ts
new file mode 100644
index 00000000..b26cf362
--- /dev/null
+++ b/packages/firebase-storage/typings/index.d.ts
@@ -0,0 +1,3 @@
+///
+///
+///
diff --git a/tools/scripts/generate-publish-typings.js b/tools/scripts/generate-publish-typings.js
new file mode 100644
index 00000000..a14858b0
--- /dev/null
+++ b/tools/scripts/generate-publish-typings.js
@@ -0,0 +1,41 @@
+const { spawnSync } = require('child_process');
+const fs = require('fs');
+const { join } = require('path');
+
+const projectRoot = join(__dirname, '..', '..');
+
+const packages = fs.readdirSync(join(projectRoot, 'packages'));
+
+packages.forEach((package) => {
+ if (fs.existsSync(join(projectRoot, 'packages', package, 'typings'))) {
+ const typings = fs.readdirSync(join(projectRoot, 'packages', package, 'typings'));
+ if (typings.length > 0) {
+ fs.writeFileSync(join(projectRoot, 'packages', package, 'typings', 'index.d.ts'), typings.map((file) => `/// `).join('\n') + '\n');
+ const projectJson = JSON.parse(fs.readFileSync(join(projectRoot, 'packages', package, 'project.json'), 'utf8'));
+ const targets = projectJson.targets;
+ for (const target of Object.keys(targets)) {
+ if (targets[target].options) {
+ const options = targets[target].options;
+ if (options.assets) {
+ if (options.assets.find((f) => f === `packages/${package}/typings/*.d.ts`)) {
+ return;
+ }
+ /** @type string[] */
+ const assets = options.assets;
+ let targetIdx = assets.length - 1;
+ assets.forEach((asset, idx) => {
+ if (typeof asset !== 'string') return;
+ if (asset.startsWith(`packages/${package}/`)) {
+ targetIdx = idx;
+ }
+ });
+ assets.splice(targetIdx + 1, 0, `packages/${package}/typings/*.d.ts`);
+ }
+ }
+ }
+ fs.writeFileSync(join(projectRoot, 'packages', package, 'project.json'), JSON.stringify(projectJson, null, 2));
+ spawnSync('npx', ['prettier', '--write', join(projectRoot, 'packages', package, 'project.json')]);
+ spawnSync('npx', ['prettier', '--write', join(projectRoot, 'packages', package, 'typings', 'index.d.ts')]);
+ }
+ }
+});