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/operation-poller.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.OperationPoller = void 0;
|
|
4
|
+
exports.pollOperation = pollOperation;
|
|
4
5
|
const apiv2_1 = require("./apiv2");
|
|
5
6
|
const error_1 = require("./error");
|
|
6
7
|
const queue_1 = require("./throttler/queue");
|
|
@@ -64,4 +65,3 @@ exports.OperationPoller = OperationPoller;
|
|
|
64
65
|
function pollOperation(options) {
|
|
65
66
|
return new OperationPoller().poll(options);
|
|
66
67
|
}
|
|
67
|
-
exports.pollOperation = pollOperation;
|
package/lib/profileReport.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProfileReport =
|
|
3
|
+
exports.ProfileReport = void 0;
|
|
4
|
+
exports.extractJSON = extractJSON;
|
|
5
|
+
exports.pathString = pathString;
|
|
6
|
+
exports.formatNumber = formatNumber;
|
|
7
|
+
exports.formatBytes = formatBytes;
|
|
8
|
+
exports.extractReadableIndex = extractReadableIndex;
|
|
4
9
|
const clc = require("colorette");
|
|
5
10
|
const Table = require("cli-table3");
|
|
6
11
|
const fs = require("fs");
|
|
@@ -32,11 +37,9 @@ function extractJSON(line, input) {
|
|
|
32
37
|
return null;
|
|
33
38
|
}
|
|
34
39
|
}
|
|
35
|
-
exports.extractJSON = extractJSON;
|
|
36
40
|
function pathString(path) {
|
|
37
41
|
return `/${path ? path.join("/") : ""}`;
|
|
38
42
|
}
|
|
39
|
-
exports.pathString = pathString;
|
|
40
43
|
function formatNumber(num) {
|
|
41
44
|
const parts = num.toFixed(2).split(".");
|
|
42
45
|
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
@@ -45,7 +48,6 @@ function formatNumber(num) {
|
|
|
45
48
|
}
|
|
46
49
|
return parts.join(".");
|
|
47
50
|
}
|
|
48
|
-
exports.formatNumber = formatNumber;
|
|
49
51
|
function formatBytes(bytes) {
|
|
50
52
|
const threshold = 1000;
|
|
51
53
|
if (Math.round(bytes) < threshold) {
|
|
@@ -60,7 +62,6 @@ function formatBytes(bytes) {
|
|
|
60
62
|
} while (Math.abs(formattedBytes) >= threshold && u < units.length - 1);
|
|
61
63
|
return formatNumber(formattedBytes) + " " + units[u];
|
|
62
64
|
}
|
|
63
|
-
exports.formatBytes = formatBytes;
|
|
64
65
|
function extractReadableIndex(query) {
|
|
65
66
|
if (query.orderBy) {
|
|
66
67
|
return query.orderBy;
|
|
@@ -71,7 +72,6 @@ function extractReadableIndex(query) {
|
|
|
71
72
|
}
|
|
72
73
|
return ".value";
|
|
73
74
|
}
|
|
74
|
-
exports.extractReadableIndex = extractReadableIndex;
|
|
75
75
|
class ProfileReport {
|
|
76
76
|
constructor(tmpFile, outStream, options = {}) {
|
|
77
77
|
this.tempFile = tmpFile;
|
package/lib/profiler.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.profiler =
|
|
3
|
+
exports.profiler = profiler;
|
|
4
4
|
const fs = require("fs");
|
|
5
5
|
const ora = require("ora");
|
|
6
6
|
const readline = require("readline");
|
|
@@ -96,4 +96,3 @@ async function profiler(options) {
|
|
|
96
96
|
res.body.pipe(tmpStream);
|
|
97
97
|
return p;
|
|
98
98
|
}
|
|
99
|
-
exports.profiler = profiler;
|
package/lib/projectPath.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveProjectPath =
|
|
3
|
+
exports.resolveProjectPath = resolveProjectPath;
|
|
4
4
|
const path = require("path");
|
|
5
5
|
const detectProjectRoot_1 = require("./detectProjectRoot");
|
|
6
6
|
const error_1 = require("./error");
|
|
@@ -13,4 +13,3 @@ function resolveProjectPath(options, filePath) {
|
|
|
13
13
|
}
|
|
14
14
|
return path.resolve(projectRoot, filePath);
|
|
15
15
|
}
|
|
16
|
-
exports.resolveProjectPath = resolveProjectPath;
|
package/lib/projectUtils.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getProjectId = getProjectId;
|
|
4
|
+
exports.needProjectId = needProjectId;
|
|
5
|
+
exports.needProjectNumber = needProjectNumber;
|
|
6
|
+
exports.getAliases = getAliases;
|
|
4
7
|
const projects_1 = require("./management/projects");
|
|
5
8
|
const clc = require("colorette");
|
|
6
9
|
const marked_1 = require("marked");
|
|
@@ -8,12 +11,11 @@ const { FirebaseError } = require("./error");
|
|
|
8
11
|
function getProjectId({ projectId, project, }) {
|
|
9
12
|
return projectId || project;
|
|
10
13
|
}
|
|
11
|
-
exports.getProjectId = getProjectId;
|
|
12
14
|
function needProjectId({ projectId, project, rc, }) {
|
|
13
15
|
if (projectId || project) {
|
|
14
16
|
return projectId || project;
|
|
15
17
|
}
|
|
16
|
-
const aliases =
|
|
18
|
+
const aliases = rc?.projects || {};
|
|
17
19
|
const aliasCount = Object.keys(aliases).length;
|
|
18
20
|
if (aliasCount === 0) {
|
|
19
21
|
throw new FirebaseError("No currently active project.\n" +
|
|
@@ -37,7 +39,6 @@ function needProjectId({ projectId, project, rc, }) {
|
|
|
37
39
|
" with one of these options:\n\n" +
|
|
38
40
|
aliasList);
|
|
39
41
|
}
|
|
40
|
-
exports.needProjectId = needProjectId;
|
|
41
42
|
async function needProjectNumber(options) {
|
|
42
43
|
if (options.projectNumber) {
|
|
43
44
|
return options.projectNumber;
|
|
@@ -47,7 +48,6 @@ async function needProjectNumber(options) {
|
|
|
47
48
|
options.projectNumber = metadata.projectNumber;
|
|
48
49
|
return options.projectNumber;
|
|
49
50
|
}
|
|
50
|
-
exports.needProjectNumber = needProjectNumber;
|
|
51
51
|
function getAliases(options, projectId) {
|
|
52
52
|
if (options.rc.hasProjects) {
|
|
53
53
|
return Object.entries(options.rc.projects)
|
|
@@ -56,4 +56,3 @@ function getAliases(options, projectId) {
|
|
|
56
56
|
}
|
|
57
57
|
return [];
|
|
58
58
|
}
|
|
59
|
-
exports.getAliases = getAliases;
|
package/lib/prompt.js
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.Separator = void 0;
|
|
4
|
+
exports.guard = guard;
|
|
5
|
+
exports.input = input;
|
|
6
|
+
exports.confirm = confirm;
|
|
7
|
+
exports.checkbox = checkbox;
|
|
8
|
+
exports.select = select;
|
|
9
|
+
exports.number = number;
|
|
10
|
+
exports.password = password;
|
|
11
|
+
exports.search = search;
|
|
4
12
|
const inquirer = require("@inquirer/prompts");
|
|
5
13
|
const error_1 = require("./error");
|
|
6
14
|
var prompts_1 = require("@inquirer/prompts");
|
|
@@ -14,7 +22,6 @@ function guard(opts) {
|
|
|
14
22
|
}
|
|
15
23
|
throw new error_1.FirebaseError(`Question "${opts.message}" does not have a default and cannot be answered in non-interactive mode`);
|
|
16
24
|
}
|
|
17
|
-
exports.guard = guard;
|
|
18
25
|
async function input(opts) {
|
|
19
26
|
if (typeof opts === "string") {
|
|
20
27
|
opts = { message: opts };
|
|
@@ -27,7 +34,6 @@ async function input(opts) {
|
|
|
27
34
|
}
|
|
28
35
|
return inquirer.input(opts);
|
|
29
36
|
}
|
|
30
|
-
exports.input = input;
|
|
31
37
|
async function confirm(opts) {
|
|
32
38
|
if (typeof opts === "string") {
|
|
33
39
|
opts = { message: opts };
|
|
@@ -43,23 +49,26 @@ async function confirm(opts) {
|
|
|
43
49
|
}
|
|
44
50
|
return inquirer.confirm(opts);
|
|
45
51
|
}
|
|
46
|
-
exports.confirm = confirm;
|
|
47
52
|
async function checkbox(opts) {
|
|
48
53
|
const { shouldReturn, value } = guard(opts);
|
|
49
54
|
if (shouldReturn) {
|
|
50
55
|
return value;
|
|
51
56
|
}
|
|
52
|
-
return inquirer.checkbox(
|
|
57
|
+
return inquirer.checkbox({
|
|
58
|
+
...opts,
|
|
59
|
+
loop: true,
|
|
60
|
+
});
|
|
53
61
|
}
|
|
54
|
-
exports.checkbox = checkbox;
|
|
55
62
|
async function select(opts) {
|
|
56
63
|
const { shouldReturn, value } = guard(opts);
|
|
57
64
|
if (shouldReturn) {
|
|
58
65
|
return value;
|
|
59
66
|
}
|
|
60
|
-
return inquirer.select(
|
|
67
|
+
return inquirer.select({
|
|
68
|
+
...opts,
|
|
69
|
+
loop: false,
|
|
70
|
+
});
|
|
61
71
|
}
|
|
62
|
-
exports.select = select;
|
|
63
72
|
async function number(opts) {
|
|
64
73
|
if (typeof opts === "string") {
|
|
65
74
|
opts = { message: opts };
|
|
@@ -70,9 +79,8 @@ async function number(opts) {
|
|
|
70
79
|
return value;
|
|
71
80
|
}
|
|
72
81
|
}
|
|
73
|
-
return await inquirer.number(
|
|
82
|
+
return await inquirer.number({ required: true, ...opts });
|
|
74
83
|
}
|
|
75
|
-
exports.number = number;
|
|
76
84
|
async function password(opts) {
|
|
77
85
|
if (typeof opts === "string") {
|
|
78
86
|
opts = { message: opts };
|
|
@@ -80,9 +88,11 @@ async function password(opts) {
|
|
|
80
88
|
else {
|
|
81
89
|
guard(opts);
|
|
82
90
|
}
|
|
83
|
-
return inquirer.password(
|
|
91
|
+
return inquirer.password({
|
|
92
|
+
...opts,
|
|
93
|
+
mask: "",
|
|
94
|
+
});
|
|
84
95
|
}
|
|
85
|
-
exports.password = password;
|
|
86
96
|
async function search(opts) {
|
|
87
97
|
const { shouldReturn, value } = guard(opts);
|
|
88
98
|
if (shouldReturn) {
|
|
@@ -90,4 +100,3 @@ async function search(opts) {
|
|
|
90
100
|
}
|
|
91
101
|
return inquirer.search(opts);
|
|
92
102
|
}
|
|
93
|
-
exports.search = search;
|
package/lib/rc.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RC =
|
|
3
|
+
exports.RC = void 0;
|
|
4
|
+
exports.loadRC = loadRC;
|
|
4
5
|
const _ = require("lodash");
|
|
5
6
|
const clc = require("colorette");
|
|
6
7
|
const cjson = require("cjson");
|
|
@@ -21,7 +22,6 @@ function loadRC(options) {
|
|
|
21
22
|
const potential = path.resolve(dir || cwd, "./.firebaserc");
|
|
22
23
|
return RC.loadFile(potential);
|
|
23
24
|
}
|
|
24
|
-
exports.loadRC = loadRC;
|
|
25
25
|
class RC {
|
|
26
26
|
static loadFile(rcpath) {
|
|
27
27
|
let data = {};
|
|
@@ -37,7 +37,7 @@ class RC {
|
|
|
37
37
|
}
|
|
38
38
|
constructor(rcpath, data) {
|
|
39
39
|
this.path = rcpath;
|
|
40
|
-
this.data =
|
|
40
|
+
this.data = { projects: {}, targets: {}, etags: {}, ...data };
|
|
41
41
|
}
|
|
42
42
|
set(key, value) {
|
|
43
43
|
_.set(this.data, key, value);
|
|
@@ -70,12 +70,10 @@ class RC {
|
|
|
70
70
|
return this.data.targets[project] || {};
|
|
71
71
|
}
|
|
72
72
|
targets(project, type) {
|
|
73
|
-
|
|
74
|
-
return ((_a = this.data.targets[project]) === null || _a === void 0 ? void 0 : _a[type]) || {};
|
|
73
|
+
return this.data.targets[project]?.[type] || {};
|
|
75
74
|
}
|
|
76
75
|
target(project, type, name) {
|
|
77
|
-
|
|
78
|
-
return ((_b = (_a = this.data.targets[project]) === null || _a === void 0 ? void 0 : _a[type]) === null || _b === void 0 ? void 0 : _b[name]) || [];
|
|
76
|
+
return this.data.targets[project]?.[type]?.[name] || [];
|
|
79
77
|
}
|
|
80
78
|
applyTarget(project, type, targetName, resources) {
|
|
81
79
|
if (!TARGET_TYPES[type]) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deleteExperiment =
|
|
3
|
+
exports.deleteExperiment = deleteExperiment;
|
|
4
4
|
const clc = require("colorette");
|
|
5
5
|
const api_1 = require("../api");
|
|
6
6
|
const apiv2_1 = require("../apiv2");
|
|
@@ -29,4 +29,3 @@ async function deleteExperiment(projectId, namespace, experimentId) {
|
|
|
29
29
|
throw new error_1.FirebaseError(`Failed to delete Remote Config experiment with ID ${experimentId} for project ${projectId}. Error: ${(0, error_1.getErrMsg)(err)}`, { original: error });
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
exports.deleteExperiment = deleteExperiment;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deleteRollout =
|
|
3
|
+
exports.deleteRollout = deleteRollout;
|
|
4
4
|
const api_1 = require("../api");
|
|
5
5
|
const apiv2_1 = require("../apiv2");
|
|
6
6
|
const error_1 = require("../error");
|
|
@@ -30,4 +30,3 @@ async function deleteRollout(projectId, namespace, rolloutId) {
|
|
|
30
30
|
throw new error_1.FirebaseError(`Failed to delete Remote Config rollout with ID ${rolloutId} for project ${projectId}. Error: ${errorMessage}`, { original: originalError });
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
exports.deleteRollout = deleteRollout;
|
package/lib/remoteconfig/get.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseTemplateForTable = parseTemplateForTable;
|
|
4
|
+
exports.getTemplate = getTemplate;
|
|
4
5
|
const api_1 = require("../api");
|
|
5
6
|
const apiv2_1 = require("../apiv2");
|
|
6
7
|
const logger_1 = require("../logger");
|
|
@@ -26,7 +27,6 @@ function parseTemplateForTable(templateItems) {
|
|
|
26
27
|
}
|
|
27
28
|
return outputStr;
|
|
28
29
|
}
|
|
29
|
-
exports.parseTemplateForTable = parseTemplateForTable;
|
|
30
30
|
async function getTemplate(projectId, versionNumber) {
|
|
31
31
|
try {
|
|
32
32
|
const params = new URLSearchParams();
|
|
@@ -46,4 +46,3 @@ async function getTemplate(projectId, versionNumber) {
|
|
|
46
46
|
throw new error_1.FirebaseError(`Failed to get Firebase Remote Config template for project ${projectId}. `, { original: err });
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
exports.getTemplate = getTemplate;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseExperiment = void 0;
|
|
4
|
+
exports.getExperiment = getExperiment;
|
|
4
5
|
const Table = require("cli-table3");
|
|
5
6
|
const util = require("util");
|
|
6
7
|
const api_1 = require("../api");
|
|
@@ -49,4 +50,3 @@ async function getExperiment(projectId, namespace, experimentId) {
|
|
|
49
50
|
throw new error_1.FirebaseError(`Failed to get Remote Config experiment with ID ${experimentId} for project ${projectId}. Error: ${error.message}`, { original: error });
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
|
-
exports.getExperiment = getExperiment;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseRolloutIntoTable = void 0;
|
|
4
|
+
exports.getRollout = getRollout;
|
|
4
5
|
const api_1 = require("../api");
|
|
5
6
|
const apiv2_1 = require("../apiv2");
|
|
6
7
|
const logger_1 = require("../logger");
|
|
@@ -40,4 +41,3 @@ async function getRollout(projectId, namespace, rolloutId) {
|
|
|
40
41
|
throw new error_1.FirebaseError(`Failed to get Remote Config Rollout with ID ${rolloutId} for project ${projectId}. Error: ${error.message}`, { original: error });
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
|
-
exports.getRollout = getRollout;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseExperimentList = void 0;
|
|
4
|
+
exports.listExperiments = listExperiments;
|
|
4
5
|
const Table = require("cli-table3");
|
|
5
6
|
const api_1 = require("../api");
|
|
6
7
|
const apiv2_1 = require("../apiv2");
|
|
@@ -69,4 +70,3 @@ async function listExperiments(projectId, namespace, listExperimentOptions) {
|
|
|
69
70
|
throw new error_1.FirebaseError(`Failed to get Remote Config experiments for project ${projectId}. Error: ${error.message}`, { original: error });
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
|
-
exports.listExperiments = listExperiments;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseRolloutList = void 0;
|
|
4
|
+
exports.listRollouts = listRollouts;
|
|
4
5
|
const api_1 = require("../api");
|
|
5
6
|
const apiv2_1 = require("../apiv2");
|
|
6
7
|
const logger_1 = require("../logger");
|
|
@@ -69,4 +70,3 @@ async function listRollouts(projectId, namespace, listRolloutOptions) {
|
|
|
69
70
|
throw new error_1.FirebaseError(`Failed to get Remote Config rollouts for project ${projectId}. Error: ${error.message}`, { original: error });
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
|
-
exports.listRollouts = listRollouts;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.publishTemplate =
|
|
3
|
+
exports.publishTemplate = publishTemplate;
|
|
4
4
|
const api_1 = require("../api");
|
|
5
5
|
const apiv2_1 = require("../apiv2");
|
|
6
6
|
const logger_1 = require("../logger");
|
|
@@ -36,4 +36,3 @@ async function publishTemplate(projectId, template, options) {
|
|
|
36
36
|
throw new error_1.FirebaseError(`Failed to publish Firebase Remote Config template for project ${projectId}. `, { original: err });
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
exports.publishTemplate = publishTemplate;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.rollbackTemplate =
|
|
3
|
+
exports.rollbackTemplate = rollbackTemplate;
|
|
4
4
|
const api_1 = require("../api");
|
|
5
5
|
const apiv2_1 = require("../apiv2");
|
|
6
6
|
const apiClient = new apiv2_1.Client({
|
|
@@ -19,4 +19,3 @@ async function rollbackTemplate(projectId, versionNumber) {
|
|
|
19
19
|
});
|
|
20
20
|
return res.body;
|
|
21
21
|
}
|
|
22
|
-
exports.rollbackTemplate = rollbackTemplate;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getVersions =
|
|
3
|
+
exports.getVersions = getVersions;
|
|
4
4
|
const api_1 = require("../api");
|
|
5
5
|
const apiv2_1 = require("../apiv2");
|
|
6
6
|
const error_1 = require("../error");
|
|
@@ -30,4 +30,3 @@ async function getVersions(projectId, maxResults = 10) {
|
|
|
30
30
|
throw new error_1.FirebaseError(`Failed to get Remote Config template versions for Firebase project ${projectId}. `, { original: err });
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
exports.getVersions = getVersions;
|
package/lib/requireAuth.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.refreshAuth = refreshAuth;
|
|
4
|
+
exports.requireAuth = requireAuth;
|
|
4
5
|
const google_auth_library_1 = require("google-auth-library");
|
|
5
6
|
const clc = require("colorette");
|
|
6
7
|
const api = require("./api");
|
|
@@ -23,7 +24,6 @@ function getAuthClient(config) {
|
|
|
23
24
|
return authClient;
|
|
24
25
|
}
|
|
25
26
|
async function autoAuth(options, authScopes) {
|
|
26
|
-
var _a;
|
|
27
27
|
const client = getAuthClient({ scopes: authScopes, projectId: options.project });
|
|
28
28
|
const token = await client.getAccessToken();
|
|
29
29
|
token !== null ? apiv2.setAccessToken(token) : false;
|
|
@@ -42,7 +42,7 @@ async function autoAuth(options, authScopes) {
|
|
|
42
42
|
user: { email: clientEmail },
|
|
43
43
|
tokens: {
|
|
44
44
|
access_token: token,
|
|
45
|
-
expires_at:
|
|
45
|
+
expires_at: client.cachedCredential?.credentials.expiry_date,
|
|
46
46
|
},
|
|
47
47
|
};
|
|
48
48
|
(0, auth_1.setActiveAccount)(options, activeAccount);
|
|
@@ -58,7 +58,6 @@ async function refreshAuth() {
|
|
|
58
58
|
await requireAuth(lastOptions);
|
|
59
59
|
return lastOptions.tokens;
|
|
60
60
|
}
|
|
61
|
-
exports.refreshAuth = refreshAuth;
|
|
62
61
|
async function requireAuth(options, skipAutoAuth = false) {
|
|
63
62
|
lastOptions = options;
|
|
64
63
|
const requiredScopes = [scopes.CLOUD_PLATFORM];
|
|
@@ -80,7 +79,7 @@ async function requireAuth(options, skipAutoAuth = false) {
|
|
|
80
79
|
utils.logWarning("Authenticating with `FIREBASE_TOKEN` is deprecated and will be removed in a future major version of `firebase-tools`. " +
|
|
81
80
|
"Instead, use a service account key with `GOOGLE_APPLICATION_CREDENTIALS`: https://cloud.google.com/docs/authentication/getting-started");
|
|
82
81
|
}
|
|
83
|
-
else if (user && (!(0, auth_1.isExpired)(tokens) ||
|
|
82
|
+
else if (user && (!(0, auth_1.isExpired)(tokens) || tokens?.refresh_token)) {
|
|
84
83
|
logger_1.logger.debug(`> authorizing via signed-in user (${user.email})`);
|
|
85
84
|
}
|
|
86
85
|
else if (skipAutoAuth) {
|
|
@@ -105,4 +104,3 @@ async function requireAuth(options, skipAutoAuth = false) {
|
|
|
105
104
|
(0, auth_1.setActiveAccount)(options, { user, tokens });
|
|
106
105
|
return user.email;
|
|
107
106
|
}
|
|
108
|
-
exports.requireAuth = requireAuth;
|
package/lib/requireConfig.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.requireConfig =
|
|
3
|
+
exports.requireConfig = requireConfig;
|
|
4
4
|
const error_1 = require("./error");
|
|
5
5
|
async function requireConfig(options) {
|
|
6
|
-
return new Promise((resolve, reject) =>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
: reject((_a = options.configError) !== null && _a !== void 0 ? _a : new error_1.FirebaseError("Not in a Firebase project directory (could not locate firebase.json)"));
|
|
11
|
-
});
|
|
6
|
+
return new Promise((resolve, reject) => options.config
|
|
7
|
+
? resolve()
|
|
8
|
+
: reject(options.configError ??
|
|
9
|
+
new error_1.FirebaseError("Not in a Firebase project directory (could not locate firebase.json)")));
|
|
12
10
|
}
|
|
13
|
-
exports.requireConfig = requireConfig;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.MISSING_DEFAULT_INSTANCE_ERROR_MESSAGE = void 0;
|
|
4
|
+
exports.requireDatabaseInstance = requireDatabaseInstance;
|
|
4
5
|
const clc = require("colorette");
|
|
5
6
|
const error_1 = require("./error");
|
|
6
7
|
const getDefaultDatabaseInstance_1 = require("./getDefaultDatabaseInstance");
|
|
@@ -23,4 +24,3 @@ async function requireDatabaseInstance(options) {
|
|
|
23
24
|
}
|
|
24
25
|
options.instance = instance;
|
|
25
26
|
}
|
|
26
|
-
exports.requireDatabaseInstance = requireDatabaseInstance;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.requireHostingSite =
|
|
3
|
+
exports.requireHostingSite = requireHostingSite;
|
|
4
4
|
const getDefaultHostingSite_1 = require("./getDefaultHostingSite");
|
|
5
5
|
async function requireHostingSite(options) {
|
|
6
6
|
if (options.site) {
|
|
@@ -9,4 +9,3 @@ async function requireHostingSite(options) {
|
|
|
9
9
|
const site = await (0, getDefaultHostingSite_1.getDefaultHostingSite)(options);
|
|
10
10
|
options.site = site;
|
|
11
11
|
}
|
|
12
|
-
exports.requireHostingSite = requireHostingSite;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = requireInteractive;
|
|
3
4
|
const error_1 = require("./error");
|
|
4
5
|
function requireInteractive(options) {
|
|
5
6
|
if (options.nonInteractive) {
|
|
@@ -9,4 +10,3 @@ function requireInteractive(options) {
|
|
|
9
10
|
}
|
|
10
11
|
return Promise.resolve();
|
|
11
12
|
}
|
|
12
|
-
exports.default = requireInteractive;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.requirePermissions =
|
|
3
|
+
exports.requirePermissions = requirePermissions;
|
|
4
4
|
const colorette_1 = require("colorette");
|
|
5
5
|
const projectUtils_1 = require("./projectUtils");
|
|
6
6
|
const requireAuth_1 = require("./requireAuth");
|
|
@@ -27,4 +27,3 @@ async function requirePermissions(options, permissions = []) {
|
|
|
27
27
|
return;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
exports.requirePermissions = requirePermissions;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.requireTosAcceptance =
|
|
3
|
+
exports.requireTosAcceptance = requireTosAcceptance;
|
|
4
4
|
const error_1 = require("./error");
|
|
5
5
|
const firedata_1 = require("./gcp/firedata");
|
|
6
6
|
const api_1 = require("./api");
|
|
@@ -12,7 +12,6 @@ const consoleLandingPage = new Map([
|
|
|
12
12
|
function requireTosAcceptance(tosId) {
|
|
13
13
|
return () => requireTos(tosId);
|
|
14
14
|
}
|
|
15
|
-
exports.requireTosAcceptance = requireTosAcceptance;
|
|
16
15
|
async function requireTos(tosId) {
|
|
17
16
|
if (!(0, auth_1.loggedIn)()) {
|
|
18
17
|
return;
|
package/lib/responseToError.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.responseToError =
|
|
3
|
+
exports.responseToError = responseToError;
|
|
4
4
|
const _ = require("lodash");
|
|
5
5
|
const error_1 = require("./error");
|
|
6
6
|
function responseToError(response, body, url) {
|
|
@@ -59,4 +59,3 @@ function responseToError(response, body, url) {
|
|
|
59
59
|
status: statusCode,
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
|
-
exports.responseToError = responseToError;
|
package/lib/rtdb.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.updateRules = updateRules;
|
|
4
|
+
exports.updateRulesWithClient = updateRulesWithClient;
|
|
4
5
|
const apiv2_1 = require("./apiv2");
|
|
5
6
|
const database_1 = require("./management/database");
|
|
6
7
|
const error_1 = require("./error");
|
|
@@ -16,7 +17,6 @@ async function updateRules(projectId, instance, src, options = {}) {
|
|
|
16
17
|
const client = new apiv2_1.Client({ urlPrefix: origin });
|
|
17
18
|
return updateRulesWithClient(client, src, options);
|
|
18
19
|
}
|
|
19
|
-
exports.updateRules = updateRules;
|
|
20
20
|
async function updateRulesWithClient(client, src, options = {}) {
|
|
21
21
|
const queryParams = {};
|
|
22
22
|
if (options.dryRun) {
|
|
@@ -36,4 +36,3 @@ async function updateRulesWithClient(client, src, options = {}) {
|
|
|
36
36
|
throw new error_1.FirebaseError("Unexpected error while deploying database rules.", { exit: 2 });
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
exports.updateRulesWithClient = updateRulesWithClient;
|
package/lib/rulesDeploy.js
CHANGED
|
@@ -20,7 +20,7 @@ var RulesetServiceType;
|
|
|
20
20
|
(function (RulesetServiceType) {
|
|
21
21
|
RulesetServiceType["CLOUD_FIRESTORE"] = "cloud.firestore";
|
|
22
22
|
RulesetServiceType["FIREBASE_STORAGE"] = "firebase.storage";
|
|
23
|
-
})(RulesetServiceType
|
|
23
|
+
})(RulesetServiceType || (exports.RulesetServiceType = RulesetServiceType = {}));
|
|
24
24
|
const RulesetType = {
|
|
25
25
|
[RulesetServiceType.CLOUD_FIRESTORE]: "firestore",
|
|
26
26
|
[RulesetServiceType.FIREBASE_STORAGE]: "storage",
|
|
@@ -59,7 +59,7 @@ class RulesDeploy {
|
|
|
59
59
|
return { latestName, latestContent };
|
|
60
60
|
}
|
|
61
61
|
async checkStorageRulesIamPermissions(rulesContent) {
|
|
62
|
-
if (
|
|
62
|
+
if (rulesContent?.match(CROSS_SERVICE_FUNCTIONS) === null) {
|
|
63
63
|
return;
|
|
64
64
|
}
|
|
65
65
|
if (this.options.nonInteractive) {
|
|
@@ -87,7 +87,6 @@ class RulesDeploy {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
async createRulesets(service) {
|
|
90
|
-
var _a;
|
|
91
90
|
const createdRulesetNames = [];
|
|
92
91
|
const { latestName: latestRulesetName, latestContent: latestRulesetContent } = await this.getCurrentRules(service);
|
|
93
92
|
const newRulesetsByFilename = new Map();
|
|
@@ -98,7 +97,7 @@ class RulesDeploy {
|
|
|
98
97
|
continue;
|
|
99
98
|
}
|
|
100
99
|
if (service === RulesetServiceType.FIREBASE_STORAGE) {
|
|
101
|
-
await this.checkStorageRulesIamPermissions(
|
|
100
|
+
await this.checkStorageRulesIamPermissions(files[0]?.content);
|
|
102
101
|
}
|
|
103
102
|
utils.logLabeledBullet(RulesetType[this.type], `uploading rules ${(0, colorette_1.bold)(filename)}...`);
|
|
104
103
|
newRulesetsByFilename.set(filename, gcp.rules.createRuleset(this.options.project, files));
|
package/lib/serve/functions.js
CHANGED
|
@@ -33,7 +33,15 @@ class FunctionsServer {
|
|
|
33
33
|
}
|
|
34
34
|
this.backends = backends;
|
|
35
35
|
const account = (0, auth_1.getProjectDefaultAccount)(options.config.projectDir);
|
|
36
|
-
const args =
|
|
36
|
+
const args = {
|
|
37
|
+
projectId,
|
|
38
|
+
projectDir: options.config.projectDir,
|
|
39
|
+
emulatableBackends: this.backends,
|
|
40
|
+
projectAlias: options.projectAlias,
|
|
41
|
+
account,
|
|
42
|
+
...partialArgs,
|
|
43
|
+
debugPort: (0, commandUtils_1.parseInspectionPort)(options),
|
|
44
|
+
};
|
|
37
45
|
if (options.host) {
|
|
38
46
|
utils.assertIsStringOrUndefined(options.host);
|
|
39
47
|
args.host = options.host;
|