diff options
Diffstat (limited to 'node_modules/@jet/environment/dependencies/object-graph.js')
| -rw-r--r-- | node_modules/@jet/environment/dependencies/object-graph.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/node_modules/@jet/environment/dependencies/object-graph.js b/node_modules/@jet/environment/dependencies/object-graph.js new file mode 100644 index 0000000..e591f3f --- /dev/null +++ b/node_modules/@jet/environment/dependencies/object-graph.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.inject = exports.ObjectGraph = void 0; +const optional_1 = require("../types/optional"); +/* eslint-disable no-underscore-dangle */ +class ObjectGraph { + constructor(name) { + this._members = {}; + this.name = name; + } + adding(type, member) { + const clone = this.clone(); + clone._members[type.name] = member; + return clone; + } + removing(type) { + const clone = this.clone(); + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete clone._members[type.name]; + return clone; + } + optional(type) { + return this._members[type.name]; + } + required(type) { + const member = this._members[type.name]; + if ((0, optional_1.isNothing)(member)) { + // eslint-disable-next-line @typescript-eslint/require-array-sort-compare + const candidates = Object.keys(this._members).sort().join(", "); + throw new Error(`No member with type ${type.name} found in ${this.name}. Candidates ${candidates}`); + } + return member; + } + clone() { + const ctor = this.constructor; + // eslint-disable-next-line new-cap + const clone = new ctor(this.name); + for (const [type, member] of Object.entries(this._members)) { + clone._members[type] = member; + } + return clone; + } +} +exports.ObjectGraph = ObjectGraph; +function inject(type, objectGraph) { + return objectGraph.required(type); +} +exports.inject = inject; +//# sourceMappingURL=object-graph.js.map
\ No newline at end of file |
