firebase-tools 15.0.0 → 15.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (523) hide show
  1. package/lib/accountExporter.js +3 -5
  2. package/lib/accountImporter.js +4 -5
  3. package/lib/api.js +3 -3
  4. package/lib/apiv2.js +9 -13
  5. package/lib/appUtils.js +33 -36
  6. package/lib/appdistribution/client.js +4 -8
  7. package/lib/appdistribution/distribution.js +4 -4
  8. package/lib/appdistribution/options-parser-util.js +8 -9
  9. package/lib/appdistribution/types.js +2 -2
  10. package/lib/appdistribution/yaml_helper.js +33 -17
  11. package/lib/apphosting/app.js +8 -13
  12. package/lib/apphosting/backend.js +34 -24
  13. package/lib/apphosting/config.js +14 -14
  14. package/lib/apphosting/githubConnections.js +38 -35
  15. package/lib/apphosting/localbuilds.js +4 -6
  16. package/lib/apphosting/repo.js +24 -20
  17. package/lib/apphosting/rollout.js +12 -5
  18. package/lib/apphosting/secrets/dialogs.js +9 -9
  19. package/lib/apphosting/secrets/index.js +9 -11
  20. package/lib/apphosting/utils.js +2 -3
  21. package/lib/apphosting/yaml.js +12 -11
  22. package/lib/apptesting/ensureProjectConfigured.js +1 -2
  23. package/lib/apptesting/invokeTests.js +2 -3
  24. package/lib/apptesting/parseTestFiles.js +5 -6
  25. package/lib/apptesting/types.js +2 -2
  26. package/lib/archiveDirectory.js +1 -2
  27. package/lib/auth.js +36 -40
  28. package/lib/bin/cli.js +2 -3
  29. package/lib/bin/mcp.js +47 -10
  30. package/lib/checkMinRequiredVersion.js +1 -2
  31. package/lib/checkValidTargetFilters.js +1 -2
  32. package/lib/command.js +6 -9
  33. package/lib/commands/appdistribution-testers-list.js +2 -3
  34. package/lib/commands/apphosting-backends-list.js +4 -6
  35. package/lib/commands/apphosting-builds-create.js +2 -3
  36. package/lib/commands/apphosting-builds-get.js +1 -2
  37. package/lib/commands/apphosting-rollouts-list.js +1 -2
  38. package/lib/commands/apps-init.js +1 -1
  39. package/lib/commands/{apptesting-execute.js → apptesting-wata.js} +3 -4
  40. package/lib/commands/crashlytics-symbols-upload.js +2 -2
  41. package/lib/commands/dataconnect-execute.js +4 -4
  42. package/lib/commands/dataconnect-sdk-generate.js +5 -6
  43. package/lib/commands/dataconnect-services-list.js +7 -8
  44. package/lib/commands/dataconnect-sql-diff.js +1 -2
  45. package/lib/commands/dataconnect-sql-migrate.js +4 -3
  46. package/lib/commands/dataconnect-sql-setup.js +2 -2
  47. package/lib/commands/dataconnect-sql-shell.js +5 -1
  48. package/lib/commands/emulators-start.js +1 -2
  49. package/lib/commands/ext-configure.js +6 -4
  50. package/lib/commands/ext-dev-list.js +2 -3
  51. package/lib/commands/ext-dev-upload.js +2 -2
  52. package/lib/commands/ext-export.js +1 -1
  53. package/lib/commands/ext-info.js +2 -3
  54. package/lib/commands/ext-install.js +5 -7
  55. package/lib/commands/firestore-backups-list.js +1 -2
  56. package/lib/commands/firestore-backups-schedules-list.js +1 -2
  57. package/lib/commands/firestore-indexes-list.js +1 -2
  58. package/lib/commands/firestore-utils.js +1 -2
  59. package/lib/commands/functions-artifacts-setpolicy.js +1 -2
  60. package/lib/commands/functions-config-export.js +2 -3
  61. package/lib/commands/hosting-channel-deploy.js +2 -2
  62. package/lib/commands/hosting-clone.js +2 -3
  63. package/lib/commands/hosting-sites-create.js +1 -1
  64. package/lib/commands/index.js +2 -3
  65. package/lib/commands/init.js +4 -5
  66. package/lib/commands/internaltesting-functions-discover.js +1 -1
  67. package/lib/commands/login.js +4 -5
  68. package/lib/commands/logout.js +3 -3
  69. package/lib/commands/projects-create.js +1 -1
  70. package/lib/commands/remoteconfig-experiments-list.js +2 -3
  71. package/lib/commands/remoteconfig-get.js +1 -1
  72. package/lib/commands/remoteconfig-rollback.js +1 -2
  73. package/lib/commands/remoteconfig-rollouts-list.js +2 -3
  74. package/lib/commands/remoteconfig-versions-list.js +3 -4
  75. package/lib/commands/use.js +3 -3
  76. package/lib/config.js +4 -5
  77. package/lib/crashlytics/buildToolsJarHelper.js +3 -5
  78. package/lib/crashlytics/events.js +4 -7
  79. package/lib/crashlytics/filters.js +10 -12
  80. package/lib/crashlytics/issues.js +2 -3
  81. package/lib/crashlytics/notes.js +3 -4
  82. package/lib/crashlytics/reports.js +21 -15
  83. package/lib/crashlytics/types.js +7 -7
  84. package/lib/crashlytics/utils.js +4 -4
  85. package/lib/database/api.js +2 -3
  86. package/lib/database/import.js +4 -4
  87. package/lib/database/metadata.js +5 -6
  88. package/lib/database/rulesConfig.js +2 -3
  89. package/lib/dataconnect/build.js +10 -13
  90. package/lib/dataconnect/checkIam.js +1 -2
  91. package/lib/dataconnect/client.js +15 -18
  92. package/lib/dataconnect/dataplaneClient.js +6 -6
  93. package/lib/dataconnect/ensureApis.js +2 -3
  94. package/lib/dataconnect/errors.js +8 -11
  95. package/lib/dataconnect/filters.js +2 -3
  96. package/lib/dataconnect/freeTrial.js +3 -4
  97. package/lib/dataconnect/graphqlError.js +5 -8
  98. package/lib/dataconnect/load.js +10 -11
  99. package/lib/dataconnect/names.js +14 -18
  100. package/lib/dataconnect/prompts.js +1 -2
  101. package/lib/dataconnect/provisionCloudSql.js +13 -17
  102. package/lib/dataconnect/schemaMigration.js +60 -27
  103. package/lib/dataconnect/types.js +10 -12
  104. package/lib/dataconnect/webhook.js +3 -3
  105. package/lib/defaultCredentials.js +3 -4
  106. package/lib/deploy/apphosting/deploy.js +2 -3
  107. package/lib/deploy/apphosting/prepare.js +3 -5
  108. package/lib/deploy/apphosting/release.js +1 -1
  109. package/lib/deploy/apphosting/util.js +1 -2
  110. package/lib/deploy/database/deploy.js +1 -2
  111. package/lib/deploy/database/prepare.js +1 -2
  112. package/lib/deploy/database/release.js +1 -2
  113. package/lib/deploy/dataconnect/context.js +15 -4
  114. package/lib/deploy/dataconnect/deploy.js +5 -6
  115. package/lib/deploy/dataconnect/prepare.js +7 -9
  116. package/lib/deploy/dataconnect/release.js +7 -10
  117. package/lib/deploy/extensions/deploy.js +7 -9
  118. package/lib/deploy/extensions/deploymentSummary.js +6 -7
  119. package/lib/deploy/extensions/planner.js +15 -18
  120. package/lib/deploy/extensions/prepare.js +9 -11
  121. package/lib/deploy/extensions/release.js +10 -12
  122. package/lib/deploy/extensions/secrets.js +8 -11
  123. package/lib/deploy/extensions/tasks.js +6 -8
  124. package/lib/deploy/extensions/v2FunctionHelper.js +2 -3
  125. package/lib/deploy/extensions/validate.js +1 -2
  126. package/lib/deploy/firestore/deploy.js +3 -5
  127. package/lib/deploy/firestore/prepare.js +2 -3
  128. package/lib/deploy/firestore/release.js +3 -4
  129. package/lib/deploy/functions/backend.js +52 -42
  130. package/lib/deploy/functions/build.js +41 -15
  131. package/lib/deploy/functions/cache/applyHash.js +3 -5
  132. package/lib/deploy/functions/cache/hash.js +4 -5
  133. package/lib/deploy/functions/cel.js +3 -3
  134. package/lib/deploy/functions/checkIam.js +8 -8
  135. package/lib/deploy/functions/containerCleaner.js +10 -6
  136. package/lib/deploy/functions/deploy.js +6 -8
  137. package/lib/deploy/functions/ensure.js +6 -9
  138. package/lib/deploy/functions/functionsDeployHelper.js +10 -11
  139. package/lib/deploy/functions/params.js +10 -10
  140. package/lib/deploy/functions/prepare.js +41 -36
  141. package/lib/deploy/functions/prepareFunctionsUpload.js +24 -10
  142. package/lib/deploy/functions/pricing.js +3 -3
  143. package/lib/deploy/functions/prompts.js +7 -10
  144. package/lib/deploy/functions/release/executor.js +5 -6
  145. package/lib/deploy/functions/release/fabricator.js +76 -29
  146. package/lib/deploy/functions/release/index.js +23 -14
  147. package/lib/deploy/functions/release/planner.js +15 -14
  148. package/lib/deploy/functions/release/reporter.js +20 -20
  149. package/lib/deploy/functions/release/sourceTokenScraper.js +4 -5
  150. package/lib/deploy/functions/remoteSource.js +3 -4
  151. package/lib/deploy/functions/runtimes/discovery/index.js +9 -12
  152. package/lib/deploy/functions/runtimes/discovery/parsing.js +2 -3
  153. package/lib/deploy/functions/runtimes/discovery/v1alpha1.js +29 -10
  154. package/lib/deploy/functions/runtimes/index.js +1 -2
  155. package/lib/deploy/functions/runtimes/node/index.js +18 -9
  156. package/lib/deploy/functions/runtimes/node/parseRuntimeAndValidateSDK.js +2 -2
  157. package/lib/deploy/functions/runtimes/node/validate.js +1 -2
  158. package/lib/deploy/functions/runtimes/node/versioning.js +6 -7
  159. package/lib/deploy/functions/runtimes/python/index.js +12 -12
  160. package/lib/deploy/functions/runtimes/supported/index.js +5 -6
  161. package/lib/deploy/functions/services/auth.js +49 -36
  162. package/lib/deploy/functions/services/database.js +1 -2
  163. package/lib/deploy/functions/services/dataconnect.js +16 -2
  164. package/lib/deploy/functions/services/firebaseAlerts.js +1 -2
  165. package/lib/deploy/functions/services/firestore.js +3 -5
  166. package/lib/deploy/functions/services/index.js +2 -2
  167. package/lib/deploy/functions/services/remoteConfig.js +1 -2
  168. package/lib/deploy/functions/services/storage.js +3 -5
  169. package/lib/deploy/functions/services/testLab.js +1 -2
  170. package/lib/deploy/functions/triggerRegionHelper.js +1 -2
  171. package/lib/deploy/functions/validate.js +12 -11
  172. package/lib/deploy/hosting/convertConfig.js +38 -22
  173. package/lib/deploy/hosting/deploy.js +4 -7
  174. package/lib/deploy/hosting/hashcache.js +2 -3
  175. package/lib/deploy/hosting/prepare.js +14 -14
  176. package/lib/deploy/hosting/release.js +1 -2
  177. package/lib/deploy/index.js +7 -8
  178. package/lib/deploy/lifecycleHooks.js +3 -5
  179. package/lib/deploy/remoteconfig/deploy.js +1 -1
  180. package/lib/deploy/remoteconfig/functions.js +5 -6
  181. package/lib/deploy/remoteconfig/prepare.js +2 -3
  182. package/lib/deploy/remoteconfig/release.js +2 -2
  183. package/lib/deploy/storage/deploy.js +1 -1
  184. package/lib/deploy/storage/prepare.js +1 -1
  185. package/lib/deploy/storage/release.js +1 -1
  186. package/lib/deploymentTool.js +5 -6
  187. package/lib/detectProjectRoot.js +1 -2
  188. package/lib/downloadUtils.js +2 -3
  189. package/lib/emulator/adminSdkConfig.js +2 -3
  190. package/lib/emulator/apphosting/config.js +1 -2
  191. package/lib/emulator/apphosting/developmentServer.js +3 -3
  192. package/lib/emulator/apphosting/serve.js +20 -14
  193. package/lib/emulator/auth/cloudFunctions.js +2 -3
  194. package/lib/emulator/auth/errors.js +2 -2
  195. package/lib/emulator/auth/handlers.js +3 -4
  196. package/lib/emulator/auth/index.js +6 -6
  197. package/lib/emulator/auth/operations.js +171 -129
  198. package/lib/emulator/auth/server.js +30 -22
  199. package/lib/emulator/auth/state.js +26 -36
  200. package/lib/emulator/auth/utils.js +12 -13
  201. package/lib/emulator/commandUtils.js +20 -20
  202. package/lib/emulator/controller.js +32 -29
  203. package/lib/emulator/databaseEmulator.js +1 -2
  204. package/lib/emulator/dataconnect/pgliteServer.js +48 -104
  205. package/lib/emulator/dataconnectEmulator.js +6 -9
  206. package/lib/emulator/download.js +2 -3
  207. package/lib/emulator/downloadableEmulatorInfo.json +31 -31
  208. package/lib/emulator/downloadableEmulators.js +49 -24
  209. package/lib/emulator/emulatorLogger.js +19 -4
  210. package/lib/emulator/env.js +6 -8
  211. package/lib/emulator/eventarcEmulator.js +2 -3
  212. package/lib/emulator/eventarcEmulatorUtils.js +3 -6
  213. package/lib/emulator/extensions/postinstall.js +1 -2
  214. package/lib/emulator/extensions/validation.js +4 -7
  215. package/lib/emulator/extensionsEmulator.js +6 -9
  216. package/lib/emulator/functionsEmulator.js +89 -46
  217. package/lib/emulator/functionsEmulatorRuntime.js +1 -1
  218. package/lib/emulator/functionsEmulatorShared.js +30 -30
  219. package/lib/emulator/functionsEmulatorShell.js +4 -6
  220. package/lib/emulator/functionsEmulatorUtils.js +8 -9
  221. package/lib/emulator/functionsRuntimeWorker.js +18 -9
  222. package/lib/emulator/hub.js +41 -34
  223. package/lib/emulator/hubClient.js +1 -1
  224. package/lib/emulator/initEmulators.js +2 -3
  225. package/lib/emulator/loggingEmulator.js +2 -2
  226. package/lib/emulator/portUtils.js +4 -5
  227. package/lib/emulator/registry.js +10 -4
  228. package/lib/emulator/shared/request.js +1 -2
  229. package/lib/emulator/storage/apis/firebase.js +16 -20
  230. package/lib/emulator/storage/apis/gcloud.js +6 -9
  231. package/lib/emulator/storage/apis/shared.js +1 -2
  232. package/lib/emulator/storage/crc.js +2 -3
  233. package/lib/emulator/storage/files.js +18 -41
  234. package/lib/emulator/storage/metadata.js +10 -4
  235. package/lib/emulator/storage/multipart.js +1 -2
  236. package/lib/emulator/storage/rfc.js +1 -2
  237. package/lib/emulator/storage/rules/config.js +1 -2
  238. package/lib/emulator/storage/rules/manager.js +3 -5
  239. package/lib/emulator/storage/rules/runtime.js +15 -13
  240. package/lib/emulator/storage/rules/types.js +2 -2
  241. package/lib/emulator/storage/rules/utils.js +5 -6
  242. package/lib/emulator/storage/server.js +1 -2
  243. package/lib/emulator/storage/upload.js +3 -4
  244. package/lib/emulator/taskQueue.js +11 -4
  245. package/lib/emulator/tasksEmulator.js +11 -12
  246. package/lib/emulator/types.js +6 -6
  247. package/lib/emulator/ui.js +6 -1
  248. package/lib/ensureApiEnabled.js +7 -9
  249. package/lib/env.js +2 -3
  250. package/lib/error.js +11 -13
  251. package/lib/errorOut.js +1 -2
  252. package/lib/experiments.js +15 -18
  253. package/lib/extensions/askUserForEventsConfig.js +12 -13
  254. package/lib/extensions/askUserForParam.js +11 -12
  255. package/lib/extensions/change-log.js +4 -5
  256. package/lib/extensions/checkProjectBilling.js +1 -2
  257. package/lib/extensions/diagnose.js +1 -2
  258. package/lib/extensions/displayExtensionInfo.js +25 -32
  259. package/lib/extensions/emulator/optionsHelper.js +6 -8
  260. package/lib/extensions/emulator/specHelper.js +15 -16
  261. package/lib/extensions/emulator/triggerHelper.js +3 -5
  262. package/lib/extensions/etags.js +2 -3
  263. package/lib/extensions/export.js +7 -9
  264. package/lib/extensions/extensionsApi.js +23 -29
  265. package/lib/extensions/extensionsHelper.js +52 -80
  266. package/lib/extensions/listExtensions.js +3 -5
  267. package/lib/extensions/localHelper.js +5 -5
  268. package/lib/extensions/manifest.js +15 -16
  269. package/lib/extensions/metricsUtils.js +3 -4
  270. package/lib/extensions/paramHelper.js +21 -18
  271. package/lib/extensions/provisioningHelper.js +17 -21
  272. package/lib/extensions/publishHelpers.js +1 -2
  273. package/lib/extensions/publisherApi.js +11 -13
  274. package/lib/extensions/refs.js +6 -7
  275. package/lib/extensions/runtimes/common.js +18 -19
  276. package/lib/extensions/runtimes/node.js +5 -6
  277. package/lib/extensions/secretsUtils.js +8 -8
  278. package/lib/extensions/tos.js +7 -8
  279. package/lib/extensions/types.js +3 -3
  280. package/lib/extensions/updateHelper.js +6 -7
  281. package/lib/extensions/utils.js +6 -8
  282. package/lib/extensions/versionHelper.js +1 -2
  283. package/lib/extensions/warnings.js +6 -8
  284. package/lib/fetchMOTD.js +1 -2
  285. package/lib/fetchWebSetup.js +3 -4
  286. package/lib/filterTargets.js +1 -2
  287. package/lib/firebaseConfigValidate.js +2 -3
  288. package/lib/firestore/api-sort.js +8 -9
  289. package/lib/firestore/api-types.js +15 -15
  290. package/lib/firestore/api.js +15 -13
  291. package/lib/firestore/backupUtils.js +3 -3
  292. package/lib/firestore/checkDatabaseType.js +1 -2
  293. package/lib/firestore/delete.js +1 -2
  294. package/lib/firestore/encodeFirestoreValue.js +1 -2
  295. package/lib/firestore/fsConfig.js +1 -2
  296. package/lib/firestore/options.js +1 -1
  297. package/lib/firestore/util.js +5 -6
  298. package/lib/firestore/validator.js +4 -5
  299. package/lib/frameworks/angular/index.js +14 -15
  300. package/lib/frameworks/angular/utils.js +21 -23
  301. package/lib/frameworks/astro/index.js +7 -7
  302. package/lib/frameworks/astro/utils.js +4 -6
  303. package/lib/frameworks/compose/discover/filesystem.js +3 -3
  304. package/lib/frameworks/compose/discover/frameworkMatcher.js +4 -5
  305. package/lib/frameworks/compose/discover/index.js +1 -2
  306. package/lib/frameworks/compose/discover/runtime/node.js +8 -11
  307. package/lib/frameworks/compose/driver/docker.js +3 -5
  308. package/lib/frameworks/compose/driver/hooks.js +2 -2
  309. package/lib/frameworks/compose/driver/index.js +2 -2
  310. package/lib/frameworks/compose/driver/local.js +2 -3
  311. package/lib/frameworks/compose/index.js +5 -7
  312. package/lib/frameworks/constants.js +3 -3
  313. package/lib/frameworks/express/index.js +7 -8
  314. package/lib/frameworks/flutter/index.js +6 -7
  315. package/lib/frameworks/flutter/utils.js +4 -5
  316. package/lib/frameworks/index.js +21 -22
  317. package/lib/frameworks/next/constants.js +5 -2
  318. package/lib/frameworks/next/index.js +34 -32
  319. package/lib/frameworks/next/utils.js +40 -39
  320. package/lib/frameworks/nuxt/index.js +9 -9
  321. package/lib/frameworks/nuxt/utils.js +4 -6
  322. package/lib/frameworks/nuxt2/index.js +7 -7
  323. package/lib/frameworks/sveltekit/index.js +6 -8
  324. package/lib/frameworks/utils.js +26 -24
  325. package/lib/frameworks/vite/index.js +8 -9
  326. package/lib/fsAsync.js +1 -2
  327. package/lib/fsutils.js +5 -6
  328. package/lib/functional.js +11 -11
  329. package/lib/functions/artifacts.js +25 -22
  330. package/lib/functions/ensureTargeted.js +1 -2
  331. package/lib/functions/env.js +13 -14
  332. package/lib/functions/functionslog.js +2 -3
  333. package/lib/functions/projectConfig.js +29 -33
  334. package/lib/functions/python.js +10 -4
  335. package/lib/functions/secrets.js +32 -18
  336. package/lib/functionsConfig.js +14 -14
  337. package/lib/functionsConfigClone.js +1 -2
  338. package/lib/functionsShellCommandAction.js +2 -3
  339. package/lib/gcp/apphosting.js +43 -28
  340. package/lib/gcp/apptesting.js +2 -2
  341. package/lib/gcp/artifactregistry.js +5 -5
  342. package/lib/gcp/auth.js +11 -13
  343. package/lib/gcp/cloudbilling.js +4 -5
  344. package/lib/gcp/cloudbuild.js +10 -11
  345. package/lib/gcp/cloudfunctions.js +61 -45
  346. package/lib/gcp/cloudfunctionsv2.js +81 -43
  347. package/lib/gcp/cloudlogging.js +2 -4
  348. package/lib/gcp/cloudmonitoring.js +7 -7
  349. package/lib/gcp/cloudscheduler.js +12 -14
  350. package/lib/gcp/cloudsql/cloudsqladmin.js +19 -21
  351. package/lib/gcp/cloudsql/connect.js +14 -9
  352. package/lib/gcp/cloudsql/fbToolsAuthClient.js +5 -3
  353. package/lib/gcp/cloudsql/interactive.js +2 -3
  354. package/lib/gcp/cloudsql/permissions.js +8 -8
  355. package/lib/gcp/cloudsql/permissionsSetup.js +9 -9
  356. package/lib/gcp/cloudtasks.js +19 -18
  357. package/lib/gcp/computeEngine.js +1 -2
  358. package/lib/gcp/devConnect.js +32 -29
  359. package/lib/gcp/docker.js +2 -4
  360. package/lib/gcp/eventarc.js +5 -5
  361. package/lib/gcp/firedata.js +4 -4
  362. package/lib/gcp/firestore.js +16 -16
  363. package/lib/gcp/iam.js +11 -12
  364. package/lib/gcp/identityPlatform.js +4 -5
  365. package/lib/gcp/k8s.js +1 -2
  366. package/lib/gcp/location.js +2 -2
  367. package/lib/gcp/proto.js +10 -11
  368. package/lib/gcp/pubsub.js +4 -5
  369. package/lib/gcp/resourceManager.js +5 -5
  370. package/lib/gcp/rules.js +13 -14
  371. package/lib/gcp/run.js +24 -31
  372. package/lib/gcp/runv2.js +39 -27
  373. package/lib/gcp/secretManager.js +60 -39
  374. package/lib/gcp/serviceusage.js +8 -4
  375. package/lib/gcp/storage.js +22 -20
  376. package/lib/gemini/fdcExperience.js +5 -5
  377. package/lib/getDefaultDatabaseInstance.js +2 -4
  378. package/lib/getDefaultHostingSite.js +3 -4
  379. package/lib/getProjectNumber.js +1 -2
  380. package/lib/hosting/api.js +32 -36
  381. package/lib/hosting/cloudRunProxy.js +2 -3
  382. package/lib/hosting/config.js +17 -17
  383. package/lib/hosting/expireUtils.js +3 -3
  384. package/lib/hosting/functionsProxy.js +1 -2
  385. package/lib/hosting/implicitInit.js +1 -2
  386. package/lib/hosting/initMiddleware.js +1 -2
  387. package/lib/hosting/interactive.js +1 -2
  388. package/lib/hosting/proxy.js +3 -5
  389. package/lib/hosting/runTags.js +8 -11
  390. package/lib/init/features/account.js +1 -2
  391. package/lib/init/features/ailogic/index.js +3 -5
  392. package/lib/init/features/ailogic/utils.js +6 -8
  393. package/lib/init/features/aitools/claude.js +1 -2
  394. package/lib/init/features/aitools/cursor.js +1 -2
  395. package/lib/init/features/aitools/gemini.js +1 -1
  396. package/lib/init/features/aitools/promptUpdater.js +10 -12
  397. package/lib/init/features/aitools.js +1 -2
  398. package/lib/init/features/apphosting.js +3 -4
  399. package/lib/init/features/apptesting/index.js +9 -9
  400. package/lib/init/features/database.js +4 -5
  401. package/lib/init/features/dataconnect/create_app.js +3 -4
  402. package/lib/init/features/dataconnect/index.js +25 -22
  403. package/lib/init/features/dataconnect/resolver.js +6 -10
  404. package/lib/init/features/dataconnect/sdk.js +31 -24
  405. package/lib/init/features/emulators.js +7 -6
  406. package/lib/init/features/extensions/index.js +3 -5
  407. package/lib/init/features/firestore/index.js +7 -9
  408. package/lib/init/features/firestore/indexes.js +2 -2
  409. package/lib/init/features/firestore/rules.js +3 -3
  410. package/lib/init/features/functions/index.js +3 -5
  411. package/lib/init/features/functions/javascript.js +1 -2
  412. package/lib/init/features/functions/npm-dependencies.js +1 -2
  413. package/lib/init/features/functions/python.js +1 -2
  414. package/lib/init/features/functions/typescript.js +1 -2
  415. package/lib/init/features/genkit/index.js +44 -18
  416. package/lib/init/features/hosting/github.js +6 -8
  417. package/lib/init/features/hosting/index.js +10 -13
  418. package/lib/init/features/project.js +4 -7
  419. package/lib/init/features/remoteconfig.js +1 -2
  420. package/lib/init/features/storage.js +3 -5
  421. package/lib/init/index.js +4 -7
  422. package/lib/init/spawn.js +7 -9
  423. package/lib/listFiles.js +1 -2
  424. package/lib/loadCJSON.js +1 -2
  425. package/lib/localFunction.js +14 -15
  426. package/lib/logError.js +1 -2
  427. package/lib/logger.js +7 -7
  428. package/lib/management/apps.js +22 -22
  429. package/lib/management/database.js +11 -12
  430. package/lib/management/projects.js +57 -56
  431. package/lib/management/provisioning/errorHandler.js +3 -5
  432. package/lib/management/provisioning/provision.js +15 -9
  433. package/lib/management/studio.js +2 -3
  434. package/lib/mcp/errors.js +4 -4
  435. package/lib/mcp/index.js +47 -45
  436. package/lib/mcp/prompt.js +1 -2
  437. package/lib/mcp/prompts/core/consult.js +2 -3
  438. package/lib/mcp/prompts/crashlytics/connect.js +15 -122
  439. package/lib/mcp/prompts/dataconnect/schema.js +3 -3
  440. package/lib/mcp/prompts/index.js +8 -10
  441. package/lib/mcp/resource.js +3 -15
  442. package/lib/mcp/resources/guides/app_id.js +39 -0
  443. package/lib/mcp/resources/guides/crashlytics_connect.js +51 -0
  444. package/lib/mcp/resources/guides/crashlytics_investigations.js +51 -0
  445. package/lib/mcp/resources/guides/crashlytics_issues.js +42 -0
  446. package/lib/mcp/resources/guides/crashlytics_reports.js +112 -0
  447. package/lib/mcp/resources/index.js +11 -3
  448. package/lib/mcp/tool.js +3 -15
  449. package/lib/mcp/tools/apphosting/fetch_logs.js +3 -4
  450. package/lib/mcp/tools/apphosting/list_backends.js +1 -1
  451. package/lib/mcp/tools/auth/get_users.js +5 -16
  452. package/lib/mcp/tools/core/create_android_sha.js +4 -1
  453. package/lib/mcp/tools/core/get_environment.js +7 -4
  454. package/lib/mcp/tools/core/get_sdk_config.js +4 -5
  455. package/lib/mcp/tools/core/get_security_rules.js +1 -2
  456. package/lib/mcp/tools/core/init.js +2 -2
  457. package/lib/mcp/tools/core/logout.js +1 -1
  458. package/lib/mcp/tools/core/read_resources.js +2 -2
  459. package/lib/mcp/tools/core/validate_security_rules.js +1 -2
  460. package/lib/mcp/tools/crashlytics/events.js +43 -19
  461. package/lib/mcp/tools/crashlytics/index.js +1 -6
  462. package/lib/mcp/tools/crashlytics/issues.js +33 -12
  463. package/lib/mcp/tools/crashlytics/reports.js +66 -117
  464. package/lib/mcp/tools/dataconnect/list_services.js +2 -3
  465. package/lib/mcp/tools/firestore/converter.js +3 -5
  466. package/lib/mcp/tools/firestore/delete_document.js +1 -1
  467. package/lib/mcp/tools/functions/get_logs.js +14 -12
  468. package/lib/mcp/tools/functions/list_functions.js +1 -1
  469. package/lib/mcp/tools/index.js +67 -50
  470. package/lib/mcp/util/apptesting/availability.js +1 -2
  471. package/lib/mcp/util/availability.js +1 -2
  472. package/lib/mcp/util/crashlytics/availability.js +1 -2
  473. package/lib/mcp/util/dataconnect/compile.js +7 -6
  474. package/lib/mcp/util/dataconnect/converter.js +7 -10
  475. package/lib/mcp/util/dataconnect/emulator.js +1 -2
  476. package/lib/mcp/util.js +9 -11
  477. package/lib/messaging/sendMessage.js +1 -2
  478. package/lib/metaprogramming.js +1 -2
  479. package/lib/operation-poller.js +2 -2
  480. package/lib/profileReport.js +6 -6
  481. package/lib/profiler.js +1 -2
  482. package/lib/projectPath.js +1 -2
  483. package/lib/projectUtils.js +5 -6
  484. package/lib/prompt.js +22 -13
  485. package/lib/rc.js +5 -7
  486. package/lib/remoteconfig/deleteExperiment.js +1 -2
  487. package/lib/remoteconfig/deleteRollout.js +1 -2
  488. package/lib/remoteconfig/get.js +2 -3
  489. package/lib/remoteconfig/getExperiment.js +2 -2
  490. package/lib/remoteconfig/getRollout.js +2 -2
  491. package/lib/remoteconfig/interfaces.js +1 -1
  492. package/lib/remoteconfig/listExperiments.js +2 -2
  493. package/lib/remoteconfig/listRollouts.js +2 -2
  494. package/lib/remoteconfig/publish.js +1 -2
  495. package/lib/remoteconfig/rollback.js +1 -2
  496. package/lib/remoteconfig/versionslist.js +1 -2
  497. package/lib/requireAuth.js +4 -6
  498. package/lib/requireConfig.js +5 -8
  499. package/lib/requireDatabaseInstance.js +2 -2
  500. package/lib/requireHostingSite.js +1 -2
  501. package/lib/requireInteractive.js +1 -1
  502. package/lib/requirePermissions.js +1 -2
  503. package/lib/requireTosAcceptance.js +1 -2
  504. package/lib/responseToError.js +1 -2
  505. package/lib/rtdb.js +2 -3
  506. package/lib/rulesDeploy.js +3 -4
  507. package/lib/serve/functions.js +9 -1
  508. package/lib/serve/hosting.js +4 -5
  509. package/lib/serve/index.js +1 -2
  510. package/lib/shortenUrl.js +1 -2
  511. package/lib/templates.js +3 -4
  512. package/lib/throttler/throttler.js +3 -3
  513. package/lib/timeout.js +2 -3
  514. package/lib/track.js +23 -14
  515. package/lib/tsconfig.publish.tsbuildinfo +1 -0
  516. package/lib/unzip.js +2 -3
  517. package/lib/utils.js +62 -63
  518. package/lib/vsCodeUtils.js +2 -3
  519. package/package.json +6 -6
  520. package/templates/extensions/typescript/index.ts +1 -1
  521. package/templates/extensions/typescript/package.lint.json +1 -1
  522. package/templates/extensions/typescript/package.nolint.json +1 -1
  523. package/templates/extensions/typescript/tsconfig.json +2 -1
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deleteRollout = void 0;
3
+ exports.deleteRollout = deleteRollout;
4
4
  const api_1 = require("../api");
5
5
  const apiv2_1 = require("../apiv2");
6
6
  const error_1 = require("../error");
@@ -30,4 +30,3 @@ async function deleteRollout(projectId, namespace, rolloutId) {
30
30
  throw new error_1.FirebaseError(`Failed to delete Remote Config rollout with ID ${rolloutId} for project ${projectId}. Error: ${errorMessage}`, { original: originalError });
31
31
  }
32
32
  }
33
- exports.deleteRollout = deleteRollout;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTemplate = exports.parseTemplateForTable = void 0;
3
+ exports.parseTemplateForTable = parseTemplateForTable;
4
+ exports.getTemplate = getTemplate;
4
5
  const api_1 = require("../api");
5
6
  const apiv2_1 = require("../apiv2");
6
7
  const logger_1 = require("../logger");
@@ -26,7 +27,6 @@ function parseTemplateForTable(templateItems) {
26
27
  }
27
28
  return outputStr;
28
29
  }
29
- exports.parseTemplateForTable = parseTemplateForTable;
30
30
  async function getTemplate(projectId, versionNumber) {
31
31
  try {
32
32
  const params = new URLSearchParams();
@@ -46,4 +46,3 @@ async function getTemplate(projectId, versionNumber) {
46
46
  throw new error_1.FirebaseError(`Failed to get Firebase Remote Config template for project ${projectId}. `, { original: err });
47
47
  }
48
48
  }
49
- exports.getTemplate = getTemplate;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getExperiment = exports.parseExperiment = void 0;
3
+ exports.parseExperiment = void 0;
4
+ exports.getExperiment = getExperiment;
4
5
  const Table = require("cli-table3");
5
6
  const util = require("util");
6
7
  const api_1 = require("../api");
@@ -49,4 +50,3 @@ async function getExperiment(projectId, namespace, experimentId) {
49
50
  throw new error_1.FirebaseError(`Failed to get Remote Config experiment with ID ${experimentId} for project ${projectId}. Error: ${error.message}`, { original: error });
50
51
  }
51
52
  }
52
- exports.getExperiment = getExperiment;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getRollout = exports.parseRolloutIntoTable = void 0;
3
+ exports.parseRolloutIntoTable = void 0;
4
+ exports.getRollout = getRollout;
4
5
  const api_1 = require("../api");
5
6
  const apiv2_1 = require("../apiv2");
6
7
  const logger_1 = require("../logger");
@@ -40,4 +41,3 @@ async function getRollout(projectId, namespace, rolloutId) {
40
41
  throw new error_1.FirebaseError(`Failed to get Remote Config Rollout with ID ${rolloutId} for project ${projectId}. Error: ${error.message}`, { original: error });
41
42
  }
42
43
  }
43
- exports.getRollout = getRollout;
@@ -16,4 +16,4 @@ var TagColor;
16
16
  TagColor["PINK"] = "Pink";
17
17
  TagColor["PURPLE"] = "Purple";
18
18
  TagColor["TEAL"] = "Teal";
19
- })(TagColor = exports.TagColor || (exports.TagColor = {}));
19
+ })(TagColor || (exports.TagColor = TagColor = {}));
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.listExperiments = exports.parseExperimentList = void 0;
3
+ exports.parseExperimentList = void 0;
4
+ exports.listExperiments = listExperiments;
4
5
  const Table = require("cli-table3");
5
6
  const api_1 = require("../api");
6
7
  const apiv2_1 = require("../apiv2");
@@ -69,4 +70,3 @@ async function listExperiments(projectId, namespace, listExperimentOptions) {
69
70
  throw new error_1.FirebaseError(`Failed to get Remote Config experiments for project ${projectId}. Error: ${error.message}`, { original: error });
70
71
  }
71
72
  }
72
- exports.listExperiments = listExperiments;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.listRollouts = exports.parseRolloutList = void 0;
3
+ exports.parseRolloutList = void 0;
4
+ exports.listRollouts = listRollouts;
4
5
  const api_1 = require("../api");
5
6
  const apiv2_1 = require("../apiv2");
6
7
  const logger_1 = require("../logger");
@@ -69,4 +70,3 @@ async function listRollouts(projectId, namespace, listRolloutOptions) {
69
70
  throw new error_1.FirebaseError(`Failed to get Remote Config rollouts for project ${projectId}. Error: ${error.message}`, { original: error });
70
71
  }
71
72
  }
72
- exports.listRollouts = listRollouts;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.publishTemplate = void 0;
3
+ exports.publishTemplate = publishTemplate;
4
4
  const api_1 = require("../api");
5
5
  const apiv2_1 = require("../apiv2");
6
6
  const logger_1 = require("../logger");
@@ -36,4 +36,3 @@ async function publishTemplate(projectId, template, options) {
36
36
  throw new error_1.FirebaseError(`Failed to publish Firebase Remote Config template for project ${projectId}. `, { original: err });
37
37
  }
38
38
  }
39
- exports.publishTemplate = publishTemplate;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rollbackTemplate = void 0;
3
+ exports.rollbackTemplate = rollbackTemplate;
4
4
  const api_1 = require("../api");
5
5
  const apiv2_1 = require("../apiv2");
6
6
  const apiClient = new apiv2_1.Client({
@@ -19,4 +19,3 @@ async function rollbackTemplate(projectId, versionNumber) {
19
19
  });
20
20
  return res.body;
21
21
  }
22
- exports.rollbackTemplate = rollbackTemplate;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getVersions = void 0;
3
+ exports.getVersions = getVersions;
4
4
  const api_1 = require("../api");
5
5
  const apiv2_1 = require("../apiv2");
6
6
  const error_1 = require("../error");
@@ -30,4 +30,3 @@ async function getVersions(projectId, maxResults = 10) {
30
30
  throw new error_1.FirebaseError(`Failed to get Remote Config template versions for Firebase project ${projectId}. `, { original: err });
31
31
  }
32
32
  }
33
- exports.getVersions = getVersions;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.requireAuth = exports.refreshAuth = void 0;
3
+ exports.refreshAuth = refreshAuth;
4
+ exports.requireAuth = requireAuth;
4
5
  const google_auth_library_1 = require("google-auth-library");
5
6
  const clc = require("colorette");
6
7
  const api = require("./api");
@@ -23,7 +24,6 @@ function getAuthClient(config) {
23
24
  return authClient;
24
25
  }
25
26
  async function autoAuth(options, authScopes) {
26
- var _a;
27
27
  const client = getAuthClient({ scopes: authScopes, projectId: options.project });
28
28
  const token = await client.getAccessToken();
29
29
  token !== null ? apiv2.setAccessToken(token) : false;
@@ -42,7 +42,7 @@ async function autoAuth(options, authScopes) {
42
42
  user: { email: clientEmail },
43
43
  tokens: {
44
44
  access_token: token,
45
- expires_at: (_a = client.cachedCredential) === null || _a === void 0 ? void 0 : _a.credentials.expiry_date,
45
+ expires_at: client.cachedCredential?.credentials.expiry_date,
46
46
  },
47
47
  };
48
48
  (0, auth_1.setActiveAccount)(options, activeAccount);
@@ -58,7 +58,6 @@ async function refreshAuth() {
58
58
  await requireAuth(lastOptions);
59
59
  return lastOptions.tokens;
60
60
  }
61
- exports.refreshAuth = refreshAuth;
62
61
  async function requireAuth(options, skipAutoAuth = false) {
63
62
  lastOptions = options;
64
63
  const requiredScopes = [scopes.CLOUD_PLATFORM];
@@ -80,7 +79,7 @@ async function requireAuth(options, skipAutoAuth = false) {
80
79
  utils.logWarning("Authenticating with `FIREBASE_TOKEN` is deprecated and will be removed in a future major version of `firebase-tools`. " +
81
80
  "Instead, use a service account key with `GOOGLE_APPLICATION_CREDENTIALS`: https://cloud.google.com/docs/authentication/getting-started");
82
81
  }
83
- else if (user && (!(0, auth_1.isExpired)(tokens) || (tokens === null || tokens === void 0 ? void 0 : tokens.refresh_token))) {
82
+ else if (user && (!(0, auth_1.isExpired)(tokens) || tokens?.refresh_token)) {
84
83
  logger_1.logger.debug(`> authorizing via signed-in user (${user.email})`);
85
84
  }
86
85
  else if (skipAutoAuth) {
@@ -105,4 +104,3 @@ async function requireAuth(options, skipAutoAuth = false) {
105
104
  (0, auth_1.setActiveAccount)(options, { user, tokens });
106
105
  return user.email;
107
106
  }
108
- exports.requireAuth = requireAuth;
@@ -1,13 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.requireConfig = void 0;
3
+ exports.requireConfig = requireConfig;
4
4
  const error_1 = require("./error");
5
5
  async function requireConfig(options) {
6
- return new Promise((resolve, reject) => {
7
- var _a;
8
- return options.config
9
- ? resolve()
10
- : reject((_a = options.configError) !== null && _a !== void 0 ? _a : new error_1.FirebaseError("Not in a Firebase project directory (could not locate firebase.json)"));
11
- });
6
+ return new Promise((resolve, reject) => options.config
7
+ ? resolve()
8
+ : reject(options.configError ??
9
+ new error_1.FirebaseError("Not in a Firebase project directory (could not locate firebase.json)")));
12
10
  }
13
- exports.requireConfig = requireConfig;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.requireDatabaseInstance = exports.MISSING_DEFAULT_INSTANCE_ERROR_MESSAGE = void 0;
3
+ exports.MISSING_DEFAULT_INSTANCE_ERROR_MESSAGE = void 0;
4
+ exports.requireDatabaseInstance = requireDatabaseInstance;
4
5
  const clc = require("colorette");
5
6
  const error_1 = require("./error");
6
7
  const getDefaultDatabaseInstance_1 = require("./getDefaultDatabaseInstance");
@@ -23,4 +24,3 @@ async function requireDatabaseInstance(options) {
23
24
  }
24
25
  options.instance = instance;
25
26
  }
26
- exports.requireDatabaseInstance = requireDatabaseInstance;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.requireHostingSite = void 0;
3
+ exports.requireHostingSite = requireHostingSite;
4
4
  const getDefaultHostingSite_1 = require("./getDefaultHostingSite");
5
5
  async function requireHostingSite(options) {
6
6
  if (options.site) {
@@ -9,4 +9,3 @@ async function requireHostingSite(options) {
9
9
  const site = await (0, getDefaultHostingSite_1.getDefaultHostingSite)(options);
10
10
  options.site = site;
11
11
  }
12
- exports.requireHostingSite = requireHostingSite;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = requireInteractive;
3
4
  const error_1 = require("./error");
4
5
  function requireInteractive(options) {
5
6
  if (options.nonInteractive) {
@@ -9,4 +10,3 @@ function requireInteractive(options) {
9
10
  }
10
11
  return Promise.resolve();
11
12
  }
12
- exports.default = requireInteractive;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.requirePermissions = void 0;
3
+ exports.requirePermissions = requirePermissions;
4
4
  const colorette_1 = require("colorette");
5
5
  const projectUtils_1 = require("./projectUtils");
6
6
  const requireAuth_1 = require("./requireAuth");
@@ -27,4 +27,3 @@ async function requirePermissions(options, permissions = []) {
27
27
  return;
28
28
  }
29
29
  }
30
- exports.requirePermissions = requirePermissions;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.requireTosAcceptance = void 0;
3
+ exports.requireTosAcceptance = requireTosAcceptance;
4
4
  const error_1 = require("./error");
5
5
  const firedata_1 = require("./gcp/firedata");
6
6
  const api_1 = require("./api");
@@ -12,7 +12,6 @@ const consoleLandingPage = new Map([
12
12
  function requireTosAcceptance(tosId) {
13
13
  return () => requireTos(tosId);
14
14
  }
15
- exports.requireTosAcceptance = requireTosAcceptance;
16
15
  async function requireTos(tosId) {
17
16
  if (!(0, auth_1.loggedIn)()) {
18
17
  return;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.responseToError = void 0;
3
+ exports.responseToError = responseToError;
4
4
  const _ = require("lodash");
5
5
  const error_1 = require("./error");
6
6
  function responseToError(response, body, url) {
@@ -59,4 +59,3 @@ function responseToError(response, body, url) {
59
59
  status: statusCode,
60
60
  });
61
61
  }
62
- exports.responseToError = responseToError;
package/lib/rtdb.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateRulesWithClient = exports.updateRules = void 0;
3
+ exports.updateRules = updateRules;
4
+ exports.updateRulesWithClient = updateRulesWithClient;
4
5
  const apiv2_1 = require("./apiv2");
5
6
  const database_1 = require("./management/database");
6
7
  const error_1 = require("./error");
@@ -16,7 +17,6 @@ async function updateRules(projectId, instance, src, options = {}) {
16
17
  const client = new apiv2_1.Client({ urlPrefix: origin });
17
18
  return updateRulesWithClient(client, src, options);
18
19
  }
19
- exports.updateRules = updateRules;
20
20
  async function updateRulesWithClient(client, src, options = {}) {
21
21
  const queryParams = {};
22
22
  if (options.dryRun) {
@@ -36,4 +36,3 @@ async function updateRulesWithClient(client, src, options = {}) {
36
36
  throw new error_1.FirebaseError("Unexpected error while deploying database rules.", { exit: 2 });
37
37
  }
38
38
  }
39
- exports.updateRulesWithClient = updateRulesWithClient;
@@ -20,7 +20,7 @@ var RulesetServiceType;
20
20
  (function (RulesetServiceType) {
21
21
  RulesetServiceType["CLOUD_FIRESTORE"] = "cloud.firestore";
22
22
  RulesetServiceType["FIREBASE_STORAGE"] = "firebase.storage";
23
- })(RulesetServiceType = exports.RulesetServiceType || (exports.RulesetServiceType = {}));
23
+ })(RulesetServiceType || (exports.RulesetServiceType = RulesetServiceType = {}));
24
24
  const RulesetType = {
25
25
  [RulesetServiceType.CLOUD_FIRESTORE]: "firestore",
26
26
  [RulesetServiceType.FIREBASE_STORAGE]: "storage",
@@ -59,7 +59,7 @@ class RulesDeploy {
59
59
  return { latestName, latestContent };
60
60
  }
61
61
  async checkStorageRulesIamPermissions(rulesContent) {
62
- if ((rulesContent === null || rulesContent === void 0 ? void 0 : rulesContent.match(CROSS_SERVICE_FUNCTIONS)) === null) {
62
+ if (rulesContent?.match(CROSS_SERVICE_FUNCTIONS) === null) {
63
63
  return;
64
64
  }
65
65
  if (this.options.nonInteractive) {
@@ -87,7 +87,6 @@ class RulesDeploy {
87
87
  }
88
88
  }
89
89
  async createRulesets(service) {
90
- var _a;
91
90
  const createdRulesetNames = [];
92
91
  const { latestName: latestRulesetName, latestContent: latestRulesetContent } = await this.getCurrentRules(service);
93
92
  const newRulesetsByFilename = new Map();
@@ -98,7 +97,7 @@ class RulesDeploy {
98
97
  continue;
99
98
  }
100
99
  if (service === RulesetServiceType.FIREBASE_STORAGE) {
101
- await this.checkStorageRulesIamPermissions((_a = files[0]) === null || _a === void 0 ? void 0 : _a.content);
100
+ await this.checkStorageRulesIamPermissions(files[0]?.content);
102
101
  }
103
102
  utils.logLabeledBullet(RulesetType[this.type], `uploading rules ${(0, colorette_1.bold)(filename)}...`);
104
103
  newRulesetsByFilename.set(filename, gcp.rules.createRuleset(this.options.project, files));
@@ -33,7 +33,15 @@ class FunctionsServer {
33
33
  }
34
34
  this.backends = backends;
35
35
  const account = (0, auth_1.getProjectDefaultAccount)(options.config.projectDir);
36
- const args = Object.assign(Object.assign({ projectId, projectDir: options.config.projectDir, emulatableBackends: this.backends, projectAlias: options.projectAlias, account }, partialArgs), { debugPort: (0, commandUtils_1.parseInspectionPort)(options) });
36
+ const args = {
37
+ projectId,
38
+ projectDir: options.config.projectDir,
39
+ emulatableBackends: this.backends,
40
+ projectAlias: options.projectAlias,
41
+ account,
42
+ ...partialArgs,
43
+ debugPort: (0, commandUtils_1.parseInspectionPort)(options),
44
+ };
37
45
  if (options.host) {
38
46
  utils.assertIsStringOrUndefined(options.host);
39
47
  args.host = options.host;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.connect = exports.start = exports.stop = void 0;
3
+ exports.stop = stop;
4
+ exports.start = start;
5
+ exports.connect = connect;
4
6
  const morgan = require("morgan");
5
7
  const net_1 = require("net");
6
8
  const superstatic_1 = require("superstatic");
@@ -72,14 +74,13 @@ function startServer(options, config, port, init) {
72
74
  function stop() {
73
75
  return destroyServer ? destroyServer() : Promise.resolve();
74
76
  }
75
- exports.stop = stop;
76
77
  async function start(options) {
77
78
  const init = await (0, implicitInit_1.implicitInit)(options);
78
79
  if (!options.site) {
79
80
  try {
80
81
  await (0, requireHostingSite_1.requireHostingSite)(options);
81
82
  }
82
- catch (_a) {
83
+ catch {
83
84
  if (init.json) {
84
85
  options.site = JSON.parse(init.json).projectId;
85
86
  }
@@ -101,11 +102,9 @@ async function start(options) {
101
102
  assignedPorts.delete(5001);
102
103
  return { ports: Array.from(assignedPorts) };
103
104
  }
104
- exports.start = start;
105
105
  async function connect() {
106
106
  await Promise.resolve();
107
107
  }
108
- exports.connect = connect;
109
108
  function availablePort(host, port) {
110
109
  return (0, portUtils_1.checkListenable)({
111
110
  address: host,
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.serve = void 0;
3
+ exports.serve = serve;
4
4
  const logger_1 = require("../logger");
5
5
  const frameworks_1 = require("../frameworks");
6
6
  const experiments = require("../experiments");
@@ -50,4 +50,3 @@ async function serve(options) {
50
50
  });
51
51
  });
52
52
  }
53
- exports.serve = serve;
package/lib/shortenUrl.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.shortenUrl = void 0;
3
+ exports.shortenUrl = shortenUrl;
4
4
  const logger_1 = require("./logger");
5
5
  const apiv2_1 = require("./apiv2");
6
6
  const api_1 = require("./api");
@@ -26,4 +26,3 @@ async function shortenUrl(url, guessable = false) {
26
26
  return url;
27
27
  }
28
28
  }
29
- exports.shortenUrl = shortenUrl;
package/lib/templates.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readTemplate = exports.readTemplateSync = exports.absoluteTemplateFilePath = void 0;
3
+ exports.absoluteTemplateFilePath = absoluteTemplateFilePath;
4
+ exports.readTemplateSync = readTemplateSync;
5
+ exports.readTemplate = readTemplate;
4
6
  const fs_1 = require("fs");
5
7
  const promises_1 = require("fs/promises");
6
8
  const path_1 = require("path");
@@ -12,12 +14,9 @@ function absoluteTemplateFilePath(relPath) {
12
14
  }
13
15
  return (0, path_1.resolve)(__dirname, "../templates", relPath);
14
16
  }
15
- exports.absoluteTemplateFilePath = absoluteTemplateFilePath;
16
17
  function readTemplateSync(relPath) {
17
18
  return (0, fs_1.readFileSync)(absoluteTemplateFilePath(relPath), TEMPLATE_ENCODING);
18
19
  }
19
- exports.readTemplateSync = readTemplateSync;
20
20
  function readTemplate(relPath) {
21
21
  return (0, promises_1.readFile)(absoluteTemplateFilePath(relPath), TEMPLATE_ENCODING);
22
22
  }
23
- exports.readTemplate = readTemplate;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Throttler = exports.timeToWait = exports.backoff = void 0;
3
+ exports.Throttler = void 0;
4
+ exports.backoff = backoff;
5
+ exports.timeToWait = timeToWait;
4
6
  const logger_1 = require("../logger");
5
7
  const retries_exhausted_error_1 = require("./errors/retries-exhausted-error");
6
8
  const timeout_error_1 = require("./errors/timeout-error");
@@ -9,11 +11,9 @@ function backoff(retryNumber, delay, maxDelay) {
9
11
  setTimeout(resolve, timeToWait(retryNumber, delay, maxDelay));
10
12
  });
11
13
  }
12
- exports.backoff = backoff;
13
14
  function timeToWait(retryNumber, delay, maxDelay) {
14
15
  return Math.min(delay * Math.pow(2, retryNumber), maxDelay);
15
16
  }
16
- exports.timeToWait = timeToWait;
17
17
  function DEFAULT_HANDLER(task) {
18
18
  return task();
19
19
  }
package/lib/timeout.js CHANGED
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.timeoutError = exports.timeoutFallback = void 0;
3
+ exports.timeoutFallback = timeoutFallback;
4
+ exports.timeoutError = timeoutError;
4
5
  async function timeoutFallback(promise, value, timeoutMillis = 2000) {
5
6
  return Promise.race([
6
7
  promise,
7
8
  new Promise((resolve) => setTimeout(() => resolve(value), timeoutMillis)),
8
9
  ]);
9
10
  }
10
- exports.timeoutFallback = timeoutFallback;
11
11
  async function timeoutError(promise, error, timeoutMillis = 5000) {
12
12
  if (typeof error === "string")
13
13
  error = new Error(error);
@@ -18,4 +18,3 @@ async function timeoutError(promise, error, timeoutMillis = 5000) {
18
18
  }),
19
19
  ]);
20
20
  }
21
- exports.timeoutError = timeoutError;
package/lib/track.js CHANGED
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cliSession = exports.vscodeSession = exports.emulatorSession = exports.trackVSCode = exports.trackEmulator = exports.trackGA4 = exports.usageEnabled = exports.GA4_PROPERTIES = void 0;
3
+ exports.GA4_PROPERTIES = void 0;
4
+ exports.usageEnabled = usageEnabled;
5
+ exports.trackGA4 = trackGA4;
6
+ exports.trackEmulator = trackEmulator;
7
+ exports.trackVSCode = trackVSCode;
8
+ exports.emulatorSession = emulatorSession;
9
+ exports.vscodeSession = vscodeSession;
10
+ exports.cliSession = cliSession;
4
11
  const node_fetch_1 = require("node-fetch");
5
12
  const uuid_1 = require("uuid");
6
13
  const auth_1 = require("./auth");
@@ -43,7 +50,6 @@ exports.GA4_PROPERTIES = {
43
50
  function usageEnabled() {
44
51
  return ((!!process.env.IS_FIREBASE_CLI || !!process.env.IS_FIREBASE_MCP) && !!configstore_1.configstore.get("usage"));
45
52
  }
46
- exports.usageEnabled = usageEnabled;
47
53
  const GA4_USER_PROPS = {
48
54
  node_platform: {
49
55
  value: process.platform,
@@ -77,7 +83,6 @@ async function trackGA4(eventName, params, duration = 1) {
77
83
  duration,
78
84
  });
79
85
  }
80
- exports.trackGA4 = trackGA4;
81
86
  async function trackEmulator(eventName, params) {
82
87
  const session = emulatorSession();
83
88
  if (!session) {
@@ -94,7 +99,6 @@ async function trackEmulator(eventName, params) {
94
99
  duration,
95
100
  });
96
101
  }
97
- exports.trackEmulator = trackEmulator;
98
102
  async function trackVSCode(eventName, params) {
99
103
  const session = vscodeSession();
100
104
  if (!session) {
@@ -112,24 +116,32 @@ async function trackVSCode(eventName, params) {
112
116
  duration,
113
117
  });
114
118
  }
115
- exports.trackVSCode = trackVSCode;
116
119
  async function _ga4Track(args) {
117
120
  const { session, apiSecret, eventName, params, duration } = args;
118
- session.commandName = (params === null || params === void 0 ? void 0 : params.command_name) || session.commandName;
121
+ session.commandName = params?.command_name || session.commandName;
119
122
  const search = `?api_secret=${apiSecret}&measurement_id=${session.measurementId}`;
120
123
  const validate = session.validateOnly ? "debug/" : "";
121
124
  const url = `https://www.google-analytics.com/${validate}mp/collect${search}`;
122
125
  const body = {
123
126
  timestamp_micros: `${Date.now()}000`,
124
127
  client_id: session.clientId,
125
- user_properties: Object.assign(Object.assign({}, GA4_USER_PROPS), { java_major_version: session.javaMajorVersion
128
+ user_properties: {
129
+ ...GA4_USER_PROPS,
130
+ java_major_version: session.javaMajorVersion
126
131
  ? { value: session.javaMajorVersion }
127
- : undefined }),
132
+ : undefined,
133
+ },
128
134
  validationBehavior: session.validateOnly ? "ENFORCE_RECOMMENDATIONS" : undefined,
129
135
  events: [
130
136
  {
131
137
  name: eventName,
132
- params: Object.assign({ session_id: session.sessionId, engagement_time_msec: (duration !== null && duration !== void 0 ? duration : 0).toFixed(3).replace(".", "").replace(/^0+/, ""), debug_mode: session.debugMode ? true : undefined, command_name: session.commandName }, params),
138
+ params: {
139
+ session_id: session.sessionId,
140
+ engagement_time_msec: (duration ?? 0).toFixed(3).replace(".", "").replace(/^0+/, ""),
141
+ debug_mode: session.debugMode ? true : undefined,
142
+ command_name: session.commandName,
143
+ ...params,
144
+ },
133
145
  },
134
146
  ],
135
147
  };
@@ -162,15 +174,12 @@ async function _ga4Track(args) {
162
174
  function emulatorSession() {
163
175
  return session("emulator");
164
176
  }
165
- exports.emulatorSession = emulatorSession;
166
177
  function vscodeSession() {
167
178
  return session("vscode");
168
179
  }
169
- exports.vscodeSession = vscodeSession;
170
180
  function cliSession() {
171
181
  return session("cli");
172
182
  }
173
- exports.cliSession = cliSession;
174
183
  function session(propertyName) {
175
184
  const validateOnly = !!process.env.FIREBASE_CLI_MP_VALIDATE;
176
185
  if (!usageEnabled() && propertyName !== "vscode") {
@@ -199,13 +208,13 @@ function session(propertyName) {
199
208
  }
200
209
  function isDebugMode() {
201
210
  const account = (0, auth_1.getGlobalDefaultAccount)();
202
- if (account === null || account === void 0 ? void 0 : account.user.email.endsWith("@google.com")) {
211
+ if (account?.user.email.endsWith("@google.com")) {
203
212
  try {
204
213
  require("../tsconfig.json");
205
214
  logger_1.logger.debug(`Using Google Analytics in DEBUG mode. Emulators (+ UI) events will be shown in GA Debug View only.`);
206
215
  return true;
207
216
  }
208
- catch (_a) {
217
+ catch {
209
218
  }
210
219
  }
211
220
  return false;