firebase-tools 15.5.0 → 15.5.1
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/apiv2.js +8 -2
- package/lib/apphosting/backend.js +1 -1
- package/lib/ensureApiEnabled.js +2 -2
- package/lib/gcp/iam.js +1 -1
- package/lib/gcp/serviceusage.js +2 -2
- package/package.json +1 -1
package/lib/apiv2.js
CHANGED
|
@@ -352,8 +352,14 @@ class Client {
|
|
|
352
352
|
const logURL = this.requestURL(options);
|
|
353
353
|
logger_1.logger.debug(`>>> [apiv2][query] ${options.method} ${logURL} ${queryParamsLog}`);
|
|
354
354
|
const headers = options.headers;
|
|
355
|
-
if (headers && headers.has(GOOG_QUOTA_USER_HEADER)) {
|
|
356
|
-
|
|
355
|
+
if (headers && (headers.has(GOOG_QUOTA_USER_HEADER) || headers.has(GOOG_USER_PROJECT_HEADER))) {
|
|
356
|
+
const userHeader = headers.has(GOOG_QUOTA_USER_HEADER)
|
|
357
|
+
? `${GOOG_QUOTA_USER_HEADER}=${headers.get(GOOG_QUOTA_USER_HEADER)}`
|
|
358
|
+
: "";
|
|
359
|
+
const projectHeader = headers.has(GOOG_USER_PROJECT_HEADER)
|
|
360
|
+
? `${GOOG_USER_PROJECT_HEADER}=${headers.get(GOOG_USER_PROJECT_HEADER)}`
|
|
361
|
+
: "";
|
|
362
|
+
logger_1.logger.debug(`>>> [apiv2][(partial)header] ${options.method} ${logURL} ${userHeader} ${projectHeader}`);
|
|
357
363
|
}
|
|
358
364
|
if (options.body !== undefined) {
|
|
359
365
|
let logBody = "[omitted]";
|
|
@@ -190,7 +190,7 @@ async function ensureAppHostingComputeServiceAccount(projectId, serviceAccount)
|
|
|
190
190
|
const sa = serviceAccount || defaultComputeServiceAccountEmail(projectId);
|
|
191
191
|
const name = `projects/${projectId}/serviceAccounts/${sa}`;
|
|
192
192
|
try {
|
|
193
|
-
await iam.testResourceIamPermissions((0, api_1.iamOrigin)(), "v1", name, ["iam.serviceAccounts.actAs"],
|
|
193
|
+
await iam.testResourceIamPermissions((0, api_1.iamOrigin)(), "v1", name, ["iam.serviceAccounts.actAs"], `${projectId}`);
|
|
194
194
|
}
|
|
195
195
|
catch (err) {
|
|
196
196
|
if (!(err instanceof error_1.FirebaseError)) {
|
package/lib/ensureApiEnabled.js
CHANGED
|
@@ -27,7 +27,7 @@ async function check(projectId, apiUri, prefix, silent = false) {
|
|
|
27
27
|
return true;
|
|
28
28
|
}
|
|
29
29
|
const res = await apiClient.get(`/projects/${projectId}/services/${apiName}`, {
|
|
30
|
-
headers: { "x-goog-user-project":
|
|
30
|
+
headers: { "x-goog-user-project": `${projectId}` },
|
|
31
31
|
skipLog: { resBody: true },
|
|
32
32
|
});
|
|
33
33
|
const isEnabled = res.body.state === "ENABLED";
|
|
@@ -45,7 +45,7 @@ function isPermissionError(e) {
|
|
|
45
45
|
async function enable(projectId, apiName) {
|
|
46
46
|
try {
|
|
47
47
|
await apiClient.post(`/projects/${projectId}/services/${apiName}:enable`, undefined, {
|
|
48
|
-
headers: { "x-goog-user-project":
|
|
48
|
+
headers: { "x-goog-user-project": `${projectId}` },
|
|
49
49
|
skipLog: { resBody: true },
|
|
50
50
|
});
|
|
51
51
|
cacheEnabledAPI(projectId, apiName);
|
package/lib/gcp/iam.js
CHANGED
|
@@ -78,7 +78,7 @@ async function testResourceIamPermissions(origin, apiVersion, resourceName, perm
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
async function testIamPermissions(projectId, permissions) {
|
|
81
|
-
return testResourceIamPermissions((0, api_1.resourceManagerOrigin)(), "v1", `projects/${projectId}`, permissions,
|
|
81
|
+
return testResourceIamPermissions((0, api_1.resourceManagerOrigin)(), "v1", `projects/${projectId}`, permissions, `${projectId}`);
|
|
82
82
|
}
|
|
83
83
|
function mergeBindings(policy, requiredBindings) {
|
|
84
84
|
let updated = false;
|
package/lib/gcp/serviceusage.js
CHANGED
|
@@ -22,7 +22,7 @@ const serviceUsagePollerOptions = {
|
|
|
22
22
|
async function generateServiceIdentity(projectNumber, service, prefix) {
|
|
23
23
|
utils.logLabeledBullet(prefix, `generating the service identity for ${(0, colorette_1.bold)(service)}...`);
|
|
24
24
|
try {
|
|
25
|
-
const res = await exports.apiClient.post(`projects/${projectNumber}/services/${service}:generateServiceIdentity`, {}, { headers: { "x-goog-user-project":
|
|
25
|
+
const res = await exports.apiClient.post(`projects/${projectNumber}/services/${service}:generateServiceIdentity`, {}, { headers: { "x-goog-user-project": `${projectNumber}` } });
|
|
26
26
|
return res.body;
|
|
27
27
|
}
|
|
28
28
|
catch (err) {
|
|
@@ -39,6 +39,6 @@ async function generateServiceIdentityAndPoll(projectNumber, service, prefix) {
|
|
|
39
39
|
await poller.pollOperation({
|
|
40
40
|
...serviceUsagePollerOptions,
|
|
41
41
|
operationResourceName: op.name,
|
|
42
|
-
headers: { "x-goog-user-project":
|
|
42
|
+
headers: { "x-goog-user-project": `${projectNumber}` },
|
|
43
43
|
});
|
|
44
44
|
}
|