firebase-tools 15.1.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 +19 -21
  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 +1 -2
  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 +7 -7
  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 +18 -20
  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 +16 -23
  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 +3 -3
  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 +17 -9
  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,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.listBillingAccounts = exports.setBillingAccount = exports.checkBillingEnabled = exports.isBillingEnabled = void 0;
3
+ exports.isBillingEnabled = isBillingEnabled;
4
+ exports.checkBillingEnabled = checkBillingEnabled;
5
+ exports.setBillingAccount = setBillingAccount;
6
+ exports.listBillingAccounts = listBillingAccounts;
4
7
  const api_1 = require("../api");
5
8
  const apiv2_1 = require("../apiv2");
6
9
  const utils = require("../utils");
@@ -16,21 +19,17 @@ async function isBillingEnabled(setup) {
16
19
  setup.isBillingEnabled = await checkBillingEnabled(setup.projectId);
17
20
  return setup.isBillingEnabled;
18
21
  }
19
- exports.isBillingEnabled = isBillingEnabled;
20
22
  async function checkBillingEnabled(projectId) {
21
23
  const res = await client.get(utils.endpoint(["projects", projectId, "billingInfo"]), { retryCodes: [500, 503] });
22
24
  return res.body.billingEnabled;
23
25
  }
24
- exports.checkBillingEnabled = checkBillingEnabled;
25
26
  async function setBillingAccount(projectId, billingAccountName) {
26
27
  const res = await client.put(utils.endpoint(["projects", projectId, "billingInfo"]), {
27
28
  billingAccountName: billingAccountName,
28
29
  }, { retryCodes: [500, 503] });
29
30
  return res.body.billingEnabled;
30
31
  }
31
- exports.setBillingAccount = setBillingAccount;
32
32
  async function listBillingAccounts() {
33
33
  const res = await client.get(utils.endpoint(["billingAccounts"]), { retryCodes: [500, 503] });
34
34
  return res.body.billingAccounts || [];
35
35
  }
36
- exports.listBillingAccounts = listBillingAccounts;
@@ -1,6 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDefaultServiceAgent = exports.getDefaultServiceAccount = exports.deleteRepository = exports.getRepository = exports.createRepository = exports.fetchLinkableRepositories = exports.deleteConnection = exports.listConnections = exports.getConnection = exports.createConnection = void 0;
3
+ exports.createConnection = createConnection;
4
+ exports.getConnection = getConnection;
5
+ exports.listConnections = listConnections;
6
+ exports.deleteConnection = deleteConnection;
7
+ exports.fetchLinkableRepositories = fetchLinkableRepositories;
8
+ exports.createRepository = createRepository;
9
+ exports.getRepository = getRepository;
10
+ exports.deleteRepository = deleteRepository;
11
+ exports.getDefaultServiceAccount = getDefaultServiceAccount;
12
+ exports.getDefaultServiceAgent = getDefaultServiceAgent;
4
13
  const apiv2_1 = require("../apiv2");
5
14
  const api_1 = require("../api");
6
15
  const PAGE_SIZE_MAX = 100;
@@ -13,13 +22,11 @@ async function createConnection(projectId, location, connectionId, githubConfig
13
22
  const res = await client.post(`projects/${projectId}/locations/${location}/connections`, { githubConfig }, { queryParams: { connectionId } });
14
23
  return res.body;
15
24
  }
16
- exports.createConnection = createConnection;
17
25
  async function getConnection(projectId, location, connectionId) {
18
26
  const name = `projects/${projectId}/locations/${location}/connections/${connectionId}`;
19
27
  const res = await client.get(name);
20
28
  return res.body;
21
29
  }
22
- exports.getConnection = getConnection;
23
30
  async function listConnections(projectId, location) {
24
31
  const conns = [];
25
32
  const getNextPage = async (pageToken = "") => {
@@ -39,13 +46,11 @@ async function listConnections(projectId, location) {
39
46
  await getNextPage();
40
47
  return conns;
41
48
  }
42
- exports.listConnections = listConnections;
43
49
  async function deleteConnection(projectId, location, connectionId) {
44
50
  const name = `projects/${projectId}/locations/${location}/connections/${connectionId}`;
45
51
  const res = await client.delete(name);
46
52
  return res.body;
47
53
  }
48
- exports.deleteConnection = deleteConnection;
49
54
  async function fetchLinkableRepositories(projectId, location, connectionId, pageToken = "", pageSize = 1000) {
50
55
  const name = `projects/${projectId}/locations/${location}/connections/${connectionId}:fetchLinkableRepositories`;
51
56
  const res = await client.get(name, {
@@ -56,29 +61,23 @@ async function fetchLinkableRepositories(projectId, location, connectionId, page
56
61
  });
57
62
  return res.body;
58
63
  }
59
- exports.fetchLinkableRepositories = fetchLinkableRepositories;
60
64
  async function createRepository(projectId, location, connectionId, repositoryId, remoteUri) {
61
65
  const res = await client.post(`projects/${projectId}/locations/${location}/connections/${connectionId}/repositories`, { remoteUri }, { queryParams: { repositoryId } });
62
66
  return res.body;
63
67
  }
64
- exports.createRepository = createRepository;
65
68
  async function getRepository(projectId, location, connectionId, repositoryId) {
66
69
  const name = `projects/${projectId}/locations/${location}/connections/${connectionId}/repositories/${repositoryId}`;
67
70
  const res = await client.get(name);
68
71
  return res.body;
69
72
  }
70
- exports.getRepository = getRepository;
71
73
  async function deleteRepository(projectId, location, connectionId, repositoryId) {
72
74
  const name = `projects/${projectId}/locations/${location}/connections/${connectionId}/repositories/${repositoryId}`;
73
75
  const res = await client.delete(name);
74
76
  return res.body;
75
77
  }
76
- exports.deleteRepository = deleteRepository;
77
78
  function getDefaultServiceAccount(projectNumber) {
78
79
  return `${projectNumber}@cloudbuild.gserviceaccount.com`;
79
80
  }
80
- exports.getDefaultServiceAccount = getDefaultServiceAccount;
81
81
  function getDefaultServiceAgent(projectNumber) {
82
82
  return `service-${projectNumber}@gcp-sa-cloudbuild.iam.gserviceaccount.com`;
83
83
  }
84
- exports.getDefaultServiceAgent = getDefaultServiceAgent;
@@ -1,6 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.functionFromEndpoint = exports.endpointFromFunction = exports.listAllFunctions = exports.deleteFunction = exports.updateFunction = exports.setInvokerUpdate = exports.setInvokerCreate = exports.getIamPolicy = exports.setIamPolicy = exports.createFunction = exports.generateUploadUrl = exports.captureRuntimeValidationError = exports.API_VERSION = void 0;
3
+ exports.API_VERSION = void 0;
4
+ exports.captureRuntimeValidationError = captureRuntimeValidationError;
5
+ exports.generateUploadUrl = generateUploadUrl;
6
+ exports.createFunction = createFunction;
7
+ exports.setIamPolicy = setIamPolicy;
8
+ exports.getIamPolicy = getIamPolicy;
9
+ exports.setInvokerCreate = setInvokerCreate;
10
+ exports.setInvokerUpdate = setInvokerUpdate;
11
+ exports.updateFunction = updateFunction;
12
+ exports.deleteFunction = deleteFunction;
13
+ exports.listAllFunctions = listAllFunctions;
14
+ exports.endpointFromFunction = endpointFromFunction;
15
+ exports.functionFromEndpoint = functionFromEndpoint;
4
16
  const clc = require("colorette");
5
17
  const error_1 = require("../error");
6
18
  const logger_1 = require("../logger");
@@ -23,14 +35,12 @@ function captureRuntimeValidationError(errMessage) {
23
35
  }
24
36
  return "invalid runtime detected, please see https://cloud.google.com/functions/docs/runtime-support for the latest supported runtimes";
25
37
  }
26
- exports.captureRuntimeValidationError = captureRuntimeValidationError;
27
38
  function functionsOpLogReject(funcName, type, err) {
28
- var _a, _b, _c, _d;
29
- if ((err === null || err === void 0 ? void 0 : err.message).includes("Runtime validation errors")) {
39
+ if ((err?.message).includes("Runtime validation errors")) {
30
40
  const capturedMessage = captureRuntimeValidationError(err.message);
31
41
  utils.logWarning(clc.bold(clc.yellow("functions:")) + " " + capturedMessage + " for function " + funcName);
32
42
  }
33
- if (((_b = (_a = err === null || err === void 0 ? void 0 : err.context) === null || _a === void 0 ? void 0 : _a.response) === null || _b === void 0 ? void 0 : _b.statusCode) === 429) {
43
+ if (err?.context?.response?.statusCode === 429) {
34
44
  utils.logWarning(`${clc.bold(clc.yellow("functions:"))} got "Quota Exceeded" error while trying to ${type} ${funcName}. Waiting to retry...`);
35
45
  }
36
46
  else {
@@ -38,7 +48,7 @@ function functionsOpLogReject(funcName, type, err) {
38
48
  }
39
49
  throw new error_1.FirebaseError(`Failed to ${type} function ${funcName}`, {
40
50
  original: err,
41
- status: (_d = (_c = err === null || err === void 0 ? void 0 : err.context) === null || _c === void 0 ? void 0 : _c.response) === null || _d === void 0 ? void 0 : _d.statusCode,
51
+ status: err?.context?.response?.statusCode,
42
52
  context: { function: funcName },
43
53
  });
44
54
  }
@@ -54,11 +64,13 @@ async function generateUploadUrl(projectId, location) {
54
64
  throw err;
55
65
  }
56
66
  }
57
- exports.generateUploadUrl = generateUploadUrl;
58
67
  async function createFunction(cloudFunction) {
59
68
  const apiPath = cloudFunction.name.substring(0, cloudFunction.name.lastIndexOf("/"));
60
69
  const endpoint = `/${apiPath}`;
61
- cloudFunction.buildEnvironmentVariables = Object.assign(Object.assign({}, cloudFunction.buildEnvironmentVariables), { GOOGLE_NODE_RUN_SCRIPTS: "" });
70
+ cloudFunction.buildEnvironmentVariables = {
71
+ ...cloudFunction.buildEnvironmentVariables,
72
+ GOOGLE_NODE_RUN_SCRIPTS: "",
73
+ };
62
74
  try {
63
75
  const res = await client.post(endpoint, cloudFunction);
64
76
  return {
@@ -71,9 +83,7 @@ async function createFunction(cloudFunction) {
71
83
  throw functionsOpLogReject(cloudFunction.name, "create", err);
72
84
  }
73
85
  }
74
- exports.createFunction = createFunction;
75
86
  async function setIamPolicy(options) {
76
- var _a, _b;
77
87
  const endpoint = `/${options.name}:setIamPolicy`;
78
88
  try {
79
89
  await client.post(endpoint, {
@@ -84,11 +94,10 @@ async function setIamPolicy(options) {
84
94
  catch (err) {
85
95
  throw new error_1.FirebaseError(`Failed to set the IAM Policy on the function ${options.name}`, {
86
96
  original: err,
87
- status: (_b = (_a = err === null || err === void 0 ? void 0 : err.context) === null || _a === void 0 ? void 0 : _a.response) === null || _b === void 0 ? void 0 : _b.statusCode,
97
+ status: err?.context?.response?.statusCode,
88
98
  });
89
99
  }
90
100
  }
91
- exports.setIamPolicy = setIamPolicy;
92
101
  async function getIamPolicy(fnName) {
93
102
  const endpoint = `/${fnName}:getIamPolicy`;
94
103
  try {
@@ -101,7 +110,6 @@ async function getIamPolicy(fnName) {
101
110
  });
102
111
  }
103
112
  }
104
- exports.getIamPolicy = getIamPolicy;
105
113
  async function setInvokerCreate(projectId, fnName, invoker) {
106
114
  if (invoker.length === 0) {
107
115
  throw new error_1.FirebaseError("Invoker cannot be an empty array");
@@ -116,16 +124,14 @@ async function setInvokerCreate(projectId, fnName, invoker) {
116
124
  };
117
125
  await setIamPolicy({ name: fnName, policy: policy });
118
126
  }
119
- exports.setInvokerCreate = setInvokerCreate;
120
127
  async function setInvokerUpdate(projectId, fnName, invoker) {
121
- var _a;
122
128
  if (invoker.length === 0) {
123
129
  throw new error_1.FirebaseError("Invoker cannot be an empty array");
124
130
  }
125
131
  const invokerMembers = proto.getInvokerMembers(invoker, projectId);
126
132
  const invokerRole = "roles/cloudfunctions.invoker";
127
133
  const currentPolicy = await getIamPolicy(fnName);
128
- const currentInvokerBinding = (_a = currentPolicy.bindings) === null || _a === void 0 ? void 0 : _a.find((binding) => binding.role === invokerRole);
134
+ const currentInvokerBinding = currentPolicy.bindings?.find((binding) => binding.role === invokerRole);
129
135
  if (currentInvokerBinding &&
130
136
  JSON.stringify(currentInvokerBinding.members.sort()) === JSON.stringify(invokerMembers.sort())) {
131
137
  return;
@@ -142,10 +148,12 @@ async function setInvokerUpdate(projectId, fnName, invoker) {
142
148
  };
143
149
  await setIamPolicy({ name: fnName, policy: policy });
144
150
  }
145
- exports.setInvokerUpdate = setInvokerUpdate;
146
151
  async function updateFunction(cloudFunction) {
147
152
  const endpoint = `/${cloudFunction.name}`;
148
- cloudFunction.buildEnvironmentVariables = Object.assign(Object.assign({}, cloudFunction.buildEnvironmentVariables), { GOOGLE_NODE_RUN_SCRIPTS: "" });
153
+ cloudFunction.buildEnvironmentVariables = {
154
+ ...cloudFunction.buildEnvironmentVariables,
155
+ GOOGLE_NODE_RUN_SCRIPTS: "",
156
+ };
149
157
  const fieldMasks = proto.fieldMasks(cloudFunction, "labels", "environmentVariables", "secretEnvironmentVariables", "buildEnvironmentVariables");
150
158
  try {
151
159
  const res = await client.patch(endpoint, cloudFunction, {
@@ -163,7 +171,6 @@ async function updateFunction(cloudFunction) {
163
171
  throw functionsOpLogReject(cloudFunction.name, "update", err);
164
172
  }
165
173
  }
166
- exports.updateFunction = updateFunction;
167
174
  async function deleteFunction(name) {
168
175
  const endpoint = `/${name}`;
169
176
  try {
@@ -178,7 +185,6 @@ async function deleteFunction(name) {
178
185
  throw functionsOpLogReject(name, "delete", err);
179
186
  }
180
187
  }
181
- exports.deleteFunction = deleteFunction;
182
188
  async function list(projectId, region) {
183
189
  const endpoint = "/projects/" + projectId + "/locations/" + region + "/functions";
184
190
  try {
@@ -193,7 +199,7 @@ async function list(projectId, region) {
193
199
  }
194
200
  catch (err) {
195
201
  logger_1.logger.debug(`[functions] failed to list functions for ${projectId}`);
196
- logger_1.logger.debug(`[functions] ${err === null || err === void 0 ? void 0 : err.message}`);
202
+ logger_1.logger.debug(`[functions] ${err?.message}`);
197
203
  throw new error_1.FirebaseError(`Failed to list functions for ${projectId}`, {
198
204
  original: err,
199
205
  status: err instanceof error_1.FirebaseError ? err.status : undefined,
@@ -203,30 +209,28 @@ async function list(projectId, region) {
203
209
  async function listAllFunctions(projectId) {
204
210
  return list(projectId, "-");
205
211
  }
206
- exports.listAllFunctions = listAllFunctions;
207
212
  function endpointFromFunction(gcfFunction) {
208
- var _a, _b, _c, _d, _e, _f, _g, _h;
209
213
  const [, project, , region, , id] = gcfFunction.name.split("/");
210
214
  let trigger;
211
215
  let uri;
212
216
  let securityLevel;
213
- if ((_a = gcfFunction.labels) === null || _a === void 0 ? void 0 : _a["deployment-scheduled"]) {
217
+ if (gcfFunction.labels?.["deployment-scheduled"]) {
214
218
  trigger = {
215
219
  scheduleTrigger: {},
216
220
  };
217
221
  }
218
- else if ((_b = gcfFunction.labels) === null || _b === void 0 ? void 0 : _b["deployment-taskqueue"]) {
222
+ else if (gcfFunction.labels?.["deployment-taskqueue"]) {
219
223
  trigger = {
220
224
  taskQueueTrigger: {},
221
225
  };
222
226
  }
223
- else if (((_c = gcfFunction.labels) === null || _c === void 0 ? void 0 : _c["deployment-callable"]) ||
224
- ((_d = gcfFunction.labels) === null || _d === void 0 ? void 0 : _d["deployment-callabled"])) {
227
+ else if (gcfFunction.labels?.["deployment-callable"] ||
228
+ gcfFunction.labels?.["deployment-callabled"]) {
225
229
  trigger = {
226
230
  callableTrigger: {},
227
231
  };
228
232
  }
229
- else if ((_e = gcfFunction.labels) === null || _e === void 0 ? void 0 : _e[constants_1.BLOCKING_LABEL]) {
233
+ else if (gcfFunction.labels?.[constants_1.BLOCKING_LABEL]) {
230
234
  trigger = {
231
235
  blockingTrigger: {
232
236
  eventType: constants_1.BLOCKING_LABEL_KEY_TO_EVENT[gcfFunction.labels[constants_1.BLOCKING_LABEL]],
@@ -241,7 +245,7 @@ function endpointFromFunction(gcfFunction) {
241
245
  eventTrigger: {
242
246
  eventType: gcfFunction.eventTrigger.eventType,
243
247
  eventFilters: { resource: gcfFunction.eventTrigger.resource },
244
- retry: !!((_f = gcfFunction.eventTrigger.failurePolicy) === null || _f === void 0 ? void 0 : _f.retry),
248
+ retry: !!gcfFunction.eventTrigger.failurePolicy?.retry,
245
249
  },
246
250
  };
247
251
  }
@@ -252,9 +256,15 @@ function endpointFromFunction(gcfFunction) {
252
256
  if (!supported.isRuntime(gcfFunction.runtime)) {
253
257
  logger_1.logger.debug("GCF 1st gen function has unsupported runtime:", JSON.stringify(gcfFunction, null, 2));
254
258
  }
255
- const endpoint = Object.assign(Object.assign({ platform: "gcfv1", id,
259
+ const endpoint = {
260
+ platform: "gcfv1",
261
+ id,
256
262
  project,
257
- region }, trigger), { entryPoint: gcfFunction.entryPoint, runtime: gcfFunction.runtime });
263
+ region,
264
+ ...trigger,
265
+ entryPoint: gcfFunction.entryPoint,
266
+ runtime: gcfFunction.runtime,
267
+ };
258
268
  if (uri) {
259
269
  endpoint.uri = uri;
260
270
  }
@@ -269,8 +279,8 @@ function endpointFromFunction(gcfFunction) {
269
279
  endpoint.vpc = { connector: gcfFunction.vpcConnector };
270
280
  proto.convertIfPresent(endpoint.vpc, gcfFunction, "egressSettings", "vpcConnectorEgressSettings", (raw) => raw);
271
281
  }
272
- endpoint.codebase = ((_g = gcfFunction.labels) === null || _g === void 0 ? void 0 : _g[constants_1.CODEBASE_LABEL]) || projectConfig.DEFAULT_CODEBASE;
273
- if ((_h = gcfFunction.labels) === null || _h === void 0 ? void 0 : _h[constants_1.HASH_LABEL]) {
282
+ endpoint.codebase = gcfFunction.labels?.[constants_1.CODEBASE_LABEL] || projectConfig.DEFAULT_CODEBASE;
283
+ if (gcfFunction.labels?.[constants_1.HASH_LABEL]) {
274
284
  endpoint.hash = gcfFunction.labels[constants_1.HASH_LABEL];
275
285
  }
276
286
  proto.convertIfPresent(endpoint, gcfFunction, "state", "status", (status) => {
@@ -290,9 +300,7 @@ function endpointFromFunction(gcfFunction) {
290
300
  });
291
301
  return endpoint;
292
302
  }
293
- exports.endpointFromFunction = endpointFromFunction;
294
303
  function functionFromEndpoint(endpoint, sourceUploadUrl) {
295
- var _a, _b;
296
304
  if (endpoint.platform !== "gcfv1") {
297
305
  throw new error_1.FirebaseError("Trying to create a v1 CloudFunction with v2 API. This should never happen");
298
306
  }
@@ -308,10 +316,10 @@ function functionFromEndpoint(endpoint, sourceUploadUrl) {
308
316
  dockerRegistry: "ARTIFACT_REGISTRY",
309
317
  };
310
318
  if (typeof endpoint.labels !== "undefined") {
311
- gcfFunction.labels = Object.assign({}, endpoint.labels);
319
+ gcfFunction.labels = { ...endpoint.labels };
312
320
  }
313
321
  if (backend.isEventTriggered(endpoint)) {
314
- if (!((_a = endpoint.eventTrigger.eventFilters) === null || _a === void 0 ? void 0 : _a.resource)) {
322
+ if (!endpoint.eventTrigger.eventFilters?.resource) {
315
323
  throw new error_1.FirebaseError("Cannot create v1 function from an eventTrigger without a resource");
316
324
  }
317
325
  gcfFunction.eventTrigger = {
@@ -328,20 +336,23 @@ function functionFromEndpoint(endpoint, sourceUploadUrl) {
328
336
  eventType: "google.pubsub.topic.publish",
329
337
  resource: `projects/${endpoint.project}/topics/${id}`,
330
338
  };
331
- gcfFunction.labels = Object.assign(Object.assign({}, gcfFunction.labels), { "deployment-scheduled": "true" });
339
+ gcfFunction.labels = { ...gcfFunction.labels, "deployment-scheduled": "true" };
332
340
  }
333
341
  else if (backend.isTaskQueueTriggered(endpoint)) {
334
342
  gcfFunction.httpsTrigger = {};
335
- gcfFunction.labels = Object.assign(Object.assign({}, gcfFunction.labels), { "deployment-taskqueue": "true" });
343
+ gcfFunction.labels = { ...gcfFunction.labels, "deployment-taskqueue": "true" };
336
344
  }
337
345
  else if (backend.isBlockingTriggered(endpoint)) {
338
346
  gcfFunction.httpsTrigger = {};
339
- gcfFunction.labels = Object.assign(Object.assign({}, gcfFunction.labels), { [constants_1.BLOCKING_LABEL]: constants_1.BLOCKING_EVENT_TO_LABEL_KEY[endpoint.blockingTrigger.eventType] });
347
+ gcfFunction.labels = {
348
+ ...gcfFunction.labels,
349
+ [constants_1.BLOCKING_LABEL]: constants_1.BLOCKING_EVENT_TO_LABEL_KEY[endpoint.blockingTrigger.eventType],
350
+ };
340
351
  }
341
352
  else {
342
353
  gcfFunction.httpsTrigger = {};
343
354
  if (backend.isCallableTriggered(endpoint)) {
344
- gcfFunction.labels = Object.assign(Object.assign({}, gcfFunction.labels), { "deployment-callable": "true" });
355
+ gcfFunction.labels = { ...gcfFunction.labels, "deployment-callable": "true" };
345
356
  }
346
357
  if (endpoint.securityLevel) {
347
358
  gcfFunction.httpsTrigger.securityLevel = endpoint.securityLevel;
@@ -361,14 +372,19 @@ function functionFromEndpoint(endpoint, sourceUploadUrl) {
361
372
  }
362
373
  const codebase = endpoint.codebase || projectConfig.DEFAULT_CODEBASE;
363
374
  if (codebase !== projectConfig.DEFAULT_CODEBASE) {
364
- gcfFunction.labels = Object.assign(Object.assign({}, gcfFunction.labels), { [constants_1.CODEBASE_LABEL]: codebase });
375
+ gcfFunction.labels = {
376
+ ...gcfFunction.labels,
377
+ [constants_1.CODEBASE_LABEL]: codebase,
378
+ };
365
379
  }
366
380
  else {
367
- (_b = gcfFunction.labels) === null || _b === void 0 ? true : delete _b[constants_1.CODEBASE_LABEL];
381
+ delete gcfFunction.labels?.[constants_1.CODEBASE_LABEL];
368
382
  }
369
383
  if (endpoint.hash) {
370
- gcfFunction.labels = Object.assign(Object.assign({}, gcfFunction.labels), { [constants_1.HASH_LABEL]: endpoint.hash });
384
+ gcfFunction.labels = {
385
+ ...gcfFunction.labels,
386
+ [constants_1.HASH_LABEL]: endpoint.hash,
387
+ };
371
388
  }
372
389
  return gcfFunction;
373
390
  }
374
- exports.functionFromEndpoint = functionFromEndpoint;