You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.8 KiB
42 lines
1.8 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.functionsProxy = void 0;
|
|
const lodash_1 = require("lodash");
|
|
const proxy_1 = require("./proxy");
|
|
const projectUtils_1 = require("../projectUtils");
|
|
const registry_1 = require("../emulator/registry");
|
|
const types_1 = require("../emulator/types");
|
|
const functionsEmulator_1 = require("../emulator/functionsEmulator");
|
|
const error_1 = require("../error");
|
|
function functionsProxy(options) {
|
|
return (rewrite) => {
|
|
return new Promise((resolve) => {
|
|
const projectId = (0, projectUtils_1.needProjectId)(options);
|
|
if (!("function" in rewrite)) {
|
|
throw new error_1.FirebaseError(`A non-function rewrite cannot be used in functionsProxy`, {
|
|
exit: 2,
|
|
});
|
|
}
|
|
let functionId;
|
|
let region;
|
|
if (typeof rewrite.function === "string") {
|
|
functionId = rewrite.function;
|
|
region = rewrite.region || "us-central1";
|
|
}
|
|
else {
|
|
functionId = rewrite.function.functionId;
|
|
region = rewrite.function.region || "us-central1";
|
|
}
|
|
let url = `https://${region}-${projectId}.cloudfunctions.net/${functionId}`;
|
|
let destLabel = "live";
|
|
if ((0, lodash_1.includes)(options.targets, "functions")) {
|
|
destLabel = "local";
|
|
if (registry_1.EmulatorRegistry.isRunning(types_1.Emulators.FUNCTIONS)) {
|
|
url = functionsEmulator_1.FunctionsEmulator.getHttpFunctionUrl(projectId, functionId, region);
|
|
}
|
|
}
|
|
resolve((0, proxy_1.proxyRequestHandler)(url, `${destLabel} Function ${region}/${functionId}`));
|
|
});
|
|
};
|
|
}
|
|
exports.functionsProxy = functionsProxy;
|