UNPKG

@layerfig/config

Version:

Layer and runtime-validate type-safe configs for JavaScript apps.

37 lines (35 loc) 1.56 kB
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