firebase-tools 15.0.0 → 15.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (523) hide show
  1. package/lib/accountExporter.js +3 -5
  2. package/lib/accountImporter.js +4 -5
  3. package/lib/api.js +3 -3
  4. package/lib/apiv2.js +9 -13
  5. package/lib/appUtils.js +33 -36
  6. package/lib/appdistribution/client.js +4 -8
  7. package/lib/appdistribution/distribution.js +4 -4
  8. package/lib/appdistribution/options-parser-util.js +8 -9
  9. package/lib/appdistribution/types.js +2 -2
  10. package/lib/appdistribution/yaml_helper.js +33 -17
  11. package/lib/apphosting/app.js +8 -13
  12. package/lib/apphosting/backend.js +34 -24
  13. package/lib/apphosting/config.js +14 -14
  14. package/lib/apphosting/githubConnections.js +38 -35
  15. package/lib/apphosting/localbuilds.js +4 -6
  16. package/lib/apphosting/repo.js +24 -20
  17. package/lib/apphosting/rollout.js +12 -5
  18. package/lib/apphosting/secrets/dialogs.js +9 -9
  19. package/lib/apphosting/secrets/index.js +9 -11
  20. package/lib/apphosting/utils.js +2 -3
  21. package/lib/apphosting/yaml.js +12 -11
  22. package/lib/apptesting/ensureProjectConfigured.js +1 -2
  23. package/lib/apptesting/invokeTests.js +2 -3
  24. package/lib/apptesting/parseTestFiles.js +5 -6
  25. package/lib/apptesting/types.js +2 -2
  26. package/lib/archiveDirectory.js +1 -2
  27. package/lib/auth.js +36 -40
  28. package/lib/bin/cli.js +2 -3
  29. package/lib/bin/mcp.js +47 -10
  30. package/lib/checkMinRequiredVersion.js +1 -2
  31. package/lib/checkValidTargetFilters.js +1 -2
  32. package/lib/command.js +6 -9
  33. package/lib/commands/appdistribution-testers-list.js +2 -3
  34. package/lib/commands/apphosting-backends-list.js +4 -6
  35. package/lib/commands/apphosting-builds-create.js +2 -3
  36. package/lib/commands/apphosting-builds-get.js +1 -2
  37. package/lib/commands/apphosting-rollouts-list.js +1 -2
  38. package/lib/commands/apps-init.js +1 -1
  39. package/lib/commands/{apptesting-execute.js → apptesting-wata.js} +3 -4
  40. package/lib/commands/crashlytics-symbols-upload.js +2 -2
  41. package/lib/commands/dataconnect-execute.js +4 -4
  42. package/lib/commands/dataconnect-sdk-generate.js +5 -6
  43. package/lib/commands/dataconnect-services-list.js +7 -8
  44. package/lib/commands/dataconnect-sql-diff.js +1 -2
  45. package/lib/commands/dataconnect-sql-migrate.js +4 -3
  46. package/lib/commands/dataconnect-sql-setup.js +2 -2
  47. package/lib/commands/dataconnect-sql-shell.js +5 -1
  48. package/lib/commands/emulators-start.js +1 -2
  49. package/lib/commands/ext-configure.js +6 -4
  50. package/lib/commands/ext-dev-list.js +2 -3
  51. package/lib/commands/ext-dev-upload.js +2 -2
  52. package/lib/commands/ext-export.js +1 -1
  53. package/lib/commands/ext-info.js +2 -3
  54. package/lib/commands/ext-install.js +5 -7
  55. package/lib/commands/firestore-backups-list.js +1 -2
  56. package/lib/commands/firestore-backups-schedules-list.js +1 -2
  57. package/lib/commands/firestore-indexes-list.js +1 -2
  58. package/lib/commands/firestore-utils.js +1 -2
  59. package/lib/commands/functions-artifacts-setpolicy.js +1 -2
  60. package/lib/commands/functions-config-export.js +2 -3
  61. package/lib/commands/hosting-channel-deploy.js +2 -2
  62. package/lib/commands/hosting-clone.js +2 -3
  63. package/lib/commands/hosting-sites-create.js +1 -1
  64. package/lib/commands/index.js +2 -3
  65. package/lib/commands/init.js +4 -5
  66. package/lib/commands/internaltesting-functions-discover.js +1 -1
  67. package/lib/commands/login.js +4 -5
  68. package/lib/commands/logout.js +3 -3
  69. package/lib/commands/projects-create.js +1 -1
  70. package/lib/commands/remoteconfig-experiments-list.js +2 -3
  71. package/lib/commands/remoteconfig-get.js +1 -1
  72. package/lib/commands/remoteconfig-rollback.js +1 -2
  73. package/lib/commands/remoteconfig-rollouts-list.js +2 -3
  74. package/lib/commands/remoteconfig-versions-list.js +3 -4
  75. package/lib/commands/use.js +3 -3
  76. package/lib/config.js +4 -5
  77. package/lib/crashlytics/buildToolsJarHelper.js +3 -5
  78. package/lib/crashlytics/events.js +4 -7
  79. package/lib/crashlytics/filters.js +10 -12
  80. package/lib/crashlytics/issues.js +2 -3
  81. package/lib/crashlytics/notes.js +3 -4
  82. package/lib/crashlytics/reports.js +21 -15
  83. package/lib/crashlytics/types.js +7 -7
  84. package/lib/crashlytics/utils.js +4 -4
  85. package/lib/database/api.js +2 -3
  86. package/lib/database/import.js +4 -4
  87. package/lib/database/metadata.js +5 -6
  88. package/lib/database/rulesConfig.js +2 -3
  89. package/lib/dataconnect/build.js +10 -13
  90. package/lib/dataconnect/checkIam.js +1 -2
  91. package/lib/dataconnect/client.js +15 -18
  92. package/lib/dataconnect/dataplaneClient.js +6 -6
  93. package/lib/dataconnect/ensureApis.js +2 -3
  94. package/lib/dataconnect/errors.js +8 -11
  95. package/lib/dataconnect/filters.js +2 -3
  96. package/lib/dataconnect/freeTrial.js +3 -4
  97. package/lib/dataconnect/graphqlError.js +5 -8
  98. package/lib/dataconnect/load.js +10 -11
  99. package/lib/dataconnect/names.js +14 -18
  100. package/lib/dataconnect/prompts.js +1 -2
  101. package/lib/dataconnect/provisionCloudSql.js +13 -17
  102. package/lib/dataconnect/schemaMigration.js +60 -27
  103. package/lib/dataconnect/types.js +10 -12
  104. package/lib/dataconnect/webhook.js +3 -3
  105. package/lib/defaultCredentials.js +3 -4
  106. package/lib/deploy/apphosting/deploy.js +2 -3
  107. package/lib/deploy/apphosting/prepare.js +3 -5
  108. package/lib/deploy/apphosting/release.js +1 -1
  109. package/lib/deploy/apphosting/util.js +1 -2
  110. package/lib/deploy/database/deploy.js +1 -2
  111. package/lib/deploy/database/prepare.js +1 -2
  112. package/lib/deploy/database/release.js +1 -2
  113. package/lib/deploy/dataconnect/context.js +15 -4
  114. package/lib/deploy/dataconnect/deploy.js +5 -6
  115. package/lib/deploy/dataconnect/prepare.js +7 -9
  116. package/lib/deploy/dataconnect/release.js +7 -10
  117. package/lib/deploy/extensions/deploy.js +7 -9
  118. package/lib/deploy/extensions/deploymentSummary.js +6 -7
  119. package/lib/deploy/extensions/planner.js +15 -18
  120. package/lib/deploy/extensions/prepare.js +9 -11
  121. package/lib/deploy/extensions/release.js +10 -12
  122. package/lib/deploy/extensions/secrets.js +8 -11
  123. package/lib/deploy/extensions/tasks.js +6 -8
  124. package/lib/deploy/extensions/v2FunctionHelper.js +2 -3
  125. package/lib/deploy/extensions/validate.js +1 -2
  126. package/lib/deploy/firestore/deploy.js +3 -5
  127. package/lib/deploy/firestore/prepare.js +2 -3
  128. package/lib/deploy/firestore/release.js +3 -4
  129. package/lib/deploy/functions/backend.js +52 -42
  130. package/lib/deploy/functions/build.js +41 -15
  131. package/lib/deploy/functions/cache/applyHash.js +3 -5
  132. package/lib/deploy/functions/cache/hash.js +4 -5
  133. package/lib/deploy/functions/cel.js +3 -3
  134. package/lib/deploy/functions/checkIam.js +8 -8
  135. package/lib/deploy/functions/containerCleaner.js +10 -6
  136. package/lib/deploy/functions/deploy.js +6 -8
  137. package/lib/deploy/functions/ensure.js +6 -9
  138. package/lib/deploy/functions/functionsDeployHelper.js +10 -11
  139. package/lib/deploy/functions/params.js +10 -10
  140. package/lib/deploy/functions/prepare.js +41 -36
  141. package/lib/deploy/functions/prepareFunctionsUpload.js +24 -10
  142. package/lib/deploy/functions/pricing.js +3 -3
  143. package/lib/deploy/functions/prompts.js +7 -10
  144. package/lib/deploy/functions/release/executor.js +5 -6
  145. package/lib/deploy/functions/release/fabricator.js +76 -29
  146. package/lib/deploy/functions/release/index.js +23 -14
  147. package/lib/deploy/functions/release/planner.js +15 -14
  148. package/lib/deploy/functions/release/reporter.js +20 -20
  149. package/lib/deploy/functions/release/sourceTokenScraper.js +4 -5
  150. package/lib/deploy/functions/remoteSource.js +3 -4
  151. package/lib/deploy/functions/runtimes/discovery/index.js +9 -12
  152. package/lib/deploy/functions/runtimes/discovery/parsing.js +2 -3
  153. package/lib/deploy/functions/runtimes/discovery/v1alpha1.js +29 -10
  154. package/lib/deploy/functions/runtimes/index.js +1 -2
  155. package/lib/deploy/functions/runtimes/node/index.js +18 -9
  156. package/lib/deploy/functions/runtimes/node/parseRuntimeAndValidateSDK.js +2 -2
  157. package/lib/deploy/functions/runtimes/node/validate.js +1 -2
  158. package/lib/deploy/functions/runtimes/node/versioning.js +6 -7
  159. package/lib/deploy/functions/runtimes/python/index.js +12 -12
  160. package/lib/deploy/functions/runtimes/supported/index.js +5 -6
  161. package/lib/deploy/functions/services/auth.js +49 -36
  162. package/lib/deploy/functions/services/database.js +1 -2
  163. package/lib/deploy/functions/services/dataconnect.js +16 -2
  164. package/lib/deploy/functions/services/firebaseAlerts.js +1 -2
  165. package/lib/deploy/functions/services/firestore.js +3 -5
  166. package/lib/deploy/functions/services/index.js +2 -2
  167. package/lib/deploy/functions/services/remoteConfig.js +1 -2
  168. package/lib/deploy/functions/services/storage.js +3 -5
  169. package/lib/deploy/functions/services/testLab.js +1 -2
  170. package/lib/deploy/functions/triggerRegionHelper.js +1 -2
  171. package/lib/deploy/functions/validate.js +12 -11
  172. package/lib/deploy/hosting/convertConfig.js +38 -22
  173. package/lib/deploy/hosting/deploy.js +4 -7
  174. package/lib/deploy/hosting/hashcache.js +2 -3
  175. package/lib/deploy/hosting/prepare.js +14 -14
  176. package/lib/deploy/hosting/release.js +1 -2
  177. package/lib/deploy/index.js +7 -8
  178. package/lib/deploy/lifecycleHooks.js +3 -5
  179. package/lib/deploy/remoteconfig/deploy.js +1 -1
  180. package/lib/deploy/remoteconfig/functions.js +5 -6
  181. package/lib/deploy/remoteconfig/prepare.js +2 -3
  182. package/lib/deploy/remoteconfig/release.js +2 -2
  183. package/lib/deploy/storage/deploy.js +1 -1
  184. package/lib/deploy/storage/prepare.js +1 -1
  185. package/lib/deploy/storage/release.js +1 -1
  186. package/lib/deploymentTool.js +5 -6
  187. package/lib/detectProjectRoot.js +1 -2
  188. package/lib/downloadUtils.js +2 -3
  189. package/lib/emulator/adminSdkConfig.js +2 -3
  190. package/lib/emulator/apphosting/config.js +1 -2
  191. package/lib/emulator/apphosting/developmentServer.js +3 -3
  192. package/lib/emulator/apphosting/serve.js +20 -14
  193. package/lib/emulator/auth/cloudFunctions.js +2 -3
  194. package/lib/emulator/auth/errors.js +2 -2
  195. package/lib/emulator/auth/handlers.js +3 -4
  196. package/lib/emulator/auth/index.js +6 -6
  197. package/lib/emulator/auth/operations.js +171 -129
  198. package/lib/emulator/auth/server.js +30 -22
  199. package/lib/emulator/auth/state.js +26 -36
  200. package/lib/emulator/auth/utils.js +12 -13
  201. package/lib/emulator/commandUtils.js +20 -20
  202. package/lib/emulator/controller.js +32 -29
  203. package/lib/emulator/databaseEmulator.js +1 -2
  204. package/lib/emulator/dataconnect/pgliteServer.js +48 -104
  205. package/lib/emulator/dataconnectEmulator.js +6 -9
  206. package/lib/emulator/download.js +2 -3
  207. package/lib/emulator/downloadableEmulatorInfo.json +31 -31
  208. package/lib/emulator/downloadableEmulators.js +49 -24
  209. package/lib/emulator/emulatorLogger.js +19 -4
  210. package/lib/emulator/env.js +6 -8
  211. package/lib/emulator/eventarcEmulator.js +2 -3
  212. package/lib/emulator/eventarcEmulatorUtils.js +3 -6
  213. package/lib/emulator/extensions/postinstall.js +1 -2
  214. package/lib/emulator/extensions/validation.js +4 -7
  215. package/lib/emulator/extensionsEmulator.js +6 -9
  216. package/lib/emulator/functionsEmulator.js +89 -46
  217. package/lib/emulator/functionsEmulatorRuntime.js +1 -1
  218. package/lib/emulator/functionsEmulatorShared.js +30 -30
  219. package/lib/emulator/functionsEmulatorShell.js +4 -6
  220. package/lib/emulator/functionsEmulatorUtils.js +8 -9
  221. package/lib/emulator/functionsRuntimeWorker.js +18 -9
  222. package/lib/emulator/hub.js +41 -34
  223. package/lib/emulator/hubClient.js +1 -1
  224. package/lib/emulator/initEmulators.js +2 -3
  225. package/lib/emulator/loggingEmulator.js +2 -2
  226. package/lib/emulator/portUtils.js +4 -5
  227. package/lib/emulator/registry.js +10 -4
  228. package/lib/emulator/shared/request.js +1 -2
  229. package/lib/emulator/storage/apis/firebase.js +16 -20
  230. package/lib/emulator/storage/apis/gcloud.js +6 -9
  231. package/lib/emulator/storage/apis/shared.js +1 -2
  232. package/lib/emulator/storage/crc.js +2 -3
  233. package/lib/emulator/storage/files.js +18 -41
  234. package/lib/emulator/storage/metadata.js +10 -4
  235. package/lib/emulator/storage/multipart.js +1 -2
  236. package/lib/emulator/storage/rfc.js +1 -2
  237. package/lib/emulator/storage/rules/config.js +1 -2
  238. package/lib/emulator/storage/rules/manager.js +3 -5
  239. package/lib/emulator/storage/rules/runtime.js +15 -13
  240. package/lib/emulator/storage/rules/types.js +2 -2
  241. package/lib/emulator/storage/rules/utils.js +5 -6
  242. package/lib/emulator/storage/server.js +1 -2
  243. package/lib/emulator/storage/upload.js +3 -4
  244. package/lib/emulator/taskQueue.js +11 -4
  245. package/lib/emulator/tasksEmulator.js +11 -12
  246. package/lib/emulator/types.js +6 -6
  247. package/lib/emulator/ui.js +6 -1
  248. package/lib/ensureApiEnabled.js +7 -9
  249. package/lib/env.js +2 -3
  250. package/lib/error.js +11 -13
  251. package/lib/errorOut.js +1 -2
  252. package/lib/experiments.js +15 -18
  253. package/lib/extensions/askUserForEventsConfig.js +12 -13
  254. package/lib/extensions/askUserForParam.js +11 -12
  255. package/lib/extensions/change-log.js +4 -5
  256. package/lib/extensions/checkProjectBilling.js +1 -2
  257. package/lib/extensions/diagnose.js +1 -2
  258. package/lib/extensions/displayExtensionInfo.js +25 -32
  259. package/lib/extensions/emulator/optionsHelper.js +6 -8
  260. package/lib/extensions/emulator/specHelper.js +15 -16
  261. package/lib/extensions/emulator/triggerHelper.js +3 -5
  262. package/lib/extensions/etags.js +2 -3
  263. package/lib/extensions/export.js +7 -9
  264. package/lib/extensions/extensionsApi.js +23 -29
  265. package/lib/extensions/extensionsHelper.js +52 -80
  266. package/lib/extensions/listExtensions.js +3 -5
  267. package/lib/extensions/localHelper.js +5 -5
  268. package/lib/extensions/manifest.js +15 -16
  269. package/lib/extensions/metricsUtils.js +3 -4
  270. package/lib/extensions/paramHelper.js +21 -18
  271. package/lib/extensions/provisioningHelper.js +17 -21
  272. package/lib/extensions/publishHelpers.js +1 -2
  273. package/lib/extensions/publisherApi.js +11 -13
  274. package/lib/extensions/refs.js +6 -7
  275. package/lib/extensions/runtimes/common.js +18 -19
  276. package/lib/extensions/runtimes/node.js +5 -6
  277. package/lib/extensions/secretsUtils.js +8 -8
  278. package/lib/extensions/tos.js +7 -8
  279. package/lib/extensions/types.js +3 -3
  280. package/lib/extensions/updateHelper.js +6 -7
  281. package/lib/extensions/utils.js +6 -8
  282. package/lib/extensions/versionHelper.js +1 -2
  283. package/lib/extensions/warnings.js +6 -8
  284. package/lib/fetchMOTD.js +1 -2
  285. package/lib/fetchWebSetup.js +3 -4
  286. package/lib/filterTargets.js +1 -2
  287. package/lib/firebaseConfigValidate.js +2 -3
  288. package/lib/firestore/api-sort.js +8 -9
  289. package/lib/firestore/api-types.js +15 -15
  290. package/lib/firestore/api.js +15 -13
  291. package/lib/firestore/backupUtils.js +3 -3
  292. package/lib/firestore/checkDatabaseType.js +1 -2
  293. package/lib/firestore/delete.js +1 -2
  294. package/lib/firestore/encodeFirestoreValue.js +1 -2
  295. package/lib/firestore/fsConfig.js +1 -2
  296. package/lib/firestore/options.js +1 -1
  297. package/lib/firestore/util.js +5 -6
  298. package/lib/firestore/validator.js +4 -5
  299. package/lib/frameworks/angular/index.js +14 -15
  300. package/lib/frameworks/angular/utils.js +21 -23
  301. package/lib/frameworks/astro/index.js +7 -7
  302. package/lib/frameworks/astro/utils.js +4 -6
  303. package/lib/frameworks/compose/discover/filesystem.js +3 -3
  304. package/lib/frameworks/compose/discover/frameworkMatcher.js +4 -5
  305. package/lib/frameworks/compose/discover/index.js +1 -2
  306. package/lib/frameworks/compose/discover/runtime/node.js +8 -11
  307. package/lib/frameworks/compose/driver/docker.js +3 -5
  308. package/lib/frameworks/compose/driver/hooks.js +2 -2
  309. package/lib/frameworks/compose/driver/index.js +2 -2
  310. package/lib/frameworks/compose/driver/local.js +2 -3
  311. package/lib/frameworks/compose/index.js +5 -7
  312. package/lib/frameworks/constants.js +3 -3
  313. package/lib/frameworks/express/index.js +7 -8
  314. package/lib/frameworks/flutter/index.js +6 -7
  315. package/lib/frameworks/flutter/utils.js +4 -5
  316. package/lib/frameworks/index.js +21 -22
  317. package/lib/frameworks/next/constants.js +5 -2
  318. package/lib/frameworks/next/index.js +34 -32
  319. package/lib/frameworks/next/utils.js +40 -39
  320. package/lib/frameworks/nuxt/index.js +9 -9
  321. package/lib/frameworks/nuxt/utils.js +4 -6
  322. package/lib/frameworks/nuxt2/index.js +7 -7
  323. package/lib/frameworks/sveltekit/index.js +6 -8
  324. package/lib/frameworks/utils.js +26 -24
  325. package/lib/frameworks/vite/index.js +8 -9
  326. package/lib/fsAsync.js +1 -2
  327. package/lib/fsutils.js +5 -6
  328. package/lib/functional.js +11 -11
  329. package/lib/functions/artifacts.js +25 -22
  330. package/lib/functions/ensureTargeted.js +1 -2
  331. package/lib/functions/env.js +13 -14
  332. package/lib/functions/functionslog.js +2 -3
  333. package/lib/functions/projectConfig.js +29 -33
  334. package/lib/functions/python.js +10 -4
  335. package/lib/functions/secrets.js +32 -18
  336. package/lib/functionsConfig.js +14 -14
  337. package/lib/functionsConfigClone.js +1 -2
  338. package/lib/functionsShellCommandAction.js +2 -3
  339. package/lib/gcp/apphosting.js +43 -28
  340. package/lib/gcp/apptesting.js +2 -2
  341. package/lib/gcp/artifactregistry.js +5 -5
  342. package/lib/gcp/auth.js +11 -13
  343. package/lib/gcp/cloudbilling.js +4 -5
  344. package/lib/gcp/cloudbuild.js +10 -11
  345. package/lib/gcp/cloudfunctions.js +61 -45
  346. package/lib/gcp/cloudfunctionsv2.js +81 -43
  347. package/lib/gcp/cloudlogging.js +2 -4
  348. package/lib/gcp/cloudmonitoring.js +7 -7
  349. package/lib/gcp/cloudscheduler.js +12 -14
  350. package/lib/gcp/cloudsql/cloudsqladmin.js +19 -21
  351. package/lib/gcp/cloudsql/connect.js +14 -9
  352. package/lib/gcp/cloudsql/fbToolsAuthClient.js +5 -3
  353. package/lib/gcp/cloudsql/interactive.js +2 -3
  354. package/lib/gcp/cloudsql/permissions.js +8 -8
  355. package/lib/gcp/cloudsql/permissionsSetup.js +9 -9
  356. package/lib/gcp/cloudtasks.js +19 -18
  357. package/lib/gcp/computeEngine.js +1 -2
  358. package/lib/gcp/devConnect.js +32 -29
  359. package/lib/gcp/docker.js +2 -4
  360. package/lib/gcp/eventarc.js +5 -5
  361. package/lib/gcp/firedata.js +4 -4
  362. package/lib/gcp/firestore.js +16 -16
  363. package/lib/gcp/iam.js +11 -12
  364. package/lib/gcp/identityPlatform.js +4 -5
  365. package/lib/gcp/k8s.js +1 -2
  366. package/lib/gcp/location.js +2 -2
  367. package/lib/gcp/proto.js +10 -11
  368. package/lib/gcp/pubsub.js +4 -5
  369. package/lib/gcp/resourceManager.js +5 -5
  370. package/lib/gcp/rules.js +13 -14
  371. package/lib/gcp/run.js +24 -31
  372. package/lib/gcp/runv2.js +39 -27
  373. package/lib/gcp/secretManager.js +60 -39
  374. package/lib/gcp/serviceusage.js +8 -4
  375. package/lib/gcp/storage.js +22 -20
  376. package/lib/gemini/fdcExperience.js +5 -5
  377. package/lib/getDefaultDatabaseInstance.js +2 -4
  378. package/lib/getDefaultHostingSite.js +3 -4
  379. package/lib/getProjectNumber.js +1 -2
  380. package/lib/hosting/api.js +32 -36
  381. package/lib/hosting/cloudRunProxy.js +2 -3
  382. package/lib/hosting/config.js +17 -17
  383. package/lib/hosting/expireUtils.js +3 -3
  384. package/lib/hosting/functionsProxy.js +1 -2
  385. package/lib/hosting/implicitInit.js +1 -2
  386. package/lib/hosting/initMiddleware.js +1 -2
  387. package/lib/hosting/interactive.js +1 -2
  388. package/lib/hosting/proxy.js +3 -5
  389. package/lib/hosting/runTags.js +8 -11
  390. package/lib/init/features/account.js +1 -2
  391. package/lib/init/features/ailogic/index.js +3 -5
  392. package/lib/init/features/ailogic/utils.js +6 -8
  393. package/lib/init/features/aitools/claude.js +1 -2
  394. package/lib/init/features/aitools/cursor.js +1 -2
  395. package/lib/init/features/aitools/gemini.js +1 -1
  396. package/lib/init/features/aitools/promptUpdater.js +10 -12
  397. package/lib/init/features/aitools.js +1 -2
  398. package/lib/init/features/apphosting.js +3 -4
  399. package/lib/init/features/apptesting/index.js +9 -9
  400. package/lib/init/features/database.js +4 -5
  401. package/lib/init/features/dataconnect/create_app.js +3 -4
  402. package/lib/init/features/dataconnect/index.js +25 -22
  403. package/lib/init/features/dataconnect/resolver.js +6 -10
  404. package/lib/init/features/dataconnect/sdk.js +31 -24
  405. package/lib/init/features/emulators.js +7 -6
  406. package/lib/init/features/extensions/index.js +3 -5
  407. package/lib/init/features/firestore/index.js +7 -9
  408. package/lib/init/features/firestore/indexes.js +2 -2
  409. package/lib/init/features/firestore/rules.js +3 -3
  410. package/lib/init/features/functions/index.js +3 -5
  411. package/lib/init/features/functions/javascript.js +1 -2
  412. package/lib/init/features/functions/npm-dependencies.js +1 -2
  413. package/lib/init/features/functions/python.js +1 -2
  414. package/lib/init/features/functions/typescript.js +1 -2
  415. package/lib/init/features/genkit/index.js +44 -18
  416. package/lib/init/features/hosting/github.js +6 -8
  417. package/lib/init/features/hosting/index.js +10 -13
  418. package/lib/init/features/project.js +4 -7
  419. package/lib/init/features/remoteconfig.js +1 -2
  420. package/lib/init/features/storage.js +3 -5
  421. package/lib/init/index.js +4 -7
  422. package/lib/init/spawn.js +7 -9
  423. package/lib/listFiles.js +1 -2
  424. package/lib/loadCJSON.js +1 -2
  425. package/lib/localFunction.js +14 -15
  426. package/lib/logError.js +1 -2
  427. package/lib/logger.js +7 -7
  428. package/lib/management/apps.js +22 -22
  429. package/lib/management/database.js +11 -12
  430. package/lib/management/projects.js +57 -56
  431. package/lib/management/provisioning/errorHandler.js +3 -5
  432. package/lib/management/provisioning/provision.js +15 -9
  433. package/lib/management/studio.js +2 -3
  434. package/lib/mcp/errors.js +4 -4
  435. package/lib/mcp/index.js +47 -45
  436. package/lib/mcp/prompt.js +1 -2
  437. package/lib/mcp/prompts/core/consult.js +2 -3
  438. package/lib/mcp/prompts/crashlytics/connect.js +15 -122
  439. package/lib/mcp/prompts/dataconnect/schema.js +3 -3
  440. package/lib/mcp/prompts/index.js +8 -10
  441. package/lib/mcp/resource.js +3 -15
  442. package/lib/mcp/resources/guides/app_id.js +39 -0
  443. package/lib/mcp/resources/guides/crashlytics_connect.js +51 -0
  444. package/lib/mcp/resources/guides/crashlytics_investigations.js +51 -0
  445. package/lib/mcp/resources/guides/crashlytics_issues.js +42 -0
  446. package/lib/mcp/resources/guides/crashlytics_reports.js +112 -0
  447. package/lib/mcp/resources/index.js +11 -3
  448. package/lib/mcp/tool.js +3 -15
  449. package/lib/mcp/tools/apphosting/fetch_logs.js +3 -4
  450. package/lib/mcp/tools/apphosting/list_backends.js +1 -1
  451. package/lib/mcp/tools/auth/get_users.js +5 -16
  452. package/lib/mcp/tools/core/create_android_sha.js +4 -1
  453. package/lib/mcp/tools/core/get_environment.js +7 -4
  454. package/lib/mcp/tools/core/get_sdk_config.js +4 -5
  455. package/lib/mcp/tools/core/get_security_rules.js +1 -2
  456. package/lib/mcp/tools/core/init.js +2 -2
  457. package/lib/mcp/tools/core/logout.js +1 -1
  458. package/lib/mcp/tools/core/read_resources.js +2 -2
  459. package/lib/mcp/tools/core/validate_security_rules.js +1 -2
  460. package/lib/mcp/tools/crashlytics/events.js +43 -19
  461. package/lib/mcp/tools/crashlytics/index.js +1 -6
  462. package/lib/mcp/tools/crashlytics/issues.js +33 -12
  463. package/lib/mcp/tools/crashlytics/reports.js +66 -117
  464. package/lib/mcp/tools/dataconnect/list_services.js +2 -3
  465. package/lib/mcp/tools/firestore/converter.js +3 -5
  466. package/lib/mcp/tools/firestore/delete_document.js +1 -1
  467. package/lib/mcp/tools/functions/get_logs.js +14 -12
  468. package/lib/mcp/tools/functions/list_functions.js +1 -1
  469. package/lib/mcp/tools/index.js +67 -50
  470. package/lib/mcp/util/apptesting/availability.js +1 -2
  471. package/lib/mcp/util/availability.js +1 -2
  472. package/lib/mcp/util/crashlytics/availability.js +1 -2
  473. package/lib/mcp/util/dataconnect/compile.js +7 -6
  474. package/lib/mcp/util/dataconnect/converter.js +7 -10
  475. package/lib/mcp/util/dataconnect/emulator.js +1 -2
  476. package/lib/mcp/util.js +9 -11
  477. package/lib/messaging/sendMessage.js +1 -2
  478. package/lib/metaprogramming.js +1 -2
  479. package/lib/operation-poller.js +2 -2
  480. package/lib/profileReport.js +6 -6
  481. package/lib/profiler.js +1 -2
  482. package/lib/projectPath.js +1 -2
  483. package/lib/projectUtils.js +5 -6
  484. package/lib/prompt.js +22 -13
  485. package/lib/rc.js +5 -7
  486. package/lib/remoteconfig/deleteExperiment.js +1 -2
  487. package/lib/remoteconfig/deleteRollout.js +1 -2
  488. package/lib/remoteconfig/get.js +2 -3
  489. package/lib/remoteconfig/getExperiment.js +2 -2
  490. package/lib/remoteconfig/getRollout.js +2 -2
  491. package/lib/remoteconfig/interfaces.js +1 -1
  492. package/lib/remoteconfig/listExperiments.js +2 -2
  493. package/lib/remoteconfig/listRollouts.js +2 -2
  494. package/lib/remoteconfig/publish.js +1 -2
  495. package/lib/remoteconfig/rollback.js +1 -2
  496. package/lib/remoteconfig/versionslist.js +1 -2
  497. package/lib/requireAuth.js +4 -6
  498. package/lib/requireConfig.js +5 -8
  499. package/lib/requireDatabaseInstance.js +2 -2
  500. package/lib/requireHostingSite.js +1 -2
  501. package/lib/requireInteractive.js +1 -1
  502. package/lib/requirePermissions.js +1 -2
  503. package/lib/requireTosAcceptance.js +1 -2
  504. package/lib/responseToError.js +1 -2
  505. package/lib/rtdb.js +2 -3
  506. package/lib/rulesDeploy.js +3 -4
  507. package/lib/serve/functions.js +9 -1
  508. package/lib/serve/hosting.js +4 -5
  509. package/lib/serve/index.js +1 -2
  510. package/lib/shortenUrl.js +1 -2
  511. package/lib/templates.js +3 -4
  512. package/lib/throttler/throttler.js +3 -3
  513. package/lib/timeout.js +2 -3
  514. package/lib/track.js +23 -14
  515. package/lib/tsconfig.publish.tsbuildinfo +1 -0
  516. package/lib/unzip.js +2 -3
  517. package/lib/utils.js +62 -63
  518. package/lib/vsCodeUtils.js +2 -3
  519. package/package.json +6 -6
  520. package/templates/extensions/typescript/index.ts +1 -1
  521. package/templates/extensions/typescript/package.lint.json +1 -1
  522. package/templates/extensions/typescript/package.nolint.json +1 -1
  523. package/templates/extensions/typescript/tsconfig.json +2 -1
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initMiddleware = void 0;
3
+ exports.initMiddleware = initMiddleware;
4
4
  const apiv2_1 = require("../apiv2");
5
5
  const logger_1 = require("../logger");
6
6
  const utils = require("../utils");
@@ -60,4 +60,3 @@ function initMiddleware(init) {
60
60
  }
61
61
  };
62
62
  }
63
- exports.initMiddleware = initMiddleware;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pickHostingSiteName = void 0;
3
+ exports.pickHostingSiteName = pickHostingSiteName;
4
4
  const error_1 = require("../error");
5
5
  const utils_1 = require("../utils");
6
6
  const projectUtils_1 = require("../projectUtils");
@@ -40,7 +40,6 @@ async function pickHostingSiteName(siteId, options) {
40
40
  }
41
41
  return id;
42
42
  }
43
- exports.pickHostingSiteName = pickHostingSiteName;
44
43
  async function trySiteID(projectNumber, id, nonInteractive = false) {
45
44
  try {
46
45
  await (0, api_1.createSite)(projectNumber, id, "", true);
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.errorRequestHandler = exports.proxyRequestHandler = void 0;
3
+ exports.proxyRequestHandler = proxyRequestHandler;
4
+ exports.errorRequestHandler = errorRequestHandler;
4
5
  const lodash_1 = require("lodash");
5
6
  const node_fetch_1 = require("node-fetch");
6
7
  const stream_1 = require("stream");
@@ -28,7 +29,6 @@ function makeVary(vary = "") {
28
29
  }
29
30
  function proxyRequestHandler(url, rewriteIdentifier, options = {}) {
30
31
  return async (req, res, next) => {
31
- var _a;
32
32
  logger_1.logger.info(`[hosting] Rewriting ${req.url} to ${url} for ${rewriteIdentifier}`);
33
33
  const cookie = req.headers.cookie || "";
34
34
  const sessionCookie = cookie.split(/; ?/).find((c) => {
@@ -83,7 +83,7 @@ function proxyRequestHandler(url, rewriteIdentifier, options = {}) {
83
83
  });
84
84
  }
85
85
  catch (err) {
86
- const isAbortError = err instanceof error_1.FirebaseError && ((_a = err.original) === null || _a === void 0 ? void 0 : _a.name.includes("AbortError"));
86
+ const isAbortError = err instanceof error_1.FirebaseError && err.original?.name.includes("AbortError");
87
87
  const isTimeoutError = err instanceof error_1.FirebaseError &&
88
88
  err.original instanceof node_fetch_1.FetchError &&
89
89
  err.original.code === "ETIMEDOUT";
@@ -131,7 +131,6 @@ function proxyRequestHandler(url, rewriteIdentifier, options = {}) {
131
131
  proxyRes.response.body.pipe(res);
132
132
  };
133
133
  }
134
- exports.proxyRequestHandler = proxyRequestHandler;
135
134
  function errorRequestHandler(error) {
136
135
  return (req, res) => {
137
136
  res.statusCode = 500;
@@ -140,4 +139,3 @@ function errorRequestHandler(error) {
140
139
  res.end(out);
141
140
  };
142
141
  }
143
- exports.errorRequestHandler = errorRequestHandler;
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensureLatestRevisionTagged = exports.setRewriteTags = exports.setGarbageCollectionThreshold = exports.gcTagsForServices = exports.TODO_TAG_NAME = void 0;
3
+ exports.TODO_TAG_NAME = void 0;
4
+ exports.gcTagsForServices = gcTagsForServices;
5
+ exports.setGarbageCollectionThreshold = setGarbageCollectionThreshold;
6
+ exports.setRewriteTags = setRewriteTags;
7
+ exports.ensureLatestRevisionTagged = ensureLatestRevisionTagged;
4
8
  const node_path_1 = require("node:path");
5
9
  const run = require("../gcp/run");
6
10
  const api = require("./api");
@@ -8,7 +12,6 @@ const error_1 = require("../error");
8
12
  const functional_1 = require("../functional");
9
13
  exports.TODO_TAG_NAME = "this is an invalid tag name so it cannot be real";
10
14
  async function gcTagsForServices(project, services) {
11
- var _a;
12
15
  const validTagsByServiceByRegion = {};
13
16
  const sites = await api.listSites(project);
14
17
  const allVersionsNested = await Promise.all(sites.map((site) => api.listVersions(node_path_1.posix.basename(site.name))));
@@ -16,7 +19,7 @@ async function gcTagsForServices(project, services) {
16
19
  return version.status === "CREATED" || version.status === "FINALIZED";
17
20
  });
18
21
  for (const version of activeVersions) {
19
- for (const rewrite of ((_a = version === null || version === void 0 ? void 0 : version.config) === null || _a === void 0 ? void 0 : _a.rewrites) || []) {
22
+ for (const rewrite of version?.config?.rewrites || []) {
20
23
  if (!("run" in rewrite) || !rewrite.run.tag) {
21
24
  continue;
22
25
  }
@@ -30,7 +33,6 @@ async function gcTagsForServices(project, services) {
30
33
  for (const service of services) {
31
34
  const { region, serviceId } = run.gcpIds(service);
32
35
  service.spec.traffic = (service.spec.traffic || []).filter((traffic) => {
33
- var _a, _b;
34
36
  if (traffic.percent) {
35
37
  return true;
36
38
  }
@@ -40,19 +42,17 @@ async function gcTagsForServices(project, services) {
40
42
  if (!traffic.tag.startsWith("fh-")) {
41
43
  return true;
42
44
  }
43
- if ((_b = (_a = validTagsByServiceByRegion[region]) === null || _a === void 0 ? void 0 : _a[serviceId]) === null || _b === void 0 ? void 0 : _b.has(traffic.tag)) {
45
+ if (validTagsByServiceByRegion[region]?.[serviceId]?.has(traffic.tag)) {
44
46
  return true;
45
47
  }
46
48
  return false;
47
49
  });
48
50
  }
49
51
  }
50
- exports.gcTagsForServices = gcTagsForServices;
51
52
  let garbageCollectionThreshold = 500;
52
53
  function setGarbageCollectionThreshold(threshold) {
53
54
  garbageCollectionThreshold = threshold;
54
55
  }
55
- exports.setGarbageCollectionThreshold = setGarbageCollectionThreshold;
56
56
  async function setRewriteTags(rewrites, project, version) {
57
57
  const services = await Promise.all(rewrites
58
58
  .map((rewrite) => {
@@ -85,15 +85,13 @@ async function setRewriteTags(rewrites, project, version) {
85
85
  rewrite.run.tag = tag;
86
86
  }
87
87
  }
88
- exports.setRewriteTags = setRewriteTags;
89
88
  async function ensureLatestRevisionTagged(services, defaultTag) {
90
- var _a;
91
89
  const tags = {};
92
90
  const updateServices = [];
93
91
  for (const service of services) {
94
92
  const { projectNumber, region, serviceId } = run.gcpIds(service);
95
93
  tags[region] = tags[region] || {};
96
- const latestRevision = (_a = service.status) === null || _a === void 0 ? void 0 : _a.latestReadyRevisionName;
94
+ const latestRevision = service.status?.latestReadyRevisionName;
97
95
  if (!latestRevision) {
98
96
  throw new error_1.FirebaseError(`Assertion failed: service ${service.metadata.name} has no ready revision`);
99
97
  }
@@ -112,4 +110,3 @@ async function ensureLatestRevisionTagged(services, defaultTag) {
112
110
  await Promise.all(updateServices);
113
111
  return tags;
114
112
  }
115
- exports.ensureLatestRevisionTagged = ensureLatestRevisionTagged;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.doSetup = void 0;
3
+ exports.doSetup = doSetup;
4
4
  const logger_1 = require("../../logger");
5
5
  const utils = require("../../utils");
6
6
  const auth_1 = require("../../auth");
@@ -57,4 +57,3 @@ async function doSetup(setup, config, options) {
57
57
  logger_1.logger.info();
58
58
  utils.logSuccess(`Using account: ${account.user.email}`);
59
59
  }
60
- exports.doSetup = doSetup;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.actuate = exports.askQuestions = void 0;
3
+ exports.askQuestions = askQuestions;
4
+ exports.actuate = actuate;
4
5
  const prompt_1 = require("../../../prompt");
5
6
  const error_1 = require("../../../error");
6
7
  const utils_1 = require("./utils");
@@ -47,7 +48,6 @@ async function askQuestions(setup) {
47
48
  displayName: selectedApp.displayName,
48
49
  };
49
50
  }
50
- exports.askQuestions = askQuestions;
51
51
  function getAppOptions(appInfo, displayName) {
52
52
  switch (appInfo.platform) {
53
53
  case apps_1.AppPlatform.IOS:
@@ -73,8 +73,7 @@ function getAppOptions(appInfo, displayName) {
73
73
  }
74
74
  }
75
75
  async function actuate(setup) {
76
- var _a;
77
- const ailogicInfo = (_a = setup.featureInfo) === null || _a === void 0 ? void 0 : _a.ailogic;
76
+ const ailogicInfo = setup.featureInfo?.ailogic;
78
77
  if (!ailogicInfo) {
79
78
  return;
80
79
  }
@@ -101,4 +100,3 @@ async function actuate(setup) {
101
100
  throw new error_1.FirebaseError(`AI Logic setup failed: ${error instanceof Error ? error.message : String(error)}`, { original: error instanceof Error ? error : new Error(String(error)), exit: 2 });
102
101
  }
103
102
  }
104
- exports.actuate = actuate;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateAppExists = exports.validateProjectNumberMatch = exports.parseAppId = exports.getConfigFileName = void 0;
3
+ exports.getConfigFileName = getConfigFileName;
4
+ exports.parseAppId = parseAppId;
5
+ exports.validateProjectNumberMatch = validateProjectNumberMatch;
6
+ exports.validateAppExists = validateAppExists;
4
7
  const apps_1 = require("../../../management/apps");
5
8
  const error_1 = require("../../../error");
6
9
  function getConfigFileName(platform) {
@@ -15,15 +18,13 @@ function getConfigFileName(platform) {
15
18
  throw new error_1.FirebaseError(`Unsupported platform: ${platform}`, { exit: 2 });
16
19
  }
17
20
  }
18
- exports.getConfigFileName = getConfigFileName;
19
21
  function parseAppId(appId) {
20
- var _a, _b;
21
22
  const pattern = /^(?<version>\d+):(?<projectNumber>\d+):(?<platform>ios|android|web):([0-9a-fA-F]+)$/;
22
23
  const match = pattern.exec(appId);
23
24
  if (!match) {
24
25
  throw new error_1.FirebaseError(`Invalid app ID format: ${appId}. Expected format: 1:PROJECT_NUMBER:PLATFORM:IDENTIFIER`, { exit: 1 });
25
26
  }
26
- const platformString = ((_a = match.groups) === null || _a === void 0 ? void 0 : _a.platform) || "";
27
+ const platformString = match.groups?.platform || "";
27
28
  let platform;
28
29
  switch (platformString) {
29
30
  case "ios":
@@ -39,18 +40,16 @@ function parseAppId(appId) {
39
40
  throw new error_1.FirebaseError(`Unsupported platform: ${platformString}`, { exit: 1 });
40
41
  }
41
42
  return {
42
- projectNumber: ((_b = match.groups) === null || _b === void 0 ? void 0 : _b.projectNumber) || "",
43
+ projectNumber: match.groups?.projectNumber || "",
43
44
  appId: appId,
44
45
  platform,
45
46
  };
46
47
  }
47
- exports.parseAppId = parseAppId;
48
48
  function validateProjectNumberMatch(appInfo, projectInfo) {
49
49
  if (projectInfo.projectNumber !== appInfo.projectNumber) {
50
50
  throw new error_1.FirebaseError(`App ${appInfo.appId} belongs to project number ${appInfo.projectNumber} but current project has number ${projectInfo.projectNumber}.`, { exit: 1 });
51
51
  }
52
52
  }
53
- exports.validateProjectNumberMatch = validateProjectNumberMatch;
54
53
  async function validateAppExists(appInfo, projectId) {
55
54
  try {
56
55
  const apps = await (0, apps_1.listFirebaseApps)(projectId, appInfo.platform);
@@ -72,4 +71,3 @@ async function validateAppExists(appInfo, projectId) {
72
71
  });
73
72
  }
74
73
  }
75
- exports.validateAppExists = validateAppExists;
@@ -8,7 +8,6 @@ exports.claude = {
8
8
  name: "claude",
9
9
  displayName: "Claude Code",
10
10
  async configure(config, projectPath, enabledFeatures) {
11
- var _a;
12
11
  const files = [];
13
12
  let existingConfig = {};
14
13
  let mcpUpdated = false;
@@ -20,7 +19,7 @@ exports.claude = {
20
19
  }
21
20
  catch (e) {
22
21
  }
23
- if (!((_a = existingConfig.mcpServers) === null || _a === void 0 ? void 0 : _a.firebase)) {
22
+ if (!existingConfig.mcpServers?.firebase) {
24
23
  if (!existingConfig.mcpServers) {
25
24
  existingConfig.mcpServers = {};
26
25
  }
@@ -10,7 +10,6 @@ exports.cursor = {
10
10
  name: "cursor",
11
11
  displayName: "Cursor",
12
12
  async configure(config, projectPath, enabledFeatures) {
13
- var _a;
14
13
  const files = [];
15
14
  let mcpUpdated = false;
16
15
  let existingMcpConfig = {};
@@ -22,7 +21,7 @@ exports.cursor = {
22
21
  }
23
22
  catch (e) {
24
23
  }
25
- if (!((_a = existingMcpConfig.mcpServers) === null || _a === void 0 ? void 0 : _a.firebase)) {
24
+ if (!existingMcpConfig.mcpServers?.firebase) {
26
25
  if (!existingMcpConfig.mcpServers) {
27
26
  existingMcpConfig.mcpServers = {};
28
27
  }
@@ -24,7 +24,7 @@ exports.gemini = {
24
24
  extensionUpdated = true;
25
25
  }
26
26
  }
27
- catch (_a) {
27
+ catch {
28
28
  config.writeProjectFile(extensionPath, newConfigRaw);
29
29
  extensionUpdated = true;
30
30
  }
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateFeaturePromptSection = exports.getFeatureContent = exports.replaceFirebaseFile = exports.updateFirebaseSection = exports.generatePromptSection = void 0;
3
+ exports.generatePromptSection = generatePromptSection;
4
+ exports.updateFirebaseSection = updateFirebaseSection;
5
+ exports.replaceFirebaseFile = replaceFirebaseFile;
6
+ exports.getFeatureContent = getFeatureContent;
7
+ exports.generateFeaturePromptSection = generateFeaturePromptSection;
4
8
  const crypto = require("crypto");
5
9
  const fs = require("fs");
6
10
  const path = require("path");
@@ -19,7 +23,6 @@ function calculateHash(content) {
19
23
  return crypto.createHash("sha256").update(content.trim()).digest("hex").substring(0, 8);
20
24
  }
21
25
  function generatePromptSection(enabledFeatures, options) {
22
- var _a;
23
26
  let fullContent = getFeatureContent("base");
24
27
  for (const feature of enabledFeatures) {
25
28
  if (feature !== "base" && PROMPT_FILES[feature]) {
@@ -27,27 +30,26 @@ function generatePromptSection(enabledFeatures, options) {
27
30
  }
28
31
  }
29
32
  const hash = calculateHash(fullContent);
30
- const innerContent = (_a = options === null || options === void 0 ? void 0 : options.customContent) !== null && _a !== void 0 ? _a : fullContent;
33
+ const innerContent = options?.customContent ?? fullContent;
31
34
  const wrapped = `<firebase_prompts hash="${hash}">
32
35
  <!-- Firebase Tools Context - Auto-generated, do not edit -->
33
36
  ${innerContent}
34
37
  </firebase_prompts>`;
35
38
  return { content: wrapped, hash };
36
39
  }
37
- exports.generatePromptSection = generatePromptSection;
38
40
  async function updateFirebaseSection(config, filePath, enabledFeatures, options) {
39
41
  const { content: newSection, hash: newHash } = generatePromptSection(enabledFeatures);
40
42
  let currentContent = "";
41
43
  try {
42
44
  currentContent = config.readProjectFile(filePath) || "";
43
45
  }
44
- catch (_a) {
46
+ catch {
45
47
  }
46
48
  const match = currentContent.match(FIREBASE_TAG_REGEX);
47
49
  if (match && match[1] === newHash) {
48
50
  return { updated: false };
49
51
  }
50
- if ((options === null || options === void 0 ? void 0 : options.interactive) && currentContent) {
52
+ if (options?.interactive && currentContent) {
51
53
  const fileName = filePath.split("/").pop();
52
54
  logger_1.logger.info();
53
55
  utils.logBullet(`Update available for ${fileName}`);
@@ -61,7 +63,7 @@ async function updateFirebaseSection(config, filePath, enabledFeatures, options)
61
63
  }
62
64
  let finalContent;
63
65
  if (!currentContent) {
64
- finalContent = (options === null || options === void 0 ? void 0 : options.header) ? `${options.header}\n\n${newSection}` : newSection;
66
+ finalContent = options?.header ? `${options.header}\n\n${newSection}` : newSection;
65
67
  }
66
68
  else if (match) {
67
69
  finalContent =
@@ -76,7 +78,6 @@ async function updateFirebaseSection(config, filePath, enabledFeatures, options)
76
78
  config.writeProjectFile(filePath, finalContent);
77
79
  return { updated: true };
78
80
  }
79
- exports.updateFirebaseSection = updateFirebaseSection;
80
81
  async function replaceFirebaseFile(config, filePath, content) {
81
82
  try {
82
83
  const existing = config.readProjectFile(filePath);
@@ -84,12 +85,11 @@ async function replaceFirebaseFile(config, filePath, content) {
84
85
  return { updated: false };
85
86
  }
86
87
  }
87
- catch (_a) {
88
+ catch {
88
89
  }
89
90
  config.writeProjectFile(filePath, content);
90
91
  return { updated: true };
91
92
  }
92
- exports.replaceFirebaseFile = replaceFirebaseFile;
93
93
  function getFeatureContent(feature) {
94
94
  const filename = PROMPT_FILES[feature];
95
95
  if (!filename)
@@ -98,7 +98,6 @@ function getFeatureContent(feature) {
98
98
  const content = fs.readFileSync(path.join(PROMPTS_DIR, filename), "utf8");
99
99
  return content;
100
100
  }
101
- exports.getFeatureContent = getFeatureContent;
102
101
  function generateFeaturePromptSection(feature) {
103
102
  const content = getFeatureContent(feature);
104
103
  if (!content)
@@ -109,4 +108,3 @@ function generateFeaturePromptSection(feature) {
109
108
  ${content}
110
109
  </firebase_${feature}_prompts>`;
111
110
  }
112
- exports.generateFeaturePromptSection = generateFeaturePromptSection;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.doSetup = void 0;
3
+ exports.doSetup = doSetup;
4
4
  const utils = require("../../utils");
5
5
  const prompt_1 = require("../../prompt");
6
6
  const index_1 = require("./aitools/index");
@@ -74,7 +74,6 @@ async function doSetup(setup, config) {
74
74
  utils.logSuccess("All AI tools are already up to date.");
75
75
  }
76
76
  }
77
- exports.doSetup = doSetup;
78
77
  function getEnabledFeatures(config) {
79
78
  const features = [];
80
79
  if (config.functions)
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.upsertAppHostingConfig = exports.doSetup = void 0;
3
+ exports.doSetup = doSetup;
4
+ exports.upsertAppHostingConfig = upsertAppHostingConfig;
4
5
  const clc = require("colorette");
5
6
  const fs_1 = require("fs");
6
7
  const ora = require("ora");
@@ -51,7 +52,7 @@ async function doSetup(setup, config) {
51
52
  utils.logWarning(`Firebase web app not set`);
52
53
  }
53
54
  const createBackendSpinner = ora("Creating your new backend...").start();
54
- const backend = await (0, backend_1.createBackend)(projectId, location, backendId, null, undefined, webApp === null || webApp === void 0 ? void 0 : webApp.id);
55
+ const backend = await (0, backend_1.createBackend)(projectId, location, backendId, null, undefined, webApp?.id);
55
56
  createBackendSpinner.succeed(`Successfully created backend!\n\t${backend.name}\n`);
56
57
  }
57
58
  (0, utils_1.logBullet)(`${clc.yellow("===")} Deploy local source setup`);
@@ -69,7 +70,6 @@ async function doSetup(setup, config) {
69
70
  await config.askWriteProjectFile(path.join(absRootDir, "apphosting.yaml"), APPHOSTING_YAML_TEMPLATE);
70
71
  utils.logSuccess("Firebase initialization complete!");
71
72
  }
72
- exports.doSetup = doSetup;
73
73
  function upsertAppHostingConfig(backendConfig, config) {
74
74
  if (!config.src.apphosting) {
75
75
  config.set("apphosting", backendConfig);
@@ -81,4 +81,3 @@ function upsertAppHostingConfig(backendConfig, config) {
81
81
  }
82
82
  config.set("apphosting", [config.src.apphosting, backendConfig]);
83
83
  }
84
- exports.upsertAppHostingConfig = upsertAppHostingConfig;
@@ -1,28 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.actuate = exports.askQuestions = void 0;
3
+ exports.askQuestions = askQuestions;
4
+ exports.actuate = actuate;
4
5
  const path_1 = require("path");
5
6
  const prompt_1 = require("../../../prompt");
6
7
  const templates_1 = require("../../../templates");
7
8
  const ensureProjectConfigured_1 = require("../../../apptesting/ensureProjectConfigured");
8
9
  const SMOKE_TEST_YAML_TEMPLATE = (0, templates_1.readTemplateSync)("init/apptesting/smoke_test.yaml");
9
10
  async function askQuestions(setup) {
10
- var _a, _b;
11
- setup.featureInfo = Object.assign(Object.assign({}, setup.featureInfo), { apptesting: {
12
- testDir: ((_b = (_a = setup.featureInfo) === null || _a === void 0 ? void 0 : _a.apptesting) === null || _b === void 0 ? void 0 : _b.testDir) ||
11
+ setup.featureInfo = {
12
+ ...setup.featureInfo,
13
+ apptesting: {
14
+ testDir: setup.featureInfo?.apptesting?.testDir ||
13
15
  (await (0, prompt_1.input)({
14
16
  message: "What do you want to use as your test directory?",
15
17
  default: "tests",
16
18
  })),
17
- } });
19
+ },
20
+ };
18
21
  if (setup.projectId) {
19
22
  await (0, ensureProjectConfigured_1.ensureProjectConfigured)(setup.projectId);
20
23
  }
21
24
  }
22
- exports.askQuestions = askQuestions;
23
25
  async function actuate(setup, config) {
24
- var _a;
25
- const info = (_a = setup.featureInfo) === null || _a === void 0 ? void 0 : _a.apptesting;
26
+ const info = setup.featureInfo?.apptesting;
26
27
  if (!info) {
27
28
  throw new Error("App Testing feature RequiredInfo is not provided");
28
29
  }
@@ -30,4 +31,3 @@ async function actuate(setup, config) {
30
31
  config.set("apptesting.testDir", testDir);
31
32
  await config.askWriteProjectFile((0, path_1.join)(testDir, "smoke_test.yaml"), SMOKE_TEST_YAML_TEMPLATE);
32
33
  }
33
- exports.actuate = actuate;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.actuate = exports.askQuestions = exports.DEFAULT_RULES = void 0;
3
+ exports.DEFAULT_RULES = void 0;
4
+ exports.askQuestions = askQuestions;
5
+ exports.actuate = actuate;
4
6
  const clc = require("colorette");
5
7
  const prompt_1 = require("../../prompt");
6
8
  const logger_1 = require("../../logger");
@@ -109,10 +111,8 @@ async function askQuestions(setup, config) {
109
111
  setup.featureInfo = setup.featureInfo || {};
110
112
  setup.featureInfo.database = info;
111
113
  }
112
- exports.askQuestions = askQuestions;
113
114
  async function actuate(setup, config) {
114
- var _a;
115
- const info = (_a = setup.featureInfo) === null || _a === void 0 ? void 0 : _a.database;
115
+ const info = setup.featureInfo?.database;
116
116
  if (!info) {
117
117
  throw new error_1.FirebaseError("No database RequiredInfo found in setup actuate.");
118
118
  }
@@ -133,4 +133,3 @@ async function actuate(setup, config) {
133
133
  }
134
134
  return Promise.resolve();
135
135
  }
136
- exports.actuate = actuate;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createFlutterApp = exports.createNextApp = exports.createReactApp = void 0;
3
+ exports.createReactApp = createReactApp;
4
+ exports.createNextApp = createNextApp;
5
+ exports.createFlutterApp = createFlutterApp;
4
6
  const child_process_1 = require("child_process");
5
7
  const clc = require("colorette");
6
8
  const utils_1 = require("../../../utils");
@@ -8,7 +10,6 @@ async function createReactApp(webAppId) {
8
10
  const args = ["create", "vite@latest", webAppId, "--", "--template", "react", "--no-interactive"];
9
11
  await executeCommand("npm", args);
10
12
  }
11
- exports.createReactApp = createReactApp;
12
13
  async function createNextApp(webAppId) {
13
14
  const args = [
14
15
  "create-next-app@latest",
@@ -25,12 +26,10 @@ async function createNextApp(webAppId) {
25
26
  ];
26
27
  await executeCommand("npx", args);
27
28
  }
28
- exports.createNextApp = createNextApp;
29
29
  async function createFlutterApp(webAppId) {
30
30
  const args = ["create", webAppId];
31
31
  await executeCommand("flutter", args);
32
32
  }
33
- exports.createFlutterApp = createFlutterApp;
34
33
  async function executeCommand(command, args) {
35
34
  (0, utils_1.logLabeledBullet)("dataconnect", `> ${clc.bold(`${command} ${args.join(" ")}`)}`);
36
35
  return new Promise((resolve, reject) => {