nctx
Version:
NodeJS Contextual Dependency Injection using native async_hooks - IoC
49 lines (40 loc) • 834 B
JavaScript
const get = require("lodash/get");
const set = require("lodash/set");
const { isObjectKey } = require("./utils");
class Registry {
static create() {
return new Registry();
}
constructor() {
this.obj = {};
this.map = new Map();
this.parent = null;
}
get(key) {
if (key === undefined) {
return this.obj;
}
if (isObjectKey(key)) {
return get(this.obj, key);
}
return this.map.get(key);
}
set(key, val) {
if (isObjectKey(key)) {
set(this.obj, key, val);
} else {
this.map.set(key, val);
}
}
assign(obj = {}) {
for (const [k, v] of Object.entries(obj)) {
this.set(k, v);
}
}
replaceBy(registry) {
this.obj = registry.obj;
this.map = registry.map;
this.parent = registry.parent;
}
}
module.exports = Registry;