firebase-tools 10.0.1 → 10.1.3
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 +9 -8
- package/lib/accountImporter.js +10 -8
- package/lib/api.js +1 -0
- package/lib/apiv2.js +91 -48
- package/lib/appdistribution/client.js +1 -1
- package/lib/appdistribution/options-parser-util.js +1 -1
- package/lib/archiveDirectory.js +63 -73
- package/lib/auth.js +2 -2
- package/lib/bin/firebase.js +1 -1
- package/lib/command.js +26 -26
- package/lib/commands/appdistribution-distribute.js +4 -4
- package/lib/commands/appdistribution-testers-add.js +2 -2
- package/lib/commands/appdistribution-testers-remove.js +2 -2
- package/lib/commands/apps-android-sha-create.js +2 -2
- package/lib/commands/apps-android-sha-delete.js +2 -2
- package/lib/commands/apps-android-sha-list.js +2 -2
- package/lib/commands/apps-create.js +9 -9
- package/lib/commands/apps-list.js +3 -3
- package/lib/commands/apps-sdkconfig.js +8 -8
- package/lib/commands/auth-export.js +26 -25
- package/lib/commands/auth-import.js +88 -78
- package/lib/commands/database-get.js +1 -1
- package/lib/commands/database-instances-create.js +4 -4
- package/lib/commands/database-instances-list.js +4 -4
- package/lib/commands/database-profile.js +1 -1
- package/lib/commands/database-push.js +1 -1
- package/lib/commands/database-remove.js +2 -2
- package/lib/commands/database-set.js +2 -2
- package/lib/commands/database-settings-get.js +1 -1
- package/lib/commands/database-settings-set.js +1 -1
- package/lib/commands/database-update.js +2 -2
- package/lib/commands/ext-configure.js +3 -3
- package/lib/commands/ext-dev-deprecate.js +4 -4
- package/lib/commands/ext-dev-extension-delete.js +3 -3
- package/lib/commands/ext-dev-init.js +4 -4
- package/lib/commands/ext-dev-list.js +1 -1
- package/lib/commands/ext-dev-publish.js +4 -4
- package/lib/commands/ext-dev-register.js +6 -6
- package/lib/commands/ext-dev-undeprecate.js +4 -4
- package/lib/commands/ext-dev-unpublish.js +3 -3
- package/lib/commands/ext-dev-usage.js +140 -0
- package/lib/commands/ext-export.js +8 -8
- package/lib/commands/ext-info.js +5 -5
- package/lib/commands/ext-install.js +27 -23
- package/lib/commands/ext-list.js +2 -2
- package/lib/commands/ext-sources-create.js +2 -2
- package/lib/commands/ext-uninstall.js +4 -4
- package/lib/commands/ext-update.js +18 -18
- package/lib/commands/ext.js +3 -3
- package/lib/commands/firestore-delete.js +1 -1
- package/lib/commands/functions-config-clone.js +22 -23
- package/lib/commands/functions-config-export.js +11 -11
- package/lib/commands/functions-config-get.js +22 -22
- package/lib/commands/functions-config-set.js +24 -22
- package/lib/commands/functions-config-unset.js +20 -22
- package/lib/commands/functions-delete.js +3 -3
- package/lib/commands/functions-deletegcfartifacts.js +4 -4
- package/lib/commands/functions-list.js +1 -1
- package/lib/commands/functions-log.js +1 -1
- package/lib/commands/help.js +12 -12
- package/lib/commands/hosting-channel-create.js +13 -13
- package/lib/commands/hosting-channel-delete.js +10 -10
- package/lib/commands/hosting-channel-deploy.js +18 -18
- package/lib/commands/hosting-channel-list.js +5 -5
- package/lib/commands/hosting-channel-open.js +9 -9
- package/lib/commands/hosting-clone.js +16 -16
- package/lib/commands/hosting-disable.js +1 -1
- package/lib/commands/hosting-sites-create.js +7 -7
- package/lib/commands/hosting-sites-delete.js +7 -7
- package/lib/commands/hosting-sites-get.js +2 -2
- package/lib/commands/hosting-sites-list.js +3 -3
- package/lib/commands/index.js +1 -0
- package/lib/commands/login-ci.js +10 -10
- package/lib/commands/login.js +2 -2
- package/lib/commands/logout.js +1 -1
- package/lib/commands/open.js +1 -1
- package/lib/commands/projects-addfirebase.js +2 -2
- package/lib/commands/projects-create.js +2 -2
- package/lib/commands/projects-list.js +1 -1
- package/lib/commands/remoteconfig-get.js +3 -3
- package/lib/commands/remoteconfig-rollback.js +3 -3
- package/lib/commands/remoteconfig-versions-list.js +7 -2
- package/lib/commands/setup-emulators-database.js +8 -7
- package/lib/commands/setup-emulators-firestore.js +8 -7
- package/lib/commands/setup-emulators-pubsub.js +5 -4
- package/lib/commands/setup-emulators-storage.js +4 -3
- package/lib/commands/setup-emulators-ui.js +8 -7
- package/lib/commands/target-apply.js +17 -16
- package/lib/commands/target-clear.js +11 -10
- package/lib/commands/target-remove.js +10 -9
- package/lib/commands/target.js +20 -20
- package/lib/config.js +6 -6
- package/lib/database/api.js +2 -2
- package/lib/database/metadata.js +16 -24
- package/lib/defaultCredentials.js +3 -3
- package/lib/deploy/extensions/deploy.js +4 -4
- package/lib/deploy/extensions/deploymentSummary.js +5 -4
- package/lib/deploy/extensions/index.js +1 -0
- package/lib/deploy/extensions/params.js +1 -1
- package/lib/deploy/extensions/planner.js +3 -3
- package/lib/deploy/extensions/prepare.js +9 -9
- package/lib/deploy/extensions/release.js +1 -1
- package/lib/deploy/extensions/secrets.js +7 -7
- package/lib/deploy/extensions/validate.js +2 -2
- package/lib/deploy/functions/backend.js +9 -5
- package/lib/deploy/functions/checkIam.js +7 -7
- package/lib/deploy/functions/containerCleaner.js +3 -3
- package/lib/deploy/functions/deploy.js +4 -4
- package/lib/deploy/functions/ensureCloudBuildEnabled.js +3 -3
- package/lib/deploy/functions/index.js +1 -0
- package/lib/deploy/functions/prepare.js +29 -23
- package/lib/deploy/functions/prompts.js +5 -5
- package/lib/deploy/functions/release/executor.js +4 -1
- package/lib/deploy/functions/release/fabricator.js +9 -6
- package/lib/deploy/functions/release/index.js +2 -2
- package/lib/deploy/functions/release/planner.js +6 -6
- package/lib/deploy/functions/release/reporter.js +8 -4
- package/lib/deploy/functions/runtimes/discovery/index.js +2 -2
- package/lib/deploy/functions/runtimes/discovery/v1alpha1.js +14 -14
- package/lib/deploy/functions/runtimes/golang/index.js +11 -14
- package/lib/deploy/functions/runtimes/index.js +6 -10
- package/lib/deploy/functions/runtimes/node/index.js +6 -10
- package/lib/deploy/functions/runtimes/node/parseTriggers.js +3 -3
- package/lib/deploy/functions/runtimes/node/validate.js +2 -1
- package/lib/deploy/functions/services/storage.js +1 -1
- package/lib/deploy/functions/triggerRegionHelper.js +1 -1
- package/lib/deploy/functions/validate.js +32 -4
- package/lib/deploy/hosting/convertConfig.js +45 -24
- package/lib/deploy/hosting/deploy.js +7 -7
- package/lib/deploy/hosting/prepare.js +1 -1
- package/lib/deploy/hosting/uploader.js +1 -1
- package/lib/deploy/hosting/validate.js +3 -3
- package/lib/deploy/remoteconfig/prepare.js +3 -3
- package/lib/deploy/remoteconfig/release.js +3 -3
- package/lib/deploy/storage/deploy.js +1 -1
- package/lib/deploy/storage/release.js +2 -2
- package/lib/detectProjectRoot.js +5 -5
- package/lib/emulator/auth/apiSpec.js +13 -7
- package/lib/emulator/auth/handlers.js +3 -3
- package/lib/emulator/auth/index.js +1 -1
- package/lib/emulator/auth/operations.js +256 -248
- package/lib/emulator/auth/server.js +11 -8
- package/lib/emulator/auth/state.js +12 -12
- package/lib/emulator/commandUtils.js +5 -5
- package/lib/emulator/controller.js +16 -11
- package/lib/emulator/downloadableEmulators.js +5 -4
- package/lib/emulator/emulatorLogger.js +1 -1
- package/lib/emulator/functionsEmulator.js +110 -75
- package/lib/emulator/functionsEmulatorRuntime.js +36 -21
- package/lib/emulator/functionsEmulatorShell.js +3 -2
- package/lib/emulator/functionsRuntimeWorker.js +1 -1
- package/lib/emulator/hubExport.js +2 -2
- package/lib/emulator/storage/apis/firebase.js +2 -2
- package/lib/emulator/storage/apis/gcloud.js +2 -2
- package/lib/emulator/storage/cloudFunctions.js +1 -1
- package/lib/emulator/storage/files.js +14 -14
- package/lib/emulator/storage/index.js +2 -2
- package/lib/emulator/storage/metadata.js +7 -6
- package/lib/emulator/storage/rules/runtime.js +10 -9
- package/lib/emulator/storage/server.js +2 -2
- package/lib/ensureApiEnabled.js +7 -7
- package/lib/error.js +3 -3
- package/lib/extensions/askUserForConsent.js +3 -4
- package/lib/extensions/askUserForParam.js +11 -11
- package/lib/extensions/billingMigrationHelper.js +2 -2
- package/lib/extensions/changelog.js +4 -4
- package/lib/extensions/displayExtensionInfo.js +6 -6
- package/lib/extensions/emulator/optionsHelper.js +1 -1
- package/lib/extensions/emulator/specHelper.js +1 -1
- package/lib/extensions/emulator/triggerHelper.js +1 -1
- package/lib/extensions/export.js +6 -6
- package/lib/extensions/extensionsApi.js +68 -110
- package/lib/extensions/extensionsHelper.js +56 -43
- package/lib/extensions/listExtensions.js +1 -1
- package/lib/extensions/localHelper.js +1 -1
- package/lib/extensions/metricsTypeDef.js +2 -0
- package/lib/extensions/metricsUtils.js +98 -0
- package/lib/extensions/paramHelper.js +6 -6
- package/lib/extensions/provisioningHelper.js +13 -14
- package/lib/extensions/resolveSource.js +6 -6
- package/lib/extensions/secretsUtils.js +3 -3
- package/lib/extensions/updateHelper.js +10 -10
- package/lib/extensions/utils.js +1 -1
- package/lib/extensions/warnings.js +11 -10
- package/lib/fetchWebSetup.js +2 -2
- package/lib/filterTargets.js +2 -2
- package/lib/firestore/indexes.js +2 -2
- package/lib/fsAsync.js +3 -3
- package/lib/fsutils.js +2 -2
- package/lib/functional.js +2 -1
- package/lib/functions/env.js +1 -1
- package/lib/functions/runtimeConfigExport.js +4 -4
- package/lib/functionsConfig.js +7 -8
- package/lib/functionsShellCommandAction.js +4 -3
- package/lib/gcp/cloudbilling.js +8 -19
- package/lib/gcp/cloudfunctions.js +22 -46
- package/lib/gcp/cloudlogging.js +8 -11
- package/lib/gcp/cloudmonitoring.js +77 -0
- package/lib/gcp/cloudscheduler.js +8 -19
- package/lib/gcp/firedata.js +5 -4
- package/lib/gcp/firestore.js +5 -5
- package/lib/gcp/iam.js +19 -34
- package/lib/gcp/resourceManager.js +10 -15
- package/lib/gcp/rules.js +18 -41
- package/lib/gcp/runtimeconfig.js +31 -53
- package/lib/gcp/secretManager.js +24 -45
- package/lib/gcp/storage.js +24 -29
- package/lib/getDefaultDatabaseInstance.js +1 -1
- package/lib/getDefaultHostingSite.js +1 -1
- package/lib/getProjectNumber.js +2 -2
- package/lib/handlePreviewToggles.js +5 -5
- package/lib/hosting/api.js +6 -6
- package/lib/hosting/cloudRunProxy.js +6 -6
- package/lib/hosting/functionsProxy.js +3 -3
- package/lib/hosting/implicitInit.js +2 -2
- package/lib/hosting/normalizedHostingConfigs.js +3 -3
- package/lib/hosting/proxy.js +2 -2
- package/lib/init/features/account.js +7 -7
- package/lib/init/features/database.js +9 -9
- package/lib/init/features/emulators.js +8 -8
- package/lib/init/features/firestore/index.js +3 -3
- package/lib/init/features/firestore/indexes.js +2 -2
- package/lib/init/features/firestore/rules.js +2 -2
- package/lib/init/features/functions/golang.js +4 -4
- package/lib/init/features/functions/index.js +4 -4
- package/lib/init/features/hosting/github.js +31 -31
- package/lib/init/features/project.js +8 -8
- package/lib/init/features/remoteconfig.js +2 -2
- package/lib/init/features/storage.js +2 -2
- package/lib/listFiles.js +1 -1
- package/lib/management/apps.js +3 -3
- package/lib/management/projects.js +6 -6
- package/lib/previews.js +2 -2
- package/lib/profiler.js +1 -1
- package/lib/projectPath.js +1 -1
- package/lib/projectUtils.js +2 -2
- package/lib/prompt.js +0 -1
- package/lib/rc.js +1 -1
- package/lib/remoteconfig/get.js +14 -8
- package/lib/remoteconfig/rollback.js +13 -6
- package/lib/remoteconfig/versionslist.js +13 -7
- package/lib/requireAuth.js +2 -2
- package/lib/requireDatabaseInstance.js +1 -1
- package/lib/requireHostingSite.js +1 -1
- package/lib/requirePermissions.js +4 -4
- package/lib/rulesDeploy.js +2 -2
- package/lib/serve/functions.js +14 -7
- package/lib/serve/hosting.js +7 -7
- package/lib/utils.js +3 -2
- package/npm-shrinkwrap.json +24090 -0
- package/package.json +36 -31
- package/schema/firebase-config.json +387 -12
- package/lib/commands/functions-config-legacy.js +0 -45
- package/lib/prepareFirebaseRules.js +0 -58
package/lib/gcp/rules.js
CHANGED
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.testRuleset = exports.updateOrCreateRelease = exports.updateRelease = exports.createRelease = exports.createRuleset = exports.deleteRuleset = exports.getRulesetId = exports.listAllRulesets = exports.listRulesets = exports.getRulesetContent = exports.listAllReleases = exports.listReleases = exports.getLatestRulesetName = void 0;
|
|
4
4
|
const _ = require("lodash");
|
|
5
|
-
const
|
|
5
|
+
const api_1 = require("../api");
|
|
6
|
+
const apiv2_1 = require("../apiv2");
|
|
6
7
|
const logger_1 = require("../logger");
|
|
7
8
|
const utils = require("../utils");
|
|
8
9
|
const API_VERSION = "v1";
|
|
10
|
+
const apiClient = new apiv2_1.Client({ urlPrefix: api_1.rulesOrigin, apiVersion: API_VERSION });
|
|
9
11
|
function _handleErrorResponse(response) {
|
|
10
12
|
if (response.body && response.body.error) {
|
|
11
13
|
return utils.reject(response.body.error, { code: 2 });
|
|
@@ -18,7 +20,7 @@ function _handleErrorResponse(response) {
|
|
|
18
20
|
async function getLatestRulesetName(projectId, service) {
|
|
19
21
|
const releases = await listAllReleases(projectId);
|
|
20
22
|
const prefix = `projects/${projectId}/releases/${service}`;
|
|
21
|
-
const release = _.find(releases, (r) => r.name.
|
|
23
|
+
const release = _.find(releases, (r) => r.name.startsWith(prefix));
|
|
22
24
|
if (!release) {
|
|
23
25
|
return null;
|
|
24
26
|
}
|
|
@@ -26,11 +28,9 @@ async function getLatestRulesetName(projectId, service) {
|
|
|
26
28
|
}
|
|
27
29
|
exports.getLatestRulesetName = getLatestRulesetName;
|
|
28
30
|
const MAX_RELEASES_PAGE_SIZE = 10;
|
|
29
|
-
async function listReleases(projectId, pageToken) {
|
|
30
|
-
const response = await
|
|
31
|
-
|
|
32
|
-
origin: api.rulesOrigin,
|
|
33
|
-
query: {
|
|
31
|
+
async function listReleases(projectId, pageToken = "") {
|
|
32
|
+
const response = await apiClient.get(`/projects/${projectId}/releases`, {
|
|
33
|
+
queryParams: {
|
|
34
34
|
pageSize: MAX_RELEASES_PAGE_SIZE,
|
|
35
35
|
pageToken,
|
|
36
36
|
},
|
|
@@ -55,9 +55,8 @@ async function listAllReleases(projectId) {
|
|
|
55
55
|
}
|
|
56
56
|
exports.listAllReleases = listAllReleases;
|
|
57
57
|
async function getRulesetContent(name) {
|
|
58
|
-
const response = await
|
|
59
|
-
|
|
60
|
-
origin: api.rulesOrigin,
|
|
58
|
+
const response = await apiClient.get(`/${name}`, {
|
|
59
|
+
skipLog: { resBody: true },
|
|
61
60
|
});
|
|
62
61
|
if (response.status === 200) {
|
|
63
62
|
const source = response.body.source;
|
|
@@ -67,14 +66,13 @@ async function getRulesetContent(name) {
|
|
|
67
66
|
}
|
|
68
67
|
exports.getRulesetContent = getRulesetContent;
|
|
69
68
|
const MAX_RULESET_PAGE_SIZE = 100;
|
|
70
|
-
async function listRulesets(projectId, pageToken) {
|
|
71
|
-
const response = await
|
|
72
|
-
|
|
73
|
-
origin: api.rulesOrigin,
|
|
74
|
-
query: {
|
|
69
|
+
async function listRulesets(projectId, pageToken = "") {
|
|
70
|
+
const response = await apiClient.get(`/projects/${projectId}/rulesets`, {
|
|
71
|
+
queryParams: {
|
|
75
72
|
pageSize: MAX_RULESET_PAGE_SIZE,
|
|
76
73
|
pageToken,
|
|
77
74
|
},
|
|
75
|
+
skipLog: { resBody: true },
|
|
78
76
|
});
|
|
79
77
|
if (response.status === 200) {
|
|
80
78
|
return response.body;
|
|
@@ -100,10 +98,7 @@ function getRulesetId(ruleset) {
|
|
|
100
98
|
}
|
|
101
99
|
exports.getRulesetId = getRulesetId;
|
|
102
100
|
async function deleteRuleset(projectId, id) {
|
|
103
|
-
const response = await
|
|
104
|
-
auth: true,
|
|
105
|
-
origin: api.rulesOrigin,
|
|
106
|
-
});
|
|
101
|
+
const response = await apiClient.delete(`/projects/${projectId}/rulesets/${id}`);
|
|
107
102
|
if (response.status === 200) {
|
|
108
103
|
return;
|
|
109
104
|
}
|
|
@@ -112,11 +107,7 @@ async function deleteRuleset(projectId, id) {
|
|
|
112
107
|
exports.deleteRuleset = deleteRuleset;
|
|
113
108
|
async function createRuleset(projectId, files) {
|
|
114
109
|
const payload = { source: { files } };
|
|
115
|
-
const response = await
|
|
116
|
-
auth: true,
|
|
117
|
-
data: payload,
|
|
118
|
-
origin: api.rulesOrigin,
|
|
119
|
-
});
|
|
110
|
+
const response = await apiClient.post(`/projects/${projectId}/rulesets`, payload, { skipLog: { body: true } });
|
|
120
111
|
if (response.status === 200) {
|
|
121
112
|
logger_1.logger.debug("[rules] created ruleset", response.body.name);
|
|
122
113
|
return response.body.name;
|
|
@@ -129,11 +120,7 @@ async function createRelease(projectId, rulesetName, releaseName) {
|
|
|
129
120
|
name: `projects/${projectId}/releases/${releaseName}`,
|
|
130
121
|
rulesetName,
|
|
131
122
|
};
|
|
132
|
-
const response = await
|
|
133
|
-
auth: true,
|
|
134
|
-
data: payload,
|
|
135
|
-
origin: api.rulesOrigin,
|
|
136
|
-
});
|
|
123
|
+
const response = await apiClient.post(`/projects/${projectId}/releases`, payload);
|
|
137
124
|
if (response.status === 200) {
|
|
138
125
|
logger_1.logger.debug("[rules] created release", response.body.name);
|
|
139
126
|
return response.body.name;
|
|
@@ -148,11 +135,7 @@ async function updateRelease(projectId, rulesetName, releaseName) {
|
|
|
148
135
|
rulesetName,
|
|
149
136
|
},
|
|
150
137
|
};
|
|
151
|
-
const response = await
|
|
152
|
-
auth: true,
|
|
153
|
-
data: payload,
|
|
154
|
-
origin: api.rulesOrigin,
|
|
155
|
-
});
|
|
138
|
+
const response = await apiClient.patch(`/projects/${projectId}/releases/${releaseName}`, payload);
|
|
156
139
|
if (response.status === 200) {
|
|
157
140
|
logger_1.logger.debug("[rules] updated release", response.body.name);
|
|
158
141
|
return response.body.name;
|
|
@@ -169,12 +152,6 @@ async function updateOrCreateRelease(projectId, rulesetName, releaseName) {
|
|
|
169
152
|
}
|
|
170
153
|
exports.updateOrCreateRelease = updateOrCreateRelease;
|
|
171
154
|
function testRuleset(projectId, files) {
|
|
172
|
-
return
|
|
173
|
-
origin: api.rulesOrigin,
|
|
174
|
-
data: {
|
|
175
|
-
source: { files },
|
|
176
|
-
},
|
|
177
|
-
auth: true,
|
|
178
|
-
});
|
|
155
|
+
return apiClient.post(`/projects/${encodeURIComponent(projectId)}:test`, { source: { files } }, { skipLog: { body: true } });
|
|
179
156
|
}
|
|
180
157
|
exports.testRuleset = testRuleset;
|
package/lib/gcp/runtimeconfig.js
CHANGED
|
@@ -1,30 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
const { runtimeconfigOrigin } = require("../api");
|
|
3
|
+
const { Client } = require("../apiv2");
|
|
4
4
|
const { logger } = require("../logger");
|
|
5
5
|
var _ = require("lodash");
|
|
6
|
-
|
|
6
|
+
const API_VERSION = "v1beta1";
|
|
7
|
+
const apiClient = new Client({ urlPrefix: runtimeconfigOrigin, apiVersion: API_VERSION });
|
|
7
8
|
function _listConfigs(projectId) {
|
|
8
|
-
return
|
|
9
|
-
.
|
|
10
|
-
auth: true,
|
|
11
|
-
origin: api.runtimeconfigOrigin,
|
|
9
|
+
return apiClient
|
|
10
|
+
.get(`/projects/${projectId}/configs`, {
|
|
12
11
|
retryCodes: [500, 503],
|
|
13
12
|
})
|
|
14
13
|
.then(function (resp) {
|
|
15
|
-
return
|
|
14
|
+
return resp.body.configs;
|
|
16
15
|
});
|
|
17
16
|
}
|
|
18
17
|
function _createConfig(projectId, configId) {
|
|
19
18
|
var path = _.join(["projects", projectId, "configs"], "/");
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
origin: api.runtimeconfigOrigin,
|
|
25
|
-
data: {
|
|
26
|
-
name: path + "/" + configId,
|
|
27
|
-
},
|
|
19
|
+
return apiClient
|
|
20
|
+
.post(`/projects/${projectId}/configs`, {
|
|
21
|
+
name: path + "/" + configId,
|
|
22
|
+
}, {
|
|
28
23
|
retryCodes: [500, 503],
|
|
29
24
|
})
|
|
30
25
|
.catch(function (err) {
|
|
@@ -35,10 +30,8 @@ function _createConfig(projectId, configId) {
|
|
|
35
30
|
});
|
|
36
31
|
}
|
|
37
32
|
function _deleteConfig(projectId, configId) {
|
|
38
|
-
return
|
|
39
|
-
.
|
|
40
|
-
auth: true,
|
|
41
|
-
origin: api.runtimeconfigOrigin,
|
|
33
|
+
return apiClient
|
|
34
|
+
.delete(`/projects/${projectId}/configs/${configId}`, {
|
|
42
35
|
retryCodes: [500, 503],
|
|
43
36
|
})
|
|
44
37
|
.catch(function (err) {
|
|
@@ -50,10 +43,8 @@ function _deleteConfig(projectId, configId) {
|
|
|
50
43
|
});
|
|
51
44
|
}
|
|
52
45
|
function _listVariables(configPath) {
|
|
53
|
-
return
|
|
54
|
-
.
|
|
55
|
-
auth: true,
|
|
56
|
-
origin: api.runtimeconfigOrigin,
|
|
46
|
+
return apiClient
|
|
47
|
+
.get(`${configPath}/variables`, {
|
|
57
48
|
retryCodes: [500, 503],
|
|
58
49
|
})
|
|
59
50
|
.then(function (resp) {
|
|
@@ -61,10 +52,8 @@ function _listVariables(configPath) {
|
|
|
61
52
|
});
|
|
62
53
|
}
|
|
63
54
|
function _getVariable(varPath) {
|
|
64
|
-
return
|
|
65
|
-
.
|
|
66
|
-
auth: true,
|
|
67
|
-
origin: api.runtimeconfigOrigin,
|
|
55
|
+
return apiClient
|
|
56
|
+
.get(varPath, {
|
|
68
57
|
retryCodes: [500, 503],
|
|
69
58
|
})
|
|
70
59
|
.then(function (resp) {
|
|
@@ -72,16 +61,12 @@ function _getVariable(varPath) {
|
|
|
72
61
|
});
|
|
73
62
|
}
|
|
74
63
|
function _createVariable(projectId, configId, varId, value) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
data: {
|
|
82
|
-
name: path + "/" + varId,
|
|
83
|
-
text: value,
|
|
84
|
-
},
|
|
64
|
+
const path = `/projects/${projectId}/configs/${configId}/variables`;
|
|
65
|
+
return apiClient
|
|
66
|
+
.post(path, {
|
|
67
|
+
name: `${path}/${varId}`,
|
|
68
|
+
text: value,
|
|
69
|
+
}, {
|
|
85
70
|
retryCodes: [500, 503],
|
|
86
71
|
})
|
|
87
72
|
.catch(function (err) {
|
|
@@ -94,15 +79,11 @@ function _createVariable(projectId, configId, varId, value) {
|
|
|
94
79
|
});
|
|
95
80
|
}
|
|
96
81
|
function _updateVariable(projectId, configId, varId, value) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
data: {
|
|
103
|
-
name: path,
|
|
104
|
-
text: value,
|
|
105
|
-
},
|
|
82
|
+
const path = `/projects/${projectId}/configs/${configId}/variables/${varId}`;
|
|
83
|
+
return apiClient.put(path, {
|
|
84
|
+
name: path,
|
|
85
|
+
text: value,
|
|
86
|
+
}, {
|
|
106
87
|
retryCodes: [500, 503],
|
|
107
88
|
});
|
|
108
89
|
}
|
|
@@ -120,13 +101,10 @@ function _setVariable(projectId, configId, varId, value) {
|
|
|
120
101
|
});
|
|
121
102
|
}
|
|
122
103
|
function _deleteVariable(projectId, configId, varId) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return api
|
|
126
|
-
.request("DELETE", endpoint, {
|
|
127
|
-
auth: true,
|
|
128
|
-
origin: api.runtimeconfigOrigin,
|
|
104
|
+
return apiClient
|
|
105
|
+
.delete(`/projects/${projectId}/configs/${configId}/variables/${varId}`, {
|
|
129
106
|
retryCodes: [500, 503],
|
|
107
|
+
queryParams: { recursive: "true" },
|
|
130
108
|
})
|
|
131
109
|
.catch(function (err) {
|
|
132
110
|
if (_.get(err, "context.response.statusCode") === 404) {
|
package/lib/gcp/secretManager.js
CHANGED
|
@@ -2,32 +2,26 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.grantServiceAgentRole = exports.addVersion = exports.createSecret = exports.toSecretVersionResourceName = exports.parseSecretVersionResourceName = exports.parseSecretResourceName = exports.secretExists = exports.getSecretVersion = exports.getSecret = exports.listSecrets = exports.secretManagerConsoleUri = void 0;
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
|
-
const
|
|
6
|
-
|
|
5
|
+
const api_1 = require("../api");
|
|
6
|
+
const apiv2_1 = require("../apiv2");
|
|
7
|
+
const secretManagerConsoleUri = (projectId) => `https://console.cloud.google.com/security/secret-manager?project=${projectId}`;
|
|
8
|
+
exports.secretManagerConsoleUri = secretManagerConsoleUri;
|
|
9
|
+
const apiClient = new apiv2_1.Client({ urlPrefix: api_1.secretManagerOrigin, apiVersion: "v1beta1" });
|
|
7
10
|
async function listSecrets(projectId) {
|
|
8
|
-
const listRes = await
|
|
9
|
-
auth: true,
|
|
10
|
-
origin: api.secretManagerOrigin,
|
|
11
|
-
});
|
|
11
|
+
const listRes = await apiClient.get(`/projects/${projectId}/secrets`);
|
|
12
12
|
return listRes.body.secrets.map((s) => parseSecretResourceName(s.name));
|
|
13
13
|
}
|
|
14
14
|
exports.listSecrets = listSecrets;
|
|
15
15
|
async function getSecret(projectId, name) {
|
|
16
16
|
var _a;
|
|
17
|
-
const getRes = await
|
|
18
|
-
auth: true,
|
|
19
|
-
origin: api.secretManagerOrigin,
|
|
20
|
-
});
|
|
17
|
+
const getRes = await apiClient.get(`/projects/${projectId}/secrets/${name}`);
|
|
21
18
|
const secret = parseSecretResourceName(getRes.body.name);
|
|
22
19
|
secret.labels = (_a = getRes.body.labels) !== null && _a !== void 0 ? _a : {};
|
|
23
20
|
return secret;
|
|
24
21
|
}
|
|
25
22
|
exports.getSecret = getSecret;
|
|
26
23
|
async function getSecretVersion(projectId, name, version) {
|
|
27
|
-
const getRes = await
|
|
28
|
-
auth: true,
|
|
29
|
-
origin: api.secretManagerOrigin,
|
|
30
|
-
});
|
|
24
|
+
const getRes = await apiClient.get(`/projects/${projectId}/secrets/${name}/versions/${version}`);
|
|
31
25
|
return parseSecretVersionResourceName(getRes.body.name);
|
|
32
26
|
}
|
|
33
27
|
exports.getSecretVersion = getSecretVersion;
|
|
@@ -68,27 +62,19 @@ function toSecretVersionResourceName(secretVersion) {
|
|
|
68
62
|
}
|
|
69
63
|
exports.toSecretVersionResourceName = toSecretVersionResourceName;
|
|
70
64
|
async function createSecret(projectId, name, labels) {
|
|
71
|
-
const createRes = await
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
data: {
|
|
75
|
-
replication: {
|
|
76
|
-
automatic: {},
|
|
77
|
-
},
|
|
78
|
-
labels,
|
|
65
|
+
const createRes = await apiClient.post(`/projects/${projectId}/secrets`, {
|
|
66
|
+
replication: {
|
|
67
|
+
automatic: {},
|
|
79
68
|
},
|
|
80
|
-
|
|
69
|
+
labels,
|
|
70
|
+
}, { queryParams: { secretId: name } });
|
|
81
71
|
return parseSecretResourceName(createRes.body.name);
|
|
82
72
|
}
|
|
83
73
|
exports.createSecret = createSecret;
|
|
84
74
|
async function addVersion(secret, payloadData) {
|
|
85
|
-
const res = await
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
data: {
|
|
89
|
-
payload: {
|
|
90
|
-
data: Buffer.from(payloadData).toString("base64"),
|
|
91
|
-
},
|
|
75
|
+
const res = await apiClient.post(`/projects/${secret.projectId}/secrets/${secret.name}:addVersion`, {
|
|
76
|
+
payload: {
|
|
77
|
+
data: Buffer.from(payloadData).toString("base64"),
|
|
92
78
|
},
|
|
93
79
|
});
|
|
94
80
|
const nameTokens = res.body.name.split("/");
|
|
@@ -102,10 +88,7 @@ async function addVersion(secret, payloadData) {
|
|
|
102
88
|
}
|
|
103
89
|
exports.addVersion = addVersion;
|
|
104
90
|
async function grantServiceAgentRole(secret, serviceAccountEmail, role) {
|
|
105
|
-
const getPolicyRes = await
|
|
106
|
-
auth: true,
|
|
107
|
-
origin: api.secretManagerOrigin,
|
|
108
|
-
});
|
|
91
|
+
const getPolicyRes = await apiClient.get(`/projects/${secret.projectId}/secrets/${secret.name}:getIamPolicy`);
|
|
109
92
|
const bindings = getPolicyRes.body.bindings || [];
|
|
110
93
|
if (bindings.find((b) => b.role == role &&
|
|
111
94
|
b.members.find((m) => m == `serviceAccount:${serviceAccountEmail}`))) {
|
|
@@ -115,18 +98,14 @@ async function grantServiceAgentRole(secret, serviceAccountEmail, role) {
|
|
|
115
98
|
role: role,
|
|
116
99
|
members: [`serviceAccount:${serviceAccountEmail}`],
|
|
117
100
|
});
|
|
118
|
-
await
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
},
|
|
125
|
-
updateMask: {
|
|
126
|
-
paths: "bindings",
|
|
127
|
-
},
|
|
101
|
+
await apiClient.post(`/projects/${secret.projectId}/secrets/${secret.name}:setIamPolicy`, {
|
|
102
|
+
policy: {
|
|
103
|
+
bindings,
|
|
104
|
+
},
|
|
105
|
+
updateMask: {
|
|
106
|
+
paths: "bindings",
|
|
128
107
|
},
|
|
129
108
|
});
|
|
130
|
-
utils_1.logLabeledSuccess("SecretManager", `Granted ${role} on projects/${secret.projectId}/secrets/${secret.name} to ${serviceAccountEmail}`);
|
|
109
|
+
(0, utils_1.logLabeledSuccess)("SecretManager", `Granted ${role} on projects/${secret.projectId}/secrets/${secret.name} to ${serviceAccountEmail}`);
|
|
131
110
|
}
|
|
132
111
|
exports.grantServiceAgentRole = grantServiceAgentRole;
|
package/lib/gcp/storage.js
CHANGED
|
@@ -2,15 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getServiceAccount = exports.getBucket = exports.deleteObject = exports.uploadObject = exports.upload = exports.getDefaultBucket = void 0;
|
|
4
4
|
const path = require("path");
|
|
5
|
-
const
|
|
5
|
+
const api_1 = require("../api");
|
|
6
|
+
const apiv2_1 = require("../apiv2");
|
|
6
7
|
const logger_1 = require("../logger");
|
|
7
8
|
const error_1 = require("../error");
|
|
9
|
+
const storageAPIClient = new apiv2_1.Client({ urlPrefix: api_1.storageOrigin, apiVersion: "v1" });
|
|
8
10
|
async function getDefaultBucket(projectId) {
|
|
9
11
|
try {
|
|
10
|
-
const resp = await
|
|
11
|
-
auth: true,
|
|
12
|
-
origin: api.appengineOrigin,
|
|
13
|
-
});
|
|
12
|
+
const resp = await storageAPIClient.get(`/apps/${projectId}`);
|
|
14
13
|
if (resp.body.defaultBucket === "undefined") {
|
|
15
14
|
logger_1.logger.debug("Default storage bucket is undefined.");
|
|
16
15
|
throw new error_1.FirebaseError("Your project is being set up. Please wait a minute before deploying again.");
|
|
@@ -25,15 +24,17 @@ async function getDefaultBucket(projectId) {
|
|
|
25
24
|
exports.getDefaultBucket = getDefaultBucket;
|
|
26
25
|
async function upload(source, uploadUrl, extraHeaders) {
|
|
27
26
|
const url = new URL(uploadUrl);
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
const localAPIClient = new apiv2_1.Client({ urlPrefix: url.origin, auth: false });
|
|
28
|
+
const res = await localAPIClient.request({
|
|
29
|
+
method: "PUT",
|
|
30
|
+
path: url.pathname,
|
|
31
|
+
queryParams: url.searchParams,
|
|
32
|
+
headers: Object.assign({ "content-type": "application/zip" }, extraHeaders),
|
|
33
|
+
body: source.stream,
|
|
34
|
+
skipLog: { resBody: true },
|
|
34
35
|
});
|
|
35
36
|
return {
|
|
36
|
-
generation:
|
|
37
|
+
generation: res.response.headers.get("x-goog-generation"),
|
|
37
38
|
};
|
|
38
39
|
}
|
|
39
40
|
exports.upload = upload;
|
|
@@ -42,37 +43,33 @@ async function uploadObject(source, bucketName) {
|
|
|
42
43
|
throw new error_1.FirebaseError(`Expected a file name ending in .zip, got ${source.file}`);
|
|
43
44
|
}
|
|
44
45
|
const location = `/${bucketName}/${path.basename(source.file)}`;
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
const res = await storageAPIClient.request({
|
|
47
|
+
method: "PUT",
|
|
48
|
+
path: location,
|
|
48
49
|
headers: {
|
|
49
50
|
"Content-Type": "application/zip",
|
|
50
51
|
"x-goog-content-length-range": "0,123289600",
|
|
51
52
|
},
|
|
52
|
-
|
|
53
|
-
origin: api.storageOrigin,
|
|
54
|
-
logOptions: { skipRequestBody: true },
|
|
53
|
+
body: source.stream,
|
|
55
54
|
});
|
|
56
55
|
return {
|
|
57
56
|
bucket: bucketName,
|
|
58
57
|
object: path.basename(source.file),
|
|
59
|
-
generation:
|
|
58
|
+
generation: res.response.headers.get("x-goog-generation"),
|
|
60
59
|
};
|
|
61
60
|
}
|
|
62
61
|
exports.uploadObject = uploadObject;
|
|
63
62
|
function deleteObject(location) {
|
|
64
|
-
return
|
|
63
|
+
return api_1.default.request("DELETE", location, {
|
|
65
64
|
auth: true,
|
|
66
|
-
origin:
|
|
65
|
+
origin: api_1.default.storageOrigin,
|
|
67
66
|
});
|
|
68
67
|
}
|
|
69
68
|
exports.deleteObject = deleteObject;
|
|
70
69
|
async function getBucket(bucketName) {
|
|
71
70
|
try {
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
origin: api.storageOrigin,
|
|
75
|
-
});
|
|
71
|
+
const localAPIClient = new apiv2_1.Client({ urlPrefix: api_1.storageOrigin });
|
|
72
|
+
const result = await localAPIClient.get(`/storage/v1/b/${bucketName}`);
|
|
76
73
|
return result.body;
|
|
77
74
|
}
|
|
78
75
|
catch (err) {
|
|
@@ -85,10 +82,8 @@ async function getBucket(bucketName) {
|
|
|
85
82
|
exports.getBucket = getBucket;
|
|
86
83
|
async function getServiceAccount(projectId) {
|
|
87
84
|
try {
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
origin: api.storageOrigin,
|
|
91
|
-
});
|
|
85
|
+
const localAPIClient = new apiv2_1.Client({ urlPrefix: api_1.storageOrigin });
|
|
86
|
+
const response = await localAPIClient.get(`/storage/v1/projects/${projectId}/serviceAccount`);
|
|
92
87
|
return response.body;
|
|
93
88
|
}
|
|
94
89
|
catch (err) {
|
|
@@ -4,7 +4,7 @@ exports.getDefaultDatabaseInstance = void 0;
|
|
|
4
4
|
const projects_1 = require("./management/projects");
|
|
5
5
|
async function getDefaultDatabaseInstance(options) {
|
|
6
6
|
var _a;
|
|
7
|
-
const projectDetails = await projects_1.getFirebaseProject(options.project);
|
|
7
|
+
const projectDetails = await (0, projects_1.getFirebaseProject)(options.project);
|
|
8
8
|
return ((_a = projectDetails.resources) === null || _a === void 0 ? void 0 : _a.realtimeDatabaseInstance) || "";
|
|
9
9
|
}
|
|
10
10
|
exports.getDefaultDatabaseInstance = getDefaultDatabaseInstance;
|
|
@@ -5,7 +5,7 @@ const logger_1 = require("./logger");
|
|
|
5
5
|
const projects_1 = require("./management/projects");
|
|
6
6
|
async function getDefaultHostingSite(options) {
|
|
7
7
|
var _a;
|
|
8
|
-
const project = await projects_1.getFirebaseProject(options.project);
|
|
8
|
+
const project = await (0, projects_1.getFirebaseProject)(options.project);
|
|
9
9
|
const site = (_a = project.resources) === null || _a === void 0 ? void 0 : _a.hostingSite;
|
|
10
10
|
if (!site) {
|
|
11
11
|
logger_1.logger.debug(`No default hosting site found for project: ${options.project}. Using projectId as hosting site name.`);
|
package/lib/getProjectNumber.js
CHANGED
|
@@ -7,8 +7,8 @@ async function getProjectNumber(options) {
|
|
|
7
7
|
if (options.projectNumber) {
|
|
8
8
|
return options.projectNumber;
|
|
9
9
|
}
|
|
10
|
-
const projectId = projectUtils_1.needProjectId(options);
|
|
11
|
-
const metadata = await projects_1.getFirebaseProject(projectId);
|
|
10
|
+
const projectId = (0, projectUtils_1.needProjectId)(options);
|
|
11
|
+
const metadata = await (0, projects_1.getFirebaseProject)(projectId);
|
|
12
12
|
options.projectNumber = metadata.projectNumber;
|
|
13
13
|
return options.projectNumber;
|
|
14
14
|
}
|
|
@@ -6,14 +6,14 @@ const cli_color_1 = require("cli-color");
|
|
|
6
6
|
const configstore_1 = require("./configstore");
|
|
7
7
|
const previews_1 = require("./previews");
|
|
8
8
|
function _errorOut(name) {
|
|
9
|
-
console.log(cli_color_1.bold.red("Error:"), "Did not recognize preview feature", cli_color_1.bold(name));
|
|
9
|
+
console.log(cli_color_1.bold.red("Error:"), "Did not recognize preview feature", (0, cli_color_1.bold)(name));
|
|
10
10
|
process.exit(1);
|
|
11
11
|
}
|
|
12
12
|
function handlePreviewToggles(args) {
|
|
13
|
-
const isValidPreview = lodash_1.has(previews_1.previews, args[1]);
|
|
13
|
+
const isValidPreview = (0, lodash_1.has)(previews_1.previews, args[1]);
|
|
14
14
|
if (args[0] === "--open-sesame") {
|
|
15
15
|
if (isValidPreview) {
|
|
16
|
-
console.log("Enabling preview feature", cli_color_1.bold(args[1]) + "...");
|
|
16
|
+
console.log("Enabling preview feature", (0, cli_color_1.bold)(args[1]) + "...");
|
|
17
17
|
previews_1.previews[args[1]] = true;
|
|
18
18
|
configstore_1.configstore.set("previews", previews_1.previews);
|
|
19
19
|
console.log("Preview feature enabled!");
|
|
@@ -23,8 +23,8 @@ function handlePreviewToggles(args) {
|
|
|
23
23
|
}
|
|
24
24
|
else if (args[0] === "--close-sesame") {
|
|
25
25
|
if (isValidPreview) {
|
|
26
|
-
console.log("Disabling preview feature", cli_color_1.bold(args[1]));
|
|
27
|
-
lodash_1.unset(previews_1.previews, args[1]);
|
|
26
|
+
console.log("Disabling preview feature", (0, cli_color_1.bold)(args[1]));
|
|
27
|
+
(0, lodash_1.unset)(previews_1.previews, args[1]);
|
|
28
28
|
configstore_1.configstore.set("previews", previews_1.previews);
|
|
29
29
|
return process.exit(0);
|
|
30
30
|
}
|
package/lib/hosting/api.js
CHANGED
|
@@ -174,7 +174,7 @@ async function deleteSite(project, site) {
|
|
|
174
174
|
}
|
|
175
175
|
exports.deleteSite = deleteSite;
|
|
176
176
|
async function addAuthDomains(project, urls) {
|
|
177
|
-
const domains = await auth_1.getAuthDomains(project);
|
|
177
|
+
const domains = await (0, auth_1.getAuthDomains)(project);
|
|
178
178
|
const authDomains = domains || [];
|
|
179
179
|
for (const url of urls) {
|
|
180
180
|
const domain = url.replace("https://", "");
|
|
@@ -183,17 +183,17 @@ async function addAuthDomains(project, urls) {
|
|
|
183
183
|
}
|
|
184
184
|
authDomains.push(domain);
|
|
185
185
|
}
|
|
186
|
-
return await auth_1.updateAuthDomains(project, authDomains);
|
|
186
|
+
return await (0, auth_1.updateAuthDomains)(project, authDomains);
|
|
187
187
|
}
|
|
188
188
|
exports.addAuthDomains = addAuthDomains;
|
|
189
189
|
async function removeAuthDomain(project, url) {
|
|
190
|
-
const domains = await auth_1.getAuthDomains(project);
|
|
190
|
+
const domains = await (0, auth_1.getAuthDomains)(project);
|
|
191
191
|
if (!domains.length) {
|
|
192
192
|
return domains;
|
|
193
193
|
}
|
|
194
194
|
const targetDomain = url.replace("https://", "");
|
|
195
195
|
const authDomains = domains.filter((domain) => domain != targetDomain);
|
|
196
|
-
return auth_1.updateAuthDomains(project, authDomains);
|
|
196
|
+
return (0, auth_1.updateAuthDomains)(project, authDomains);
|
|
197
197
|
}
|
|
198
198
|
exports.removeAuthDomain = removeAuthDomain;
|
|
199
199
|
async function getCleanDomains(project, site) {
|
|
@@ -206,7 +206,7 @@ async function getCleanDomains(project, site) {
|
|
|
206
206
|
}, {});
|
|
207
207
|
const siteMatch = new RegExp(`${site}--`, "i");
|
|
208
208
|
const firebaseAppMatch = new RegExp(/firebaseapp.com$/);
|
|
209
|
-
const domains = await auth_1.getAuthDomains(project);
|
|
209
|
+
const domains = await (0, auth_1.getAuthDomains)(project);
|
|
210
210
|
const authDomains = [];
|
|
211
211
|
domains.forEach((domain) => {
|
|
212
212
|
const endsWithFirebaseApp = firebaseAppMatch.test(domain);
|
|
@@ -227,7 +227,7 @@ async function cleanAuthState(project, sites) {
|
|
|
227
227
|
const siteDomainMap = new Map();
|
|
228
228
|
for (const site of sites) {
|
|
229
229
|
const authDomains = await getCleanDomains(project, site);
|
|
230
|
-
const updatedDomains = await auth_1.updateAuthDomains(project, authDomains);
|
|
230
|
+
const updatedDomains = await (0, auth_1.updateAuthDomains)(project, authDomains);
|
|
231
231
|
siteDomainMap.set(site, updatedDomains);
|
|
232
232
|
}
|
|
233
233
|
return siteDomainMap;
|
|
@@ -13,9 +13,9 @@ function getCloudRunUrl(rewrite, projectId) {
|
|
|
13
13
|
}
|
|
14
14
|
const path = `/v1/projects/${projectId}/locations/${rewrite.run.region || "us-central1"}/services/${rewrite.run.serviceId}`;
|
|
15
15
|
logger_1.logger.info(`[hosting] Looking up Cloud Run service "${path}" for its URL`);
|
|
16
|
-
return api_1.request("GET", path, { origin: api_1.cloudRunApiOrigin, auth: true })
|
|
16
|
+
return (0, api_1.request)("GET", path, { origin: api_1.cloudRunApiOrigin, auth: true })
|
|
17
17
|
.then((res) => {
|
|
18
|
-
const url = lodash_1.get(res, "body.status.url");
|
|
18
|
+
const url = (0, lodash_1.get)(res, "body.status.url");
|
|
19
19
|
if (!url) {
|
|
20
20
|
return Promise.reject("Cloud Run URL doesn't exist in response.");
|
|
21
21
|
}
|
|
@@ -30,18 +30,18 @@ function getCloudRunUrl(rewrite, projectId) {
|
|
|
30
30
|
function default_1(options) {
|
|
31
31
|
return async (rewrite) => {
|
|
32
32
|
if (!rewrite.run) {
|
|
33
|
-
return proxy_1.errorRequestHandler('Cloud Run rewrites must have a valid "run" field.');
|
|
33
|
+
return (0, proxy_1.errorRequestHandler)('Cloud Run rewrites must have a valid "run" field.');
|
|
34
34
|
}
|
|
35
35
|
if (!rewrite.run.serviceId) {
|
|
36
|
-
return proxy_1.errorRequestHandler("Cloud Run rewrites must supply a service ID.");
|
|
36
|
+
return (0, proxy_1.errorRequestHandler)("Cloud Run rewrites must supply a service ID.");
|
|
37
37
|
}
|
|
38
38
|
if (!rewrite.run.region) {
|
|
39
39
|
rewrite.run.region = "us-central1";
|
|
40
40
|
}
|
|
41
41
|
logger_1.logger.info(`[hosting] Cloud Run rewrite ${JSON.stringify(rewrite)} triggered`);
|
|
42
42
|
const textIdentifier = `Cloud Run service "${rewrite.run.serviceId}" for region "${rewrite.run.region}"`;
|
|
43
|
-
return getCloudRunUrl(rewrite, projectUtils_1.needProjectId(options))
|
|
44
|
-
.then((url) => proxy_1.proxyRequestHandler(url, textIdentifier))
|
|
43
|
+
return getCloudRunUrl(rewrite, (0, projectUtils_1.needProjectId)(options))
|
|
44
|
+
.then((url) => (0, proxy_1.proxyRequestHandler)(url, textIdentifier))
|
|
45
45
|
.catch(proxy_1.errorRequestHandler);
|
|
46
46
|
};
|
|
47
47
|
}
|