@layerfig/config
Version:
Layer and runtime-validate type-safe configs for JavaScript apps.
37 lines (35 loc) • 1.56 kB
JavaScript
const require_set = require('../../set-Bl59_6Sr.cjs');
const require_source = require('../../source-C9BKBtnS.cjs');
const require_utils = require('../../utils-q9FK7xDA.cjs');
const node_path = require_set.__toESM(require("node:path"));
//#region src/sources/file.ts
const APP_ROOT_PATH = process.cwd();
var FileSource = class extends require_source.Source {
#fileName;
constructor(fileName) {
super();
this.#fileName = fileName;
}
loadSource({ relativeConfigFolderPath, parser, slotPrefix, runtimeEnv }) {
const absoluteConfigFolderPath = node_path.default.join(APP_ROOT_PATH, relativeConfigFolderPath);
const absoluteFilePath = node_path.default.resolve(absoluteConfigFolderPath, this.#fileName);
const fileExtension = this.#getFileExtension(absoluteFilePath);
if (parser.acceptsExtension(fileExtension) === false) throw new Error(`".${fileExtension}" file is not supported by this parser. Accepted files are: "${parser.acceptedFileExtensions.join(", ")}"`);
const fileContentResult = require_utils.readIfExist(absoluteFilePath);
if (fileContentResult.ok === false) throw new Error(fileContentResult.error);
const finalContent = this.maybeReplaceSlotFromValue({
value: fileContentResult.data,
slotPrefix,
runtimeEnv
});
const parserResult = parser.load(finalContent);
if (!parserResult.ok) throw parserResult.error;
return parserResult.data;
}
#getFileExtension(filePath) {
return node_path.default.extname(filePath).slice(1);
}
};
//#endregion
exports.FileSource = FileSource;
//# sourceMappingURL=index.cjs.map