firebase-tools 15.1.0 → 15.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (523) hide show
  1. package/lib/accountExporter.js +3 -5
  2. package/lib/accountImporter.js +4 -5
  3. package/lib/api.js +3 -3
  4. package/lib/apiv2.js +9 -13
  5. package/lib/appUtils.js +19 -21
  6. package/lib/appdistribution/client.js +4 -8
  7. package/lib/appdistribution/distribution.js +4 -4
  8. package/lib/appdistribution/options-parser-util.js +8 -9
  9. package/lib/appdistribution/types.js +2 -2
  10. package/lib/appdistribution/yaml_helper.js +33 -17
  11. package/lib/apphosting/app.js +8 -13
  12. package/lib/apphosting/backend.js +34 -24
  13. package/lib/apphosting/config.js +14 -14
  14. package/lib/apphosting/githubConnections.js +38 -35
  15. package/lib/apphosting/localbuilds.js +4 -6
  16. package/lib/apphosting/repo.js +24 -20
  17. package/lib/apphosting/rollout.js +12 -5
  18. package/lib/apphosting/secrets/dialogs.js +9 -9
  19. package/lib/apphosting/secrets/index.js +9 -11
  20. package/lib/apphosting/utils.js +2 -3
  21. package/lib/apphosting/yaml.js +12 -11
  22. package/lib/apptesting/ensureProjectConfigured.js +1 -2
  23. package/lib/apptesting/invokeTests.js +2 -3
  24. package/lib/apptesting/parseTestFiles.js +5 -6
  25. package/lib/apptesting/types.js +2 -2
  26. package/lib/archiveDirectory.js +1 -2
  27. package/lib/auth.js +36 -40
  28. package/lib/bin/cli.js +2 -3
  29. package/lib/bin/mcp.js +1 -2
  30. package/lib/checkMinRequiredVersion.js +1 -2
  31. package/lib/checkValidTargetFilters.js +1 -2
  32. package/lib/command.js +6 -9
  33. package/lib/commands/appdistribution-testers-list.js +2 -3
  34. package/lib/commands/apphosting-backends-list.js +4 -6
  35. package/lib/commands/apphosting-builds-create.js +2 -3
  36. package/lib/commands/apphosting-builds-get.js +1 -2
  37. package/lib/commands/apphosting-rollouts-list.js +1 -2
  38. package/lib/commands/apps-init.js +1 -1
  39. package/lib/commands/{apptesting-execute.js → apptesting-wata.js} +3 -4
  40. package/lib/commands/crashlytics-symbols-upload.js +2 -2
  41. package/lib/commands/dataconnect-execute.js +4 -4
  42. package/lib/commands/dataconnect-sdk-generate.js +5 -6
  43. package/lib/commands/dataconnect-services-list.js +7 -8
  44. package/lib/commands/dataconnect-sql-diff.js +1 -2
  45. package/lib/commands/dataconnect-sql-migrate.js +4 -3
  46. package/lib/commands/dataconnect-sql-setup.js +2 -2
  47. package/lib/commands/dataconnect-sql-shell.js +5 -1
  48. package/lib/commands/emulators-start.js +1 -2
  49. package/lib/commands/ext-configure.js +6 -4
  50. package/lib/commands/ext-dev-list.js +2 -3
  51. package/lib/commands/ext-dev-upload.js +2 -2
  52. package/lib/commands/ext-export.js +1 -1
  53. package/lib/commands/ext-info.js +2 -3
  54. package/lib/commands/ext-install.js +5 -7
  55. package/lib/commands/firestore-backups-list.js +1 -2
  56. package/lib/commands/firestore-backups-schedules-list.js +1 -2
  57. package/lib/commands/firestore-indexes-list.js +1 -2
  58. package/lib/commands/firestore-utils.js +1 -2
  59. package/lib/commands/functions-artifacts-setpolicy.js +1 -2
  60. package/lib/commands/functions-config-export.js +2 -3
  61. package/lib/commands/hosting-channel-deploy.js +2 -2
  62. package/lib/commands/hosting-clone.js +2 -3
  63. package/lib/commands/hosting-sites-create.js +1 -1
  64. package/lib/commands/index.js +2 -3
  65. package/lib/commands/init.js +4 -5
  66. package/lib/commands/internaltesting-functions-discover.js +1 -1
  67. package/lib/commands/login.js +4 -5
  68. package/lib/commands/logout.js +3 -3
  69. package/lib/commands/projects-create.js +1 -1
  70. package/lib/commands/remoteconfig-experiments-list.js +2 -3
  71. package/lib/commands/remoteconfig-get.js +1 -1
  72. package/lib/commands/remoteconfig-rollback.js +1 -2
  73. package/lib/commands/remoteconfig-rollouts-list.js +2 -3
  74. package/lib/commands/remoteconfig-versions-list.js +3 -4
  75. package/lib/commands/use.js +3 -3
  76. package/lib/config.js +4 -5
  77. package/lib/crashlytics/buildToolsJarHelper.js +3 -5
  78. package/lib/crashlytics/events.js +4 -7
  79. package/lib/crashlytics/filters.js +10 -12
  80. package/lib/crashlytics/issues.js +2 -3
  81. package/lib/crashlytics/notes.js +3 -4
  82. package/lib/crashlytics/reports.js +21 -15
  83. package/lib/crashlytics/types.js +7 -7
  84. package/lib/crashlytics/utils.js +4 -4
  85. package/lib/database/api.js +2 -3
  86. package/lib/database/import.js +4 -4
  87. package/lib/database/metadata.js +5 -6
  88. package/lib/database/rulesConfig.js +2 -3
  89. package/lib/dataconnect/build.js +10 -13
  90. package/lib/dataconnect/checkIam.js +1 -2
  91. package/lib/dataconnect/client.js +15 -18
  92. package/lib/dataconnect/dataplaneClient.js +6 -6
  93. package/lib/dataconnect/ensureApis.js +2 -3
  94. package/lib/dataconnect/errors.js +8 -11
  95. package/lib/dataconnect/filters.js +2 -3
  96. package/lib/dataconnect/freeTrial.js +3 -4
  97. package/lib/dataconnect/graphqlError.js +5 -8
  98. package/lib/dataconnect/load.js +10 -11
  99. package/lib/dataconnect/names.js +14 -18
  100. package/lib/dataconnect/prompts.js +1 -2
  101. package/lib/dataconnect/provisionCloudSql.js +13 -17
  102. package/lib/dataconnect/schemaMigration.js +60 -27
  103. package/lib/dataconnect/types.js +10 -12
  104. package/lib/dataconnect/webhook.js +3 -3
  105. package/lib/defaultCredentials.js +3 -4
  106. package/lib/deploy/apphosting/deploy.js +2 -3
  107. package/lib/deploy/apphosting/prepare.js +3 -5
  108. package/lib/deploy/apphosting/release.js +1 -1
  109. package/lib/deploy/apphosting/util.js +1 -2
  110. package/lib/deploy/database/deploy.js +1 -2
  111. package/lib/deploy/database/prepare.js +1 -2
  112. package/lib/deploy/database/release.js +1 -2
  113. package/lib/deploy/dataconnect/context.js +15 -4
  114. package/lib/deploy/dataconnect/deploy.js +5 -6
  115. package/lib/deploy/dataconnect/prepare.js +7 -9
  116. package/lib/deploy/dataconnect/release.js +7 -10
  117. package/lib/deploy/extensions/deploy.js +7 -9
  118. package/lib/deploy/extensions/deploymentSummary.js +6 -7
  119. package/lib/deploy/extensions/planner.js +15 -18
  120. package/lib/deploy/extensions/prepare.js +9 -11
  121. package/lib/deploy/extensions/release.js +10 -12
  122. package/lib/deploy/extensions/secrets.js +8 -11
  123. package/lib/deploy/extensions/tasks.js +6 -8
  124. package/lib/deploy/extensions/v2FunctionHelper.js +2 -3
  125. package/lib/deploy/extensions/validate.js +1 -2
  126. package/lib/deploy/firestore/deploy.js +3 -5
  127. package/lib/deploy/firestore/prepare.js +2 -3
  128. package/lib/deploy/firestore/release.js +3 -4
  129. package/lib/deploy/functions/backend.js +52 -42
  130. package/lib/deploy/functions/build.js +41 -15
  131. package/lib/deploy/functions/cache/applyHash.js +3 -5
  132. package/lib/deploy/functions/cache/hash.js +4 -5
  133. package/lib/deploy/functions/cel.js +3 -3
  134. package/lib/deploy/functions/checkIam.js +8 -8
  135. package/lib/deploy/functions/containerCleaner.js +10 -6
  136. package/lib/deploy/functions/deploy.js +6 -8
  137. package/lib/deploy/functions/ensure.js +6 -9
  138. package/lib/deploy/functions/functionsDeployHelper.js +10 -11
  139. package/lib/deploy/functions/params.js +10 -10
  140. package/lib/deploy/functions/prepare.js +41 -36
  141. package/lib/deploy/functions/prepareFunctionsUpload.js +24 -10
  142. package/lib/deploy/functions/pricing.js +3 -3
  143. package/lib/deploy/functions/prompts.js +7 -10
  144. package/lib/deploy/functions/release/executor.js +5 -6
  145. package/lib/deploy/functions/release/fabricator.js +76 -29
  146. package/lib/deploy/functions/release/index.js +23 -14
  147. package/lib/deploy/functions/release/planner.js +15 -14
  148. package/lib/deploy/functions/release/reporter.js +20 -20
  149. package/lib/deploy/functions/release/sourceTokenScraper.js +4 -5
  150. package/lib/deploy/functions/remoteSource.js +3 -4
  151. package/lib/deploy/functions/runtimes/discovery/index.js +9 -12
  152. package/lib/deploy/functions/runtimes/discovery/parsing.js +2 -3
  153. package/lib/deploy/functions/runtimes/discovery/v1alpha1.js +29 -10
  154. package/lib/deploy/functions/runtimes/index.js +1 -2
  155. package/lib/deploy/functions/runtimes/node/index.js +18 -9
  156. package/lib/deploy/functions/runtimes/node/parseRuntimeAndValidateSDK.js +2 -2
  157. package/lib/deploy/functions/runtimes/node/validate.js +1 -2
  158. package/lib/deploy/functions/runtimes/node/versioning.js +6 -7
  159. package/lib/deploy/functions/runtimes/python/index.js +12 -12
  160. package/lib/deploy/functions/runtimes/supported/index.js +5 -6
  161. package/lib/deploy/functions/services/auth.js +49 -36
  162. package/lib/deploy/functions/services/database.js +1 -2
  163. package/lib/deploy/functions/services/dataconnect.js +16 -2
  164. package/lib/deploy/functions/services/firebaseAlerts.js +1 -2
  165. package/lib/deploy/functions/services/firestore.js +3 -5
  166. package/lib/deploy/functions/services/index.js +2 -2
  167. package/lib/deploy/functions/services/remoteConfig.js +1 -2
  168. package/lib/deploy/functions/services/storage.js +3 -5
  169. package/lib/deploy/functions/services/testLab.js +1 -2
  170. package/lib/deploy/functions/triggerRegionHelper.js +1 -2
  171. package/lib/deploy/functions/validate.js +12 -11
  172. package/lib/deploy/hosting/convertConfig.js +38 -22
  173. package/lib/deploy/hosting/deploy.js +4 -7
  174. package/lib/deploy/hosting/hashcache.js +2 -3
  175. package/lib/deploy/hosting/prepare.js +14 -14
  176. package/lib/deploy/hosting/release.js +1 -2
  177. package/lib/deploy/index.js +7 -8
  178. package/lib/deploy/lifecycleHooks.js +3 -5
  179. package/lib/deploy/remoteconfig/deploy.js +1 -1
  180. package/lib/deploy/remoteconfig/functions.js +5 -6
  181. package/lib/deploy/remoteconfig/prepare.js +2 -3
  182. package/lib/deploy/remoteconfig/release.js +2 -2
  183. package/lib/deploy/storage/deploy.js +1 -1
  184. package/lib/deploy/storage/prepare.js +1 -1
  185. package/lib/deploy/storage/release.js +1 -1
  186. package/lib/deploymentTool.js +5 -6
  187. package/lib/detectProjectRoot.js +1 -2
  188. package/lib/downloadUtils.js +2 -3
  189. package/lib/emulator/adminSdkConfig.js +2 -3
  190. package/lib/emulator/apphosting/config.js +1 -2
  191. package/lib/emulator/apphosting/developmentServer.js +3 -3
  192. package/lib/emulator/apphosting/serve.js +20 -14
  193. package/lib/emulator/auth/cloudFunctions.js +2 -3
  194. package/lib/emulator/auth/errors.js +2 -2
  195. package/lib/emulator/auth/handlers.js +3 -4
  196. package/lib/emulator/auth/index.js +6 -6
  197. package/lib/emulator/auth/operations.js +171 -129
  198. package/lib/emulator/auth/server.js +30 -22
  199. package/lib/emulator/auth/state.js +26 -36
  200. package/lib/emulator/auth/utils.js +12 -13
  201. package/lib/emulator/commandUtils.js +20 -20
  202. package/lib/emulator/controller.js +32 -29
  203. package/lib/emulator/databaseEmulator.js +1 -2
  204. package/lib/emulator/dataconnect/pgliteServer.js +48 -104
  205. package/lib/emulator/dataconnectEmulator.js +6 -9
  206. package/lib/emulator/download.js +2 -3
  207. package/lib/emulator/downloadableEmulatorInfo.json +7 -7
  208. package/lib/emulator/downloadableEmulators.js +49 -24
  209. package/lib/emulator/emulatorLogger.js +19 -4
  210. package/lib/emulator/env.js +6 -8
  211. package/lib/emulator/eventarcEmulator.js +2 -3
  212. package/lib/emulator/eventarcEmulatorUtils.js +3 -6
  213. package/lib/emulator/extensions/postinstall.js +1 -2
  214. package/lib/emulator/extensions/validation.js +4 -7
  215. package/lib/emulator/extensionsEmulator.js +6 -9
  216. package/lib/emulator/functionsEmulator.js +89 -46
  217. package/lib/emulator/functionsEmulatorRuntime.js +1 -1
  218. package/lib/emulator/functionsEmulatorShared.js +30 -30
  219. package/lib/emulator/functionsEmulatorShell.js +4 -6
  220. package/lib/emulator/functionsEmulatorUtils.js +8 -9
  221. package/lib/emulator/functionsRuntimeWorker.js +18 -9
  222. package/lib/emulator/hub.js +41 -34
  223. package/lib/emulator/hubClient.js +1 -1
  224. package/lib/emulator/initEmulators.js +2 -3
  225. package/lib/emulator/loggingEmulator.js +2 -2
  226. package/lib/emulator/portUtils.js +4 -5
  227. package/lib/emulator/registry.js +10 -4
  228. package/lib/emulator/shared/request.js +1 -2
  229. package/lib/emulator/storage/apis/firebase.js +16 -20
  230. package/lib/emulator/storage/apis/gcloud.js +6 -9
  231. package/lib/emulator/storage/apis/shared.js +1 -2
  232. package/lib/emulator/storage/crc.js +2 -3
  233. package/lib/emulator/storage/files.js +18 -41
  234. package/lib/emulator/storage/metadata.js +10 -4
  235. package/lib/emulator/storage/multipart.js +1 -2
  236. package/lib/emulator/storage/rfc.js +1 -2
  237. package/lib/emulator/storage/rules/config.js +1 -2
  238. package/lib/emulator/storage/rules/manager.js +3 -5
  239. package/lib/emulator/storage/rules/runtime.js +15 -13
  240. package/lib/emulator/storage/rules/types.js +2 -2
  241. package/lib/emulator/storage/rules/utils.js +5 -6
  242. package/lib/emulator/storage/server.js +1 -2
  243. package/lib/emulator/storage/upload.js +3 -4
  244. package/lib/emulator/taskQueue.js +11 -4
  245. package/lib/emulator/tasksEmulator.js +11 -12
  246. package/lib/emulator/types.js +6 -6
  247. package/lib/emulator/ui.js +6 -1
  248. package/lib/ensureApiEnabled.js +7 -9
  249. package/lib/env.js +2 -3
  250. package/lib/error.js +11 -13
  251. package/lib/errorOut.js +1 -2
  252. package/lib/experiments.js +15 -18
  253. package/lib/extensions/askUserForEventsConfig.js +12 -13
  254. package/lib/extensions/askUserForParam.js +11 -12
  255. package/lib/extensions/change-log.js +4 -5
  256. package/lib/extensions/checkProjectBilling.js +1 -2
  257. package/lib/extensions/diagnose.js +1 -2
  258. package/lib/extensions/displayExtensionInfo.js +25 -32
  259. package/lib/extensions/emulator/optionsHelper.js +6 -8
  260. package/lib/extensions/emulator/specHelper.js +15 -16
  261. package/lib/extensions/emulator/triggerHelper.js +3 -5
  262. package/lib/extensions/etags.js +2 -3
  263. package/lib/extensions/export.js +7 -9
  264. package/lib/extensions/extensionsApi.js +23 -29
  265. package/lib/extensions/extensionsHelper.js +52 -80
  266. package/lib/extensions/listExtensions.js +3 -5
  267. package/lib/extensions/localHelper.js +5 -5
  268. package/lib/extensions/manifest.js +15 -16
  269. package/lib/extensions/metricsUtils.js +3 -4
  270. package/lib/extensions/paramHelper.js +21 -18
  271. package/lib/extensions/provisioningHelper.js +17 -21
  272. package/lib/extensions/publishHelpers.js +1 -2
  273. package/lib/extensions/publisherApi.js +11 -13
  274. package/lib/extensions/refs.js +6 -7
  275. package/lib/extensions/runtimes/common.js +18 -19
  276. package/lib/extensions/runtimes/node.js +5 -6
  277. package/lib/extensions/secretsUtils.js +8 -8
  278. package/lib/extensions/tos.js +7 -8
  279. package/lib/extensions/types.js +3 -3
  280. package/lib/extensions/updateHelper.js +6 -7
  281. package/lib/extensions/utils.js +6 -8
  282. package/lib/extensions/versionHelper.js +1 -2
  283. package/lib/extensions/warnings.js +6 -8
  284. package/lib/fetchMOTD.js +1 -2
  285. package/lib/fetchWebSetup.js +3 -4
  286. package/lib/filterTargets.js +1 -2
  287. package/lib/firebaseConfigValidate.js +2 -3
  288. package/lib/firestore/api-sort.js +8 -9
  289. package/lib/firestore/api-types.js +15 -15
  290. package/lib/firestore/api.js +15 -13
  291. package/lib/firestore/backupUtils.js +3 -3
  292. package/lib/firestore/checkDatabaseType.js +1 -2
  293. package/lib/firestore/delete.js +1 -2
  294. package/lib/firestore/encodeFirestoreValue.js +1 -2
  295. package/lib/firestore/fsConfig.js +1 -2
  296. package/lib/firestore/options.js +1 -1
  297. package/lib/firestore/util.js +5 -6
  298. package/lib/firestore/validator.js +4 -5
  299. package/lib/frameworks/angular/index.js +14 -15
  300. package/lib/frameworks/angular/utils.js +21 -23
  301. package/lib/frameworks/astro/index.js +7 -7
  302. package/lib/frameworks/astro/utils.js +4 -6
  303. package/lib/frameworks/compose/discover/filesystem.js +3 -3
  304. package/lib/frameworks/compose/discover/frameworkMatcher.js +4 -5
  305. package/lib/frameworks/compose/discover/index.js +1 -2
  306. package/lib/frameworks/compose/discover/runtime/node.js +8 -11
  307. package/lib/frameworks/compose/driver/docker.js +3 -5
  308. package/lib/frameworks/compose/driver/hooks.js +2 -2
  309. package/lib/frameworks/compose/driver/index.js +2 -2
  310. package/lib/frameworks/compose/driver/local.js +2 -3
  311. package/lib/frameworks/compose/index.js +5 -7
  312. package/lib/frameworks/constants.js +3 -3
  313. package/lib/frameworks/express/index.js +7 -8
  314. package/lib/frameworks/flutter/index.js +6 -7
  315. package/lib/frameworks/flutter/utils.js +4 -5
  316. package/lib/frameworks/index.js +21 -22
  317. package/lib/frameworks/next/constants.js +5 -2
  318. package/lib/frameworks/next/index.js +34 -32
  319. package/lib/frameworks/next/utils.js +40 -39
  320. package/lib/frameworks/nuxt/index.js +9 -9
  321. package/lib/frameworks/nuxt/utils.js +4 -6
  322. package/lib/frameworks/nuxt2/index.js +7 -7
  323. package/lib/frameworks/sveltekit/index.js +6 -8
  324. package/lib/frameworks/utils.js +26 -24
  325. package/lib/frameworks/vite/index.js +8 -9
  326. package/lib/fsAsync.js +1 -2
  327. package/lib/fsutils.js +5 -6
  328. package/lib/functional.js +11 -11
  329. package/lib/functions/artifacts.js +25 -22
  330. package/lib/functions/ensureTargeted.js +1 -2
  331. package/lib/functions/env.js +13 -14
  332. package/lib/functions/functionslog.js +2 -3
  333. package/lib/functions/projectConfig.js +29 -33
  334. package/lib/functions/python.js +10 -4
  335. package/lib/functions/secrets.js +32 -18
  336. package/lib/functionsConfig.js +14 -14
  337. package/lib/functionsConfigClone.js +1 -2
  338. package/lib/functionsShellCommandAction.js +2 -3
  339. package/lib/gcp/apphosting.js +43 -28
  340. package/lib/gcp/apptesting.js +2 -2
  341. package/lib/gcp/artifactregistry.js +5 -5
  342. package/lib/gcp/auth.js +11 -13
  343. package/lib/gcp/cloudbilling.js +4 -5
  344. package/lib/gcp/cloudbuild.js +10 -11
  345. package/lib/gcp/cloudfunctions.js +61 -45
  346. package/lib/gcp/cloudfunctionsv2.js +81 -43
  347. package/lib/gcp/cloudlogging.js +2 -4
  348. package/lib/gcp/cloudmonitoring.js +7 -7
  349. package/lib/gcp/cloudscheduler.js +12 -14
  350. package/lib/gcp/cloudsql/cloudsqladmin.js +18 -20
  351. package/lib/gcp/cloudsql/connect.js +14 -9
  352. package/lib/gcp/cloudsql/fbToolsAuthClient.js +5 -3
  353. package/lib/gcp/cloudsql/interactive.js +2 -3
  354. package/lib/gcp/cloudsql/permissions.js +8 -8
  355. package/lib/gcp/cloudsql/permissionsSetup.js +9 -9
  356. package/lib/gcp/cloudtasks.js +19 -18
  357. package/lib/gcp/computeEngine.js +1 -2
  358. package/lib/gcp/devConnect.js +32 -29
  359. package/lib/gcp/docker.js +2 -4
  360. package/lib/gcp/eventarc.js +5 -5
  361. package/lib/gcp/firedata.js +4 -4
  362. package/lib/gcp/firestore.js +16 -16
  363. package/lib/gcp/iam.js +11 -12
  364. package/lib/gcp/identityPlatform.js +4 -5
  365. package/lib/gcp/k8s.js +1 -2
  366. package/lib/gcp/location.js +2 -2
  367. package/lib/gcp/proto.js +10 -11
  368. package/lib/gcp/pubsub.js +4 -5
  369. package/lib/gcp/resourceManager.js +5 -5
  370. package/lib/gcp/rules.js +13 -14
  371. package/lib/gcp/run.js +24 -31
  372. package/lib/gcp/runv2.js +39 -27
  373. package/lib/gcp/secretManager.js +60 -39
  374. package/lib/gcp/serviceusage.js +8 -4
  375. package/lib/gcp/storage.js +22 -20
  376. package/lib/gemini/fdcExperience.js +5 -5
  377. package/lib/getDefaultDatabaseInstance.js +2 -4
  378. package/lib/getDefaultHostingSite.js +3 -4
  379. package/lib/getProjectNumber.js +1 -2
  380. package/lib/hosting/api.js +32 -36
  381. package/lib/hosting/cloudRunProxy.js +2 -3
  382. package/lib/hosting/config.js +17 -17
  383. package/lib/hosting/expireUtils.js +3 -3
  384. package/lib/hosting/functionsProxy.js +1 -2
  385. package/lib/hosting/implicitInit.js +1 -2
  386. package/lib/hosting/initMiddleware.js +1 -2
  387. package/lib/hosting/interactive.js +1 -2
  388. package/lib/hosting/proxy.js +3 -5
  389. package/lib/hosting/runTags.js +8 -11
  390. package/lib/init/features/account.js +1 -2
  391. package/lib/init/features/ailogic/index.js +3 -5
  392. package/lib/init/features/ailogic/utils.js +6 -8
  393. package/lib/init/features/aitools/claude.js +1 -2
  394. package/lib/init/features/aitools/cursor.js +1 -2
  395. package/lib/init/features/aitools/gemini.js +1 -1
  396. package/lib/init/features/aitools/promptUpdater.js +10 -12
  397. package/lib/init/features/aitools.js +1 -2
  398. package/lib/init/features/apphosting.js +3 -4
  399. package/lib/init/features/apptesting/index.js +9 -9
  400. package/lib/init/features/database.js +4 -5
  401. package/lib/init/features/dataconnect/create_app.js +3 -4
  402. package/lib/init/features/dataconnect/index.js +25 -22
  403. package/lib/init/features/dataconnect/resolver.js +6 -10
  404. package/lib/init/features/dataconnect/sdk.js +31 -24
  405. package/lib/init/features/emulators.js +7 -6
  406. package/lib/init/features/extensions/index.js +3 -5
  407. package/lib/init/features/firestore/index.js +7 -9
  408. package/lib/init/features/firestore/indexes.js +2 -2
  409. package/lib/init/features/firestore/rules.js +3 -3
  410. package/lib/init/features/functions/index.js +3 -5
  411. package/lib/init/features/functions/javascript.js +1 -2
  412. package/lib/init/features/functions/npm-dependencies.js +1 -2
  413. package/lib/init/features/functions/python.js +1 -2
  414. package/lib/init/features/functions/typescript.js +1 -2
  415. package/lib/init/features/genkit/index.js +44 -18
  416. package/lib/init/features/hosting/github.js +6 -8
  417. package/lib/init/features/hosting/index.js +10 -13
  418. package/lib/init/features/project.js +4 -7
  419. package/lib/init/features/remoteconfig.js +1 -2
  420. package/lib/init/features/storage.js +3 -5
  421. package/lib/init/index.js +4 -7
  422. package/lib/init/spawn.js +7 -9
  423. package/lib/listFiles.js +1 -2
  424. package/lib/loadCJSON.js +1 -2
  425. package/lib/localFunction.js +14 -15
  426. package/lib/logError.js +1 -2
  427. package/lib/logger.js +7 -7
  428. package/lib/management/apps.js +22 -22
  429. package/lib/management/database.js +11 -12
  430. package/lib/management/projects.js +57 -56
  431. package/lib/management/provisioning/errorHandler.js +3 -5
  432. package/lib/management/provisioning/provision.js +15 -9
  433. package/lib/management/studio.js +2 -3
  434. package/lib/mcp/errors.js +4 -4
  435. package/lib/mcp/index.js +16 -23
  436. package/lib/mcp/prompt.js +1 -2
  437. package/lib/mcp/prompts/core/consult.js +2 -3
  438. package/lib/mcp/prompts/crashlytics/connect.js +15 -122
  439. package/lib/mcp/prompts/dataconnect/schema.js +3 -3
  440. package/lib/mcp/prompts/index.js +8 -10
  441. package/lib/mcp/resource.js +3 -15
  442. package/lib/mcp/resources/guides/app_id.js +39 -0
  443. package/lib/mcp/resources/guides/crashlytics_connect.js +51 -0
  444. package/lib/mcp/resources/guides/crashlytics_investigations.js +51 -0
  445. package/lib/mcp/resources/guides/crashlytics_issues.js +42 -0
  446. package/lib/mcp/resources/guides/crashlytics_reports.js +112 -0
  447. package/lib/mcp/resources/index.js +11 -3
  448. package/lib/mcp/tool.js +3 -15
  449. package/lib/mcp/tools/apphosting/fetch_logs.js +3 -4
  450. package/lib/mcp/tools/apphosting/list_backends.js +1 -1
  451. package/lib/mcp/tools/auth/get_users.js +5 -16
  452. package/lib/mcp/tools/core/create_android_sha.js +4 -1
  453. package/lib/mcp/tools/core/get_environment.js +3 -3
  454. package/lib/mcp/tools/core/get_sdk_config.js +4 -5
  455. package/lib/mcp/tools/core/get_security_rules.js +1 -2
  456. package/lib/mcp/tools/core/init.js +2 -2
  457. package/lib/mcp/tools/core/logout.js +1 -1
  458. package/lib/mcp/tools/core/read_resources.js +2 -2
  459. package/lib/mcp/tools/core/validate_security_rules.js +1 -2
  460. package/lib/mcp/tools/crashlytics/events.js +43 -19
  461. package/lib/mcp/tools/crashlytics/index.js +1 -6
  462. package/lib/mcp/tools/crashlytics/issues.js +33 -12
  463. package/lib/mcp/tools/crashlytics/reports.js +66 -117
  464. package/lib/mcp/tools/dataconnect/list_services.js +2 -3
  465. package/lib/mcp/tools/firestore/converter.js +3 -5
  466. package/lib/mcp/tools/firestore/delete_document.js +1 -1
  467. package/lib/mcp/tools/functions/get_logs.js +14 -12
  468. package/lib/mcp/tools/functions/list_functions.js +1 -1
  469. package/lib/mcp/tools/index.js +17 -9
  470. package/lib/mcp/util/apptesting/availability.js +1 -2
  471. package/lib/mcp/util/availability.js +1 -2
  472. package/lib/mcp/util/crashlytics/availability.js +1 -2
  473. package/lib/mcp/util/dataconnect/compile.js +7 -6
  474. package/lib/mcp/util/dataconnect/converter.js +7 -10
  475. package/lib/mcp/util/dataconnect/emulator.js +1 -2
  476. package/lib/mcp/util.js +9 -11
  477. package/lib/messaging/sendMessage.js +1 -2
  478. package/lib/metaprogramming.js +1 -2
  479. package/lib/operation-poller.js +2 -2
  480. package/lib/profileReport.js +6 -6
  481. package/lib/profiler.js +1 -2
  482. package/lib/projectPath.js +1 -2
  483. package/lib/projectUtils.js +5 -6
  484. package/lib/prompt.js +22 -13
  485. package/lib/rc.js +5 -7
  486. package/lib/remoteconfig/deleteExperiment.js +1 -2
  487. package/lib/remoteconfig/deleteRollout.js +1 -2
  488. package/lib/remoteconfig/get.js +2 -3
  489. package/lib/remoteconfig/getExperiment.js +2 -2
  490. package/lib/remoteconfig/getRollout.js +2 -2
  491. package/lib/remoteconfig/interfaces.js +1 -1
  492. package/lib/remoteconfig/listExperiments.js +2 -2
  493. package/lib/remoteconfig/listRollouts.js +2 -2
  494. package/lib/remoteconfig/publish.js +1 -2
  495. package/lib/remoteconfig/rollback.js +1 -2
  496. package/lib/remoteconfig/versionslist.js +1 -2
  497. package/lib/requireAuth.js +4 -6
  498. package/lib/requireConfig.js +5 -8
  499. package/lib/requireDatabaseInstance.js +2 -2
  500. package/lib/requireHostingSite.js +1 -2
  501. package/lib/requireInteractive.js +1 -1
  502. package/lib/requirePermissions.js +1 -2
  503. package/lib/requireTosAcceptance.js +1 -2
  504. package/lib/responseToError.js +1 -2
  505. package/lib/rtdb.js +2 -3
  506. package/lib/rulesDeploy.js +3 -4
  507. package/lib/serve/functions.js +9 -1
  508. package/lib/serve/hosting.js +4 -5
  509. package/lib/serve/index.js +1 -2
  510. package/lib/shortenUrl.js +1 -2
  511. package/lib/templates.js +3 -4
  512. package/lib/throttler/throttler.js +3 -3
  513. package/lib/timeout.js +2 -3
  514. package/lib/track.js +23 -14
  515. package/lib/tsconfig.publish.tsbuildinfo +1 -0
  516. package/lib/unzip.js +2 -3
  517. package/lib/utils.js +62 -63
  518. package/lib/vsCodeUtils.js +2 -3
  519. package/package.json +6 -6
  520. package/templates/extensions/typescript/index.ts +1 -1
  521. package/templates/extensions/typescript/package.lint.json +1 -1
  522. package/templates/extensions/typescript/package.nolint.json +1 -1
  523. package/templates/extensions/typescript/tsconfig.json +2 -1
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assertType = exports.assertEnum = exports.assertHasOneOf = exports.assertHas = void 0;
3
+ exports.assertHas = assertHas;
4
+ exports.assertHasOneOf = assertHasOneOf;
5
+ exports.assertEnum = assertEnum;
6
+ exports.assertType = assertType;
4
7
  const clc = require("colorette");
5
8
  const error_1 = require("../error");
6
9
  function assertHas(obj, prop) {
@@ -9,7 +12,6 @@ function assertHas(obj, prop) {
9
12
  throw new error_1.FirebaseError(`Must contain "${prop}": ${objString}`);
10
13
  }
11
14
  }
12
- exports.assertHas = assertHas;
13
15
  function assertHasOneOf(obj, props) {
14
16
  const objString = clc.cyan(JSON.stringify(obj));
15
17
  let count = 0;
@@ -22,17 +24,14 @@ function assertHasOneOf(obj, props) {
22
24
  throw new error_1.FirebaseError(`Must contain exactly one of "${props.join(",")}": ${objString}`);
23
25
  }
24
26
  }
25
- exports.assertHasOneOf = assertHasOneOf;
26
27
  function assertEnum(obj, prop, valid) {
27
28
  const objString = clc.cyan(JSON.stringify(obj));
28
29
  if (valid.indexOf(obj[prop]) < 0) {
29
30
  throw new error_1.FirebaseError(`Field "${prop}" must be one of ${valid.join(", ")}: ${objString}`);
30
31
  }
31
32
  }
32
- exports.assertEnum = assertEnum;
33
33
  function assertType(prop, propValue, type) {
34
34
  if (typeof propValue !== type) {
35
35
  throw new error_1.FirebaseError(`Property "${prop}" must be of type ${type}`);
36
36
  }
37
37
  }
38
- exports.assertType = assertType;
@@ -1,6 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ɵcodegenFunctionsDirectory = exports.shouldUseDevModeHandle = exports.getValidBuildTargets = exports.ɵcodegenPublicDirectory = exports.getDevModeHandle = exports.build = exports.init = exports.discover = exports.supportedRange = exports.docsUrl = exports.type = exports.support = exports.name = void 0;
3
+ exports.supportedRange = exports.docsUrl = exports.type = exports.support = exports.name = void 0;
4
+ exports.discover = discover;
5
+ exports.init = init;
6
+ exports.build = build;
7
+ exports.getDevModeHandle = getDevModeHandle;
8
+ exports.ɵcodegenPublicDirectory = ɵcodegenPublicDirectory;
9
+ exports.getValidBuildTargets = getValidBuildTargets;
10
+ exports.shouldUseDevModeHandle = shouldUseDevModeHandle;
11
+ exports.ɵcodegenFunctionsDirectory = ɵcodegenFunctionsDirectory;
4
12
  const path_1 = require("path");
5
13
  const child_process_1 = require("child_process");
6
14
  const cross_spawn_1 = require("cross-spawn");
@@ -24,7 +32,6 @@ async function discover(dir) {
24
32
  const version = (0, utils_2.getAngularVersion)(dir);
25
33
  return { mayWantBackend: true, version };
26
34
  }
27
- exports.discover = discover;
28
35
  function init(setup, config) {
29
36
  (0, child_process_1.execSync)(`npx --yes -p @angular/cli@"${exports.supportedRange}" ng new ${setup.projectId} --directory ${setup.featureInfo.hosting.source} --skip-git`, {
30
37
  stdio: "inherit",
@@ -32,7 +39,6 @@ function init(setup, config) {
32
39
  });
33
40
  return Promise.resolve();
34
41
  }
35
- exports.init = init;
36
42
  async function build(dir, configuration) {
37
43
  const { targets, serveOptimizedImages, locales, baseHref: baseUrl, ssr, } = await (0, utils_2.getBuildConfig)(dir, configuration);
38
44
  await (0, utils_1.warnIfCustomBuildScript)(dir, exports.name, DEFAULT_BUILD_SCRIPT);
@@ -57,7 +63,6 @@ async function build(dir, configuration) {
57
63
  const i18n = !!locales;
58
64
  return { wantsBackend, i18n, rewrites, baseUrl };
59
65
  }
60
- exports.build = build;
61
66
  async function getDevModeHandle(dir, configuration) {
62
67
  const { targetStringFromTarget } = await (0, utils_1.relativeRequire)(dir, "@angular-devkit/architect");
63
68
  const { serveTarget } = await (0, utils_2.getContext)(dir, configuration);
@@ -81,7 +86,6 @@ async function getDevModeHandle(dir, configuration) {
81
86
  });
82
87
  return (0, utils_1.simpleProxy)(await host);
83
88
  }
84
- exports.getDevModeHandle = getDevModeHandle;
85
89
  async function ɵcodegenPublicDirectory(sourceDir, destDir, configuration) {
86
90
  const { outputPath, baseHref, defaultLocale, locales } = await (0, utils_2.getBrowserConfig)(sourceDir, configuration);
87
91
  await (0, promises_1.mkdir)((0, path_1.join)(destDir, baseHref), { recursive: true });
@@ -100,7 +104,6 @@ async function ɵcodegenPublicDirectory(sourceDir, destDir, configuration) {
100
104
  await (0, fs_extra_1.copy)((0, path_1.join)(sourceDir, outputPath), (0, path_1.join)(destDir, baseHref));
101
105
  }
102
106
  }
103
- exports.ɵcodegenPublicDirectory = ɵcodegenPublicDirectory;
104
107
  async function getValidBuildTargets(purpose, dir) {
105
108
  const validTargetNames = new Set(["development", "production"]);
106
109
  try {
@@ -117,17 +120,14 @@ async function getValidBuildTargets(purpose, dir) {
117
120
  const allTargets = await (0, utils_2.getAllTargets)(purpose, dir);
118
121
  return [...validTargetNames, ...allTargets];
119
122
  }
120
- exports.getValidBuildTargets = getValidBuildTargets;
121
123
  async function shouldUseDevModeHandle(targetOrConfiguration, dir) {
122
124
  const { serveTarget } = await (0, utils_2.getContext)(dir, targetOrConfiguration);
123
125
  if (!serveTarget)
124
126
  return false;
125
127
  return serveTarget.configuration !== "production";
126
128
  }
127
- exports.shouldUseDevModeHandle = shouldUseDevModeHandle;
128
129
  async function ɵcodegenFunctionsDirectory(sourceDir, destDir, configuration) {
129
130
  var _a;
130
- var _b;
131
131
  const { packageJson, serverOutputPath, browserOutputPath, defaultLocale, serverLocales, browserLocales, bundleDependencies, externalDependencies, baseHref, serveOptimizedImages, serverEntry, } = await (0, utils_2.getServerConfig)(sourceDir, configuration);
132
132
  const dotEnv = { __NG_BROWSER_OUTPUT_PATH__: browserOutputPath };
133
133
  let rewriteSource = undefined;
@@ -140,7 +140,7 @@ async function ɵcodegenFunctionsDirectory(sourceDir, destDir, configuration) {
140
140
  if (bundleDependencies) {
141
141
  const dependencies = {};
142
142
  for (const externalDependency of externalDependencies) {
143
- const packageVersion = (_a = (0, utils_1.findDependency)(externalDependency)) === null || _a === void 0 ? void 0 : _a.version;
143
+ const packageVersion = (0, utils_1.findDependency)(externalDependency)?.version;
144
144
  if (packageVersion) {
145
145
  dependencies[externalDependency] = packageVersion;
146
146
  }
@@ -154,11 +154,11 @@ async function ɵcodegenFunctionsDirectory(sourceDir, destDir, configuration) {
154
154
  packageJson.dependencies = {};
155
155
  }
156
156
  if (serveOptimizedImages) {
157
- (_b = packageJson.dependencies)["sharp"] || (_b["sharp"] = constants_1.SHARP_VERSION);
157
+ (_a = packageJson.dependencies)["sharp"] || (_a["sharp"] = constants_1.SHARP_VERSION);
158
158
  }
159
159
  let bootstrapScript;
160
160
  if (browserLocales) {
161
- const locales = serverLocales === null || serverLocales === void 0 ? void 0 : serverLocales.filter((it) => browserLocales.includes(it));
161
+ const locales = serverLocales?.filter((it) => browserLocales.includes(it));
162
162
  bootstrapScript = `const localizedApps = new Map();
163
163
  const ffi18n = import("firebase-frameworks/i18n");
164
164
  exports.handle = function(req,res) {
@@ -169,7 +169,7 @@ exports.handle = function(req,res) {
169
169
  if (localizedApps.has(locale)) {
170
170
  localizedApps.get(locale)(req,res);
171
171
  } else {
172
- ${(serverEntry === null || serverEntry === void 0 ? void 0 : serverEntry.endsWith(".mjs"))
172
+ ${serverEntry?.endsWith(".mjs")
173
173
  ? `import(\`./${serverOutputPath}/\${locale}/${serverEntry}\`)`
174
174
  : `Promise.resolve(require(\`./${serverOutputPath}/\${locale}/${serverEntry}\`))`}.then(server => {
175
175
  const app = server.app(locale);
@@ -188,7 +188,7 @@ exports.handle = function(req,res) {
188
188
  const socket = 'express.sock';
189
189
  process.env.PORT = socket;
190
190
 
191
- ${(serverEntry === null || serverEntry === void 0 ? void 0 : serverEntry.endsWith(".mjs"))
191
+ ${serverEntry?.endsWith(".mjs")
192
192
  ? `import(\`./${serverOutputPath}/${serverEntry}\`)`
193
193
  : `Promise.resolve(require('./${serverOutputPath}/${serverEntry}'))`}.then(({ default: defHandler, reqHandler, app }) => {
194
194
  const handler = app?.() ?? reqHandler ?? defHandler;
@@ -209,4 +209,3 @@ exports.handle = (req,res) => app.then(it => it(req,res));\n`;
209
209
  }
210
210
  return { bootstrapScript, packageJson, dotEnv, rewriteSource };
211
211
  }
212
- exports.ɵcodegenFunctionsDirectory = ɵcodegenFunctionsDirectory;
@@ -1,6 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getBuilderType = exports.tryToGetOptionsForTarget = exports.getAngularVersion = exports.getBuildConfig = exports.getServerConfig = exports.getBrowserConfig = exports.getContext = exports.getAllTargets = exports.BuilderType = void 0;
3
+ exports.BuilderType = void 0;
4
+ exports.getAllTargets = getAllTargets;
5
+ exports.getContext = getContext;
6
+ exports.getBrowserConfig = getBrowserConfig;
7
+ exports.getServerConfig = getServerConfig;
8
+ exports.getBuildConfig = getBuildConfig;
9
+ exports.getAngularVersion = getAngularVersion;
10
+ exports.tryToGetOptionsForTarget = tryToGetOptionsForTarget;
11
+ exports.getBuilderType = getBuilderType;
4
12
  const utils_1 = require("../utils");
5
13
  const error_1 = require("../../error");
6
14
  const path_1 = require("path");
@@ -8,7 +16,6 @@ const assert_1 = require("assert");
8
16
  const utils_2 = require("../../utils");
9
17
  const semver_1 = require("semver");
10
18
  async function localesForTarget(dir, architectHost, target, workspaceProject) {
11
- var _a;
12
19
  const { targetStringFromTarget } = await (0, utils_1.relativeRequire)(dir, "@angular-devkit/architect");
13
20
  const targetOptions = await architectHost.getOptionsForTarget(target);
14
21
  if (!targetOptions) {
@@ -18,7 +25,7 @@ async function localesForTarget(dir, architectHost, target, workspaceProject) {
18
25
  let locales = undefined;
19
26
  let defaultLocale = undefined;
20
27
  if (targetOptions.localize) {
21
- const i18n = (_a = workspaceProject.extensions) === null || _a === void 0 ? void 0 : _a.i18n;
28
+ const i18n = workspaceProject.extensions?.i18n;
22
29
  if (!i18n)
23
30
  throw new error_1.FirebaseError(`No i18n config on project.`);
24
31
  if (typeof i18n.sourceLocale === "string") {
@@ -64,7 +71,7 @@ var BuilderType;
64
71
  BuilderType["BROWSER_ESBUILD"] = "browser-esbuild";
65
72
  BuilderType["APPLICATION"] = "application";
66
73
  BuilderType["PRERENDER"] = "prerender";
67
- })(BuilderType = exports.BuilderType || (exports.BuilderType = {}));
74
+ })(BuilderType || (exports.BuilderType = BuilderType = {}));
68
75
  const DEV_SERVER_TARGETS = [BuilderType.DEV_SERVER, BuilderType.SSR_DEV_SERVER];
69
76
  function getValidBuilderTypes(purpose) {
70
77
  return [
@@ -106,7 +113,6 @@ async function getAllTargets(purpose, dir) {
106
113
  });
107
114
  return targets;
108
115
  }
109
- exports.getAllTargets = getAllTargets;
110
116
  async function getContext(dir, targetOrConfiguration) {
111
117
  const [{ NodeJsAsyncHost }, { workspaces }, { WorkspaceNodeModulesArchitectHost }, { Architect, targetFromTargetString, targetStringFromTarget }, { parse },] = await Promise.all([
112
118
  (0, utils_1.relativeRequire)(dir, "@angular-devkit/core/node"),
@@ -196,7 +202,7 @@ async function getContext(dir, targetOrConfiguration) {
196
202
  if (deployTarget) {
197
203
  const options = await architectHost
198
204
  .getOptionsForTarget(deployTarget)
199
- .catch(() => { var _a; return (_a = workspaceProject.targets.get(deployTarget.target)) === null || _a === void 0 ? void 0 : _a.options; });
205
+ .catch(() => workspaceProject.targets.get(deployTarget.target)?.options);
200
206
  if (!options)
201
207
  throw new error_1.FirebaseError("Unable to get options for ng-deploy.");
202
208
  if (options.buildTarget) {
@@ -227,10 +233,10 @@ async function getContext(dir, targetOrConfiguration) {
227
233
  if (!browserTarget) {
228
234
  throw new error_1.FirebaseError("ng-deploy with prerenderTarget requires a browserTarget");
229
235
  }
230
- if (targetStringFromTarget(browserTarget) !== (prerenderOptions === null || prerenderOptions === void 0 ? void 0 : prerenderOptions.browserTarget)) {
236
+ if (targetStringFromTarget(browserTarget) !== prerenderOptions?.browserTarget) {
231
237
  throw new error_1.FirebaseError("ng-deploy's browserTarget and prerender's browserTarget do not match. Please check your angular.json");
232
238
  }
233
- if (serverTarget && targetStringFromTarget(serverTarget) !== (prerenderOptions === null || prerenderOptions === void 0 ? void 0 : prerenderOptions.serverTarget)) {
239
+ if (serverTarget && targetStringFromTarget(serverTarget) !== prerenderOptions?.serverTarget) {
234
240
  throw new error_1.FirebaseError("ng-deploy's serverTarget and prerender's serverTarget do not match. Please check your angular.json");
235
241
  }
236
242
  if (!serverTarget) {
@@ -250,9 +256,9 @@ async function getContext(dir, targetOrConfiguration) {
250
256
  configuration: configuration || defaultConfiguration,
251
257
  };
252
258
  const options = await architectHost.getOptionsForTarget(prerenderTarget);
253
- (0, utils_2.assertIsString)(options === null || options === void 0 ? void 0 : options.browserTarget);
259
+ (0, utils_2.assertIsString)(options?.browserTarget);
254
260
  browserTarget = targetFromTargetString(options.browserTarget);
255
- (0, utils_2.assertIsString)(options === null || options === void 0 ? void 0 : options.serverTarget);
261
+ (0, utils_2.assertIsString)(options?.serverTarget);
256
262
  serverTarget = targetFromTargetString(options.serverTarget);
257
263
  }
258
264
  if (!buildTarget && !browserTarget && workspaceProject.targets.has("build")) {
@@ -353,7 +359,7 @@ async function getContext(dir, targetOrConfiguration) {
353
359
  const baseHref = browserTargetOptions.baseHref || "/";
354
360
  (0, utils_2.assertIsString)(baseHref);
355
361
  const buildTargetOptions = buildTarget && (await tryToGetOptionsForTarget(architectHost, buildTarget));
356
- const ssr = buildTarget ? !!(buildTargetOptions === null || buildTargetOptions === void 0 ? void 0 : buildTargetOptions.ssr) : !!serverTarget;
362
+ const ssr = buildTarget ? !!buildTargetOptions?.ssr : !!serverTarget;
357
363
  return {
358
364
  architect,
359
365
  architectHost,
@@ -369,7 +375,6 @@ async function getContext(dir, targetOrConfiguration) {
369
375
  ssr,
370
376
  };
371
377
  }
372
- exports.getContext = getContext;
373
378
  async function getBrowserConfig(sourceDir, configuration) {
374
379
  const { architectHost, browserTarget, buildTarget, baseHref, workspaceProject } = await getContext(sourceDir, configuration);
375
380
  const buildOrBrowserTarget = buildTarget || browserTarget;
@@ -381,22 +386,20 @@ async function getBrowserConfig(sourceDir, configuration) {
381
386
  architectHost.getOptionsForTarget(buildOrBrowserTarget),
382
387
  architectHost.getBuilderNameForTarget(buildOrBrowserTarget),
383
388
  ]);
384
- const buildOutputPath = typeof (targetOptions === null || targetOptions === void 0 ? void 0 : targetOptions.outputPath) === "string"
389
+ const buildOutputPath = typeof targetOptions?.outputPath === "string"
385
390
  ? targetOptions.outputPath
386
391
  : (0, path_1.join)("dist", buildOrBrowserTarget.project);
387
392
  const outputPath = (0, path_1.join)(buildOutputPath, buildTarget && getBuilderType(builderName) === BuilderType.APPLICATION ? "browser" : "");
388
393
  return { locales, baseHref, outputPath, defaultLocale };
389
394
  }
390
- exports.getBrowserConfig = getBrowserConfig;
391
395
  async function getServerConfig(sourceDir, configuration) {
392
- var _a;
393
396
  const { architectHost, host, buildTarget, serverTarget, browserTarget, baseHref, workspaceProject, serveOptimizedImages, ssr, } = await getContext(sourceDir, configuration);
394
397
  const buildOrBrowserTarget = buildTarget || browserTarget;
395
398
  if (!buildOrBrowserTarget) {
396
399
  throw new assert_1.AssertionError({ message: "expected build or browser target to be defined" });
397
400
  }
398
401
  const browserTargetOptions = await architectHost.getOptionsForTarget(buildOrBrowserTarget);
399
- const buildOutputPath = typeof (browserTargetOptions === null || browserTargetOptions === void 0 ? void 0 : browserTargetOptions.outputPath) === "string"
402
+ const buildOutputPath = typeof browserTargetOptions?.outputPath === "string"
400
403
  ? browserTargetOptions.outputPath
401
404
  : (0, path_1.join)("dist", buildOrBrowserTarget.project);
402
405
  const browserOutputPath = (0, path_1.join)(buildOutputPath, buildTarget ? "browser" : "")
@@ -428,7 +431,7 @@ async function getServerConfig(sourceDir, configuration) {
428
431
  message: `expected "JsonObject" but got "${typeof serverTargetOptions}"`,
429
432
  });
430
433
  }
431
- const serverTargetOutputPath = typeof (serverTargetOptions === null || serverTargetOptions === void 0 ? void 0 : serverTargetOptions.outputPath) === "string"
434
+ const serverTargetOutputPath = typeof serverTargetOptions?.outputPath === "string"
432
435
  ? serverTargetOptions.outputPath
433
436
  : (0, path_1.join)("dist", buildOrServerTarget.project);
434
437
  const serverOutputPath = (0, path_1.join)(serverTargetOutputPath, buildTarget ? "server" : "")
@@ -439,7 +442,7 @@ async function getServerConfig(sourceDir, configuration) {
439
442
  }
440
443
  const serverEntry = buildTarget ? "server.mjs" : serverTarget && "main.js";
441
444
  const externalDependencies = serverTargetOptions.externalDependencies || [];
442
- const bundleDependencies = (_a = serverTargetOptions.bundleDependencies) !== null && _a !== void 0 ? _a : true;
445
+ const bundleDependencies = serverTargetOptions.bundleDependencies ?? true;
443
446
  const { locales: browserLocales } = await localesForTarget(sourceDir, architectHost, buildOrBrowserTarget, workspaceProject);
444
447
  return {
445
448
  packageJson,
@@ -455,7 +458,6 @@ async function getServerConfig(sourceDir, configuration) {
455
458
  serverEntry,
456
459
  };
457
460
  }
458
- exports.getServerConfig = getServerConfig;
459
461
  async function getBuildConfig(sourceDir, configuration) {
460
462
  const { targetStringFromTarget } = await (0, utils_1.relativeRequire)(sourceDir, "@angular-devkit/architect");
461
463
  const { buildTarget, browserTarget, baseHref, prerenderTarget, serverTarget, architectHost, workspaceProject, serveOptimizedImages, ssr, } = await getContext(sourceDir, configuration);
@@ -477,7 +479,6 @@ async function getBuildConfig(sourceDir, configuration) {
477
479
  ssr,
478
480
  };
479
481
  }
480
- exports.getBuildConfig = getBuildConfig;
481
482
  function getAngularVersion(cwd) {
482
483
  const dependency = (0, utils_1.findDependency)("@angular/core", { cwd, depth: 0, omitDev: false });
483
484
  if (!dependency)
@@ -487,11 +488,9 @@ function getAngularVersion(cwd) {
487
488
  return dependency.version;
488
489
  return angularVersionSemver.toString();
489
490
  }
490
- exports.getAngularVersion = getAngularVersion;
491
491
  async function tryToGetOptionsForTarget(architectHost, target) {
492
492
  return await architectHost.getOptionsForTarget(target).catch(throwCannotDetermineTarget);
493
493
  }
494
- exports.tryToGetOptionsForTarget = tryToGetOptionsForTarget;
495
494
  function throwCannotDetermineTarget(error) {
496
495
  throw new error_1.FirebaseError(`Unable to determine the application to deploy, specify a target via the FIREBASE_FRAMEWORKS_BUILD_TARGET environment variable.`, { original: error });
497
496
  }
@@ -503,4 +502,3 @@ function getBuilderType(builder) {
503
502
  }
504
503
  return builderType;
505
504
  }
506
- exports.getBuilderType = getBuilderType;
@@ -1,6 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDevModeHandle = exports.ɵcodegenFunctionsDirectory = exports.ɵcodegenPublicDirectory = exports.build = exports.discover = exports.supportedRange = exports.type = exports.support = exports.name = void 0;
3
+ exports.supportedRange = exports.type = exports.support = exports.name = void 0;
4
+ exports.discover = discover;
5
+ exports.build = build;
6
+ exports.ɵcodegenPublicDirectory = ɵcodegenPublicDirectory;
7
+ exports.ɵcodegenFunctionsDirectory = ɵcodegenFunctionsDirectory;
8
+ exports.getDevModeHandle = getDevModeHandle;
4
9
  const cross_spawn_1 = require("cross-spawn");
5
10
  const fs_extra_1 = require("fs-extra");
6
11
  const path_1 = require("path");
@@ -23,14 +28,13 @@ async function discover(dir) {
23
28
  version,
24
29
  };
25
30
  }
26
- exports.discover = discover;
27
31
  const DEFAULT_BUILD_SCRIPT = ["astro build"];
28
32
  async function build(cwd) {
29
33
  const cli = (0, utils_1.getNodeModuleBin)("astro", cwd);
30
34
  await (0, utils_1.warnIfCustomBuildScript)(cwd, exports.name, DEFAULT_BUILD_SCRIPT);
31
35
  const { output, adapter } = await (0, utils_2.getConfig)(cwd);
32
36
  const wantsBackend = output !== "static";
33
- if (wantsBackend && (adapter === null || adapter === void 0 ? void 0 : adapter.name) !== "@astrojs/node") {
37
+ if (wantsBackend && adapter?.name !== "@astrojs/node") {
34
38
  throw new error_1.FirebaseError("Deploying an Astro application with SSR on Firebase Hosting requires the @astrojs/node adapter in middleware mode. https://docs.astro.build/en/guides/integrations-guide/node/");
35
39
  }
36
40
  const build = (0, cross_spawn_1.sync)(cli, ["build"], { cwd, stdio: "inherit" });
@@ -38,13 +42,11 @@ async function build(cwd) {
38
42
  throw new error_1.FirebaseError("Unable to build your Astro app");
39
43
  return { wantsBackend };
40
44
  }
41
- exports.build = build;
42
45
  async function ɵcodegenPublicDirectory(root, dest) {
43
46
  const { outDir, output } = await (0, utils_2.getConfig)(root);
44
47
  const assetPath = (0, path_1.join)(root, outDir, output !== "static" ? "client" : "");
45
48
  await (0, fs_extra_1.copy)(assetPath, dest);
46
49
  }
47
- exports.ɵcodegenPublicDirectory = ɵcodegenPublicDirectory;
48
50
  async function ɵcodegenFunctionsDirectory(sourceDir, destDir) {
49
51
  const { outDir } = await (0, utils_2.getConfig)(sourceDir);
50
52
  const packageJson = await (0, utils_1.readJSON)((0, path_1.join)(sourceDir, "package.json"));
@@ -54,7 +56,6 @@ async function ɵcodegenFunctionsDirectory(sourceDir, destDir) {
54
56
  bootstrapScript: (0, utils_2.getBootstrapScript)(),
55
57
  };
56
58
  }
57
- exports.ɵcodegenFunctionsDirectory = ɵcodegenFunctionsDirectory;
58
59
  async function getDevModeHandle(cwd) {
59
60
  const host = new Promise((resolve, reject) => {
60
61
  const cli = (0, utils_1.getNodeModuleBin)("astro", cwd);
@@ -72,4 +73,3 @@ async function getDevModeHandle(cwd) {
72
73
  });
73
74
  return (0, utils_1.simpleProxy)(await host);
74
75
  }
75
- exports.getDevModeHandle = getDevModeHandle;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAstroVersion = exports.getConfig = exports.getBootstrapScript = void 0;
3
+ exports.getBootstrapScript = getBootstrapScript;
4
+ exports.getConfig = getConfig;
5
+ exports.getAstroVersion = getAstroVersion;
4
6
  const path_1 = require("path");
5
7
  const utils_1 = require("../utils");
6
8
  const semver_1 = require("semver");
@@ -9,7 +11,6 @@ const { dynamicImport } = require(true && "../../dynamicImport");
9
11
  function getBootstrapScript() {
10
12
  return `const entry = import('./entry.mjs');\nexport const handle = async (req, res) => (await entry).handler(req, res)`;
11
13
  }
12
- exports.getBootstrapScript = getBootstrapScript;
13
14
  async function getConfig(cwd) {
14
15
  const astroDirectory = (0, path_1.dirname)(require.resolve("astro/package.json", { paths: [cwd] }));
15
16
  const version = getAstroVersion(cwd);
@@ -33,9 +34,6 @@ async function getConfig(cwd) {
33
34
  adapter: config.adapter,
34
35
  };
35
36
  }
36
- exports.getConfig = getConfig;
37
37
  function getAstroVersion(cwd) {
38
- var _a;
39
- return (_a = (0, utils_1.findDependency)("astro", { cwd, depth: 0, omitDev: false })) === null || _a === void 0 ? void 0 : _a.version;
38
+ return (0, utils_1.findDependency)("astro", { cwd, depth: 0, omitDev: false })?.version;
40
39
  }
41
- exports.getAstroVersion = getAstroVersion;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readOrNull = exports.LocalFileSystem = void 0;
3
+ exports.LocalFileSystem = void 0;
4
+ exports.readOrNull = readOrNull;
4
5
  const fs_extra_1 = require("fs-extra");
5
6
  const path = require("path");
6
7
  const error_1 = require("../../../error");
@@ -42,11 +43,10 @@ async function readOrNull(fs, path) {
42
43
  return fs.read(path);
43
44
  }
44
45
  catch (err) {
45
- if (err && typeof err === "object" && (err === null || err === void 0 ? void 0 : err.code) === "ENOENT") {
46
+ if (err && typeof err === "object" && err?.code === "ENOENT") {
46
47
  logger_1.logger.debug("ENOENT error occured while reading file.");
47
48
  return null;
48
49
  }
49
50
  throw new Error(`Unknown error occured while reading file: ${err}`);
50
51
  }
51
52
  }
52
- exports.readOrNull = readOrNull;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.frameworkMatcher = exports.removeEmbededFrameworks = exports.filterFrameworksWithFiles = exports.filterFrameworksWithDependencies = void 0;
3
+ exports.filterFrameworksWithDependencies = filterFrameworksWithDependencies;
4
+ exports.filterFrameworksWithFiles = filterFrameworksWithFiles;
5
+ exports.removeEmbededFrameworks = removeEmbededFrameworks;
6
+ exports.frameworkMatcher = frameworkMatcher;
4
7
  const error_1 = require("../../../error");
5
8
  const logger_1 = require("../../../logger");
6
9
  function filterFrameworksWithDependencies(allFrameworkSpecs, dependencies) {
@@ -10,7 +13,6 @@ function filterFrameworksWithDependencies(allFrameworkSpecs, dependencies) {
10
13
  });
11
14
  });
12
15
  }
13
- exports.filterFrameworksWithDependencies = filterFrameworksWithDependencies;
14
16
  async function filterFrameworksWithFiles(allFrameworkSpecs, fs) {
15
17
  try {
16
18
  const filteredFrameworks = [];
@@ -40,7 +42,6 @@ async function filterFrameworksWithFiles(allFrameworkSpecs, fs) {
40
42
  throw error;
41
43
  }
42
44
  }
43
- exports.filterFrameworksWithFiles = filterFrameworksWithFiles;
44
45
  function removeEmbededFrameworks(allFrameworkSpecs) {
45
46
  const embededFrameworkSet = new Set();
46
47
  for (const framework of allFrameworkSpecs) {
@@ -53,7 +54,6 @@ function removeEmbededFrameworks(allFrameworkSpecs) {
53
54
  }
54
55
  return allFrameworkSpecs.filter((item) => !embededFrameworkSet.has(item.id));
55
56
  }
56
- exports.removeEmbededFrameworks = removeEmbededFrameworks;
57
57
  async function frameworkMatcher(runtime, fs, frameworks, dependencies) {
58
58
  try {
59
59
  const filterRuntimeFramework = frameworks.filter((framework) => framework.runtime === runtime);
@@ -73,4 +73,3 @@ async function frameworkMatcher(runtime, fs, frameworks, dependencies) {
73
73
  throw new error_1.FirebaseError(`Failed to match the correct framework: ${error}`);
74
74
  }
75
75
  }
76
- exports.frameworkMatcher = frameworkMatcher;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.discover = void 0;
3
+ exports.discover = discover;
4
4
  const node_1 = require("./runtime/node");
5
5
  const error_1 = require("../../../error");
6
6
  const supportedRuntimes = [new node_1.NodejsRuntime()];
@@ -29,4 +29,3 @@ async function discover(fs, allFrameworkSpecs) {
29
29
  throw new error_1.FirebaseError(`Failed to identify required specifications to execute the application: ${error}`);
30
30
  }
31
31
  }
32
- exports.discover = discover;
@@ -44,7 +44,7 @@ class NodejsRuntime {
44
44
  }
45
45
  }
46
46
  getDependencies(packageJSON) {
47
- return Object.assign(Object.assign({}, packageJSON.dependencies), packageJSON.devDependencies);
47
+ return { ...packageJSON.dependencies, ...packageJSON.devDependencies };
48
48
  }
49
49
  packageManagerInstallCommand(packageManager) {
50
50
  const packages = [];
@@ -80,40 +80,37 @@ class NodejsRuntime {
80
80
  return command;
81
81
  }
82
82
  getBuildCommand(packageManager, scripts, matchedFramework) {
83
- var _a;
84
83
  let buildCommand = { cmd: "" };
85
- if (scripts === null || scripts === void 0 ? void 0 : scripts.build) {
84
+ if (scripts?.build) {
86
85
  buildCommand.cmd = this.executeScript(packageManager, "build");
87
86
  }
88
- else if (matchedFramework && ((_a = matchedFramework.commands) === null || _a === void 0 ? void 0 : _a.build)) {
87
+ else if (matchedFramework && matchedFramework.commands?.build) {
89
88
  buildCommand = matchedFramework.commands.build;
90
89
  buildCommand = this.executeFrameworkCommand(packageManager, buildCommand);
91
90
  }
92
91
  return buildCommand.cmd === "" ? undefined : buildCommand;
93
92
  }
94
93
  getDevCommand(packageManager, scripts, matchedFramework) {
95
- var _a;
96
94
  let devCommand = { cmd: "", env: { NODE_ENV: "dev" } };
97
- if (scripts === null || scripts === void 0 ? void 0 : scripts.dev) {
95
+ if (scripts?.dev) {
98
96
  devCommand.cmd = this.executeScript(packageManager, "dev");
99
97
  }
100
- else if (matchedFramework && ((_a = matchedFramework.commands) === null || _a === void 0 ? void 0 : _a.dev)) {
98
+ else if (matchedFramework && matchedFramework.commands?.dev) {
101
99
  devCommand = matchedFramework.commands.dev;
102
100
  devCommand = this.executeFrameworkCommand(packageManager, devCommand);
103
101
  }
104
102
  return devCommand.cmd === "" ? undefined : devCommand;
105
103
  }
106
104
  async getRunCommand(packageManager, scripts, matchedFramework, fs) {
107
- var _a;
108
105
  let runCommand = { cmd: "", env: { NODE_ENV: "production" } };
109
- if (scripts === null || scripts === void 0 ? void 0 : scripts.start) {
106
+ if (scripts?.start) {
110
107
  runCommand.cmd = this.executeScript(packageManager, "start");
111
108
  }
112
- else if (matchedFramework && ((_a = matchedFramework.commands) === null || _a === void 0 ? void 0 : _a.run)) {
109
+ else if (matchedFramework && matchedFramework.commands?.run) {
113
110
  runCommand = matchedFramework.commands.run;
114
111
  runCommand = this.executeFrameworkCommand(packageManager, runCommand);
115
112
  }
116
- else if (scripts === null || scripts === void 0 ? void 0 : scripts.main) {
113
+ else if (scripts?.main) {
117
114
  runCommand.cmd = `node ${scripts.main}`;
118
115
  }
119
116
  else if (await fs.exists("index.js")) {
@@ -100,7 +100,7 @@ class DockerDriver {
100
100
  console.log(`executing docker build: ${args.join(" ")} ${contextDir}`);
101
101
  console.log(this.dockerfileBuilder.toString());
102
102
  return spawn.sync("docker", ["buildx", "build", ...args, "-f", "-", contextDir], {
103
- env: Object.assign(Object.assign({}, process.env), this.spec.environmentVariables),
103
+ env: { ...process.env, ...this.spec.environmentVariables },
104
104
  input: this.dockerfileBuilder.toString(),
105
105
  stdio: ["pipe", "inherit", "inherit"],
106
106
  });
@@ -142,8 +142,7 @@ class DockerDriver {
142
142
  }
143
143
  }
144
144
  build() {
145
- var _a;
146
- if ((_a = this.spec.detectedCommands) === null || _a === void 0 ? void 0 : _a.build) {
145
+ if (this.spec.detectedCommands?.build) {
147
146
  this.dockerfileBuilder
148
147
  .fromLastStage(DOCKER_STAGE_BUILD)
149
148
  .copyForFirebase(".", ".")
@@ -152,8 +151,7 @@ class DockerDriver {
152
151
  }
153
152
  }
154
153
  export(bundle) {
155
- var _a;
156
- const startCmd = (_a = bundle.server) === null || _a === void 0 ? void 0 : _a.start.cmd;
154
+ const startCmd = bundle.server?.start.cmd;
157
155
  if (startCmd) {
158
156
  const exportStage = "exporter";
159
157
  this.dockerfileBuilder
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.genHookScript = exports.BUNDLE_PATH = void 0;
3
+ exports.BUNDLE_PATH = void 0;
4
+ exports.genHookScript = genHookScript;
4
5
  exports.BUNDLE_PATH = "/home/firebase/app/.firebase/.output/bundle.json";
5
6
  function genHookScript(bundle, hook) {
6
7
  let hookSrc = hook.toString().trimLeft();
@@ -19,4 +20,3 @@ const bundle = (${hookSrc})(${JSON.stringify(bundle)});
19
20
  fs.writeFileSync("${exports.BUNDLE_PATH}", JSON.stringify(bundle));
20
21
  `;
21
22
  }
22
- exports.genHookScript = genHookScript;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDriver = exports.SUPPORTED_MODES = void 0;
3
+ exports.SUPPORTED_MODES = void 0;
4
+ exports.getDriver = getDriver;
4
5
  const local_1 = require("./local");
5
6
  const docker_1 = require("./docker");
6
7
  exports.SUPPORTED_MODES = ["local", "docker"];
@@ -13,4 +14,3 @@ function getDriver(mode, app) {
13
14
  }
14
15
  throw new Error(`Unsupported mode ${mode}`);
15
16
  }
16
- exports.getDriver = getDriver;
@@ -10,7 +10,7 @@ class LocalDriver {
10
10
  }
11
11
  execCmd(cmd, args) {
12
12
  const ret = spawn.sync(cmd, args, {
13
- env: Object.assign(Object.assign({}, process.env), this.spec.environmentVariables),
13
+ env: { ...process.env, ...this.spec.environmentVariables },
14
14
  stdio: ["pipe", "inherit", "inherit"],
15
15
  });
16
16
  if (ret.error) {
@@ -28,8 +28,7 @@ class LocalDriver {
28
28
  }
29
29
  }
30
30
  build() {
31
- var _a;
32
- if ((_a = this.spec.detectedCommands) === null || _a === void 0 ? void 0 : _a.build) {
31
+ if (this.spec.detectedCommands?.build) {
33
32
  const [cmd, ...args] = this.spec.detectedCommands.build.cmd.split(" ");
34
33
  this.execCmd(cmd, args);
35
34
  }