confn
Version:
A simple to implement config management node js library. Setup dev, staging, production, etc. config for your node app effortlessly.
67 lines (66 loc) • 1.92 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const base_1 = __importDefault(require("./base"));
class Store extends base_1.default {
constructor(name = 'env', readFromEnv = true) {
super();
this.store = {};
this.hardKeys = [];
this.name = name;
if (readFromEnv) {
Object.keys(process.env).forEach((key) => {
this.override(key, process.env[key]);
});
}
}
set(key, value) {
if (this.hardKeys.includes(key))
return false;
this.store[key] = value;
return true;
}
hardSet(key, value) {
this.store[key] = value;
if (!this.hardKeys.includes(key))
this.hardKeys.push(key);
return true;
}
get(key) {
return this.store[key];
}
fetch() {
return this.store;
}
override(key, value) {
if (this.hardKeys.includes(key))
return false;
this.hardKeys.push(key);
this.store[key] = value;
return true;
}
getName() {
return this.name;
}
init(config) {
if (!config)
return;
const NODE_ENV = this.store['NODE_ENV'];
// setup defaults
if (config['defaults']) {
Object.keys(config['defaults']).forEach((key) => {
this.override(key, config['defaults'][key]);
});
}
Object.keys(config).forEach((key) => {
if (key !== 'defaults' && typeof NODE_ENV === 'string' && NODE_ENV === key) {
Object.keys(config[key]).forEach((k) => {
this.hardSet(k, config[key][k]);
});
}
});
}
}
exports.default = Store;