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')]); + } + } +});