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,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getBackupSchedule = exports.listBackupSchedules = exports.getBackup = exports.listBackups = exports.deleteBackupSchedule = exports.deleteBackup = exports.updateBackupSchedule = exports.createBackupSchedule = exports.deleteDocuments = exports.deleteDocument = exports.queryCollection = exports.getDocuments = exports.listCollectionIds = exports.getDatabase = exports.DayOfWeek = void 0;
3
+ exports.DayOfWeek = void 0;
4
+ exports.getDatabase = getDatabase;
5
+ exports.listCollectionIds = listCollectionIds;
6
+ exports.getDocuments = getDocuments;
7
+ exports.queryCollection = queryCollection;
8
+ exports.deleteDocument = deleteDocument;
9
+ exports.deleteDocuments = deleteDocuments;
10
+ exports.createBackupSchedule = createBackupSchedule;
11
+ exports.updateBackupSchedule = updateBackupSchedule;
12
+ exports.deleteBackup = deleteBackup;
13
+ exports.deleteBackupSchedule = deleteBackupSchedule;
14
+ exports.listBackups = listBackups;
15
+ exports.getBackup = getBackup;
16
+ exports.listBackupSchedules = listBackupSchedules;
17
+ exports.getBackupSchedule = getBackupSchedule;
4
18
  const api_1 = require("../api");
5
19
  const apiv2_1 = require("../apiv2");
6
20
  const logger_1 = require("../logger");
@@ -30,7 +44,7 @@ var DayOfWeek;
30
44
  DayOfWeek["FRIDAY"] = "FRIDAY";
31
45
  DayOfWeek["SATURDAY"] = "SATURDAY";
32
46
  DayOfWeek["SUNDAY"] = "SUNDAY";
33
- })(DayOfWeek = exports.DayOfWeek || (exports.DayOfWeek = {}));
47
+ })(DayOfWeek || (exports.DayOfWeek = DayOfWeek = {}));
34
48
  async function getDatabase(project, database, emulatorUrl) {
35
49
  const apiClient = getClient(emulatorUrl);
36
50
  const url = `projects/${project}/databases/${database}`;
@@ -43,7 +57,6 @@ async function getDatabase(project, database, emulatorUrl) {
43
57
  throw err;
44
58
  }
45
59
  }
46
- exports.getDatabase = getDatabase;
47
60
  function listCollectionIds(project, databaseId = "(default)", emulatorUrl) {
48
61
  const apiClient = getClient(emulatorUrl);
49
62
  const url = `projects/${project}/databases/${databaseId}/documents:listCollectionIds`;
@@ -54,7 +67,6 @@ function listCollectionIds(project, databaseId = "(default)", emulatorUrl) {
54
67
  return res.body.collectionIds || [];
55
68
  });
56
69
  }
57
- exports.listCollectionIds = listCollectionIds;
58
70
  async function getDocuments(project, paths, databaseId = "(default)", emulatorUrl) {
59
71
  const apiClient = getClient(emulatorUrl);
60
72
  const basePath = `projects/${project}/databases/${databaseId}/documents`;
@@ -65,7 +77,6 @@ async function getDocuments(project, paths, databaseId = "(default)", emulatorUr
65
77
  res.body.map((r) => (r.missing ? out.missing.push(r.missing) : out.documents.push(r.found)));
66
78
  return out;
67
79
  }
68
- exports.getDocuments = getDocuments;
69
80
  async function queryCollection(project, structuredQuery, databaseId = "(default)", emulatorUrl) {
70
81
  const apiClient = getClient(emulatorUrl);
71
82
  const basePath = `projects/${project}/databases/${databaseId}/documents`;
@@ -88,12 +99,10 @@ async function queryCollection(project, structuredQuery, databaseId = "(default)
88
99
  throw JSON.stringify(err);
89
100
  }
90
101
  }
91
- exports.queryCollection = queryCollection;
92
102
  async function deleteDocument(doc, emulatorUrl) {
93
103
  const apiClient = getClient(emulatorUrl);
94
104
  return apiClient.delete(doc.name);
95
105
  }
96
- exports.deleteDocument = deleteDocument;
97
106
  async function deleteDocuments(project, docs, databaseId = "(default)", emulatorUrl) {
98
107
  const apiClient = getClient(emulatorUrl);
99
108
  const url = `projects/${project}/databases/${databaseId}/documents:commit`;
@@ -108,7 +117,6 @@ async function deleteDocuments(project, docs, databaseId = "(default)", emulator
108
117
  });
109
118
  return res.body.writeResults.length;
110
119
  }
111
- exports.deleteDocuments = deleteDocuments;
112
120
  async function createBackupSchedule(project, databaseId, retention, dailyRecurrence, weeklyRecurrence) {
113
121
  const url = `projects/${project}/databases/${databaseId}/backupSchedules`;
114
122
  const data = {
@@ -120,7 +128,6 @@ async function createBackupSchedule(project, databaseId, retention, dailyRecurre
120
128
  const res = await prodOnlyClient.post(url, data);
121
129
  return res.body;
122
130
  }
123
- exports.createBackupSchedule = createBackupSchedule;
124
131
  async function updateBackupSchedule(backupScheduleName, retention) {
125
132
  const data = {
126
133
  retention: (0, proto_1.durationFromSeconds)(retention),
@@ -128,21 +135,17 @@ async function updateBackupSchedule(backupScheduleName, retention) {
128
135
  const res = await prodOnlyClient.patch(backupScheduleName, data);
129
136
  return res.body;
130
137
  }
131
- exports.updateBackupSchedule = updateBackupSchedule;
132
138
  async function deleteBackup(backupName) {
133
139
  await prodOnlyClient.delete(backupName);
134
140
  }
135
- exports.deleteBackup = deleteBackup;
136
141
  async function deleteBackupSchedule(backupScheduleName) {
137
142
  await prodOnlyClient.delete(backupScheduleName);
138
143
  }
139
- exports.deleteBackupSchedule = deleteBackupSchedule;
140
144
  async function listBackups(project, location) {
141
145
  const url = `/projects/${project}/locations/${location}/backups`;
142
146
  const res = await prodOnlyClient.get(url);
143
147
  return res.body;
144
148
  }
145
- exports.listBackups = listBackups;
146
149
  async function getBackup(backupName) {
147
150
  const res = await prodOnlyClient.get(backupName);
148
151
  const backup = res.body;
@@ -151,7 +154,6 @@ async function getBackup(backupName) {
151
154
  }
152
155
  return backup;
153
156
  }
154
- exports.getBackup = getBackup;
155
157
  async function listBackupSchedules(project, database) {
156
158
  const url = `/projects/${project}/databases/${database}/backupSchedules`;
157
159
  const res = await prodOnlyClient.get(url);
@@ -161,7 +163,6 @@ async function listBackupSchedules(project, database) {
161
163
  }
162
164
  return backupSchedules;
163
165
  }
164
- exports.listBackupSchedules = listBackupSchedules;
165
166
  async function getBackupSchedule(backupScheduleName) {
166
167
  const res = await prodOnlyClient.get(backupScheduleName);
167
168
  const backupSchedule = res.body;
@@ -170,4 +171,3 @@ async function getBackupSchedule(backupScheduleName) {
170
171
  }
171
172
  return backupSchedule;
172
173
  }
173
- exports.getBackupSchedule = getBackupSchedule;
package/lib/gcp/iam.js CHANGED
@@ -1,6 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.printManualIamConfig = exports.mergeBindings = exports.testIamPermissions = exports.testResourceIamPermissions = exports.getRole = exports.listServiceAccountKeys = exports.deleteServiceAccount = exports.createServiceAccountKey = exports.getServiceAccount = exports.createServiceAccount = exports.getDefaultCloudBuildServiceAgent = void 0;
3
+ exports.getDefaultCloudBuildServiceAgent = getDefaultCloudBuildServiceAgent;
4
+ exports.createServiceAccount = createServiceAccount;
5
+ exports.getServiceAccount = getServiceAccount;
6
+ exports.createServiceAccountKey = createServiceAccountKey;
7
+ exports.deleteServiceAccount = deleteServiceAccount;
8
+ exports.listServiceAccountKeys = listServiceAccountKeys;
9
+ exports.getRole = getRole;
10
+ exports.testResourceIamPermissions = testResourceIamPermissions;
11
+ exports.testIamPermissions = testIamPermissions;
12
+ exports.mergeBindings = mergeBindings;
13
+ exports.printManualIamConfig = printManualIamConfig;
4
14
  const api_1 = require("../api");
5
15
  const logger_1 = require("../logger");
6
16
  const apiv2_1 = require("../apiv2");
@@ -9,7 +19,6 @@ const apiClient = new apiv2_1.Client({ urlPrefix: (0, api_1.iamOrigin)(), apiVer
9
19
  function getDefaultCloudBuildServiceAgent(projectNumber) {
10
20
  return `${projectNumber}@cloudbuild.gserviceaccount.com`;
11
21
  }
12
- exports.getDefaultCloudBuildServiceAgent = getDefaultCloudBuildServiceAgent;
13
22
  async function createServiceAccount(projectId, accountId, description, displayName) {
14
23
  const response = await apiClient.post(`/projects/${projectId}/serviceAccounts`, {
15
24
  accountId,
@@ -20,12 +29,10 @@ async function createServiceAccount(projectId, accountId, description, displayNa
20
29
  }, { skipLog: { resBody: true } });
21
30
  return response.body;
22
31
  }
23
- exports.createServiceAccount = createServiceAccount;
24
32
  async function getServiceAccount(projectId, serviceAccountName) {
25
33
  const response = await apiClient.get(`/projects/${projectId}/serviceAccounts/${serviceAccountName}@${projectId}.iam.gserviceaccount.com`);
26
34
  return response.body;
27
35
  }
28
- exports.getServiceAccount = getServiceAccount;
29
36
  async function createServiceAccountKey(projectId, serviceAccountName) {
30
37
  const response = await apiClient.post(`/projects/${projectId}/serviceAccounts/${serviceAccountName}@${projectId}.iam.gserviceaccount.com/keys`, {
31
38
  keyAlgorithm: "KEY_ALG_UNSPECIFIED",
@@ -33,25 +40,21 @@ async function createServiceAccountKey(projectId, serviceAccountName) {
33
40
  });
34
41
  return response.body;
35
42
  }
36
- exports.createServiceAccountKey = createServiceAccountKey;
37
43
  async function deleteServiceAccount(projectId, accountEmail) {
38
44
  await apiClient.delete(`/projects/${projectId}/serviceAccounts/${accountEmail}`, {
39
45
  resolveOnHTTPError: true,
40
46
  });
41
47
  }
42
- exports.deleteServiceAccount = deleteServiceAccount;
43
48
  async function listServiceAccountKeys(projectId, serviceAccountName) {
44
49
  const response = await apiClient.get(`/projects/${projectId}/serviceAccounts/${serviceAccountName}@${projectId}.iam.gserviceaccount.com/keys`);
45
50
  return response.body.keys;
46
51
  }
47
- exports.listServiceAccountKeys = listServiceAccountKeys;
48
52
  async function getRole(role) {
49
53
  const response = await apiClient.get(`/roles/${role}`, {
50
54
  retryCodes: [500, 503],
51
55
  });
52
56
  return response.body;
53
57
  }
54
- exports.getRole = getRole;
55
58
  async function testResourceIamPermissions(origin, apiVersion, resourceName, permissions, quotaUser = "") {
56
59
  const localClient = new apiv2_1.Client({ urlPrefix: origin, apiVersion });
57
60
  if (process.env.FIREBASE_SKIP_INFORMATIONAL_IAM) {
@@ -74,11 +77,9 @@ async function testResourceIamPermissions(origin, apiVersion, resourceName, perm
74
77
  passed: missing.size === 0,
75
78
  };
76
79
  }
77
- exports.testResourceIamPermissions = testResourceIamPermissions;
78
80
  async function testIamPermissions(projectId, permissions) {
79
81
  return testResourceIamPermissions((0, api_1.resourceManagerOrigin)(), "v1", `projects/${projectId}`, permissions, `projects/${projectId}`);
80
82
  }
81
- exports.testIamPermissions = testIamPermissions;
82
83
  function mergeBindings(policy, requiredBindings) {
83
84
  let updated = false;
84
85
  for (const requiredBinding of requiredBindings) {
@@ -97,7 +98,6 @@ function mergeBindings(policy, requiredBindings) {
97
98
  }
98
99
  return updated;
99
100
  }
100
- exports.mergeBindings = mergeBindings;
101
101
  function printManualIamConfig(requiredBindings, projectId, prefix) {
102
102
  utils.logLabeledBullet(prefix, "Failed to verify the project has the correct IAM bindings for a successful deployment.", "warn");
103
103
  utils.logLabeledBullet(prefix, "You can either re-run this command as a project owner or manually run the following set of `gcloud` commands:", "warn");
@@ -109,4 +109,3 @@ function printManualIamConfig(requiredBindings, projectId, prefix) {
109
109
  }
110
110
  }
111
111
  }
112
- exports.printManualIamConfig = printManualIamConfig;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateConfig = exports.setBlockingFunctionsConfig = exports.getConfig = exports.getBlockingFunctionsConfig = void 0;
3
+ exports.getBlockingFunctionsConfig = getBlockingFunctionsConfig;
4
+ exports.getConfig = getConfig;
5
+ exports.setBlockingFunctionsConfig = setBlockingFunctionsConfig;
6
+ exports.updateConfig = updateConfig;
4
7
  const proto = require("./proto");
5
8
  const api_1 = require("../api");
6
9
  const apiv2_1 = require("../apiv2");
@@ -16,12 +19,10 @@ async function getBlockingFunctionsConfig(project) {
16
19
  }
17
20
  return config.blockingFunctions;
18
21
  }
19
- exports.getBlockingFunctionsConfig = getBlockingFunctionsConfig;
20
22
  async function getConfig(project) {
21
23
  const response = await adminApiClient.get(`projects/${project}/config`);
22
24
  return response.body;
23
25
  }
24
- exports.getConfig = getConfig;
25
26
  async function setBlockingFunctionsConfig(project, blockingConfig) {
26
27
  const config = (await updateConfig(project, { blockingFunctions: blockingConfig }, "blockingFunctions")) || {};
27
28
  if (!config.blockingFunctions) {
@@ -29,7 +30,6 @@ async function setBlockingFunctionsConfig(project, blockingConfig) {
29
30
  }
30
31
  return config.blockingFunctions;
31
32
  }
32
- exports.setBlockingFunctionsConfig = setBlockingFunctionsConfig;
33
33
  async function updateConfig(project, config, updateMask) {
34
34
  if (!updateMask) {
35
35
  updateMask = proto.fieldMasks(config).join(",");
@@ -41,4 +41,3 @@ async function updateConfig(project, config, updateMask) {
41
41
  });
42
42
  return response.body;
43
43
  }
44
- exports.updateConfig = updateConfig;
package/lib/gcp/k8s.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mebibytes = void 0;
3
+ exports.mebibytes = mebibytes;
4
4
  const BYTES_PER_UNIT = {
5
5
  "": 1,
6
6
  k: 1e3,
@@ -29,4 +29,3 @@ function mebibytes(memory) {
29
29
  }
30
30
  return bytes / (1 << 20);
31
31
  }
32
- exports.mebibytes = mebibytes;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.regionInLocation = exports.DUAL_REGION_MAPPING = exports.MULTI_REGION_MAPPING = void 0;
3
+ exports.DUAL_REGION_MAPPING = exports.MULTI_REGION_MAPPING = void 0;
4
+ exports.regionInLocation = regionInLocation;
4
5
  exports.MULTI_REGION_MAPPING = {
5
6
  "us-central1": "us",
6
7
  "us-east1": "us",
@@ -41,4 +42,3 @@ function regionInLocation(region, location) {
41
42
  }
42
43
  return false;
43
44
  }
44
- exports.regionInLocation = regionInLocation;
package/lib/gcp/proto.js CHANGED
@@ -1,15 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pruneUndefiends = exports.formatServiceAccount = exports.getInvokerMembers = exports.fieldMasks = exports.renameIfPresent = exports.convertIfPresent = exports.copyIfPresent = exports.assertOneOf = exports.durationFromSeconds = exports.secondsFromDuration = void 0;
3
+ exports.secondsFromDuration = secondsFromDuration;
4
+ exports.durationFromSeconds = durationFromSeconds;
5
+ exports.assertOneOf = assertOneOf;
6
+ exports.copyIfPresent = copyIfPresent;
7
+ exports.convertIfPresent = convertIfPresent;
8
+ exports.renameIfPresent = renameIfPresent;
9
+ exports.fieldMasks = fieldMasks;
10
+ exports.getInvokerMembers = getInvokerMembers;
11
+ exports.formatServiceAccount = formatServiceAccount;
12
+ exports.pruneUndefiends = pruneUndefiends;
4
13
  const error_1 = require("../error");
5
14
  function secondsFromDuration(d) {
6
15
  return +d.slice(0, d.length - 1);
7
16
  }
8
- exports.secondsFromDuration = secondsFromDuration;
9
17
  function durationFromSeconds(s) {
10
18
  return `${s}s`;
11
19
  }
12
- exports.durationFromSeconds = durationFromSeconds;
13
20
  function assertOneOf(typename, obj, oneof, ...fields) {
14
21
  const defined = [];
15
22
  for (const key of fields) {
@@ -22,7 +29,6 @@ function assertOneOf(typename, obj, oneof, ...fields) {
22
29
  throw new error_1.FirebaseError(`Invalid ${typename} definition. ${oneof} can only have one field defined, but found ${defined.join(",")}`);
23
30
  }
24
31
  }
25
- exports.assertOneOf = assertOneOf;
26
32
  function copyIfPresent(dest, src, ...fields) {
27
33
  for (const field of fields) {
28
34
  if (!Object.prototype.hasOwnProperty.call(src, field)) {
@@ -31,7 +37,6 @@ function copyIfPresent(dest, src, ...fields) {
31
37
  dest[field] = src[field];
32
38
  }
33
39
  }
34
- exports.copyIfPresent = copyIfPresent;
35
40
  function convertIfPresent(...args) {
36
41
  if (args.length === 4) {
37
42
  const [dest, src, key, converter] = args;
@@ -45,20 +50,17 @@ function convertIfPresent(...args) {
45
50
  dest[destKey] = converter(src[srcKey]);
46
51
  }
47
52
  }
48
- exports.convertIfPresent = convertIfPresent;
49
53
  function renameIfPresent(dest, src, destKey, srcKey) {
50
54
  if (!Object.prototype.hasOwnProperty.call(src, srcKey)) {
51
55
  return;
52
56
  }
53
57
  dest[destKey] = src[srcKey];
54
58
  }
55
- exports.renameIfPresent = renameIfPresent;
56
59
  function fieldMasks(object, ...doNotRecurseIn) {
57
60
  const masks = [];
58
61
  fieldMasksHelper([], object, doNotRecurseIn, masks);
59
62
  return masks;
60
63
  }
61
- exports.fieldMasks = fieldMasks;
62
64
  function fieldMasksHelper(prefixes, cursor, doNotRecurseIn, masks) {
63
65
  if (Array.isArray(cursor) && !cursor.length) {
64
66
  return;
@@ -90,7 +92,6 @@ function getInvokerMembers(invoker, projectId) {
90
92
  }
91
93
  return invoker.map((inv) => formatServiceAccount(inv, projectId));
92
94
  }
93
- exports.getInvokerMembers = getInvokerMembers;
94
95
  function formatServiceAccount(serviceAccount, projectId, removeTypePrefix = false) {
95
96
  if (serviceAccount.length === 0) {
96
97
  throw new error_1.FirebaseError("Service account cannot be an empty string");
@@ -105,7 +106,6 @@ function formatServiceAccount(serviceAccount, projectId, removeTypePrefix = fals
105
106
  }
106
107
  return `${prefix}${serviceAccount}`;
107
108
  }
108
- exports.formatServiceAccount = formatServiceAccount;
109
109
  function pruneUndefiends(obj) {
110
110
  if (typeof obj !== "object" || obj === null) {
111
111
  return;
@@ -128,4 +128,3 @@ function pruneUndefiends(obj) {
128
128
  }
129
129
  }
130
130
  }
131
- exports.pruneUndefiends = pruneUndefiends;
package/lib/gcp/pubsub.js CHANGED
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deleteTopic = exports.updateTopic = exports.getTopic = exports.createTopic = void 0;
3
+ exports.createTopic = createTopic;
4
+ exports.getTopic = getTopic;
5
+ exports.updateTopic = updateTopic;
6
+ exports.deleteTopic = deleteTopic;
4
7
  const apiv2_1 = require("../apiv2");
5
8
  const api_1 = require("../api");
6
9
  const proto = require("./proto");
@@ -14,12 +17,10 @@ async function createTopic(topic) {
14
17
  const result = await client.put(topic.name, topic);
15
18
  return result.body;
16
19
  }
17
- exports.createTopic = createTopic;
18
20
  async function getTopic(name) {
19
21
  const result = await client.get(name);
20
22
  return result.body;
21
23
  }
22
- exports.getTopic = getTopic;
23
24
  async function updateTopic(topic) {
24
25
  const queryParams = {
25
26
  updateMask: proto.fieldMasks(topic).join(","),
@@ -27,8 +28,6 @@ async function updateTopic(topic) {
27
28
  const result = await client.patch(topic.name, topic, { queryParams });
28
29
  return result.body;
29
30
  }
30
- exports.updateTopic = updateTopic;
31
31
  async function deleteTopic(name) {
32
32
  await client.delete(name);
33
33
  }
34
- exports.deleteTopic = deleteTopic;
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.serviceAccountHasRoles = exports.addServiceAccountToRoles = exports.setIamPolicy = exports.getIamPolicy = exports.firebaseRoles = void 0;
3
+ exports.firebaseRoles = void 0;
4
+ exports.getIamPolicy = getIamPolicy;
5
+ exports.setIamPolicy = setIamPolicy;
6
+ exports.addServiceAccountToRoles = addServiceAccountToRoles;
7
+ exports.serviceAccountHasRoles = serviceAccountHasRoles;
4
8
  const lodash_1 = require("lodash");
5
9
  const api_1 = require("../api");
6
10
  const apiv2_1 = require("../apiv2");
@@ -19,7 +23,6 @@ async function getIamPolicy(projectIdOrNumber) {
19
23
  const response = await apiClient.post(`/projects/${projectIdOrNumber}:getIamPolicy`);
20
24
  return response.body;
21
25
  }
22
- exports.getIamPolicy = getIamPolicy;
23
26
  async function setIamPolicy(projectIdOrNumber, newPolicy, updateMask = "") {
24
27
  const response = await apiClient.post(`/projects/${projectIdOrNumber}:setIamPolicy`, {
25
28
  policy: newPolicy,
@@ -27,7 +30,6 @@ async function setIamPolicy(projectIdOrNumber, newPolicy, updateMask = "") {
27
30
  });
28
31
  return response.body;
29
32
  }
30
- exports.setIamPolicy = setIamPolicy;
31
33
  async function addServiceAccountToRoles(projectId, serviceAccountName, roles, skipAccountLookup = false) {
32
34
  const [{ name: fullServiceAccountName }, projectPolicy] = await Promise.all([
33
35
  skipAccountLookup
@@ -52,7 +54,6 @@ async function addServiceAccountToRoles(projectId, serviceAccountName, roles, sk
52
54
  });
53
55
  return setIamPolicy(projectId, projectPolicy, "bindings");
54
56
  }
55
- exports.addServiceAccountToRoles = addServiceAccountToRoles;
56
57
  async function serviceAccountHasRoles(projectId, serviceAccountName, roles, skipAccountLookup = false) {
57
58
  const [{ name: fullServiceAccountName }, projectPolicy] = await Promise.all([
58
59
  skipAccountLookup
@@ -72,4 +73,3 @@ async function serviceAccountHasRoles(projectId, serviceAccountName, roles, skip
72
73
  }
73
74
  return true;
74
75
  }
75
- exports.serviceAccountHasRoles = serviceAccountHasRoles;
package/lib/gcp/rules.js CHANGED
@@ -1,6 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.testRuleset = exports.updateOrCreateRelease = exports.updateRelease = exports.createRelease = exports.createRuleset = exports.deleteRuleset = exports.getRulesetId = exports.listAllRulesets = exports.listRulesets = exports.getRulesetContent = exports.listAllReleases = exports.listReleases = exports.getLatestRulesetName = void 0;
3
+ exports.getLatestRulesetName = getLatestRulesetName;
4
+ exports.listReleases = listReleases;
5
+ exports.listAllReleases = listAllReleases;
6
+ exports.getRulesetContent = getRulesetContent;
7
+ exports.listRulesets = listRulesets;
8
+ exports.listAllRulesets = listAllRulesets;
9
+ exports.getRulesetId = getRulesetId;
10
+ exports.deleteRuleset = deleteRuleset;
11
+ exports.createRuleset = createRuleset;
12
+ exports.createRelease = createRelease;
13
+ exports.updateRelease = updateRelease;
14
+ exports.updateOrCreateRelease = updateOrCreateRelease;
15
+ exports.testRuleset = testRuleset;
4
16
  const api_1 = require("../api");
5
17
  const apiv2_1 = require("../apiv2");
6
18
  const logger_1 = require("../logger");
@@ -25,7 +37,6 @@ async function getLatestRulesetName(projectId, service) {
25
37
  }
26
38
  return release.rulesetName;
27
39
  }
28
- exports.getLatestRulesetName = getLatestRulesetName;
29
40
  const MAX_RELEASES_PAGE_SIZE = 10;
30
41
  async function listReleases(projectId, pageToken = "") {
31
42
  const response = await apiClient.get(`/projects/${projectId}/releases`, {
@@ -39,7 +50,6 @@ async function listReleases(projectId, pageToken = "") {
39
50
  }
40
51
  return _handleErrorResponse(response);
41
52
  }
42
- exports.listReleases = listReleases;
43
53
  async function listAllReleases(projectId) {
44
54
  let pageToken;
45
55
  let releases = [];
@@ -52,7 +62,6 @@ async function listAllReleases(projectId) {
52
62
  } while (pageToken);
53
63
  return releases.sort((a, b) => b.createTime.localeCompare(a.createTime));
54
64
  }
55
- exports.listAllReleases = listAllReleases;
56
65
  async function getRulesetContent(name) {
57
66
  const response = await apiClient.get(`/${name}`, {
58
67
  skipLog: { resBody: true },
@@ -63,7 +72,6 @@ async function getRulesetContent(name) {
63
72
  }
64
73
  return _handleErrorResponse(response);
65
74
  }
66
- exports.getRulesetContent = getRulesetContent;
67
75
  const MAX_RULESET_PAGE_SIZE = 100;
68
76
  async function listRulesets(projectId, pageToken = "") {
69
77
  const response = await apiClient.get(`/projects/${projectId}/rulesets`, {
@@ -78,7 +86,6 @@ async function listRulesets(projectId, pageToken = "") {
78
86
  }
79
87
  return _handleErrorResponse(response);
80
88
  }
81
- exports.listRulesets = listRulesets;
82
89
  async function listAllRulesets(projectId) {
83
90
  let pageToken;
84
91
  let rulesets = [];
@@ -91,11 +98,9 @@ async function listAllRulesets(projectId) {
91
98
  } while (pageToken);
92
99
  return rulesets.sort((a, b) => b.createTime.localeCompare(a.createTime));
93
100
  }
94
- exports.listAllRulesets = listAllRulesets;
95
101
  function getRulesetId(ruleset) {
96
102
  return ruleset.name.split("/").pop();
97
103
  }
98
- exports.getRulesetId = getRulesetId;
99
104
  async function deleteRuleset(projectId, id) {
100
105
  const response = await apiClient.delete(`/projects/${projectId}/rulesets/${id}`);
101
106
  if (response.status === 200) {
@@ -103,7 +108,6 @@ async function deleteRuleset(projectId, id) {
103
108
  }
104
109
  return _handleErrorResponse(response);
105
110
  }
106
- exports.deleteRuleset = deleteRuleset;
107
111
  async function createRuleset(projectId, files) {
108
112
  const payload = { source: { files } };
109
113
  const response = await apiClient.post(`/projects/${projectId}/rulesets`, payload, { skipLog: { body: true } });
@@ -113,7 +117,6 @@ async function createRuleset(projectId, files) {
113
117
  }
114
118
  return _handleErrorResponse(response);
115
119
  }
116
- exports.createRuleset = createRuleset;
117
120
  async function createRelease(projectId, rulesetName, releaseName) {
118
121
  const payload = {
119
122
  name: `projects/${projectId}/releases/${releaseName}`,
@@ -126,7 +129,6 @@ async function createRelease(projectId, rulesetName, releaseName) {
126
129
  }
127
130
  return _handleErrorResponse(response);
128
131
  }
129
- exports.createRelease = createRelease;
130
132
  async function updateRelease(projectId, rulesetName, releaseName) {
131
133
  const payload = {
132
134
  release: {
@@ -141,7 +143,6 @@ async function updateRelease(projectId, rulesetName, releaseName) {
141
143
  }
142
144
  return _handleErrorResponse(response);
143
145
  }
144
- exports.updateRelease = updateRelease;
145
146
  async function updateOrCreateRelease(projectId, rulesetName, releaseName) {
146
147
  logger_1.logger.debug("[rules] releasing", releaseName, "with ruleset", rulesetName);
147
148
  return updateRelease(projectId, rulesetName, releaseName).catch(() => {
@@ -149,8 +150,6 @@ async function updateOrCreateRelease(projectId, rulesetName, releaseName) {
149
150
  return createRelease(projectId, rulesetName, releaseName);
150
151
  });
151
152
  }
152
- exports.updateOrCreateRelease = updateOrCreateRelease;
153
153
  function testRuleset(projectId, files) {
154
154
  return apiClient.post(`/projects/${encodeURIComponent(projectId)}:test`, { source: { files } }, { skipLog: { body: true } });
155
155
  }
156
- exports.testRuleset = testRuleset;