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
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getBaseParamBindings = getBaseParamBindings;
|
|
4
|
+
exports.buildBindingOptionsWithBaseValue = buildBindingOptionsWithBaseValue;
|
|
5
|
+
exports.setNewDefaults = setNewDefaults;
|
|
6
|
+
exports.getParams = getParams;
|
|
7
|
+
exports.getParamsForUpdate = getParamsForUpdate;
|
|
8
|
+
exports.promptForNewParams = promptForNewParams;
|
|
9
|
+
exports.readEnvFile = readEnvFile;
|
|
10
|
+
exports.isSystemParam = isSystemParam;
|
|
11
|
+
exports.populateDefaultParams = populateDefaultParams;
|
|
4
12
|
const path = require("path");
|
|
5
13
|
const clc = require("colorette");
|
|
6
14
|
const fs = require("fs-extra");
|
|
@@ -15,19 +23,23 @@ const NONINTERACTIVE_ERROR_MESSAGE = "As of firebase-tools@11, `ext:install`, `e
|
|
|
15
23
|
function getBaseParamBindings(params) {
|
|
16
24
|
let ret = {};
|
|
17
25
|
for (const [k, v] of Object.entries(params)) {
|
|
18
|
-
ret =
|
|
26
|
+
ret = {
|
|
27
|
+
...ret,
|
|
28
|
+
...{ [k]: v.baseValue },
|
|
29
|
+
};
|
|
19
30
|
}
|
|
20
31
|
return ret;
|
|
21
32
|
}
|
|
22
|
-
exports.getBaseParamBindings = getBaseParamBindings;
|
|
23
33
|
function buildBindingOptionsWithBaseValue(baseParams) {
|
|
24
34
|
let paramOptions = {};
|
|
25
35
|
for (const [k, v] of Object.entries(baseParams)) {
|
|
26
|
-
paramOptions =
|
|
36
|
+
paramOptions = {
|
|
37
|
+
...paramOptions,
|
|
38
|
+
...{ [k]: { baseValue: v } },
|
|
39
|
+
};
|
|
27
40
|
}
|
|
28
41
|
return paramOptions;
|
|
29
42
|
}
|
|
30
|
-
exports.buildBindingOptionsWithBaseValue = buildBindingOptionsWithBaseValue;
|
|
31
43
|
function setNewDefaults(params, newDefaults) {
|
|
32
44
|
for (const param of params) {
|
|
33
45
|
if (newDefaults[param.param]) {
|
|
@@ -40,7 +52,6 @@ function setNewDefaults(params, newDefaults) {
|
|
|
40
52
|
}
|
|
41
53
|
return params;
|
|
42
54
|
}
|
|
43
|
-
exports.setNewDefaults = setNewDefaults;
|
|
44
55
|
async function getParams(args) {
|
|
45
56
|
let params;
|
|
46
57
|
if (args.nonInteractive) {
|
|
@@ -58,7 +69,6 @@ async function getParams(args) {
|
|
|
58
69
|
}
|
|
59
70
|
return params;
|
|
60
71
|
}
|
|
61
|
-
exports.getParams = getParams;
|
|
62
72
|
async function getParamsForUpdate(args) {
|
|
63
73
|
let params;
|
|
64
74
|
if (args.nonInteractive) {
|
|
@@ -75,9 +85,7 @@ async function getParamsForUpdate(args) {
|
|
|
75
85
|
}
|
|
76
86
|
return params;
|
|
77
87
|
}
|
|
78
|
-
exports.getParamsForUpdate = getParamsForUpdate;
|
|
79
88
|
async function promptForNewParams(args) {
|
|
80
|
-
var _a, _b;
|
|
81
89
|
const newParamBindingOptions = buildBindingOptionsWithBaseValue(args.currentParams);
|
|
82
90
|
const firebaseProjectParams = await (0, extensionsHelper_1.getFirebaseProjectParams)(args.projectId);
|
|
83
91
|
const sameParam = (param1) => (param2) => {
|
|
@@ -86,8 +94,8 @@ async function promptForNewParams(args) {
|
|
|
86
94
|
const paramDiff = (left, right) => {
|
|
87
95
|
return left.filter((aLeft) => !right.find(sameParam(aLeft)));
|
|
88
96
|
};
|
|
89
|
-
let combinedOldParams = args.spec.params.concat(
|
|
90
|
-
let combinedNewParams = args.newSpec.params.concat(
|
|
97
|
+
let combinedOldParams = args.spec.params.concat(args.spec.systemParams.filter((p) => !p.advanced) ?? []);
|
|
98
|
+
let combinedNewParams = args.newSpec.params.concat(args.newSpec.systemParams.filter((p) => !p.advanced) ?? []);
|
|
91
99
|
if (combinedOldParams.some((p) => p.param === "LOCATION") &&
|
|
92
100
|
combinedNewParams.some((p) => p.param === "firebaseextensions.v1beta.function/location") &&
|
|
93
101
|
!!args.currentParams["LOCATION"]) {
|
|
@@ -124,7 +132,6 @@ async function promptForNewParams(args) {
|
|
|
124
132
|
}
|
|
125
133
|
return newParamBindingOptions;
|
|
126
134
|
}
|
|
127
|
-
exports.promptForNewParams = promptForNewParams;
|
|
128
135
|
function readEnvFile(envPath) {
|
|
129
136
|
const buf = fs.readFileSync(path.resolve(envPath), "utf8");
|
|
130
137
|
const result = env.parse(buf.toString().trim());
|
|
@@ -133,18 +140,14 @@ function readEnvFile(envPath) {
|
|
|
133
140
|
}
|
|
134
141
|
return result.envs;
|
|
135
142
|
}
|
|
136
|
-
exports.readEnvFile = readEnvFile;
|
|
137
143
|
function isSystemParam(paramName) {
|
|
138
144
|
const regex = /^firebaseextensions\.[a-zA-Z0-9\.]*\//;
|
|
139
145
|
return regex.test(paramName);
|
|
140
146
|
}
|
|
141
|
-
exports.isSystemParam = isSystemParam;
|
|
142
147
|
function populateDefaultParams(params, spec) {
|
|
143
|
-
|
|
144
|
-
const ret = Object.assign({}, params);
|
|
148
|
+
const ret = { ...params };
|
|
145
149
|
for (const p of spec.params) {
|
|
146
|
-
ret[p.param] =
|
|
150
|
+
ret[p.param] = ret[p.param] ?? p.default;
|
|
147
151
|
}
|
|
148
152
|
return ret;
|
|
149
153
|
}
|
|
150
|
-
exports.populateDefaultParams = populateDefaultParams;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.DeferredProduct = void 0;
|
|
4
|
+
exports.checkProductsProvisioned = checkProductsProvisioned;
|
|
5
|
+
exports.bulkCheckProductsProvisioned = bulkCheckProductsProvisioned;
|
|
6
|
+
exports.getUsedProducts = getUsedProducts;
|
|
4
7
|
const marked_1 = require("marked");
|
|
5
8
|
const api_1 = require("../api");
|
|
6
9
|
const apiv2_1 = require("../apiv2");
|
|
@@ -12,12 +15,11 @@ var DeferredProduct;
|
|
|
12
15
|
(function (DeferredProduct) {
|
|
13
16
|
DeferredProduct[DeferredProduct["STORAGE"] = 0] = "STORAGE";
|
|
14
17
|
DeferredProduct[DeferredProduct["AUTH"] = 1] = "AUTH";
|
|
15
|
-
})(DeferredProduct
|
|
18
|
+
})(DeferredProduct || (exports.DeferredProduct = DeferredProduct = {}));
|
|
16
19
|
async function checkProductsProvisioned(projectId, spec) {
|
|
17
20
|
const usedProducts = getUsedProducts(spec);
|
|
18
21
|
await checkProducts(projectId, usedProducts);
|
|
19
22
|
}
|
|
20
|
-
exports.checkProductsProvisioned = checkProductsProvisioned;
|
|
21
23
|
async function bulkCheckProductsProvisioned(projectId, instanceSpecs) {
|
|
22
24
|
const usedProducts = await Promise.all(instanceSpecs.map(async (i) => {
|
|
23
25
|
const extensionSpec = await (0, planner_1.getExtensionSpec)(i);
|
|
@@ -25,7 +27,6 @@ async function bulkCheckProductsProvisioned(projectId, instanceSpecs) {
|
|
|
25
27
|
}));
|
|
26
28
|
await checkProducts(projectId, [...(0, functional_1.flattenArray)(usedProducts)]);
|
|
27
29
|
}
|
|
28
|
-
exports.bulkCheckProductsProvisioned = bulkCheckProductsProvisioned;
|
|
29
30
|
async function checkProducts(projectId, usedProducts) {
|
|
30
31
|
const needProvisioning = [];
|
|
31
32
|
let isStorageProvisionedPromise;
|
|
@@ -68,42 +69,37 @@ async function checkProducts(projectId, usedProducts) {
|
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
function getUsedProducts(spec) {
|
|
71
|
-
var _a, _b;
|
|
72
72
|
const usedProducts = [];
|
|
73
|
-
const usedApis =
|
|
74
|
-
const usedRoles =
|
|
73
|
+
const usedApis = spec.apis?.map((api) => api.apiName);
|
|
74
|
+
const usedRoles = spec.roles?.map((r) => r.role.split(".")[0]);
|
|
75
75
|
const usedTriggers = spec.resources.map((r) => getTriggerType(r.propertiesYaml));
|
|
76
|
-
if (
|
|
77
|
-
|
|
78
|
-
usedTriggers.find((t) => t
|
|
76
|
+
if (usedApis?.includes("storage-component.googleapis.com") ||
|
|
77
|
+
usedRoles?.includes("storage") ||
|
|
78
|
+
usedTriggers.find((t) => t?.startsWith("google.storage."))) {
|
|
79
79
|
usedProducts.push(DeferredProduct.STORAGE);
|
|
80
80
|
}
|
|
81
|
-
if (
|
|
82
|
-
|
|
83
|
-
usedTriggers.find((t) => t
|
|
81
|
+
if (usedApis?.includes("identitytoolkit.googleapis.com") ||
|
|
82
|
+
usedRoles?.includes("firebaseauth") ||
|
|
83
|
+
usedTriggers.find((t) => t?.startsWith("providers/firebase.auth/"))) {
|
|
84
84
|
usedProducts.push(DeferredProduct.AUTH);
|
|
85
85
|
}
|
|
86
86
|
return usedProducts;
|
|
87
87
|
}
|
|
88
|
-
exports.getUsedProducts = getUsedProducts;
|
|
89
88
|
function getTriggerType(propertiesYaml) {
|
|
90
|
-
|
|
91
|
-
return (_a = propertiesYaml === null || propertiesYaml === void 0 ? void 0 : propertiesYaml.match(/eventType:\ ([\S]+)/)) === null || _a === void 0 ? void 0 : _a[1];
|
|
89
|
+
return propertiesYaml?.match(/eventType:\ ([\S]+)/)?.[1];
|
|
92
90
|
}
|
|
93
91
|
async function isStorageProvisioned(projectId) {
|
|
94
|
-
var _a, _b;
|
|
95
92
|
const client = new apiv2_1.Client({ urlPrefix: (0, api_1.firebaseStorageOrigin)(), apiVersion: "v1beta" });
|
|
96
93
|
const resp = await client.get(`/projects/${projectId}/buckets`);
|
|
97
|
-
return !!
|
|
94
|
+
return !!resp.body?.buckets?.find((bucket) => {
|
|
98
95
|
const bucketResourceName = bucket.name;
|
|
99
96
|
const bucketResourceNameTokens = bucketResourceName.split("/");
|
|
100
97
|
const pattern = "^" + projectId + "(.[[a-z0-9]+)*.(appspot.com|firebasestorage.app)$";
|
|
101
98
|
return new RegExp(pattern).test(bucketResourceNameTokens[bucketResourceNameTokens.length - 1]);
|
|
102
|
-
})
|
|
99
|
+
});
|
|
103
100
|
}
|
|
104
101
|
async function isAuthProvisioned(projectId) {
|
|
105
|
-
var _a, _b;
|
|
106
102
|
const client = new apiv2_1.Client({ urlPrefix: (0, api_1.firedataOrigin)(), apiVersion: "v1" });
|
|
107
103
|
const resp = await client.get(`/projects/${projectId}/products`);
|
|
108
|
-
return !!
|
|
104
|
+
return !!resp.body?.activation?.map((a) => a.service).includes("FIREBASE_AUTH");
|
|
109
105
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.consoleInstallLink =
|
|
3
|
+
exports.consoleInstallLink = consoleInstallLink;
|
|
4
4
|
const api_1 = require("../api");
|
|
5
5
|
function consoleInstallLink(extVersionRef) {
|
|
6
6
|
return `${(0, api_1.consoleOrigin)()}/project/_/extensions/install?ref=${extVersionRef}`;
|
|
7
7
|
}
|
|
8
|
-
exports.consoleInstallLink = consoleInstallLink;
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getPublisherProfile = getPublisherProfile;
|
|
4
|
+
exports.registerPublisherProfile = registerPublisherProfile;
|
|
5
|
+
exports.deprecateExtensionVersion = deprecateExtensionVersion;
|
|
6
|
+
exports.undeprecateExtensionVersion = undeprecateExtensionVersion;
|
|
7
|
+
exports.createExtensionVersionFromLocalSource = createExtensionVersionFromLocalSource;
|
|
8
|
+
exports.createExtensionVersionFromGitHubSource = createExtensionVersionFromGitHubSource;
|
|
9
|
+
exports.getExtensionVersion = getExtensionVersion;
|
|
10
|
+
exports.listExtensions = listExtensions;
|
|
11
|
+
exports.listExtensionVersions = listExtensionVersions;
|
|
12
|
+
exports.getExtension = getExtension;
|
|
4
13
|
const clc = require("colorette");
|
|
5
14
|
const operationPoller = require("../operation-poller");
|
|
6
15
|
const refs = require("./refs");
|
|
@@ -24,7 +33,6 @@ async function getPublisherProfile(projectId, publisherId) {
|
|
|
24
33
|
});
|
|
25
34
|
return res.body;
|
|
26
35
|
}
|
|
27
|
-
exports.getPublisherProfile = getPublisherProfile;
|
|
28
36
|
async function registerPublisherProfile(projectId, publisherId) {
|
|
29
37
|
const res = await extensionsPublisherApiClient.patch(`/projects/${projectId}/publisherProfile`, {
|
|
30
38
|
publisherId,
|
|
@@ -36,7 +44,6 @@ async function registerPublisherProfile(projectId, publisherId) {
|
|
|
36
44
|
});
|
|
37
45
|
return res.body;
|
|
38
46
|
}
|
|
39
|
-
exports.registerPublisherProfile = registerPublisherProfile;
|
|
40
47
|
async function deprecateExtensionVersion(extensionRef, deprecationMessage) {
|
|
41
48
|
const ref = refs.parse(extensionRef);
|
|
42
49
|
try {
|
|
@@ -60,7 +67,6 @@ async function deprecateExtensionVersion(extensionRef, deprecationMessage) {
|
|
|
60
67
|
});
|
|
61
68
|
}
|
|
62
69
|
}
|
|
63
|
-
exports.deprecateExtensionVersion = deprecateExtensionVersion;
|
|
64
70
|
async function undeprecateExtensionVersion(extensionRef) {
|
|
65
71
|
const ref = refs.parse(extensionRef);
|
|
66
72
|
try {
|
|
@@ -82,16 +88,14 @@ async function undeprecateExtensionVersion(extensionRef) {
|
|
|
82
88
|
});
|
|
83
89
|
}
|
|
84
90
|
}
|
|
85
|
-
exports.undeprecateExtensionVersion = undeprecateExtensionVersion;
|
|
86
91
|
async function createExtensionVersionFromLocalSource(args) {
|
|
87
|
-
var _a;
|
|
88
92
|
const ref = refs.parse(args.extensionVersionRef);
|
|
89
93
|
if (!ref.version) {
|
|
90
94
|
throw new error_1.FirebaseError(`Extension version ref "${args.extensionVersionRef}" must supply a version.`);
|
|
91
95
|
}
|
|
92
96
|
const uploadRes = await extensionsPublisherApiClient.post(`/${refs.toExtensionName(ref)}/versions:createFromSource`, {
|
|
93
97
|
versionId: ref.version,
|
|
94
|
-
extensionRoot:
|
|
98
|
+
extensionRoot: args.extensionRoot ?? "/",
|
|
95
99
|
remoteArchiveSource: {
|
|
96
100
|
packageUri: args.packageUri,
|
|
97
101
|
},
|
|
@@ -104,7 +108,6 @@ async function createExtensionVersionFromLocalSource(args) {
|
|
|
104
108
|
});
|
|
105
109
|
return pollRes;
|
|
106
110
|
}
|
|
107
|
-
exports.createExtensionVersionFromLocalSource = createExtensionVersionFromLocalSource;
|
|
108
111
|
async function createExtensionVersionFromGitHubSource(args) {
|
|
109
112
|
const ref = refs.parse(args.extensionVersionRef);
|
|
110
113
|
if (!ref.version) {
|
|
@@ -126,7 +129,6 @@ async function createExtensionVersionFromGitHubSource(args) {
|
|
|
126
129
|
});
|
|
127
130
|
return pollRes;
|
|
128
131
|
}
|
|
129
|
-
exports.createExtensionVersionFromGitHubSource = createExtensionVersionFromGitHubSource;
|
|
130
132
|
async function getExtensionVersion(extensionVersionRef) {
|
|
131
133
|
const ref = refs.parse(extensionVersionRef);
|
|
132
134
|
if (!ref.version) {
|
|
@@ -149,7 +151,6 @@ async function getExtensionVersion(extensionVersionRef) {
|
|
|
149
151
|
throw new error_1.FirebaseError(`Failed to query the extension version '${clc.bold(extensionVersionRef)}': ${err}`);
|
|
150
152
|
}
|
|
151
153
|
}
|
|
152
|
-
exports.getExtensionVersion = getExtensionVersion;
|
|
153
154
|
async function listExtensions(publisherId) {
|
|
154
155
|
const extensions = [];
|
|
155
156
|
const getNextPage = async (pageToken = "") => {
|
|
@@ -169,7 +170,6 @@ async function listExtensions(publisherId) {
|
|
|
169
170
|
await getNextPage();
|
|
170
171
|
return extensions;
|
|
171
172
|
}
|
|
172
|
-
exports.listExtensions = listExtensions;
|
|
173
173
|
async function listExtensionVersions(ref, filter = "", showPrereleases = false) {
|
|
174
174
|
const { publisherId, extensionId } = refs.parse(ref);
|
|
175
175
|
const extensionVersions = [];
|
|
@@ -192,7 +192,6 @@ async function listExtensionVersions(ref, filter = "", showPrereleases = false)
|
|
|
192
192
|
await getNextPage();
|
|
193
193
|
return extensionVersions;
|
|
194
194
|
}
|
|
195
|
-
exports.listExtensionVersions = listExtensionVersions;
|
|
196
195
|
async function getExtension(extensionRef) {
|
|
197
196
|
const ref = refs.parse(extensionRef);
|
|
198
197
|
try {
|
|
@@ -211,4 +210,3 @@ async function getExtension(extensionRef) {
|
|
|
211
210
|
});
|
|
212
211
|
}
|
|
213
212
|
}
|
|
214
|
-
exports.getExtension = getExtension;
|
package/lib/extensions/refs.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parse = parse;
|
|
4
|
+
exports.toExtensionRef = toExtensionRef;
|
|
5
|
+
exports.toExtensionVersionRef = toExtensionVersionRef;
|
|
6
|
+
exports.toExtensionName = toExtensionName;
|
|
7
|
+
exports.toExtensionVersionName = toExtensionVersionName;
|
|
8
|
+
exports.equal = equal;
|
|
4
9
|
const semver = require("semver");
|
|
5
10
|
const error_1 = require("../error");
|
|
6
11
|
const refRegex = new RegExp(/^([^/@\n]+)\/{1}([^/@\n]+)(@{1}([^\n]+)|)$/);
|
|
@@ -20,7 +25,6 @@ function parse(refOrName) {
|
|
|
20
25
|
}
|
|
21
26
|
return ret;
|
|
22
27
|
}
|
|
23
|
-
exports.parse = parse;
|
|
24
28
|
function parseRef(ref) {
|
|
25
29
|
const parts = refRegex.exec(ref);
|
|
26
30
|
if (parts && (parts.length === 5 || parts.length === 7)) {
|
|
@@ -53,25 +57,21 @@ function parseName(name) {
|
|
|
53
57
|
function toExtensionRef(ref) {
|
|
54
58
|
return `${ref.publisherId}/${ref.extensionId}`;
|
|
55
59
|
}
|
|
56
|
-
exports.toExtensionRef = toExtensionRef;
|
|
57
60
|
function toExtensionVersionRef(ref) {
|
|
58
61
|
if (!ref.version) {
|
|
59
62
|
throw new error_1.FirebaseError(`Ref does not have a version`);
|
|
60
63
|
}
|
|
61
64
|
return `${ref.publisherId}/${ref.extensionId}@${ref.version}`;
|
|
62
65
|
}
|
|
63
|
-
exports.toExtensionVersionRef = toExtensionVersionRef;
|
|
64
66
|
function toExtensionName(ref) {
|
|
65
67
|
return `publishers/${ref.publisherId}/extensions/${ref.extensionId}`;
|
|
66
68
|
}
|
|
67
|
-
exports.toExtensionName = toExtensionName;
|
|
68
69
|
function toExtensionVersionName(ref) {
|
|
69
70
|
if (!ref.version) {
|
|
70
71
|
throw new error_1.FirebaseError(`Ref does not have a version`);
|
|
71
72
|
}
|
|
72
73
|
return `publishers/${ref.publisherId}/extensions/${ref.extensionId}/versions/${ref.version}`;
|
|
73
74
|
}
|
|
74
|
-
exports.toExtensionVersionName = toExtensionVersionName;
|
|
75
75
|
function equal(a, b) {
|
|
76
76
|
return (!!a &&
|
|
77
77
|
!!b &&
|
|
@@ -79,4 +79,3 @@ function equal(a, b) {
|
|
|
79
79
|
a.extensionId === b.extensionId &&
|
|
80
80
|
a.version === b.version);
|
|
81
81
|
}
|
|
82
|
-
exports.equal = equal;
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.fixDarkBlueText = fixDarkBlueText;
|
|
4
|
+
exports.extractExtensionsFromBuilds = extractExtensionsFromBuilds;
|
|
5
|
+
exports.extensionMatchesAnyFilter = extensionMatchesAnyFilter;
|
|
6
|
+
exports.isTypescriptCodebase = isTypescriptCodebase;
|
|
7
|
+
exports.writeFile = writeFile;
|
|
8
|
+
exports.copyDirectory = copyDirectory;
|
|
9
|
+
exports.getCodebaseRuntime = getCodebaseRuntime;
|
|
10
|
+
exports.writeSDK = writeSDK;
|
|
11
|
+
exports.getCodebaseDir = getCodebaseDir;
|
|
12
|
+
exports.getInstallPathPrefix = getInstallPathPrefix;
|
|
13
|
+
exports.toTitleCase = toTitleCase;
|
|
14
|
+
exports.capitalizeFirstLetter = capitalizeFirstLetter;
|
|
15
|
+
exports.lowercaseFirstLetter = lowercaseFirstLetter;
|
|
16
|
+
exports.snakeToCamelCase = snakeToCamelCase;
|
|
17
|
+
exports.longestCommonPrefix = longestCommonPrefix;
|
|
4
18
|
const fs = require("fs");
|
|
5
19
|
const path = require("path");
|
|
6
20
|
const prompt_1 = require("../../prompt");
|
|
@@ -15,7 +29,6 @@ function fixDarkBlueText(txt) {
|
|
|
15
29
|
const BRIGHT_CYAN = "\u001b[36;1m";
|
|
16
30
|
return txt.replaceAll(DARK_BLUE, BRIGHT_CYAN);
|
|
17
31
|
}
|
|
18
|
-
exports.fixDarkBlueText = fixDarkBlueText;
|
|
19
32
|
function extractExtensionsFromBuilds(builds, filters) {
|
|
20
33
|
const extRecords = {};
|
|
21
34
|
for (const [codebase, build] of Object.entries(builds)) {
|
|
@@ -25,21 +38,19 @@ function extractExtensionsFromBuilds(builds, filters) {
|
|
|
25
38
|
if (extRecords[id]) {
|
|
26
39
|
throw new error_1.FirebaseError(`Duplicate extension id found: ${id}`);
|
|
27
40
|
}
|
|
28
|
-
extRecords[id] =
|
|
41
|
+
extRecords[id] = { ...ext, labels: { createdBy: "SDK", codebase } };
|
|
29
42
|
}
|
|
30
43
|
}
|
|
31
44
|
}
|
|
32
45
|
}
|
|
33
46
|
return extRecords;
|
|
34
47
|
}
|
|
35
|
-
exports.extractExtensionsFromBuilds = extractExtensionsFromBuilds;
|
|
36
48
|
function extensionMatchesAnyFilter(codebase, extensionId, filters) {
|
|
37
49
|
if (!filters) {
|
|
38
50
|
return true;
|
|
39
51
|
}
|
|
40
52
|
return filters.some((f) => extensionMatchesFilter(codebase, extensionId, f));
|
|
41
53
|
}
|
|
42
|
-
exports.extensionMatchesAnyFilter = extensionMatchesAnyFilter;
|
|
43
54
|
function extensionMatchesFilter(codebase, extensionId, filter) {
|
|
44
55
|
if (codebase && filter.codebase) {
|
|
45
56
|
if (codebase !== filter.codebase) {
|
|
@@ -55,7 +66,6 @@ function extensionMatchesFilter(codebase, extensionId, filter) {
|
|
|
55
66
|
function isTypescriptCodebase(codebaseDir) {
|
|
56
67
|
return fsutils.fileExistsSync(path.join(codebaseDir, "tsconfig.json"));
|
|
57
68
|
}
|
|
58
|
-
exports.isTypescriptCodebase = isTypescriptCodebase;
|
|
59
69
|
async function writeFile(filePath, data, options) {
|
|
60
70
|
const shortFilePath = filePath.replace(process.cwd(), ".");
|
|
61
71
|
if (fsutils.fileExistsSync(filePath)) {
|
|
@@ -93,7 +103,6 @@ async function writeFile(filePath, data, options) {
|
|
|
93
103
|
}
|
|
94
104
|
}
|
|
95
105
|
}
|
|
96
|
-
exports.writeFile = writeFile;
|
|
97
106
|
async function copyDirectory(src, dest, options) {
|
|
98
107
|
const shortDestPath = dest.replace(process.cwd(), ",");
|
|
99
108
|
if (fsutils.dirExistsSync(dest)) {
|
|
@@ -111,7 +120,7 @@ async function copyDirectory(src, dest, options) {
|
|
|
111
120
|
if (srcPath.includes("node_modules")) {
|
|
112
121
|
continue;
|
|
113
122
|
}
|
|
114
|
-
await copyDirectory(srcPath, destPath,
|
|
123
|
+
await copyDirectory(srcPath, destPath, { ...options, force: true });
|
|
115
124
|
}
|
|
116
125
|
else if (entry.isFile())
|
|
117
126
|
try {
|
|
@@ -128,10 +137,9 @@ async function copyDirectory(src, dest, options) {
|
|
|
128
137
|
}
|
|
129
138
|
else {
|
|
130
139
|
await fs.promises.mkdir(dest, { recursive: true });
|
|
131
|
-
await copyDirectory(src, dest,
|
|
140
|
+
await copyDirectory(src, dest, { ...options, force: true });
|
|
132
141
|
}
|
|
133
142
|
}
|
|
134
|
-
exports.copyDirectory = copyDirectory;
|
|
135
143
|
async function getCodebaseRuntime(options) {
|
|
136
144
|
const config = (0, projectConfig_1.normalizeAndValidate)(options.config.src.functions);
|
|
137
145
|
const codebaseConfig = (0, projectConfig_1.configForCodebase)(config, options.codebase || projectConfig_1.DEFAULT_CODEBASE);
|
|
@@ -153,7 +161,6 @@ async function getCodebaseRuntime(options) {
|
|
|
153
161
|
}
|
|
154
162
|
return delegate.runtime;
|
|
155
163
|
}
|
|
156
|
-
exports.getCodebaseRuntime = getCodebaseRuntime;
|
|
157
164
|
async function writeSDK(extensionRef, localPath, spec, options) {
|
|
158
165
|
const runtime = await getCodebaseRuntime(options);
|
|
159
166
|
if (runtime.startsWith("nodejs")) {
|
|
@@ -165,7 +172,6 @@ async function writeSDK(extensionRef, localPath, spec, options) {
|
|
|
165
172
|
throw new error_1.FirebaseError(`Extension SDK generation is currently only supported for NodeJs. We detected the target source to be: ${runtime}`);
|
|
166
173
|
}
|
|
167
174
|
}
|
|
168
|
-
exports.writeSDK = writeSDK;
|
|
169
175
|
function getCodebaseDir(options) {
|
|
170
176
|
if (!options.projectRoot) {
|
|
171
177
|
throw new error_1.FirebaseError("Unable to determine root directory of project");
|
|
@@ -174,23 +180,18 @@ function getCodebaseDir(options) {
|
|
|
174
180
|
const codebaseConfig = (0, projectConfig_1.configForCodebase)(config, options.codebase || projectConfig_1.DEFAULT_CODEBASE);
|
|
175
181
|
return `${options.projectRoot}/${codebaseConfig.source}/`;
|
|
176
182
|
}
|
|
177
|
-
exports.getCodebaseDir = getCodebaseDir;
|
|
178
183
|
function getInstallPathPrefix(options) {
|
|
179
184
|
return `${getCodebaseDir(options)}generated/extensions/`;
|
|
180
185
|
}
|
|
181
|
-
exports.getInstallPathPrefix = getInstallPathPrefix;
|
|
182
186
|
function toTitleCase(txt) {
|
|
183
187
|
return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();
|
|
184
188
|
}
|
|
185
|
-
exports.toTitleCase = toTitleCase;
|
|
186
189
|
function capitalizeFirstLetter(txt) {
|
|
187
190
|
return txt.charAt(0).toUpperCase() + txt.substring(1);
|
|
188
191
|
}
|
|
189
|
-
exports.capitalizeFirstLetter = capitalizeFirstLetter;
|
|
190
192
|
function lowercaseFirstLetter(txt) {
|
|
191
193
|
return txt.charAt(0).toLowerCase() + txt.substring(1);
|
|
192
194
|
}
|
|
193
|
-
exports.lowercaseFirstLetter = lowercaseFirstLetter;
|
|
194
195
|
function snakeToCamelCase(txt) {
|
|
195
196
|
let ret = txt.toLowerCase();
|
|
196
197
|
ret = ret.replace(/_/g, " ");
|
|
@@ -198,7 +199,6 @@ function snakeToCamelCase(txt) {
|
|
|
198
199
|
ret = ret.charAt(0).toLowerCase() + ret.substring(1);
|
|
199
200
|
return ret;
|
|
200
201
|
}
|
|
201
|
-
exports.snakeToCamelCase = snakeToCamelCase;
|
|
202
202
|
function longestCommonPrefix(arr) {
|
|
203
203
|
if (arr.length === 0) {
|
|
204
204
|
return "";
|
|
@@ -213,4 +213,3 @@ function longestCommonPrefix(arr) {
|
|
|
213
213
|
}
|
|
214
214
|
return prefix;
|
|
215
215
|
}
|
|
216
|
-
exports.longestCommonPrefix = longestCommonPrefix;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.TYPESCRIPT_VERSION = exports.FIREBASE_FUNCTIONS_VERSION = exports.SDK_GENERATION_VERSION = void 0;
|
|
4
|
+
exports.writeSDK = writeSDK;
|
|
4
5
|
const path = require("path");
|
|
5
6
|
const marked_terminal_1 = require("marked-terminal");
|
|
6
7
|
const marked_1 = require("marked");
|
|
@@ -98,7 +99,6 @@ function addPeerDependency(pkgJson, dependency, version) {
|
|
|
98
99
|
pkgJson.peerDependencies[dependency] = version;
|
|
99
100
|
}
|
|
100
101
|
async function writeSDK(extensionRef, localPath, spec, options) {
|
|
101
|
-
var _a, _b, _c;
|
|
102
102
|
const sdkLines = [];
|
|
103
103
|
const className = makeClassName(spec.name);
|
|
104
104
|
let dirPath;
|
|
@@ -191,7 +191,7 @@ async function writeSDK(extensionRef, localPath, spec, options) {
|
|
|
191
191
|
param.type === extensionsHelper_1.SpecParamType.SELECT ||
|
|
192
192
|
param.type === extensionsHelper_1.SpecParamType.MULTISELECT) {
|
|
193
193
|
line = `export type ${makeTypeName(param.param)} =`;
|
|
194
|
-
|
|
194
|
+
param.options?.forEach((opt, i) => {
|
|
195
195
|
if (i === 0) {
|
|
196
196
|
line = line.concat(` "${opt.value}"`);
|
|
197
197
|
}
|
|
@@ -210,7 +210,7 @@ async function writeSDK(extensionRef, localPath, spec, options) {
|
|
|
210
210
|
let line;
|
|
211
211
|
if (sysParam.type === types_1.ParamType.SELECT || sysParam.type === types_1.ParamType.MULTISELECT) {
|
|
212
212
|
line = `export type ${makeSystemTypeName(sysParam.param)} =`;
|
|
213
|
-
|
|
213
|
+
sysParam.options?.forEach((opt, i) => {
|
|
214
214
|
if (i === 0) {
|
|
215
215
|
line = line.concat(` "${opt.value}"`);
|
|
216
216
|
}
|
|
@@ -304,7 +304,7 @@ async function writeSDK(extensionRef, localPath, spec, options) {
|
|
|
304
304
|
sdkLines.push("}\n");
|
|
305
305
|
sdkLines.push(`/**`);
|
|
306
306
|
sdkLines.push(` * ${spec.displayName || spec.name}`);
|
|
307
|
-
|
|
307
|
+
spec.description?.split("\n").forEach((val) => {
|
|
308
308
|
sdkLines.push(` * ${val.replace(/\*\//g, "* /")}`);
|
|
309
309
|
});
|
|
310
310
|
sdkLines.push(` */`);
|
|
@@ -400,4 +400,3 @@ async function writeSDK(extensionRef, localPath, spec, options) {
|
|
|
400
400
|
`See also: ${(0, common_1.fixDarkBlueText)(await (0, marked_1.marked)("[Extension SDKs documentation](https://firebase.google.com/docs/extensions/install-extensions?interface=sdk#config)"))}`;
|
|
401
401
|
return instructions;
|
|
402
402
|
}
|
|
403
|
-
exports.writeSDK = writeSDK;
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.SECRET_ROLE = exports.SECRET_LABEL = void 0;
|
|
4
|
+
exports.ensureSecretManagerApiEnabled = ensureSecretManagerApiEnabled;
|
|
5
|
+
exports.usesSecrets = usesSecrets;
|
|
6
|
+
exports.grantFirexServiceAgentSecretAdminRole = grantFirexServiceAgentSecretAdminRole;
|
|
7
|
+
exports.getManagedSecrets = getManagedSecrets;
|
|
8
|
+
exports.getActiveSecrets = getActiveSecrets;
|
|
9
|
+
exports.getSecretLabels = getSecretLabels;
|
|
10
|
+
exports.prettySecretName = prettySecretName;
|
|
4
11
|
const getProjectNumber_1 = require("../getProjectNumber");
|
|
5
12
|
const utils = require("../utils");
|
|
6
13
|
const ensureApiEnabled_1 = require("../ensureApiEnabled");
|
|
@@ -15,18 +22,15 @@ async function ensureSecretManagerApiEnabled(options) {
|
|
|
15
22
|
const projectId = (0, projectUtils_1.needProjectId)(options);
|
|
16
23
|
return await (0, ensureApiEnabled_1.ensure)(projectId, (0, api_1.secretManagerOrigin)(), "extensions", options.markdown);
|
|
17
24
|
}
|
|
18
|
-
exports.ensureSecretManagerApiEnabled = ensureSecretManagerApiEnabled;
|
|
19
25
|
function usesSecrets(spec) {
|
|
20
26
|
return spec.params && !!spec.params.find((p) => p.type === types_1.ParamType.SECRET);
|
|
21
27
|
}
|
|
22
|
-
exports.usesSecrets = usesSecrets;
|
|
23
28
|
async function grantFirexServiceAgentSecretAdminRole(secret) {
|
|
24
29
|
const projectNumber = await (0, getProjectNumber_1.getProjectNumber)({ projectId: secret.projectId });
|
|
25
30
|
const firexSaProjectId = utils.envOverride("FIREBASE_EXTENSIONS_SA_PROJECT_ID", "gcp-sa-firebasemods");
|
|
26
31
|
const saEmail = `service-${projectNumber}@${firexSaProjectId}.iam.gserviceaccount.com`;
|
|
27
32
|
return secretManagerApi.ensureServiceAgentRole(secret, [saEmail], "roles/secretmanager.admin");
|
|
28
33
|
}
|
|
29
|
-
exports.grantFirexServiceAgentSecretAdminRole = grantFirexServiceAgentSecretAdminRole;
|
|
30
34
|
async function getManagedSecrets(instance) {
|
|
31
35
|
return (await Promise.all(getActiveSecrets(instance.config.source.spec, instance.config.params).map(async (secretResourceName) => {
|
|
32
36
|
const secret = secretManagerApi.parseSecretResourceName(secretResourceName);
|
|
@@ -37,19 +41,16 @@ async function getManagedSecrets(instance) {
|
|
|
37
41
|
return Promise.resolve("");
|
|
38
42
|
}))).filter((secretId) => !!secretId);
|
|
39
43
|
}
|
|
40
|
-
exports.getManagedSecrets = getManagedSecrets;
|
|
41
44
|
function getActiveSecrets(spec, params) {
|
|
42
45
|
return spec.params
|
|
43
46
|
.map((p) => (p.type === types_1.ParamType.SECRET ? params[p.param] : ""))
|
|
44
47
|
.filter((pv) => !!pv);
|
|
45
48
|
}
|
|
46
|
-
exports.getActiveSecrets = getActiveSecrets;
|
|
47
49
|
function getSecretLabels(instanceId) {
|
|
48
50
|
const labels = {};
|
|
49
51
|
labels[exports.SECRET_LABEL] = instanceId;
|
|
50
52
|
return labels;
|
|
51
53
|
}
|
|
52
|
-
exports.getSecretLabels = getSecretLabels;
|
|
53
54
|
function prettySecretName(secretResourceName) {
|
|
54
55
|
const nameTokens = secretResourceName.split("/");
|
|
55
56
|
if (nameTokens.length !== 4 && nameTokens.length !== 6) {
|
|
@@ -58,4 +59,3 @@ function prettySecretName(secretResourceName) {
|
|
|
58
59
|
}
|
|
59
60
|
return nameTokens.slice(0, 4).join("/");
|
|
60
61
|
}
|
|
61
|
-
exports.prettySecretName = prettySecretName;
|
package/lib/extensions/tos.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getAppDeveloperTOSStatus = getAppDeveloperTOSStatus;
|
|
4
|
+
exports.acceptAppDeveloperTOS = acceptAppDeveloperTOS;
|
|
5
|
+
exports.getPublisherTOSStatus = getPublisherTOSStatus;
|
|
6
|
+
exports.acceptPublisherTOS = acceptPublisherTOS;
|
|
7
|
+
exports.acceptLatestPublisherTOS = acceptLatestPublisherTOS;
|
|
8
|
+
exports.acceptLatestAppDeveloperTOS = acceptLatestAppDeveloperTOS;
|
|
9
|
+
exports.displayDeveloperTOSWarning = displayDeveloperTOSWarning;
|
|
4
10
|
const apiv2_1 = require("../apiv2");
|
|
5
11
|
const api_1 = require("../api");
|
|
6
12
|
const logger_1 = require("../logger");
|
|
@@ -15,7 +21,6 @@ async function getAppDeveloperTOSStatus(projectId) {
|
|
|
15
21
|
const res = await apiClient.get(`/projects/${projectId}/appdevtos`);
|
|
16
22
|
return res.body;
|
|
17
23
|
}
|
|
18
|
-
exports.getAppDeveloperTOSStatus = getAppDeveloperTOSStatus;
|
|
19
24
|
async function acceptAppDeveloperTOS(projectId, tosVersion, instanceId = "") {
|
|
20
25
|
const res = await apiClient.post(`/projects/${projectId}/appdevtos:accept`, {
|
|
21
26
|
name: `project/${projectId}/appdevtos`,
|
|
@@ -24,12 +29,10 @@ async function acceptAppDeveloperTOS(projectId, tosVersion, instanceId = "") {
|
|
|
24
29
|
});
|
|
25
30
|
return res.body;
|
|
26
31
|
}
|
|
27
|
-
exports.acceptAppDeveloperTOS = acceptAppDeveloperTOS;
|
|
28
32
|
async function getPublisherTOSStatus(projectId) {
|
|
29
33
|
const res = await apiClient.get(`/projects/${projectId}/publishertos`);
|
|
30
34
|
return res.body;
|
|
31
35
|
}
|
|
32
|
-
exports.getPublisherTOSStatus = getPublisherTOSStatus;
|
|
33
36
|
async function acceptPublisherTOS(projectId, tosVersion) {
|
|
34
37
|
const res = await apiClient.post(`/projects/${projectId}/publishertos:accept`, {
|
|
35
38
|
name: `project/${projectId}/publishertos`,
|
|
@@ -37,7 +40,6 @@ async function acceptPublisherTOS(projectId, tosVersion) {
|
|
|
37
40
|
});
|
|
38
41
|
return res.body;
|
|
39
42
|
}
|
|
40
|
-
exports.acceptPublisherTOS = acceptPublisherTOS;
|
|
41
43
|
async function acceptLatestPublisherTOS(options, projectId) {
|
|
42
44
|
try {
|
|
43
45
|
logger_1.logger.debug(`Checking if latest publisher TOS has been accepted by ${projectId}...`);
|
|
@@ -64,7 +66,6 @@ async function acceptLatestPublisherTOS(options, projectId) {
|
|
|
64
66
|
}
|
|
65
67
|
throw new error_1.FirebaseError("You must accept the terms of service to continue.");
|
|
66
68
|
}
|
|
67
|
-
exports.acceptLatestPublisherTOS = acceptLatestPublisherTOS;
|
|
68
69
|
async function acceptLatestAppDeveloperTOS(options, projectId, instanceIds) {
|
|
69
70
|
try {
|
|
70
71
|
logger_1.logger.debug(`Checking if latest AppDeveloper TOS has been accepted by ${projectId}...`);
|
|
@@ -90,9 +91,7 @@ async function acceptLatestAppDeveloperTOS(options, projectId, instanceIds) {
|
|
|
90
91
|
return [];
|
|
91
92
|
}
|
|
92
93
|
}
|
|
93
|
-
exports.acceptLatestAppDeveloperTOS = acceptLatestAppDeveloperTOS;
|
|
94
94
|
function displayDeveloperTOSWarning() {
|
|
95
95
|
const tosLink = extensionsTosUrl("user");
|
|
96
96
|
utils.logLabeledBullet(extensionsHelper_1.logPrefix, `By installing an extension instance onto a Firebase project, you accept the Firebase Extensions User Terms of Service: ${tosLink}`);
|
|
97
97
|
}
|
|
98
|
-
exports.displayDeveloperTOSWarning = displayDeveloperTOSWarning;
|