firebase-tools 13.5.1 → 13.6.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.
Files changed (83) hide show
  1. package/lib/accountExporter.js +1 -1
  2. package/lib/accountImporter.js +1 -1
  3. package/lib/api.js +112 -56
  4. package/lib/apiv2.js +3 -1
  5. package/lib/appdistribution/client.js +4 -4
  6. package/lib/auth.js +17 -17
  7. package/lib/commands/hosting-disable.js +1 -1
  8. package/lib/commands/open.js +1 -1
  9. package/lib/database/metadata.js +3 -3
  10. package/lib/defaultCredentials.js +2 -2
  11. package/lib/deploy/extensions/v2FunctionHelper.js +1 -1
  12. package/lib/deploy/functions/build.js +1 -1
  13. package/lib/deploy/functions/containerCleaner.js +4 -4
  14. package/lib/deploy/functions/deploy.js +8 -2
  15. package/lib/deploy/functions/ensure.js +1 -1
  16. package/lib/deploy/functions/prepare.js +5 -4
  17. package/lib/deploy/functions/release/fabricator.js +3 -3
  18. package/lib/deploy/functions/runtimes/discovery/index.js +2 -2
  19. package/lib/deploy/functions/runtimes/node/parseTriggers.js +2 -2
  20. package/lib/deploy/hosting/uploader.js +1 -1
  21. package/lib/deploy/index.js +1 -1
  22. package/lib/deploy/remoteconfig/functions.js +1 -1
  23. package/lib/emulator/adminSdkConfig.js +1 -1
  24. package/lib/emulator/downloadableEmulators.js +6 -6
  25. package/lib/ensureApiEnabled.js +1 -1
  26. package/lib/extensions/extensionsApi.js +5 -5
  27. package/lib/extensions/extensionsHelper.js +4 -4
  28. package/lib/extensions/provisioningHelper.js +2 -2
  29. package/lib/extensions/publishHelpers.js +1 -1
  30. package/lib/extensions/publisherApi.js +3 -3
  31. package/lib/extensions/resolveSource.js +1 -1
  32. package/lib/extensions/secretsUtils.js +1 -1
  33. package/lib/extensions/tos.js +1 -1
  34. package/lib/fetchMOTD.js +1 -1
  35. package/lib/fetchWebSetup.js +2 -2
  36. package/lib/firestore/api-sort.js +17 -0
  37. package/lib/firestore/api.js +9 -2
  38. package/lib/firestore/checkDatabaseType.js +1 -1
  39. package/lib/firestore/delete.js +1 -1
  40. package/lib/firestore/pretty-print.js +11 -2
  41. package/lib/functions/secrets.js +3 -3
  42. package/lib/functionsConfig.js +1 -1
  43. package/lib/gcp/apphosting.js +2 -2
  44. package/lib/gcp/artifactregistry.js +1 -1
  45. package/lib/gcp/auth.js +1 -1
  46. package/lib/gcp/cloudbilling.js +1 -1
  47. package/lib/gcp/cloudbuild.js +1 -1
  48. package/lib/gcp/cloudfunctions.js +1 -1
  49. package/lib/gcp/cloudfunctionsv2.js +1 -1
  50. package/lib/gcp/cloudlogging.js +1 -1
  51. package/lib/gcp/cloudmonitoring.js +1 -1
  52. package/lib/gcp/cloudscheduler.js +1 -1
  53. package/lib/gcp/cloudtasks.js +1 -1
  54. package/lib/gcp/devConnect.js +81 -0
  55. package/lib/gcp/eventarc.js +1 -1
  56. package/lib/gcp/firestore.js +2 -2
  57. package/lib/gcp/iam.js +2 -2
  58. package/lib/gcp/identityPlatform.js +1 -1
  59. package/lib/gcp/pubsub.js +1 -1
  60. package/lib/gcp/resourceManager.js +2 -1
  61. package/lib/gcp/rules.js +1 -1
  62. package/lib/gcp/run.js +1 -1
  63. package/lib/gcp/runtimeconfig.js +1 -1
  64. package/lib/gcp/secretManager.js +1 -1
  65. package/lib/gcp/serviceusage.js +1 -1
  66. package/lib/gcp/storage.js +12 -8
  67. package/lib/hosting/api.js +2 -2
  68. package/lib/hosting/cloudRunProxy.js +1 -1
  69. package/lib/init/features/apphosting/index.js +29 -7
  70. package/lib/init/features/apphosting/repo.js +88 -102
  71. package/lib/init/features/database.js +1 -1
  72. package/lib/init/features/extensions/index.js +1 -1
  73. package/lib/init/features/functions/index.js +2 -2
  74. package/lib/init/features/hosting/github.js +4 -3
  75. package/lib/management/apps.js +4 -4
  76. package/lib/management/database.js +1 -1
  77. package/lib/management/projects.js +4 -4
  78. package/lib/remoteconfig/get.js +1 -1
  79. package/lib/remoteconfig/rollback.js +1 -1
  80. package/lib/remoteconfig/versionslist.js +1 -1
  81. package/lib/shortenUrl.js +2 -2
  82. package/lib/utils.js +1 -1
  83. package/package.json +1 -1
@@ -8,7 +8,7 @@ const error_1 = require("./error");
8
8
  const api_1 = require("./api");
9
9
  const utils = require("./utils");
10
10
  const apiClient = new apiv2_1.Client({
11
- urlPrefix: api_1.googleOrigin,
11
+ urlPrefix: (0, api_1.googleOrigin)(),
12
12
  });
13
13
  const EXPORTED_JSON_KEYS = [
14
14
  "localId",
@@ -8,7 +8,7 @@ const logger_1 = require("./logger");
8
8
  const error_1 = require("./error");
9
9
  const utils = require("./utils");
10
10
  const apiClient = new apiv2_1.Client({
11
- urlPrefix: api_1.googleOrigin,
11
+ urlPrefix: (0, api_1.googleOrigin)(),
12
12
  });
13
13
  const ALLOWED_JSON_KEYS = [
14
14
  "localId",
package/lib/api.js CHANGED
@@ -1,71 +1,127 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.githubApiOrigin = exports.githubOrigin = exports.apphostingOrigin = exports.serviceUsageOrigin = exports.cloudRunApiOrigin = exports.hostingApiOrigin = exports.firebaseStorageOrigin = exports.storageOrigin = exports.runtimeconfigOrigin = exports.rulesOrigin = exports.resourceManagerOrigin = exports.remoteConfigApiOrigin = exports.rtdbMetadataOrigin = exports.rtdbManagementOrigin = exports.realtimeOrigin = exports.extensionsTOSOrigin = exports.extensionsPublisherOrigin = exports.extensionsOrigin = exports.iamOrigin = exports.identityOrigin = exports.hostingOrigin = exports.googleOrigin = exports.pubsubOrigin = exports.cloudTasksOrigin = exports.cloudschedulerOrigin = exports.cloudbuildOrigin = exports.functionsDefaultRegion = exports.runOrigin = exports.functionsV2Origin = exports.functionsOrigin = exports.firestoreOrigin = exports.firestoreOriginOrEmulator = exports.firedataOrigin = exports.firebaseExtensionsRegistryOrigin = exports.firebaseApiOrigin = exports.eventarcOrigin = exports.dynamicLinksKey = exports.dynamicLinksOrigin = exports.deployOrigin = exports.consoleOrigin = exports.authOrigin = exports.appDistributionOrigin = exports.artifactRegistryDomain = exports.containerRegistryDomain = exports.cloudMonitoringOrigin = exports.cloudloggingOrigin = exports.cloudbillingOrigin = exports.clientSecret = exports.clientId = exports.authProxyOrigin = void 0;
4
- exports.setScopes = exports.getScopes = exports.githubClientSecret = exports.githubClientId = exports.computeOrigin = exports.secretManagerOrigin = void 0;
3
+ exports.githubOrigin = exports.apphostingOrigin = exports.serviceUsageOrigin = exports.cloudRunApiOrigin = exports.hostingApiOrigin = exports.firebaseStorageOrigin = exports.storageOrigin = exports.runtimeconfigOrigin = exports.rulesOrigin = exports.resourceManagerOrigin = exports.remoteConfigApiOrigin = exports.rtdbMetadataOrigin = exports.rtdbManagementOrigin = exports.realtimeOrigin = exports.extensionsTOSOrigin = exports.extensionsPublisherOrigin = exports.extensionsOrigin = exports.iamOrigin = exports.identityOrigin = exports.hostingOrigin = exports.googleOrigin = exports.pubsubOrigin = exports.cloudTasksOrigin = exports.cloudschedulerOrigin = exports.developerConnectP4SAOrigin = exports.developerConnectOrigin = exports.cloudbuildOrigin = exports.functionsDefaultRegion = exports.runOrigin = exports.functionsV2Origin = exports.functionsOrigin = exports.firestoreOrigin = exports.firestoreOriginOrEmulator = exports.firedataOrigin = exports.firebaseExtensionsRegistryOrigin = exports.firebaseApiOrigin = exports.eventarcOrigin = exports.dynamicLinksKey = exports.dynamicLinksOrigin = exports.consoleOrigin = exports.authOrigin = exports.appDistributionOrigin = exports.artifactRegistryDomain = exports.containerRegistryDomain = exports.cloudMonitoringOrigin = exports.cloudloggingOrigin = exports.cloudbillingOrigin = exports.clientSecret = exports.clientId = exports.authProxyOrigin = void 0;
4
+ exports.setScopes = exports.getScopes = exports.githubClientSecret = exports.githubClientId = exports.computeOrigin = exports.secretManagerOrigin = exports.githubApiOrigin = void 0;
5
5
  const constants_1 = require("./emulator/constants");
6
6
  const logger_1 = require("./logger");
7
7
  const scopes = require("./scopes");
8
8
  const utils = require("./utils");
9
9
  let commandScopes = new Set();
10
- exports.authProxyOrigin = utils.envOverride("FIREBASE_AUTHPROXY_URL", "https://auth.firebase.tools");
11
- exports.clientId = utils.envOverride("FIREBASE_CLIENT_ID", "563584335869-fgrhgmd47bqnekij5i8b5pr03ho849e6.apps.googleusercontent.com");
12
- exports.clientSecret = utils.envOverride("FIREBASE_CLIENT_SECRET", "j9iVZfS8kkCEFUPaAeJV0sAi");
13
- exports.cloudbillingOrigin = utils.envOverride("FIREBASE_CLOUDBILLING_URL", "https://cloudbilling.googleapis.com");
14
- exports.cloudloggingOrigin = utils.envOverride("FIREBASE_CLOUDLOGGING_URL", "https://logging.googleapis.com");
15
- exports.cloudMonitoringOrigin = utils.envOverride("CLOUD_MONITORING_URL", "https://monitoring.googleapis.com");
16
- exports.containerRegistryDomain = utils.envOverride("CONTAINER_REGISTRY_DOMAIN", "gcr.io");
17
- exports.artifactRegistryDomain = utils.envOverride("ARTIFACT_REGISTRY_DOMAIN", "https://artifactregistry.googleapis.com");
18
- exports.appDistributionOrigin = utils.envOverride("FIREBASE_APP_DISTRIBUTION_URL", "https://firebaseappdistribution.googleapis.com");
19
- exports.authOrigin = utils.envOverride("FIREBASE_AUTH_URL", "https://accounts.google.com");
20
- exports.consoleOrigin = utils.envOverride("FIREBASE_CONSOLE_URL", "https://console.firebase.google.com");
21
- exports.deployOrigin = utils.envOverride("FIREBASE_DEPLOY_URL", utils.envOverride("FIREBASE_UPLOAD_URL", "https://deploy.firebase.com"));
22
- exports.dynamicLinksOrigin = utils.envOverride("FIREBASE_DYNAMIC_LINKS_URL", "https://firebasedynamiclinks.googleapis.com");
23
- exports.dynamicLinksKey = utils.envOverride("FIREBASE_DYNAMIC_LINKS_KEY", "AIzaSyB6PtY5vuiSB8MNgt20mQffkOlunZnHYiQ");
24
- exports.eventarcOrigin = utils.envOverride("EVENTARC_URL", "https://eventarc.googleapis.com");
25
- exports.firebaseApiOrigin = utils.envOverride("FIREBASE_API_URL", "https://firebase.googleapis.com");
26
- exports.firebaseExtensionsRegistryOrigin = utils.envOverride("FIREBASE_EXT_REGISTRY_ORIGIN", "https://extensions-registry.firebaseapp.com");
27
- exports.firedataOrigin = utils.envOverride("FIREBASE_FIREDATA_URL", "https://mobilesdk-pa.googleapis.com");
28
- exports.firestoreOriginOrEmulator = utils.envOverride(constants_1.Constants.FIRESTORE_EMULATOR_HOST, utils.envOverride("FIRESTORE_URL", "https://firestore.googleapis.com"), (val) => {
10
+ const authProxyOrigin = () => utils.envOverride("FIREBASE_AUTHPROXY_URL", "https://auth.firebase.tools");
11
+ exports.authProxyOrigin = authProxyOrigin;
12
+ const clientId = () => utils.envOverride("FIREBASE_CLIENT_ID", "563584335869-fgrhgmd47bqnekij5i8b5pr03ho849e6.apps.googleusercontent.com");
13
+ exports.clientId = clientId;
14
+ const clientSecret = () => utils.envOverride("FIREBASE_CLIENT_SECRET", "j9iVZfS8kkCEFUPaAeJV0sAi");
15
+ exports.clientSecret = clientSecret;
16
+ const cloudbillingOrigin = () => utils.envOverride("FIREBASE_CLOUDBILLING_URL", "https://cloudbilling.googleapis.com");
17
+ exports.cloudbillingOrigin = cloudbillingOrigin;
18
+ const cloudloggingOrigin = () => utils.envOverride("FIREBASE_CLOUDLOGGING_URL", "https://logging.googleapis.com");
19
+ exports.cloudloggingOrigin = cloudloggingOrigin;
20
+ const cloudMonitoringOrigin = () => utils.envOverride("CLOUD_MONITORING_URL", "https://monitoring.googleapis.com");
21
+ exports.cloudMonitoringOrigin = cloudMonitoringOrigin;
22
+ const containerRegistryDomain = () => utils.envOverride("CONTAINER_REGISTRY_DOMAIN", "gcr.io");
23
+ exports.containerRegistryDomain = containerRegistryDomain;
24
+ const artifactRegistryDomain = () => utils.envOverride("ARTIFACT_REGISTRY_DOMAIN", "https://artifactregistry.googleapis.com");
25
+ exports.artifactRegistryDomain = artifactRegistryDomain;
26
+ const appDistributionOrigin = () => utils.envOverride("FIREBASE_APP_DISTRIBUTION_URL", "https://firebaseappdistribution.googleapis.com");
27
+ exports.appDistributionOrigin = appDistributionOrigin;
28
+ const authOrigin = () => utils.envOverride("FIREBASE_AUTH_URL", "https://accounts.google.com");
29
+ exports.authOrigin = authOrigin;
30
+ const consoleOrigin = () => utils.envOverride("FIREBASE_CONSOLE_URL", "https://console.firebase.google.com");
31
+ exports.consoleOrigin = consoleOrigin;
32
+ const dynamicLinksOrigin = () => utils.envOverride("FIREBASE_DYNAMIC_LINKS_URL", "https://firebasedynamiclinks.googleapis.com");
33
+ exports.dynamicLinksOrigin = dynamicLinksOrigin;
34
+ const dynamicLinksKey = () => utils.envOverride("FIREBASE_DYNAMIC_LINKS_KEY", "AIzaSyB6PtY5vuiSB8MNgt20mQffkOlunZnHYiQ");
35
+ exports.dynamicLinksKey = dynamicLinksKey;
36
+ const eventarcOrigin = () => utils.envOverride("EVENTARC_URL", "https://eventarc.googleapis.com");
37
+ exports.eventarcOrigin = eventarcOrigin;
38
+ const firebaseApiOrigin = () => utils.envOverride("FIREBASE_API_URL", "https://firebase.googleapis.com");
39
+ exports.firebaseApiOrigin = firebaseApiOrigin;
40
+ const firebaseExtensionsRegistryOrigin = () => utils.envOverride("FIREBASE_EXT_REGISTRY_ORIGIN", "https://extensions-registry.firebaseapp.com");
41
+ exports.firebaseExtensionsRegistryOrigin = firebaseExtensionsRegistryOrigin;
42
+ const firedataOrigin = () => utils.envOverride("FIREBASE_FIREDATA_URL", "https://mobilesdk-pa.googleapis.com");
43
+ exports.firedataOrigin = firedataOrigin;
44
+ const firestoreOriginOrEmulator = () => utils.envOverride(constants_1.Constants.FIRESTORE_EMULATOR_HOST, utils.envOverride("FIRESTORE_URL", "https://firestore.googleapis.com"), (val) => {
29
45
  if (val.startsWith("http")) {
30
46
  return val;
31
47
  }
32
48
  return `http://${val}`;
33
49
  });
34
- exports.firestoreOrigin = utils.envOverride("FIRESTORE_URL", "https://firestore.googleapis.com");
35
- exports.functionsOrigin = utils.envOverride("FIREBASE_FUNCTIONS_URL", "https://cloudfunctions.googleapis.com");
36
- exports.functionsV2Origin = utils.envOverride("FIREBASE_FUNCTIONS_V2_URL", "https://cloudfunctions.googleapis.com");
37
- exports.runOrigin = utils.envOverride("CLOUD_RUN_URL", "https://run.googleapis.com");
38
- exports.functionsDefaultRegion = utils.envOverride("FIREBASE_FUNCTIONS_DEFAULT_REGION", "us-central1");
39
- exports.cloudbuildOrigin = utils.envOverride("FIREBASE_CLOUDBUILD_URL", "https://cloudbuild.googleapis.com");
40
- exports.cloudschedulerOrigin = utils.envOverride("FIREBASE_CLOUDSCHEDULER_URL", "https://cloudscheduler.googleapis.com");
41
- exports.cloudTasksOrigin = utils.envOverride("FIREBASE_CLOUD_TAKS_URL", "https://cloudtasks.googleapis.com");
42
- exports.pubsubOrigin = utils.envOverride("FIREBASE_PUBSUB_URL", "https://pubsub.googleapis.com");
43
- exports.googleOrigin = utils.envOverride("FIREBASE_TOKEN_URL", utils.envOverride("FIREBASE_GOOGLE_URL", "https://www.googleapis.com"));
44
- exports.hostingOrigin = utils.envOverride("FIREBASE_HOSTING_URL", "https://web.app");
45
- exports.identityOrigin = utils.envOverride("FIREBASE_IDENTITY_URL", "https://identitytoolkit.googleapis.com");
46
- exports.iamOrigin = utils.envOverride("FIREBASE_IAM_URL", "https://iam.googleapis.com");
47
- exports.extensionsOrigin = utils.envOverride("FIREBASE_EXT_URL", "https://firebaseextensions.googleapis.com");
48
- exports.extensionsPublisherOrigin = utils.envOverride("FIREBASE_EXT_PUBLISHER_URL", "https://firebaseextensionspublisher.googleapis.com");
49
- exports.extensionsTOSOrigin = utils.envOverride("FIREBASE_EXT_TOS_URL", "https://firebaseextensionstos-pa.googleapis.com");
50
- exports.realtimeOrigin = utils.envOverride("FIREBASE_REALTIME_URL", "https://firebaseio.com");
51
- exports.rtdbManagementOrigin = utils.envOverride("FIREBASE_RTDB_MANAGEMENT_URL", "https://firebasedatabase.googleapis.com");
52
- exports.rtdbMetadataOrigin = utils.envOverride("FIREBASE_RTDB_METADATA_URL", "https://metadata-dot-firebase-prod.appspot.com");
53
- exports.remoteConfigApiOrigin = utils.envOverride("FIREBASE_REMOTE_CONFIG_URL", "https://firebaseremoteconfig.googleapis.com");
54
- exports.resourceManagerOrigin = utils.envOverride("FIREBASE_RESOURCEMANAGER_URL", "https://cloudresourcemanager.googleapis.com");
55
- exports.rulesOrigin = utils.envOverride("FIREBASE_RULES_URL", "https://firebaserules.googleapis.com");
56
- exports.runtimeconfigOrigin = utils.envOverride("FIREBASE_RUNTIMECONFIG_URL", "https://runtimeconfig.googleapis.com");
57
- exports.storageOrigin = utils.envOverride("FIREBASE_STORAGE_URL", "https://storage.googleapis.com");
58
- exports.firebaseStorageOrigin = utils.envOverride("FIREBASE_FIREBASESTORAGE_URL", "https://firebasestorage.googleapis.com");
59
- exports.hostingApiOrigin = utils.envOverride("FIREBASE_HOSTING_API_URL", "https://firebasehosting.googleapis.com");
60
- exports.cloudRunApiOrigin = utils.envOverride("CLOUD_RUN_API_URL", "https://run.googleapis.com");
61
- exports.serviceUsageOrigin = utils.envOverride("FIREBASE_SERVICE_USAGE_URL", "https://serviceusage.googleapis.com");
62
- exports.apphostingOrigin = utils.envOverride("APPHOSTING_URL", "https://firebaseapphosting.googleapis.com");
63
- exports.githubOrigin = utils.envOverride("GITHUB_URL", "https://github.com");
64
- exports.githubApiOrigin = utils.envOverride("GITHUB_API_URL", "https://api.github.com");
65
- exports.secretManagerOrigin = utils.envOverride("CLOUD_SECRET_MANAGER_URL", "https://secretmanager.googleapis.com");
66
- exports.computeOrigin = utils.envOverride("COMPUTE_URL", "https://compute.googleapis.com");
67
- exports.githubClientId = utils.envOverride("GITHUB_CLIENT_ID", "89cf50f02ac6aaed3484");
68
- exports.githubClientSecret = utils.envOverride("GITHUB_CLIENT_SECRET", "3330d14abc895d9a74d5f17cd7a00711fa2c5bf0");
50
+ exports.firestoreOriginOrEmulator = firestoreOriginOrEmulator;
51
+ const firestoreOrigin = () => utils.envOverride("FIRESTORE_URL", "https://firestore.googleapis.com");
52
+ exports.firestoreOrigin = firestoreOrigin;
53
+ const functionsOrigin = () => utils.envOverride("FIREBASE_FUNCTIONS_URL", "https://cloudfunctions.googleapis.com");
54
+ exports.functionsOrigin = functionsOrigin;
55
+ const functionsV2Origin = () => utils.envOverride("FIREBASE_FUNCTIONS_V2_URL", "https://cloudfunctions.googleapis.com");
56
+ exports.functionsV2Origin = functionsV2Origin;
57
+ const runOrigin = () => utils.envOverride("CLOUD_RUN_URL", "https://run.googleapis.com");
58
+ exports.runOrigin = runOrigin;
59
+ const functionsDefaultRegion = () => utils.envOverride("FIREBASE_FUNCTIONS_DEFAULT_REGION", "us-central1");
60
+ exports.functionsDefaultRegion = functionsDefaultRegion;
61
+ const cloudbuildOrigin = () => utils.envOverride("FIREBASE_CLOUDBUILD_URL", "https://cloudbuild.googleapis.com");
62
+ exports.cloudbuildOrigin = cloudbuildOrigin;
63
+ const developerConnectOrigin = () => utils.envOverride("FIREBASE_DEVELOPERCONNECT_URL", "https://developerconnect.googleapis.com");
64
+ exports.developerConnectOrigin = developerConnectOrigin;
65
+ const developerConnectP4SAOrigin = () => utils.envOverride("FIREBASE_DEVELOPERCONNECT_P4SA_URL", "gcp-sa-developerconnect.iam.gserviceaccount.com");
66
+ exports.developerConnectP4SAOrigin = developerConnectP4SAOrigin;
67
+ const cloudschedulerOrigin = () => utils.envOverride("FIREBASE_CLOUDSCHEDULER_URL", "https://cloudscheduler.googleapis.com");
68
+ exports.cloudschedulerOrigin = cloudschedulerOrigin;
69
+ const cloudTasksOrigin = () => utils.envOverride("FIREBASE_CLOUD_TAKS_URL", "https://cloudtasks.googleapis.com");
70
+ exports.cloudTasksOrigin = cloudTasksOrigin;
71
+ const pubsubOrigin = () => utils.envOverride("FIREBASE_PUBSUB_URL", "https://pubsub.googleapis.com");
72
+ exports.pubsubOrigin = pubsubOrigin;
73
+ const googleOrigin = () => utils.envOverride("FIREBASE_TOKEN_URL", utils.envOverride("FIREBASE_GOOGLE_URL", "https://www.googleapis.com"));
74
+ exports.googleOrigin = googleOrigin;
75
+ const hostingOrigin = () => utils.envOverride("FIREBASE_HOSTING_URL", "https://web.app");
76
+ exports.hostingOrigin = hostingOrigin;
77
+ const identityOrigin = () => utils.envOverride("FIREBASE_IDENTITY_URL", "https://identitytoolkit.googleapis.com");
78
+ exports.identityOrigin = identityOrigin;
79
+ const iamOrigin = () => utils.envOverride("FIREBASE_IAM_URL", "https://iam.googleapis.com");
80
+ exports.iamOrigin = iamOrigin;
81
+ const extensionsOrigin = () => utils.envOverride("FIREBASE_EXT_URL", "https://firebaseextensions.googleapis.com");
82
+ exports.extensionsOrigin = extensionsOrigin;
83
+ const extensionsPublisherOrigin = () => utils.envOverride("FIREBASE_EXT_PUBLISHER_URL", "https://firebaseextensionspublisher.googleapis.com");
84
+ exports.extensionsPublisherOrigin = extensionsPublisherOrigin;
85
+ const extensionsTOSOrigin = () => utils.envOverride("FIREBASE_EXT_TOS_URL", "https://firebaseextensionstos-pa.googleapis.com");
86
+ exports.extensionsTOSOrigin = extensionsTOSOrigin;
87
+ const realtimeOrigin = () => utils.envOverride("FIREBASE_REALTIME_URL", "https://firebaseio.com");
88
+ exports.realtimeOrigin = realtimeOrigin;
89
+ const rtdbManagementOrigin = () => utils.envOverride("FIREBASE_RTDB_MANAGEMENT_URL", "https://firebasedatabase.googleapis.com");
90
+ exports.rtdbManagementOrigin = rtdbManagementOrigin;
91
+ const rtdbMetadataOrigin = () => utils.envOverride("FIREBASE_RTDB_METADATA_URL", "https://metadata-dot-firebase-prod.appspot.com");
92
+ exports.rtdbMetadataOrigin = rtdbMetadataOrigin;
93
+ const remoteConfigApiOrigin = () => utils.envOverride("FIREBASE_REMOTE_CONFIG_URL", "https://firebaseremoteconfig.googleapis.com");
94
+ exports.remoteConfigApiOrigin = remoteConfigApiOrigin;
95
+ const resourceManagerOrigin = () => utils.envOverride("FIREBASE_RESOURCEMANAGER_URL", "https://cloudresourcemanager.googleapis.com");
96
+ exports.resourceManagerOrigin = resourceManagerOrigin;
97
+ const rulesOrigin = () => utils.envOverride("FIREBASE_RULES_URL", "https://firebaserules.googleapis.com");
98
+ exports.rulesOrigin = rulesOrigin;
99
+ const runtimeconfigOrigin = () => utils.envOverride("FIREBASE_RUNTIMECONFIG_URL", "https://runtimeconfig.googleapis.com");
100
+ exports.runtimeconfigOrigin = runtimeconfigOrigin;
101
+ const storageOrigin = () => utils.envOverride("FIREBASE_STORAGE_URL", "https://storage.googleapis.com");
102
+ exports.storageOrigin = storageOrigin;
103
+ const firebaseStorageOrigin = () => utils.envOverride("FIREBASE_FIREBASESTORAGE_URL", "https://firebasestorage.googleapis.com");
104
+ exports.firebaseStorageOrigin = firebaseStorageOrigin;
105
+ const hostingApiOrigin = () => utils.envOverride("FIREBASE_HOSTING_API_URL", "https://firebasehosting.googleapis.com");
106
+ exports.hostingApiOrigin = hostingApiOrigin;
107
+ const cloudRunApiOrigin = () => utils.envOverride("CLOUD_RUN_API_URL", "https://run.googleapis.com");
108
+ exports.cloudRunApiOrigin = cloudRunApiOrigin;
109
+ const serviceUsageOrigin = () => utils.envOverride("FIREBASE_SERVICE_USAGE_URL", "https://serviceusage.googleapis.com");
110
+ exports.serviceUsageOrigin = serviceUsageOrigin;
111
+ const apphostingOrigin = () => utils.envOverride("APPHOSTING_URL", "https://firebaseapphosting.googleapis.com");
112
+ exports.apphostingOrigin = apphostingOrigin;
113
+ const githubOrigin = () => utils.envOverride("GITHUB_URL", "https://github.com");
114
+ exports.githubOrigin = githubOrigin;
115
+ const githubApiOrigin = () => utils.envOverride("GITHUB_API_URL", "https://api.github.com");
116
+ exports.githubApiOrigin = githubApiOrigin;
117
+ const secretManagerOrigin = () => utils.envOverride("CLOUD_SECRET_MANAGER_URL", "https://secretmanager.googleapis.com");
118
+ exports.secretManagerOrigin = secretManagerOrigin;
119
+ const computeOrigin = () => utils.envOverride("COMPUTE_URL", "https://compute.googleapis.com");
120
+ exports.computeOrigin = computeOrigin;
121
+ const githubClientId = () => utils.envOverride("GITHUB_CLIENT_ID", "89cf50f02ac6aaed3484");
122
+ exports.githubClientId = githubClientId;
123
+ const githubClientSecret = () => utils.envOverride("GITHUB_CLIENT_SECRET", "3330d14abc895d9a74d5f17cd7a00711fa2c5bf0");
124
+ exports.githubClientSecret = githubClientSecret;
69
125
  function getScopes() {
70
126
  return Array.from(commandScopes);
71
127
  }
package/lib/apiv2.js CHANGED
@@ -135,7 +135,9 @@ class Client {
135
135
  reqOptions.headers.set("Content-Type", "application/json");
136
136
  }
137
137
  }
138
- if (GOOGLE_CLOUD_QUOTA_PROJECT && GOOGLE_CLOUD_QUOTA_PROJECT !== "") {
138
+ if (!reqOptions.ignoreQuotaProject &&
139
+ GOOGLE_CLOUD_QUOTA_PROJECT &&
140
+ GOOGLE_CLOUD_QUOTA_PROJECT !== "") {
139
141
  reqOptions.headers.set(GOOG_USER_PROJECT_HEADER, GOOGLE_CLOUD_QUOTA_PROJECT);
140
142
  }
141
143
  return reqOptions;
@@ -10,11 +10,11 @@ const types_1 = require("./types");
10
10
  class AppDistributionClient {
11
11
  constructor() {
12
12
  this.appDistroV1Client = new apiv2_1.Client({
13
- urlPrefix: api_1.appDistributionOrigin,
13
+ urlPrefix: (0, api_1.appDistributionOrigin)(),
14
14
  apiVersion: "v1",
15
15
  });
16
16
  this.appDistroV1AlphaClient = new apiv2_1.Client({
17
- urlPrefix: api_1.appDistributionOrigin,
17
+ urlPrefix: (0, api_1.appDistributionOrigin)(),
18
18
  apiVersion: "v1alpha",
19
19
  });
20
20
  }
@@ -23,7 +23,7 @@ class AppDistributionClient {
23
23
  return apiResponse.body;
24
24
  }
25
25
  async uploadRelease(appName, distribution) {
26
- const client = new apiv2_1.Client({ urlPrefix: api_1.appDistributionOrigin });
26
+ const client = new apiv2_1.Client({ urlPrefix: (0, api_1.appDistributionOrigin)() });
27
27
  const apiResponse = await client.request({
28
28
  method: "POST",
29
29
  path: `/upload/v1/${appName}/releases:upload`,
@@ -40,7 +40,7 @@ class AppDistributionClient {
40
40
  async pollUploadStatus(operationName) {
41
41
  return operationPoller.pollOperation({
42
42
  pollerName: "App Distribution Upload Poller",
43
- apiOrigin: api_1.appDistributionOrigin,
43
+ apiOrigin: (0, api_1.appDistributionOrigin)(),
44
44
  apiVersion: "v1",
45
45
  operationResourceName: operationName,
46
46
  masterTimeout: 5 * 60 * 1000,
package/lib/auth.js CHANGED
@@ -172,10 +172,10 @@ function queryParamString(args) {
172
172
  return tokens.join("&");
173
173
  }
174
174
  function getLoginUrl(callbackUrl, userHint) {
175
- return (api_1.authOrigin +
175
+ return ((0, api_1.authOrigin)() +
176
176
  "/o/oauth2/auth?" +
177
177
  queryParamString({
178
- client_id: api_1.clientId,
178
+ client_id: (0, api_1.clientId)(),
179
179
  scope: SCOPES.join(" "),
180
180
  response_type: "code",
181
181
  state: _nonce,
@@ -186,8 +186,8 @@ function getLoginUrl(callbackUrl, userHint) {
186
186
  async function getTokensFromAuthorizationCode(code, callbackUrl, verifier) {
187
187
  const params = {
188
188
  code: code,
189
- client_id: api_1.clientId,
190
- client_secret: api_1.clientSecret,
189
+ client_id: (0, api_1.clientId)(),
190
+ client_secret: (0, api_1.clientSecret)(),
191
191
  redirect_uri: callbackUrl,
192
192
  grant_type: "authorization_code",
193
193
  };
@@ -196,7 +196,7 @@ async function getTokensFromAuthorizationCode(code, callbackUrl, verifier) {
196
196
  }
197
197
  let res;
198
198
  try {
199
- const client = new apiv2.Client({ urlPrefix: api_1.authOrigin, auth: false });
199
+ const client = new apiv2.Client({ urlPrefix: (0, api_1.authOrigin)(), auth: false });
200
200
  const form = new FormData();
201
201
  for (const [k, v] of Object.entries(params)) {
202
202
  form.append(k, v);
@@ -229,20 +229,20 @@ async function getTokensFromAuthorizationCode(code, callbackUrl, verifier) {
229
229
  }
230
230
  const GITHUB_SCOPES = ["read:user", "repo", "public_repo"];
231
231
  function getGithubLoginUrl(callbackUrl) {
232
- return (api_1.githubOrigin +
232
+ return ((0, api_1.githubOrigin)() +
233
233
  "/login/oauth/authorize?" +
234
234
  queryParamString({
235
- client_id: api_1.githubClientId,
235
+ client_id: (0, api_1.githubClientId)(),
236
236
  state: _nonce,
237
237
  redirect_uri: callbackUrl,
238
238
  scope: GITHUB_SCOPES.join(" "),
239
239
  }));
240
240
  }
241
241
  async function getGithubTokensFromAuthorizationCode(code, callbackUrl) {
242
- const client = new apiv2.Client({ urlPrefix: api_1.githubOrigin, auth: false });
242
+ const client = new apiv2.Client({ urlPrefix: (0, api_1.githubOrigin)(), auth: false });
243
243
  const data = {
244
- client_id: api_1.githubClientId,
245
- client_secret: api_1.githubClientSecret,
244
+ client_id: (0, api_1.githubClientId)(),
245
+ client_secret: (0, api_1.githubClientSecret)(),
246
246
  code,
247
247
  redirect_uri: callbackUrl,
248
248
  state: _nonce,
@@ -276,7 +276,7 @@ function urlsafeBase64(base64string) {
276
276
  async function loginRemotely() {
277
277
  var _a;
278
278
  const authProxyClient = new apiv2.Client({
279
- urlPrefix: api_1.authProxyOrigin,
279
+ urlPrefix: (0, api_1.authProxyOrigin)(),
280
280
  auth: false,
281
281
  });
282
282
  const sessionId = (0, uuid_1.v4)();
@@ -285,7 +285,7 @@ async function loginRemotely() {
285
285
  const attestToken = (_a = (await authProxyClient.post("/attest", {
286
286
  session_id: sessionId,
287
287
  })).body) === null || _a === void 0 ? void 0 : _a.token;
288
- const loginUrl = `${api_1.authProxyOrigin}/login?code_challenge=${codeChallenge}&session=${sessionId}&attest=${attestToken}`;
288
+ const loginUrl = `${(0, api_1.authProxyOrigin)()}/login?code_challenge=${codeChallenge}&session=${sessionId}&attest=${attestToken}`;
289
289
  logger_1.logger.info();
290
290
  logger_1.logger.info("To sign in to the Firebase CLI:");
291
291
  logger_1.logger.info();
@@ -304,7 +304,7 @@ async function loginRemotely() {
304
304
  message: "Enter authorization code:",
305
305
  });
306
306
  try {
307
- const tokens = await getTokensFromAuthorizationCode(code, `${api_1.authProxyOrigin}/complete`, codeVerifier);
307
+ const tokens = await getTokensFromAuthorizationCode(code, `${(0, api_1.authProxyOrigin)()}/complete`, codeVerifier);
308
308
  void (0, track_1.trackGA4)("login", { method: "google_remote" });
309
309
  return {
310
310
  user: jwt.decode(tokens.id_token, { json: true }),
@@ -457,11 +457,11 @@ async function refreshTokens(refreshToken, authScopes) {
457
457
  var _a, _b;
458
458
  logger_1.logger.debug("> refreshing access token with scopes:", JSON.stringify(authScopes));
459
459
  try {
460
- const client = new apiv2.Client({ urlPrefix: api_1.googleOrigin, auth: false });
460
+ const client = new apiv2.Client({ urlPrefix: (0, api_1.googleOrigin)(), auth: false });
461
461
  const data = {
462
462
  refresh_token: refreshToken,
463
- client_id: api_1.clientId,
464
- client_secret: api_1.clientSecret,
463
+ client_id: (0, api_1.clientId)(),
464
+ client_secret: (0, api_1.clientSecret)(),
465
465
  grant_type: "refresh_token",
466
466
  scope: (authScopes || []).join(" "),
467
467
  };
@@ -528,7 +528,7 @@ async function logout(refreshToken) {
528
528
  }
529
529
  logoutCurrentSession(refreshToken);
530
530
  try {
531
- const client = new apiv2.Client({ urlPrefix: api_1.authOrigin, auth: false });
531
+ const client = new apiv2.Client({ urlPrefix: (0, api_1.authOrigin)(), auth: false });
532
532
  await client.get("/o/oauth2/revoke", { queryParams: { token: refreshToken } });
533
533
  }
534
534
  catch (thrown) {
@@ -25,7 +25,7 @@ exports.command = new command_1.Command("hosting:disable")
25
25
  if (!confirm) {
26
26
  return;
27
27
  }
28
- const c = new apiv2_1.Client({ urlPrefix: api_1.hostingApiOrigin, apiVersion: "v1beta1", auth: true });
28
+ const c = new apiv2_1.Client({ urlPrefix: (0, api_1.hostingApiOrigin)(), apiVersion: "v1beta1", auth: true });
29
29
  await c.post(`/sites/${siteToDisable}/releases`, { type: "SITE_DISABLE" });
30
30
  utils.logSuccess(`Hosting has been disabled for ${clc.bold(siteToDisable)}. Deploy a new version to re-enable.`);
31
31
  });
@@ -82,7 +82,7 @@ exports.command = new command_1.Command("open [link]")
82
82
  url = link.url;
83
83
  }
84
84
  else if (link.arg === "hosting:site") {
85
- url = utils.addSubdomain(api.hostingOrigin, options.site);
85
+ url = utils.addSubdomain(api.hostingOrigin(), options.site);
86
86
  }
87
87
  else if (link.arg === "functions:log") {
88
88
  url = `https://console.developers.google.com/logs/viewer?resource=cloudfunctions.googleapis.com&project=${options.project}`;
@@ -14,7 +14,7 @@ function handleErrorResponse(response) {
14
14
  code: 2,
15
15
  });
16
16
  }
17
- const apiClient = new apiv2_1.Client({ urlPrefix: api_1.rtdbMetadataOrigin });
17
+ const apiClient = new apiv2_1.Client({ urlPrefix: (0, api_1.rtdbMetadataOrigin)() });
18
18
  async function listAllRulesets(databaseName) {
19
19
  const response = await apiClient.get(`/namespaces/${databaseName}/rulesets`, { resolveOnHTTPError: true });
20
20
  if (response.status === 200) {
@@ -43,7 +43,7 @@ async function getRulesetLabels(databaseName) {
43
43
  exports.getRulesetLabels = getRulesetLabels;
44
44
  async function createRuleset(databaseName, source) {
45
45
  const localApiClient = new apiv2_1.Client({
46
- urlPrefix: utils.addSubdomain(api_1.realtimeOrigin, databaseName),
46
+ urlPrefix: utils.addSubdomain((0, api_1.realtimeOrigin)(), databaseName),
47
47
  });
48
48
  const response = await localApiClient.post(`/.settings/rulesets.json`, source, { resolveOnHTTPError: true });
49
49
  if (response.status === 200) {
@@ -54,7 +54,7 @@ async function createRuleset(databaseName, source) {
54
54
  exports.createRuleset = createRuleset;
55
55
  async function setRulesetLabels(databaseName, labels) {
56
56
  const localApiClient = new apiv2_1.Client({
57
- urlPrefix: utils.addSubdomain(api_1.realtimeOrigin, databaseName),
57
+ urlPrefix: utils.addSubdomain((0, api_1.realtimeOrigin)(), databaseName),
58
58
  });
59
59
  const response = await localApiClient.put(`/.settings/ruleset_labels.json`, labels, {
60
60
  resolveOnHTTPError: true,
@@ -43,8 +43,8 @@ exports.clearCredentials = clearCredentials;
43
43
  function getCredential(tokens) {
44
44
  if (tokens.refresh_token) {
45
45
  return {
46
- client_id: api_1.clientId,
47
- client_secret: api_1.clientSecret,
46
+ client_id: (0, api_1.clientId)(),
47
+ client_secret: (0, api_1.clientSecret)(),
48
48
  refresh_token: tokens.refresh_token,
49
49
  type: "authorized_user",
50
50
  };
@@ -17,7 +17,7 @@ async function checkSpecForV2Functions(i) {
17
17
  exports.checkSpecForV2Functions = checkSpecForV2Functions;
18
18
  async function ensureNecessaryV2ApisAndRoles(options) {
19
19
  const projectId = (0, projectUtils_1.needProjectId)(options);
20
- await (0, ensureApiEnabled_1.ensure)(projectId, api_1.computeOrigin, "extensions", options.markdown);
20
+ await (0, ensureApiEnabled_1.ensure)(projectId, (0, api_1.computeOrigin)(), "extensions", options.markdown);
21
21
  await ensureComputeP4SARole(projectId);
22
22
  }
23
23
  exports.ensureNecessaryV2ApisAndRoles = ensureNecessaryV2ApisAndRoles;
@@ -171,7 +171,7 @@ function toBackend(build, paramValues) {
171
171
  }
172
172
  let regions = [];
173
173
  if (!bdEndpoint.region) {
174
- regions = [api.functionsDefaultRegion];
174
+ regions = [api.functionsDefaultRegion()];
175
175
  }
176
176
  else if (Array.isArray(bdEndpoint.region)) {
177
177
  regions = params.resolveList(bdEndpoint.region, paramValues);
@@ -116,7 +116,7 @@ class ArtifactRegistryCleaner {
116
116
  }
117
117
  exports.ArtifactRegistryCleaner = ArtifactRegistryCleaner;
118
118
  ArtifactRegistryCleaner.POLLER_OPTIONS = {
119
- apiOrigin: api_1.artifactRegistryDomain,
119
+ apiOrigin: (0, api_1.artifactRegistryDomain)(),
120
120
  apiVersion: artifactregistry.API_VERSION,
121
121
  masterTimeout: 5 * 60 * 1000,
122
122
  };
@@ -136,7 +136,7 @@ class ContainerRegistryCleaner {
136
136
  helper(location) {
137
137
  const subdomain = docker.GCR_SUBDOMAIN_MAPPING[location] || "us";
138
138
  if (!this.helpers[subdomain]) {
139
- const origin = `https://${subdomain}.${api_1.containerRegistryDomain}`;
139
+ const origin = `https://${subdomain}.${(0, api_1.containerRegistryDomain)()}`;
140
140
  this.helpers[subdomain] = new DockerHelper(origin);
141
141
  }
142
142
  return this.helpers[subdomain];
@@ -168,7 +168,7 @@ class ContainerRegistryCleaner {
168
168
  exports.ContainerRegistryCleaner = ContainerRegistryCleaner;
169
169
  function getHelper(cache, subdomain) {
170
170
  if (!cache[subdomain]) {
171
- cache[subdomain] = new DockerHelper(`https://${subdomain}.${api_1.containerRegistryDomain}`);
171
+ cache[subdomain] = new DockerHelper(`https://${subdomain}.${(0, api_1.containerRegistryDomain)()}`);
172
172
  }
173
173
  return cache[subdomain];
174
174
  }
@@ -212,7 +212,7 @@ async function listGcfPaths(projectId, locations, dockerHelpers = {}) {
212
212
  throw new error_1.FirebaseError(`Failed to search the following subdomains: ${failedSubdomains.join(",")}`);
213
213
  }
214
214
  return gcfDirs.map((loc) => {
215
- return `${docker.GCR_SUBDOMAIN_MAPPING[loc]}.${api_1.containerRegistryDomain}/${projectId}/gcf/${loc}`;
215
+ return `${docker.GCR_SUBDOMAIN_MAPPING[loc]}.${(0, api_1.containerRegistryDomain)()}/${projectId}/gcf/${loc}`;
216
216
  });
217
217
  }
218
218
  exports.listGcfPaths = listGcfPaths;
@@ -24,9 +24,12 @@ async function uploadSourceV1(projectId, source, wantBackend) {
24
24
  file: source.functionsSourceV1,
25
25
  stream: fs.createReadStream(source.functionsSourceV1),
26
26
  };
27
+ if (process.env.GOOGLE_CLOUD_QUOTA_PROJECT) {
28
+ (0, utils_1.logLabeledWarning)("functions", "GOOGLE_CLOUD_QUTOA_PROJECT is not usable when uploading source for Cloud Functions.");
29
+ }
27
30
  await gcs.upload(uploadOpts, uploadUrl, {
28
31
  "x-goog-content-length-range": "0,104857600",
29
- });
32
+ }, true);
30
33
  return uploadUrl;
31
34
  }
32
35
  async function uploadSourceV2(projectId, source, wantBackend) {
@@ -40,7 +43,10 @@ async function uploadSourceV2(projectId, source, wantBackend) {
40
43
  file: source.functionsSourceV2,
41
44
  stream: fs.createReadStream(source.functionsSourceV2),
42
45
  };
43
- await gcs.upload(uploadOpts, res.uploadUrl);
46
+ if (process.env.GOOGLE_CLOUD_QUOTA_PROJECT) {
47
+ (0, utils_1.logLabeledWarning)("functions", "GOOGLE_CLOUD_QUTOA_PROJECT is not usable when uploading source for Cloud Functions.");
48
+ }
49
+ await gcs.upload(uploadOpts, res.uploadUrl, undefined, true);
44
50
  return res.storageSource;
45
51
  }
46
52
  async function uploadCodebase(context, codebase, wantBackend) {
@@ -54,7 +54,7 @@ function isPermissionError(e) {
54
54
  }
55
55
  async function cloudBuildEnabled(projectId) {
56
56
  try {
57
- await (0, ensureApiEnabled_1.ensure)(projectId, api_1.cloudbuildOrigin, "functions");
57
+ await (0, ensureApiEnabled_1.ensure)(projectId, (0, api_1.cloudbuildOrigin)(), "functions");
58
58
  }
59
59
  catch (e) {
60
60
  if ((0, error_1.isBillingError)(e)) {
@@ -41,10 +41,10 @@ async function prepare(context, options, payload) {
41
41
  (0, utils_1.logLabeledBullet)("functions", `preparing codebase ${clc.bold(codebase)} for deployment`);
42
42
  }
43
43
  const checkAPIsEnabled = await Promise.all([
44
- ensureApiEnabled.ensure(projectId, api_1.functionsOrigin, "functions"),
45
- ensureApiEnabled.check(projectId, api_1.runtimeconfigOrigin, "runtimeconfig", true),
44
+ ensureApiEnabled.ensure(projectId, (0, api_1.functionsOrigin)(), "functions"),
45
+ ensureApiEnabled.check(projectId, (0, api_1.runtimeconfigOrigin)(), "runtimeconfig", true),
46
46
  ensure.cloudBuildEnabled(projectId),
47
- ensureApiEnabled.ensure(projectId, api_1.artifactRegistryDomain, "artifactregistry"),
47
+ ensureApiEnabled.ensure(projectId, (0, api_1.artifactRegistryDomain)(), "artifactregistry"),
48
48
  ]);
49
49
  const firebaseConfig = await functionsConfig.getFirebaseConfig(options);
50
50
  context.firebaseConfig = firebaseConfig;
@@ -158,7 +158,7 @@ async function prepare(context, options, payload) {
158
158
  return ensureApiEnabled.ensure(projectId, api, "functions", false);
159
159
  }));
160
160
  if (backend.someEndpoint(wantBackend, (e) => e.platform === "gcfv2")) {
161
- const V2_APIS = [api_1.cloudRunApiOrigin, api_1.eventarcOrigin, api_1.pubsubOrigin, api_1.storageOrigin];
161
+ const V2_APIS = [(0, api_1.cloudRunApiOrigin)(), (0, api_1.eventarcOrigin)(), (0, api_1.pubsubOrigin)(), (0, api_1.storageOrigin)()];
162
162
  const enablements = V2_APIS.map((api) => {
163
163
  return ensureApiEnabled.ensure(context.projectId, api, "functions");
164
164
  });
@@ -189,6 +189,7 @@ function inferDetailsFromExisting(want, have, usedDotenv) {
189
189
  if (!haveE) {
190
190
  continue;
191
191
  }
192
+ wantE.runServiceId = haveE.runServiceId;
192
193
  if (!usedDotenv) {
193
194
  wantE.environmentVariables = Object.assign(Object.assign({}, haveE.environmentVariables), wantE.environmentVariables);
194
195
  }
@@ -28,19 +28,19 @@ const v1_1 = require("../../../functions/events/v1");
28
28
  const checkIam_1 = require("../checkIam");
29
29
  const functionsDeployHelper_1 = require("../functionsDeployHelper");
30
30
  const gcfV1PollerOptions = {
31
- apiOrigin: api_1.functionsOrigin,
31
+ apiOrigin: (0, api_1.functionsOrigin)(),
32
32
  apiVersion: gcf.API_VERSION,
33
33
  masterTimeout: 25 * 60 * 1000,
34
34
  maxBackoff: 10000,
35
35
  };
36
36
  const gcfV2PollerOptions = {
37
- apiOrigin: api_1.functionsV2Origin,
37
+ apiOrigin: (0, api_1.functionsV2Origin)(),
38
38
  apiVersion: gcfV2.API_VERSION,
39
39
  masterTimeout: 25 * 60 * 1000,
40
40
  maxBackoff: 10000,
41
41
  };
42
42
  const eventarcPollerOptions = {
43
- apiOrigin: api_1.eventarcOrigin,
43
+ apiOrigin: (0, api_1.eventarcOrigin)(),
44
44
  apiVersion: "v1",
45
45
  masterTimeout: 25 * 60 * 1000,
46
46
  maxBackoff: 10000,
@@ -42,7 +42,7 @@ async function detectFromYaml(directory, project, runtime) {
42
42
  }
43
43
  logger_1.logger.debug("Found functions.yaml. Got spec:", text);
44
44
  const parsed = yaml.load(text);
45
- return yamlToBuild(parsed, project, api.functionsDefaultRegion, runtime);
45
+ return yamlToBuild(parsed, project, api.functionsDefaultRegion(), runtime);
46
46
  }
47
47
  exports.detectFromYaml = detectFromYaml;
48
48
  async function detectFromPort(port, project, runtime, timeout = 10000) {
@@ -80,6 +80,6 @@ async function detectFromPort(port, project, runtime, timeout = 10000) {
80
80
  logger_1.logger.debug("Failed to parse functions.yaml", err);
81
81
  throw new error_1.FirebaseError(`Failed to load function definition from source: ${text}`);
82
82
  }
83
- return yamlToBuild(parsed, project, api.functionsDefaultRegion, runtime);
83
+ return yamlToBuild(parsed, project, api.functionsDefaultRegion(), runtime);
84
84
  }
85
85
  exports.detectFromPort = detectFromPort;
@@ -92,7 +92,7 @@ function addResourcesToBuild(projectId, runtime, annotation, want) {
92
92
  var _a, _b;
93
93
  Object.freeze(annotation);
94
94
  const toSeconds = (0, functional_1.nullsafeVisitor)(proto.secondsFromDuration);
95
- const regions = annotation.regions || [api.functionsDefaultRegion];
95
+ const regions = annotation.regions || [api.functionsDefaultRegion()];
96
96
  let triggered;
97
97
  const triggerCount = +!!annotation.httpsTrigger +
98
98
  +!!annotation.eventTrigger +
@@ -214,7 +214,7 @@ exports.addResourcesToBuild = addResourcesToBuild;
214
214
  function addResourcesToBackend(projectId, runtime, annotation, want) {
215
215
  var _a;
216
216
  Object.freeze(annotation);
217
- for (const region of annotation.regions || [api.functionsDefaultRegion]) {
217
+ for (const region of annotation.regions || [api.functionsDefaultRegion()]) {
218
218
  let triggered;
219
219
  const triggerCount = +!!annotation.httpsTrigger +
220
220
  +!!annotation.eventTrigger +