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,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createApp = void 0;
3
+ exports.createApp = createApp;
4
4
  const cors = require("cors");
5
5
  const express = require("express");
6
6
  const exegesisExpress = require("exegesis-express");
@@ -26,29 +26,40 @@ const SERVICE_ACCOUNT_TOKEN_PREFIX = "ya29.";
26
26
  function specForRouter() {
27
27
  const paths = {};
28
28
  Object.entries(apiSpec.paths).forEach(([path, pathObj]) => {
29
- var _a;
30
- const servers = (_a = pathObj.servers) !== null && _a !== void 0 ? _a : apiSpec.servers;
29
+ const servers = pathObj.servers ?? apiSpec.servers;
31
30
  if (!servers || !servers.length) {
32
31
  throw new Error("No servers defined in API spec.");
33
32
  }
34
33
  const pathWithNamespace = servers[0].url.replace("https://", "/") + path;
35
34
  paths[pathWithNamespace] = pathObj;
36
35
  });
37
- return Object.assign(Object.assign({}, apiSpec), { paths, servers: undefined, "x-exegesis-controller": "auth" });
36
+ return {
37
+ ...apiSpec,
38
+ paths,
39
+ servers: undefined,
40
+ "x-exegesis-controller": "auth",
41
+ };
38
42
  }
39
43
  function specWithEmulatorServer(protocol, host) {
40
44
  const paths = {};
41
45
  Object.entries(apiSpec.paths).forEach(([path, pathObj]) => {
42
46
  const servers = pathObj.servers;
43
47
  if (servers) {
44
- pathObj = Object.assign(Object.assign({}, pathObj), { servers: serversWithEmulators(servers) });
48
+ pathObj = {
49
+ ...pathObj,
50
+ servers: serversWithEmulators(servers),
51
+ };
45
52
  }
46
53
  paths[path] = pathObj;
47
54
  });
48
55
  if (!apiSpec.servers) {
49
56
  throw new Error("No servers defined in API spec.");
50
57
  }
51
- return Object.assign(Object.assign({}, apiSpec), { servers: serversWithEmulators(apiSpec.servers), paths });
58
+ return {
59
+ ...apiSpec,
60
+ servers: serversWithEmulators(apiSpec.servers),
61
+ paths,
62
+ };
52
63
  function serversWithEmulators(servers) {
53
64
  const result = [];
54
65
  for (const server of servers) {
@@ -217,7 +228,7 @@ async function createApp(defaultProjectId, singleProjectMode = index_1.SinglePro
217
228
  postController(ctx) {
218
229
  if (ctx.res.statusCode === 401) {
219
230
  const requirements = ctx.api.operationObject.security;
220
- if (requirements === null || requirements === void 0 ? void 0 : requirements.some((req) => req.apiKeyQuery || req.apiKeyHeader)) {
231
+ if (requirements?.some((req) => req.apiKeyQuery || req.apiKeyHeader)) {
221
232
  throw new errors_2.PermissionDeniedError("The request is missing a valid API key.");
222
233
  }
223
234
  else {
@@ -287,7 +298,6 @@ async function createApp(defaultProjectId, singleProjectMode = index_1.SinglePro
287
298
  return agentState.getTenantProject(tenantId);
288
299
  }
289
300
  }
290
- exports.createApp = createApp;
291
301
  function registerLegacyRoutes(app) {
292
302
  const relyingPartyPrefix = "/www.googleapis.com/identitytoolkit/v3/relyingparty/";
293
303
  const v1Prefix = "/identitytoolkit.googleapis.com/v1/";
@@ -372,30 +382,29 @@ function toExegesisController(ops, getProjectStateById) {
372
382
  }
373
383
  function toExegesisOperation(operation) {
374
384
  return (ctx) => {
375
- var _a, _b, _c, _d, _e, _f, _g, _h;
376
- let targetProjectId = ctx.params.path.targetProjectId || ((_a = ctx.requestBody) === null || _a === void 0 ? void 0 : _a.targetProjectId);
385
+ let targetProjectId = ctx.params.path.targetProjectId || ctx.requestBody?.targetProjectId;
377
386
  if (targetProjectId) {
378
- if ((_b = ctx.api.operationObject.security) === null || _b === void 0 ? void 0 : _b.some((sec) => sec.Oauth2)) {
379
- (0, errors_2.assert)((_c = ctx.security) === null || _c === void 0 ? void 0 : _c.Oauth2, "INSUFFICIENT_PERMISSION : Only authenticated requests can specify target_project_id.");
387
+ if (ctx.api.operationObject.security?.some((sec) => sec.Oauth2)) {
388
+ (0, errors_2.assert)(ctx.security?.Oauth2, "INSUFFICIENT_PERMISSION : Only authenticated requests can specify target_project_id.");
380
389
  }
381
390
  }
382
391
  else {
383
392
  targetProjectId = ctx.user;
384
393
  }
385
394
  let targetTenantId = undefined;
386
- if (ctx.params.path.tenantId && ((_d = ctx.requestBody) === null || _d === void 0 ? void 0 : _d.tenantId)) {
395
+ if (ctx.params.path.tenantId && ctx.requestBody?.tenantId) {
387
396
  (0, errors_2.assert)(ctx.params.path.tenantId === ctx.requestBody.tenantId, "TENANT_ID_MISMATCH");
388
397
  }
389
- targetTenantId = ctx.params.path.tenantId || ((_e = ctx.requestBody) === null || _e === void 0 ? void 0 : _e.tenantId);
390
- if ((_f = ctx.requestBody) === null || _f === void 0 ? void 0 : _f.idToken) {
391
- const idToken = (_g = ctx.requestBody) === null || _g === void 0 ? void 0 : _g.idToken;
398
+ targetTenantId = ctx.params.path.tenantId || ctx.requestBody?.tenantId;
399
+ if (ctx.requestBody?.idToken) {
400
+ const idToken = ctx.requestBody?.idToken;
392
401
  const decoded = (0, jsonwebtoken_1.decode)(idToken, { complete: true });
393
- if ((decoded === null || decoded === void 0 ? void 0 : decoded.payload.firebase.tenant) && targetTenantId) {
394
- (0, errors_2.assert)((decoded === null || decoded === void 0 ? void 0 : decoded.payload.firebase.tenant) === targetTenantId, "TENANT_ID_MISMATCH");
402
+ if (decoded?.payload.firebase.tenant && targetTenantId) {
403
+ (0, errors_2.assert)(decoded?.payload.firebase.tenant === targetTenantId, "TENANT_ID_MISMATCH");
395
404
  }
396
- targetTenantId = targetTenantId || (decoded === null || decoded === void 0 ? void 0 : decoded.payload.firebase.tenant);
405
+ targetTenantId = targetTenantId || decoded?.payload.firebase.tenant;
397
406
  }
398
- if ((_h = ctx.requestBody) === null || _h === void 0 ? void 0 : _h.refreshToken) {
407
+ if (ctx.requestBody?.refreshToken) {
399
408
  const refreshTokenRecord = (0, state_1.decodeRefreshToken)(ctx.requestBody.refreshToken);
400
409
  if (refreshTokenRecord.tenantId && targetTenantId) {
401
410
  (0, errors_2.assert)(refreshTokenRecord.tenantId === targetTenantId, "TENANT_ID_MISMATCH: ((Refresh token tenant ID does not match target tenant ID.))");
@@ -417,7 +426,6 @@ function wrapValidateBody(pluginContext) {
417
426
  }
418
427
  }
419
428
  function validateAndFixRestMappingRequestBody(validate, body) {
420
- var _a;
421
429
  body = convertKeysToCamelCase(body);
422
430
  let result;
423
431
  let keepFixing = false;
@@ -428,7 +436,7 @@ function validateAndFixRestMappingRequestBody(validate, body) {
428
436
  return result;
429
437
  keepFixing = false;
430
438
  for (const error of result.errors) {
431
- const path = (_a = error.location) === null || _a === void 0 ? void 0 : _a.path;
439
+ const path = error.location?.path;
432
440
  const ajvError = error.ajvError;
433
441
  if (!path || fixedPaths.has(path) || !ajvError) {
434
442
  continue;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.decodeRefreshToken = exports.encodeRefreshToken = exports.BlockingFunctionEvents = exports.TenantProjectState = exports.AgentProjectState = exports.ProjectState = exports.SIGNIN_METHOD_EMAIL_LINK = exports.PROVIDER_GAME_CENTER = exports.PROVIDER_CUSTOM = exports.PROVIDER_ANONYMOUS = exports.PROVIDER_PHONE = exports.PROVIDER_PASSWORD = void 0;
3
+ exports.BlockingFunctionEvents = exports.TenantProjectState = exports.AgentProjectState = exports.ProjectState = exports.SIGNIN_METHOD_EMAIL_LINK = exports.PROVIDER_GAME_CENTER = exports.PROVIDER_CUSTOM = exports.PROVIDER_ANONYMOUS = exports.PROVIDER_PHONE = exports.PROVIDER_PASSWORD = void 0;
4
+ exports.encodeRefreshToken = encodeRefreshToken;
5
+ exports.decodeRefreshToken = decodeRefreshToken;
4
6
  const utils_1 = require("./utils");
5
7
  const cloudFunctions_1 = require("./cloudFunctions");
6
8
  const errors_1 = require("./errors");
@@ -73,9 +75,8 @@ class ProjectState {
73
75
  this.authCloudFunction.dispatch("delete", user);
74
76
  }
75
77
  updateUserByLocalId(localId, fields, options = {}) {
76
- var _a, _b;
77
- const upsertProviders = (_a = options.upsertProviders) !== null && _a !== void 0 ? _a : [];
78
- const deleteProviders = (_b = options.deleteProviders) !== null && _b !== void 0 ? _b : [];
78
+ const upsertProviders = options.upsertProviders ?? [];
79
+ const deleteProviders = options.deleteProviders ?? [];
79
80
  const user = this.users.get(localId);
80
81
  if (!user) {
81
82
  throw new Error(`Internal assertion error: trying to update nonexistent user: ${localId}`);
@@ -140,13 +141,12 @@ class ProjectState {
140
141
  return enrollments;
141
142
  }
142
143
  updateUserProviderInfo(user, upsertProviders, deleteProviders) {
143
- var _a, _b;
144
144
  const oldProviderEmails = getProviderEmailsForUser(user);
145
145
  if (user.providerUserInfo) {
146
146
  const updatedProviderUserInfo = [];
147
147
  for (const info of user.providerUserInfo) {
148
148
  if (deleteProviders.includes(info.providerId)) {
149
- (_a = this.userIdForProviderRawId.get(info.providerId)) === null || _a === void 0 ? void 0 : _a.delete(info.rawId);
149
+ this.userIdForProviderRawId.get(info.providerId)?.delete(info.rawId);
150
150
  }
151
151
  else {
152
152
  updatedProviderUserInfo.push(info);
@@ -155,7 +155,7 @@ class ProjectState {
155
155
  user.providerUserInfo = updatedProviderUserInfo;
156
156
  }
157
157
  if (upsertProviders.length) {
158
- user.providerUserInfo = (_b = user.providerUserInfo) !== null && _b !== void 0 ? _b : [];
158
+ user.providerUserInfo = user.providerUserInfo ?? [];
159
159
  for (const upsert of upsertProviders) {
160
160
  const providerId = upsert.providerId;
161
161
  let users = this.userIdForProviderRawId.get(providerId);
@@ -209,7 +209,6 @@ class ProjectState {
209
209
  return userInfo;
210
210
  }
211
211
  getUsersByEmailOrProviderEmail(email) {
212
- var _a;
213
212
  const users = [];
214
213
  const seenLocalIds = new Set();
215
214
  const localId = this.localIdForEmail.get(email);
@@ -217,7 +216,7 @@ class ProjectState {
217
216
  users.push(this.getUserByLocalIdAssertingExists(localId));
218
217
  seenLocalIds.add(localId);
219
218
  }
220
- for (const localId of (_a = this.localIdsForProviderEmail.get(email)) !== null && _a !== void 0 ? _a : []) {
219
+ for (const localId of this.localIdsForProviderEmail.get(email) ?? []) {
221
220
  if (!seenLocalIds.has(localId)) {
222
221
  users.push(this.getUserByLocalIdAssertingExists(localId));
223
222
  seenLocalIds.add(localId);
@@ -243,15 +242,13 @@ class ProjectState {
243
242
  }
244
243
  }
245
244
  getUserByProviderRawId(provider, rawId) {
246
- var _a;
247
- const localId = (_a = this.userIdForProviderRawId.get(provider)) === null || _a === void 0 ? void 0 : _a.get(rawId);
245
+ const localId = this.userIdForProviderRawId.get(provider)?.get(rawId);
248
246
  if (!localId) {
249
247
  return undefined;
250
248
  }
251
249
  return this.getUserByLocalIdAssertingExists(localId);
252
250
  }
253
251
  listProviderInfosByProviderId(provider) {
254
- var _a;
255
252
  const users = this.userIdForProviderRawId.get(provider);
256
253
  if (!users) {
257
254
  return [];
@@ -259,7 +256,7 @@ class ProjectState {
259
256
  const infos = [];
260
257
  for (const localId of users.values()) {
261
258
  const user = this.getUserByLocalIdAssertingExists(localId);
262
- const info = (_a = user.providerUserInfo) === null || _a === void 0 ? void 0 : _a.find((info) => info.providerId === provider);
259
+ const info = user.providerUserInfo?.find((info) => info.providerId === provider);
263
260
  if (!info) {
264
261
  throw new Error(`Internal assertion error: User ${localId} does not have providerInfo ${provider}.`);
265
262
  }
@@ -388,7 +385,6 @@ class ProjectState {
388
385
  return record;
389
386
  }
390
387
  removeUserFromIndex(user) {
391
- var _a, _b;
392
388
  if (user.email) {
393
389
  this.localIdForEmail.delete(user.email);
394
390
  }
@@ -398,8 +394,8 @@ class ProjectState {
398
394
  if (user.phoneNumber) {
399
395
  this.localIdForPhoneNumber.delete(user.phoneNumber);
400
396
  }
401
- for (const info of (_a = user.providerUserInfo) !== null && _a !== void 0 ? _a : []) {
402
- (_b = this.userIdForProviderRawId.get(info.providerId)) === null || _b === void 0 ? void 0 : _b.delete(info.rawId);
397
+ for (const info of user.providerUserInfo ?? []) {
398
+ this.userIdForProviderRawId.get(info.providerId)?.delete(info.rawId);
403
399
  if (info.email) {
404
400
  this.removeProviderEmailForUser(info.email, user.localId);
405
401
  }
@@ -460,14 +456,13 @@ class AgentProjectState extends ProjectState {
460
456
  this._config.blockingFunctions = blockingFunctions;
461
457
  }
462
458
  shouldForwardCredentialToBlockingFunction(type) {
463
- var _a, _b, _c, _d, _e, _f;
464
459
  switch (type) {
465
460
  case "accessToken":
466
- return (_b = (_a = this._config.blockingFunctions.forwardInboundCredentials) === null || _a === void 0 ? void 0 : _a.accessToken) !== null && _b !== void 0 ? _b : false;
461
+ return this._config.blockingFunctions.forwardInboundCredentials?.accessToken ?? false;
467
462
  case "idToken":
468
- return (_d = (_c = this._config.blockingFunctions.forwardInboundCredentials) === null || _c === void 0 ? void 0 : _c.idToken) !== null && _d !== void 0 ? _d : false;
463
+ return this._config.blockingFunctions.forwardInboundCredentials?.idToken ?? false;
469
464
  case "refreshToken":
470
- return (_f = (_e = this._config.blockingFunctions.forwardInboundCredentials) === null || _e === void 0 ? void 0 : _e.refreshToken) !== null && _f !== void 0 ? _f : false;
465
+ return this._config.blockingFunctions.forwardInboundCredentials?.refreshToken ?? false;
471
466
  }
472
467
  }
473
468
  getBlockingFunctionUri(event) {
@@ -480,12 +475,11 @@ class AgentProjectState extends ProjectState {
480
475
  return undefined;
481
476
  }
482
477
  updateConfig(update, updateMask) {
483
- var _a, _b, _c, _d, _e;
484
478
  if (!updateMask) {
485
- this.oneAccountPerEmail = (_b = !((_a = update.signIn) === null || _a === void 0 ? void 0 : _a.allowDuplicateEmails)) !== null && _b !== void 0 ? _b : true;
486
- this.blockingFunctionsConfig = (_c = update.blockingFunctions) !== null && _c !== void 0 ? _c : {};
479
+ this.oneAccountPerEmail = !update.signIn?.allowDuplicateEmails;
480
+ this.blockingFunctionsConfig = update.blockingFunctions ?? {};
487
481
  this.enableImprovedEmailPrivacy =
488
- (_e = (_d = update.emailPrivacyConfig) === null || _d === void 0 ? void 0 : _d.enableImprovedEmailPrivacy) !== null && _e !== void 0 ? _e : false;
482
+ update.emailPrivacyConfig?.enableImprovedEmailPrivacy ?? false;
489
483
  return this.config;
490
484
  }
491
485
  return applyMask(updateMask, this.config, update);
@@ -592,9 +586,8 @@ class TenantProjectState extends ProjectState {
592
586
  this.parentProject.deleteTenant(this.tenantId);
593
587
  }
594
588
  updateTenant(update, updateMask) {
595
- var _a, _b, _c, _d, _e;
596
589
  if (!updateMask) {
597
- const mfaConfig = (_a = update.mfaConfig) !== null && _a !== void 0 ? _a : {};
590
+ const mfaConfig = update.mfaConfig ?? {};
598
591
  if (!("state" in mfaConfig)) {
599
592
  mfaConfig.state = "DISABLED";
600
593
  }
@@ -604,11 +597,11 @@ class TenantProjectState extends ProjectState {
604
597
  this._tenantConfig = {
605
598
  tenantId: this.tenantId,
606
599
  name: this.tenantConfig.name,
607
- allowPasswordSignup: (_b = update.allowPasswordSignup) !== null && _b !== void 0 ? _b : false,
608
- disableAuth: (_c = update.disableAuth) !== null && _c !== void 0 ? _c : false,
600
+ allowPasswordSignup: update.allowPasswordSignup ?? false,
601
+ disableAuth: update.disableAuth ?? false,
609
602
  mfaConfig: mfaConfig,
610
- enableAnonymousUser: (_d = update.enableAnonymousUser) !== null && _d !== void 0 ? _d : false,
611
- enableEmailLinkSignin: (_e = update.enableEmailLinkSignin) !== null && _e !== void 0 ? _e : false,
603
+ enableAnonymousUser: update.enableAnonymousUser ?? false,
604
+ enableEmailLinkSignin: update.enableEmailLinkSignin ?? false,
612
605
  displayName: update.displayName,
613
606
  };
614
607
  return this.tenantConfig;
@@ -621,28 +614,25 @@ var BlockingFunctionEvents;
621
614
  (function (BlockingFunctionEvents) {
622
615
  BlockingFunctionEvents["BEFORE_CREATE"] = "beforeCreate";
623
616
  BlockingFunctionEvents["BEFORE_SIGN_IN"] = "beforeSignIn";
624
- })(BlockingFunctionEvents = exports.BlockingFunctionEvents || (exports.BlockingFunctionEvents = {}));
617
+ })(BlockingFunctionEvents || (exports.BlockingFunctionEvents = BlockingFunctionEvents = {}));
625
618
  function encodeRefreshToken(refreshTokenRecord) {
626
619
  return Buffer.from(JSON.stringify(refreshTokenRecord), "utf8").toString("base64");
627
620
  }
628
- exports.encodeRefreshToken = encodeRefreshToken;
629
621
  function decodeRefreshToken(refreshTokenString) {
630
622
  let refreshTokenRecord;
631
623
  try {
632
624
  const json = Buffer.from(refreshTokenString, "base64").toString("utf8");
633
625
  refreshTokenRecord = JSON.parse(json);
634
626
  }
635
- catch (_a) {
627
+ catch {
636
628
  throw new errors_1.BadRequestError("INVALID_REFRESH_TOKEN");
637
629
  }
638
630
  (0, errors_1.assert)(refreshTokenRecord._AuthEmulatorRefreshToken, "INVALID_REFRESH_TOKEN");
639
631
  return refreshTokenRecord;
640
632
  }
641
- exports.decodeRefreshToken = decodeRefreshToken;
642
633
  function getProviderEmailsForUser(user) {
643
- var _a;
644
634
  const emails = new Set();
645
- (_a = user.providerUserInfo) === null || _a === void 0 ? void 0 : _a.forEach(({ email }) => {
635
+ user.providerUserInfo?.forEach(({ email }) => {
646
636
  if (email) {
647
637
  emails.add(email);
648
638
  }
@@ -1,6 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mirrorFieldTo = exports.authEmulatorUrl = exports.logError = exports.toUnixTimestamp = exports.randomDigits = exports.randomBase64UrlStr = exports.randomId = exports.parseAbsoluteUri = exports.canonicalizeEmailAddress = exports.isValidPhoneNumber = exports.isValidEmailAddress = void 0;
3
+ exports.isValidEmailAddress = isValidEmailAddress;
4
+ exports.isValidPhoneNumber = isValidPhoneNumber;
5
+ exports.canonicalizeEmailAddress = canonicalizeEmailAddress;
6
+ exports.parseAbsoluteUri = parseAbsoluteUri;
7
+ exports.randomId = randomId;
8
+ exports.randomBase64UrlStr = randomBase64UrlStr;
9
+ exports.randomDigits = randomDigits;
10
+ exports.toUnixTimestamp = toUnixTimestamp;
11
+ exports.logError = logError;
12
+ exports.authEmulatorUrl = authEmulatorUrl;
13
+ exports.mirrorFieldTo = mirrorFieldTo;
4
14
  const url_1 = require("url");
5
15
  const registry_1 = require("../registry");
6
16
  const types_1 = require("../types");
@@ -8,24 +18,20 @@ const emulatorLogger_1 = require("../emulatorLogger");
8
18
  function isValidEmailAddress(email) {
9
19
  return /^[^@]+@[^@]+$/.test(email);
10
20
  }
11
- exports.isValidEmailAddress = isValidEmailAddress;
12
21
  function isValidPhoneNumber(phoneNumber) {
13
22
  return /^\+/.test(phoneNumber);
14
23
  }
15
- exports.isValidPhoneNumber = isValidPhoneNumber;
16
24
  function canonicalizeEmailAddress(email) {
17
25
  return email.toLowerCase();
18
26
  }
19
- exports.canonicalizeEmailAddress = canonicalizeEmailAddress;
20
27
  function parseAbsoluteUri(uri) {
21
28
  try {
22
29
  return new url_1.URL(uri);
23
30
  }
24
- catch (_a) {
31
+ catch {
25
32
  return undefined;
26
33
  }
27
34
  }
28
- exports.parseAbsoluteUri = parseAbsoluteUri;
29
35
  function randomId(len) {
30
36
  const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
31
37
  let autoId = "";
@@ -34,7 +40,6 @@ function randomId(len) {
34
40
  }
35
41
  return autoId;
36
42
  }
37
- exports.randomId = randomId;
38
43
  function randomBase64UrlStr(len) {
39
44
  const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";
40
45
  let autoId = "";
@@ -43,7 +48,6 @@ function randomBase64UrlStr(len) {
43
48
  }
44
49
  return autoId;
45
50
  }
46
- exports.randomBase64UrlStr = randomBase64UrlStr;
47
51
  function randomDigits(len) {
48
52
  let digits = "";
49
53
  for (let i = 0; i < len; i++) {
@@ -51,18 +55,15 @@ function randomDigits(len) {
51
55
  }
52
56
  return digits;
53
57
  }
54
- exports.randomDigits = randomDigits;
55
58
  function toUnixTimestamp(date) {
56
59
  return Math.floor(date.getTime() / 1000);
57
60
  }
58
- exports.toUnixTimestamp = toUnixTimestamp;
59
61
  function logError(err) {
60
62
  if (!registry_1.EmulatorRegistry.isRunning(types_1.Emulators.AUTH)) {
61
63
  console.error(err);
62
64
  }
63
65
  emulatorLogger_1.EmulatorLogger.forEmulator(types_1.Emulators.AUTH).log("WARN", err.stack || err.message || err.constructor.name);
64
66
  }
65
- exports.logError = logError;
66
67
  function authEmulatorUrl(req) {
67
68
  if (registry_1.EmulatorRegistry.isRunning(types_1.Emulators.AUTH)) {
68
69
  return registry_1.EmulatorRegistry.url(types_1.Emulators.AUTH);
@@ -71,7 +72,6 @@ function authEmulatorUrl(req) {
71
72
  return registry_1.EmulatorRegistry.url(types_1.Emulators.AUTH, req);
72
73
  }
73
74
  }
74
- exports.authEmulatorUrl = authEmulatorUrl;
75
75
  function mirrorFieldTo(dest, field, source) {
76
76
  const value = source[field];
77
77
  if (value === undefined) {
@@ -81,4 +81,3 @@ function mirrorFieldTo(dest, field, source) {
81
81
  dest[field] = value;
82
82
  }
83
83
  }
84
- exports.mirrorFieldTo = mirrorFieldTo;
@@ -1,6 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JAVA_DEPRECATION_WARNING = exports.MIN_SUPPORTED_JAVA_MAJOR_VERSION = exports.checkJavaMajorVersion = exports.emulatorExec = exports.getListenOverview = exports.shutdownWhenKilled = exports.setExportOnExitOptions = exports.parseInspectionPort = exports.beforeEmulatorCommand = exports.errorMissingProject = exports.warnEmulatorNotSupported = exports.printNoticeIfEmulated = exports.DEFAULT_CONFIG = exports.DESC_TEST_PARAMS = exports.FLAG_TEST_PARAMS = exports.DESC_TEST_CONFIG = exports.FLAG_TEST_CONFIG = exports.DESC_UI = exports.FLAG_UI = exports.DESC_VERBOSITY = exports.FLAG_VERBOSITY = exports.FLAG_VERBOSITY_NAME = exports.EXPORT_ON_EXIT_CWD_DANGER = exports.EXPORT_ON_EXIT_USAGE_ERROR = exports.DESC_EXPORT_ON_EXIT = exports.FLAG_EXPORT_ON_EXIT = exports.FLAG_EXPORT_ON_EXIT_NAME = exports.DESC_IMPORT = exports.FLAG_IMPORT = exports.DESC_INSPECT_FUNCTIONS = exports.FLAG_INSPECT_FUNCTIONS = exports.DESC_ONLY = exports.FLAG_ONLY = void 0;
3
+ exports.JAVA_DEPRECATION_WARNING = exports.MIN_SUPPORTED_JAVA_MAJOR_VERSION = exports.DEFAULT_CONFIG = exports.DESC_TEST_PARAMS = exports.FLAG_TEST_PARAMS = exports.DESC_TEST_CONFIG = exports.FLAG_TEST_CONFIG = exports.DESC_UI = exports.FLAG_UI = exports.DESC_VERBOSITY = exports.FLAG_VERBOSITY = exports.FLAG_VERBOSITY_NAME = exports.EXPORT_ON_EXIT_CWD_DANGER = exports.EXPORT_ON_EXIT_USAGE_ERROR = exports.DESC_EXPORT_ON_EXIT = exports.FLAG_EXPORT_ON_EXIT = exports.FLAG_EXPORT_ON_EXIT_NAME = exports.DESC_IMPORT = exports.FLAG_IMPORT = exports.DESC_INSPECT_FUNCTIONS = exports.FLAG_INSPECT_FUNCTIONS = exports.DESC_ONLY = exports.FLAG_ONLY = void 0;
4
+ exports.printNoticeIfEmulated = printNoticeIfEmulated;
5
+ exports.warnEmulatorNotSupported = warnEmulatorNotSupported;
6
+ exports.errorMissingProject = errorMissingProject;
7
+ exports.beforeEmulatorCommand = beforeEmulatorCommand;
8
+ exports.parseInspectionPort = parseInspectionPort;
9
+ exports.setExportOnExitOptions = setExportOnExitOptions;
10
+ exports.shutdownWhenKilled = shutdownWhenKilled;
11
+ exports.getListenOverview = getListenOverview;
12
+ exports.emulatorExec = emulatorExec;
13
+ exports.checkJavaMajorVersion = checkJavaMajorVersion;
4
14
  const clc = require("colorette");
5
15
  const childProcess = require("child_process");
6
16
  const controller = require("../emulator/controller");
@@ -68,7 +78,6 @@ function printNoticeIfEmulated(options, emulator) {
68
78
  utils.logBullet(`You have set ${clc.bold(`${envKey}=${envVal}`)}, this command will execute against the ${emuName} running at that address.`);
69
79
  }
70
80
  }
71
- exports.printNoticeIfEmulated = printNoticeIfEmulated;
72
81
  async function warnEmulatorNotSupported(options, emulator) {
73
82
  if (emulator !== types_1.Emulators.DATABASE && emulator !== types_1.Emulators.FIRESTORE) {
74
83
  return;
@@ -85,15 +94,16 @@ async function warnEmulatorNotSupported(options, emulator) {
85
94
  }
86
95
  }
87
96
  }
88
- exports.warnEmulatorNotSupported = warnEmulatorNotSupported;
89
97
  async function errorMissingProject(options) {
90
98
  if (!options.project) {
91
99
  throw new error_1.FirebaseError("Project is not defined. Either use `--project` or use `firebase use` to set your active project.");
92
100
  }
93
101
  }
94
- exports.errorMissingProject = errorMissingProject;
95
102
  async function beforeEmulatorCommand(options) {
96
- const optionsWithDefaultConfig = Object.assign(Object.assign({}, options), { config: exports.DEFAULT_CONFIG });
103
+ const optionsWithDefaultConfig = {
104
+ ...options,
105
+ config: exports.DEFAULT_CONFIG,
106
+ };
97
107
  const optionsWithConfig = options.config ? options : optionsWithDefaultConfig;
98
108
  const canStartWithoutConfig = options.only &&
99
109
  !controller.shouldStart(optionsWithConfig, types_1.Emulators.FUNCTIONS) &&
@@ -116,7 +126,6 @@ async function beforeEmulatorCommand(options) {
116
126
  await (0, requireConfig_1.requireConfig)(options);
117
127
  }
118
128
  }
119
- exports.beforeEmulatorCommand = beforeEmulatorCommand;
120
129
  function parseInspectionPort(options) {
121
130
  const port = options.inspectFunctions;
122
131
  if (typeof port === "undefined") {
@@ -131,7 +140,6 @@ function parseInspectionPort(options) {
131
140
  }
132
141
  return parsed;
133
142
  }
134
- exports.parseInspectionPort = parseInspectionPort;
135
143
  function setExportOnExitOptions(options) {
136
144
  if (options.exportOnExit || typeof options.exportOnExit === "string") {
137
145
  if (options.import) {
@@ -152,12 +160,10 @@ function setExportOnExitOptions(options) {
152
160
  }
153
161
  return;
154
162
  }
155
- exports.setExportOnExitOptions = setExportOnExitOptions;
156
163
  function processKillSignal(signal, res, rej, options) {
157
164
  let lastSignal = new Date().getTime();
158
165
  let signalCount = 0;
159
166
  return async () => {
160
- var _a;
161
167
  try {
162
168
  const now = new Date().getTime();
163
169
  const diff = now - lastSignal;
@@ -191,7 +197,7 @@ function processKillSignal(signal, res, rej, options) {
191
197
  pids.push(emulatorInfo.pid);
192
198
  emulatorsTable.push([
193
199
  constants_1.Constants.description(emulatorInfo.name),
194
- (_a = getListenOverview(emulatorInfo.name)) !== null && _a !== void 0 ? _a : "unknown",
200
+ getListenOverview(emulatorInfo.name) ?? "unknown",
195
201
  emulatorInfo.pid,
196
202
  ]);
197
203
  }
@@ -222,10 +228,9 @@ function shutdownWhenKilled(options) {
222
228
  throw e;
223
229
  });
224
230
  }
225
- exports.shutdownWhenKilled = shutdownWhenKilled;
226
231
  async function runScript(script, extraEnv) {
227
232
  utils.logBullet(`Running script: ${clc.bold(script)}`);
228
- const env = Object.assign(Object.assign({}, process.env), extraEnv);
233
+ const env = { ...process.env, ...extraEnv };
229
234
  if (env.GCLOUD_PROJECT && !env.FIREBASE_CONFIG) {
230
235
  env.FIREBASE_CONFIG = JSON.stringify({
231
236
  projectId: env.GCLOUD_PROJECT,
@@ -268,8 +273,7 @@ async function runScript(script, extraEnv) {
268
273
  });
269
274
  }
270
275
  function getListenOverview(emulator) {
271
- var _a;
272
- const info = (_a = registry_1.EmulatorRegistry.get(emulator)) === null || _a === void 0 ? void 0 : _a.getInfo();
276
+ const info = registry_1.EmulatorRegistry.get(emulator)?.getInfo();
273
277
  if (!info) {
274
278
  return undefined;
275
279
  }
@@ -280,7 +284,6 @@ function getListenOverview(emulator) {
280
284
  return `${info.host}:${info.port}`;
281
285
  }
282
286
  }
283
- exports.getListenOverview = getListenOverview;
284
287
  async function emulatorExec(script, options) {
285
288
  const projectId = (0, projectUtils_1.getProjectId)(options);
286
289
  const extraEnv = {};
@@ -316,12 +319,10 @@ async function emulatorExec(script, options) {
316
319
  });
317
320
  }
318
321
  }
319
- exports.emulatorExec = emulatorExec;
320
322
  const JAVA_VERSION_REGEX = /version "([1-9][0-9]*)/;
321
323
  const JAVA_HINT = "Please make sure Java is installed and on your system PATH.";
322
324
  async function checkJavaMajorVersion() {
323
325
  return new Promise((resolve, reject) => {
324
- var _a, _b;
325
326
  let child;
326
327
  try {
327
328
  child = childProcess.spawn("java", ["-Duser.language=en", "-Dfile.encoding=UTF-8", "-version"], {
@@ -333,12 +334,12 @@ async function checkJavaMajorVersion() {
333
334
  }
334
335
  let output = "";
335
336
  let error = "";
336
- (_a = child.stdout) === null || _a === void 0 ? void 0 : _a.on("data", (data) => {
337
+ child.stdout?.on("data", (data) => {
337
338
  const str = data.toString("utf8");
338
339
  logger_1.logger.debug(str);
339
340
  output += str;
340
341
  });
341
- (_b = child.stderr) === null || _b === void 0 ? void 0 : _b.on("data", (data) => {
342
+ child.stderr?.on("data", (data) => {
342
343
  const str = data.toString("utf8");
343
344
  logger_1.logger.debug(str);
344
345
  error += str;
@@ -383,7 +384,6 @@ async function checkJavaMajorVersion() {
383
384
  return versionInt;
384
385
  });
385
386
  }
386
- exports.checkJavaMajorVersion = checkJavaMajorVersion;
387
387
  exports.MIN_SUPPORTED_JAVA_MAJOR_VERSION = 21;
388
388
  exports.JAVA_DEPRECATION_WARNING = "firebase-tools no longer supports Java version before 21. " +
389
389
  "Please install a JDK at version 21 or above to get a compatible runtime.";