firebase-tools 11.4.1 → 11.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.
- package/lib/accountImporter.js +1 -1
- package/lib/auth.js +3 -4
- package/lib/bin/firebase.js +4 -4
- package/lib/command.js +35 -10
- package/lib/commands/apps-android-sha-create.js +1 -1
- package/lib/commands/apps-android-sha-delete.js +1 -1
- package/lib/commands/apps-create.js +1 -1
- package/lib/commands/apps-list.js +1 -1
- package/lib/commands/auth-export.js +1 -1
- package/lib/commands/auth-import.js +1 -1
- package/lib/commands/database-instances-list.js +1 -1
- package/lib/commands/database-push.js +1 -1
- package/lib/commands/database-remove.js +1 -1
- package/lib/commands/database-set.js +1 -1
- package/lib/commands/database-update.js +1 -1
- package/lib/commands/emulators-exec.js +4 -1
- package/lib/commands/emulators-export.js +5 -2
- package/lib/commands/emulators-start.js +24 -18
- package/lib/commands/ext-dev-deprecate.js +1 -1
- package/lib/commands/ext-dev-emulators-exec.js +1 -1
- package/lib/commands/ext-dev-emulators-start.js +1 -1
- package/lib/commands/ext-dev-extension-delete.js +1 -1
- package/lib/commands/ext-dev-list.js +1 -1
- package/lib/commands/ext-dev-publish.js +4 -1
- package/lib/commands/ext-dev-register.js +1 -1
- package/lib/commands/ext-dev-undeprecate.js +1 -1
- package/lib/commands/ext-dev-unpublish.js +1 -1
- package/lib/commands/ext-dev-usage.js +1 -1
- package/lib/commands/ext-info.js +1 -1
- package/lib/commands/ext-install.js +2 -2
- package/lib/commands/ext-update.js +1 -1
- package/lib/commands/ext.js +1 -1
- package/lib/commands/firestore-delete.js +2 -2
- package/lib/commands/firestore-indexes-list.js +3 -3
- package/lib/commands/functions-config-clone.js +1 -1
- package/lib/commands/functions-config-export.js +1 -1
- package/lib/commands/functions-config-set.js +1 -1
- package/lib/commands/functions-config-unset.js +1 -1
- package/lib/commands/functions-delete.js +1 -1
- package/lib/commands/functions-secrets-set.js +1 -1
- package/lib/commands/help.js +1 -1
- package/lib/commands/hosting-channel-create.js +5 -5
- package/lib/commands/hosting-channel-delete.js +3 -3
- package/lib/commands/hosting-channel-deploy.js +6 -6
- package/lib/commands/hosting-channel-list.js +2 -2
- package/lib/commands/hosting-channel-open.js +2 -2
- package/lib/commands/hosting-clone.js +8 -8
- package/lib/commands/hosting-disable.js +1 -1
- package/lib/commands/hosting-sites-create.js +4 -4
- package/lib/commands/hosting-sites-delete.js +4 -4
- package/lib/commands/hosting-sites-list.js +2 -2
- package/lib/commands/init.js +5 -5
- package/lib/commands/login-add.js +1 -1
- package/lib/commands/login-ci.js +2 -2
- package/lib/commands/login-list.js +1 -1
- package/lib/commands/login-use.js +1 -1
- package/lib/commands/login.js +3 -3
- package/lib/commands/logout.js +1 -1
- package/lib/commands/open.js +3 -3
- package/lib/commands/projects-list.js +2 -2
- package/lib/commands/serve.js +1 -1
- package/lib/commands/target-apply.js +1 -1
- package/lib/commands/target-clear.js +1 -1
- package/lib/commands/target-remove.js +1 -1
- package/lib/commands/target.js +1 -1
- package/lib/commands/use.js +7 -7
- package/lib/config.js +1 -1
- package/lib/deploy/database/prepare.js +3 -3
- package/lib/deploy/database/release.js +3 -3
- package/lib/deploy/extensions/deploymentSummary.js +1 -1
- package/lib/deploy/extensions/errors.js +1 -1
- package/lib/deploy/extensions/secrets.js +1 -1
- package/lib/deploy/extensions/tasks.js +2 -2
- package/lib/deploy/firestore/deploy.js +2 -2
- package/lib/deploy/firestore/prepare.js +2 -2
- package/lib/deploy/functions/backend.js +7 -5
- package/lib/deploy/functions/build.js +110 -95
- package/lib/deploy/functions/checkIam.js +3 -3
- package/lib/deploy/functions/containerCleaner.js +2 -2
- package/lib/deploy/functions/deploy.js +2 -2
- package/lib/deploy/functions/ensure.js +2 -2
- package/lib/deploy/functions/params.js +5 -2
- package/lib/deploy/functions/prepare.js +4 -4
- package/lib/deploy/functions/prepareFunctionsUpload.js +2 -2
- package/lib/deploy/functions/pricing.js +3 -2
- package/lib/deploy/functions/prompts.js +2 -2
- package/lib/deploy/functions/release/fabricator.js +10 -9
- package/lib/deploy/functions/release/index.js +1 -1
- package/lib/deploy/functions/release/reporter.js +1 -1
- package/lib/deploy/functions/runtimes/discovery/parsing.js +19 -8
- package/lib/deploy/functions/runtimes/discovery/v1alpha1.js +112 -107
- package/lib/deploy/functions/runtimes/node/parseRuntimeAndValidateSDK.js +1 -1
- package/lib/deploy/functions/runtimes/node/parseTriggers.js +54 -26
- package/lib/deploy/functions/runtimes/node/versioning.js +4 -4
- package/lib/deploy/functions/services/storage.js +6 -0
- package/lib/deploy/functions/validate.js +1 -1
- package/lib/deploy/hosting/convertConfig.js +8 -1
- package/lib/deploy/hosting/deploy.js +10 -9
- package/lib/deploy/hosting/uploader.js +2 -2
- package/lib/deploy/hosting/validate.js +2 -2
- package/lib/deploy/index.js +7 -7
- package/lib/deploy/lifecycleHooks.js +5 -2
- package/lib/deploy/storage/prepare.js +5 -3
- package/lib/deploy/storage/release.js +7 -6
- package/lib/emulator/auth/index.js +7 -2
- package/lib/emulator/auth/operations.js +10 -10
- package/lib/emulator/commandUtils.js +33 -16
- package/lib/emulator/constants.js +14 -6
- package/lib/emulator/controller.js +55 -18
- package/lib/emulator/databaseEmulator.js +1 -1
- package/lib/emulator/downloadableEmulators.js +8 -8
- package/lib/emulator/emulatorLogger.js +1 -1
- package/lib/emulator/eventarcEmulator.js +148 -0
- package/lib/emulator/extensionsEmulator.js +5 -3
- package/lib/emulator/firestoreEmulator.js +1 -1
- package/lib/emulator/functionsEmulator.js +66 -14
- package/lib/emulator/functionsEmulatorShared.js +12 -12
- package/lib/emulator/hub.js +7 -3
- package/lib/emulator/hubClient.js +2 -2
- package/lib/emulator/hubExport.js +22 -2
- package/lib/emulator/loggingEmulator.js +2 -2
- package/lib/emulator/registry.js +1 -0
- package/lib/emulator/storage/apis/firebase.js +13 -1
- package/lib/emulator/storage/apis/gcloud.js +15 -8
- package/lib/emulator/storage/files.js +25 -4
- package/lib/emulator/storage/metadata.js +6 -6
- package/lib/emulator/storage/multipart.js +4 -3
- package/lib/emulator/storage/rules/runtime.js +3 -3
- package/lib/emulator/storage/rules/utils.js +4 -2
- package/lib/emulator/storage/server.js +2 -1
- package/lib/emulator/storage/upload.js +1 -0
- package/lib/emulator/types.js +4 -0
- package/lib/emulator/ui.js +7 -2
- package/lib/ensureApiEnabled.js +7 -7
- package/lib/extensions/askUserForConsent.js +1 -1
- package/lib/extensions/askUserForEventsConfig.js +1 -1
- package/lib/extensions/askUserForParam.js +1 -1
- package/lib/extensions/changelog.js +2 -2
- package/lib/extensions/checkProjectBilling.js +2 -2
- package/lib/extensions/displayExtensionInfo.js +2 -102
- package/lib/extensions/emulator/triggerHelper.js +2 -2
- package/lib/extensions/extensionsApi.js +3 -2
- package/lib/extensions/extensionsHelper.js +30 -2
- package/lib/extensions/listExtensions.js +1 -1
- package/lib/extensions/manifest.js +1 -1
- package/lib/extensions/metricsUtils.js +1 -1
- package/lib/extensions/paramHelper.js +1 -1
- package/lib/extensions/updateHelper.js +3 -9
- package/lib/extensions/warnings.js +2 -2
- package/lib/fetchMOTD.js +1 -1
- package/lib/firestore/delete.js +1 -1
- package/lib/firestore/indexes.js +2 -2
- package/lib/firestore/validator.js +1 -1
- package/lib/functional.js +16 -1
- package/lib/functions/env.js +3 -3
- package/lib/functions/runtimeConfigExport.js +1 -1
- package/lib/functionsConfig.js +1 -1
- package/lib/functionsConfigClone.js +1 -1
- package/lib/functionsShellCommandAction.js +1 -1
- package/lib/gcp/cloudfunctions.js +24 -11
- package/lib/gcp/cloudfunctionsv2.js +48 -24
- package/lib/gcp/cloudscheduler.js +58 -22
- package/lib/gcp/cloudtasks.js +21 -4
- package/lib/gcp/proto.js +18 -6
- package/lib/gcp/resourceManager.js +25 -3
- package/lib/gcp/serviceusage.js +2 -2
- package/lib/handlePreviewToggles.js +4 -4
- package/lib/hosting/implicitInit.js +1 -1
- package/lib/hosting/normalizedHostingConfigs.js +3 -3
- package/lib/index.js +2 -2
- package/lib/init/features/database.js +1 -1
- package/lib/init/features/emulators.js +1 -1
- package/lib/init/features/firestore/index.js +2 -2
- package/lib/init/features/firestore/indexes.js +1 -1
- package/lib/init/features/firestore/rules.js +1 -1
- package/lib/init/features/functions/golang.js +1 -1
- package/lib/init/features/functions/index.js +8 -1
- package/lib/init/features/hosting/github.js +9 -9
- package/lib/init/features/hosting/index.js +1 -1
- package/lib/init/features/project.js +1 -1
- package/lib/init/features/remoteconfig.js +1 -1
- package/lib/init/features/storage.js +1 -1
- package/lib/init/index.js +1 -1
- package/lib/logError.js +3 -3
- package/lib/management/projects.js +1 -1
- package/lib/parseBoltRules.js +1 -1
- package/lib/previews.js +1 -1
- package/lib/profileReport.js +2 -2
- package/lib/projectUtils.js +1 -1
- package/lib/rc.js +1 -1
- package/lib/requireAuth.js +1 -1
- package/lib/requireDatabaseInstance.js +2 -2
- package/lib/requirePermissions.js +2 -2
- package/lib/rulesDeploy.js +49 -13
- package/lib/serve/hosting.js +2 -1
- package/lib/serve/index.js +15 -0
- package/lib/track.js +119 -3
- package/lib/utils.js +24 -11
- package/npm-shrinkwrap.json +14 -294
- package/package.json +5 -4
- package/schema/firebase-config.json +12 -0
- package/templates/extensions/CHANGELOG.md +1 -7
- package/templates/hosting/init.js +6 -2
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.printSourceDownloadLink = exports.
|
|
4
|
-
const
|
|
5
|
-
const clc = require("cli-color");
|
|
3
|
+
exports.printSourceDownloadLink = exports.displayExtInfo = void 0;
|
|
4
|
+
const clc = require("colorette");
|
|
6
5
|
const { marked } = require("marked");
|
|
7
6
|
const TerminalRenderer = require("marked-terminal");
|
|
8
7
|
const utils = require("../utils");
|
|
@@ -12,8 +11,6 @@ const error_1 = require("../error");
|
|
|
12
11
|
marked.setOptions({
|
|
13
12
|
renderer: new TerminalRenderer(),
|
|
14
13
|
});
|
|
15
|
-
const additionColor = clc.green;
|
|
16
|
-
const deletionColor = clc.red;
|
|
17
14
|
function displayExtInfo(extensionName, publisher, spec, published = false) {
|
|
18
15
|
const lines = [];
|
|
19
16
|
lines.push(`**Name**: ${spec.displayName}`);
|
|
@@ -46,103 +43,6 @@ function displayExtInfo(extensionName, publisher, spec, published = false) {
|
|
|
46
43
|
}
|
|
47
44
|
}
|
|
48
45
|
exports.displayExtInfo = displayExtInfo;
|
|
49
|
-
function displayUpdateChangesNoInput(spec, newSpec) {
|
|
50
|
-
var _a, _b, _c, _d;
|
|
51
|
-
const lines = [];
|
|
52
|
-
if (spec.displayName !== newSpec.displayName) {
|
|
53
|
-
lines.push("", "**Name:**", deletionColor(`- ${spec.displayName}`), additionColor(`+ ${newSpec.displayName}`));
|
|
54
|
-
}
|
|
55
|
-
if (((_a = spec.author) === null || _a === void 0 ? void 0 : _a.authorName) !== ((_b = newSpec.author) === null || _b === void 0 ? void 0 : _b.authorName)) {
|
|
56
|
-
lines.push("", "**Author:**", deletionColor(`- ${(_c = spec.author) === null || _c === void 0 ? void 0 : _c.authorName}`), additionColor(`+ ${(_d = spec.author) === null || _d === void 0 ? void 0 : _d.authorName}`));
|
|
57
|
-
}
|
|
58
|
-
if (spec.description !== newSpec.description) {
|
|
59
|
-
lines.push("", "**Description:**", deletionColor(`- ${spec.description}`), additionColor(`+ ${newSpec.description}`));
|
|
60
|
-
}
|
|
61
|
-
if (spec.sourceUrl !== newSpec.sourceUrl) {
|
|
62
|
-
lines.push("", "**Source code:**", deletionColor(`- ${spec.sourceUrl}`), additionColor(`+ ${newSpec.sourceUrl}`));
|
|
63
|
-
}
|
|
64
|
-
if (spec.billingRequired && !newSpec.billingRequired) {
|
|
65
|
-
lines.push("", "**Billing is no longer required for this extension.**");
|
|
66
|
-
}
|
|
67
|
-
logger_1.logger.info(marked(lines.join("\n")));
|
|
68
|
-
return lines;
|
|
69
|
-
}
|
|
70
|
-
exports.displayUpdateChangesNoInput = displayUpdateChangesNoInput;
|
|
71
|
-
async function displayUpdateChangesRequiringConfirmation(args) {
|
|
72
|
-
const equals = (a, b) => {
|
|
73
|
-
return _.isEqual(a, b);
|
|
74
|
-
};
|
|
75
|
-
if (args.spec.license !== args.newSpec.license) {
|
|
76
|
-
const message = "\n" +
|
|
77
|
-
"**License**\n" +
|
|
78
|
-
deletionColor(args.spec.license ? `- ${args.spec.license}\n` : "- None\n") +
|
|
79
|
-
additionColor(args.newSpec.license ? `+ ${args.newSpec.license}\n` : "+ None\n");
|
|
80
|
-
logger_1.logger.info(message);
|
|
81
|
-
if (!(await (0, extensionsHelper_1.confirm)({ nonInteractive: args.nonInteractive, force: args.force, default: true }))) {
|
|
82
|
-
throw new error_1.FirebaseError("Unable to update this extension instance without explicit consent for the change to 'License'.");
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
const apisDiffDeletions = _.differenceWith(args.spec.apis, _.get(args.newSpec, "apis", []), equals);
|
|
86
|
-
const apisDiffAdditions = _.differenceWith(args.newSpec.apis, _.get(args.spec, "apis", []), equals);
|
|
87
|
-
if (apisDiffDeletions.length || apisDiffAdditions.length) {
|
|
88
|
-
let message = "\n**APIs:**\n";
|
|
89
|
-
apisDiffDeletions.forEach((api) => {
|
|
90
|
-
message += deletionColor(`- ${api.apiName} (${api.reason})\n`);
|
|
91
|
-
});
|
|
92
|
-
apisDiffAdditions.forEach((api) => {
|
|
93
|
-
message += additionColor(`+ ${api.apiName} (${api.reason})\n`);
|
|
94
|
-
});
|
|
95
|
-
logger_1.logger.info(message);
|
|
96
|
-
if (!(await (0, extensionsHelper_1.confirm)({ nonInteractive: args.nonInteractive, force: args.force, default: true }))) {
|
|
97
|
-
throw new error_1.FirebaseError("Unable to update this extension instance without explicit consent for the change to 'APIs'.");
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
const resourcesDiffDeletions = _.differenceWith(args.spec.resources, _.get(args.newSpec, "resources", []), compareResources);
|
|
101
|
-
const resourcesDiffAdditions = _.differenceWith(args.newSpec.resources, _.get(args.spec, "resources", []), compareResources);
|
|
102
|
-
if (resourcesDiffDeletions.length || resourcesDiffAdditions.length) {
|
|
103
|
-
let message = "\n**Resources:**\n";
|
|
104
|
-
resourcesDiffDeletions.forEach((resource) => {
|
|
105
|
-
message += deletionColor(` - ${getResourceReadableName(resource)}`);
|
|
106
|
-
});
|
|
107
|
-
resourcesDiffAdditions.forEach((resource) => {
|
|
108
|
-
message += additionColor(`+ ${getResourceReadableName(resource)}`);
|
|
109
|
-
});
|
|
110
|
-
logger_1.logger.info(message);
|
|
111
|
-
if (!(await (0, extensionsHelper_1.confirm)({ nonInteractive: args.nonInteractive, force: args.force, default: true }))) {
|
|
112
|
-
throw new error_1.FirebaseError("Unable to update this extension instance without explicit consent for the change to 'Resources'.");
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
const rolesDiffDeletions = _.differenceWith(args.spec.roles, _.get(args.newSpec, "roles", []), equals);
|
|
116
|
-
const rolesDiffAdditions = _.differenceWith(args.newSpec.roles, _.get(args.spec, "roles", []), equals);
|
|
117
|
-
if (rolesDiffDeletions.length || rolesDiffAdditions.length) {
|
|
118
|
-
let message = "\n**Permissions:**\n";
|
|
119
|
-
rolesDiffDeletions.forEach((role) => {
|
|
120
|
-
message += deletionColor(`- ${role.role} (${role.reason})\n`);
|
|
121
|
-
});
|
|
122
|
-
rolesDiffAdditions.forEach((role) => {
|
|
123
|
-
message += additionColor(`+ ${role.role} (${role.reason})\n`);
|
|
124
|
-
});
|
|
125
|
-
logger_1.logger.info(message);
|
|
126
|
-
if (!(await (0, extensionsHelper_1.confirm)({ nonInteractive: args.nonInteractive, force: args.force, default: true }))) {
|
|
127
|
-
throw new error_1.FirebaseError("Unable to update this extension instance without explicit consent for the change to 'Permissions'.");
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
if (!args.spec.billingRequired && args.newSpec.billingRequired) {
|
|
131
|
-
logger_1.logger.info("Billing is now required for the new version of this extension.");
|
|
132
|
-
if (!(await (0, extensionsHelper_1.confirm)({ nonInteractive: args.nonInteractive, force: args.force, default: true }))) {
|
|
133
|
-
throw new error_1.FirebaseError("Unable to update this extension instance without explicit consent for the change to 'BillingRequired'.");
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
exports.displayUpdateChangesRequiringConfirmation = displayUpdateChangesRequiringConfirmation;
|
|
138
|
-
function compareResources(resource1, resource2) {
|
|
139
|
-
return resource1.name === resource2.name && resource1.type === resource2.type;
|
|
140
|
-
}
|
|
141
|
-
function getResourceReadableName(resource) {
|
|
142
|
-
return resource.type === "firebaseextensions.v1beta.function"
|
|
143
|
-
? `${resource.name} (Cloud Function): ${resource.description}\n`
|
|
144
|
-
: `${resource.name} (${resource.type})\n`;
|
|
145
|
-
}
|
|
146
46
|
function printSourceDownloadLink(sourceDownloadUri) {
|
|
147
47
|
const sourceDownloadMsg = `Want to review the source code that will be installed? Download it here: ${sourceDownloadUri}`;
|
|
148
48
|
utils.logBullet(marked(sourceDownloadMsg));
|
|
@@ -12,8 +12,8 @@ function functionResourceToEmulatedTriggerDefintion(resource) {
|
|
|
12
12
|
platform: "gcfv1",
|
|
13
13
|
};
|
|
14
14
|
const properties = resource.properties || {};
|
|
15
|
-
proto.
|
|
16
|
-
proto.
|
|
15
|
+
proto.convertIfPresent(etd, properties, "timeoutSeconds", "timeout", proto.secondsFromDuration);
|
|
16
|
+
proto.convertIfPresent(etd, properties, "regions", "location", (str) => [str]);
|
|
17
17
|
proto.copyIfPresent(etd, properties, "availableMemoryMb");
|
|
18
18
|
if (properties.httpsTrigger) {
|
|
19
19
|
etd.httpsTrigger = properties.httpsTrigger;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getExtension = exports.deleteExtension = exports.unpublishExtension = exports.publishExtensionVersion = exports.undeprecateExtensionVersion = exports.deprecateExtensionVersion = exports.registerPublisherProfile = exports.getPublisherProfile = exports.listExtensionVersions = exports.listExtensions = exports.getExtensionVersion = exports.getSource = exports.createSource = exports.updateInstanceFromRegistry = exports.updateInstance = exports.configureInstance = exports.listInstances = exports.getInstance = exports.deleteInstance = exports.createInstance = void 0;
|
|
4
4
|
const yaml = require("js-yaml");
|
|
5
|
-
const clc = require("
|
|
5
|
+
const clc = require("colorette");
|
|
6
6
|
const { marked } = require("marked");
|
|
7
7
|
const apiv2_1 = require("../apiv2");
|
|
8
8
|
const api_1 = require("../api");
|
|
@@ -291,13 +291,14 @@ async function listExtensions(publisherId) {
|
|
|
291
291
|
return extensions;
|
|
292
292
|
}
|
|
293
293
|
exports.listExtensions = listExtensions;
|
|
294
|
-
async function listExtensionVersions(ref, filter = "") {
|
|
294
|
+
async function listExtensionVersions(ref, filter = "", showPrereleases = false) {
|
|
295
295
|
const { publisherId, extensionId } = refs.parse(ref);
|
|
296
296
|
const extensionVersions = [];
|
|
297
297
|
const getNextPage = async (pageToken = "") => {
|
|
298
298
|
const res = await apiClient.get(`/publishers/${publisherId}/extensions/${extensionId}/versions`, {
|
|
299
299
|
queryParams: {
|
|
300
300
|
filter,
|
|
301
|
+
showPrereleases: String(showPrereleases),
|
|
301
302
|
pageSize: PAGE_SIZE_MAX,
|
|
302
303
|
pageToken,
|
|
303
304
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.canonicalizeRefInput = exports.diagnoseAndFixProject = exports.confirm = exports.getSourceOrigin = exports.isLocalOrURLPath = exports.isLocalPath = exports.isUrlPath = exports.instanceIdExists = exports.promptForRepeatInstance = exports.promptForOfficialExtension = exports.displayReleaseNotes = exports.getPublisherProjectFromName = exports.createSourceFromLocation = exports.publishExtensionVersionFromLocalSource = exports.ensureExtensionsApiEnabled = exports.promptForValidInstanceId = exports.validateSpec = exports.validateCommandLineParams = exports.populateDefaultParams = exports.substituteParams = exports.getFirebaseProjectParams = exports.getDBInstanceFromURL = exports.resourceTypeToNiceName = exports.AUTOPOULATED_PARAM_PLACEHOLDERS = exports.EXTENSIONS_BUCKET_NAME = exports.URL_REGEX = exports.logPrefix = exports.SourceOrigin = exports.SpecParamType = void 0;
|
|
4
|
-
const clc = require("
|
|
3
|
+
exports.canonicalizeRefInput = exports.diagnoseAndFixProject = exports.confirm = exports.getSourceOrigin = exports.isLocalOrURLPath = exports.isLocalPath = exports.isUrlPath = exports.instanceIdExists = exports.promptForRepeatInstance = exports.promptForOfficialExtension = exports.displayReleaseNotes = exports.getPublisherProjectFromName = exports.createSourceFromLocation = exports.publishExtensionVersionFromLocalSource = exports.incrementPrereleaseVersion = exports.ensureExtensionsApiEnabled = exports.promptForValidInstanceId = exports.validateSpec = exports.validateCommandLineParams = exports.populateDefaultParams = exports.substituteParams = exports.getFirebaseProjectParams = exports.getDBInstanceFromURL = exports.resourceTypeToNiceName = exports.AUTOPOULATED_PARAM_PLACEHOLDERS = exports.EXTENSIONS_BUCKET_NAME = exports.URL_REGEX = exports.logPrefix = exports.SourceOrigin = exports.SpecParamType = void 0;
|
|
4
|
+
const clc = require("colorette");
|
|
5
5
|
const ora = require("ora");
|
|
6
6
|
const semver = require("semver");
|
|
7
7
|
const { marked } = require("marked");
|
|
@@ -282,6 +282,33 @@ async function archiveAndUploadSource(extPath, bucketName) {
|
|
|
282
282
|
const res = await (0, storage_1.uploadObject)(zippedSource, bucketName);
|
|
283
283
|
return `/${res.bucket}/${res.object}`;
|
|
284
284
|
}
|
|
285
|
+
async function incrementPrereleaseVersion(ref, extensionVersion, stage) {
|
|
286
|
+
var _a;
|
|
287
|
+
const stageOptions = ["stable", "alpha", "beta", "rc"];
|
|
288
|
+
if (!stageOptions.includes(stage)) {
|
|
289
|
+
throw new error_1.FirebaseError(`--stage flag only supports the following values: ${stageOptions}`);
|
|
290
|
+
}
|
|
291
|
+
if (stage !== "stable") {
|
|
292
|
+
const version = semver.parse(extensionVersion);
|
|
293
|
+
if (version.prerelease.length > 0 || version.build.length > 0) {
|
|
294
|
+
throw new error_1.FirebaseError(`Cannot combine the --stage flag with a version with a prerelease annotation in extension.yaml.`);
|
|
295
|
+
}
|
|
296
|
+
let extensionVersions = [];
|
|
297
|
+
try {
|
|
298
|
+
extensionVersions = await (0, extensionsApi_1.listExtensionVersions)(ref, `id="${version.version}"`, true);
|
|
299
|
+
}
|
|
300
|
+
catch (e) {
|
|
301
|
+
}
|
|
302
|
+
const latestVersion = (_a = extensionVersions
|
|
303
|
+
.map((version) => semver.parse(version.spec.version))
|
|
304
|
+
.filter((version) => version.prerelease.length > 0 && version.prerelease[0] === stage)
|
|
305
|
+
.sort((v1, v2) => semver.compare(v1, v2))
|
|
306
|
+
.pop()) !== null && _a !== void 0 ? _a : `${version}-${stage}`;
|
|
307
|
+
return semver.inc(latestVersion, "prerelease", undefined, stage);
|
|
308
|
+
}
|
|
309
|
+
return extensionVersion;
|
|
310
|
+
}
|
|
311
|
+
exports.incrementPrereleaseVersion = incrementPrereleaseVersion;
|
|
285
312
|
async function publishExtensionVersionFromLocalSource(args) {
|
|
286
313
|
const extensionSpec = await (0, localHelper_1.getLocalExtensionSpec)(args.rootDirectory);
|
|
287
314
|
if (extensionSpec.name !== args.extensionId) {
|
|
@@ -290,6 +317,7 @@ async function publishExtensionVersionFromLocalSource(args) {
|
|
|
290
317
|
const subbedSpec = JSON.parse(JSON.stringify(extensionSpec));
|
|
291
318
|
subbedSpec.params = substituteParams(extensionSpec.params || [], exports.AUTOPOULATED_PARAM_PLACEHOLDERS);
|
|
292
319
|
validateSpec(subbedSpec);
|
|
320
|
+
extensionSpec.version = await incrementPrereleaseVersion(`${args.publisherId}/${args.extensionId}`, extensionSpec.version, args.stage);
|
|
293
321
|
let extension;
|
|
294
322
|
try {
|
|
295
323
|
extension = await (0, extensionsApi_1.getExtension)(`${args.publisherId}/${args.extensionId}`);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.listExtensions = void 0;
|
|
4
|
-
const clc = require("
|
|
4
|
+
const clc = require("colorette");
|
|
5
5
|
const Table = require("cli-table");
|
|
6
6
|
const extensionsApi_1 = require("./extensionsApi");
|
|
7
7
|
const logger_1 = require("../logger");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.showPostDeprecationNotice = exports.readInstanceParam = exports.getInstanceRef = exports.getInstanceTarget = exports.instanceExists = exports.loadConfig = exports.removeFromManifest = exports.writeLocalSecrets = exports.writeToManifest = exports.ENV_DIRECTORY = void 0;
|
|
4
|
-
const clc = require("
|
|
4
|
+
const clc = require("colorette");
|
|
5
5
|
const path = require("path");
|
|
6
6
|
const refs = require("./refs");
|
|
7
7
|
const config_1 = require("../config");
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildMetricsTableRow = exports.parseBucket = exports.parseTimeseriesResponse = void 0;
|
|
4
4
|
const semver = require("semver");
|
|
5
|
-
const clc = require("
|
|
5
|
+
const clc = require("colorette");
|
|
6
6
|
function parseTimeseriesResponse(series) {
|
|
7
7
|
const ret = [];
|
|
8
8
|
for (const s of series) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.readEnvFile = exports.promptForNewParams = exports.getParamsForUpdate = exports.getParams = exports.getParamsWithCurrentValuesAsDefaults = exports.setNewDefaults = exports.buildBindingOptionsWithBaseValue = exports.getBaseParamBindings = void 0;
|
|
4
4
|
const path = require("path");
|
|
5
|
-
const clc = require("
|
|
5
|
+
const clc = require("colorette");
|
|
6
6
|
const fs = require("fs-extra");
|
|
7
7
|
const error_1 = require("../error");
|
|
8
8
|
const logger_1 = require("../logger");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.inferUpdateSource = exports.updateFromPublisherSource = exports.updateToVersionFromPublisherSource = exports.updateFromUrlSource = exports.updateFromLocalSource = exports.update = exports.
|
|
4
|
-
const clc = require("
|
|
3
|
+
exports.inferUpdateSource = exports.updateFromPublisherSource = exports.updateToVersionFromPublisherSource = exports.updateFromUrlSource = exports.updateFromLocalSource = exports.update = exports.warningUpdateToOtherSource = exports.getExistingSourceOrigin = void 0;
|
|
4
|
+
const clc = require("colorette");
|
|
5
5
|
const semver = require("semver");
|
|
6
6
|
const { marked } = require("marked");
|
|
7
7
|
const error_1 = require("../error");
|
|
@@ -52,12 +52,6 @@ function warningUpdateToOtherSource(sourceOrigin) {
|
|
|
52
52
|
logger_1.logger.info(marked(warning));
|
|
53
53
|
}
|
|
54
54
|
exports.warningUpdateToOtherSource = warningUpdateToOtherSource;
|
|
55
|
-
async function displayChanges(args) {
|
|
56
|
-
utils.logLabeledBullet("extensions", "This update contains the following changes:");
|
|
57
|
-
(0, displayExtensionInfo_1.displayUpdateChangesNoInput)(args.spec, args.newSpec);
|
|
58
|
-
await (0, displayExtensionInfo_1.displayUpdateChangesRequiringConfirmation)(args);
|
|
59
|
-
}
|
|
60
|
-
exports.displayChanges = displayChanges;
|
|
61
55
|
async function update(updateOptions) {
|
|
62
56
|
const { projectId, instanceId, source, extRef, params, canEmitEvents, allowedEventTypes, eventarcChannel, } = updateOptions;
|
|
63
57
|
if (extRef) {
|
|
@@ -126,7 +120,7 @@ async function updateToVersionFromPublisherSource(projectId, instanceId, extVers
|
|
|
126
120
|
source = await extensionsApi.getExtensionVersion(extVersionRef);
|
|
127
121
|
}
|
|
128
122
|
catch (err) {
|
|
129
|
-
throw new error_1.FirebaseError(`Could not find source '${clc.bold(extVersionRef)}' because (${clc.bold(version)}) is not a published version. To update, use the latest version of this extension (${clc.bold(extension.latestVersion)}).`);
|
|
123
|
+
throw new error_1.FirebaseError(`Could not find source '${clc.bold(extVersionRef)}' because (${clc.bold(version || "")}) is not a published version. To update, use the latest version of this extension (${clc.bold(extension.latestVersion || "")}).`);
|
|
130
124
|
}
|
|
131
125
|
showUpdateVersionInfo(instanceId, existingSpec.version, source.spec.version, extVersionRef);
|
|
132
126
|
warningUpdateToOtherSource(extensionsHelper_1.SourceOrigin.PUBLISHED_EXTENSION);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.outOfBandChangesWarning = exports.paramsFlagDeprecationWarning = exports.displayWarningsForDeploy = exports.displayWarningPrompts = void 0;
|
|
4
4
|
const { marked } = require("marked");
|
|
5
|
-
const clc = require("
|
|
5
|
+
const clc = require("colorette");
|
|
6
6
|
const types_1 = require("./types");
|
|
7
7
|
const displayExtensionInfo_1 = require("./displayExtensionInfo");
|
|
8
8
|
const extensionsHelper_1 = require("./extensionsHelper");
|
|
@@ -20,7 +20,7 @@ function displayEAPWarning({ publisherId, sourceDownloadUri, githubLink, }) {
|
|
|
20
20
|
(0, displayExtensionInfo_1.printSourceDownloadLink)(sourceDownloadUri);
|
|
21
21
|
}
|
|
22
22
|
function displayExperimentalWarning() {
|
|
23
|
-
utils.logLabeledBullet(extensionsHelper_1.logPrefix, marked(`${clc.yellow.bold("Important")}: This extension is ${clc.bold("experimental")} and may not be production-ready. Its functionality might change in backward-incompatible ways before its official release, or it may be discontinued.`));
|
|
23
|
+
utils.logLabeledBullet(extensionsHelper_1.logPrefix, marked(`${clc.yellow(clc.bold("Important"))}: This extension is ${clc.bold("experimental")} and may not be production-ready. Its functionality might change in backward-incompatible ways before its official release, or it may be discontinued.`));
|
|
24
24
|
}
|
|
25
25
|
async function displayWarningPrompts(publisherId, launchStage, extensionVersion) {
|
|
26
26
|
const trustedPublishers = await (0, resolveSource_1.getTrustedPublishers)();
|
package/lib/fetchMOTD.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.fetchMOTD = void 0;
|
|
4
|
-
const clc = require("
|
|
4
|
+
const clc = require("colorette");
|
|
5
5
|
const semver = require("semver");
|
|
6
6
|
const apiv2_1 = require("./apiv2");
|
|
7
7
|
const configstore_1 = require("./configstore");
|
package/lib/firestore/delete.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FirestoreDelete = void 0;
|
|
4
|
-
const clc = require("
|
|
4
|
+
const clc = require("colorette");
|
|
5
5
|
const ProgressBar = require("progress");
|
|
6
6
|
const apiv2 = require("../apiv2");
|
|
7
7
|
const firestore = require("../gcp/firestore");
|
package/lib/firestore/indexes.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FirestoreIndexes = void 0;
|
|
4
|
-
const clc = require("
|
|
4
|
+
const clc = require("colorette");
|
|
5
5
|
const logger_1 = require("../logger");
|
|
6
6
|
const utils = require("../utils");
|
|
7
7
|
const validator = require("./validator");
|
|
@@ -345,7 +345,7 @@ class FirestoreIndexes {
|
|
|
345
345
|
return result;
|
|
346
346
|
}
|
|
347
347
|
if (spec.indexes[0].collectionId) {
|
|
348
|
-
utils.logBullet(clc.bold.cyan("firestore:") +
|
|
348
|
+
utils.logBullet(clc.bold(clc.cyan("firestore:")) +
|
|
349
349
|
" your indexes indexes are specified in the v1beta1 API format. " +
|
|
350
350
|
"Please upgrade to the new index API format by running " +
|
|
351
351
|
clc.bold("firebase firestore:indexes") +
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.assertEnum = exports.assertHasOneOf = exports.assertHas = void 0;
|
|
4
|
-
const clc = require("
|
|
4
|
+
const clc = require("colorette");
|
|
5
5
|
const error_1 = require("../error");
|
|
6
6
|
function assertHas(obj, prop) {
|
|
7
7
|
const objString = clc.cyan(JSON.stringify(obj));
|
package/lib/functional.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.partition = exports.assertExhaustive = exports.zipIn = exports.zip = exports.reduceFlat = exports.flatten = exports.flattenArray = exports.flattenObject = void 0;
|
|
3
|
+
exports.nullsafeVisitor = exports.mapObject = exports.partition = exports.assertExhaustive = exports.zipIn = exports.zip = exports.reduceFlat = exports.flatten = exports.flattenArray = exports.flattenObject = void 0;
|
|
4
4
|
function* flattenObject(obj) {
|
|
5
5
|
function* helper(path, obj) {
|
|
6
6
|
for (const [k, v] of Object.entries(obj)) {
|
|
@@ -63,3 +63,18 @@ function partition(arr, callbackFn) {
|
|
|
63
63
|
}, [[], []]);
|
|
64
64
|
}
|
|
65
65
|
exports.partition = partition;
|
|
66
|
+
function mapObject(input, transform) {
|
|
67
|
+
const result = {};
|
|
68
|
+
for (const [k, v] of Object.entries(input)) {
|
|
69
|
+
result[k] = transform(v);
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
exports.mapObject = mapObject;
|
|
74
|
+
const nullsafeVisitor = (func, ...rest) => (first) => {
|
|
75
|
+
if (first === null) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
return func(first, ...rest);
|
|
79
|
+
};
|
|
80
|
+
exports.nullsafeVisitor = nullsafeVisitor;
|
package/lib/functions/env.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loadFirebaseEnvs = exports.loadUserEnvs = exports.writeUserEnvs = exports.hasUserEnvs = exports.parseStrict = exports.validateKey = exports.KeyValidationError = exports.parse = void 0;
|
|
4
|
-
const clc = require("
|
|
4
|
+
const clc = require("colorette");
|
|
5
5
|
const fs = require("fs");
|
|
6
6
|
const path = require("path");
|
|
7
7
|
const error_1 = require("../error");
|
|
@@ -173,7 +173,7 @@ function writeUserEnvs(toWrite, envOpts) {
|
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
175
|
const mostSpecificEnv = path.join(functionsSource, envFiles[envFiles.length - 1]);
|
|
176
|
-
(0, utils_1.logBullet)(clc.cyan.bold("functions: ") + `Writing new parameter values to disk: ${mostSpecificEnv}`);
|
|
176
|
+
(0, utils_1.logBullet)(clc.cyan(clc.bold("functions: ")) + `Writing new parameter values to disk: ${mostSpecificEnv}`);
|
|
177
177
|
for (const k of Object.keys(toWrite)) {
|
|
178
178
|
fs.appendFileSync(mostSpecificEnv, formatUserEnvForWrite(k, toWrite[k]));
|
|
179
179
|
}
|
|
@@ -219,7 +219,7 @@ function loadUserEnvs({ functionsSource, projectId, projectAlias, isEmulator, })
|
|
|
219
219
|
});
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
|
-
(0, utils_1.logBullet)(clc.cyan.bold("functions: ") + `Loaded environment variables from ${envFiles.join(", ")}.`);
|
|
222
|
+
(0, utils_1.logBullet)(clc.cyan(clc.bold("functions: ")) + `Loaded environment variables from ${envFiles.join(", ")}.`);
|
|
223
223
|
return envs;
|
|
224
224
|
}
|
|
225
225
|
exports.loadUserEnvs = loadUserEnvs;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateDotenvFilename = exports.toDotenvFormat = exports.hydrateEnvs = exports.configToEnv = exports.convertKey = exports.hydrateConfigs = exports.getProjectInfos = void 0;
|
|
4
|
-
const clc = require("
|
|
4
|
+
const clc = require("colorette");
|
|
5
5
|
const env = require("./env");
|
|
6
6
|
const functionsConfig = require("../functionsConfig");
|
|
7
7
|
const error_1 = require("../error");
|
package/lib/functionsConfig.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseUnsetArgs = exports.parseSetArgs = exports.materializeAll = exports.materializeConfig = exports.setVariablesRecursive = exports.getFirebaseConfig = exports.getAppEngineLocation = exports.idsToVarName = exports.varNameToIds = exports.ensureApi = exports.RESERVED_NAMESPACES = void 0;
|
|
4
4
|
const _ = require("lodash");
|
|
5
|
-
const clc = require("
|
|
5
|
+
const clc = require("colorette");
|
|
6
6
|
const api_1 = require("./api");
|
|
7
7
|
const apiv2_1 = require("./apiv2");
|
|
8
8
|
const ensureApiEnabled_1 = require("./ensureApiEnabled");
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.functionsConfigClone = void 0;
|
|
4
4
|
const _ = require("lodash");
|
|
5
|
-
const clc = require("
|
|
5
|
+
const clc = require("colorette");
|
|
6
6
|
const error_1 = require("./error");
|
|
7
7
|
const functionsConfig = require("./functionsConfig");
|
|
8
8
|
const runtimeconfig = require("./gcp/runtimeconfig");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.actionFunction = void 0;
|
|
4
|
-
const clc = require("
|
|
4
|
+
const clc = require("colorette");
|
|
5
5
|
const repl = require("repl");
|
|
6
6
|
const _ = require("lodash");
|
|
7
7
|
const request = require("request");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.functionFromEndpoint = exports.endpointFromFunction = exports.listAllFunctions = exports.listFunctions = exports.deleteFunction = exports.updateFunction = exports.setInvokerUpdate = exports.setInvokerCreate = exports.getIamPolicy = exports.setIamPolicy = exports.createFunction = exports.generateUploadUrl = exports.BLOCKING_LABEL = exports.CODEBASE_LABEL = exports.API_VERSION = void 0;
|
|
4
|
-
const clc = require("
|
|
4
|
+
const clc = require("colorette");
|
|
5
5
|
const error_1 = require("../error");
|
|
6
6
|
const logger_1 = require("../logger");
|
|
7
7
|
const backend = require("../deploy/functions/backend");
|
|
@@ -26,10 +26,10 @@ const BLOCKING_EVENT_TO_LABEL_KEY = {
|
|
|
26
26
|
function functionsOpLogReject(funcName, type, err) {
|
|
27
27
|
var _a, _b;
|
|
28
28
|
if (((_b = (_a = err === null || err === void 0 ? void 0 : err.context) === null || _a === void 0 ? void 0 : _a.response) === null || _b === void 0 ? void 0 : _b.statusCode) === 429) {
|
|
29
|
-
utils.logWarning(`${clc.bold.yellow("functions:")} got "Quota Exceeded" error while trying to ${type} ${funcName}. Waiting to retry...`);
|
|
29
|
+
utils.logWarning(`${clc.bold(clc.yellow("functions:"))} got "Quota Exceeded" error while trying to ${type} ${funcName}. Waiting to retry...`);
|
|
30
30
|
}
|
|
31
31
|
else {
|
|
32
|
-
utils.logWarning(clc.bold.yellow("functions:") + " failed to " + type + " function " + funcName);
|
|
32
|
+
utils.logWarning(clc.bold(clc.yellow("functions:")) + " failed to " + type + " function " + funcName);
|
|
33
33
|
}
|
|
34
34
|
throw new error_1.FirebaseError(`Failed to ${type} function ${funcName}`, {
|
|
35
35
|
original: err,
|
|
@@ -255,18 +255,20 @@ function endpointFromFunction(gcfFunction) {
|
|
|
255
255
|
if (securityLevel) {
|
|
256
256
|
endpoint.securityLevel = securityLevel;
|
|
257
257
|
}
|
|
258
|
-
proto.copyIfPresent(endpoint, gcfFunction, "
|
|
259
|
-
proto.renameIfPresent(endpoint, gcfFunction, "
|
|
258
|
+
proto.copyIfPresent(endpoint, gcfFunction, "minInstances", "maxInstances", "ingressSettings", "labels", "environmentVariables", "secretEnvironmentVariables", "sourceUploadUrl");
|
|
259
|
+
proto.renameIfPresent(endpoint, gcfFunction, "serviceAccount", "serviceAccountEmail");
|
|
260
|
+
proto.convertIfPresent(endpoint, gcfFunction, "availableMemoryMb", (raw) => raw);
|
|
261
|
+
proto.convertIfPresent(endpoint, gcfFunction, "timeoutSeconds", "timeout", (dur) => dur === null ? null : proto.secondsFromDuration(dur));
|
|
260
262
|
if (gcfFunction.vpcConnector) {
|
|
261
263
|
endpoint.vpc = { connector: gcfFunction.vpcConnector };
|
|
262
|
-
proto.
|
|
264
|
+
proto.convertIfPresent(endpoint.vpc, gcfFunction, "egressSettings", "vpcConnectorEgressSettings", (raw) => raw);
|
|
263
265
|
}
|
|
264
266
|
endpoint.codebase = ((_g = gcfFunction.labels) === null || _g === void 0 ? void 0 : _g[exports.CODEBASE_LABEL]) || projectConfig.DEFAULT_CODEBASE;
|
|
265
267
|
return endpoint;
|
|
266
268
|
}
|
|
267
269
|
exports.endpointFromFunction = endpointFromFunction;
|
|
268
270
|
function functionFromEndpoint(endpoint, sourceUploadUrl) {
|
|
269
|
-
var _a;
|
|
271
|
+
var _a, _b;
|
|
270
272
|
if (endpoint.platform !== "gcfv1") {
|
|
271
273
|
throw new error_1.FirebaseError("Trying to create a v1 CloudFunction with v2 API. This should never happen");
|
|
272
274
|
}
|
|
@@ -281,8 +283,13 @@ function functionFromEndpoint(endpoint, sourceUploadUrl) {
|
|
|
281
283
|
runtime: endpoint.runtime,
|
|
282
284
|
dockerRegistry: "ARTIFACT_REGISTRY",
|
|
283
285
|
};
|
|
284
|
-
|
|
286
|
+
if (typeof endpoint.labels !== "undefined") {
|
|
287
|
+
gcfFunction.labels = Object.assign({}, endpoint.labels);
|
|
288
|
+
}
|
|
285
289
|
if (backend.isEventTriggered(endpoint)) {
|
|
290
|
+
if (!((_a = endpoint.eventTrigger.eventFilters) === null || _a === void 0 ? void 0 : _a.resource)) {
|
|
291
|
+
throw new error_1.FirebaseError("Cannot create v1 function from an eventTrigger without a resource");
|
|
292
|
+
}
|
|
286
293
|
gcfFunction.eventTrigger = {
|
|
287
294
|
eventType: endpoint.eventTrigger.eventType,
|
|
288
295
|
resource: endpoint.eventTrigger.eventFilters.resource,
|
|
@@ -316,18 +323,24 @@ function functionFromEndpoint(endpoint, sourceUploadUrl) {
|
|
|
316
323
|
gcfFunction.httpsTrigger.securityLevel = endpoint.securityLevel;
|
|
317
324
|
}
|
|
318
325
|
}
|
|
319
|
-
proto.copyIfPresent(gcfFunction, endpoint, "
|
|
320
|
-
proto.renameIfPresent(gcfFunction, endpoint, "
|
|
326
|
+
proto.copyIfPresent(gcfFunction, endpoint, "minInstances", "maxInstances", "ingressSettings", "environmentVariables", "secretEnvironmentVariables");
|
|
327
|
+
proto.renameIfPresent(gcfFunction, endpoint, "serviceAccountEmail", "serviceAccount");
|
|
328
|
+
proto.convertIfPresent(gcfFunction, endpoint, "availableMemoryMb", (mem) => mem);
|
|
329
|
+
proto.convertIfPresent(gcfFunction, endpoint, "timeout", "timeoutSeconds", (sec) => sec ? proto.durationFromSeconds(sec) : null);
|
|
321
330
|
if (endpoint.vpc) {
|
|
322
331
|
proto.renameIfPresent(gcfFunction, endpoint.vpc, "vpcConnector", "connector");
|
|
323
332
|
proto.renameIfPresent(gcfFunction, endpoint.vpc, "vpcConnectorEgressSettings", "egressSettings");
|
|
324
333
|
}
|
|
334
|
+
else if (endpoint.vpc === null) {
|
|
335
|
+
gcfFunction.vpcConnector = null;
|
|
336
|
+
gcfFunction.vpcConnectorEgressSettings = null;
|
|
337
|
+
}
|
|
325
338
|
const codebase = endpoint.codebase || projectConfig.DEFAULT_CODEBASE;
|
|
326
339
|
if (codebase !== projectConfig.DEFAULT_CODEBASE) {
|
|
327
340
|
gcfFunction.labels = Object.assign(Object.assign({}, gcfFunction.labels), { [exports.CODEBASE_LABEL]: codebase });
|
|
328
341
|
}
|
|
329
342
|
else {
|
|
330
|
-
(
|
|
343
|
+
(_b = gcfFunction.labels) === null || _b === void 0 ? true : delete _b[exports.CODEBASE_LABEL];
|
|
331
344
|
}
|
|
332
345
|
return gcfFunction;
|
|
333
346
|
}
|