firebase-tools 15.0.0 → 15.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +33 -36
- 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 +47 -10
- 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 +31 -31
- 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 +19 -21
- 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 +47 -45
- 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 +7 -4
- 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 +67 -50
- 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,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;
|
package/lib/serve/hosting.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.stop = stop;
|
|
4
|
+
exports.start = start;
|
|
5
|
+
exports.connect = connect;
|
|
4
6
|
const morgan = require("morgan");
|
|
5
7
|
const net_1 = require("net");
|
|
6
8
|
const superstatic_1 = require("superstatic");
|
|
@@ -72,14 +74,13 @@ function startServer(options, config, port, init) {
|
|
|
72
74
|
function stop() {
|
|
73
75
|
return destroyServer ? destroyServer() : Promise.resolve();
|
|
74
76
|
}
|
|
75
|
-
exports.stop = stop;
|
|
76
77
|
async function start(options) {
|
|
77
78
|
const init = await (0, implicitInit_1.implicitInit)(options);
|
|
78
79
|
if (!options.site) {
|
|
79
80
|
try {
|
|
80
81
|
await (0, requireHostingSite_1.requireHostingSite)(options);
|
|
81
82
|
}
|
|
82
|
-
catch
|
|
83
|
+
catch {
|
|
83
84
|
if (init.json) {
|
|
84
85
|
options.site = JSON.parse(init.json).projectId;
|
|
85
86
|
}
|
|
@@ -101,11 +102,9 @@ async function start(options) {
|
|
|
101
102
|
assignedPorts.delete(5001);
|
|
102
103
|
return { ports: Array.from(assignedPorts) };
|
|
103
104
|
}
|
|
104
|
-
exports.start = start;
|
|
105
105
|
async function connect() {
|
|
106
106
|
await Promise.resolve();
|
|
107
107
|
}
|
|
108
|
-
exports.connect = connect;
|
|
109
108
|
function availablePort(host, port) {
|
|
110
109
|
return (0, portUtils_1.checkListenable)({
|
|
111
110
|
address: host,
|
package/lib/serve/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.serve =
|
|
3
|
+
exports.serve = serve;
|
|
4
4
|
const logger_1 = require("../logger");
|
|
5
5
|
const frameworks_1 = require("../frameworks");
|
|
6
6
|
const experiments = require("../experiments");
|
|
@@ -50,4 +50,3 @@ async function serve(options) {
|
|
|
50
50
|
});
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
|
-
exports.serve = serve;
|
package/lib/shortenUrl.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.shortenUrl =
|
|
3
|
+
exports.shortenUrl = shortenUrl;
|
|
4
4
|
const logger_1 = require("./logger");
|
|
5
5
|
const apiv2_1 = require("./apiv2");
|
|
6
6
|
const api_1 = require("./api");
|
|
@@ -26,4 +26,3 @@ async function shortenUrl(url, guessable = false) {
|
|
|
26
26
|
return url;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
exports.shortenUrl = shortenUrl;
|
package/lib/templates.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.absoluteTemplateFilePath = absoluteTemplateFilePath;
|
|
4
|
+
exports.readTemplateSync = readTemplateSync;
|
|
5
|
+
exports.readTemplate = readTemplate;
|
|
4
6
|
const fs_1 = require("fs");
|
|
5
7
|
const promises_1 = require("fs/promises");
|
|
6
8
|
const path_1 = require("path");
|
|
@@ -12,12 +14,9 @@ function absoluteTemplateFilePath(relPath) {
|
|
|
12
14
|
}
|
|
13
15
|
return (0, path_1.resolve)(__dirname, "../templates", relPath);
|
|
14
16
|
}
|
|
15
|
-
exports.absoluteTemplateFilePath = absoluteTemplateFilePath;
|
|
16
17
|
function readTemplateSync(relPath) {
|
|
17
18
|
return (0, fs_1.readFileSync)(absoluteTemplateFilePath(relPath), TEMPLATE_ENCODING);
|
|
18
19
|
}
|
|
19
|
-
exports.readTemplateSync = readTemplateSync;
|
|
20
20
|
function readTemplate(relPath) {
|
|
21
21
|
return (0, promises_1.readFile)(absoluteTemplateFilePath(relPath), TEMPLATE_ENCODING);
|
|
22
22
|
}
|
|
23
|
-
exports.readTemplate = readTemplate;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Throttler =
|
|
3
|
+
exports.Throttler = void 0;
|
|
4
|
+
exports.backoff = backoff;
|
|
5
|
+
exports.timeToWait = timeToWait;
|
|
4
6
|
const logger_1 = require("../logger");
|
|
5
7
|
const retries_exhausted_error_1 = require("./errors/retries-exhausted-error");
|
|
6
8
|
const timeout_error_1 = require("./errors/timeout-error");
|
|
@@ -9,11 +11,9 @@ function backoff(retryNumber, delay, maxDelay) {
|
|
|
9
11
|
setTimeout(resolve, timeToWait(retryNumber, delay, maxDelay));
|
|
10
12
|
});
|
|
11
13
|
}
|
|
12
|
-
exports.backoff = backoff;
|
|
13
14
|
function timeToWait(retryNumber, delay, maxDelay) {
|
|
14
15
|
return Math.min(delay * Math.pow(2, retryNumber), maxDelay);
|
|
15
16
|
}
|
|
16
|
-
exports.timeToWait = timeToWait;
|
|
17
17
|
function DEFAULT_HANDLER(task) {
|
|
18
18
|
return task();
|
|
19
19
|
}
|
package/lib/timeout.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.timeoutFallback = timeoutFallback;
|
|
4
|
+
exports.timeoutError = timeoutError;
|
|
4
5
|
async function timeoutFallback(promise, value, timeoutMillis = 2000) {
|
|
5
6
|
return Promise.race([
|
|
6
7
|
promise,
|
|
7
8
|
new Promise((resolve) => setTimeout(() => resolve(value), timeoutMillis)),
|
|
8
9
|
]);
|
|
9
10
|
}
|
|
10
|
-
exports.timeoutFallback = timeoutFallback;
|
|
11
11
|
async function timeoutError(promise, error, timeoutMillis = 5000) {
|
|
12
12
|
if (typeof error === "string")
|
|
13
13
|
error = new Error(error);
|
|
@@ -18,4 +18,3 @@ async function timeoutError(promise, error, timeoutMillis = 5000) {
|
|
|
18
18
|
}),
|
|
19
19
|
]);
|
|
20
20
|
}
|
|
21
|
-
exports.timeoutError = timeoutError;
|
package/lib/track.js
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.GA4_PROPERTIES = void 0;
|
|
4
|
+
exports.usageEnabled = usageEnabled;
|
|
5
|
+
exports.trackGA4 = trackGA4;
|
|
6
|
+
exports.trackEmulator = trackEmulator;
|
|
7
|
+
exports.trackVSCode = trackVSCode;
|
|
8
|
+
exports.emulatorSession = emulatorSession;
|
|
9
|
+
exports.vscodeSession = vscodeSession;
|
|
10
|
+
exports.cliSession = cliSession;
|
|
4
11
|
const node_fetch_1 = require("node-fetch");
|
|
5
12
|
const uuid_1 = require("uuid");
|
|
6
13
|
const auth_1 = require("./auth");
|
|
@@ -43,7 +50,6 @@ exports.GA4_PROPERTIES = {
|
|
|
43
50
|
function usageEnabled() {
|
|
44
51
|
return ((!!process.env.IS_FIREBASE_CLI || !!process.env.IS_FIREBASE_MCP) && !!configstore_1.configstore.get("usage"));
|
|
45
52
|
}
|
|
46
|
-
exports.usageEnabled = usageEnabled;
|
|
47
53
|
const GA4_USER_PROPS = {
|
|
48
54
|
node_platform: {
|
|
49
55
|
value: process.platform,
|
|
@@ -77,7 +83,6 @@ async function trackGA4(eventName, params, duration = 1) {
|
|
|
77
83
|
duration,
|
|
78
84
|
});
|
|
79
85
|
}
|
|
80
|
-
exports.trackGA4 = trackGA4;
|
|
81
86
|
async function trackEmulator(eventName, params) {
|
|
82
87
|
const session = emulatorSession();
|
|
83
88
|
if (!session) {
|
|
@@ -94,7 +99,6 @@ async function trackEmulator(eventName, params) {
|
|
|
94
99
|
duration,
|
|
95
100
|
});
|
|
96
101
|
}
|
|
97
|
-
exports.trackEmulator = trackEmulator;
|
|
98
102
|
async function trackVSCode(eventName, params) {
|
|
99
103
|
const session = vscodeSession();
|
|
100
104
|
if (!session) {
|
|
@@ -112,24 +116,32 @@ async function trackVSCode(eventName, params) {
|
|
|
112
116
|
duration,
|
|
113
117
|
});
|
|
114
118
|
}
|
|
115
|
-
exports.trackVSCode = trackVSCode;
|
|
116
119
|
async function _ga4Track(args) {
|
|
117
120
|
const { session, apiSecret, eventName, params, duration } = args;
|
|
118
|
-
session.commandName =
|
|
121
|
+
session.commandName = params?.command_name || session.commandName;
|
|
119
122
|
const search = `?api_secret=${apiSecret}&measurement_id=${session.measurementId}`;
|
|
120
123
|
const validate = session.validateOnly ? "debug/" : "";
|
|
121
124
|
const url = `https://www.google-analytics.com/${validate}mp/collect${search}`;
|
|
122
125
|
const body = {
|
|
123
126
|
timestamp_micros: `${Date.now()}000`,
|
|
124
127
|
client_id: session.clientId,
|
|
125
|
-
user_properties:
|
|
128
|
+
user_properties: {
|
|
129
|
+
...GA4_USER_PROPS,
|
|
130
|
+
java_major_version: session.javaMajorVersion
|
|
126
131
|
? { value: session.javaMajorVersion }
|
|
127
|
-
: undefined
|
|
132
|
+
: undefined,
|
|
133
|
+
},
|
|
128
134
|
validationBehavior: session.validateOnly ? "ENFORCE_RECOMMENDATIONS" : undefined,
|
|
129
135
|
events: [
|
|
130
136
|
{
|
|
131
137
|
name: eventName,
|
|
132
|
-
params:
|
|
138
|
+
params: {
|
|
139
|
+
session_id: session.sessionId,
|
|
140
|
+
engagement_time_msec: (duration ?? 0).toFixed(3).replace(".", "").replace(/^0+/, ""),
|
|
141
|
+
debug_mode: session.debugMode ? true : undefined,
|
|
142
|
+
command_name: session.commandName,
|
|
143
|
+
...params,
|
|
144
|
+
},
|
|
133
145
|
},
|
|
134
146
|
],
|
|
135
147
|
};
|
|
@@ -162,15 +174,12 @@ async function _ga4Track(args) {
|
|
|
162
174
|
function emulatorSession() {
|
|
163
175
|
return session("emulator");
|
|
164
176
|
}
|
|
165
|
-
exports.emulatorSession = emulatorSession;
|
|
166
177
|
function vscodeSession() {
|
|
167
178
|
return session("vscode");
|
|
168
179
|
}
|
|
169
|
-
exports.vscodeSession = vscodeSession;
|
|
170
180
|
function cliSession() {
|
|
171
181
|
return session("cli");
|
|
172
182
|
}
|
|
173
|
-
exports.cliSession = cliSession;
|
|
174
183
|
function session(propertyName) {
|
|
175
184
|
const validateOnly = !!process.env.FIREBASE_CLI_MP_VALIDATE;
|
|
176
185
|
if (!usageEnabled() && propertyName !== "vscode") {
|
|
@@ -199,13 +208,13 @@ function session(propertyName) {
|
|
|
199
208
|
}
|
|
200
209
|
function isDebugMode() {
|
|
201
210
|
const account = (0, auth_1.getGlobalDefaultAccount)();
|
|
202
|
-
if (account
|
|
211
|
+
if (account?.user.email.endsWith("@google.com")) {
|
|
203
212
|
try {
|
|
204
213
|
require("../tsconfig.json");
|
|
205
214
|
logger_1.logger.debug(`Using Google Analytics in DEBUG mode. Emulators (+ UI) events will be shown in GA Debug View only.`);
|
|
206
215
|
return true;
|
|
207
216
|
}
|
|
208
|
-
catch
|
|
217
|
+
catch {
|
|
209
218
|
}
|
|
210
219
|
}
|
|
211
220
|
return false;
|