@willsoto/node-konfig-core
Version:
Core configuration pacakge supporting file, static and environment variables
47 lines • 1.43 kB
JavaScript
import { ValueNotFoundError } from "../errors.js";
import { Loader } from "./base.js";
export class EnvLoader extends Loader {
options;
name = "env";
constructor(options) {
super(options);
this.options = options;
}
async load(store) {
const values = this.options.envVars.map((envVar) => {
if (this.maxRetries > 0) {
return this.retryPolicy.execute(() => {
return this.processEnvVar(store, envVar);
});
}
return this.processEnvVar(store, envVar);
});
try {
await Promise.all(values);
}
catch (error) {
if (this.stopOnFailure) {
throw error;
}
}
}
processEnvVar(store, envVar) {
return new Promise((resolve, reject) => {
const { accessor, envVarName, arraySeparator } = envVar;
const value = process.env[envVarName];
if (!value) {
reject(new ValueNotFoundError());
return;
}
store.set(accessor, this.processValue(value, arraySeparator));
resolve();
});
}
processValue(value, arraySeparator) {
if (arraySeparator && value.includes(arraySeparator)) {
return value.split(arraySeparator);
}
return value;
}
}
//# sourceMappingURL=env.js.map