123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.getNodeVersion = exports.getFunctionProperties = exports.getFunctionResourcesWithParamSubstitution = exports.readFileFromDirectory = exports.readPostinstall = exports.readExtensionYaml = void 0;
- const yaml = require("js-yaml");
- const path = require("path");
- const fs = require("fs-extra");
- const error_1 = require("../../error");
- const extensionsHelper_1 = require("../extensionsHelper");
- const utils_1 = require("../utils");
- const functionsEmulatorUtils_1 = require("../../emulator/functionsEmulatorUtils");
- const SPEC_FILE = "extension.yaml";
- const POSTINSTALL_FILE = "POSTINSTALL.md";
- const validFunctionTypes = [
- "firebaseextensions.v1beta.function",
- "firebaseextensions.v1beta.v2function",
- "firebaseextensions.v1beta.scheduledFunction",
- ];
- function wrappedSafeLoad(source) {
- try {
- return yaml.safeLoad(source);
- }
- catch (err) {
- if (err instanceof yaml.YAMLException) {
- throw new error_1.FirebaseError(`YAML Error: ${err.message}`, { original: err });
- }
- throw err;
- }
- }
- async function readExtensionYaml(directory) {
- const extensionYaml = await readFileFromDirectory(directory, SPEC_FILE);
- const source = extensionYaml.source;
- return wrappedSafeLoad(source);
- }
- exports.readExtensionYaml = readExtensionYaml;
- async function readPostinstall(directory) {
- const content = await readFileFromDirectory(directory, POSTINSTALL_FILE);
- return content.source;
- }
- exports.readPostinstall = readPostinstall;
- function readFileFromDirectory(directory, file) {
- return new Promise((resolve, reject) => {
- fs.readFile(path.resolve(directory, file), "utf8", (err, data) => {
- if (err) {
- if (err.code === "ENOENT") {
- return reject(new error_1.FirebaseError(`Could not find "${file}" in "${directory}"`, { original: err }));
- }
- reject(new error_1.FirebaseError(`Failed to read file "${file}" in "${directory}"`, { original: err }));
- }
- else {
- resolve(data);
- }
- });
- }).then((source) => {
- return {
- source,
- sourceDirectory: directory,
- };
- });
- }
- exports.readFileFromDirectory = readFileFromDirectory;
- function getFunctionResourcesWithParamSubstitution(extensionSpec, params) {
- const rawResources = extensionSpec.resources.filter((resource) => validFunctionTypes.includes(resource.type));
- return (0, extensionsHelper_1.substituteParams)(rawResources, params);
- }
- exports.getFunctionResourcesWithParamSubstitution = getFunctionResourcesWithParamSubstitution;
- function getFunctionProperties(resources) {
- return resources.map((r) => r.properties);
- }
- exports.getFunctionProperties = getFunctionProperties;
- function getNodeVersion(resources) {
- const invalidRuntimes = [];
- const versions = resources.map((r) => {
- if ((0, utils_1.getResourceRuntime)(r)) {
- const runtimeName = (0, utils_1.getResourceRuntime)(r);
- const runtime = (0, functionsEmulatorUtils_1.parseRuntimeVersion)(runtimeName);
- if (!runtime) {
- invalidRuntimes.push(runtimeName);
- }
- else {
- return runtime;
- }
- }
- return 14;
- });
- if (invalidRuntimes.length) {
- throw new error_1.FirebaseError(`The following runtimes are not supported by the Emulator Suite: ${invalidRuntimes.join(", ")}. \n Only Node runtimes are supported.`);
- }
- return Math.max(...versions);
- }
- exports.getNodeVersion = getNodeVersion;
|