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.
66 lines
2.6 KiB
66 lines
2.6 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.FunctionsServer = void 0;
|
|
const path = require("path");
|
|
const functionsEmulator_1 = require("../emulator/functionsEmulator");
|
|
const functionsEmulatorUtils_1 = require("../emulator/functionsEmulatorUtils");
|
|
const projectUtils_1 = require("../projectUtils");
|
|
const auth_1 = require("../auth");
|
|
const projectConfig = require("../functions/projectConfig");
|
|
const utils = require("../utils");
|
|
const registry_1 = require("../emulator/registry");
|
|
class FunctionsServer {
|
|
assertServer() {
|
|
if (!this.emulator || !this.backends) {
|
|
throw new Error("Must call start() before calling any other operation!");
|
|
}
|
|
return this.emulator;
|
|
}
|
|
async start(options, partialArgs) {
|
|
const projectId = (0, projectUtils_1.needProjectId)(options);
|
|
const config = projectConfig.normalizeAndValidate(options.config.src.functions);
|
|
const backends = [];
|
|
for (const cfg of config) {
|
|
const functionsDir = path.join(options.config.projectDir, cfg.source);
|
|
const nodeMajorVersion = (0, functionsEmulatorUtils_1.parseRuntimeVersion)(cfg.runtime);
|
|
backends.push({
|
|
functionsDir,
|
|
codebase: cfg.codebase,
|
|
nodeMajorVersion,
|
|
env: {},
|
|
secretEnv: [],
|
|
});
|
|
}
|
|
this.backends = backends;
|
|
const account = (0, auth_1.getProjectDefaultAccount)(options.config.projectDir);
|
|
const args = Object.assign({ projectId, projectDir: options.config.projectDir, emulatableBackends: this.backends, projectAlias: options.projectAlias, account }, partialArgs);
|
|
if (options.host) {
|
|
utils.assertIsStringOrUndefined(options.host);
|
|
args.host = options.host;
|
|
}
|
|
if (options.port) {
|
|
utils.assertIsNumber(options.port);
|
|
const targets = options.targets;
|
|
const port = options.port;
|
|
const hostingRunning = targets && targets.includes("hosting");
|
|
if (hostingRunning) {
|
|
args.port = port + 1;
|
|
}
|
|
else {
|
|
args.port = port;
|
|
}
|
|
}
|
|
this.emulator = new functionsEmulator_1.FunctionsEmulator(args);
|
|
return registry_1.EmulatorRegistry.start(this.emulator);
|
|
}
|
|
async connect() {
|
|
await this.assertServer().connect();
|
|
}
|
|
async stop() {
|
|
await this.assertServer().stop();
|
|
}
|
|
get() {
|
|
return this.assertServer();
|
|
}
|
|
}
|
|
exports.FunctionsServer = FunctionsServer;
|