@geek-fun/serverlessinsight
Version:
Full life cycle cross providers serverless application management for your fast-growing business.
41 lines (40 loc) • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseYaml = void 0;
const node_fs_1 = require("node:fs");
const functionParser_1 = require("./functionParser");
const eventParser_1 = require("./eventParser");
const databaseParser_1 = require("./databaseParser");
const tagParser_1 = require("./tagParser");
const yaml_1 = require("yaml");
const validator_1 = require("../validator");
const bucketParser_1 = require("./bucketParser");
const tableParser_1 = require("./tableParser");
const validateExistence = (path) => {
if (!(0, node_fs_1.existsSync)(path)) {
throw new Error(`File does not exist at path: ${path}`);
}
};
const transformYaml = (iacJson) => {
return {
service: iacJson.service,
version: iacJson.version,
provider: iacJson.provider,
vars: iacJson.vars,
stages: iacJson.stages,
functions: (0, functionParser_1.parseFunction)(iacJson.functions),
events: (0, eventParser_1.parseEvent)(iacJson.events),
databases: (0, databaseParser_1.parseDatabase)(iacJson.databases),
tables: (0, tableParser_1.parseTable)(iacJson.tables),
tags: (0, tagParser_1.parseTag)(iacJson.tags),
buckets: (0, bucketParser_1.parseBucket)(iacJson.buckets),
};
};
const parseYaml = (iacLocation) => {
validateExistence(iacLocation);
const yamlContent = (0, node_fs_1.readFileSync)(iacLocation, 'utf8');
const iacJson = (0, yaml_1.parse)(yamlContent);
(0, validator_1.validateYaml)(iacJson);
return transformYaml(iacJson);
};
exports.parseYaml = parseYaml;