brek
Version:
55 lines • 2.73 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveConf = void 0;
const isLoader_1 = require("./isLoader");
const errors_1 = require("./errors");
const isEnvironmentVariable_1 = require("./isEnvironmentVariable");
function resolveConf(obj, loaders) {
return __awaiter(this, void 0, void 0, function* () {
const resolvedConfig = Object.assign({}, obj); // Make a copy of the object, which will be modified
yield Promise.all(Object.keys(obj).map((key) => __awaiter(this, void 0, void 0, function* () {
const value = obj[key];
if (typeof value === 'object' && value !== null) {
if (Array.isArray(value)) {
resolvedConfig[key] = yield Promise.all(value.map((item) => typeof item === 'object' && item !== null
? resolveConf(item, loaders)
: item));
}
else if ((0, isLoader_1.isLoader)(value)) {
resolvedConfig[key] = yield resolveLoader(value, loaders);
}
else {
// Recursively resolve the object
resolvedConfig[key] = yield resolveConf(value, loaders);
}
}
else if (typeof value === 'string' && (0, isEnvironmentVariable_1.isEnvironmentVariable)(value)) {
const name = value.slice(2, value.length - 1);
resolvedConfig[key] = process.env[name];
}
})));
return resolvedConfig;
});
}
exports.resolveConf = resolveConf;
function resolveLoader(obj, loaders) {
return __awaiter(this, void 0, void 0, function* () {
const [key] = Object.keys(obj); // [...]
const name = key.slice(1, key.length - 1);
const params = obj[key];
if (!loaders[name])
throw new errors_1.LoaderNotFound(name, loaders);
const loader = loaders[name];
return loader(params);
});
}
//# sourceMappingURL=resolveConf.js.map