firebase-tools 15.1.0 → 15.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/accountExporter.js +3 -5
- package/lib/accountImporter.js +4 -5
- package/lib/api.js +3 -3
- package/lib/apiv2.js +9 -13
- package/lib/appUtils.js +19 -21
- package/lib/appdistribution/client.js +4 -8
- package/lib/appdistribution/distribution.js +4 -4
- package/lib/appdistribution/options-parser-util.js +8 -9
- package/lib/appdistribution/types.js +2 -2
- package/lib/appdistribution/yaml_helper.js +33 -17
- package/lib/apphosting/app.js +8 -13
- package/lib/apphosting/backend.js +34 -24
- package/lib/apphosting/config.js +14 -14
- package/lib/apphosting/githubConnections.js +38 -35
- package/lib/apphosting/localbuilds.js +4 -6
- package/lib/apphosting/repo.js +24 -20
- package/lib/apphosting/rollout.js +12 -5
- package/lib/apphosting/secrets/dialogs.js +9 -9
- package/lib/apphosting/secrets/index.js +9 -11
- package/lib/apphosting/utils.js +2 -3
- package/lib/apphosting/yaml.js +12 -11
- package/lib/apptesting/ensureProjectConfigured.js +1 -2
- package/lib/apptesting/invokeTests.js +2 -3
- package/lib/apptesting/parseTestFiles.js +5 -6
- package/lib/apptesting/types.js +2 -2
- package/lib/archiveDirectory.js +1 -2
- package/lib/auth.js +36 -40
- package/lib/bin/cli.js +2 -3
- package/lib/bin/mcp.js +1 -2
- package/lib/checkMinRequiredVersion.js +1 -2
- package/lib/checkValidTargetFilters.js +1 -2
- package/lib/command.js +6 -9
- package/lib/commands/appdistribution-testers-list.js +2 -3
- package/lib/commands/apphosting-backends-list.js +4 -6
- package/lib/commands/apphosting-builds-create.js +2 -3
- package/lib/commands/apphosting-builds-get.js +1 -2
- package/lib/commands/apphosting-rollouts-list.js +1 -2
- package/lib/commands/apps-init.js +1 -1
- package/lib/commands/{apptesting-execute.js → apptesting-wata.js} +3 -4
- package/lib/commands/crashlytics-symbols-upload.js +2 -2
- package/lib/commands/dataconnect-execute.js +4 -4
- package/lib/commands/dataconnect-sdk-generate.js +5 -6
- package/lib/commands/dataconnect-services-list.js +7 -8
- package/lib/commands/dataconnect-sql-diff.js +1 -2
- package/lib/commands/dataconnect-sql-migrate.js +4 -3
- package/lib/commands/dataconnect-sql-setup.js +2 -2
- package/lib/commands/dataconnect-sql-shell.js +5 -1
- package/lib/commands/emulators-start.js +1 -2
- package/lib/commands/ext-configure.js +6 -4
- package/lib/commands/ext-dev-list.js +2 -3
- package/lib/commands/ext-dev-upload.js +2 -2
- package/lib/commands/ext-export.js +1 -1
- package/lib/commands/ext-info.js +2 -3
- package/lib/commands/ext-install.js +5 -7
- package/lib/commands/firestore-backups-list.js +1 -2
- package/lib/commands/firestore-backups-schedules-list.js +1 -2
- package/lib/commands/firestore-indexes-list.js +1 -2
- package/lib/commands/firestore-utils.js +1 -2
- package/lib/commands/functions-artifacts-setpolicy.js +1 -2
- package/lib/commands/functions-config-export.js +2 -3
- package/lib/commands/hosting-channel-deploy.js +2 -2
- package/lib/commands/hosting-clone.js +2 -3
- package/lib/commands/hosting-sites-create.js +1 -1
- package/lib/commands/index.js +2 -3
- package/lib/commands/init.js +4 -5
- package/lib/commands/internaltesting-functions-discover.js +1 -1
- package/lib/commands/login.js +4 -5
- package/lib/commands/logout.js +3 -3
- package/lib/commands/projects-create.js +1 -1
- package/lib/commands/remoteconfig-experiments-list.js +2 -3
- package/lib/commands/remoteconfig-get.js +1 -1
- package/lib/commands/remoteconfig-rollback.js +1 -2
- package/lib/commands/remoteconfig-rollouts-list.js +2 -3
- package/lib/commands/remoteconfig-versions-list.js +3 -4
- package/lib/commands/use.js +3 -3
- package/lib/config.js +4 -5
- package/lib/crashlytics/buildToolsJarHelper.js +3 -5
- package/lib/crashlytics/events.js +4 -7
- package/lib/crashlytics/filters.js +10 -12
- package/lib/crashlytics/issues.js +2 -3
- package/lib/crashlytics/notes.js +3 -4
- package/lib/crashlytics/reports.js +21 -15
- package/lib/crashlytics/types.js +7 -7
- package/lib/crashlytics/utils.js +4 -4
- package/lib/database/api.js +2 -3
- package/lib/database/import.js +4 -4
- package/lib/database/metadata.js +5 -6
- package/lib/database/rulesConfig.js +2 -3
- package/lib/dataconnect/build.js +10 -13
- package/lib/dataconnect/checkIam.js +1 -2
- package/lib/dataconnect/client.js +15 -18
- package/lib/dataconnect/dataplaneClient.js +6 -6
- package/lib/dataconnect/ensureApis.js +2 -3
- package/lib/dataconnect/errors.js +8 -11
- package/lib/dataconnect/filters.js +2 -3
- package/lib/dataconnect/freeTrial.js +3 -4
- package/lib/dataconnect/graphqlError.js +5 -8
- package/lib/dataconnect/load.js +10 -11
- package/lib/dataconnect/names.js +14 -18
- package/lib/dataconnect/prompts.js +1 -2
- package/lib/dataconnect/provisionCloudSql.js +13 -17
- package/lib/dataconnect/schemaMigration.js +60 -27
- package/lib/dataconnect/types.js +10 -12
- package/lib/dataconnect/webhook.js +3 -3
- package/lib/defaultCredentials.js +3 -4
- package/lib/deploy/apphosting/deploy.js +2 -3
- package/lib/deploy/apphosting/prepare.js +3 -5
- package/lib/deploy/apphosting/release.js +1 -1
- package/lib/deploy/apphosting/util.js +1 -2
- package/lib/deploy/database/deploy.js +1 -2
- package/lib/deploy/database/prepare.js +1 -2
- package/lib/deploy/database/release.js +1 -2
- package/lib/deploy/dataconnect/context.js +15 -4
- package/lib/deploy/dataconnect/deploy.js +5 -6
- package/lib/deploy/dataconnect/prepare.js +7 -9
- package/lib/deploy/dataconnect/release.js +7 -10
- package/lib/deploy/extensions/deploy.js +7 -9
- package/lib/deploy/extensions/deploymentSummary.js +6 -7
- package/lib/deploy/extensions/planner.js +15 -18
- package/lib/deploy/extensions/prepare.js +9 -11
- package/lib/deploy/extensions/release.js +10 -12
- package/lib/deploy/extensions/secrets.js +8 -11
- package/lib/deploy/extensions/tasks.js +6 -8
- package/lib/deploy/extensions/v2FunctionHelper.js +2 -3
- package/lib/deploy/extensions/validate.js +1 -2
- package/lib/deploy/firestore/deploy.js +3 -5
- package/lib/deploy/firestore/prepare.js +2 -3
- package/lib/deploy/firestore/release.js +3 -4
- package/lib/deploy/functions/backend.js +52 -42
- package/lib/deploy/functions/build.js +41 -15
- package/lib/deploy/functions/cache/applyHash.js +3 -5
- package/lib/deploy/functions/cache/hash.js +4 -5
- package/lib/deploy/functions/cel.js +3 -3
- package/lib/deploy/functions/checkIam.js +8 -8
- package/lib/deploy/functions/containerCleaner.js +10 -6
- package/lib/deploy/functions/deploy.js +6 -8
- package/lib/deploy/functions/ensure.js +6 -9
- package/lib/deploy/functions/functionsDeployHelper.js +10 -11
- package/lib/deploy/functions/params.js +10 -10
- package/lib/deploy/functions/prepare.js +41 -36
- package/lib/deploy/functions/prepareFunctionsUpload.js +24 -10
- package/lib/deploy/functions/pricing.js +3 -3
- package/lib/deploy/functions/prompts.js +7 -10
- package/lib/deploy/functions/release/executor.js +5 -6
- package/lib/deploy/functions/release/fabricator.js +76 -29
- package/lib/deploy/functions/release/index.js +23 -14
- package/lib/deploy/functions/release/planner.js +15 -14
- package/lib/deploy/functions/release/reporter.js +20 -20
- package/lib/deploy/functions/release/sourceTokenScraper.js +4 -5
- package/lib/deploy/functions/remoteSource.js +3 -4
- package/lib/deploy/functions/runtimes/discovery/index.js +9 -12
- package/lib/deploy/functions/runtimes/discovery/parsing.js +2 -3
- package/lib/deploy/functions/runtimes/discovery/v1alpha1.js +29 -10
- package/lib/deploy/functions/runtimes/index.js +1 -2
- package/lib/deploy/functions/runtimes/node/index.js +18 -9
- package/lib/deploy/functions/runtimes/node/parseRuntimeAndValidateSDK.js +2 -2
- package/lib/deploy/functions/runtimes/node/validate.js +1 -2
- package/lib/deploy/functions/runtimes/node/versioning.js +6 -7
- package/lib/deploy/functions/runtimes/python/index.js +12 -12
- package/lib/deploy/functions/runtimes/supported/index.js +5 -6
- package/lib/deploy/functions/services/auth.js +49 -36
- package/lib/deploy/functions/services/database.js +1 -2
- package/lib/deploy/functions/services/dataconnect.js +16 -2
- package/lib/deploy/functions/services/firebaseAlerts.js +1 -2
- package/lib/deploy/functions/services/firestore.js +3 -5
- package/lib/deploy/functions/services/index.js +2 -2
- package/lib/deploy/functions/services/remoteConfig.js +1 -2
- package/lib/deploy/functions/services/storage.js +3 -5
- package/lib/deploy/functions/services/testLab.js +1 -2
- package/lib/deploy/functions/triggerRegionHelper.js +1 -2
- package/lib/deploy/functions/validate.js +12 -11
- package/lib/deploy/hosting/convertConfig.js +38 -22
- package/lib/deploy/hosting/deploy.js +4 -7
- package/lib/deploy/hosting/hashcache.js +2 -3
- package/lib/deploy/hosting/prepare.js +14 -14
- package/lib/deploy/hosting/release.js +1 -2
- package/lib/deploy/index.js +7 -8
- package/lib/deploy/lifecycleHooks.js +3 -5
- package/lib/deploy/remoteconfig/deploy.js +1 -1
- package/lib/deploy/remoteconfig/functions.js +5 -6
- package/lib/deploy/remoteconfig/prepare.js +2 -3
- package/lib/deploy/remoteconfig/release.js +2 -2
- package/lib/deploy/storage/deploy.js +1 -1
- package/lib/deploy/storage/prepare.js +1 -1
- package/lib/deploy/storage/release.js +1 -1
- package/lib/deploymentTool.js +5 -6
- package/lib/detectProjectRoot.js +1 -2
- package/lib/downloadUtils.js +2 -3
- package/lib/emulator/adminSdkConfig.js +2 -3
- package/lib/emulator/apphosting/config.js +1 -2
- package/lib/emulator/apphosting/developmentServer.js +3 -3
- package/lib/emulator/apphosting/serve.js +20 -14
- package/lib/emulator/auth/cloudFunctions.js +2 -3
- package/lib/emulator/auth/errors.js +2 -2
- package/lib/emulator/auth/handlers.js +3 -4
- package/lib/emulator/auth/index.js +6 -6
- package/lib/emulator/auth/operations.js +171 -129
- package/lib/emulator/auth/server.js +30 -22
- package/lib/emulator/auth/state.js +26 -36
- package/lib/emulator/auth/utils.js +12 -13
- package/lib/emulator/commandUtils.js +20 -20
- package/lib/emulator/controller.js +32 -29
- package/lib/emulator/databaseEmulator.js +1 -2
- package/lib/emulator/dataconnect/pgliteServer.js +48 -104
- package/lib/emulator/dataconnectEmulator.js +6 -9
- package/lib/emulator/download.js +2 -3
- package/lib/emulator/downloadableEmulatorInfo.json +7 -7
- package/lib/emulator/downloadableEmulators.js +49 -24
- package/lib/emulator/emulatorLogger.js +19 -4
- package/lib/emulator/env.js +6 -8
- package/lib/emulator/eventarcEmulator.js +2 -3
- package/lib/emulator/eventarcEmulatorUtils.js +3 -6
- package/lib/emulator/extensions/postinstall.js +1 -2
- package/lib/emulator/extensions/validation.js +4 -7
- package/lib/emulator/extensionsEmulator.js +6 -9
- package/lib/emulator/functionsEmulator.js +89 -46
- package/lib/emulator/functionsEmulatorRuntime.js +1 -1
- package/lib/emulator/functionsEmulatorShared.js +30 -30
- package/lib/emulator/functionsEmulatorShell.js +4 -6
- package/lib/emulator/functionsEmulatorUtils.js +8 -9
- package/lib/emulator/functionsRuntimeWorker.js +18 -9
- package/lib/emulator/hub.js +41 -34
- package/lib/emulator/hubClient.js +1 -1
- package/lib/emulator/initEmulators.js +2 -3
- package/lib/emulator/loggingEmulator.js +2 -2
- package/lib/emulator/portUtils.js +4 -5
- package/lib/emulator/registry.js +10 -4
- package/lib/emulator/shared/request.js +1 -2
- package/lib/emulator/storage/apis/firebase.js +16 -20
- package/lib/emulator/storage/apis/gcloud.js +6 -9
- package/lib/emulator/storage/apis/shared.js +1 -2
- package/lib/emulator/storage/crc.js +2 -3
- package/lib/emulator/storage/files.js +18 -41
- package/lib/emulator/storage/metadata.js +10 -4
- package/lib/emulator/storage/multipart.js +1 -2
- package/lib/emulator/storage/rfc.js +1 -2
- package/lib/emulator/storage/rules/config.js +1 -2
- package/lib/emulator/storage/rules/manager.js +3 -5
- package/lib/emulator/storage/rules/runtime.js +15 -13
- package/lib/emulator/storage/rules/types.js +2 -2
- package/lib/emulator/storage/rules/utils.js +5 -6
- package/lib/emulator/storage/server.js +1 -2
- package/lib/emulator/storage/upload.js +3 -4
- package/lib/emulator/taskQueue.js +11 -4
- package/lib/emulator/tasksEmulator.js +11 -12
- package/lib/emulator/types.js +6 -6
- package/lib/emulator/ui.js +6 -1
- package/lib/ensureApiEnabled.js +7 -9
- package/lib/env.js +2 -3
- package/lib/error.js +11 -13
- package/lib/errorOut.js +1 -2
- package/lib/experiments.js +15 -18
- package/lib/extensions/askUserForEventsConfig.js +12 -13
- package/lib/extensions/askUserForParam.js +11 -12
- package/lib/extensions/change-log.js +4 -5
- package/lib/extensions/checkProjectBilling.js +1 -2
- package/lib/extensions/diagnose.js +1 -2
- package/lib/extensions/displayExtensionInfo.js +25 -32
- package/lib/extensions/emulator/optionsHelper.js +6 -8
- package/lib/extensions/emulator/specHelper.js +15 -16
- package/lib/extensions/emulator/triggerHelper.js +3 -5
- package/lib/extensions/etags.js +2 -3
- package/lib/extensions/export.js +7 -9
- package/lib/extensions/extensionsApi.js +23 -29
- package/lib/extensions/extensionsHelper.js +52 -80
- package/lib/extensions/listExtensions.js +3 -5
- package/lib/extensions/localHelper.js +5 -5
- package/lib/extensions/manifest.js +15 -16
- package/lib/extensions/metricsUtils.js +3 -4
- package/lib/extensions/paramHelper.js +21 -18
- package/lib/extensions/provisioningHelper.js +17 -21
- package/lib/extensions/publishHelpers.js +1 -2
- package/lib/extensions/publisherApi.js +11 -13
- package/lib/extensions/refs.js +6 -7
- package/lib/extensions/runtimes/common.js +18 -19
- package/lib/extensions/runtimes/node.js +5 -6
- package/lib/extensions/secretsUtils.js +8 -8
- package/lib/extensions/tos.js +7 -8
- package/lib/extensions/types.js +3 -3
- package/lib/extensions/updateHelper.js +6 -7
- package/lib/extensions/utils.js +6 -8
- package/lib/extensions/versionHelper.js +1 -2
- package/lib/extensions/warnings.js +6 -8
- package/lib/fetchMOTD.js +1 -2
- package/lib/fetchWebSetup.js +3 -4
- package/lib/filterTargets.js +1 -2
- package/lib/firebaseConfigValidate.js +2 -3
- package/lib/firestore/api-sort.js +8 -9
- package/lib/firestore/api-types.js +15 -15
- package/lib/firestore/api.js +15 -13
- package/lib/firestore/backupUtils.js +3 -3
- package/lib/firestore/checkDatabaseType.js +1 -2
- package/lib/firestore/delete.js +1 -2
- package/lib/firestore/encodeFirestoreValue.js +1 -2
- package/lib/firestore/fsConfig.js +1 -2
- package/lib/firestore/options.js +1 -1
- package/lib/firestore/util.js +5 -6
- package/lib/firestore/validator.js +4 -5
- package/lib/frameworks/angular/index.js +14 -15
- package/lib/frameworks/angular/utils.js +21 -23
- package/lib/frameworks/astro/index.js +7 -7
- package/lib/frameworks/astro/utils.js +4 -6
- package/lib/frameworks/compose/discover/filesystem.js +3 -3
- package/lib/frameworks/compose/discover/frameworkMatcher.js +4 -5
- package/lib/frameworks/compose/discover/index.js +1 -2
- package/lib/frameworks/compose/discover/runtime/node.js +8 -11
- package/lib/frameworks/compose/driver/docker.js +3 -5
- package/lib/frameworks/compose/driver/hooks.js +2 -2
- package/lib/frameworks/compose/driver/index.js +2 -2
- package/lib/frameworks/compose/driver/local.js +2 -3
- package/lib/frameworks/compose/index.js +5 -7
- package/lib/frameworks/constants.js +3 -3
- package/lib/frameworks/express/index.js +7 -8
- package/lib/frameworks/flutter/index.js +6 -7
- package/lib/frameworks/flutter/utils.js +4 -5
- package/lib/frameworks/index.js +21 -22
- package/lib/frameworks/next/constants.js +5 -2
- package/lib/frameworks/next/index.js +34 -32
- package/lib/frameworks/next/utils.js +40 -39
- package/lib/frameworks/nuxt/index.js +9 -9
- package/lib/frameworks/nuxt/utils.js +4 -6
- package/lib/frameworks/nuxt2/index.js +7 -7
- package/lib/frameworks/sveltekit/index.js +6 -8
- package/lib/frameworks/utils.js +26 -24
- package/lib/frameworks/vite/index.js +8 -9
- package/lib/fsAsync.js +1 -2
- package/lib/fsutils.js +5 -6
- package/lib/functional.js +11 -11
- package/lib/functions/artifacts.js +25 -22
- package/lib/functions/ensureTargeted.js +1 -2
- package/lib/functions/env.js +13 -14
- package/lib/functions/functionslog.js +2 -3
- package/lib/functions/projectConfig.js +29 -33
- package/lib/functions/python.js +10 -4
- package/lib/functions/secrets.js +32 -18
- package/lib/functionsConfig.js +14 -14
- package/lib/functionsConfigClone.js +1 -2
- package/lib/functionsShellCommandAction.js +2 -3
- package/lib/gcp/apphosting.js +43 -28
- package/lib/gcp/apptesting.js +2 -2
- package/lib/gcp/artifactregistry.js +5 -5
- package/lib/gcp/auth.js +11 -13
- package/lib/gcp/cloudbilling.js +4 -5
- package/lib/gcp/cloudbuild.js +10 -11
- package/lib/gcp/cloudfunctions.js +61 -45
- package/lib/gcp/cloudfunctionsv2.js +81 -43
- package/lib/gcp/cloudlogging.js +2 -4
- package/lib/gcp/cloudmonitoring.js +7 -7
- package/lib/gcp/cloudscheduler.js +12 -14
- package/lib/gcp/cloudsql/cloudsqladmin.js +18 -20
- package/lib/gcp/cloudsql/connect.js +14 -9
- package/lib/gcp/cloudsql/fbToolsAuthClient.js +5 -3
- package/lib/gcp/cloudsql/interactive.js +2 -3
- package/lib/gcp/cloudsql/permissions.js +8 -8
- package/lib/gcp/cloudsql/permissionsSetup.js +9 -9
- package/lib/gcp/cloudtasks.js +19 -18
- package/lib/gcp/computeEngine.js +1 -2
- package/lib/gcp/devConnect.js +32 -29
- package/lib/gcp/docker.js +2 -4
- package/lib/gcp/eventarc.js +5 -5
- package/lib/gcp/firedata.js +4 -4
- package/lib/gcp/firestore.js +16 -16
- package/lib/gcp/iam.js +11 -12
- package/lib/gcp/identityPlatform.js +4 -5
- package/lib/gcp/k8s.js +1 -2
- package/lib/gcp/location.js +2 -2
- package/lib/gcp/proto.js +10 -11
- package/lib/gcp/pubsub.js +4 -5
- package/lib/gcp/resourceManager.js +5 -5
- package/lib/gcp/rules.js +13 -14
- package/lib/gcp/run.js +24 -31
- package/lib/gcp/runv2.js +39 -27
- package/lib/gcp/secretManager.js +60 -39
- package/lib/gcp/serviceusage.js +8 -4
- package/lib/gcp/storage.js +22 -20
- package/lib/gemini/fdcExperience.js +5 -5
- package/lib/getDefaultDatabaseInstance.js +2 -4
- package/lib/getDefaultHostingSite.js +3 -4
- package/lib/getProjectNumber.js +1 -2
- package/lib/hosting/api.js +32 -36
- package/lib/hosting/cloudRunProxy.js +2 -3
- package/lib/hosting/config.js +17 -17
- package/lib/hosting/expireUtils.js +3 -3
- package/lib/hosting/functionsProxy.js +1 -2
- package/lib/hosting/implicitInit.js +1 -2
- package/lib/hosting/initMiddleware.js +1 -2
- package/lib/hosting/interactive.js +1 -2
- package/lib/hosting/proxy.js +3 -5
- package/lib/hosting/runTags.js +8 -11
- package/lib/init/features/account.js +1 -2
- package/lib/init/features/ailogic/index.js +3 -5
- package/lib/init/features/ailogic/utils.js +6 -8
- package/lib/init/features/aitools/claude.js +1 -2
- package/lib/init/features/aitools/cursor.js +1 -2
- package/lib/init/features/aitools/gemini.js +1 -1
- package/lib/init/features/aitools/promptUpdater.js +10 -12
- package/lib/init/features/aitools.js +1 -2
- package/lib/init/features/apphosting.js +3 -4
- package/lib/init/features/apptesting/index.js +9 -9
- package/lib/init/features/database.js +4 -5
- package/lib/init/features/dataconnect/create_app.js +3 -4
- package/lib/init/features/dataconnect/index.js +25 -22
- package/lib/init/features/dataconnect/resolver.js +6 -10
- package/lib/init/features/dataconnect/sdk.js +31 -24
- package/lib/init/features/emulators.js +7 -6
- package/lib/init/features/extensions/index.js +3 -5
- package/lib/init/features/firestore/index.js +7 -9
- package/lib/init/features/firestore/indexes.js +2 -2
- package/lib/init/features/firestore/rules.js +3 -3
- package/lib/init/features/functions/index.js +3 -5
- package/lib/init/features/functions/javascript.js +1 -2
- package/lib/init/features/functions/npm-dependencies.js +1 -2
- package/lib/init/features/functions/python.js +1 -2
- package/lib/init/features/functions/typescript.js +1 -2
- package/lib/init/features/genkit/index.js +44 -18
- package/lib/init/features/hosting/github.js +6 -8
- package/lib/init/features/hosting/index.js +10 -13
- package/lib/init/features/project.js +4 -7
- package/lib/init/features/remoteconfig.js +1 -2
- package/lib/init/features/storage.js +3 -5
- package/lib/init/index.js +4 -7
- package/lib/init/spawn.js +7 -9
- package/lib/listFiles.js +1 -2
- package/lib/loadCJSON.js +1 -2
- package/lib/localFunction.js +14 -15
- package/lib/logError.js +1 -2
- package/lib/logger.js +7 -7
- package/lib/management/apps.js +22 -22
- package/lib/management/database.js +11 -12
- package/lib/management/projects.js +57 -56
- package/lib/management/provisioning/errorHandler.js +3 -5
- package/lib/management/provisioning/provision.js +15 -9
- package/lib/management/studio.js +2 -3
- package/lib/mcp/errors.js +4 -4
- package/lib/mcp/index.js +16 -23
- package/lib/mcp/prompt.js +1 -2
- package/lib/mcp/prompts/core/consult.js +2 -3
- package/lib/mcp/prompts/crashlytics/connect.js +15 -122
- package/lib/mcp/prompts/dataconnect/schema.js +3 -3
- package/lib/mcp/prompts/index.js +8 -10
- package/lib/mcp/resource.js +3 -15
- package/lib/mcp/resources/guides/app_id.js +39 -0
- package/lib/mcp/resources/guides/crashlytics_connect.js +51 -0
- package/lib/mcp/resources/guides/crashlytics_investigations.js +51 -0
- package/lib/mcp/resources/guides/crashlytics_issues.js +42 -0
- package/lib/mcp/resources/guides/crashlytics_reports.js +112 -0
- package/lib/mcp/resources/index.js +11 -3
- package/lib/mcp/tool.js +3 -15
- package/lib/mcp/tools/apphosting/fetch_logs.js +3 -4
- package/lib/mcp/tools/apphosting/list_backends.js +1 -1
- package/lib/mcp/tools/auth/get_users.js +5 -16
- package/lib/mcp/tools/core/create_android_sha.js +4 -1
- package/lib/mcp/tools/core/get_environment.js +3 -3
- package/lib/mcp/tools/core/get_sdk_config.js +4 -5
- package/lib/mcp/tools/core/get_security_rules.js +1 -2
- package/lib/mcp/tools/core/init.js +2 -2
- package/lib/mcp/tools/core/logout.js +1 -1
- package/lib/mcp/tools/core/read_resources.js +2 -2
- package/lib/mcp/tools/core/validate_security_rules.js +1 -2
- package/lib/mcp/tools/crashlytics/events.js +43 -19
- package/lib/mcp/tools/crashlytics/index.js +1 -6
- package/lib/mcp/tools/crashlytics/issues.js +33 -12
- package/lib/mcp/tools/crashlytics/reports.js +66 -117
- package/lib/mcp/tools/dataconnect/list_services.js +2 -3
- package/lib/mcp/tools/firestore/converter.js +3 -5
- package/lib/mcp/tools/firestore/delete_document.js +1 -1
- package/lib/mcp/tools/functions/get_logs.js +14 -12
- package/lib/mcp/tools/functions/list_functions.js +1 -1
- package/lib/mcp/tools/index.js +17 -9
- package/lib/mcp/util/apptesting/availability.js +1 -2
- package/lib/mcp/util/availability.js +1 -2
- package/lib/mcp/util/crashlytics/availability.js +1 -2
- package/lib/mcp/util/dataconnect/compile.js +7 -6
- package/lib/mcp/util/dataconnect/converter.js +7 -10
- package/lib/mcp/util/dataconnect/emulator.js +1 -2
- package/lib/mcp/util.js +9 -11
- package/lib/messaging/sendMessage.js +1 -2
- package/lib/metaprogramming.js +1 -2
- package/lib/operation-poller.js +2 -2
- package/lib/profileReport.js +6 -6
- package/lib/profiler.js +1 -2
- package/lib/projectPath.js +1 -2
- package/lib/projectUtils.js +5 -6
- package/lib/prompt.js +22 -13
- package/lib/rc.js +5 -7
- package/lib/remoteconfig/deleteExperiment.js +1 -2
- package/lib/remoteconfig/deleteRollout.js +1 -2
- package/lib/remoteconfig/get.js +2 -3
- package/lib/remoteconfig/getExperiment.js +2 -2
- package/lib/remoteconfig/getRollout.js +2 -2
- package/lib/remoteconfig/interfaces.js +1 -1
- package/lib/remoteconfig/listExperiments.js +2 -2
- package/lib/remoteconfig/listRollouts.js +2 -2
- package/lib/remoteconfig/publish.js +1 -2
- package/lib/remoteconfig/rollback.js +1 -2
- package/lib/remoteconfig/versionslist.js +1 -2
- package/lib/requireAuth.js +4 -6
- package/lib/requireConfig.js +5 -8
- package/lib/requireDatabaseInstance.js +2 -2
- package/lib/requireHostingSite.js +1 -2
- package/lib/requireInteractive.js +1 -1
- package/lib/requirePermissions.js +1 -2
- package/lib/requireTosAcceptance.js +1 -2
- package/lib/responseToError.js +1 -2
- package/lib/rtdb.js +2 -3
- package/lib/rulesDeploy.js +3 -4
- package/lib/serve/functions.js +9 -1
- package/lib/serve/hosting.js +4 -5
- package/lib/serve/index.js +1 -2
- package/lib/shortenUrl.js +1 -2
- package/lib/templates.js +3 -4
- package/lib/throttler/throttler.js +3 -3
- package/lib/timeout.js +2 -3
- package/lib/track.js +23 -14
- package/lib/tsconfig.publish.tsbuildinfo +1 -0
- package/lib/unzip.js +2 -3
- package/lib/utils.js +62 -63
- package/lib/vsCodeUtils.js +2 -3
- package/package.json +6 -6
- package/templates/extensions/typescript/index.ts +1 -1
- package/templates/extensions/typescript/package.lint.json +1 -1
- package/templates/extensions/typescript/package.nolint.json +1 -1
- package/templates/extensions/typescript/tsconfig.json +2 -1
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getEtag = getEtag;
|
|
4
|
+
exports.validateInputRemoteConfigTemplate = validateInputRemoteConfigTemplate;
|
|
5
|
+
exports.deployTemplate = deployTemplate;
|
|
6
|
+
exports.publishTemplate = publishTemplate;
|
|
4
7
|
const api_1 = require("../../api");
|
|
5
8
|
const apiv2_1 = require("../../apiv2");
|
|
6
9
|
const error_1 = require("../../error");
|
|
@@ -21,7 +24,6 @@ async function getEtag(projectNumber, versionNumber) {
|
|
|
21
24
|
});
|
|
22
25
|
return response.response.headers.get("etag") || "";
|
|
23
26
|
}
|
|
24
|
-
exports.getEtag = getEtag;
|
|
25
27
|
function validateInputRemoteConfigTemplate(template) {
|
|
26
28
|
const templateCopy = JSON.parse(JSON.stringify(template));
|
|
27
29
|
if (!templateCopy || templateCopy === "null" || templateCopy === "undefined") {
|
|
@@ -35,10 +37,9 @@ function validateInputRemoteConfigTemplate(template) {
|
|
|
35
37
|
}
|
|
36
38
|
return templateCopy;
|
|
37
39
|
}
|
|
38
|
-
exports.validateInputRemoteConfigTemplate = validateInputRemoteConfigTemplate;
|
|
39
40
|
async function deployTemplate(projectNumber, template, etag, options) {
|
|
40
41
|
const reqPath = `/projects/${projectNumber}/remoteConfig`;
|
|
41
|
-
if (options
|
|
42
|
+
if (options?.force) {
|
|
42
43
|
etag = "*";
|
|
43
44
|
}
|
|
44
45
|
const response = await client.request({
|
|
@@ -54,7 +55,6 @@ async function deployTemplate(projectNumber, template, etag, options) {
|
|
|
54
55
|
});
|
|
55
56
|
return response.body;
|
|
56
57
|
}
|
|
57
|
-
exports.deployTemplate = deployTemplate;
|
|
58
58
|
function publishTemplate(projectNumber, template, etag, options) {
|
|
59
59
|
const temporaryTemplate = {
|
|
60
60
|
conditions: template.conditions,
|
|
@@ -66,4 +66,3 @@ function publishTemplate(projectNumber, template, etag, options) {
|
|
|
66
66
|
validTemplate = validateInputRemoteConfigTemplate(template);
|
|
67
67
|
return deployTemplate(projectNumber, validTemplate, etag, options);
|
|
68
68
|
}
|
|
69
|
-
exports.publishTemplate = publishTemplate;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = default_1;
|
|
3
4
|
const projectUtils_1 = require("../../projectUtils");
|
|
4
5
|
const loadCJSON_1 = require("../../loadCJSON");
|
|
5
6
|
const functions_1 = require("./functions");
|
|
6
7
|
const functions_2 = require("./functions");
|
|
7
8
|
async function default_1(context, options) {
|
|
8
|
-
var _a;
|
|
9
9
|
if (!context) {
|
|
10
10
|
return;
|
|
11
11
|
}
|
|
12
|
-
const filePath =
|
|
12
|
+
const filePath = options.config.src.remoteconfig?.template;
|
|
13
13
|
if (!filePath) {
|
|
14
14
|
return;
|
|
15
15
|
}
|
|
@@ -20,4 +20,3 @@ async function default_1(context, options) {
|
|
|
20
20
|
context.remoteconfigTemplate = template;
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
|
-
exports.default = default_1;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = default_1;
|
|
3
4
|
const functions_1 = require("./functions");
|
|
4
5
|
const projectUtils_1 = require("../../projectUtils");
|
|
5
6
|
async function default_1(context, options) {
|
|
6
|
-
if (!
|
|
7
|
+
if (!context?.remoteconfigTemplate) {
|
|
7
8
|
return;
|
|
8
9
|
}
|
|
9
10
|
const template = context.remoteconfigTemplate;
|
|
@@ -11,4 +12,3 @@ async function default_1(context, options) {
|
|
|
11
12
|
const etag = await (0, functions_1.getEtag)(projectNumber);
|
|
12
13
|
return (0, functions_1.publishTemplate)(projectNumber, template, etag, options);
|
|
13
14
|
}
|
|
14
|
-
exports.default = default_1;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = default_1;
|
|
3
4
|
const lodash_1 = require("lodash");
|
|
4
5
|
const rulesDeploy_1 = require("../../rulesDeploy");
|
|
5
6
|
async function default_1(context) {
|
|
@@ -9,4 +10,3 @@ async function default_1(context) {
|
|
|
9
10
|
}
|
|
10
11
|
await rulesDeploy.createRulesets(rulesDeploy_1.RulesetServiceType.FIREBASE_STORAGE);
|
|
11
12
|
}
|
|
12
|
-
exports.default = default_1;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = default_1;
|
|
3
4
|
const _ = require("lodash");
|
|
4
5
|
const gcp = require("../../gcp");
|
|
5
6
|
const rulesDeploy_1 = require("../../rulesDeploy");
|
|
@@ -49,4 +50,3 @@ async function default_1(context, options) {
|
|
|
49
50
|
_.set(context, "storage.rulesDeploy", rulesDeploy);
|
|
50
51
|
await rulesDeploy.compile();
|
|
51
52
|
}
|
|
52
|
-
exports.default = default_1;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = default_1;
|
|
3
4
|
const lodash_1 = require("lodash");
|
|
4
5
|
const rulesDeploy_1 = require("../../rulesDeploy");
|
|
5
6
|
async function default_1(context, options) {
|
|
@@ -24,4 +25,3 @@ async function default_1(context, options) {
|
|
|
24
25
|
}));
|
|
25
26
|
return toRelease.map((r) => r.bucket);
|
|
26
27
|
}
|
|
27
|
-
exports.default = default_1;
|
package/lib/deploymentTool.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.BASE = void 0;
|
|
4
|
+
exports.value = value;
|
|
5
|
+
exports.labels = labels;
|
|
6
|
+
exports.isFirebaseManaged = isFirebaseManaged;
|
|
4
7
|
exports.BASE = "cli-firebase";
|
|
5
8
|
function value() {
|
|
6
9
|
if (!process.env.FIREBASE_DEPLOY_AGENT) {
|
|
@@ -8,15 +11,11 @@ function value() {
|
|
|
8
11
|
}
|
|
9
12
|
return [exports.BASE, process.env.FIREBASE_DEPLOY_AGENT].join("--");
|
|
10
13
|
}
|
|
11
|
-
exports.value = value;
|
|
12
14
|
function labels() {
|
|
13
15
|
return {
|
|
14
16
|
"deployment-tool": value(),
|
|
15
17
|
};
|
|
16
18
|
}
|
|
17
|
-
exports.labels = labels;
|
|
18
19
|
function isFirebaseManaged(labels) {
|
|
19
|
-
|
|
20
|
-
return (_a = labels === null || labels === void 0 ? void 0 : labels["deployment-tool"]) === null || _a === void 0 ? void 0 : _a.startsWith(exports.BASE);
|
|
20
|
+
return labels?.["deployment-tool"]?.startsWith(exports.BASE);
|
|
21
21
|
}
|
|
22
|
-
exports.isFirebaseManaged = isFirebaseManaged;
|
package/lib/detectProjectRoot.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.detectProjectRoot =
|
|
3
|
+
exports.detectProjectRoot = detectProjectRoot;
|
|
4
4
|
const fsutils_1 = require("./fsutils");
|
|
5
5
|
const error_1 = require("./error");
|
|
6
6
|
const path_1 = require("path");
|
|
@@ -25,4 +25,3 @@ function detectProjectRoot(options) {
|
|
|
25
25
|
}
|
|
26
26
|
return projectRootDir;
|
|
27
27
|
}
|
|
28
|
-
exports.detectProjectRoot = detectProjectRoot;
|
package/lib/downloadUtils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.downloadToTmp =
|
|
3
|
+
exports.downloadToTmp = downloadToTmp;
|
|
4
4
|
const url_1 = require("url");
|
|
5
5
|
const fs = require("fs-extra");
|
|
6
6
|
const ProgressBar = require("progress");
|
|
@@ -30,9 +30,8 @@ async function downloadToTmp(remoteUrl, auth = false) {
|
|
|
30
30
|
bar.tick(chunk.length);
|
|
31
31
|
});
|
|
32
32
|
await new Promise((resolve) => {
|
|
33
|
-
writeStream.on("finish", resolve);
|
|
33
|
+
writeStream.on("finish", () => resolve());
|
|
34
34
|
res.body.pipe(writeStream);
|
|
35
35
|
});
|
|
36
36
|
return tmpfile.name;
|
|
37
37
|
}
|
|
38
|
-
exports.downloadToTmp = downloadToTmp;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.constructDefaultAdminSdkConfig = constructDefaultAdminSdkConfig;
|
|
4
|
+
exports.getProjectAdminSdkConfigOrCached = getProjectAdminSdkConfigOrCached;
|
|
4
5
|
const api_1 = require("../api");
|
|
5
6
|
const apiv2 = require("../apiv2");
|
|
6
7
|
const configstore_1 = require("../configstore");
|
|
@@ -15,7 +16,6 @@ function constructDefaultAdminSdkConfig(projectId) {
|
|
|
15
16
|
storageBucket: process.env.STORAGE_BUCKET_URL || `${projectId}.appspot.com`,
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
|
-
exports.constructDefaultAdminSdkConfig = constructDefaultAdminSdkConfig;
|
|
19
19
|
async function getProjectAdminSdkConfigOrCached(projectId) {
|
|
20
20
|
if (constants_1.Constants.isDemoProject(projectId)) {
|
|
21
21
|
return constructDefaultAdminSdkConfig(projectId);
|
|
@@ -30,7 +30,6 @@ async function getProjectAdminSdkConfigOrCached(projectId) {
|
|
|
30
30
|
return getCachedAdminSdkConfig(projectId);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
exports.getProjectAdminSdkConfigOrCached = getProjectAdminSdkConfigOrCached;
|
|
34
33
|
async function getProjectAdminSdkConfig(projectId) {
|
|
35
34
|
const apiClient = new apiv2.Client({
|
|
36
35
|
auth: true,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getLocalAppHostingConfiguration =
|
|
3
|
+
exports.getLocalAppHostingConfiguration = getLocalAppHostingConfiguration;
|
|
4
4
|
const path_1 = require("path");
|
|
5
5
|
const config_1 = require("../../apphosting/config");
|
|
6
6
|
const yaml_1 = require("../../apphosting/yaml");
|
|
@@ -25,4 +25,3 @@ async function getLocalAppHostingConfiguration(backendDir) {
|
|
|
25
25
|
}
|
|
26
26
|
return output;
|
|
27
27
|
}
|
|
28
|
-
exports.getLocalAppHostingConfiguration = getLocalAppHostingConfiguration;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.logger = void 0;
|
|
4
|
+
exports.detectPackageManager = detectPackageManager;
|
|
5
|
+
exports.detectPackageManagerStartCommand = detectPackageManagerStartCommand;
|
|
4
6
|
const fs_extra_1 = require("fs-extra");
|
|
5
7
|
const path_1 = require("path");
|
|
6
8
|
const emulatorLogger_1 = require("../emulatorLogger");
|
|
@@ -19,7 +21,6 @@ async function detectPackageManager(rootdir) {
|
|
|
19
21
|
}
|
|
20
22
|
throw new error_1.FirebaseError("Unsupported package manager");
|
|
21
23
|
}
|
|
22
|
-
exports.detectPackageManager = detectPackageManager;
|
|
23
24
|
async function detectPackageManagerStartCommand(rootDir) {
|
|
24
25
|
try {
|
|
25
26
|
const packageManager = await detectPackageManager(rootDir);
|
|
@@ -29,4 +30,3 @@ async function detectPackageManagerStartCommand(rootDir) {
|
|
|
29
30
|
throw new error_1.FirebaseError("Failed to auto-detect your project's start command. Consider manually setting the start command by setting `firebase.json#emulators.apphosting.startCommand`");
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
|
-
exports.detectPackageManagerStartCommand = detectPackageManagerStartCommand;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.start = start;
|
|
4
|
+
exports.getEmulatorEnvs = getEmulatorEnvs;
|
|
4
5
|
const net_1 = require("net");
|
|
5
6
|
const clc = require("colorette");
|
|
6
7
|
const portUtils_1 = require("../portUtils");
|
|
@@ -25,7 +26,6 @@ const semver_1 = require("semver");
|
|
|
25
26
|
const secretResourceRegex = /^projects\/([^/]+)\/secrets\/([^/]+)(?:\/versions\/((?:latest)|\d+))?$/;
|
|
26
27
|
const secretShorthandRegex = /^([^/@]+)(?:@((?:latest)|\d+))?$/;
|
|
27
28
|
async function loadSecret(project, name) {
|
|
28
|
-
var _a, _b, _c, _d;
|
|
29
29
|
let projectId;
|
|
30
30
|
let secretId;
|
|
31
31
|
let version;
|
|
@@ -52,7 +52,7 @@ async function loadSecret(project, name) {
|
|
|
52
52
|
return await secrets.accessSecretVersion(projectId, secretId, version);
|
|
53
53
|
}
|
|
54
54
|
catch (err) {
|
|
55
|
-
if (
|
|
55
|
+
if (err?.original?.code === 403 || err?.original?.context?.response?.statusCode === 403) {
|
|
56
56
|
(0, utils_1.logLabeledError)(types_1.Emulators.APPHOSTING, `Permission denied to access secret ${secretId}. Use ` +
|
|
57
57
|
`${clc.bold("firebase apphosting:secrets:grantaccess")} to get permissions.`);
|
|
58
58
|
}
|
|
@@ -60,16 +60,15 @@ async function loadSecret(project, name) {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
async function start(options) {
|
|
63
|
-
var _a, _b;
|
|
64
63
|
const hostname = constants_1.DEFAULT_HOST;
|
|
65
|
-
let port =
|
|
64
|
+
let port = options?.port ?? constants_1.DEFAULT_PORTS.apphosting;
|
|
66
65
|
while (!(await availablePort(hostname, port))) {
|
|
67
66
|
port += 1;
|
|
68
67
|
}
|
|
69
|
-
const backendRoot = (0, projectPath_1.resolveProjectPath)({},
|
|
68
|
+
const backendRoot = (0, projectPath_1.resolveProjectPath)({}, options?.rootDirectory ?? "./");
|
|
70
69
|
let startCommand;
|
|
71
|
-
if (options
|
|
72
|
-
startCommand = options
|
|
70
|
+
if (options?.startCommand) {
|
|
71
|
+
startCommand = options?.startCommand;
|
|
73
72
|
if (startCommand.includes("--port") || startCommand.includes(" -p ")) {
|
|
74
73
|
throw new error_1.FirebaseError("Specifying a port in the start command is not supported by the apphosting emulator");
|
|
75
74
|
}
|
|
@@ -85,15 +84,24 @@ async function start(options) {
|
|
|
85
84
|
const apphostingLocalConfig = await (0, config_1.getLocalAppHostingConfiguration)(backendRoot);
|
|
86
85
|
const resolveEnv = Object.entries(apphostingLocalConfig.env).map(async ([key, value]) => [
|
|
87
86
|
key,
|
|
88
|
-
value.value ? value.value : await loadSecret(options
|
|
87
|
+
value.value ? value.value : await loadSecret(options?.projectId, value.secret),
|
|
89
88
|
]);
|
|
90
|
-
const environmentVariablesToInject =
|
|
89
|
+
const environmentVariablesToInject = {
|
|
90
|
+
NODE_ENV: process.env.NODE_ENV,
|
|
91
|
+
...getEmulatorEnvs(),
|
|
92
|
+
...Object.fromEntries(await Promise.all(resolveEnv)),
|
|
93
|
+
FIREBASE_APP_HOSTING: "1",
|
|
94
|
+
X_GOOGLE_TARGET_PLATFORM: "fah",
|
|
95
|
+
GCLOUD_PROJECT: options?.projectId,
|
|
96
|
+
PROJECT_ID: options?.projectId,
|
|
97
|
+
PORT: port.toString(),
|
|
98
|
+
};
|
|
91
99
|
const packageManager = await (0, developmentServer_1.detectPackageManager)(backendRoot).catch(() => undefined);
|
|
92
100
|
if (packageManager === "pnpm") {
|
|
93
101
|
(0, utils_1.logLabeledWarning)("apphosting", `Firebase JS SDK autoinit does not currently support PNPM.`);
|
|
94
102
|
}
|
|
95
103
|
else {
|
|
96
|
-
const webappConfig = await getBackendAppConfig(options
|
|
104
|
+
const webappConfig = await getBackendAppConfig(options?.projectId, options?.backendId);
|
|
97
105
|
if (webappConfig) {
|
|
98
106
|
environmentVariablesToInject["FIREBASE_WEBAPP_CONFIG"] || (environmentVariablesToInject["FIREBASE_WEBAPP_CONFIG"] = JSON.stringify(webappConfig));
|
|
99
107
|
environmentVariablesToInject["FIREBASE_CONFIG"] || (environmentVariablesToInject["FIREBASE_CONFIG"] = JSON.stringify({
|
|
@@ -111,7 +119,6 @@ async function start(options) {
|
|
|
111
119
|
.then(() => developmentServer_2.logger.logLabeled("BULLET", types_1.Emulators.APPHOSTING, `Dev Server stopped`));
|
|
112
120
|
return { hostname, port };
|
|
113
121
|
}
|
|
114
|
-
exports.start = start;
|
|
115
122
|
function availablePort(host, port) {
|
|
116
123
|
return (0, portUtils_1.checkListenable)({
|
|
117
124
|
address: host,
|
|
@@ -125,7 +132,6 @@ function getEmulatorEnvs() {
|
|
|
125
132
|
(0, env_1.setEnvVarsForEmulators)(envs, emulatorInfos);
|
|
126
133
|
return envs;
|
|
127
134
|
}
|
|
128
|
-
exports.getEmulatorEnvs = getEmulatorEnvs;
|
|
129
135
|
async function tripFirebasePostinstall(rootDirectory, env) {
|
|
130
136
|
const npmLs = (0, child_process_1.spawnSync)("npm", ["ls", "@firebase/util", "--json", "--long"], {
|
|
131
137
|
cwd: rootDirectory,
|
|
@@ -168,7 +174,7 @@ async function getBackendAppConfig(projectId, backendId) {
|
|
|
168
174
|
return undefined;
|
|
169
175
|
}
|
|
170
176
|
const backendsList = await apphosting.listBackends(projectId, "-").catch(() => undefined);
|
|
171
|
-
const backend = backendsList
|
|
177
|
+
const backend = backendsList?.backends.find((b) => apphosting.parseBackendName(b.name).id === backendId);
|
|
172
178
|
if (!backend) {
|
|
173
179
|
(0, utils_1.logLabeledWarning)("apphosting", `Unable to lookup details for backend ${backendId}. Firebase SDK autoinit will not be available.`);
|
|
174
180
|
return undefined;
|
|
@@ -26,7 +26,7 @@ class AuthCloudFunction {
|
|
|
26
26
|
catch (e) {
|
|
27
27
|
err = e;
|
|
28
28
|
}
|
|
29
|
-
if (err ||
|
|
29
|
+
if (err || res?.status !== 200) {
|
|
30
30
|
this.logger.logLabeled("WARN", "functions", `Firebase Authentication function was not triggered due to emulation error. Please file a bug.`);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -44,7 +44,6 @@ class AuthCloudFunction {
|
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
46
|
createUserInfoPayload(user) {
|
|
47
|
-
var _a;
|
|
48
47
|
return {
|
|
49
48
|
uid: user.localId,
|
|
50
49
|
email: user.email,
|
|
@@ -62,7 +61,7 @@ class AuthCloudFunction {
|
|
|
62
61
|
: undefined,
|
|
63
62
|
},
|
|
64
63
|
customClaims: JSON.parse(user.customAttributes || "{}"),
|
|
65
|
-
providerData:
|
|
64
|
+
providerData: user.providerUserInfo?.map((info) => this.createProviderUserInfoPayload(info)),
|
|
66
65
|
tenantId: user.tenantId,
|
|
67
66
|
mfaInfo: user.mfaInfo,
|
|
68
67
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.NotImplementedError = exports.InternalError = exports.UnknownError = exports.NotFoundError = exports.PermissionDeniedError = exports.UnauthenticatedError = exports.InvalidArgumentError = exports.BadRequestError = exports.ApiError = void 0;
|
|
4
|
+
exports.assert = assert;
|
|
4
5
|
const errors_1 = require("exegesis/lib/errors");
|
|
5
6
|
class ApiError extends errors_1.ExtendableError {
|
|
6
7
|
constructor(code, status, message, reasonOrErrors) {
|
|
@@ -74,4 +75,3 @@ function assert(assertion, error) {
|
|
|
74
75
|
throw new BadRequestError(error);
|
|
75
76
|
}
|
|
76
77
|
}
|
|
77
|
-
exports.assert = assert;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.registerHandlers =
|
|
3
|
+
exports.registerHandlers = registerHandlers;
|
|
4
4
|
const url_1 = require("url");
|
|
5
5
|
const operations_1 = require("./operations");
|
|
6
6
|
const errors_1 = require("./errors");
|
|
@@ -29,7 +29,7 @@ function registerHandlers(app, getProjectStateByApiKey) {
|
|
|
29
29
|
case "recoverEmail": {
|
|
30
30
|
const oob = state.validateOobCode(oobCode);
|
|
31
31
|
const RETRY_INSTRUCTIONS = "If you're trying to test the reverting email flow, try changing the email again to generate a new link.";
|
|
32
|
-
if (
|
|
32
|
+
if (oob?.requestType !== "RECOVER_EMAIL") {
|
|
33
33
|
return res.status(400).json({
|
|
34
34
|
authEmulator: {
|
|
35
35
|
error: `Requested mode does not match the OOB code provided.`,
|
|
@@ -63,7 +63,7 @@ function registerHandlers(app, getProjectStateByApiKey) {
|
|
|
63
63
|
}
|
|
64
64
|
case "resetPassword": {
|
|
65
65
|
const oob = state.validateOobCode(oobCode);
|
|
66
|
-
if (
|
|
66
|
+
if (oob?.requestType !== "PASSWORD_RESET") {
|
|
67
67
|
return res.status(400).json({
|
|
68
68
|
authEmulator: {
|
|
69
69
|
error: `Your request to reset your password has expired or the link has already been used.`,
|
|
@@ -290,7 +290,6 @@ function registerHandlers(app, getProjectStateByApiKey) {
|
|
|
290
290
|
`);
|
|
291
291
|
});
|
|
292
292
|
}
|
|
293
|
-
exports.registerHandlers = registerHandlers;
|
|
294
293
|
function createFakeClaims(info) {
|
|
295
294
|
const claims = {
|
|
296
295
|
sub: info.rawId,
|
|
@@ -16,7 +16,7 @@ var SingleProjectMode;
|
|
|
16
16
|
SingleProjectMode[SingleProjectMode["NO_WARNING"] = 0] = "NO_WARNING";
|
|
17
17
|
SingleProjectMode[SingleProjectMode["WARNING"] = 1] = "WARNING";
|
|
18
18
|
SingleProjectMode[SingleProjectMode["ERROR"] = 2] = "ERROR";
|
|
19
|
-
})(SingleProjectMode
|
|
19
|
+
})(SingleProjectMode || (exports.SingleProjectMode = SingleProjectMode = {}));
|
|
20
20
|
class AuthEmulator {
|
|
21
21
|
constructor(args) {
|
|
22
22
|
this.args = args;
|
|
@@ -53,7 +53,7 @@ class AuthEmulator {
|
|
|
53
53
|
const { host, port } = this.getInfo();
|
|
54
54
|
const configPath = path.join(authExportDir, "config.json");
|
|
55
55
|
const configStat = await stat(configPath);
|
|
56
|
-
if (configStat
|
|
56
|
+
if (configStat?.isFile()) {
|
|
57
57
|
logger.logLabeled("BULLET", "auth", `Importing config from ${configPath}`);
|
|
58
58
|
await importFromFile({
|
|
59
59
|
method: "PATCH",
|
|
@@ -71,7 +71,7 @@ class AuthEmulator {
|
|
|
71
71
|
}
|
|
72
72
|
const accountsPath = path.join(authExportDir, "accounts.json");
|
|
73
73
|
const accountsStat = await stat(accountsPath);
|
|
74
|
-
if (accountsStat
|
|
74
|
+
if (accountsStat?.isFile()) {
|
|
75
75
|
logger.logLabeled("BULLET", "auth", `Importing accounts from ${accountsPath}`);
|
|
76
76
|
await importFromFile({
|
|
77
77
|
method: "POST",
|
|
@@ -118,13 +118,13 @@ function importFromFile(reqOptions, path, options = {}) {
|
|
|
118
118
|
})
|
|
119
119
|
.on("error", reject)
|
|
120
120
|
.on("end", () => {
|
|
121
|
-
const ignoreErrors = options
|
|
122
|
-
if (ignoreErrors
|
|
121
|
+
const ignoreErrors = options?.ignoreErrors;
|
|
122
|
+
if (ignoreErrors?.length) {
|
|
123
123
|
let message;
|
|
124
124
|
try {
|
|
125
125
|
message = JSON.parse(data).error.message;
|
|
126
126
|
}
|
|
127
|
-
catch
|
|
127
|
+
catch {
|
|
128
128
|
message = undefined;
|
|
129
129
|
}
|
|
130
130
|
if (message && ignoreErrors.includes(message)) {
|