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,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.exportEmulatorData = exports.startAll = exports.shouldStart = exports.filterEmulatorTargets = exports.cleanShutdown = exports.onExit = exports.exportOnExit = void 0;
3
+ exports.exportOnExit = exportOnExit;
4
+ exports.onExit = onExit;
5
+ exports.cleanShutdown = cleanShutdown;
6
+ exports.filterEmulatorTargets = filterEmulatorTargets;
7
+ exports.shouldStart = shouldStart;
8
+ exports.startAll = startAll;
9
+ exports.exportEmulatorData = exportEmulatorData;
4
10
  const clc = require("colorette");
5
11
  const fs = require("fs");
6
12
  const path = require("path");
@@ -65,17 +71,14 @@ async function exportOnExit(options) {
65
71
  }
66
72
  }
67
73
  }
68
- exports.exportOnExit = exportOnExit;
69
74
  async function onExit(options) {
70
75
  await exportOnExit(options);
71
76
  }
72
- exports.onExit = onExit;
73
77
  async function cleanShutdown() {
74
78
  emulatorLogger_1.EmulatorLogger.forEmulator(types_1.Emulators.HUB).logLabeled("BULLET", "emulators", "Shutting down emulators.");
75
79
  await registry_1.EmulatorRegistry.stopAll();
76
80
  await (0, webhook_1.sendVSCodeMessage)({ message: webhook_1.VSCODE_MESSAGE.EMULATORS_SHUTDOWN });
77
81
  }
78
- exports.cleanShutdown = cleanShutdown;
79
82
  function filterEmulatorTargets(options) {
80
83
  let targets = [...types_1.ALL_SERVICE_EMULATORS];
81
84
  targets.push(types_1.Emulators.EXTENSIONS);
@@ -94,9 +97,7 @@ function filterEmulatorTargets(options) {
94
97
  }
95
98
  return targets;
96
99
  }
97
- exports.filterEmulatorTargets = filterEmulatorTargets;
98
100
  function shouldStart(options, name) {
99
- var _a, _b;
100
101
  if (name === types_1.Emulators.HUB) {
101
102
  return true;
102
103
  }
@@ -106,7 +107,7 @@ function shouldStart(options, name) {
106
107
  if (options.ui) {
107
108
  return true;
108
109
  }
109
- if (((_b = (_a = options.config.src.emulators) === null || _a === void 0 ? void 0 : _a.ui) === null || _b === void 0 ? void 0 : _b.enabled) === false) {
110
+ if (options.config.src.emulators?.ui?.enabled === false) {
110
111
  return false;
111
112
  }
112
113
  return targets.some((target) => types_1.EMULATORS_SUPPORTED_BY_UI.includes(target));
@@ -127,7 +128,6 @@ function shouldStart(options, name) {
127
128
  }
128
129
  return emulatorInTargets;
129
130
  }
130
- exports.shouldStart = shouldStart;
131
131
  function findExportMetadata(importPath) {
132
132
  const pathExists = fs.existsSync(importPath);
133
133
  if (!pathExists) {
@@ -169,11 +169,10 @@ function findExportMetadata(importPath) {
169
169
  }
170
170
  }
171
171
  async function startAll(options, showUI = true, runningTestScript = false) {
172
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
173
172
  const targets = filterEmulatorTargets(options);
174
173
  options.targets = targets;
175
- const singleProjectModeEnabled = ((_a = options.config.src.emulators) === null || _a === void 0 ? void 0 : _a.singleProjectMode) === undefined ||
176
- ((_b = options.config.src.emulators) === null || _b === void 0 ? void 0 : _b.singleProjectMode);
174
+ const singleProjectModeEnabled = options.config.src.emulators?.singleProjectMode === undefined ||
175
+ options.config.src.emulators?.singleProjectMode;
177
176
  if (targets.length === 0) {
178
177
  throw new error_1.FirebaseError(`No emulators to start, run ${clc.bold("firebase init emulators")} to get started.`);
179
178
  }
@@ -260,7 +259,7 @@ async function startAll(options, showUI = true, runningTestScript = false) {
260
259
  const config = getListenConfig(options, emulator);
261
260
  listenConfig[emulator] = config;
262
261
  if (emulator === types_1.Emulators.FIRESTORE) {
263
- const wsPortConfig = (_d = (_c = options.config.src.emulators) === null || _c === void 0 ? void 0 : _c.firestore) === null || _d === void 0 ? void 0 : _d.websocketPort;
262
+ const wsPortConfig = options.config.src.emulators?.firestore?.websocketPort;
264
263
  listenConfig["firestore.websocket"] = {
265
264
  host: config.host,
266
265
  port: wsPortConfig || 9150,
@@ -268,7 +267,7 @@ async function startAll(options, showUI = true, runningTestScript = false) {
268
267
  };
269
268
  }
270
269
  if (emulator === types_1.Emulators.DATACONNECT && !(0, api_1.dataConnectLocalConnString)()) {
271
- const pglitePortConfig = (_f = (_e = options.config.src.emulators) === null || _e === void 0 ? void 0 : _e.dataconnect) === null || _f === void 0 ? void 0 : _f.postgresPort;
270
+ const pglitePortConfig = options.config.src.emulators?.dataconnect?.postgresPort;
272
271
  listenConfig["dataconnect.postgres"] = {
273
272
  host: config.host,
274
273
  port: pglitePortConfig || 5432,
@@ -321,7 +320,7 @@ async function startAll(options, showUI = true, runningTestScript = false) {
321
320
  }
322
321
  }
323
322
  const hostingConfig = options.config.get("hosting");
324
- if (Array.isArray(hostingConfig) ? hostingConfig.some((it) => it.source) : hostingConfig === null || hostingConfig === void 0 ? void 0 : hostingConfig.source) {
323
+ if (Array.isArray(hostingConfig) ? hostingConfig.some((it) => it.source) : hostingConfig?.source) {
325
324
  experiments.assertEnabled("webframeworks", "emulate a web framework");
326
325
  const emulators = [];
327
326
  for (const e of types_1.ALL_SERVICE_EMULATORS) {
@@ -342,7 +341,7 @@ async function startAll(options, showUI = true, runningTestScript = false) {
342
341
  for (const cfg of functionsCfg) {
343
342
  const localCfg = (0, projectConfig_1.requireLocal)(cfg, "Remote sources are not supported in the Functions emulator.");
344
343
  const functionsDir = path.join(projectDir, localCfg.source);
345
- const runtime = ((_g = options.extDevRuntime) !== null && _g !== void 0 ? _g : cfg.runtime);
344
+ const runtime = (options.extDevRuntime ?? cfg.runtime);
346
345
  if (runtime && !(0, supported_1.isRuntime)(runtime)) {
347
346
  throw new error_1.FirebaseError(`Cannot load functions from ${functionsDir} because it has invalid runtime ${runtime}`);
348
347
  }
@@ -351,7 +350,9 @@ async function startAll(options, showUI = true, runningTestScript = false) {
351
350
  runtime,
352
351
  codebase: localCfg.codebase,
353
352
  prefix: localCfg.prefix,
354
- env: Object.assign({}, options.extDevEnv),
353
+ env: {
354
+ ...options.extDevEnv,
355
+ },
355
356
  secretEnv: [],
356
357
  predefinedTriggers: options.extDevTriggers,
357
358
  ignore: localCfg.ignore,
@@ -366,7 +367,12 @@ async function startAll(options, showUI = true, runningTestScript = false) {
366
367
  const account = (0, auth_1.getProjectDefaultAccount)(options.projectRoot);
367
368
  if (emulatableBackends.length) {
368
369
  if (!listenForEmulator.functions || !listenForEmulator.eventarc || !listenForEmulator.tasks) {
369
- listenForEmulator = await (0, portUtils_1.resolveHostAndAssignPorts)(Object.assign(Object.assign({}, listenForEmulator), { functions: (_h = listenForEmulator.functions) !== null && _h !== void 0 ? _h : getListenConfig(options, types_1.Emulators.FUNCTIONS), eventarc: (_j = listenForEmulator.eventarc) !== null && _j !== void 0 ? _j : getListenConfig(options, types_1.Emulators.EVENTARC), tasks: (_k = listenForEmulator.eventarc) !== null && _k !== void 0 ? _k : getListenConfig(options, types_1.Emulators.TASKS) }));
370
+ listenForEmulator = await (0, portUtils_1.resolveHostAndAssignPorts)({
371
+ ...listenForEmulator,
372
+ functions: listenForEmulator.functions ?? getListenConfig(options, types_1.Emulators.FUNCTIONS),
373
+ eventarc: listenForEmulator.eventarc ?? getListenConfig(options, types_1.Emulators.EVENTARC),
374
+ tasks: listenForEmulator.eventarc ?? getListenConfig(options, types_1.Emulators.TASKS),
375
+ });
370
376
  hubLogger.log("DEBUG", "late-assigned ports for functions and eventarc emulators", {
371
377
  user: listenForEmulator,
372
378
  });
@@ -620,13 +626,13 @@ async function startAll(options, showUI = true, runningTestScript = false) {
620
626
  });
621
627
  await startEmulator(hostingEmulator);
622
628
  }
623
- const apphostingEmulatorConfig = (_l = options.config.src.emulators) === null || _l === void 0 ? void 0 : _l[types_1.Emulators.APPHOSTING];
629
+ const apphostingEmulatorConfig = options.config.src.emulators?.[types_1.Emulators.APPHOSTING];
624
630
  if (listenForEmulator.apphosting) {
625
- const rootDirectory = apphostingEmulatorConfig === null || apphostingEmulatorConfig === void 0 ? void 0 : apphostingEmulatorConfig.rootDirectory;
626
- const backendRoot = (0, projectPath_1.resolveProjectPath)({}, rootDirectory !== null && rootDirectory !== void 0 ? rootDirectory : "./");
631
+ const rootDirectory = apphostingEmulatorConfig?.rootDirectory;
632
+ const backendRoot = (0, projectPath_1.resolveProjectPath)({}, rootDirectory ?? "./");
627
633
  let apphostingConfig;
628
634
  if (Array.isArray(options.config.src.apphosting)) {
629
- const matchingAppHostingConfig = options.config.src.apphosting.filter((config) => { var _a; return (0, projectPath_1.resolveProjectPath)({}, path.join(".", (_a = config.rootDir) !== null && _a !== void 0 ? _a : "/")) === backendRoot; });
635
+ const matchingAppHostingConfig = options.config.src.apphosting.filter((config) => (0, projectPath_1.resolveProjectPath)({}, path.join(".", config.rootDir ?? "/")) === backendRoot);
630
636
  if (matchingAppHostingConfig.length === 1) {
631
637
  apphostingConfig = matchingAppHostingConfig[0];
632
638
  }
@@ -635,16 +641,16 @@ async function startAll(options, showUI = true, runningTestScript = false) {
635
641
  apphostingConfig = options.config.src.apphosting;
636
642
  }
637
643
  const apphostingAddr = legacyGetFirstAddr(types_1.Emulators.APPHOSTING);
638
- if (apphostingEmulatorConfig === null || apphostingEmulatorConfig === void 0 ? void 0 : apphostingEmulatorConfig.startCommandOverride) {
644
+ if (apphostingEmulatorConfig?.startCommandOverride) {
639
645
  const apphostingLogger = emulatorLogger_1.EmulatorLogger.forEmulator(types_1.Emulators.APPHOSTING);
640
646
  apphostingLogger.logLabeled("WARN", types_1.Emulators.APPHOSTING, "The `firebase.json#emulators.apphosting.startCommandOverride` config is deprecated, please use `firebase.json#emulators.apphosting.startCommand` to set a custom start command instead");
641
647
  }
642
648
  const apphostingEmulator = new apphosting_1.AppHostingEmulator({
643
649
  projectId: options.project,
644
- backendId: apphostingConfig === null || apphostingConfig === void 0 ? void 0 : apphostingConfig.backendId,
650
+ backendId: apphostingConfig?.backendId,
645
651
  host: apphostingAddr.host,
646
652
  port: apphostingAddr.port,
647
- startCommand: (apphostingEmulatorConfig === null || apphostingEmulatorConfig === void 0 ? void 0 : apphostingEmulatorConfig.startCommand) || (apphostingEmulatorConfig === null || apphostingEmulatorConfig === void 0 ? void 0 : apphostingEmulatorConfig.startCommandOverride),
653
+ startCommand: apphostingEmulatorConfig?.startCommand || apphostingEmulatorConfig?.startCommandOverride,
648
654
  rootDirectory,
649
655
  options,
650
656
  });
@@ -687,14 +693,12 @@ async function startAll(options, showUI = true, runningTestScript = false) {
687
693
  });
688
694
  return { deprecationNotices };
689
695
  }
690
- exports.startAll = startAll;
691
696
  function getListenConfig(options, emulator) {
692
- var _a, _b, _c, _d;
693
- let host = ((_b = (_a = options.config.src.emulators) === null || _a === void 0 ? void 0 : _a[emulator]) === null || _b === void 0 ? void 0 : _b.host) || constants_1.Constants.getDefaultHost();
697
+ let host = options.config.src.emulators?.[emulator]?.host || constants_1.Constants.getDefaultHost();
694
698
  if (host === "localhost" && utils.isRunningInWSL()) {
695
699
  host = "127.0.0.1";
696
700
  }
697
- const portVal = (_d = (_c = options.config.src.emulators) === null || _c === void 0 ? void 0 : _c[emulator]) === null || _d === void 0 ? void 0 : _d.port;
701
+ const portVal = options.config.src.emulators?.[emulator]?.port;
698
702
  let port;
699
703
  let portFixed;
700
704
  if (portVal) {
@@ -759,4 +763,3 @@ async function exportEmulatorData(exportPath, options, initiatedBy) {
759
763
  }
760
764
  utils.logSuccess("Export complete");
761
765
  }
762
- exports.exportEmulatorData = exportEmulatorData;
@@ -121,7 +121,6 @@ class DatabaseEmulator {
121
121
  });
122
122
  }
123
123
  async updateRules(instance, rulesPath) {
124
- var _a;
125
124
  const content = fs.readFileSync(rulesPath, "utf8");
126
125
  try {
127
126
  await registry_1.EmulatorRegistry.client(types_1.Emulators.DATABASE).put(`/.settings/rules.json`, content, {
@@ -133,7 +132,7 @@ class DatabaseEmulator {
133
132
  if (e.context && e.context.body) {
134
133
  throw e.context.body.error;
135
134
  }
136
- throw (_a = e.original) !== null && _a !== void 0 ? _a : e;
135
+ throw e.original ?? e;
137
136
  }
138
137
  }
139
138
  prettyPrintRulesError(filePath, error) {
@@ -1,25 +1,7 @@
1
1
  "use strict";
2
- var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
3
- var __asyncValues = (this && this.__asyncValues) || function (o) {
4
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
5
- var m = o[Symbol.asyncIterator], i;
6
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
7
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
8
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
9
- };
10
- var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
11
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
12
- var g = generator.apply(thisArg, _arguments || []), i, q = [];
13
- return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
14
- function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
15
- function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
16
- function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
17
- function fulfill(value) { resume("next", value); }
18
- function reject(value) { resume("throw", value); }
19
- function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
20
- };
21
2
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.PGliteExtendedQueryPatch = exports.fromNodeSocket = exports.PostgresServer = exports.TRUNCATE_TABLES_SQL = void 0;
3
+ exports.PGliteExtendedQueryPatch = exports.PostgresServer = exports.TRUNCATE_TABLES_SQL = void 0;
4
+ exports.fromNodeSocket = fromNodeSocket;
23
5
  const pglite_1 = require("@electric-sql/pglite");
24
6
  const { dynamicImport } = require(true && "../../dynamicImport");
25
7
  const net = require("node:net");
@@ -51,38 +33,18 @@ class PostgresServer {
51
33
  const connection = await fromNodeSocket(socket, {
52
34
  serverVersion: "17.4 (PGlite 0.3.3)",
53
35
  auth: { method: "trust" },
54
- onMessage(data, { isAuthenticated }) {
55
- return __asyncGenerator(this, arguments, function* onMessage_1() {
56
- var _a, e_1, _b, _c;
57
- if (!isAuthenticated) {
58
- return yield __await(void 0);
59
- }
60
- const db = yield __await(getDb());
61
- if (data[0] === pg_gateway_1.FrontendMessageCode.Terminate) {
62
- yield __await(db.query("DEALLOCATE ALL"));
63
- }
64
- const response = yield __await(db.execProtocolRaw(data));
65
- try {
66
- for (var _d = true, _e = __asyncValues(extendedQueryPatch.filterResponse(data, response)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a;) {
67
- _c = _f.value;
68
- _d = false;
69
- try {
70
- const message = _c;
71
- yield yield __await(message);
72
- }
73
- finally {
74
- _d = true;
75
- }
76
- }
77
- }
78
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
79
- finally {
80
- try {
81
- if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));
82
- }
83
- finally { if (e_1) throw e_1.error; }
84
- }
85
- });
36
+ async *onMessage(data, { isAuthenticated }) {
37
+ if (!isAuthenticated) {
38
+ return;
39
+ }
40
+ const db = await getDb();
41
+ if (data[0] === pg_gateway_1.FrontendMessageCode.Terminate) {
42
+ await db.query("DEALLOCATE ALL");
43
+ }
44
+ const response = await db.execProtocolRaw(data);
45
+ for await (const message of extendedQueryPatch.filterResponse(data, response)) {
46
+ yield message;
47
+ }
86
48
  },
87
49
  });
88
50
  const extendedQueryPatch = new PGliteExtendedQueryPatch(connection);
@@ -132,7 +94,7 @@ class PostgresServer {
132
94
  logger_1.logger.info("Opening database with Postgres 16...");
133
95
  const extensions = await this.getExtensions();
134
96
  const dataDir = this.baseDataDirectory;
135
- const oldDb = new PGlite02(Object.assign(Object.assign({}, pgliteArgs), { dataDir }));
97
+ const oldDb = new PGlite02({ ...pgliteArgs, dataDir });
136
98
  await oldDb.waitReady;
137
99
  const oldVersion = await oldDb.query("SELECT version();");
138
100
  logger_1.logger.debug(`Old database version: ${oldVersion.rows[0].version}`);
@@ -155,7 +117,7 @@ class PostgresServer {
155
117
  logger_1.logger.info("If you need to use an older version of the Firebase CLI, you can restore from that directory.");
156
118
  logger_1.logger.info("Creating new database with Postgres 17...");
157
119
  const pg17Dir = this.getVersionedDataDir(17);
158
- const newDb = new pglite_1.PGlite(Object.assign(Object.assign({}, pgliteArgs), { dataDir: pg17Dir }));
120
+ const newDb = new pglite_1.PGlite({ ...pgliteArgs, dataDir: pg17Dir });
159
121
  await newDb.waitReady;
160
122
  logger_1.logger.info("Importing data into new database...");
161
123
  const dumpText = await dumpResult.text();
@@ -197,14 +159,14 @@ class PostgresServer {
197
159
  }
198
160
  }
199
161
  try {
200
- const db = new pglite_1.PGlite(Object.assign(Object.assign({}, baseArgs), { dataDir: pg17Dir }));
162
+ const db = new pglite_1.PGlite({ ...baseArgs, dataDir: pg17Dir });
201
163
  await db.waitReady;
202
164
  return db;
203
165
  }
204
166
  catch (err) {
205
167
  if (pg17Dir && (0, error_1.hasMessage)(err) && /Database already exists/.test(err.message)) {
206
168
  fs.rmSync(pg17Dir, { force: true, recursive: true });
207
- const db = new pglite_1.PGlite(Object.assign(Object.assign({}, baseArgs), { dataDir: pg17Dir }));
169
+ const db = new pglite_1.PGlite({ ...baseArgs, dataDir: pg17Dir });
208
170
  await db.waitReady;
209
171
  return db;
210
172
  }
@@ -234,10 +196,12 @@ async function fromNodeSocket(socket, options) {
234
196
  const rs = node_stream_1.Readable.toWeb(socket);
235
197
  const ws = node_stream_1.Writable.toWeb(socket);
236
198
  const opts = options
237
- ? Object.assign({}, options) : undefined;
199
+ ? {
200
+ ...options,
201
+ }
202
+ : undefined;
238
203
  return new pg_gateway_1.PostgresConnection({ readable: rs, writable: ws }, opts);
239
204
  }
240
- exports.fromNodeSocket = fromNodeSocket;
241
205
  class PGliteExtendedQueryPatch {
242
206
  constructor(connection) {
243
207
  this.connection = connection;
@@ -245,55 +209,35 @@ class PGliteExtendedQueryPatch {
245
209
  this.eqpErrored = false;
246
210
  this.pgliteDebugLog = fs.createWriteStream("pglite-debug.log");
247
211
  }
248
- filterResponse(message, response) {
249
- return __asyncGenerator(this, arguments, function* filterResponse_1() {
250
- var _a, e_2, _b, _c;
251
- const pipelineStartMessages = [
252
- pg_gateway_1.FrontendMessageCode.Parse,
253
- pg_gateway_1.FrontendMessageCode.Bind,
254
- pg_gateway_1.FrontendMessageCode.Close,
255
- ];
256
- const decoded = decoder.write(message);
257
- this.pgliteDebugLog.write("Front: " + decoded);
258
- if (pipelineStartMessages.includes(message[0])) {
259
- this.isExtendedQuery = true;
260
- }
261
- if (message[0] === pg_gateway_1.FrontendMessageCode.Sync) {
262
- this.isExtendedQuery = false;
263
- this.eqpErrored = false;
212
+ async *filterResponse(message, response) {
213
+ const pipelineStartMessages = [
214
+ pg_gateway_1.FrontendMessageCode.Parse,
215
+ pg_gateway_1.FrontendMessageCode.Bind,
216
+ pg_gateway_1.FrontendMessageCode.Close,
217
+ ];
218
+ const decoded = decoder.write(message);
219
+ this.pgliteDebugLog.write("Front: " + decoded);
220
+ if (pipelineStartMessages.includes(message[0])) {
221
+ this.isExtendedQuery = true;
222
+ }
223
+ if (message[0] === pg_gateway_1.FrontendMessageCode.Sync) {
224
+ this.isExtendedQuery = false;
225
+ this.eqpErrored = false;
226
+ }
227
+ for await (const bm of (0, pg_gateway_1.getMessages)(response)) {
228
+ if (this.eqpErrored) {
229
+ continue;
264
230
  }
265
- try {
266
- for (var _d = true, _e = __asyncValues((0, pg_gateway_1.getMessages)(response)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a;) {
267
- _c = _f.value;
268
- _d = false;
269
- try {
270
- const bm = _c;
271
- if (this.eqpErrored) {
272
- continue;
273
- }
274
- if (this.isExtendedQuery && bm[0] === pg_gateway_1.BackendMessageCode.ErrorMessage) {
275
- this.eqpErrored = true;
276
- }
277
- if (this.isExtendedQuery && bm[0] === pg_gateway_1.BackendMessageCode.ReadyForQuery) {
278
- this.pgliteDebugLog.write("Filtered: " + decoder.write(bm));
279
- continue;
280
- }
281
- this.pgliteDebugLog.write("Sent: " + decoder.write(bm));
282
- yield yield __await(bm);
283
- }
284
- finally {
285
- _d = true;
286
- }
287
- }
231
+ if (this.isExtendedQuery && bm[0] === pg_gateway_1.BackendMessageCode.ErrorMessage) {
232
+ this.eqpErrored = true;
288
233
  }
289
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
290
- finally {
291
- try {
292
- if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));
293
- }
294
- finally { if (e_2) throw e_2.error; }
234
+ if (this.isExtendedQuery && bm[0] === pg_gateway_1.BackendMessageCode.ReadyForQuery) {
235
+ this.pgliteDebugLog.write("Filtered: " + decoder.write(bm));
236
+ continue;
295
237
  }
296
- });
238
+ this.pgliteDebugLog.write("Sent: " + decoder.write(bm));
239
+ yield bm;
240
+ }
297
241
  }
298
242
  }
299
243
  exports.PGliteExtendedQueryPatch = PGliteExtendedQueryPatch;
@@ -30,7 +30,6 @@ class DataConnectEmulator {
30
30
  this.emulatorClient = new DataConnectEmulatorClient();
31
31
  }
32
32
  async start() {
33
- var _a, _b, _c;
34
33
  let resolvedConfigDir;
35
34
  try {
36
35
  resolvedConfigDir = this.args.config.path(this.args.configDir);
@@ -62,10 +61,10 @@ class DataConnectEmulator {
62
61
  this.usingExistingEmulator = false;
63
62
  if (this.args.autoconnectToPostgres) {
64
63
  const info = await (0, load_1.load)(this.args.projectId, this.args.config, this.args.configDir);
65
- const dbId = ((_a = (0, types_2.mainSchemaYaml)(info.dataConnectYaml).datasource.postgresql) === null || _a === void 0 ? void 0 : _a.database) || "postgres";
64
+ const dbId = (0, types_2.mainSchemaYaml)(info.dataConnectYaml).datasource.postgresql?.database || "postgres";
66
65
  const serviceId = info.dataConnectYaml.serviceId;
67
- const pgPort = (_b = this.args.postgresListen) === null || _b === void 0 ? void 0 : _b[0].port;
68
- const pgHost = (_c = this.args.postgresListen) === null || _c === void 0 ? void 0 : _c[0].address;
66
+ const pgPort = this.args.postgresListen?.[0].port;
67
+ const pgHost = this.args.postgresListen?.[0].address;
69
68
  let connStr = (0, api_1.dataConnectLocalConnString)();
70
69
  if (connStr) {
71
70
  this.logger.logLabeled("INFO", "dataconnect", `FIREBASE_DATACONNECT_POSTGRESQL_STRING is set to ${clc.bold(connStr)} - using that instead of starting a new database`);
@@ -188,7 +187,6 @@ class DataConnectEmulator {
188
187
  });
189
188
  }
190
189
  static async build(args) {
191
- var _a;
192
190
  const commandInfo = await (0, downloadableEmulators_1.downloadIfNecessary)(types_1.Emulators.DATACONNECT);
193
191
  const cmd = ["--logtostderr", "-v=2", "build", `--config_dir=${args.configDir}`];
194
192
  if (args.projectId) {
@@ -216,7 +214,7 @@ class DataConnectEmulator {
216
214
  return JSON.parse(res.stdout);
217
215
  }
218
216
  catch (err) {
219
- throw new error_1.FirebaseError(`Unable to parse 'fdc build' output: ${(_a = res.stdout) !== null && _a !== void 0 ? _a : res.stderr}`);
217
+ throw new error_1.FirebaseError(`Unable to parse 'fdc build' output: ${res.stdout ?? res.stderr}`);
220
218
  }
221
219
  }
222
220
  async connectToPostgres(connectionString, database, serviceId) {
@@ -256,7 +254,7 @@ class DataConnectEmulator {
256
254
  credsEnv.GOOGLE_APPLICATION_CREDENTIALS = defaultCredPath;
257
255
  }
258
256
  }
259
- return Object.assign(Object.assign(Object.assign({}, process.env), extraEnv), credsEnv);
257
+ return { ...process.env, ...extraEnv, ...credsEnv };
260
258
  }
261
259
  }
262
260
  exports.DataConnectEmulator = DataConnectEmulator;
@@ -265,7 +263,6 @@ class DataConnectEmulatorClient {
265
263
  this.client = undefined;
266
264
  }
267
265
  async configureEmulator(body) {
268
- var _a, _b;
269
266
  if (!this.client) {
270
267
  this.client = registry_1.EmulatorRegistry.client(types_1.Emulators.DATACONNECT);
271
268
  }
@@ -275,7 +272,7 @@ class DataConnectEmulatorClient {
275
272
  }
276
273
  catch (err) {
277
274
  if (err.status === 500) {
278
- throw new error_1.FirebaseError(`Data Connect emulator: ${(_b = (_a = err === null || err === void 0 ? void 0 : err.context) === null || _a === void 0 ? void 0 : _a.body) === null || _b === void 0 ? void 0 : _b.message}`);
275
+ throw new error_1.FirebaseError(`Data Connect emulator: ${err?.context?.body?.message}`);
279
276
  }
280
277
  throw err;
281
278
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.downloadExtensionVersion = exports.downloadEmulator = void 0;
3
+ exports.downloadEmulator = downloadEmulator;
4
+ exports.downloadExtensionVersion = downloadExtensionVersion;
4
5
  const crypto = require("crypto");
5
6
  const fs = require("fs-extra");
6
7
  const path = require("path");
@@ -35,7 +36,6 @@ async function downloadEmulator(name) {
35
36
  fs.chmodSync(executablePath, 0o755);
36
37
  removeOldFiles(name, emulator);
37
38
  }
38
- exports.downloadEmulator = downloadEmulator;
39
39
  async function downloadExtensionVersion(extensionVersionRef, sourceDownloadUri, targetDir) {
40
40
  const emulatorLogger = emulatorLogger_1.EmulatorLogger.forExtension({ ref: extensionVersionRef });
41
41
  emulatorLogger.logLabeled("BULLET", "extensions", `Starting download for ${extensionVersionRef} source code to ${targetDir}..`);
@@ -52,7 +52,6 @@ async function downloadExtensionVersion(extensionVersionRef, sourceDownloadUri,
52
52
  emulatorLogger.logLabeled("BULLET", "extensions", `Downloaded to ${targetDir}...`);
53
53
  await new Promise((resolve) => setTimeout(resolve, 1000));
54
54
  }
55
- exports.downloadExtensionVersion = downloadExtensionVersion;
56
55
  function removeOldFiles(name, emulator, removeAllVersions = false) {
57
56
  const currentLocalPath = emulator.downloadPath;
58
57
  const currentUnzipPath = emulator.unzipDir;
@@ -44,13 +44,13 @@
44
44
  }
45
45
  },
46
46
  "pubsub": {
47
- "version": "0.8.17",
48
- "expectedSize": 65162324,
49
- "expectedChecksum": "a88ec6424e49af459b5c8a3657d69c06",
50
- "expectedChecksumSHA256": "72a49d14ee6cd4c1a0fee4a46f520fe4d7465396a155c61abc0103905047edd3",
51
- "remoteUrl": "https://storage.googleapis.com/firebase-preview-drop/emulator/pubsub-emulator-0.8.17.zip",
52
- "downloadPathRelativeToCacheDir": "pubsub-emulator-0.8.17.zip",
53
- "binaryPathRelativeToCacheDir": "pubsub-emulator-0.8.17/pubsub-emulator/bin/cloud-pubsub-emulator"
47
+ "version": "0.8.25",
48
+ "expectedSize": 52169500,
49
+ "expectedChecksum": "ff855b79e84d26b2b5b2d56e84e0fb51",
50
+ "expectedChecksumSHA256": "a69fe788be3b0b3866c55b7ed8790efa424a88e6f26843bdbe9d34b93c9509af",
51
+ "remoteUrl": "https://storage.googleapis.com/firebase-preview-drop/emulator/pubsub-emulator-0.8.25.zip",
52
+ "downloadPathRelativeToCacheDir": "pubsub-emulator-0.8.25.zip",
53
+ "binaryPathRelativeToCacheDir": "pubsub-emulator-0.8.25/pubsub-emulator/bin/cloud-pubsub-emulator"
54
54
  },
55
55
  "dataconnect": {
56
56
  "darwin": {