From bce557cc2dc767628bed6aac87301a1be7c5431b Mon Sep 17 00:00:00 2001 From: rxliuli Date: Tue, 4 Nov 2025 05:03:50 +0800 Subject: init commit --- .../@jet/environment/dependencies/object-graph.js | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 node_modules/@jet/environment/dependencies/object-graph.js (limited to 'node_modules/@jet/environment/dependencies/object-graph.js') 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 -- cgit v1.2.3