UNPKG

@layerfig/config

Version:

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

40 lines (38 loc) 1.55 kB
const require_set = require('../../set-Bl59_6Sr.cjs'); const require_source = require('../../source-C9BKBtnS.cjs'); const zod_v4 = require_set.__toESM(require("zod/v4")); //#region src/sources/env-var.ts const EnvironmentVariableSourceOptions = zod_v4.z.object({ prefix: zod_v4.z.string().optional().default("APP"), prefixSeparator: zod_v4.z.string().optional().default("_"), separator: zod_v4.z.string().optional().default("__") }); const PartialEnvironmentVariableSourceOptions = EnvironmentVariableSourceOptions.partial(); var EnvironmentVariableSource = class extends require_source.Source { #options; #prefixWithSeparator; constructor(options = {}) { super(); this.#options = EnvironmentVariableSourceOptions.parse(options); this.#prefixWithSeparator = `${this.#options.prefix}${this.#options.prefixSeparator}`; } loadSource({ runtimeEnv, slotPrefix }) { const envKeys = Object.keys(runtimeEnv).filter((key) => key.startsWith(this.#prefixWithSeparator)); const tempObject = {}; for (const envKey of envKeys) { const envVarValue = runtimeEnv[envKey]; if (envVarValue === void 0) continue; const keyWithoutPrefix = envKey.replace(this.#prefixWithSeparator, ""); const keyParts = keyWithoutPrefix.split(this.#options.separator).join("."); require_set.set(tempObject, keyParts, this.maybeReplaceSlotFromValue({ value: envVarValue, runtimeEnv, slotPrefix })); } return tempObject; } }; //#endregion exports.EnvironmentVariableSource = EnvironmentVariableSource; //# sourceMappingURL=index.cjs.map