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
@@ -14,7 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.guardVersionSupport = exports.isDecommissioned = exports.latest = exports.runtimeIsLanguage = exports.isRuntime = void 0;
17
+ exports.isRuntime = isRuntime;
18
+ exports.runtimeIsLanguage = runtimeIsLanguage;
19
+ exports.latest = latest;
20
+ exports.isDecommissioned = isDecommissioned;
21
+ exports.guardVersionSupport = guardVersionSupport;
18
22
  const error_1 = require("../../../../error");
19
23
  const utils = require("../../../../utils");
20
24
  const types_1 = require("./types");
@@ -22,11 +26,9 @@ __exportStar(require("./types"), exports);
22
26
  function isRuntime(maybe) {
23
27
  return maybe in types_1.RUNTIMES;
24
28
  }
25
- exports.isRuntime = isRuntime;
26
29
  function runtimeIsLanguage(runtime, language) {
27
30
  return runtime.startsWith(language);
28
31
  }
29
- exports.runtimeIsLanguage = runtimeIsLanguage;
30
32
  function latest(language, runtimes = Object.keys(types_1.RUNTIMES)) {
31
33
  const sorted = runtimes
32
34
  .filter((s) => runtimeIsLanguage(s, language))
@@ -46,12 +48,10 @@ function latest(language, runtimes = Object.keys(types_1.RUNTIMES)) {
46
48
  }
47
49
  return latest;
48
50
  }
49
- exports.latest = latest;
50
51
  function isDecommissioned(runtime, now = new Date()) {
51
52
  const cutoff = new Date(types_1.RUNTIMES[runtime].decommissionDate);
52
53
  return cutoff < now;
53
54
  }
54
- exports.isDecommissioned = isDecommissioned;
55
55
  function guardVersionSupport(runtime, now = new Date()) {
56
56
  const { deprecationDate, decommissionDate } = types_1.RUNTIMES[runtime];
57
57
  const decommission = new Date(decommissionDate);
@@ -77,4 +77,3 @@ function guardVersionSupport(runtime, now = new Date()) {
77
77
  "details on the lifecycle policy");
78
78
  }
79
79
  }
80
- exports.guardVersionSupport = guardVersionSupport;
@@ -27,22 +27,21 @@ class AuthBlockingService {
27
27
  }
28
28
  }
29
29
  configChanged(newConfig, config) {
30
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
31
- if (((_b = (_a = newConfig.triggers) === null || _a === void 0 ? void 0 : _a.beforeCreate) === null || _b === void 0 ? void 0 : _b.functionUri) !==
32
- ((_d = (_c = config.triggers) === null || _c === void 0 ? void 0 : _c.beforeCreate) === null || _d === void 0 ? void 0 : _d.functionUri) ||
33
- ((_f = (_e = newConfig.triggers) === null || _e === void 0 ? void 0 : _e.beforeSignIn) === null || _f === void 0 ? void 0 : _f.functionUri) !==
34
- ((_h = (_g = config.triggers) === null || _g === void 0 ? void 0 : _g.beforeSignIn) === null || _h === void 0 ? void 0 : _h.functionUri) ||
35
- ((_k = (_j = newConfig.triggers) === null || _j === void 0 ? void 0 : _j.beforeSendEmail) === null || _k === void 0 ? void 0 : _k.functionUri) !==
36
- ((_m = (_l = config.triggers) === null || _l === void 0 ? void 0 : _l.beforeSendEmail) === null || _m === void 0 ? void 0 : _m.functionUri) ||
37
- ((_p = (_o = newConfig.triggers) === null || _o === void 0 ? void 0 : _o.beforeSendSms) === null || _p === void 0 ? void 0 : _p.functionUri) !== ((_r = (_q = config.triggers) === null || _q === void 0 ? void 0 : _q.beforeSendSms) === null || _r === void 0 ? void 0 : _r.functionUri)) {
30
+ if (newConfig.triggers?.beforeCreate?.functionUri !==
31
+ config.triggers?.beforeCreate?.functionUri ||
32
+ newConfig.triggers?.beforeSignIn?.functionUri !==
33
+ config.triggers?.beforeSignIn?.functionUri ||
34
+ newConfig.triggers?.beforeSendEmail?.functionUri !==
35
+ config.triggers?.beforeSendEmail?.functionUri ||
36
+ newConfig.triggers?.beforeSendSms?.functionUri !== config.triggers?.beforeSendSms?.functionUri) {
38
37
  return true;
39
38
  }
40
- if (!!((_s = newConfig.forwardInboundCredentials) === null || _s === void 0 ? void 0 : _s.accessToken) !==
41
- !!((_t = config.forwardInboundCredentials) === null || _t === void 0 ? void 0 : _t.accessToken) ||
42
- !!((_u = newConfig.forwardInboundCredentials) === null || _u === void 0 ? void 0 : _u.idToken) !==
43
- !!((_v = config.forwardInboundCredentials) === null || _v === void 0 ? void 0 : _v.idToken) ||
44
- !!((_w = newConfig.forwardInboundCredentials) === null || _w === void 0 ? void 0 : _w.refreshToken) !==
45
- !!((_x = config.forwardInboundCredentials) === null || _x === void 0 ? void 0 : _x.refreshToken)) {
39
+ if (!!newConfig.forwardInboundCredentials?.accessToken !==
40
+ !!config.forwardInboundCredentials?.accessToken ||
41
+ !!newConfig.forwardInboundCredentials?.idToken !==
42
+ !!config.forwardInboundCredentials?.idToken ||
43
+ !!newConfig.forwardInboundCredentials?.refreshToken !==
44
+ !!config.forwardInboundCredentials?.refreshToken) {
46
45
  return true;
47
46
  }
48
47
  return false;
@@ -51,29 +50,44 @@ class AuthBlockingService {
51
50
  const newBlockingConfig = await identityPlatform.getBlockingFunctionsConfig(endpoint.project);
52
51
  const oldBlockingConfig = (0, utils_1.cloneDeep)(newBlockingConfig);
53
52
  if (endpoint.blockingTrigger.eventType === events.v1.BEFORE_CREATE_EVENT) {
54
- newBlockingConfig.triggers = Object.assign(Object.assign({}, newBlockingConfig.triggers), { beforeCreate: {
53
+ newBlockingConfig.triggers = {
54
+ ...newBlockingConfig.triggers,
55
+ beforeCreate: {
55
56
  functionUri: endpoint.uri,
56
- } });
57
+ },
58
+ };
57
59
  }
58
60
  else if (endpoint.blockingTrigger.eventType === events.v1.BEFORE_SIGN_IN_EVENT) {
59
- newBlockingConfig.triggers = Object.assign(Object.assign({}, newBlockingConfig.triggers), { beforeSignIn: {
61
+ newBlockingConfig.triggers = {
62
+ ...newBlockingConfig.triggers,
63
+ beforeSignIn: {
60
64
  functionUri: endpoint.uri,
61
- } });
65
+ },
66
+ };
62
67
  }
63
68
  else if (endpoint.blockingTrigger.eventType === events.v1.BEFORE_SEND_EMAIL_EVENT) {
64
- newBlockingConfig.triggers = Object.assign(Object.assign({}, newBlockingConfig.triggers), { beforeSendEmail: {
69
+ newBlockingConfig.triggers = {
70
+ ...newBlockingConfig.triggers,
71
+ beforeSendEmail: {
65
72
  functionUri: endpoint.uri,
66
- } });
73
+ },
74
+ };
67
75
  }
68
76
  else if (endpoint.blockingTrigger.eventType === events.v1.BEFORE_SEND_SMS_EVENT) {
69
- newBlockingConfig.triggers = Object.assign(Object.assign({}, newBlockingConfig.triggers), { beforeSendSms: {
77
+ newBlockingConfig.triggers = {
78
+ ...newBlockingConfig.triggers,
79
+ beforeSendSms: {
70
80
  functionUri: endpoint.uri,
71
- } });
81
+ },
82
+ };
72
83
  }
73
84
  else {
74
85
  throw new error_1.FirebaseError(`Received invalid blocking trigger event type ${endpoint.blockingTrigger.eventType}`);
75
86
  }
76
- newBlockingConfig.forwardInboundCredentials = Object.assign(Object.assign({}, oldBlockingConfig.forwardInboundCredentials), endpoint.blockingTrigger.options);
87
+ newBlockingConfig.forwardInboundCredentials = {
88
+ ...oldBlockingConfig.forwardInboundCredentials,
89
+ ...endpoint.blockingTrigger.options,
90
+ };
77
91
  if (!this.configChanged(newBlockingConfig, oldBlockingConfig)) {
78
92
  return;
79
93
  }
@@ -87,25 +101,24 @@ class AuthBlockingService {
87
101
  return this.triggerQueue;
88
102
  }
89
103
  async unregisterTriggerLocked(endpoint) {
90
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
91
104
  const blockingConfig = await identityPlatform.getBlockingFunctionsConfig(endpoint.project);
92
- if (endpoint.uri !== ((_b = (_a = blockingConfig.triggers) === null || _a === void 0 ? void 0 : _a.beforeCreate) === null || _b === void 0 ? void 0 : _b.functionUri) &&
93
- endpoint.uri !== ((_d = (_c = blockingConfig.triggers) === null || _c === void 0 ? void 0 : _c.beforeSignIn) === null || _d === void 0 ? void 0 : _d.functionUri) &&
94
- endpoint.uri !== ((_f = (_e = blockingConfig.triggers) === null || _e === void 0 ? void 0 : _e.beforeSendEmail) === null || _f === void 0 ? void 0 : _f.functionUri) &&
95
- endpoint.uri !== ((_h = (_g = blockingConfig.triggers) === null || _g === void 0 ? void 0 : _g.beforeSendSms) === null || _h === void 0 ? void 0 : _h.functionUri)) {
105
+ if (endpoint.uri !== blockingConfig.triggers?.beforeCreate?.functionUri &&
106
+ endpoint.uri !== blockingConfig.triggers?.beforeSignIn?.functionUri &&
107
+ endpoint.uri !== blockingConfig.triggers?.beforeSendEmail?.functionUri &&
108
+ endpoint.uri !== blockingConfig.triggers?.beforeSendSms?.functionUri) {
96
109
  return;
97
110
  }
98
- if (endpoint.uri === ((_k = (_j = blockingConfig.triggers) === null || _j === void 0 ? void 0 : _j.beforeCreate) === null || _k === void 0 ? void 0 : _k.functionUri)) {
99
- (_l = blockingConfig.triggers) === null || _l === void 0 ? true : delete _l.beforeCreate;
111
+ if (endpoint.uri === blockingConfig.triggers?.beforeCreate?.functionUri) {
112
+ delete blockingConfig.triggers?.beforeCreate;
100
113
  }
101
- if (endpoint.uri === ((_o = (_m = blockingConfig.triggers) === null || _m === void 0 ? void 0 : _m.beforeSignIn) === null || _o === void 0 ? void 0 : _o.functionUri)) {
102
- (_p = blockingConfig.triggers) === null || _p === void 0 ? true : delete _p.beforeSignIn;
114
+ if (endpoint.uri === blockingConfig.triggers?.beforeSignIn?.functionUri) {
115
+ delete blockingConfig.triggers?.beforeSignIn;
103
116
  }
104
- if (endpoint.uri === ((_r = (_q = blockingConfig.triggers) === null || _q === void 0 ? void 0 : _q.beforeSendEmail) === null || _r === void 0 ? void 0 : _r.functionUri)) {
105
- (_s = blockingConfig.triggers) === null || _s === void 0 ? true : delete _s.beforeSendEmail;
117
+ if (endpoint.uri === blockingConfig.triggers?.beforeSendEmail?.functionUri) {
118
+ delete blockingConfig.triggers?.beforeSendEmail;
106
119
  }
107
- if (endpoint.uri === ((_u = (_t = blockingConfig.triggers) === null || _t === void 0 ? void 0 : _t.beforeSendSms) === null || _u === void 0 ? void 0 : _u.functionUri)) {
108
- (_v = blockingConfig.triggers) === null || _v === void 0 ? true : delete _v.beforeSendSms;
120
+ if (endpoint.uri === blockingConfig.triggers?.beforeSendSms?.functionUri) {
121
+ delete blockingConfig.triggers?.beforeSendSms;
109
122
  }
110
123
  await identityPlatform.setBlockingFunctionsConfig(endpoint.project, blockingConfig);
111
124
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensureDatabaseTriggerRegion = void 0;
3
+ exports.ensureDatabaseTriggerRegion = ensureDatabaseTriggerRegion;
4
4
  const error_1 = require("../../../error");
5
5
  function ensureDatabaseTriggerRegion(endpoint) {
6
6
  if (!endpoint.eventTrigger.region) {
@@ -11,4 +11,3 @@ function ensureDatabaseTriggerRegion(endpoint) {
11
11
  }
12
12
  return Promise.resolve();
13
13
  }
14
- exports.ensureDatabaseTriggerRegion = ensureDatabaseTriggerRegion;
@@ -1,7 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensureDataConnectTriggerRegion = void 0;
3
+ exports.ensureDataConnectTriggerRegion = ensureDataConnectTriggerRegion;
4
+ exports.getDataConnectP4SA = getDataConnectP4SA;
5
+ const api_1 = require("../../../api");
4
6
  const error_1 = require("../../../error");
7
+ const AUTOPUSH_DATACONNECT_SA_DOMAIN = "gcp-sa-autopush-dataconnect.iam.gserviceaccount.com";
8
+ const STAGING_DATACONNECT_SA_DOMAIN = "gcp-sa-staging-dataconnect.iam.gserviceaccount.com";
9
+ const PROD_DATACONNECT_SA_DOMAIN = "gcp-sa-firebasedataconnect.iam.gserviceaccount.com";
5
10
  function ensureDataConnectTriggerRegion(endpoint) {
6
11
  if (!endpoint.eventTrigger.region) {
7
12
  endpoint.eventTrigger.region = endpoint.region;
@@ -11,4 +16,13 @@ function ensureDataConnectTriggerRegion(endpoint) {
11
16
  }
12
17
  return Promise.resolve();
13
18
  }
14
- exports.ensureDataConnectTriggerRegion = ensureDataConnectTriggerRegion;
19
+ function getDataConnectP4SA(projectNumber) {
20
+ const origin = (0, api_1.dataconnectOrigin)();
21
+ if (origin.includes("autopush")) {
22
+ return `service-${projectNumber}@${AUTOPUSH_DATACONNECT_SA_DOMAIN}`;
23
+ }
24
+ if (origin.includes("staging")) {
25
+ return `service-${projectNumber}@${STAGING_DATACONNECT_SA_DOMAIN}`;
26
+ }
27
+ return `service-${projectNumber}@${PROD_DATACONNECT_SA_DOMAIN}`;
28
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensureFirebaseAlertsTriggerRegion = void 0;
3
+ exports.ensureFirebaseAlertsTriggerRegion = ensureFirebaseAlertsTriggerRegion;
4
4
  const error_1 = require("../../../error");
5
5
  function ensureFirebaseAlertsTriggerRegion(endpoint) {
6
6
  if (!endpoint.eventTrigger.region) {
@@ -11,4 +11,3 @@ function ensureFirebaseAlertsTriggerRegion(endpoint) {
11
11
  }
12
12
  return Promise.resolve();
13
13
  }
14
- exports.ensureFirebaseAlertsTriggerRegion = ensureFirebaseAlertsTriggerRegion;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensureFirestoreTriggerRegion = exports.clearCache = void 0;
3
+ exports.clearCache = clearCache;
4
+ exports.ensureFirestoreTriggerRegion = ensureFirestoreTriggerRegion;
4
5
  const firestore = require("../../../gcp/firestore");
5
6
  const error_1 = require("../../../error");
6
7
  const dbCache = new Map();
@@ -9,7 +10,6 @@ function clearCache() {
9
10
  dbCache.clear();
10
11
  dbPromiseCache.clear();
11
12
  }
12
- exports.clearCache = clearCache;
13
13
  async function getDatabase(project, databaseId) {
14
14
  const key = `${project}/${databaseId}`;
15
15
  if (dbCache.has(key)) {
@@ -33,8 +33,7 @@ async function getDatabase(project, databaseId) {
33
33
  return dbPromise;
34
34
  }
35
35
  async function ensureFirestoreTriggerRegion(endpoint) {
36
- var _a;
37
- const db = await getDatabase(endpoint.project, ((_a = endpoint.eventTrigger.eventFilters) === null || _a === void 0 ? void 0 : _a.database) || "(default)");
36
+ const db = await getDatabase(endpoint.project, endpoint.eventTrigger.eventFilters?.database || "(default)");
38
37
  const dbRegion = db.locationId;
39
38
  if (!endpoint.eventTrigger.region) {
40
39
  endpoint.eventTrigger.region = dbRegion;
@@ -43,4 +42,3 @@ async function ensureFirestoreTriggerRegion(endpoint) {
43
42
  throw new error_1.FirebaseError("A firestore trigger location must match the firestore database region.");
44
43
  }
45
44
  }
46
- exports.ensureFirestoreTriggerRegion = ensureFirestoreTriggerRegion;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.serviceForEndpoint = exports.noopProjectBindings = exports.noop = void 0;
3
+ exports.noopProjectBindings = exports.noop = void 0;
4
+ exports.serviceForEndpoint = serviceForEndpoint;
4
5
  const backend = require("../backend");
5
6
  const auth_1 = require("./auth");
6
7
  const storage_1 = require("./storage");
@@ -131,4 +132,3 @@ function serviceForEndpoint(endpoint) {
131
132
  }
132
133
  return noOpService;
133
134
  }
134
- exports.serviceForEndpoint = serviceForEndpoint;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensureRemoteConfigTriggerRegion = void 0;
3
+ exports.ensureRemoteConfigTriggerRegion = ensureRemoteConfigTriggerRegion;
4
4
  const error_1 = require("../../../error");
5
5
  function ensureRemoteConfigTriggerRegion(endpoint) {
6
6
  if (!endpoint.eventTrigger.region) {
@@ -11,4 +11,3 @@ function ensureRemoteConfigTriggerRegion(endpoint) {
11
11
  }
12
12
  return Promise.resolve();
13
13
  }
14
- exports.ensureRemoteConfigTriggerRegion = ensureRemoteConfigTriggerRegion;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensureStorageTriggerRegion = exports.obtainStorageBindings = void 0;
3
+ exports.obtainStorageBindings = obtainStorageBindings;
4
+ exports.ensureStorageTriggerRegion = ensureStorageTriggerRegion;
4
5
  const storage = require("../../../gcp/storage");
5
6
  const logger_1 = require("../../../logger");
6
7
  const error_1 = require("../../../error");
@@ -15,13 +16,11 @@ async function obtainStorageBindings(projectNumber) {
15
16
  };
16
17
  return [pubsubPublisherBinding];
17
18
  }
18
- exports.obtainStorageBindings = obtainStorageBindings;
19
19
  async function ensureStorageTriggerRegion(endpoint) {
20
- var _a;
21
20
  const { eventTrigger } = endpoint;
22
21
  if (!eventTrigger.region) {
23
22
  logger_1.logger.debug("Looking up bucket region for the storage event trigger");
24
- if (!((_a = eventTrigger.eventFilters) === null || _a === void 0 ? void 0 : _a.bucket)) {
23
+ if (!eventTrigger.eventFilters?.bucket) {
25
24
  throw new error_1.FirebaseError("Error: storage event trigger is missing bucket filter: " +
26
25
  JSON.stringify(eventTrigger, null, 2));
27
26
  }
@@ -41,4 +40,3 @@ async function ensureStorageTriggerRegion(endpoint) {
41
40
  throw new error_1.FirebaseError(`A function in region ${endpoint.region} cannot listen to a bucket in region ${eventTrigger.region}`);
42
41
  }
43
42
  }
44
- exports.ensureStorageTriggerRegion = ensureStorageTriggerRegion;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensureTestLabTriggerRegion = void 0;
3
+ exports.ensureTestLabTriggerRegion = ensureTestLabTriggerRegion;
4
4
  const error_1 = require("../../../error");
5
5
  function ensureTestLabTriggerRegion(endpoint) {
6
6
  if (!endpoint.eventTrigger.region) {
@@ -11,4 +11,3 @@ function ensureTestLabTriggerRegion(endpoint) {
11
11
  }
12
12
  return Promise.resolve();
13
13
  }
14
- exports.ensureTestLabTriggerRegion = ensureTestLabTriggerRegion;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensureTriggerRegions = void 0;
3
+ exports.ensureTriggerRegions = ensureTriggerRegions;
4
4
  const backend = require("./backend");
5
5
  const services_1 = require("./services");
6
6
  async function ensureTriggerRegions(want) {
@@ -13,4 +13,3 @@ async function ensureTriggerRegions(want) {
13
13
  }
14
14
  await Promise.all(regionLookups);
15
15
  }
16
- exports.ensureTriggerRegions = ensureTriggerRegions;
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.secretsAreValid = exports.functionIdsAreValid = exports.functionsDirectoryExists = exports.endpointsAreUnique = exports.validateTimeoutConfig = exports.cpuConfigIsValid = exports.endpointsAreValid = exports.MAX_V2_SCHEDULE_ATTEMPT_DEADLINE_SECONDS = exports.DEFAULT_V2_SCHEDULE_ATTEMPT_DEADLINE_SECONDS = void 0;
3
+ exports.MAX_V2_SCHEDULE_ATTEMPT_DEADLINE_SECONDS = exports.DEFAULT_V2_SCHEDULE_ATTEMPT_DEADLINE_SECONDS = void 0;
4
+ exports.endpointsAreValid = endpointsAreValid;
5
+ exports.cpuConfigIsValid = cpuConfigIsValid;
6
+ exports.validateTimeoutConfig = validateTimeoutConfig;
7
+ exports.endpointsAreUnique = endpointsAreUnique;
8
+ exports.functionsDirectoryExists = functionsDirectoryExists;
9
+ exports.functionIdsAreValid = functionIdsAreValid;
10
+ exports.secretsAreValid = secretsAreValid;
4
11
  const path = require("path");
5
12
  const clc = require("colorette");
6
13
  const error_1 = require("../../error");
@@ -27,10 +34,9 @@ function matchingIds(endpoints, filter) {
27
34
  }
28
35
  const mem = (endpoint) => endpoint.availableMemoryMb || backend.DEFAULT_MEMORY;
29
36
  const cpu = (endpoint) => {
30
- var _a;
31
37
  return endpoint.cpu === "gcf_gen1"
32
38
  ? backend.memoryToGen1Cpu(mem(endpoint))
33
- : (_a = endpoint.cpu) !== null && _a !== void 0 ? _a : backend.memoryToGen2Cpu(mem(endpoint));
39
+ : endpoint.cpu ?? backend.memoryToGen2Cpu(mem(endpoint));
34
40
  };
35
41
  function validateScheduledTimeout(ep) {
36
42
  if (backend.isScheduleTriggered(ep) &&
@@ -69,7 +75,6 @@ function endpointsAreValid(wantBackend) {
69
75
  }
70
76
  cpuConfigIsValid(endpoints);
71
77
  }
72
- exports.endpointsAreValid = endpointsAreValid;
73
78
  function cpuConfigIsValid(endpoints) {
74
79
  const gcfV1WithCPU = matchingIds(endpoints, (endpoint) => endpoint.platform === "gcfv1" && typeof endpoint["cpu"] !== "undefined");
75
80
  if (gcfV1WithCPU.length) {
@@ -122,7 +127,6 @@ function cpuConfigIsValid(endpoints) {
122
127
  throw new error_1.FirebaseError(msg);
123
128
  }
124
129
  }
125
- exports.cpuConfigIsValid = cpuConfigIsValid;
126
130
  function validateTimeoutConfig(endpoints) {
127
131
  const invalidEndpoints = [];
128
132
  for (const ep of endpoints) {
@@ -143,7 +147,9 @@ function validateTimeoutConfig(endpoints) {
143
147
  else if (backend.isTaskQueueTriggered(ep)) {
144
148
  limit = MAX_V2_TASK_QUEUE_TIMEOUT_SECONDS;
145
149
  }
146
- else if (backend.isHttpsTriggered(ep) || backend.isCallableTriggered(ep)) {
150
+ else if (backend.isHttpsTriggered(ep) ||
151
+ backend.isCallableTriggered(ep) ||
152
+ backend.isDataConnectGraphqlTriggered(ep)) {
147
153
  limit = MAX_V2_HTTP_TIMEOUT_SECONDS;
148
154
  }
149
155
  if (limit !== undefined && timeout > limit) {
@@ -162,7 +168,6 @@ function validateTimeoutConfig(endpoints) {
162
168
  "\n\nFor more information, see https://firebase.google.com/docs/functions/quotas#time_limits";
163
169
  throw new error_1.FirebaseError(msg);
164
170
  }
165
- exports.validateTimeoutConfig = validateTimeoutConfig;
166
171
  function endpointsAreUnique(backends) {
167
172
  const endpointToCodebases = {};
168
173
  for (const [codebase, b] of Object.entries(backends)) {
@@ -185,7 +190,6 @@ function endpointsAreUnique(backends) {
185
190
  const msgs = Object.entries(conflicts).map(([fn, codebases]) => `${fn}: ${codebases.join(",")}`);
186
191
  throw new error_1.FirebaseError("More than one codebase claims following functions:\n\t" + `${msgs.join("\n\t")}`);
187
192
  }
188
- exports.endpointsAreUnique = endpointsAreUnique;
189
193
  function functionsDirectoryExists(sourceDir, projectDir) {
190
194
  if (!fsutils.dirExistsSync(sourceDir)) {
191
195
  const sourceDirName = path.relative(projectDir, sourceDir);
@@ -194,7 +198,6 @@ function functionsDirectoryExists(sourceDir, projectDir) {
194
198
  throw new error_1.FirebaseError(msg);
195
199
  }
196
200
  }
197
- exports.functionsDirectoryExists = functionsDirectoryExists;
198
201
  function functionIdsAreValid(functions) {
199
202
  const functionName = /^[a-zA-Z][a-zA-Z0-9_-]{0,62}$/;
200
203
  const invalidIds = functions.filter((fn) => !functionName.test(fn.id));
@@ -204,7 +207,6 @@ function functionIdsAreValid(functions) {
204
207
  throw new error_1.FirebaseError(msg);
205
208
  }
206
209
  }
207
- exports.functionIdsAreValid = functionIdsAreValid;
208
210
  async function secretsAreValid(projectId, wantBackend) {
209
211
  const endpoints = backend
210
212
  .allEndpoints(wantBackend)
@@ -212,7 +214,6 @@ async function secretsAreValid(projectId, wantBackend) {
212
214
  validatePlatformTargets(endpoints);
213
215
  await validateSecretVersions(projectId, endpoints);
214
216
  }
215
- exports.secretsAreValid = secretsAreValid;
216
217
  const secretsSupportedPlatforms = ["gcfv1", "gcfv2"];
217
218
  function validatePlatformTargets(endpoints) {
218
219
  const unsupported = endpoints.filter((e) => !secretsSupportedPlatforms.includes(e.platform));
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertConfig = exports.findEndpointForRewrite = void 0;
3
+ exports.findEndpointForRewrite = findEndpointForRewrite;
4
+ exports.convertConfig = convertConfig;
4
5
  const error_1 = require("../../error");
5
6
  const backend = require("../functions/backend");
6
7
  const utils_1 = require("../../utils");
@@ -58,11 +59,9 @@ function findEndpointForRewrite(site, targetBackend, id, region) {
58
59
  foundMatchingId: true,
59
60
  };
60
61
  }
61
- exports.findEndpointForRewrite = findEndpointForRewrite;
62
62
  async function convertConfig(context, functionsPayload, deploy) {
63
- var _a, _b, _c, _d;
64
63
  const config = {};
65
- const hasBackends = !!((_a = deploy.config.rewrites) === null || _a === void 0 ? void 0 : _a.some((r) => "function" in r || "run" in r));
64
+ const hasBackends = !!deploy.config.rewrites?.some((r) => "function" in r || "run" in r);
66
65
  const wantBackend = backend.merge(...Object.values(functionsPayload.functions || {}).map((c) => c.wantBackend));
67
66
  let haveBackend = backend.empty();
68
67
  if (hasBackends) {
@@ -80,11 +79,13 @@ async function convertConfig(context, functionsPayload, deploy) {
80
79
  }
81
80
  }
82
81
  }
83
- config.rewrites = (_b = deploy.config.rewrites) === null || _b === void 0 ? void 0 : _b.map((rewrite) => {
84
- var _a;
82
+ config.rewrites = deploy.config.rewrites?.map((rewrite) => {
85
83
  const target = extractPattern("rewrite", rewrite);
86
84
  if ("destination" in rewrite) {
87
- return Object.assign(Object.assign({}, target), { path: rewrite.destination });
85
+ return {
86
+ ...target,
87
+ path: rewrite.destination,
88
+ };
88
89
  }
89
90
  if ("function" in rewrite) {
90
91
  if (typeof rewrite.function === "string") {
@@ -98,14 +99,14 @@ async function convertConfig(context, functionsPayload, deploy) {
98
99
  : undefined;
99
100
  const endpoint = deployingEndpointSearch.matchingEndpoint
100
101
  ? deployingEndpointSearch.matchingEndpoint
101
- : existingEndpointSearch === null || existingEndpointSearch === void 0 ? void 0 : existingEndpointSearch.matchingEndpoint;
102
+ : existingEndpointSearch?.matchingEndpoint;
102
103
  if (!endpoint) {
103
- if (deployingEndpointSearch.foundMatchingId || (existingEndpointSearch === null || existingEndpointSearch === void 0 ? void 0 : existingEndpointSearch.foundMatchingId)) {
104
+ if (deployingEndpointSearch.foundMatchingId || existingEndpointSearch?.foundMatchingId) {
104
105
  throw new error_1.FirebaseError(`Unable to find a valid endpoint for function. Functions matching the rewrite
105
106
  are present but in the wrong region.`);
106
107
  }
107
108
  (0, utils_1.logLabeledWarning)(`hosting[${deploy.config.site}]`, `Unable to find a valid endpoint for function \`${id}\`, but still including it in the config`);
108
- const apiRewrite = Object.assign(Object.assign({}, target), { function: id });
109
+ const apiRewrite = { ...target, function: id };
109
110
  if (region) {
110
111
  apiRewrite.functionRegion = region;
111
112
  }
@@ -118,12 +119,19 @@ async function convertConfig(context, functionsPayload, deploy) {
118
119
  if (rewrite.function.pinTag) {
119
120
  throw new error_1.FirebaseError(`Function ${endpoint.id} is a 1st gen function and therefore does not support the ${(0, colorette_1.bold)("pinTag")} option`);
120
121
  }
121
- return Object.assign(Object.assign({}, target), { function: endpoint.id, functionRegion: endpoint.region });
122
+ return {
123
+ ...target,
124
+ function: endpoint.id,
125
+ functionRegion: endpoint.region,
126
+ };
122
127
  }
123
- const apiRewrite = Object.assign(Object.assign({}, target), { run: {
124
- serviceId: (_a = endpoint.runServiceId) !== null && _a !== void 0 ? _a : endpoint.id,
128
+ const apiRewrite = {
129
+ ...target,
130
+ run: {
131
+ serviceId: endpoint.runServiceId ?? endpoint.id,
125
132
  region: endpoint.region,
126
- } });
133
+ },
134
+ };
127
135
  if (rewrite.function.pinTag) {
128
136
  if (endpoint.minInstances) {
129
137
  throw new error_1.FirebaseError(`Function ${endpoint.id} has minInstances set and is in a rewrite ` +
@@ -139,13 +147,16 @@ async function convertConfig(context, functionsPayload, deploy) {
139
147
  if (!rewrite.dynamicLinks) {
140
148
  throw new error_1.FirebaseError("Can only set dynamicLinks to true in a rewrite");
141
149
  }
142
- return Object.assign(Object.assign({}, target), { dynamicLinks: true });
150
+ return { ...target, dynamicLinks: true };
143
151
  }
144
152
  if ("run" in rewrite) {
145
- const apiRewrite = Object.assign(Object.assign({}, target), { run: {
153
+ const apiRewrite = {
154
+ ...target,
155
+ run: {
146
156
  serviceId: rewrite.run.serviceId,
147
157
  region: rewrite.run.region || "us-central1",
148
- } });
158
+ },
159
+ };
149
160
  if (rewrite.run.pinTag) {
150
161
  experiments.assertEnabled("pintags", "pin to a run service revision");
151
162
  apiRewrite.run.tag = runTags.TODO_TAG_NAME;
@@ -164,23 +175,28 @@ async function convertConfig(context, functionsPayload, deploy) {
164
175
  const versionId = (0, utils_1.last)(deploy.version.split("/"));
165
176
  await runTags.setRewriteTags(config.rewrites, context.projectId, versionId);
166
177
  }
167
- config.redirects = (_c = deploy.config.redirects) === null || _c === void 0 ? void 0 : _c.map((redirect) => {
168
- const apiRedirect = Object.assign(Object.assign({}, extractPattern("redirect", redirect)), { location: redirect.destination });
178
+ config.redirects = deploy.config.redirects?.map((redirect) => {
179
+ const apiRedirect = {
180
+ ...extractPattern("redirect", redirect),
181
+ location: redirect.destination,
182
+ };
169
183
  if (redirect.type) {
170
184
  apiRedirect.statusCode = redirect.type;
171
185
  }
172
186
  return apiRedirect;
173
187
  });
174
- config.headers = (_d = deploy.config.headers) === null || _d === void 0 ? void 0 : _d.map((header) => {
188
+ config.headers = deploy.config.headers?.map((header) => {
175
189
  const headers = {};
176
190
  for (const { key, value } of header.headers || []) {
177
191
  headers[key] = value;
178
192
  }
179
- return Object.assign(Object.assign({}, extractPattern("header", header)), { headers });
193
+ return {
194
+ ...extractPattern("header", header),
195
+ headers,
196
+ };
180
197
  });
181
198
  proto.copyIfPresent(config, deploy.config, "cleanUrls", "appAssociation", "i18n");
182
199
  proto.convertIfPresent(config, deploy.config, "trailingSlashBehavior", "trailingSlash", (b) => b ? "ADD" : "REMOVE");
183
200
  proto.pruneUndefiends(config);
184
201
  return config;
185
202
  }
186
- exports.convertConfig = convertConfig;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deploy = void 0;
3
+ exports.deploy = deploy;
4
4
  const uploader_1 = require("./uploader");
5
5
  const detectProjectRoot_1 = require("../../detectProjectRoot");
6
6
  const listFiles_1 = require("../../listFiles");
@@ -11,8 +11,7 @@ const ora = require("ora");
11
11
  const fsutils_1 = require("../../fsutils");
12
12
  const error_1 = require("../../error");
13
13
  async function deploy(context, options) {
14
- var _a, _b;
15
- if (!((_a = context.hosting) === null || _a === void 0 ? void 0 : _a.deploys)) {
14
+ if (!context.hosting?.deploys) {
16
15
  return;
17
16
  }
18
17
  const spinner = ora();
@@ -25,12 +24,11 @@ async function deploy(context, options) {
25
24
  }
26
25
  }
27
26
  async function runDeploys(deploys, debugging) {
28
- var _a;
29
27
  const deploy = deploys.shift();
30
28
  if (!deploy) {
31
29
  return;
32
30
  }
33
- if (!((_a = deploy.config) === null || _a === void 0 ? void 0 : _a.public)) {
31
+ if (!deploy.config?.public) {
34
32
  (0, utils_1.logLabeledBullet)(`hosting[${deploy.config.site}]`, 'no "public" directory to upload, continuing with release');
35
33
  return runDeploys(deploys, debugging);
36
34
  }
@@ -79,7 +77,6 @@ async function deploy(context, options) {
79
77
  return runDeploys(deploys, debugging);
80
78
  }
81
79
  const debugging = !!(options.debug || options.nonInteractive);
82
- const deploys = [...(((_b = context.hosting) === null || _b === void 0 ? void 0 : _b.deploys) || [])];
80
+ const deploys = [...(context.hosting?.deploys || [])];
83
81
  return runDeploys(deploys, debugging);
84
82
  }
85
- exports.deploy = deploy;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dump = exports.load = void 0;
3
+ exports.load = load;
4
+ exports.dump = dump;
4
5
  const fs = require("fs-extra");
5
6
  const path = require("path");
6
7
  const logger_1 = require("../../logger");
@@ -29,7 +30,6 @@ function load(cwd, name) {
29
30
  return new Map();
30
31
  }
31
32
  }
32
- exports.load = load;
33
33
  function dump(cwd, name, data) {
34
34
  let st = "";
35
35
  let count = 0;
@@ -45,4 +45,3 @@ function dump(cwd, name, data) {
45
45
  logger_1.logger.debug(`[hosting] unable to store hash cache [${name}]: ${e.stack}`);
46
46
  }
47
47
  }
48
- exports.dump = dump;