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.
- package/lib/accountExporter.js +3 -5
- package/lib/accountImporter.js +4 -5
- package/lib/api.js +3 -3
- package/lib/apiv2.js +9 -13
- package/lib/appUtils.js +19 -21
- package/lib/appdistribution/client.js +4 -8
- package/lib/appdistribution/distribution.js +4 -4
- package/lib/appdistribution/options-parser-util.js +8 -9
- package/lib/appdistribution/types.js +2 -2
- package/lib/appdistribution/yaml_helper.js +33 -17
- package/lib/apphosting/app.js +8 -13
- package/lib/apphosting/backend.js +34 -24
- package/lib/apphosting/config.js +14 -14
- package/lib/apphosting/githubConnections.js +38 -35
- package/lib/apphosting/localbuilds.js +4 -6
- package/lib/apphosting/repo.js +24 -20
- package/lib/apphosting/rollout.js +12 -5
- package/lib/apphosting/secrets/dialogs.js +9 -9
- package/lib/apphosting/secrets/index.js +9 -11
- package/lib/apphosting/utils.js +2 -3
- package/lib/apphosting/yaml.js +12 -11
- package/lib/apptesting/ensureProjectConfigured.js +1 -2
- package/lib/apptesting/invokeTests.js +2 -3
- package/lib/apptesting/parseTestFiles.js +5 -6
- package/lib/apptesting/types.js +2 -2
- package/lib/archiveDirectory.js +1 -2
- package/lib/auth.js +36 -40
- package/lib/bin/cli.js +2 -3
- package/lib/bin/mcp.js +1 -2
- package/lib/checkMinRequiredVersion.js +1 -2
- package/lib/checkValidTargetFilters.js +1 -2
- package/lib/command.js +6 -9
- package/lib/commands/appdistribution-testers-list.js +2 -3
- package/lib/commands/apphosting-backends-list.js +4 -6
- package/lib/commands/apphosting-builds-create.js +2 -3
- package/lib/commands/apphosting-builds-get.js +1 -2
- package/lib/commands/apphosting-rollouts-list.js +1 -2
- package/lib/commands/apps-init.js +1 -1
- package/lib/commands/{apptesting-execute.js → apptesting-wata.js} +3 -4
- package/lib/commands/crashlytics-symbols-upload.js +2 -2
- package/lib/commands/dataconnect-execute.js +4 -4
- package/lib/commands/dataconnect-sdk-generate.js +5 -6
- package/lib/commands/dataconnect-services-list.js +7 -8
- package/lib/commands/dataconnect-sql-diff.js +1 -2
- package/lib/commands/dataconnect-sql-migrate.js +4 -3
- package/lib/commands/dataconnect-sql-setup.js +2 -2
- package/lib/commands/dataconnect-sql-shell.js +5 -1
- package/lib/commands/emulators-start.js +1 -2
- package/lib/commands/ext-configure.js +6 -4
- package/lib/commands/ext-dev-list.js +2 -3
- package/lib/commands/ext-dev-upload.js +2 -2
- package/lib/commands/ext-export.js +1 -1
- package/lib/commands/ext-info.js +2 -3
- package/lib/commands/ext-install.js +5 -7
- package/lib/commands/firestore-backups-list.js +1 -2
- package/lib/commands/firestore-backups-schedules-list.js +1 -2
- package/lib/commands/firestore-indexes-list.js +1 -2
- package/lib/commands/firestore-utils.js +1 -2
- package/lib/commands/functions-artifacts-setpolicy.js +1 -2
- package/lib/commands/functions-config-export.js +2 -3
- package/lib/commands/hosting-channel-deploy.js +2 -2
- package/lib/commands/hosting-clone.js +2 -3
- package/lib/commands/hosting-sites-create.js +1 -1
- package/lib/commands/index.js +2 -3
- package/lib/commands/init.js +4 -5
- package/lib/commands/internaltesting-functions-discover.js +1 -1
- package/lib/commands/login.js +4 -5
- package/lib/commands/logout.js +3 -3
- package/lib/commands/projects-create.js +1 -1
- package/lib/commands/remoteconfig-experiments-list.js +2 -3
- package/lib/commands/remoteconfig-get.js +1 -1
- package/lib/commands/remoteconfig-rollback.js +1 -2
- package/lib/commands/remoteconfig-rollouts-list.js +2 -3
- package/lib/commands/remoteconfig-versions-list.js +3 -4
- package/lib/commands/use.js +3 -3
- package/lib/config.js +4 -5
- package/lib/crashlytics/buildToolsJarHelper.js +3 -5
- package/lib/crashlytics/events.js +4 -7
- package/lib/crashlytics/filters.js +10 -12
- package/lib/crashlytics/issues.js +2 -3
- package/lib/crashlytics/notes.js +3 -4
- package/lib/crashlytics/reports.js +21 -15
- package/lib/crashlytics/types.js +7 -7
- package/lib/crashlytics/utils.js +4 -4
- package/lib/database/api.js +2 -3
- package/lib/database/import.js +4 -4
- package/lib/database/metadata.js +5 -6
- package/lib/database/rulesConfig.js +2 -3
- package/lib/dataconnect/build.js +10 -13
- package/lib/dataconnect/checkIam.js +1 -2
- package/lib/dataconnect/client.js +15 -18
- package/lib/dataconnect/dataplaneClient.js +6 -6
- package/lib/dataconnect/ensureApis.js +2 -3
- package/lib/dataconnect/errors.js +8 -11
- package/lib/dataconnect/filters.js +2 -3
- package/lib/dataconnect/freeTrial.js +3 -4
- package/lib/dataconnect/graphqlError.js +5 -8
- package/lib/dataconnect/load.js +10 -11
- package/lib/dataconnect/names.js +14 -18
- package/lib/dataconnect/prompts.js +1 -2
- package/lib/dataconnect/provisionCloudSql.js +13 -17
- package/lib/dataconnect/schemaMigration.js +60 -27
- package/lib/dataconnect/types.js +10 -12
- package/lib/dataconnect/webhook.js +3 -3
- package/lib/defaultCredentials.js +3 -4
- package/lib/deploy/apphosting/deploy.js +2 -3
- package/lib/deploy/apphosting/prepare.js +3 -5
- package/lib/deploy/apphosting/release.js +1 -1
- package/lib/deploy/apphosting/util.js +1 -2
- package/lib/deploy/database/deploy.js +1 -2
- package/lib/deploy/database/prepare.js +1 -2
- package/lib/deploy/database/release.js +1 -2
- package/lib/deploy/dataconnect/context.js +15 -4
- package/lib/deploy/dataconnect/deploy.js +5 -6
- package/lib/deploy/dataconnect/prepare.js +7 -9
- package/lib/deploy/dataconnect/release.js +7 -10
- package/lib/deploy/extensions/deploy.js +7 -9
- package/lib/deploy/extensions/deploymentSummary.js +6 -7
- package/lib/deploy/extensions/planner.js +15 -18
- package/lib/deploy/extensions/prepare.js +9 -11
- package/lib/deploy/extensions/release.js +10 -12
- package/lib/deploy/extensions/secrets.js +8 -11
- package/lib/deploy/extensions/tasks.js +6 -8
- package/lib/deploy/extensions/v2FunctionHelper.js +2 -3
- package/lib/deploy/extensions/validate.js +1 -2
- package/lib/deploy/firestore/deploy.js +3 -5
- package/lib/deploy/firestore/prepare.js +2 -3
- package/lib/deploy/firestore/release.js +3 -4
- package/lib/deploy/functions/backend.js +52 -42
- package/lib/deploy/functions/build.js +41 -15
- package/lib/deploy/functions/cache/applyHash.js +3 -5
- package/lib/deploy/functions/cache/hash.js +4 -5
- package/lib/deploy/functions/cel.js +3 -3
- package/lib/deploy/functions/checkIam.js +8 -8
- package/lib/deploy/functions/containerCleaner.js +10 -6
- package/lib/deploy/functions/deploy.js +6 -8
- package/lib/deploy/functions/ensure.js +6 -9
- package/lib/deploy/functions/functionsDeployHelper.js +10 -11
- package/lib/deploy/functions/params.js +10 -10
- package/lib/deploy/functions/prepare.js +41 -36
- package/lib/deploy/functions/prepareFunctionsUpload.js +24 -10
- package/lib/deploy/functions/pricing.js +3 -3
- package/lib/deploy/functions/prompts.js +7 -10
- package/lib/deploy/functions/release/executor.js +5 -6
- package/lib/deploy/functions/release/fabricator.js +76 -29
- package/lib/deploy/functions/release/index.js +23 -14
- package/lib/deploy/functions/release/planner.js +15 -14
- package/lib/deploy/functions/release/reporter.js +20 -20
- package/lib/deploy/functions/release/sourceTokenScraper.js +4 -5
- package/lib/deploy/functions/remoteSource.js +3 -4
- package/lib/deploy/functions/runtimes/discovery/index.js +9 -12
- package/lib/deploy/functions/runtimes/discovery/parsing.js +2 -3
- package/lib/deploy/functions/runtimes/discovery/v1alpha1.js +29 -10
- package/lib/deploy/functions/runtimes/index.js +1 -2
- package/lib/deploy/functions/runtimes/node/index.js +18 -9
- package/lib/deploy/functions/runtimes/node/parseRuntimeAndValidateSDK.js +2 -2
- package/lib/deploy/functions/runtimes/node/validate.js +1 -2
- package/lib/deploy/functions/runtimes/node/versioning.js +6 -7
- package/lib/deploy/functions/runtimes/python/index.js +12 -12
- package/lib/deploy/functions/runtimes/supported/index.js +5 -6
- package/lib/deploy/functions/services/auth.js +49 -36
- package/lib/deploy/functions/services/database.js +1 -2
- package/lib/deploy/functions/services/dataconnect.js +16 -2
- package/lib/deploy/functions/services/firebaseAlerts.js +1 -2
- package/lib/deploy/functions/services/firestore.js +3 -5
- package/lib/deploy/functions/services/index.js +2 -2
- package/lib/deploy/functions/services/remoteConfig.js +1 -2
- package/lib/deploy/functions/services/storage.js +3 -5
- package/lib/deploy/functions/services/testLab.js +1 -2
- package/lib/deploy/functions/triggerRegionHelper.js +1 -2
- package/lib/deploy/functions/validate.js +12 -11
- package/lib/deploy/hosting/convertConfig.js +38 -22
- package/lib/deploy/hosting/deploy.js +4 -7
- package/lib/deploy/hosting/hashcache.js +2 -3
- package/lib/deploy/hosting/prepare.js +14 -14
- package/lib/deploy/hosting/release.js +1 -2
- package/lib/deploy/index.js +7 -8
- package/lib/deploy/lifecycleHooks.js +3 -5
- package/lib/deploy/remoteconfig/deploy.js +1 -1
- package/lib/deploy/remoteconfig/functions.js +5 -6
- package/lib/deploy/remoteconfig/prepare.js +2 -3
- package/lib/deploy/remoteconfig/release.js +2 -2
- package/lib/deploy/storage/deploy.js +1 -1
- package/lib/deploy/storage/prepare.js +1 -1
- package/lib/deploy/storage/release.js +1 -1
- package/lib/deploymentTool.js +5 -6
- package/lib/detectProjectRoot.js +1 -2
- package/lib/downloadUtils.js +2 -3
- package/lib/emulator/adminSdkConfig.js +2 -3
- package/lib/emulator/apphosting/config.js +1 -2
- package/lib/emulator/apphosting/developmentServer.js +3 -3
- package/lib/emulator/apphosting/serve.js +20 -14
- package/lib/emulator/auth/cloudFunctions.js +2 -3
- package/lib/emulator/auth/errors.js +2 -2
- package/lib/emulator/auth/handlers.js +3 -4
- package/lib/emulator/auth/index.js +6 -6
- package/lib/emulator/auth/operations.js +171 -129
- package/lib/emulator/auth/server.js +30 -22
- package/lib/emulator/auth/state.js +26 -36
- package/lib/emulator/auth/utils.js +12 -13
- package/lib/emulator/commandUtils.js +20 -20
- package/lib/emulator/controller.js +32 -29
- package/lib/emulator/databaseEmulator.js +1 -2
- package/lib/emulator/dataconnect/pgliteServer.js +48 -104
- package/lib/emulator/dataconnectEmulator.js +6 -9
- package/lib/emulator/download.js +2 -3
- package/lib/emulator/downloadableEmulatorInfo.json +7 -7
- package/lib/emulator/downloadableEmulators.js +49 -24
- package/lib/emulator/emulatorLogger.js +19 -4
- package/lib/emulator/env.js +6 -8
- package/lib/emulator/eventarcEmulator.js +2 -3
- package/lib/emulator/eventarcEmulatorUtils.js +3 -6
- package/lib/emulator/extensions/postinstall.js +1 -2
- package/lib/emulator/extensions/validation.js +4 -7
- package/lib/emulator/extensionsEmulator.js +6 -9
- package/lib/emulator/functionsEmulator.js +89 -46
- package/lib/emulator/functionsEmulatorRuntime.js +1 -1
- package/lib/emulator/functionsEmulatorShared.js +30 -30
- package/lib/emulator/functionsEmulatorShell.js +4 -6
- package/lib/emulator/functionsEmulatorUtils.js +8 -9
- package/lib/emulator/functionsRuntimeWorker.js +18 -9
- package/lib/emulator/hub.js +41 -34
- package/lib/emulator/hubClient.js +1 -1
- package/lib/emulator/initEmulators.js +2 -3
- package/lib/emulator/loggingEmulator.js +2 -2
- package/lib/emulator/portUtils.js +4 -5
- package/lib/emulator/registry.js +10 -4
- package/lib/emulator/shared/request.js +1 -2
- package/lib/emulator/storage/apis/firebase.js +16 -20
- package/lib/emulator/storage/apis/gcloud.js +6 -9
- package/lib/emulator/storage/apis/shared.js +1 -2
- package/lib/emulator/storage/crc.js +2 -3
- package/lib/emulator/storage/files.js +18 -41
- package/lib/emulator/storage/metadata.js +10 -4
- package/lib/emulator/storage/multipart.js +1 -2
- package/lib/emulator/storage/rfc.js +1 -2
- package/lib/emulator/storage/rules/config.js +1 -2
- package/lib/emulator/storage/rules/manager.js +3 -5
- package/lib/emulator/storage/rules/runtime.js +15 -13
- package/lib/emulator/storage/rules/types.js +2 -2
- package/lib/emulator/storage/rules/utils.js +5 -6
- package/lib/emulator/storage/server.js +1 -2
- package/lib/emulator/storage/upload.js +3 -4
- package/lib/emulator/taskQueue.js +11 -4
- package/lib/emulator/tasksEmulator.js +11 -12
- package/lib/emulator/types.js +6 -6
- package/lib/emulator/ui.js +6 -1
- package/lib/ensureApiEnabled.js +7 -9
- package/lib/env.js +2 -3
- package/lib/error.js +11 -13
- package/lib/errorOut.js +1 -2
- package/lib/experiments.js +15 -18
- package/lib/extensions/askUserForEventsConfig.js +12 -13
- package/lib/extensions/askUserForParam.js +11 -12
- package/lib/extensions/change-log.js +4 -5
- package/lib/extensions/checkProjectBilling.js +1 -2
- package/lib/extensions/diagnose.js +1 -2
- package/lib/extensions/displayExtensionInfo.js +25 -32
- package/lib/extensions/emulator/optionsHelper.js +6 -8
- package/lib/extensions/emulator/specHelper.js +15 -16
- package/lib/extensions/emulator/triggerHelper.js +3 -5
- package/lib/extensions/etags.js +2 -3
- package/lib/extensions/export.js +7 -9
- package/lib/extensions/extensionsApi.js +23 -29
- package/lib/extensions/extensionsHelper.js +52 -80
- package/lib/extensions/listExtensions.js +3 -5
- package/lib/extensions/localHelper.js +5 -5
- package/lib/extensions/manifest.js +15 -16
- package/lib/extensions/metricsUtils.js +3 -4
- package/lib/extensions/paramHelper.js +21 -18
- package/lib/extensions/provisioningHelper.js +17 -21
- package/lib/extensions/publishHelpers.js +1 -2
- package/lib/extensions/publisherApi.js +11 -13
- package/lib/extensions/refs.js +6 -7
- package/lib/extensions/runtimes/common.js +18 -19
- package/lib/extensions/runtimes/node.js +5 -6
- package/lib/extensions/secretsUtils.js +8 -8
- package/lib/extensions/tos.js +7 -8
- package/lib/extensions/types.js +3 -3
- package/lib/extensions/updateHelper.js +6 -7
- package/lib/extensions/utils.js +6 -8
- package/lib/extensions/versionHelper.js +1 -2
- package/lib/extensions/warnings.js +6 -8
- package/lib/fetchMOTD.js +1 -2
- package/lib/fetchWebSetup.js +3 -4
- package/lib/filterTargets.js +1 -2
- package/lib/firebaseConfigValidate.js +2 -3
- package/lib/firestore/api-sort.js +8 -9
- package/lib/firestore/api-types.js +15 -15
- package/lib/firestore/api.js +15 -13
- package/lib/firestore/backupUtils.js +3 -3
- package/lib/firestore/checkDatabaseType.js +1 -2
- package/lib/firestore/delete.js +1 -2
- package/lib/firestore/encodeFirestoreValue.js +1 -2
- package/lib/firestore/fsConfig.js +1 -2
- package/lib/firestore/options.js +1 -1
- package/lib/firestore/util.js +5 -6
- package/lib/firestore/validator.js +4 -5
- package/lib/frameworks/angular/index.js +14 -15
- package/lib/frameworks/angular/utils.js +21 -23
- package/lib/frameworks/astro/index.js +7 -7
- package/lib/frameworks/astro/utils.js +4 -6
- package/lib/frameworks/compose/discover/filesystem.js +3 -3
- package/lib/frameworks/compose/discover/frameworkMatcher.js +4 -5
- package/lib/frameworks/compose/discover/index.js +1 -2
- package/lib/frameworks/compose/discover/runtime/node.js +8 -11
- package/lib/frameworks/compose/driver/docker.js +3 -5
- package/lib/frameworks/compose/driver/hooks.js +2 -2
- package/lib/frameworks/compose/driver/index.js +2 -2
- package/lib/frameworks/compose/driver/local.js +2 -3
- package/lib/frameworks/compose/index.js +5 -7
- package/lib/frameworks/constants.js +3 -3
- package/lib/frameworks/express/index.js +7 -8
- package/lib/frameworks/flutter/index.js +6 -7
- package/lib/frameworks/flutter/utils.js +4 -5
- package/lib/frameworks/index.js +21 -22
- package/lib/frameworks/next/constants.js +5 -2
- package/lib/frameworks/next/index.js +34 -32
- package/lib/frameworks/next/utils.js +40 -39
- package/lib/frameworks/nuxt/index.js +9 -9
- package/lib/frameworks/nuxt/utils.js +4 -6
- package/lib/frameworks/nuxt2/index.js +7 -7
- package/lib/frameworks/sveltekit/index.js +6 -8
- package/lib/frameworks/utils.js +26 -24
- package/lib/frameworks/vite/index.js +8 -9
- package/lib/fsAsync.js +1 -2
- package/lib/fsutils.js +5 -6
- package/lib/functional.js +11 -11
- package/lib/functions/artifacts.js +25 -22
- package/lib/functions/ensureTargeted.js +1 -2
- package/lib/functions/env.js +13 -14
- package/lib/functions/functionslog.js +2 -3
- package/lib/functions/projectConfig.js +29 -33
- package/lib/functions/python.js +10 -4
- package/lib/functions/secrets.js +32 -18
- package/lib/functionsConfig.js +14 -14
- package/lib/functionsConfigClone.js +1 -2
- package/lib/functionsShellCommandAction.js +2 -3
- package/lib/gcp/apphosting.js +43 -28
- package/lib/gcp/apptesting.js +2 -2
- package/lib/gcp/artifactregistry.js +5 -5
- package/lib/gcp/auth.js +11 -13
- package/lib/gcp/cloudbilling.js +4 -5
- package/lib/gcp/cloudbuild.js +10 -11
- package/lib/gcp/cloudfunctions.js +61 -45
- package/lib/gcp/cloudfunctionsv2.js +81 -43
- package/lib/gcp/cloudlogging.js +2 -4
- package/lib/gcp/cloudmonitoring.js +7 -7
- package/lib/gcp/cloudscheduler.js +12 -14
- package/lib/gcp/cloudsql/cloudsqladmin.js +18 -20
- package/lib/gcp/cloudsql/connect.js +14 -9
- package/lib/gcp/cloudsql/fbToolsAuthClient.js +5 -3
- package/lib/gcp/cloudsql/interactive.js +2 -3
- package/lib/gcp/cloudsql/permissions.js +8 -8
- package/lib/gcp/cloudsql/permissionsSetup.js +9 -9
- package/lib/gcp/cloudtasks.js +19 -18
- package/lib/gcp/computeEngine.js +1 -2
- package/lib/gcp/devConnect.js +32 -29
- package/lib/gcp/docker.js +2 -4
- package/lib/gcp/eventarc.js +5 -5
- package/lib/gcp/firedata.js +4 -4
- package/lib/gcp/firestore.js +16 -16
- package/lib/gcp/iam.js +11 -12
- package/lib/gcp/identityPlatform.js +4 -5
- package/lib/gcp/k8s.js +1 -2
- package/lib/gcp/location.js +2 -2
- package/lib/gcp/proto.js +10 -11
- package/lib/gcp/pubsub.js +4 -5
- package/lib/gcp/resourceManager.js +5 -5
- package/lib/gcp/rules.js +13 -14
- package/lib/gcp/run.js +24 -31
- package/lib/gcp/runv2.js +39 -27
- package/lib/gcp/secretManager.js +60 -39
- package/lib/gcp/serviceusage.js +8 -4
- package/lib/gcp/storage.js +22 -20
- package/lib/gemini/fdcExperience.js +5 -5
- package/lib/getDefaultDatabaseInstance.js +2 -4
- package/lib/getDefaultHostingSite.js +3 -4
- package/lib/getProjectNumber.js +1 -2
- package/lib/hosting/api.js +32 -36
- package/lib/hosting/cloudRunProxy.js +2 -3
- package/lib/hosting/config.js +17 -17
- package/lib/hosting/expireUtils.js +3 -3
- package/lib/hosting/functionsProxy.js +1 -2
- package/lib/hosting/implicitInit.js +1 -2
- package/lib/hosting/initMiddleware.js +1 -2
- package/lib/hosting/interactive.js +1 -2
- package/lib/hosting/proxy.js +3 -5
- package/lib/hosting/runTags.js +8 -11
- package/lib/init/features/account.js +1 -2
- package/lib/init/features/ailogic/index.js +3 -5
- package/lib/init/features/ailogic/utils.js +6 -8
- package/lib/init/features/aitools/claude.js +1 -2
- package/lib/init/features/aitools/cursor.js +1 -2
- package/lib/init/features/aitools/gemini.js +1 -1
- package/lib/init/features/aitools/promptUpdater.js +10 -12
- package/lib/init/features/aitools.js +1 -2
- package/lib/init/features/apphosting.js +3 -4
- package/lib/init/features/apptesting/index.js +9 -9
- package/lib/init/features/database.js +4 -5
- package/lib/init/features/dataconnect/create_app.js +3 -4
- package/lib/init/features/dataconnect/index.js +25 -22
- package/lib/init/features/dataconnect/resolver.js +6 -10
- package/lib/init/features/dataconnect/sdk.js +31 -24
- package/lib/init/features/emulators.js +7 -6
- package/lib/init/features/extensions/index.js +3 -5
- package/lib/init/features/firestore/index.js +7 -9
- package/lib/init/features/firestore/indexes.js +2 -2
- package/lib/init/features/firestore/rules.js +3 -3
- package/lib/init/features/functions/index.js +3 -5
- package/lib/init/features/functions/javascript.js +1 -2
- package/lib/init/features/functions/npm-dependencies.js +1 -2
- package/lib/init/features/functions/python.js +1 -2
- package/lib/init/features/functions/typescript.js +1 -2
- package/lib/init/features/genkit/index.js +44 -18
- package/lib/init/features/hosting/github.js +6 -8
- package/lib/init/features/hosting/index.js +10 -13
- package/lib/init/features/project.js +4 -7
- package/lib/init/features/remoteconfig.js +1 -2
- package/lib/init/features/storage.js +3 -5
- package/lib/init/index.js +4 -7
- package/lib/init/spawn.js +7 -9
- package/lib/listFiles.js +1 -2
- package/lib/loadCJSON.js +1 -2
- package/lib/localFunction.js +14 -15
- package/lib/logError.js +1 -2
- package/lib/logger.js +7 -7
- package/lib/management/apps.js +22 -22
- package/lib/management/database.js +11 -12
- package/lib/management/projects.js +57 -56
- package/lib/management/provisioning/errorHandler.js +3 -5
- package/lib/management/provisioning/provision.js +15 -9
- package/lib/management/studio.js +2 -3
- package/lib/mcp/errors.js +4 -4
- package/lib/mcp/index.js +16 -23
- package/lib/mcp/prompt.js +1 -2
- package/lib/mcp/prompts/core/consult.js +2 -3
- package/lib/mcp/prompts/crashlytics/connect.js +15 -122
- package/lib/mcp/prompts/dataconnect/schema.js +3 -3
- package/lib/mcp/prompts/index.js +8 -10
- package/lib/mcp/resource.js +3 -15
- package/lib/mcp/resources/guides/app_id.js +39 -0
- package/lib/mcp/resources/guides/crashlytics_connect.js +51 -0
- package/lib/mcp/resources/guides/crashlytics_investigations.js +51 -0
- package/lib/mcp/resources/guides/crashlytics_issues.js +42 -0
- package/lib/mcp/resources/guides/crashlytics_reports.js +112 -0
- package/lib/mcp/resources/index.js +11 -3
- package/lib/mcp/tool.js +3 -15
- package/lib/mcp/tools/apphosting/fetch_logs.js +3 -4
- package/lib/mcp/tools/apphosting/list_backends.js +1 -1
- package/lib/mcp/tools/auth/get_users.js +5 -16
- package/lib/mcp/tools/core/create_android_sha.js +4 -1
- package/lib/mcp/tools/core/get_environment.js +3 -3
- package/lib/mcp/tools/core/get_sdk_config.js +4 -5
- package/lib/mcp/tools/core/get_security_rules.js +1 -2
- package/lib/mcp/tools/core/init.js +2 -2
- package/lib/mcp/tools/core/logout.js +1 -1
- package/lib/mcp/tools/core/read_resources.js +2 -2
- package/lib/mcp/tools/core/validate_security_rules.js +1 -2
- package/lib/mcp/tools/crashlytics/events.js +43 -19
- package/lib/mcp/tools/crashlytics/index.js +1 -6
- package/lib/mcp/tools/crashlytics/issues.js +33 -12
- package/lib/mcp/tools/crashlytics/reports.js +66 -117
- package/lib/mcp/tools/dataconnect/list_services.js +2 -3
- package/lib/mcp/tools/firestore/converter.js +3 -5
- package/lib/mcp/tools/firestore/delete_document.js +1 -1
- package/lib/mcp/tools/functions/get_logs.js +14 -12
- package/lib/mcp/tools/functions/list_functions.js +1 -1
- package/lib/mcp/tools/index.js +17 -9
- package/lib/mcp/util/apptesting/availability.js +1 -2
- package/lib/mcp/util/availability.js +1 -2
- package/lib/mcp/util/crashlytics/availability.js +1 -2
- package/lib/mcp/util/dataconnect/compile.js +7 -6
- package/lib/mcp/util/dataconnect/converter.js +7 -10
- package/lib/mcp/util/dataconnect/emulator.js +1 -2
- package/lib/mcp/util.js +9 -11
- package/lib/messaging/sendMessage.js +1 -2
- package/lib/metaprogramming.js +1 -2
- package/lib/operation-poller.js +2 -2
- package/lib/profileReport.js +6 -6
- package/lib/profiler.js +1 -2
- package/lib/projectPath.js +1 -2
- package/lib/projectUtils.js +5 -6
- package/lib/prompt.js +22 -13
- package/lib/rc.js +5 -7
- package/lib/remoteconfig/deleteExperiment.js +1 -2
- package/lib/remoteconfig/deleteRollout.js +1 -2
- package/lib/remoteconfig/get.js +2 -3
- package/lib/remoteconfig/getExperiment.js +2 -2
- package/lib/remoteconfig/getRollout.js +2 -2
- package/lib/remoteconfig/interfaces.js +1 -1
- package/lib/remoteconfig/listExperiments.js +2 -2
- package/lib/remoteconfig/listRollouts.js +2 -2
- package/lib/remoteconfig/publish.js +1 -2
- package/lib/remoteconfig/rollback.js +1 -2
- package/lib/remoteconfig/versionslist.js +1 -2
- package/lib/requireAuth.js +4 -6
- package/lib/requireConfig.js +5 -8
- package/lib/requireDatabaseInstance.js +2 -2
- package/lib/requireHostingSite.js +1 -2
- package/lib/requireInteractive.js +1 -1
- package/lib/requirePermissions.js +1 -2
- package/lib/requireTosAcceptance.js +1 -2
- package/lib/responseToError.js +1 -2
- package/lib/rtdb.js +2 -3
- package/lib/rulesDeploy.js +3 -4
- package/lib/serve/functions.js +9 -1
- package/lib/serve/hosting.js +4 -5
- package/lib/serve/index.js +1 -2
- package/lib/shortenUrl.js +1 -2
- package/lib/templates.js +3 -4
- package/lib/throttler/throttler.js +3 -3
- package/lib/timeout.js +2 -3
- package/lib/track.js +23 -14
- package/lib/tsconfig.publish.tsbuildinfo +1 -0
- package/lib/unzip.js +2 -3
- package/lib/utils.js +62 -63
- package/lib/vsCodeUtils.js +2 -3
- package/package.json +6 -6
- package/templates/extensions/typescript/index.ts +1 -1
- package/templates/extensions/typescript/package.lint.json +1 -1
- package/templates/extensions/typescript/package.nolint.json +1 -1
- package/templates/extensions/typescript/tsconfig.json +2 -1
package/lib/gcp/cloudbilling.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.isBillingEnabled = isBillingEnabled;
|
|
4
|
+
exports.checkBillingEnabled = checkBillingEnabled;
|
|
5
|
+
exports.setBillingAccount = setBillingAccount;
|
|
6
|
+
exports.listBillingAccounts = listBillingAccounts;
|
|
4
7
|
const api_1 = require("../api");
|
|
5
8
|
const apiv2_1 = require("../apiv2");
|
|
6
9
|
const utils = require("../utils");
|
|
@@ -16,21 +19,17 @@ async function isBillingEnabled(setup) {
|
|
|
16
19
|
setup.isBillingEnabled = await checkBillingEnabled(setup.projectId);
|
|
17
20
|
return setup.isBillingEnabled;
|
|
18
21
|
}
|
|
19
|
-
exports.isBillingEnabled = isBillingEnabled;
|
|
20
22
|
async function checkBillingEnabled(projectId) {
|
|
21
23
|
const res = await client.get(utils.endpoint(["projects", projectId, "billingInfo"]), { retryCodes: [500, 503] });
|
|
22
24
|
return res.body.billingEnabled;
|
|
23
25
|
}
|
|
24
|
-
exports.checkBillingEnabled = checkBillingEnabled;
|
|
25
26
|
async function setBillingAccount(projectId, billingAccountName) {
|
|
26
27
|
const res = await client.put(utils.endpoint(["projects", projectId, "billingInfo"]), {
|
|
27
28
|
billingAccountName: billingAccountName,
|
|
28
29
|
}, { retryCodes: [500, 503] });
|
|
29
30
|
return res.body.billingEnabled;
|
|
30
31
|
}
|
|
31
|
-
exports.setBillingAccount = setBillingAccount;
|
|
32
32
|
async function listBillingAccounts() {
|
|
33
33
|
const res = await client.get(utils.endpoint(["billingAccounts"]), { retryCodes: [500, 503] });
|
|
34
34
|
return res.body.billingAccounts || [];
|
|
35
35
|
}
|
|
36
|
-
exports.listBillingAccounts = listBillingAccounts;
|
package/lib/gcp/cloudbuild.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createConnection = createConnection;
|
|
4
|
+
exports.getConnection = getConnection;
|
|
5
|
+
exports.listConnections = listConnections;
|
|
6
|
+
exports.deleteConnection = deleteConnection;
|
|
7
|
+
exports.fetchLinkableRepositories = fetchLinkableRepositories;
|
|
8
|
+
exports.createRepository = createRepository;
|
|
9
|
+
exports.getRepository = getRepository;
|
|
10
|
+
exports.deleteRepository = deleteRepository;
|
|
11
|
+
exports.getDefaultServiceAccount = getDefaultServiceAccount;
|
|
12
|
+
exports.getDefaultServiceAgent = getDefaultServiceAgent;
|
|
4
13
|
const apiv2_1 = require("../apiv2");
|
|
5
14
|
const api_1 = require("../api");
|
|
6
15
|
const PAGE_SIZE_MAX = 100;
|
|
@@ -13,13 +22,11 @@ async function createConnection(projectId, location, connectionId, githubConfig
|
|
|
13
22
|
const res = await client.post(`projects/${projectId}/locations/${location}/connections`, { githubConfig }, { queryParams: { connectionId } });
|
|
14
23
|
return res.body;
|
|
15
24
|
}
|
|
16
|
-
exports.createConnection = createConnection;
|
|
17
25
|
async function getConnection(projectId, location, connectionId) {
|
|
18
26
|
const name = `projects/${projectId}/locations/${location}/connections/${connectionId}`;
|
|
19
27
|
const res = await client.get(name);
|
|
20
28
|
return res.body;
|
|
21
29
|
}
|
|
22
|
-
exports.getConnection = getConnection;
|
|
23
30
|
async function listConnections(projectId, location) {
|
|
24
31
|
const conns = [];
|
|
25
32
|
const getNextPage = async (pageToken = "") => {
|
|
@@ -39,13 +46,11 @@ async function listConnections(projectId, location) {
|
|
|
39
46
|
await getNextPage();
|
|
40
47
|
return conns;
|
|
41
48
|
}
|
|
42
|
-
exports.listConnections = listConnections;
|
|
43
49
|
async function deleteConnection(projectId, location, connectionId) {
|
|
44
50
|
const name = `projects/${projectId}/locations/${location}/connections/${connectionId}`;
|
|
45
51
|
const res = await client.delete(name);
|
|
46
52
|
return res.body;
|
|
47
53
|
}
|
|
48
|
-
exports.deleteConnection = deleteConnection;
|
|
49
54
|
async function fetchLinkableRepositories(projectId, location, connectionId, pageToken = "", pageSize = 1000) {
|
|
50
55
|
const name = `projects/${projectId}/locations/${location}/connections/${connectionId}:fetchLinkableRepositories`;
|
|
51
56
|
const res = await client.get(name, {
|
|
@@ -56,29 +61,23 @@ async function fetchLinkableRepositories(projectId, location, connectionId, page
|
|
|
56
61
|
});
|
|
57
62
|
return res.body;
|
|
58
63
|
}
|
|
59
|
-
exports.fetchLinkableRepositories = fetchLinkableRepositories;
|
|
60
64
|
async function createRepository(projectId, location, connectionId, repositoryId, remoteUri) {
|
|
61
65
|
const res = await client.post(`projects/${projectId}/locations/${location}/connections/${connectionId}/repositories`, { remoteUri }, { queryParams: { repositoryId } });
|
|
62
66
|
return res.body;
|
|
63
67
|
}
|
|
64
|
-
exports.createRepository = createRepository;
|
|
65
68
|
async function getRepository(projectId, location, connectionId, repositoryId) {
|
|
66
69
|
const name = `projects/${projectId}/locations/${location}/connections/${connectionId}/repositories/${repositoryId}`;
|
|
67
70
|
const res = await client.get(name);
|
|
68
71
|
return res.body;
|
|
69
72
|
}
|
|
70
|
-
exports.getRepository = getRepository;
|
|
71
73
|
async function deleteRepository(projectId, location, connectionId, repositoryId) {
|
|
72
74
|
const name = `projects/${projectId}/locations/${location}/connections/${connectionId}/repositories/${repositoryId}`;
|
|
73
75
|
const res = await client.delete(name);
|
|
74
76
|
return res.body;
|
|
75
77
|
}
|
|
76
|
-
exports.deleteRepository = deleteRepository;
|
|
77
78
|
function getDefaultServiceAccount(projectNumber) {
|
|
78
79
|
return `${projectNumber}@cloudbuild.gserviceaccount.com`;
|
|
79
80
|
}
|
|
80
|
-
exports.getDefaultServiceAccount = getDefaultServiceAccount;
|
|
81
81
|
function getDefaultServiceAgent(projectNumber) {
|
|
82
82
|
return `service-${projectNumber}@gcp-sa-cloudbuild.iam.gserviceaccount.com`;
|
|
83
83
|
}
|
|
84
|
-
exports.getDefaultServiceAgent = getDefaultServiceAgent;
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.API_VERSION = void 0;
|
|
4
|
+
exports.captureRuntimeValidationError = captureRuntimeValidationError;
|
|
5
|
+
exports.generateUploadUrl = generateUploadUrl;
|
|
6
|
+
exports.createFunction = createFunction;
|
|
7
|
+
exports.setIamPolicy = setIamPolicy;
|
|
8
|
+
exports.getIamPolicy = getIamPolicy;
|
|
9
|
+
exports.setInvokerCreate = setInvokerCreate;
|
|
10
|
+
exports.setInvokerUpdate = setInvokerUpdate;
|
|
11
|
+
exports.updateFunction = updateFunction;
|
|
12
|
+
exports.deleteFunction = deleteFunction;
|
|
13
|
+
exports.listAllFunctions = listAllFunctions;
|
|
14
|
+
exports.endpointFromFunction = endpointFromFunction;
|
|
15
|
+
exports.functionFromEndpoint = functionFromEndpoint;
|
|
4
16
|
const clc = require("colorette");
|
|
5
17
|
const error_1 = require("../error");
|
|
6
18
|
const logger_1 = require("../logger");
|
|
@@ -23,14 +35,12 @@ function captureRuntimeValidationError(errMessage) {
|
|
|
23
35
|
}
|
|
24
36
|
return "invalid runtime detected, please see https://cloud.google.com/functions/docs/runtime-support for the latest supported runtimes";
|
|
25
37
|
}
|
|
26
|
-
exports.captureRuntimeValidationError = captureRuntimeValidationError;
|
|
27
38
|
function functionsOpLogReject(funcName, type, err) {
|
|
28
|
-
|
|
29
|
-
if ((err === null || err === void 0 ? void 0 : err.message).includes("Runtime validation errors")) {
|
|
39
|
+
if ((err?.message).includes("Runtime validation errors")) {
|
|
30
40
|
const capturedMessage = captureRuntimeValidationError(err.message);
|
|
31
41
|
utils.logWarning(clc.bold(clc.yellow("functions:")) + " " + capturedMessage + " for function " + funcName);
|
|
32
42
|
}
|
|
33
|
-
if (
|
|
43
|
+
if (err?.context?.response?.statusCode === 429) {
|
|
34
44
|
utils.logWarning(`${clc.bold(clc.yellow("functions:"))} got "Quota Exceeded" error while trying to ${type} ${funcName}. Waiting to retry...`);
|
|
35
45
|
}
|
|
36
46
|
else {
|
|
@@ -38,7 +48,7 @@ function functionsOpLogReject(funcName, type, err) {
|
|
|
38
48
|
}
|
|
39
49
|
throw new error_1.FirebaseError(`Failed to ${type} function ${funcName}`, {
|
|
40
50
|
original: err,
|
|
41
|
-
status:
|
|
51
|
+
status: err?.context?.response?.statusCode,
|
|
42
52
|
context: { function: funcName },
|
|
43
53
|
});
|
|
44
54
|
}
|
|
@@ -54,11 +64,13 @@ async function generateUploadUrl(projectId, location) {
|
|
|
54
64
|
throw err;
|
|
55
65
|
}
|
|
56
66
|
}
|
|
57
|
-
exports.generateUploadUrl = generateUploadUrl;
|
|
58
67
|
async function createFunction(cloudFunction) {
|
|
59
68
|
const apiPath = cloudFunction.name.substring(0, cloudFunction.name.lastIndexOf("/"));
|
|
60
69
|
const endpoint = `/${apiPath}`;
|
|
61
|
-
cloudFunction.buildEnvironmentVariables =
|
|
70
|
+
cloudFunction.buildEnvironmentVariables = {
|
|
71
|
+
...cloudFunction.buildEnvironmentVariables,
|
|
72
|
+
GOOGLE_NODE_RUN_SCRIPTS: "",
|
|
73
|
+
};
|
|
62
74
|
try {
|
|
63
75
|
const res = await client.post(endpoint, cloudFunction);
|
|
64
76
|
return {
|
|
@@ -71,9 +83,7 @@ async function createFunction(cloudFunction) {
|
|
|
71
83
|
throw functionsOpLogReject(cloudFunction.name, "create", err);
|
|
72
84
|
}
|
|
73
85
|
}
|
|
74
|
-
exports.createFunction = createFunction;
|
|
75
86
|
async function setIamPolicy(options) {
|
|
76
|
-
var _a, _b;
|
|
77
87
|
const endpoint = `/${options.name}:setIamPolicy`;
|
|
78
88
|
try {
|
|
79
89
|
await client.post(endpoint, {
|
|
@@ -84,11 +94,10 @@ async function setIamPolicy(options) {
|
|
|
84
94
|
catch (err) {
|
|
85
95
|
throw new error_1.FirebaseError(`Failed to set the IAM Policy on the function ${options.name}`, {
|
|
86
96
|
original: err,
|
|
87
|
-
status:
|
|
97
|
+
status: err?.context?.response?.statusCode,
|
|
88
98
|
});
|
|
89
99
|
}
|
|
90
100
|
}
|
|
91
|
-
exports.setIamPolicy = setIamPolicy;
|
|
92
101
|
async function getIamPolicy(fnName) {
|
|
93
102
|
const endpoint = `/${fnName}:getIamPolicy`;
|
|
94
103
|
try {
|
|
@@ -101,7 +110,6 @@ async function getIamPolicy(fnName) {
|
|
|
101
110
|
});
|
|
102
111
|
}
|
|
103
112
|
}
|
|
104
|
-
exports.getIamPolicy = getIamPolicy;
|
|
105
113
|
async function setInvokerCreate(projectId, fnName, invoker) {
|
|
106
114
|
if (invoker.length === 0) {
|
|
107
115
|
throw new error_1.FirebaseError("Invoker cannot be an empty array");
|
|
@@ -116,16 +124,14 @@ async function setInvokerCreate(projectId, fnName, invoker) {
|
|
|
116
124
|
};
|
|
117
125
|
await setIamPolicy({ name: fnName, policy: policy });
|
|
118
126
|
}
|
|
119
|
-
exports.setInvokerCreate = setInvokerCreate;
|
|
120
127
|
async function setInvokerUpdate(projectId, fnName, invoker) {
|
|
121
|
-
var _a;
|
|
122
128
|
if (invoker.length === 0) {
|
|
123
129
|
throw new error_1.FirebaseError("Invoker cannot be an empty array");
|
|
124
130
|
}
|
|
125
131
|
const invokerMembers = proto.getInvokerMembers(invoker, projectId);
|
|
126
132
|
const invokerRole = "roles/cloudfunctions.invoker";
|
|
127
133
|
const currentPolicy = await getIamPolicy(fnName);
|
|
128
|
-
const currentInvokerBinding =
|
|
134
|
+
const currentInvokerBinding = currentPolicy.bindings?.find((binding) => binding.role === invokerRole);
|
|
129
135
|
if (currentInvokerBinding &&
|
|
130
136
|
JSON.stringify(currentInvokerBinding.members.sort()) === JSON.stringify(invokerMembers.sort())) {
|
|
131
137
|
return;
|
|
@@ -142,10 +148,12 @@ async function setInvokerUpdate(projectId, fnName, invoker) {
|
|
|
142
148
|
};
|
|
143
149
|
await setIamPolicy({ name: fnName, policy: policy });
|
|
144
150
|
}
|
|
145
|
-
exports.setInvokerUpdate = setInvokerUpdate;
|
|
146
151
|
async function updateFunction(cloudFunction) {
|
|
147
152
|
const endpoint = `/${cloudFunction.name}`;
|
|
148
|
-
cloudFunction.buildEnvironmentVariables =
|
|
153
|
+
cloudFunction.buildEnvironmentVariables = {
|
|
154
|
+
...cloudFunction.buildEnvironmentVariables,
|
|
155
|
+
GOOGLE_NODE_RUN_SCRIPTS: "",
|
|
156
|
+
};
|
|
149
157
|
const fieldMasks = proto.fieldMasks(cloudFunction, "labels", "environmentVariables", "secretEnvironmentVariables", "buildEnvironmentVariables");
|
|
150
158
|
try {
|
|
151
159
|
const res = await client.patch(endpoint, cloudFunction, {
|
|
@@ -163,7 +171,6 @@ async function updateFunction(cloudFunction) {
|
|
|
163
171
|
throw functionsOpLogReject(cloudFunction.name, "update", err);
|
|
164
172
|
}
|
|
165
173
|
}
|
|
166
|
-
exports.updateFunction = updateFunction;
|
|
167
174
|
async function deleteFunction(name) {
|
|
168
175
|
const endpoint = `/${name}`;
|
|
169
176
|
try {
|
|
@@ -178,7 +185,6 @@ async function deleteFunction(name) {
|
|
|
178
185
|
throw functionsOpLogReject(name, "delete", err);
|
|
179
186
|
}
|
|
180
187
|
}
|
|
181
|
-
exports.deleteFunction = deleteFunction;
|
|
182
188
|
async function list(projectId, region) {
|
|
183
189
|
const endpoint = "/projects/" + projectId + "/locations/" + region + "/functions";
|
|
184
190
|
try {
|
|
@@ -193,7 +199,7 @@ async function list(projectId, region) {
|
|
|
193
199
|
}
|
|
194
200
|
catch (err) {
|
|
195
201
|
logger_1.logger.debug(`[functions] failed to list functions for ${projectId}`);
|
|
196
|
-
logger_1.logger.debug(`[functions] ${err
|
|
202
|
+
logger_1.logger.debug(`[functions] ${err?.message}`);
|
|
197
203
|
throw new error_1.FirebaseError(`Failed to list functions for ${projectId}`, {
|
|
198
204
|
original: err,
|
|
199
205
|
status: err instanceof error_1.FirebaseError ? err.status : undefined,
|
|
@@ -203,30 +209,28 @@ async function list(projectId, region) {
|
|
|
203
209
|
async function listAllFunctions(projectId) {
|
|
204
210
|
return list(projectId, "-");
|
|
205
211
|
}
|
|
206
|
-
exports.listAllFunctions = listAllFunctions;
|
|
207
212
|
function endpointFromFunction(gcfFunction) {
|
|
208
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
209
213
|
const [, project, , region, , id] = gcfFunction.name.split("/");
|
|
210
214
|
let trigger;
|
|
211
215
|
let uri;
|
|
212
216
|
let securityLevel;
|
|
213
|
-
if (
|
|
217
|
+
if (gcfFunction.labels?.["deployment-scheduled"]) {
|
|
214
218
|
trigger = {
|
|
215
219
|
scheduleTrigger: {},
|
|
216
220
|
};
|
|
217
221
|
}
|
|
218
|
-
else if (
|
|
222
|
+
else if (gcfFunction.labels?.["deployment-taskqueue"]) {
|
|
219
223
|
trigger = {
|
|
220
224
|
taskQueueTrigger: {},
|
|
221
225
|
};
|
|
222
226
|
}
|
|
223
|
-
else if (
|
|
224
|
-
|
|
227
|
+
else if (gcfFunction.labels?.["deployment-callable"] ||
|
|
228
|
+
gcfFunction.labels?.["deployment-callabled"]) {
|
|
225
229
|
trigger = {
|
|
226
230
|
callableTrigger: {},
|
|
227
231
|
};
|
|
228
232
|
}
|
|
229
|
-
else if (
|
|
233
|
+
else if (gcfFunction.labels?.[constants_1.BLOCKING_LABEL]) {
|
|
230
234
|
trigger = {
|
|
231
235
|
blockingTrigger: {
|
|
232
236
|
eventType: constants_1.BLOCKING_LABEL_KEY_TO_EVENT[gcfFunction.labels[constants_1.BLOCKING_LABEL]],
|
|
@@ -241,7 +245,7 @@ function endpointFromFunction(gcfFunction) {
|
|
|
241
245
|
eventTrigger: {
|
|
242
246
|
eventType: gcfFunction.eventTrigger.eventType,
|
|
243
247
|
eventFilters: { resource: gcfFunction.eventTrigger.resource },
|
|
244
|
-
retry: !!
|
|
248
|
+
retry: !!gcfFunction.eventTrigger.failurePolicy?.retry,
|
|
245
249
|
},
|
|
246
250
|
};
|
|
247
251
|
}
|
|
@@ -252,9 +256,15 @@ function endpointFromFunction(gcfFunction) {
|
|
|
252
256
|
if (!supported.isRuntime(gcfFunction.runtime)) {
|
|
253
257
|
logger_1.logger.debug("GCF 1st gen function has unsupported runtime:", JSON.stringify(gcfFunction, null, 2));
|
|
254
258
|
}
|
|
255
|
-
const endpoint =
|
|
259
|
+
const endpoint = {
|
|
260
|
+
platform: "gcfv1",
|
|
261
|
+
id,
|
|
256
262
|
project,
|
|
257
|
-
region
|
|
263
|
+
region,
|
|
264
|
+
...trigger,
|
|
265
|
+
entryPoint: gcfFunction.entryPoint,
|
|
266
|
+
runtime: gcfFunction.runtime,
|
|
267
|
+
};
|
|
258
268
|
if (uri) {
|
|
259
269
|
endpoint.uri = uri;
|
|
260
270
|
}
|
|
@@ -269,8 +279,8 @@ function endpointFromFunction(gcfFunction) {
|
|
|
269
279
|
endpoint.vpc = { connector: gcfFunction.vpcConnector };
|
|
270
280
|
proto.convertIfPresent(endpoint.vpc, gcfFunction, "egressSettings", "vpcConnectorEgressSettings", (raw) => raw);
|
|
271
281
|
}
|
|
272
|
-
endpoint.codebase =
|
|
273
|
-
if (
|
|
282
|
+
endpoint.codebase = gcfFunction.labels?.[constants_1.CODEBASE_LABEL] || projectConfig.DEFAULT_CODEBASE;
|
|
283
|
+
if (gcfFunction.labels?.[constants_1.HASH_LABEL]) {
|
|
274
284
|
endpoint.hash = gcfFunction.labels[constants_1.HASH_LABEL];
|
|
275
285
|
}
|
|
276
286
|
proto.convertIfPresent(endpoint, gcfFunction, "state", "status", (status) => {
|
|
@@ -290,9 +300,7 @@ function endpointFromFunction(gcfFunction) {
|
|
|
290
300
|
});
|
|
291
301
|
return endpoint;
|
|
292
302
|
}
|
|
293
|
-
exports.endpointFromFunction = endpointFromFunction;
|
|
294
303
|
function functionFromEndpoint(endpoint, sourceUploadUrl) {
|
|
295
|
-
var _a, _b;
|
|
296
304
|
if (endpoint.platform !== "gcfv1") {
|
|
297
305
|
throw new error_1.FirebaseError("Trying to create a v1 CloudFunction with v2 API. This should never happen");
|
|
298
306
|
}
|
|
@@ -308,10 +316,10 @@ function functionFromEndpoint(endpoint, sourceUploadUrl) {
|
|
|
308
316
|
dockerRegistry: "ARTIFACT_REGISTRY",
|
|
309
317
|
};
|
|
310
318
|
if (typeof endpoint.labels !== "undefined") {
|
|
311
|
-
gcfFunction.labels =
|
|
319
|
+
gcfFunction.labels = { ...endpoint.labels };
|
|
312
320
|
}
|
|
313
321
|
if (backend.isEventTriggered(endpoint)) {
|
|
314
|
-
if (!
|
|
322
|
+
if (!endpoint.eventTrigger.eventFilters?.resource) {
|
|
315
323
|
throw new error_1.FirebaseError("Cannot create v1 function from an eventTrigger without a resource");
|
|
316
324
|
}
|
|
317
325
|
gcfFunction.eventTrigger = {
|
|
@@ -328,20 +336,23 @@ function functionFromEndpoint(endpoint, sourceUploadUrl) {
|
|
|
328
336
|
eventType: "google.pubsub.topic.publish",
|
|
329
337
|
resource: `projects/${endpoint.project}/topics/${id}`,
|
|
330
338
|
};
|
|
331
|
-
gcfFunction.labels =
|
|
339
|
+
gcfFunction.labels = { ...gcfFunction.labels, "deployment-scheduled": "true" };
|
|
332
340
|
}
|
|
333
341
|
else if (backend.isTaskQueueTriggered(endpoint)) {
|
|
334
342
|
gcfFunction.httpsTrigger = {};
|
|
335
|
-
gcfFunction.labels =
|
|
343
|
+
gcfFunction.labels = { ...gcfFunction.labels, "deployment-taskqueue": "true" };
|
|
336
344
|
}
|
|
337
345
|
else if (backend.isBlockingTriggered(endpoint)) {
|
|
338
346
|
gcfFunction.httpsTrigger = {};
|
|
339
|
-
gcfFunction.labels =
|
|
347
|
+
gcfFunction.labels = {
|
|
348
|
+
...gcfFunction.labels,
|
|
349
|
+
[constants_1.BLOCKING_LABEL]: constants_1.BLOCKING_EVENT_TO_LABEL_KEY[endpoint.blockingTrigger.eventType],
|
|
350
|
+
};
|
|
340
351
|
}
|
|
341
352
|
else {
|
|
342
353
|
gcfFunction.httpsTrigger = {};
|
|
343
354
|
if (backend.isCallableTriggered(endpoint)) {
|
|
344
|
-
gcfFunction.labels =
|
|
355
|
+
gcfFunction.labels = { ...gcfFunction.labels, "deployment-callable": "true" };
|
|
345
356
|
}
|
|
346
357
|
if (endpoint.securityLevel) {
|
|
347
358
|
gcfFunction.httpsTrigger.securityLevel = endpoint.securityLevel;
|
|
@@ -361,14 +372,19 @@ function functionFromEndpoint(endpoint, sourceUploadUrl) {
|
|
|
361
372
|
}
|
|
362
373
|
const codebase = endpoint.codebase || projectConfig.DEFAULT_CODEBASE;
|
|
363
374
|
if (codebase !== projectConfig.DEFAULT_CODEBASE) {
|
|
364
|
-
gcfFunction.labels =
|
|
375
|
+
gcfFunction.labels = {
|
|
376
|
+
...gcfFunction.labels,
|
|
377
|
+
[constants_1.CODEBASE_LABEL]: codebase,
|
|
378
|
+
};
|
|
365
379
|
}
|
|
366
380
|
else {
|
|
367
|
-
|
|
381
|
+
delete gcfFunction.labels?.[constants_1.CODEBASE_LABEL];
|
|
368
382
|
}
|
|
369
383
|
if (endpoint.hash) {
|
|
370
|
-
gcfFunction.labels =
|
|
384
|
+
gcfFunction.labels = {
|
|
385
|
+
...gcfFunction.labels,
|
|
386
|
+
[constants_1.HASH_LABEL]: endpoint.hash,
|
|
387
|
+
};
|
|
371
388
|
}
|
|
372
389
|
return gcfFunction;
|
|
373
390
|
}
|
|
374
|
-
exports.functionFromEndpoint = functionFromEndpoint;
|