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,14 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.compose = void 0;
3
+ exports.compose = compose;
4
4
  const driver_1 = require("./driver");
5
5
  const discover_1 = require("./discover");
6
6
  async function compose(mode, fs, allFrameworkSpecs) {
7
- var _a, _b, _c, _d;
8
7
  let bundle = { version: "v1alpha" };
9
8
  const spec = await (0, discover_1.discover)(fs, allFrameworkSpecs);
10
9
  const driver = (0, driver_1.getDriver)(mode, spec);
11
- if ((_a = spec.detectedCommands) === null || _a === void 0 ? void 0 : _a.run) {
10
+ if (spec.detectedCommands?.run) {
12
11
  bundle.server = {
13
12
  start: {
14
13
  cmd: spec.detectedCommands.run.cmd.split(" "),
@@ -16,16 +15,15 @@ async function compose(mode, fs, allFrameworkSpecs) {
16
15
  };
17
16
  }
18
17
  driver.install();
19
- if ((_b = spec.frameworkHooks) === null || _b === void 0 ? void 0 : _b.afterInstall) {
18
+ if (spec.frameworkHooks?.afterInstall) {
20
19
  bundle = driver.execHook(bundle, spec.frameworkHooks.afterInstall);
21
20
  }
22
21
  driver.build();
23
- if ((_c = spec.frameworkHooks) === null || _c === void 0 ? void 0 : _c.afterBuild) {
24
- bundle = driver.execHook(bundle, (_d = spec.frameworkHooks) === null || _d === void 0 ? void 0 : _d.afterBuild);
22
+ if (spec.frameworkHooks?.afterBuild) {
23
+ bundle = driver.execHook(bundle, spec.frameworkHooks?.afterBuild);
25
24
  }
26
25
  if (bundle.server) {
27
26
  driver.export(bundle);
28
27
  }
29
28
  return bundle;
30
29
  }
31
- exports.compose = compose;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_SHOULD_USE_DEV_MODE_HANDLE = exports.GET_DEFAULT_BUILD_TARGETS = exports.I18N_ROOT = exports.ALLOWED_SSR_REGIONS = exports.DEFAULT_REGION = exports.VALID_LOCALE_FORMATS = exports.VALID_ENGINES = exports.NODE_VERSION = exports.SHARP_VERSION = exports.FIREBASE_ADMIN_VERSION = exports.FIREBASE_FUNCTIONS_VERSION = exports.FIREBASE_FRAMEWORKS_VERSION = exports.MAILING_LIST_URL = exports.FEATURE_REQUEST_URL = exports.FILE_BUG_URL = exports.DEFAULT_DOCS_URL = exports.SupportLevelWarnings = exports.NPM_COMMAND_TIMEOUT_MILLIES = void 0;
3
+ exports.I18N_ROOT = exports.ALLOWED_SSR_REGIONS = exports.DEFAULT_REGION = exports.VALID_LOCALE_FORMATS = exports.VALID_ENGINES = exports.NODE_VERSION = exports.SHARP_VERSION = exports.FIREBASE_ADMIN_VERSION = exports.FIREBASE_FUNCTIONS_VERSION = exports.FIREBASE_FRAMEWORKS_VERSION = exports.MAILING_LIST_URL = exports.FEATURE_REQUEST_URL = exports.FILE_BUG_URL = exports.DEFAULT_DOCS_URL = exports.SupportLevelWarnings = exports.NPM_COMMAND_TIMEOUT_MILLIES = void 0;
4
+ exports.GET_DEFAULT_BUILD_TARGETS = GET_DEFAULT_BUILD_TARGETS;
5
+ exports.DEFAULT_SHOULD_USE_DEV_MODE_HANDLE = DEFAULT_SHOULD_USE_DEV_MODE_HANDLE;
4
6
  const clc = require("colorette");
5
7
  const experiments = require("../experiments");
6
8
  exports.NPM_COMMAND_TIMEOUT_MILLIES = 60000;
@@ -60,8 +62,6 @@ exports.I18N_ROOT = "/";
60
62
  function GET_DEFAULT_BUILD_TARGETS() {
61
63
  return Promise.resolve(["production", "development"]);
62
64
  }
63
- exports.GET_DEFAULT_BUILD_TARGETS = GET_DEFAULT_BUILD_TARGETS;
64
65
  function DEFAULT_SHOULD_USE_DEV_MODE_HANDLE(target) {
65
66
  return Promise.resolve(target === "development");
66
67
  }
67
- exports.DEFAULT_SHOULD_USE_DEV_MODE_HANDLE = DEFAULT_SHOULD_USE_DEV_MODE_HANDLE;
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ɵcodegenFunctionsDirectory = exports.ɵcodegenPublicDirectory = exports.build = exports.discover = exports.docsUrl = exports.type = exports.support = exports.name = void 0;
3
+ exports.docsUrl = exports.type = exports.support = exports.name = void 0;
4
+ exports.discover = discover;
5
+ exports.build = build;
6
+ exports.ɵcodegenPublicDirectory = ɵcodegenPublicDirectory;
7
+ exports.ɵcodegenFunctionsDirectory = ɵcodegenFunctionsDirectory;
4
8
  const child_process_1 = require("child_process");
5
9
  const fs_extra_1 = require("fs-extra");
6
10
  const promises_1 = require("fs/promises");
@@ -11,11 +15,10 @@ exports.support = "preview";
11
15
  exports.type = 0;
12
16
  exports.docsUrl = "https://firebase.google.com/docs/hosting/frameworks/express";
13
17
  async function getConfig(root) {
14
- var _a, _b;
15
18
  const packageJsonBuffer = await (0, promises_1.readFile)((0, path_1.join)(root, "package.json"));
16
19
  const packageJson = JSON.parse(packageJsonBuffer.toString());
17
- const serve = (_a = packageJson.directories) === null || _a === void 0 ? void 0 : _a.serve;
18
- const serveDir = serve && (0, path_1.join)(root, (_b = packageJson.directories) === null || _b === void 0 ? void 0 : _b.serve);
20
+ const serve = packageJson.directories?.serve;
21
+ const serveDir = serve && (0, path_1.join)(root, packageJson.directories?.serve);
19
22
  return { serveDir, packageJson };
20
23
  }
21
24
  async function discover(dir) {
@@ -26,18 +29,15 @@ async function discover(dir) {
26
29
  return;
27
30
  return { mayWantBackend: true, publicDirectory };
28
31
  }
29
- exports.discover = discover;
30
32
  async function build(cwd) {
31
33
  (0, child_process_1.execSync)(`npm run build`, { stdio: "inherit", cwd });
32
34
  const wantsBackend = !!(await getBootstrapScript(cwd));
33
35
  return { wantsBackend };
34
36
  }
35
- exports.build = build;
36
37
  async function ɵcodegenPublicDirectory(root, dest) {
37
38
  const { serveDir } = await getConfig(root);
38
39
  await (0, fs_extra_1.copy)(serveDir, dest);
39
40
  }
40
- exports.ɵcodegenPublicDirectory = ɵcodegenPublicDirectory;
41
41
  async function getBootstrapScript(root, _bootstrapScript = "", _entry) {
42
42
  let entry = _entry;
43
43
  let bootstrapScript = _bootstrapScript;
@@ -99,4 +99,3 @@ async function ɵcodegenFunctionsDirectory(root, dest) {
99
99
  packageJson.dependencies[packageJson.name] = `file:${filename}`;
100
100
  return { bootstrapScript, packageJson };
101
101
  }
102
- exports.ɵcodegenFunctionsDirectory = ɵcodegenFunctionsDirectory;
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ɵcodegenPublicDirectory = exports.build = exports.init = exports.discover = exports.support = exports.type = exports.name = void 0;
3
+ exports.support = exports.type = exports.name = void 0;
4
+ exports.discover = discover;
5
+ exports.init = init;
6
+ exports.build = build;
7
+ exports.ɵcodegenPublicDirectory = ɵcodegenPublicDirectory;
4
8
  const cross_spawn_1 = require("cross-spawn");
5
9
  const fs_extra_1 = require("fs-extra");
6
10
  const path_1 = require("path");
@@ -11,18 +15,16 @@ exports.name = "Flutter Web";
11
15
  exports.type = 3;
12
16
  exports.support = "experimental";
13
17
  async function discover(dir) {
14
- var _a;
15
18
  if (!(await (0, fs_extra_1.pathExists)((0, path_1.join)(dir, "pubspec.yaml"))))
16
19
  return;
17
20
  if (!(await (0, fs_extra_1.pathExists)((0, path_1.join)(dir, "web"))))
18
21
  return;
19
22
  const pubSpec = await (0, utils_1.getPubSpec)(dir);
20
- const usingFlutter = (_a = pubSpec.dependencies) === null || _a === void 0 ? void 0 : _a.flutter;
23
+ const usingFlutter = pubSpec.dependencies?.flutter;
21
24
  if (!usingFlutter)
22
25
  return;
23
26
  return { mayWantBackend: false };
24
27
  }
25
- exports.discover = discover;
26
28
  function init(setup, config) {
27
29
  (0, utils_1.assertFlutterCliExists)();
28
30
  const projectName = constants_1.DART_RESERVED_WORDS.includes(setup.projectId)
@@ -40,7 +42,6 @@ function init(setup, config) {
40
42
  throw new error_1.FirebaseError("We were not able to create your flutter app, create the application yourself https://docs.flutter.dev/get-started/test-drive?tab=terminal before trying again.");
41
43
  return Promise.resolve();
42
44
  }
43
- exports.init = init;
44
45
  async function build(cwd) {
45
46
  (0, utils_1.assertFlutterCliExists)();
46
47
  const pubSpec = await (0, utils_1.getPubSpec)(cwd);
@@ -51,8 +52,6 @@ async function build(cwd) {
51
52
  throw new error_1.FirebaseError("Unable to build your Flutter app");
52
53
  return Promise.resolve({ wantsBackend: false });
53
54
  }
54
- exports.build = build;
55
55
  async function ɵcodegenPublicDirectory(sourceDir, destDir) {
56
56
  await (0, fs_extra_1.copy)((0, path_1.join)(sourceDir, "build", "web"), destDir);
57
57
  }
58
- exports.ɵcodegenPublicDirectory = ɵcodegenPublicDirectory;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPubSpec = exports.getAdditionalBuildArgs = exports.assertFlutterCliExists = void 0;
3
+ exports.assertFlutterCliExists = assertFlutterCliExists;
4
+ exports.getAdditionalBuildArgs = getAdditionalBuildArgs;
5
+ exports.getPubSpec = getPubSpec;
4
6
  const cross_spawn_1 = require("cross-spawn");
5
7
  const error_1 = require("../../error");
6
8
  const promises_1 = require("fs/promises");
@@ -12,7 +14,6 @@ function assertFlutterCliExists() {
12
14
  if (process.status !== 0)
13
15
  throw new error_1.FirebaseError("Flutter CLI not found, follow the instructions here https://docs.flutter.dev/get-started/install before trying again.");
14
16
  }
15
- exports.assertFlutterCliExists = assertFlutterCliExists;
16
17
  function getAdditionalBuildArgs(pubSpec) {
17
18
  const treeShakePackages = [
18
19
  "material_icons_named",
@@ -22,11 +23,10 @@ function getAdditionalBuildArgs(pubSpec) {
22
23
  "font_awesome_flutter",
23
24
  "ionicons_named",
24
25
  ];
25
- const hasTreeShakePackage = treeShakePackages.some((pkg) => { var _a; return (_a = pubSpec.dependencies) === null || _a === void 0 ? void 0 : _a[pkg]; });
26
+ const hasTreeShakePackage = treeShakePackages.some((pkg) => pubSpec.dependencies?.[pkg]);
26
27
  const treeShakeFlags = hasTreeShakePackage ? ["--no-tree-shake-icons"] : [];
27
28
  return [...treeShakeFlags];
28
29
  }
29
- exports.getAdditionalBuildArgs = getAdditionalBuildArgs;
30
30
  async function getPubSpec(dir) {
31
31
  if (!(await (0, fs_extra_1.pathExists)((0, path_1.join)(dir, "pubspec.yaml"))))
32
32
  return {};
@@ -41,4 +41,3 @@ async function getPubSpec(dir) {
41
41
  return {};
42
42
  }
43
43
  }
44
- exports.getPubSpec = getPubSpec;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.prepareFrameworks = exports.generateSSRCodebaseId = exports.discover = exports.WebFrameworks = void 0;
3
+ exports.WebFrameworks = void 0;
4
+ exports.discover = discover;
5
+ exports.generateSSRCodebaseId = generateSSRCodebaseId;
6
+ exports.prepareFrameworks = prepareFrameworks;
4
7
  const path_1 = require("path");
5
8
  const process_1 = require("process");
6
9
  const child_process_1 = require("child_process");
@@ -46,7 +49,7 @@ async function discover(dir, warn = true) {
46
49
  continue;
47
50
  const result = await discover(dir);
48
51
  if (result)
49
- frameworksDiscovered.push(Object.assign({ framework }, result));
52
+ frameworksDiscovered.push({ framework, ...result });
50
53
  }
51
54
  }
52
55
  if (frameworksDiscovered.length > 1) {
@@ -61,7 +64,6 @@ async function discover(dir, warn = true) {
61
64
  console.warn("Could not determine the web framework in use.");
62
65
  return;
63
66
  }
64
- exports.discover = discover;
65
67
  const BUILD_MEMO = new Map();
66
68
  function memoizeBuild(dir, build, deps, target, context) {
67
69
  const key = [dir, ...deps];
@@ -77,10 +79,8 @@ function memoizeBuild(dir, build, deps, target, context) {
77
79
  function generateSSRCodebaseId(site) {
78
80
  return `firebase-frameworks-${site}`;
79
81
  }
80
- exports.generateSSRCodebaseId = generateSSRCodebaseId;
81
82
  async function prepareFrameworks(purpose, targetNames, context, options, emulators = []) {
82
- var _a, _b, _c, _d, _e, _f;
83
- var _g, _h, _j, _k, _l;
83
+ var _a, _b, _c, _d, _e;
84
84
  const project = (0, projectUtils_1.needProjectId)(context || options);
85
85
  const isDemoProject = constants_1.Constants.isDemoProject(project);
86
86
  const projectRoot = (0, projectPath_1.resolveProjectPath)(options, ".");
@@ -92,7 +92,7 @@ async function prepareFrameworks(purpose, targetNames, context, options, emulato
92
92
  try {
93
93
  await (0, requireHostingSite_1.requireHostingSite)(options);
94
94
  }
95
- catch (_m) {
95
+ catch {
96
96
  options.site = project;
97
97
  }
98
98
  }
@@ -110,15 +110,15 @@ async function prepareFrameworks(purpose, targetNames, context, options, emulato
110
110
  config.rewrites || (config.rewrites = []);
111
111
  config.redirects || (config.redirects = []);
112
112
  config.headers || (config.headers = []);
113
- (_a = config.cleanUrls) !== null && _a !== void 0 ? _a : (config.cleanUrls = true);
113
+ config.cleanUrls ?? (config.cleanUrls = true);
114
114
  const dist = (0, path_1.join)(projectRoot, ".firebase", site);
115
115
  const hostingDist = (0, path_1.join)(dist, "hosting");
116
116
  const functionsDist = (0, path_1.join)(dist, "functions");
117
117
  if (publicDir) {
118
118
  throw new Error(`hosting.public and hosting.source cannot both be set in firebase.json`);
119
119
  }
120
- const ssrRegion = (_b = frameworksBackend === null || frameworksBackend === void 0 ? void 0 : frameworksBackend.region) !== null && _b !== void 0 ? _b : constants_2.DEFAULT_REGION;
121
- const omitCloudFunction = (_c = frameworksBackend === null || frameworksBackend === void 0 ? void 0 : frameworksBackend.omit) !== null && _c !== void 0 ? _c : false;
120
+ const ssrRegion = frameworksBackend?.region ?? constants_2.DEFAULT_REGION;
121
+ const omitCloudFunction = frameworksBackend?.omit ?? false;
122
122
  if (!allowedRegionsValues.includes(ssrRegion)) {
123
123
  const validRegions = (0, utils_1.conjoinOptions)(allowedRegionsValues);
124
124
  throw new error_1.FirebaseError(`Hosting config for site ${site} places server-side content in region ${ssrRegion} which is not known. Valid regions are ${validRegions}`);
@@ -206,7 +206,7 @@ async function prepareFrameworks(purpose, targetNames, context, options, emulato
206
206
  const frameworkContext = {
207
207
  projectId: project,
208
208
  site: options.site,
209
- hostingChannel: context === null || context === void 0 ? void 0 : context.hostingChannel,
209
+ hostingChannel: context?.hostingChannel,
210
210
  };
211
211
  let codegenFunctionsDirectory;
212
212
  let baseUrl = "";
@@ -226,7 +226,7 @@ async function prepareFrameworks(purpose, targetNames, context, options, emulato
226
226
  const buildResult = await memoizeBuild(getProjectPath(), build, [firebaseDefaults, frameworksBuildTarget], frameworksBuildTarget, frameworkContext);
227
227
  const { wantsBackend = false, trailingSlash, i18n = false } = buildResult || {};
228
228
  if (buildResult) {
229
- baseUrl = (_d = buildResult.baseUrl) !== null && _d !== void 0 ? _d : baseUrl;
229
+ baseUrl = buildResult.baseUrl ?? baseUrl;
230
230
  if (buildResult.headers)
231
231
  headers.push(...buildResult.headers);
232
232
  if (buildResult.rewrites)
@@ -234,9 +234,9 @@ async function prepareFrameworks(purpose, targetNames, context, options, emulato
234
234
  if (buildResult.redirects)
235
235
  redirects.push(...buildResult.redirects);
236
236
  }
237
- (_e = config.trailingSlash) !== null && _e !== void 0 ? _e : (config.trailingSlash = trailingSlash);
237
+ config.trailingSlash ?? (config.trailingSlash = trailingSlash);
238
238
  if (i18n)
239
- (_f = config.i18n) !== null && _f !== void 0 ? _f : (config.i18n = { root: constants_2.I18N_ROOT });
239
+ config.i18n ?? (config.i18n = { root: constants_2.I18N_ROOT });
240
240
  if (await (0, fs_extra_1.pathExists)(hostingDist))
241
241
  await (0, promises_1.rm)(hostingDist, { recursive: true });
242
242
  await (0, fs_extra_1.mkdirp)(hostingDist);
@@ -254,7 +254,7 @@ async function prepareFrameworks(purpose, targetNames, context, options, emulato
254
254
  firebaseDefaults._authTokenSyncURL = "/__session";
255
255
  process.env.__FIREBASE_DEFAULTS__ = JSON.stringify(firebaseDefaults);
256
256
  }
257
- if (context === null || context === void 0 ? void 0 : context.hostingChannel) {
257
+ if (context?.hostingChannel) {
258
258
  experiments.assertEnabled("pintags", "deploy an app that requires a backend to a preview channel");
259
259
  }
260
260
  const codebase = generateSSRCodebaseId(site);
@@ -278,7 +278,7 @@ async function prepareFrameworks(purpose, targetNames, context, options, emulato
278
278
  }
279
279
  if (await (0, fs_extra_1.pathExists)(functionsDist)) {
280
280
  const functionsDistStat = await (0, fs_extra_1.stat)(functionsDist);
281
- if (functionsDistStat === null || functionsDistStat === void 0 ? void 0 : functionsDistStat.isDirectory()) {
281
+ if (functionsDistStat?.isDirectory()) {
282
282
  const files = await (0, promises_1.readdir)(functionsDist);
283
283
  for (const file of files) {
284
284
  if (file !== "node_modules" && file !== "package-lock.json")
@@ -310,23 +310,23 @@ async function prepareFrameworks(purpose, targetNames, context, options, emulato
310
310
  process.env.__FIREBASE_FRAMEWORKS_ENTRY__ = frameworksEntry;
311
311
  packageJson.main = "server.js";
312
312
  packageJson.dependencies || (packageJson.dependencies = {});
313
- (_g = packageJson.dependencies)["firebase-frameworks"] || (_g["firebase-frameworks"] = constants_2.FIREBASE_FRAMEWORKS_VERSION);
314
- (_h = packageJson.dependencies)["firebase-functions"] || (_h["firebase-functions"] = constants_2.FIREBASE_FUNCTIONS_VERSION);
315
- (_j = packageJson.dependencies)["firebase-admin"] || (_j["firebase-admin"] = constants_2.FIREBASE_ADMIN_VERSION);
313
+ (_a = packageJson.dependencies)["firebase-frameworks"] || (_a["firebase-frameworks"] = constants_2.FIREBASE_FRAMEWORKS_VERSION);
314
+ (_b = packageJson.dependencies)["firebase-functions"] || (_b["firebase-functions"] = constants_2.FIREBASE_FUNCTIONS_VERSION);
315
+ (_c = packageJson.dependencies)["firebase-admin"] || (_c["firebase-admin"] = constants_2.FIREBASE_ADMIN_VERSION);
316
316
  packageJson.engines || (packageJson.engines = {});
317
317
  const validEngines = constants_2.VALID_ENGINES.node.filter((it) => it <= constants_2.NODE_VERSION);
318
318
  const engine = validEngines[validEngines.length - 1] || constants_2.VALID_ENGINES.node[0];
319
319
  if (engine !== constants_2.NODE_VERSION) {
320
320
  (0, utils_2.logWarning)(`This integration expects Node version ${(0, utils_1.conjoinOptions)(constants_2.VALID_ENGINES.node, "or")}. You're running version ${constants_2.NODE_VERSION}, problems may be encountered.`);
321
321
  }
322
- (_k = packageJson.engines).node || (_k.node = engine.toString());
322
+ (_d = packageJson.engines).node || (_d.node = engine.toString());
323
323
  delete packageJson.scripts;
324
324
  delete packageJson.devDependencies;
325
325
  const bundledDependencies = packageJson.bundledDependencies || {};
326
326
  if (Object.keys(bundledDependencies).length) {
327
327
  (0, utils_2.logWarning)("Bundled dependencies aren't supported in Cloud Functions, converting to dependencies.");
328
328
  for (const [dep, version] of Object.entries(bundledDependencies)) {
329
- (_l = packageJson.dependencies)[dep] || (_l[dep] = version);
329
+ (_e = packageJson.dependencies)[dep] || (_e[dep] = version);
330
330
  }
331
331
  delete packageJson.bundledDependencies;
332
332
  }
@@ -420,7 +420,6 @@ ${firebaseDefaults ? `__FIREBASE_DEFAULTS__=${JSON.stringify(firebaseDefaults)}\
420
420
  delete process.env.__FIREBASE_DEFAULTS__;
421
421
  delete process.env.__FIREBASE_FRAMEWORKS_ENTRY__;
422
422
  }
423
- exports.prepareFrameworks = prepareFrameworks;
424
423
  function codegenDevModeFunctionsDirectory() {
425
424
  const packageJson = {};
426
425
  return Promise.resolve({ packageJson, frameworksEntry: "_devMode" });
@@ -24,7 +24,9 @@ const WEBPACK_LAYERS_NAMES = {
24
24
  appMetadataRoute: "app-metadata-route",
25
25
  appRouteHandler: "app-route-handler",
26
26
  };
27
- exports.WEBPACK_LAYERS = Object.assign(Object.assign({}, WEBPACK_LAYERS_NAMES), { GROUP: {
27
+ exports.WEBPACK_LAYERS = {
28
+ ...WEBPACK_LAYERS_NAMES,
29
+ GROUP: {
28
30
  server: [
29
31
  WEBPACK_LAYERS_NAMES.reactServerComponents,
30
32
  WEBPACK_LAYERS_NAMES.actionBrowser,
@@ -44,4 +46,5 @@ exports.WEBPACK_LAYERS = Object.assign(Object.assign({}, WEBPACK_LAYERS_NAMES),
44
46
  WEBPACK_LAYERS_NAMES.appPagesBrowser,
45
47
  WEBPACK_LAYERS_NAMES.shared,
46
48
  ],
47
- } });
49
+ },
50
+ };
@@ -1,6 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDevModeHandle = exports.ɵcodegenFunctionsDirectory = exports.ɵcodegenPublicDirectory = exports.init = exports.build = exports.discover = exports.docsUrl = exports.type = exports.support = exports.name = exports.supportedRange = void 0;
3
+ exports.docsUrl = exports.type = exports.support = exports.name = exports.supportedRange = void 0;
4
+ exports.discover = discover;
5
+ exports.build = build;
6
+ exports.init = init;
7
+ exports.ɵcodegenPublicDirectory = ɵcodegenPublicDirectory;
8
+ exports.ɵcodegenFunctionsDirectory = ɵcodegenFunctionsDirectory;
9
+ exports.getDevModeHandle = getDevModeHandle;
4
10
  const child_process_1 = require("child_process");
5
11
  const cross_spawn_1 = require("cross-spawn");
6
12
  const promises_1 = require("fs/promises");
@@ -32,8 +38,7 @@ exports.type = 2;
32
38
  exports.docsUrl = "https://firebase.google.com/docs/hosting/frameworks/nextjs";
33
39
  const DEFAULT_NUMBER_OF_REASONS_TO_LIST = 5;
34
40
  function getReactVersion(cwd) {
35
- var _a;
36
- return (_a = (0, utils_1.findDependency)("react-dom", { cwd, omitDev: false })) === null || _a === void 0 ? void 0 : _a.version;
41
+ return (0, utils_1.findDependency)("react-dom", { cwd, omitDev: false })?.version;
37
42
  }
38
43
  async function discover(dir) {
39
44
  if (!(await (0, fs_extra_1.pathExists)((0, path_1.join)(dir, "package.json"))))
@@ -43,23 +48,21 @@ async function discover(dir) {
43
48
  return;
44
49
  return { mayWantBackend: true, publicDirectory: (0, path_1.join)(dir, PUBLIC_DIR), version };
45
50
  }
46
- exports.discover = discover;
47
51
  async function build(dir, target, context) {
48
- var _a, _b;
49
52
  await (0, utils_1.warnIfCustomBuildScript)(dir, exports.name, DEFAULT_BUILD_SCRIPT);
50
53
  const reactVersion = getReactVersion(dir);
51
54
  if (reactVersion && (0, semver_1.gte)(reactVersion, "18.0.0")) {
52
55
  process.env.__NEXT_REACT_ROOT = "true";
53
56
  }
54
- let env = Object.assign({}, process.env);
55
- if (context === null || context === void 0 ? void 0 : context.projectId) {
57
+ let env = { ...process.env };
58
+ if (context?.projectId) {
56
59
  const projectEnvPath = (0, path_1.join)(dir, `.env.${context.projectId}`);
57
60
  if (await (0, fs_extra_1.pathExists)(projectEnvPath)) {
58
61
  const projectEnvVars = (0, env_1.parseStrict)((await (0, fs_extra_1.readFile)(projectEnvPath)).toString());
59
- env = Object.assign(Object.assign({}, projectEnvVars), env);
62
+ env = { ...projectEnvVars, ...env };
60
63
  }
61
64
  }
62
- if ((context === null || context === void 0 ? void 0 : context.projectId) && (context === null || context === void 0 ? void 0 : context.site)) {
65
+ if (context?.projectId && context?.site) {
63
66
  const deploymentDomain = await (0, api_1.getDeploymentDomain)(context.projectId, context.site, context.hostingChannel);
64
67
  if (deploymentDomain) {
65
68
  env["VERCEL_URL"] = deploymentDomain;
@@ -67,10 +70,9 @@ async function build(dir, target, context) {
67
70
  }
68
71
  const cli = (0, utils_1.getNodeModuleBin)("next", dir);
69
72
  const nextBuild = new Promise((resolve, reject) => {
70
- var _a, _b;
71
73
  const buildProcess = (0, cross_spawn_1.spawn)(cli, ["build"], { cwd: dir, env });
72
- (_a = buildProcess.stdout) === null || _a === void 0 ? void 0 : _a.on("data", (data) => logger_1.logger.info(data.toString()));
73
- (_b = buildProcess.stderr) === null || _b === void 0 ? void 0 : _b.on("data", (data) => logger_1.logger.info(data.toString()));
74
+ buildProcess.stdout?.on("data", (data) => logger_1.logger.info(data.toString()));
75
+ buildProcess.stderr?.on("data", (data) => logger_1.logger.info(data.toString()));
74
76
  buildProcess.on("error", (err) => {
75
77
  reject(new error_1.FirebaseError(`Unable to build your Next.js app: ${err}`));
76
78
  });
@@ -164,7 +166,7 @@ async function build(dir, target, context) {
164
166
  }));
165
167
  const nextJsRewritesToUse = (0, utils_2.getNextjsRewritesToUse)(nextJsRewrites);
166
168
  if (!Array.isArray(nextJsRewrites) &&
167
- (((_a = nextJsRewrites.afterFiles) === null || _a === void 0 ? void 0 : _a.length) || ((_b = nextJsRewrites.fallback) === null || _b === void 0 ? void 0 : _b.length))) {
169
+ (nextJsRewrites.afterFiles?.length || nextJsRewrites.fallback?.length)) {
168
170
  reasonsForBackend.add("advanced rewrites");
169
171
  }
170
172
  const isEveryRewriteSupported = nextJsRewritesToUse.every(utils_2.isRewriteSupportedByHosting);
@@ -227,7 +229,6 @@ async function build(dir, target, context) {
227
229
  baseUrl,
228
230
  };
229
231
  }
230
- exports.build = build;
231
232
  async function init(setup, config) {
232
233
  const language = await (0, prompt_1.select)({
233
234
  default: "TypeScript",
@@ -240,11 +241,10 @@ async function init(setup, config) {
240
241
  (0, child_process_1.execSync)(`npx --yes create-next-app@"${exports.supportedRange}" -e hello-world ` +
241
242
  `${setup.featureInfo.hosting.source} --use-npm --${language}`, { stdio: "inherit", cwd: config.projectDir });
242
243
  }
243
- exports.init = init;
244
244
  async function ɵcodegenPublicDirectory(sourceDir, destDir, _, context) {
245
245
  const { distDir, i18n, basePath } = await getConfig(sourceDir);
246
246
  let matchingI18nDomain = undefined;
247
- if (i18n === null || i18n === void 0 ? void 0 : i18n.domains) {
247
+ if (i18n?.domains) {
248
248
  const siteDomains = await (0, api_1.getAllSiteDomains)(context.project, context.site);
249
249
  matchingI18nDomain = i18n.domains.find(({ domain }) => siteDomains.includes(domain));
250
250
  }
@@ -299,10 +299,12 @@ async function ɵcodegenPublicDirectory(sourceDir, destDir, _, context) {
299
299
  },
300
300
  ];
301
301
  }));
302
- const routesToCopy = Object.assign(Object.assign({}, prerenderManifest.routes), pagesManifestLikePrerender);
302
+ const routesToCopy = {
303
+ ...prerenderManifest.routes,
304
+ ...pagesManifestLikePrerender,
305
+ };
303
306
  const { pprRoutes } = await (0, utils_2.getAppMetadataFromMetaFiles)(sourceDir, distDir, basePath, appPathRoutesManifest);
304
307
  await Promise.all(Object.entries(routesToCopy).map(async ([path, route]) => {
305
- var _a, _b;
306
308
  if (route.initialRevalidateSeconds) {
307
309
  logger_1.logger.debug(`skipping ${path} due to revalidate`);
308
310
  return;
@@ -315,10 +317,10 @@ async function ɵcodegenPublicDirectory(sourceDir, destDir, _, context) {
315
317
  logger_1.logger.debug(`skipping ${path} due to server action`);
316
318
  return;
317
319
  }
318
- const appPathRoute = route.srcRoute && ((_a = appPathRoutesEntries.find(([, it]) => it === route.srcRoute)) === null || _a === void 0 ? void 0 : _a[0]);
320
+ const appPathRoute = route.srcRoute && appPathRoutesEntries.find(([, it]) => it === route.srcRoute)?.[0];
319
321
  const contentDist = (0, path_1.join)(sourceDir, distDir, "server", appPathRoute ? "app" : "pages");
320
322
  const sourceParts = path.split("/").filter((it) => !!it);
321
- const locale = (i18n === null || i18n === void 0 ? void 0 : i18n.locales.includes(sourceParts[0])) ? sourceParts[0] : undefined;
323
+ const locale = i18n?.locales.includes(sourceParts[0]) ? sourceParts[0] : undefined;
322
324
  const includeOnThisDomain = !locale ||
323
325
  !matchingI18nDomain ||
324
326
  matchingI18nDomain.defaultLocale === locale ||
@@ -331,7 +333,7 @@ async function ɵcodegenPublicDirectory(sourceDir, destDir, _, context) {
331
333
  const sourcePartsOrIndex = sourceParts.length > 0 ? sourceParts : ["index"];
332
334
  const destParts = sourceParts.slice(locale ? 1 : 0);
333
335
  const destPartsOrIndex = destParts.length > 0 ? destParts : ["index"];
334
- const isDefaultLocale = !locale || ((_b = (matchingI18nDomain || i18n)) === null || _b === void 0 ? void 0 : _b.defaultLocale) === locale;
336
+ const isDefaultLocale = !locale || (matchingI18nDomain || i18n)?.defaultLocale === locale;
335
337
  let sourcePath = (0, path_1.join)(contentDist, ...sourcePartsOrIndex);
336
338
  let localizedDestPath = !singleLocaleDomain &&
337
339
  locale &&
@@ -373,7 +375,6 @@ async function ɵcodegenPublicDirectory(sourceDir, destDir, _, context) {
373
375
  }
374
376
  }));
375
377
  }
376
- exports.ɵcodegenPublicDirectory = ɵcodegenPublicDirectory;
377
378
  async function ɵcodegenFunctionsDirectory(sourceDir, destDir, target, context) {
378
379
  const { distDir } = await getConfig(sourceDir);
379
380
  const packageJson = await (0, utils_1.readJSON)((0, path_1.join)(sourceDir, "package.json"));
@@ -445,7 +446,7 @@ async function ɵcodegenFunctionsDirectory(sourceDir, destDir, target, context)
445
446
  packageJson.dependencies["sharp"] = constants_1.SHARP_VERSION;
446
447
  }
447
448
  const dotEnv = {};
448
- if ((context === null || context === void 0 ? void 0 : context.projectId) && (context === null || context === void 0 ? void 0 : context.site)) {
449
+ if (context?.projectId && context?.site) {
449
450
  const deploymentDomain = await (0, api_1.getDeploymentDomain)(context.projectId, context.site, context.hostingChannel);
450
451
  if (deploymentDomain) {
451
452
  dotEnv["VERCEL_URL"] = deploymentDomain;
@@ -460,7 +461,6 @@ async function ɵcodegenFunctionsDirectory(sourceDir, destDir, target, context)
460
461
  })));
461
462
  return { packageJson, frameworksEntry: "next.js", dotEnv };
462
463
  }
463
- exports.ɵcodegenFunctionsDirectory = ɵcodegenFunctionsDirectory;
464
464
  async function getDevModeHandle(dir, _, hostingEmulatorInfo) {
465
465
  if (!hostingEmulatorInfo) {
466
466
  if (await (0, utils_2.isUsingMiddleware)(dir, true)) {
@@ -473,8 +473,8 @@ async function getDevModeHandle(dir, _, hostingEmulatorInfo) {
473
473
  const nextApp = next({
474
474
  dev: true,
475
475
  dir,
476
- hostname: hostingEmulatorInfo === null || hostingEmulatorInfo === void 0 ? void 0 : hostingEmulatorInfo.host,
477
- port: hostingEmulatorInfo === null || hostingEmulatorInfo === void 0 ? void 0 : hostingEmulatorInfo.port,
476
+ hostname: hostingEmulatorInfo?.host,
477
+ port: hostingEmulatorInfo?.port,
478
478
  });
479
479
  const handler = nextApp.getRequestHandler();
480
480
  await nextApp.prepare();
@@ -483,10 +483,7 @@ async function getDevModeHandle(dir, _, hostingEmulatorInfo) {
483
483
  await handler(req, res, parsedUrl);
484
484
  });
485
485
  }
486
- exports.getDevModeHandle = getDevModeHandle;
487
486
  async function getConfig(dir) {
488
- var _a;
489
- var _b;
490
487
  let config = {};
491
488
  const configFile = await (0, utils_2.whichNextConfigFile)(dir);
492
489
  if (configFile) {
@@ -502,13 +499,18 @@ async function getConfig(dir) {
502
499
  }
503
500
  else {
504
501
  try {
505
- config = await (_a = (0, url_1.pathToFileURL)((0, path_1.join)(dir, configFile)).toString(), Promise.resolve().then(() => require(_a)));
502
+ config = await Promise.resolve(`${(0, url_1.pathToFileURL)((0, path_1.join)(dir, configFile)).toString()}`).then(s => require(s));
506
503
  }
507
504
  catch (e) {
508
505
  throw new Error(`Unable to load ${configFile}.`);
509
506
  }
510
507
  }
511
508
  }
512
- (0, utils_1.validateLocales)((_b = config.i18n) === null || _b === void 0 ? void 0 : _b.locales);
513
- return Object.assign({ distDir: ".next", trailingSlash: false, basePath: "/" }, config);
509
+ (0, utils_1.validateLocales)(config.i18n?.locales);
510
+ return {
511
+ distDir: ".next",
512
+ trailingSlash: false,
513
+ basePath: "/",
514
+ ...config,
515
+ };
514
516
  }