@layerfig/config
Version:
Layer and runtime-validate type-safe configs for JavaScript apps.
40 lines (38 loc) • 1.55 kB
JavaScript
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