@bitblit/epsilon
Version:
Tiny adapter to simplify building API gateway Lambda APIS
38 lines • 1.7 kB
JavaScript
;
/*
Functions to combine a set of yaml files
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.YamlCombiner = void 0;
const fs_1 = __importDefault(require("fs"));
const require_ratchet_1 = require("@bitblit/ratchet/common/require-ratchet");
const js_yaml_1 = __importDefault(require("js-yaml"));
const logger_1 = require("@bitblit/ratchet/common/logger");
class YamlCombiner {
static combine(files, inRootPath = []) {
require_ratchet_1.RequireRatchet.notNullOrUndefined(files, 'Files argument');
require_ratchet_1.RequireRatchet.true(files.length > 0, 'Files argument larger than 0');
require_ratchet_1.RequireRatchet.notNullOrUndefined(inRootPath, 'Root path argument');
logger_1.Logger.info('Processing %d files into output', files.length);
let allElements = {};
for (let i = 0; i < files.length; i++) {
const fileContents = fs_1.default.readFileSync(files[i]).toString();
const openApi = js_yaml_1.default.load(fileContents);
allElements = Object.assign(allElements, openApi);
}
const rootPath = Object.assign([], inRootPath);
while (rootPath.length > 0) {
const next = {};
next[rootPath[rootPath.length - 1]] = allElements;
rootPath.splice(rootPath.length - 1, 1);
allElements = next;
}
const rval = js_yaml_1.default.dump(allElements);
return rval;
}
}
exports.YamlCombiner = YamlCombiner;
//# sourceMappingURL=yaml-combiner.js.map