confn
Version:
A simple to implement config management node js library. Setup dev, staging, production, etc. config for your node app effortlessly.
70 lines (69 loc) • 2.15 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const store_1 = __importDefault(require("./store"));
class Conf {
constructor() { }
static init(config, storeName = 'env') {
const store = Conf.getStore(storeName);
if (store !== null) {
store.init(config);
}
return this._conf || (this._conf = new Conf());
}
static addStore(name, readFromEnv = true) {
let isStoreValid = true;
Conf.stores.forEach((store) => {
if (store.getName() === name)
isStoreValid = false;
});
if (!isStoreValid)
return false;
Conf.stores.push(new store_1.default(name, readFromEnv));
return true;
}
static getStore(name = 'env') {
let store = null;
Conf.stores.forEach((s) => {
if (s.getName() === name)
store = s;
});
return store;
}
static get(key = null, storeName = 'env') {
if (key === null) {
const store = Conf.getStore(storeName);
if (store === null)
return null;
return store.fetch();
}
else {
const store = Conf.getStore(storeName);
if (store === null)
return null;
return store.get(key);
}
}
static set(key, value, storeName = 'env') {
const store = Conf.getStore(storeName);
if (!store)
return false;
return store.set(key, value);
}
static override(key, value, storeName = 'env') {
const store = Conf.getStore(storeName);
if (!store)
return false;
return store.override(key, value);
}
static hardSet(key, value, storeName = 'env') {
const store = Conf.getStore(storeName);
if (!store)
return false;
return store.hardSet(key, value);
}
}
Conf.stores = [new store_1.default('env')];
exports.default = Conf;