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,20 +1,70 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.markdownDocsOfTools = exports.availableTools = void 0;
4
- const index_1 = require("./auth/index");
5
- const index_2 = require("./dataconnect/index");
6
- const index_3 = require("./firestore/index");
3
+ exports.availableTools = availableTools;
4
+ exports.markdownDocsOfTools = markdownDocsOfTools;
5
+ const index_1 = require("./apphosting/index");
6
+ const index_2 = require("./apptesting/index");
7
+ const index_3 = require("./auth/index");
7
8
  const index_4 = require("./core/index");
8
- const index_5 = require("./storage/index");
9
- const index_6 = require("./messaging/index");
10
- const index_7 = require("./remoteconfig/index");
11
- const index_8 = require("./crashlytics/index");
12
- const index_9 = require("./apphosting/index");
13
- const index_10 = require("./apptesting/index");
14
- const index_11 = require("./realtime_database/index");
15
- const index_12 = require("./functions/index");
16
- async function availableTools(ctx, activeFeatures) {
17
- const allTools = getAllTools(activeFeatures);
9
+ const index_5 = require("./crashlytics/index");
10
+ const index_6 = require("./dataconnect/index");
11
+ const index_7 = require("./firestore/index");
12
+ const index_8 = require("./functions/index");
13
+ const index_9 = require("./messaging/index");
14
+ const index_10 = require("./realtime_database/index");
15
+ const index_11 = require("./remoteconfig/index");
16
+ const index_12 = require("./storage/index");
17
+ function addFeaturePrefix(feature, tools) {
18
+ return tools.map((tool) => ({
19
+ ...tool,
20
+ mcp: {
21
+ ...tool.mcp,
22
+ name: `${feature}_${tool.mcp.name}`,
23
+ _meta: {
24
+ ...tool.mcp._meta,
25
+ feature,
26
+ },
27
+ },
28
+ }));
29
+ }
30
+ const tools = {
31
+ apphosting: addFeaturePrefix("apphosting", index_1.appHostingTools),
32
+ apptesting: addFeaturePrefix("apptesting", index_2.apptestingTools),
33
+ auth: addFeaturePrefix("auth", index_3.authTools),
34
+ core: addFeaturePrefix("firebase", index_4.coreTools),
35
+ crashlytics: addFeaturePrefix("crashlytics", index_5.crashlyticsTools),
36
+ database: addFeaturePrefix("realtimedatabase", index_10.realtimeDatabaseTools),
37
+ dataconnect: addFeaturePrefix("dataconnect", index_6.dataconnectTools),
38
+ firestore: addFeaturePrefix("firestore", index_7.firestoreTools),
39
+ functions: addFeaturePrefix("functions", index_8.functionsTools),
40
+ messaging: addFeaturePrefix("messaging", index_9.messagingTools),
41
+ remoteconfig: addFeaturePrefix("remoteconfig", index_11.remoteConfigTools),
42
+ storage: addFeaturePrefix("storage", index_12.storageTools),
43
+ };
44
+ const allToolsMap = new Map(Object.values(tools)
45
+ .flat()
46
+ .sort((a, b) => a.mcp.name.localeCompare(b.mcp.name))
47
+ .map((t) => [t.mcp.name, t]));
48
+ function getToolsByName(names) {
49
+ const selectedTools = new Set();
50
+ for (const toolName of names) {
51
+ const tool = allToolsMap.get(toolName);
52
+ if (tool) {
53
+ selectedTools.add(tool);
54
+ }
55
+ }
56
+ return Array.from(selectedTools);
57
+ }
58
+ function getToolsByFeature(serverFeatures) {
59
+ const features = new Set(serverFeatures?.length ? serverFeatures : Object.keys(tools));
60
+ features.add("core");
61
+ return Array.from(features).flatMap((feature) => tools[feature] || []);
62
+ }
63
+ async function availableTools(ctx, activeFeatures, enabledTools) {
64
+ if (enabledTools?.length) {
65
+ return getToolsByName(enabledTools);
66
+ }
67
+ const allTools = getToolsByFeature(activeFeatures);
18
68
  const availabilities = await Promise.all(allTools.map((t) => {
19
69
  if (t.isAvailable) {
20
70
  return t.isAvailable(ctx);
@@ -23,52 +73,19 @@ async function availableTools(ctx, activeFeatures) {
23
73
  }));
24
74
  return allTools.filter((_, i) => availabilities[i]);
25
75
  }
26
- exports.availableTools = availableTools;
27
- function getAllTools(activeFeatures) {
28
- const toolDefs = [];
29
- if (!(activeFeatures === null || activeFeatures === void 0 ? void 0 : activeFeatures.length)) {
30
- activeFeatures = Object.keys(tools);
31
- }
32
- if (!activeFeatures.includes("core")) {
33
- activeFeatures.unshift("core");
34
- }
35
- for (const key of activeFeatures) {
36
- toolDefs.push(...tools[key]);
37
- }
38
- return toolDefs;
39
- }
40
- const tools = {
41
- core: addFeaturePrefix("firebase", index_4.coreTools),
42
- firestore: addFeaturePrefix("firestore", index_3.firestoreTools),
43
- auth: addFeaturePrefix("auth", index_1.authTools),
44
- dataconnect: addFeaturePrefix("dataconnect", index_2.dataconnectTools),
45
- storage: addFeaturePrefix("storage", index_5.storageTools),
46
- messaging: addFeaturePrefix("messaging", index_6.messagingTools),
47
- functions: addFeaturePrefix("functions", index_12.functionsTools),
48
- remoteconfig: addFeaturePrefix("remoteconfig", index_7.remoteConfigTools),
49
- crashlytics: addFeaturePrefix("crashlytics", index_8.crashlyticsTools),
50
- apptesting: addFeaturePrefix("apptesting", index_10.apptestingTools),
51
- apphosting: addFeaturePrefix("apphosting", index_9.appHostingTools),
52
- database: addFeaturePrefix("realtimedatabase", index_11.realtimeDatabaseTools),
53
- };
54
- function addFeaturePrefix(feature, tools) {
55
- return tools.map((tool) => (Object.assign(Object.assign({}, tool), { mcp: Object.assign(Object.assign({}, tool.mcp), { name: `${feature}_${tool.mcp.name}`, _meta: Object.assign(Object.assign({}, tool.mcp._meta), { feature }) }) })));
56
- }
57
76
  function markdownDocsOfTools() {
58
- var _a, _b, _c;
59
- const allTools = getAllTools([]);
77
+ const allTools = getToolsByFeature([]);
60
78
  let doc = `
61
79
  | Tool Name | Feature Group | Description |
62
80
  | --------- | ------------- | ----------- |`;
63
81
  for (const tool of allTools) {
64
- let feature = ((_b = (_a = tool.mcp) === null || _a === void 0 ? void 0 : _a._meta) === null || _b === void 0 ? void 0 : _b.feature) || "";
82
+ let feature = tool.mcp?._meta?.feature || "";
65
83
  if (feature === "firebase") {
66
84
  feature = "core";
67
85
  }
68
- const description = (((_c = tool.mcp) === null || _c === void 0 ? void 0 : _c.description) || "").replaceAll("\n", "<br>");
86
+ const description = (tool.mcp?.description || "").replaceAll("\n", "<br>");
69
87
  doc += `
70
88
  | ${tool.mcp.name} | ${feature} | ${description} |`;
71
89
  }
72
90
  return doc;
73
91
  }
74
- exports.markdownDocsOfTools = markdownDocsOfTools;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isAppTestingAvailable = void 0;
3
+ exports.isAppTestingAvailable = isAppTestingAvailable;
4
4
  const api_1 = require("../../../api");
5
5
  const appUtils_1 = require("../../../appUtils");
6
6
  const ensureApiEnabled_1 = require("../../../ensureApiEnabled");
@@ -21,4 +21,3 @@ async function isAppTestingAvailable(ctx) {
21
21
  return true;
22
22
  }
23
23
  }
24
- exports.isAppTestingAvailable = isAppTestingAvailable;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDefaultFeatureAvailabilityCheck = void 0;
3
+ exports.getDefaultFeatureAvailabilityCheck = getDefaultFeatureAvailabilityCheck;
4
4
  const util_1 = require("../util");
5
5
  const availability_1 = require("./crashlytics/availability");
6
6
  const availability_2 = require("./apptesting/availability");
@@ -21,4 +21,3 @@ const DEFAULT_AVAILABILITY_CHECKS = {
21
21
  function getDefaultFeatureAvailabilityCheck(feature) {
22
22
  return DEFAULT_AVAILABILITY_CHECKS[feature];
23
23
  }
24
- exports.getDefaultFeatureAvailabilityCheck = getDefaultFeatureAvailabilityCheck;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isCrashlyticsAvailable = void 0;
3
+ exports.isCrashlyticsAvailable = isCrashlyticsAvailable;
4
4
  const appUtils_1 = require("../../../appUtils");
5
5
  const fs = require("fs-extra");
6
6
  const path = require("path");
@@ -8,7 +8,6 @@ async function isCrashlyticsAvailable(ctx) {
8
8
  ctx.host.logger.debug("Looking for whether crashlytics is installed...");
9
9
  return await isCrashlyticsInstalled(ctx);
10
10
  }
11
- exports.isCrashlyticsAvailable = isCrashlyticsAvailable;
12
11
  async function isCrashlyticsInstalled(ctx) {
13
12
  const host = ctx.host;
14
13
  const projectDir = ctx.config.projectDir;
@@ -1,18 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.compileErrors = void 0;
3
+ exports.compileErrors = compileErrors;
4
4
  const graphqlError_1 = require("../../../dataconnect/graphqlError");
5
5
  const dataconnectEmulator_1 = require("../../../emulator/dataconnectEmulator");
6
6
  async function compileErrors(configDir, errorFilter) {
7
7
  const errors = (await dataconnectEmulator_1.DataConnectEmulator.build({ configDir })).errors;
8
- return ((errors === null || errors === void 0 ? void 0 : errors.filter((e) => {
9
- var _a;
10
- const isOperationError = ["query", "mutation"].includes((_a = e.path) === null || _a === void 0 ? void 0 : _a[0]);
8
+ return (errors
9
+ ?.filter((e) => {
10
+ const isOperationError = ["query", "mutation"].includes(e.path?.[0]);
11
11
  if (errorFilter === "operations")
12
12
  return isOperationError;
13
13
  if (errorFilter === "schema")
14
14
  return !isOperationError;
15
15
  return true;
16
- }).map(graphqlError_1.prettify).join("\n")) || "");
16
+ })
17
+ .map(graphqlError_1.prettify)
18
+ .join("\n") || "");
17
19
  }
18
- exports.compileErrors = compileErrors;
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseVariables = exports.graphqlResponseToToolResponse = exports.sourceToText = exports.connectorToText = exports.schemaToText = void 0;
3
+ exports.schemaToText = schemaToText;
4
+ exports.connectorToText = connectorToText;
5
+ exports.sourceToText = sourceToText;
6
+ exports.graphqlResponseToToolResponse = graphqlResponseToToolResponse;
7
+ exports.parseVariables = parseVariables;
4
8
  const js_yaml_1 = require("js-yaml");
5
9
  const types_1 = require("../../../dataconnect/types");
6
10
  const util_1 = require("../../util");
@@ -12,7 +16,6 @@ function schemaToText(s) {
12
16
  "\n\n" +
13
17
  sourceToText(s.source));
14
18
  }
15
- exports.schemaToText = schemaToText;
16
19
  function connectorToText(s) {
17
20
  return ((0, js_yaml_1.dump)({
18
21
  name: s.name,
@@ -20,11 +23,9 @@ function connectorToText(s) {
20
23
  "\n\n" +
21
24
  sourceToText(s.source));
22
25
  }
23
- exports.connectorToText = connectorToText;
24
26
  function sourceToText(s) {
25
- var _a;
26
27
  let output = "";
27
- (_a = s.files) === null || _a === void 0 ? void 0 : _a.forEach((f) => {
28
+ s.files?.forEach((f) => {
28
29
  output += `\n# ${f.path}`;
29
30
  output += "\n```graphql\n";
30
31
  output += `${f.content.trim()}\n`;
@@ -32,11 +33,9 @@ function sourceToText(s) {
32
33
  });
33
34
  return output;
34
35
  }
35
- exports.sourceToText = sourceToText;
36
36
  function graphqlResponseToToolResponse(g) {
37
- var _a;
38
37
  if ((0, types_1.isGraphQLResponse)(g)) {
39
- const isError = ((_a = g.errors) === null || _a === void 0 ? void 0 : _a.length) > 0;
38
+ const isError = g.errors?.length > 0;
40
39
  const contentString = `${isError ? "A GraphQL error occurred while executing the operation:" : ""}${JSON.stringify(g, null, 2)}`;
41
40
  return {
42
41
  isError,
@@ -47,7 +46,6 @@ function graphqlResponseToToolResponse(g) {
47
46
  return (0, util_1.mcpError)(JSON.stringify(g, null, 2));
48
47
  }
49
48
  }
50
- exports.graphqlResponseToToolResponse = graphqlResponseToToolResponse;
51
49
  function parseVariables(unparsedVariables) {
52
50
  let obj;
53
51
  try {
@@ -60,4 +58,3 @@ function parseVariables(unparsedVariables) {
60
58
  throw new Error("not an object");
61
59
  return obj;
62
60
  }
63
- exports.parseVariables = parseVariables;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDataConnectEmulatorClient = void 0;
3
+ exports.getDataConnectEmulatorClient = getDataConnectEmulatorClient;
4
4
  const types_1 = require("../../../emulator/types");
5
5
  const apiv2_1 = require("../../../apiv2");
6
6
  const dataplaneClient_1 = require("../../../dataconnect/dataplaneClient");
@@ -12,4 +12,3 @@ async function getDataConnectEmulatorClient(host) {
12
12
  });
13
13
  return apiClient;
14
14
  }
15
- exports.getDataConnectEmulatorClient = getDataConnectEmulatorClient;
package/lib/mcp/util.js CHANGED
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cleanSchema = exports.checkFeatureActive = exports.mcpError = exports.toContent = void 0;
3
+ exports.toContent = toContent;
4
+ exports.mcpError = mcpError;
5
+ exports.checkFeatureActive = checkFeatureActive;
6
+ exports.cleanSchema = cleanSchema;
4
7
  const js_yaml_1 = require("js-yaml");
5
8
  const api_1 = require("../api");
6
9
  const ensureApiEnabled_1 = require("../ensureApiEnabled");
@@ -9,7 +12,7 @@ function toContent(data, options) {
9
12
  if (typeof data === "string")
10
13
  return { content: [{ type: "text", text: data }] };
11
14
  let text = "";
12
- const format = (options === null || options === void 0 ? void 0 : options.format) || "yaml";
15
+ const format = options?.format || "yaml";
13
16
  switch (format) {
14
17
  case "json":
15
18
  text = JSON.stringify(data);
@@ -18,13 +21,12 @@ function toContent(data, options) {
18
21
  text = (0, js_yaml_1.dump)(data);
19
22
  break;
20
23
  }
21
- const prefix = (options === null || options === void 0 ? void 0 : options.contentPrefix) || "";
22
- const suffix = (options === null || options === void 0 ? void 0 : options.contentSuffix) || "";
24
+ const prefix = options?.contentPrefix || "";
25
+ const suffix = options?.contentSuffix || "";
23
26
  return {
24
27
  content: [{ type: "text", text: `${prefix}${text}${suffix}` }],
25
28
  };
26
29
  }
27
- exports.toContent = toContent;
28
30
  function mcpError(message, code) {
29
31
  let errorMessage = "unknown error";
30
32
  if (message instanceof Error) {
@@ -38,7 +40,6 @@ function mcpError(message, code) {
38
40
  content: [{ type: "text", text: `Error: ${code ? `${code}: ` : ""}${errorMessage}` }],
39
41
  };
40
42
  }
41
- exports.mcpError = mcpError;
42
43
  const SERVER_FEATURE_APIS = {
43
44
  core: "",
44
45
  firestore: (0, api_1.firestoreOrigin)(),
@@ -68,8 +69,7 @@ const DETECTED_API_FEATURES = {
68
69
  database: undefined,
69
70
  };
70
71
  async function checkFeatureActive(feature, projectId, options) {
71
- var _a;
72
- if (feature in (((_a = options === null || options === void 0 ? void 0 : options.config) === null || _a === void 0 ? void 0 : _a.data) || {}))
72
+ if (feature in (options?.config?.data || {}))
73
73
  return true;
74
74
  if (DETECTED_API_FEATURES[feature] !== undefined)
75
75
  return DETECTED_API_FEATURES[feature];
@@ -87,12 +87,11 @@ async function checkFeatureActive(feature, projectId, options) {
87
87
  DETECTED_API_FEATURES[feature] = false;
88
88
  return false;
89
89
  }
90
- exports.checkFeatureActive = checkFeatureActive;
91
90
  function deepClean(obj, isRootLevel = false) {
92
91
  if (typeof obj !== "object" || obj === null) {
93
92
  return obj;
94
93
  }
95
- const cleanedObj = Object.assign({}, obj);
94
+ const cleanedObj = { ...obj };
96
95
  if (cleanedObj.hasOwnProperty("$schema")) {
97
96
  delete cleanedObj.$schema;
98
97
  }
@@ -222,4 +221,3 @@ function cleanSchema(schema) {
222
221
  const result = deepClean(schema, true);
223
222
  return result === null ? {} : result;
224
223
  }
225
- exports.cleanSchema = cleanSchema;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sendFcmMessage = void 0;
3
+ exports.sendFcmMessage = sendFcmMessage;
4
4
  const api_1 = require("../api");
5
5
  const apiv2_1 = require("../apiv2");
6
6
  const logger_1 = require("../logger");
@@ -45,4 +45,3 @@ async function sendFcmMessage(projectId, options) {
45
45
  throw new error_1.FirebaseError(`Failed to send message to '${options.token || options.topic}' for the project '${projectId}'. `, { original: err });
46
46
  }
47
47
  }
48
- exports.sendFcmMessage = sendFcmMessage;
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assertImplements = void 0;
4
- function assertImplements() { }
5
3
  exports.assertImplements = assertImplements;
4
+ function assertImplements() { }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pollOperation = exports.OperationPoller = void 0;
3
+ exports.OperationPoller = void 0;
4
+ exports.pollOperation = pollOperation;
4
5
  const apiv2_1 = require("./apiv2");
5
6
  const error_1 = require("./error");
6
7
  const queue_1 = require("./throttler/queue");
@@ -64,4 +65,3 @@ exports.OperationPoller = OperationPoller;
64
65
  function pollOperation(options) {
65
66
  return new OperationPoller().poll(options);
66
67
  }
67
- exports.pollOperation = pollOperation;
@@ -1,6 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ProfileReport = exports.extractReadableIndex = exports.formatBytes = exports.formatNumber = exports.pathString = exports.extractJSON = void 0;
3
+ exports.ProfileReport = void 0;
4
+ exports.extractJSON = extractJSON;
5
+ exports.pathString = pathString;
6
+ exports.formatNumber = formatNumber;
7
+ exports.formatBytes = formatBytes;
8
+ exports.extractReadableIndex = extractReadableIndex;
4
9
  const clc = require("colorette");
5
10
  const Table = require("cli-table3");
6
11
  const fs = require("fs");
@@ -32,11 +37,9 @@ function extractJSON(line, input) {
32
37
  return null;
33
38
  }
34
39
  }
35
- exports.extractJSON = extractJSON;
36
40
  function pathString(path) {
37
41
  return `/${path ? path.join("/") : ""}`;
38
42
  }
39
- exports.pathString = pathString;
40
43
  function formatNumber(num) {
41
44
  const parts = num.toFixed(2).split(".");
42
45
  parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
@@ -45,7 +48,6 @@ function formatNumber(num) {
45
48
  }
46
49
  return parts.join(".");
47
50
  }
48
- exports.formatNumber = formatNumber;
49
51
  function formatBytes(bytes) {
50
52
  const threshold = 1000;
51
53
  if (Math.round(bytes) < threshold) {
@@ -60,7 +62,6 @@ function formatBytes(bytes) {
60
62
  } while (Math.abs(formattedBytes) >= threshold && u < units.length - 1);
61
63
  return formatNumber(formattedBytes) + " " + units[u];
62
64
  }
63
- exports.formatBytes = formatBytes;
64
65
  function extractReadableIndex(query) {
65
66
  if (query.orderBy) {
66
67
  return query.orderBy;
@@ -71,7 +72,6 @@ function extractReadableIndex(query) {
71
72
  }
72
73
  return ".value";
73
74
  }
74
- exports.extractReadableIndex = extractReadableIndex;
75
75
  class ProfileReport {
76
76
  constructor(tmpFile, outStream, options = {}) {
77
77
  this.tempFile = tmpFile;
package/lib/profiler.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.profiler = void 0;
3
+ exports.profiler = profiler;
4
4
  const fs = require("fs");
5
5
  const ora = require("ora");
6
6
  const readline = require("readline");
@@ -96,4 +96,3 @@ async function profiler(options) {
96
96
  res.body.pipe(tmpStream);
97
97
  return p;
98
98
  }
99
- exports.profiler = profiler;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveProjectPath = void 0;
3
+ exports.resolveProjectPath = resolveProjectPath;
4
4
  const path = require("path");
5
5
  const detectProjectRoot_1 = require("./detectProjectRoot");
6
6
  const error_1 = require("./error");
@@ -13,4 +13,3 @@ function resolveProjectPath(options, filePath) {
13
13
  }
14
14
  return path.resolve(projectRoot, filePath);
15
15
  }
16
- exports.resolveProjectPath = resolveProjectPath;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAliases = exports.needProjectNumber = exports.needProjectId = exports.getProjectId = void 0;
3
+ exports.getProjectId = getProjectId;
4
+ exports.needProjectId = needProjectId;
5
+ exports.needProjectNumber = needProjectNumber;
6
+ exports.getAliases = getAliases;
4
7
  const projects_1 = require("./management/projects");
5
8
  const clc = require("colorette");
6
9
  const marked_1 = require("marked");
@@ -8,12 +11,11 @@ const { FirebaseError } = require("./error");
8
11
  function getProjectId({ projectId, project, }) {
9
12
  return projectId || project;
10
13
  }
11
- exports.getProjectId = getProjectId;
12
14
  function needProjectId({ projectId, project, rc, }) {
13
15
  if (projectId || project) {
14
16
  return projectId || project;
15
17
  }
16
- const aliases = (rc === null || rc === void 0 ? void 0 : rc.projects) || {};
18
+ const aliases = rc?.projects || {};
17
19
  const aliasCount = Object.keys(aliases).length;
18
20
  if (aliasCount === 0) {
19
21
  throw new FirebaseError("No currently active project.\n" +
@@ -37,7 +39,6 @@ function needProjectId({ projectId, project, rc, }) {
37
39
  " with one of these options:\n\n" +
38
40
  aliasList);
39
41
  }
40
- exports.needProjectId = needProjectId;
41
42
  async function needProjectNumber(options) {
42
43
  if (options.projectNumber) {
43
44
  return options.projectNumber;
@@ -47,7 +48,6 @@ async function needProjectNumber(options) {
47
48
  options.projectNumber = metadata.projectNumber;
48
49
  return options.projectNumber;
49
50
  }
50
- exports.needProjectNumber = needProjectNumber;
51
51
  function getAliases(options, projectId) {
52
52
  if (options.rc.hasProjects) {
53
53
  return Object.entries(options.rc.projects)
@@ -56,4 +56,3 @@ function getAliases(options, projectId) {
56
56
  }
57
57
  return [];
58
58
  }
59
- exports.getAliases = getAliases;
package/lib/prompt.js CHANGED
@@ -1,6 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.search = exports.password = exports.number = exports.select = exports.checkbox = exports.confirm = exports.input = exports.guard = exports.Separator = void 0;
3
+ exports.Separator = void 0;
4
+ exports.guard = guard;
5
+ exports.input = input;
6
+ exports.confirm = confirm;
7
+ exports.checkbox = checkbox;
8
+ exports.select = select;
9
+ exports.number = number;
10
+ exports.password = password;
11
+ exports.search = search;
4
12
  const inquirer = require("@inquirer/prompts");
5
13
  const error_1 = require("./error");
6
14
  var prompts_1 = require("@inquirer/prompts");
@@ -14,7 +22,6 @@ function guard(opts) {
14
22
  }
15
23
  throw new error_1.FirebaseError(`Question "${opts.message}" does not have a default and cannot be answered in non-interactive mode`);
16
24
  }
17
- exports.guard = guard;
18
25
  async function input(opts) {
19
26
  if (typeof opts === "string") {
20
27
  opts = { message: opts };
@@ -27,7 +34,6 @@ async function input(opts) {
27
34
  }
28
35
  return inquirer.input(opts);
29
36
  }
30
- exports.input = input;
31
37
  async function confirm(opts) {
32
38
  if (typeof opts === "string") {
33
39
  opts = { message: opts };
@@ -43,23 +49,26 @@ async function confirm(opts) {
43
49
  }
44
50
  return inquirer.confirm(opts);
45
51
  }
46
- exports.confirm = confirm;
47
52
  async function checkbox(opts) {
48
53
  const { shouldReturn, value } = guard(opts);
49
54
  if (shouldReturn) {
50
55
  return value;
51
56
  }
52
- return inquirer.checkbox(Object.assign(Object.assign({}, opts), { loop: true }));
57
+ return inquirer.checkbox({
58
+ ...opts,
59
+ loop: true,
60
+ });
53
61
  }
54
- exports.checkbox = checkbox;
55
62
  async function select(opts) {
56
63
  const { shouldReturn, value } = guard(opts);
57
64
  if (shouldReturn) {
58
65
  return value;
59
66
  }
60
- return inquirer.select(Object.assign(Object.assign({}, opts), { loop: false }));
67
+ return inquirer.select({
68
+ ...opts,
69
+ loop: false,
70
+ });
61
71
  }
62
- exports.select = select;
63
72
  async function number(opts) {
64
73
  if (typeof opts === "string") {
65
74
  opts = { message: opts };
@@ -70,9 +79,8 @@ async function number(opts) {
70
79
  return value;
71
80
  }
72
81
  }
73
- return await inquirer.number(Object.assign({ required: true }, opts));
82
+ return await inquirer.number({ required: true, ...opts });
74
83
  }
75
- exports.number = number;
76
84
  async function password(opts) {
77
85
  if (typeof opts === "string") {
78
86
  opts = { message: opts };
@@ -80,9 +88,11 @@ async function password(opts) {
80
88
  else {
81
89
  guard(opts);
82
90
  }
83
- return inquirer.password(Object.assign(Object.assign({}, opts), { mask: "" }));
91
+ return inquirer.password({
92
+ ...opts,
93
+ mask: "",
94
+ });
84
95
  }
85
- exports.password = password;
86
96
  async function search(opts) {
87
97
  const { shouldReturn, value } = guard(opts);
88
98
  if (shouldReturn) {
@@ -90,4 +100,3 @@ async function search(opts) {
90
100
  }
91
101
  return inquirer.search(opts);
92
102
  }
93
- exports.search = search;
package/lib/rc.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RC = exports.loadRC = void 0;
3
+ exports.RC = void 0;
4
+ exports.loadRC = loadRC;
4
5
  const _ = require("lodash");
5
6
  const clc = require("colorette");
6
7
  const cjson = require("cjson");
@@ -21,7 +22,6 @@ function loadRC(options) {
21
22
  const potential = path.resolve(dir || cwd, "./.firebaserc");
22
23
  return RC.loadFile(potential);
23
24
  }
24
- exports.loadRC = loadRC;
25
25
  class RC {
26
26
  static loadFile(rcpath) {
27
27
  let data = {};
@@ -37,7 +37,7 @@ class RC {
37
37
  }
38
38
  constructor(rcpath, data) {
39
39
  this.path = rcpath;
40
- this.data = Object.assign({ projects: {}, targets: {}, etags: {} }, data);
40
+ this.data = { projects: {}, targets: {}, etags: {}, ...data };
41
41
  }
42
42
  set(key, value) {
43
43
  _.set(this.data, key, value);
@@ -70,12 +70,10 @@ class RC {
70
70
  return this.data.targets[project] || {};
71
71
  }
72
72
  targets(project, type) {
73
- var _a;
74
- return ((_a = this.data.targets[project]) === null || _a === void 0 ? void 0 : _a[type]) || {};
73
+ return this.data.targets[project]?.[type] || {};
75
74
  }
76
75
  target(project, type, name) {
77
- var _a, _b;
78
- return ((_b = (_a = this.data.targets[project]) === null || _a === void 0 ? void 0 : _a[type]) === null || _b === void 0 ? void 0 : _b[name]) || [];
76
+ return this.data.targets[project]?.[type]?.[name] || [];
79
77
  }
80
78
  applyTarget(project, type, targetName, resources) {
81
79
  if (!TARGET_TYPES[type]) {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deleteExperiment = void 0;
3
+ exports.deleteExperiment = deleteExperiment;
4
4
  const clc = require("colorette");
5
5
  const api_1 = require("../api");
6
6
  const apiv2_1 = require("../apiv2");
@@ -29,4 +29,3 @@ async function deleteExperiment(projectId, namespace, experimentId) {
29
29
  throw new error_1.FirebaseError(`Failed to delete Remote Config experiment with ID ${experimentId} for project ${projectId}. Error: ${(0, error_1.getErrMsg)(err)}`, { original: error });
30
30
  }
31
31
  }
32
- exports.deleteExperiment = deleteExperiment;