@decaf-ts/injectable-decorators 1.6.3 → 1.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.cjs CHANGED
@@ -27,6 +27,7 @@ __exportStar(require("./constants.cjs"), exports);
27
27
  __exportStar(require("./decorators.cjs"), exports);
28
28
  __exportStar(require("./Injectables.cjs"), exports);
29
29
  __exportStar(require("./registry.cjs"), exports);
30
+ __exportStar(require("./types.cjs"), exports);
30
31
  __exportStar(require("./utils.cjs"), exports);
31
32
  /**
32
33
  * @description Current version of the injectable-decorators library.
@@ -34,5 +35,5 @@ __exportStar(require("./utils.cjs"), exports);
34
35
  * @const VERSION
35
36
  * @memberOf module:injectable-decorators
36
37
  */
37
- exports.VERSION = "1.6.3";
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsa0RBQTRCO0FBQzVCLG1EQUE2QjtBQUM3QixvREFBOEI7QUFDOUIsaURBQTJCO0FBQzNCLDhDQUF3QjtBQUV4Qjs7Ozs7R0FLRztBQUNVLFFBQUEsT0FBTyxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2NyaXB0aW9uIEEgbGlnaHR3ZWlnaHQgZGVwZW5kZW5jeSBpbmplY3Rpb24gbGlicmFyeSBmb3IgVHlwZVNjcmlwdCBhcHBsaWNhdGlvbnMuXG4gKiBAc3VtbWFyeSBBZGRzIGEgc2ltcGxlIEluamVjdGFibGVzIGltcGxlbWVudGF0aW9uIHRvIGNyZWF0ZSBzaW5nbGV0b24gaW5zdGFuY2VzIG9mIGFuIG9iamVjdFxuICogYW5kIGVhc2lseSBpbmplY3QgaXQgaW50byBvdGhlciBvYmplY3RzLiBQcm92aWRlcyBkZWNvcmF0b3JzIGZvciBtYXJraW5nIGNsYXNzZXMgYXMgaW5qZWN0YWJsZVxuICogYW5kIGZvciBpbmplY3RpbmcgZGVwZW5kZW5jaWVzIGludG8gY2xhc3MgcHJvcGVydGllcy5cbiAqXG4gKiBAbW9kdWxlIGluamVjdGFibGUtZGVjb3JhdG9yc1xuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vSW5qZWN0YWJsZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDdXJyZW50IHZlcnNpb24gb2YgdGhlIGluamVjdGFibGUtZGVjb3JhdG9ycyBsaWJyYXJ5LlxuICogQHN1bW1hcnkgRGVmaW5lZCBvbiBsaWJyYXJ5IGJ1aWxkLiBIb2xkcyB0aGUgbGlicmFyeSdzIGN1cnJlbnQgdmVyc2lvbiBzdHJpbmcuXG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG4iXX0=
38
+ exports.VERSION = "1.6.4";
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsa0RBQTRCO0FBQzVCLG1EQUE2QjtBQUM3QixvREFBOEI7QUFDOUIsaURBQTJCO0FBQzNCLDhDQUF3QjtBQUN4Qiw4Q0FBd0I7QUFFeEI7Ozs7O0dBS0c7QUFDVSxRQUFBLE9BQU8sR0FBRyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBBIGxpZ2h0d2VpZ2h0IGRlcGVuZGVuY3kgaW5qZWN0aW9uIGxpYnJhcnkgZm9yIFR5cGVTY3JpcHQgYXBwbGljYXRpb25zLlxuICogQHN1bW1hcnkgQWRkcyBhIHNpbXBsZSBJbmplY3RhYmxlcyBpbXBsZW1lbnRhdGlvbiB0byBjcmVhdGUgc2luZ2xldG9uIGluc3RhbmNlcyBvZiBhbiBvYmplY3RcbiAqIGFuZCBlYXNpbHkgaW5qZWN0IGl0IGludG8gb3RoZXIgb2JqZWN0cy4gUHJvdmlkZXMgZGVjb3JhdG9ycyBmb3IgbWFya2luZyBjbGFzc2VzIGFzIGluamVjdGFibGVcbiAqIGFuZCBmb3IgaW5qZWN0aW5nIGRlcGVuZGVuY2llcyBpbnRvIGNsYXNzIHByb3BlcnRpZXMuXG4gKlxuICogQG1vZHVsZSBpbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0luamVjdGFibGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZWdpc3RyeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgaW5qZWN0YWJsZS1kZWNvcmF0b3JzIGxpYnJhcnkuXG4gKiBAc3VtbWFyeSBEZWZpbmVkIG9uIGxpYnJhcnkgYnVpbGQuIEhvbGRzIHRoZSBsaWJyYXJ5J3MgY3VycmVudCB2ZXJzaW9uIHN0cmluZy5cbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmluamVjdGFibGUtZGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcbiJdfQ==
package/lib/index.d.ts CHANGED
@@ -10,6 +10,7 @@ export * from "./constants";
10
10
  export * from "./decorators";
11
11
  export * from "./Injectables";
12
12
  export * from "./registry";
13
+ export * from "./types";
13
14
  export * from "./utils";
14
15
  /**
15
16
  * @description Current version of the injectable-decorators library.
@@ -17,4 +18,4 @@ export * from "./utils";
17
18
  * @const VERSION
18
19
  * @memberOf module:injectable-decorators
19
20
  */
20
- export declare const VERSION = "1.6.3";
21
+ export declare const VERSION = "1.6.4";
package/lib/registry.cjs CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InjectableRegistryImp = void 0;
4
+ const constants_1 = require("./constants.cjs");
5
+ const decorators_1 = require("./decorators.cjs");
4
6
  /**
5
7
  * @description Default implementation of the InjectablesRegistry interface.
6
8
  * @summary Holds the various {@link Injectable}s in a cache and provides methods to register, retrieve, and build them.
@@ -47,54 +49,64 @@ class InjectableRegistryImp {
47
49
  constructor() {
48
50
  this.cache = {};
49
51
  }
52
+ has(name) {
53
+ if (typeof name === "symbol")
54
+ return name in this.cache;
55
+ return Symbol.for(name.toString()) in this.cache;
56
+ }
50
57
  /**
51
58
  * @inheritDoc
52
59
  */
53
60
  get(name, ...args) {
54
- try {
55
- const innerCache = this.cache[name];
56
- const buildDef = { name: name };
57
- if (!innerCache.singleton && !innerCache.instance)
58
- return this.build(buildDef, ...args);
59
- return innerCache.instance || this.build(buildDef, ...args);
60
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
61
+ if (typeof name === "string")
62
+ name = Symbol.for(name);
63
+ if (typeof name !== "symbol") {
64
+ const meta = Reflect.getMetadata((0, decorators_1.getInjectKey)(constants_1.InjectablesKeys.INJECTABLE), name);
65
+ name = meta?.symbol || Symbol.for(name.toString());
61
66
  }
62
- catch (e) {
67
+ if (!name)
68
+ throw new Error(`Injectable ${name} not found`);
69
+ if (!(name in this.cache)) {
63
70
  return undefined;
64
71
  }
72
+ const cache = this.cache[name];
73
+ if (!cache.options.singleton && !cache.instance)
74
+ return this.build(name, ...args);
75
+ return cache.instance || this.build(name, ...args);
65
76
  }
66
77
  /**
67
78
  * @inheritDoc
68
79
  */
69
- register(obj, category = undefined, isSingleton = true, force = false) {
80
+ register(obj, category, options, force = false) {
70
81
  const castObj = obj;
71
82
  const constructor = !castObj.name && castObj.constructor;
72
83
  if (typeof castObj !== "function" && !constructor)
73
84
  throw new Error(`Injectable registering failed. Missing Class name or constructor`);
74
- const name = category ||
75
- (constructor && constructor.name && constructor.name !== "Function"
76
- ? constructor.name
77
- : castObj.name);
85
+ const name = category || Symbol.for(obj.toString());
78
86
  if (!this.cache[name] || force)
79
87
  this.cache[name] = {
80
88
  instance: constructor ? obj : undefined,
81
- constructor: !constructor ? obj : undefined,
82
- singleton: isSingleton,
89
+ constructor: !constructor ? obj : obj.constructor,
90
+ options: options,
83
91
  };
84
92
  }
85
93
  /**
86
94
  * @inheritDoc
87
95
  */
88
- build(defs, ...args) {
89
- const { constructor, singleton } = this.cache[defs.name];
90
- const instance = new constructor(...args);
91
- this.cache[defs.name] = {
92
- instance: instance,
93
- constructor: constructor,
94
- singleton: singleton,
95
- };
96
+ build(name, ...args) {
97
+ const { constructor, options } = this.cache[name];
98
+ let instance;
99
+ try {
100
+ instance = new constructor(...args);
101
+ }
102
+ catch (e) {
103
+ throw new Error(`failed to build ${name.toString()} with args ${args}: ${e}`);
104
+ }
105
+ this.cache[name].instance = instance;
106
+ if (options.callback)
107
+ instance = options.callback(instance, ...args);
96
108
  return instance;
97
109
  }
98
110
  }
99
111
  exports.InjectableRegistryImp = InjectableRegistryImp;
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbURBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlDRztBQUNILE1BQWEscUJBQXFCO0lBQWxDO1FBQ1UsVUFBSyxHQUErQixFQUFFLENBQUM7SUE0RGpELENBQUM7SUExREM7O09BRUc7SUFDSCxHQUFHLENBQUksSUFBWSxFQUFFLEdBQUcsSUFBVztRQUNqQyxJQUFJLENBQUM7WUFDSCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVE7Z0JBQy9DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBSSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUMxQyxPQUFPLFVBQVUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBSSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUMvRCw2REFBNkQ7UUFDL0QsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUNEOztPQUVHO0lBQ0gsUUFBUSxDQUNOLEdBQWtCLEVBQ2xCLFdBQStCLFNBQVMsRUFDeEMsY0FBdUIsSUFBSSxFQUMzQixRQUFpQixLQUFLO1FBRXRCLE1BQU0sT0FBTyxHQUF3QixHQUEwQixDQUFDO1FBRWhFLE1BQU0sV0FBVyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3pELElBQUksT0FBTyxPQUFPLEtBQUssVUFBVSxJQUFJLENBQUMsV0FBVztZQUMvQyxNQUFNLElBQUksS0FBSyxDQUNiLGtFQUFrRSxDQUNuRSxDQUFDO1FBRUosTUFBTSxJQUFJLEdBQ1IsUUFBUTtZQUNSLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxJQUFJLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxVQUFVO2dCQUNqRSxDQUFDLENBQUUsV0FBMEMsQ0FBQyxJQUFJO2dCQUNsRCxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUs7WUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRztnQkFDakIsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUN2QyxXQUFXLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDM0MsU0FBUyxFQUFFLFdBQVc7YUFDdkIsQ0FBQztJQUNOLENBQUM7SUFDRDs7T0FFRztJQUNILEtBQUssQ0FBSSxJQUFzQixFQUFFLEdBQUcsSUFBVztRQUM3QyxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLElBQUksV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7WUFDdEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsV0FBVyxFQUFFLFdBQVc7WUFDeEIsU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRjtBQTdERCxzREE2REMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIHJlcHJlc2VudGluZyBlaXRoZXIgYSBjbGFzcyBjb25zdHJ1Y3RvciBvciBhbiBpbnN0YW5jZS5cbiAqIEBzdW1tYXJ5IERlZmluZXMgYW4gSW5qZWN0YWJsZSB0eXBlIHRoYXQgY2FuIGJlIGVpdGhlciBhIGNsYXNzIGNvbnN0cnVjdG9yIG9yIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MuXG4gKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiB0aGUgaW5qZWN0YWJsZSBvYmplY3RcbiAqIEB0eXBlZGVmIHtmdW5jdGlvbihhbnkpOiBUIHwgVH0gSW5qZWN0YWJsZVxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IHR5cGUgSW5qZWN0YWJsZTxUPiA9IHsgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQgfSB8IFQ7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnRyYWN0IGZvciBhIHJlZ2lzdHJ5IHRoYXQgbWFuYWdlcyBpbmplY3RhYmxlIG9iamVjdHMuXG4gKiBAc3VtbWFyeSBJbnRlcmZhY2UgZm9yIGFuIGluamVjdGFibGUgcmVnaXN0cnkgdGhhdCBwcm92aWRlcyBtZXRob2RzIGZvciByZXRyaWV2aW5nLCByZWdpc3RlcmluZywgYW5kIGJ1aWxkaW5nIGluamVjdGFibGUgb2JqZWN0cy5cbiAqIEB0ZW1wbGF0ZSBUIFR5cGUgcGFyYW1ldGVyIHVzZWQgaW4gdGhlIGludGVyZmFjZSBtZXRob2RzXG4gKiBAaW50ZXJmYWNlIEluamVjdGFibGVzUmVnaXN0cnlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5qZWN0YWJsZXNSZWdpc3RyeSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmV0Y2hlcyBhbiBpbmplY3RhYmxlIGluc3RhbmNlIGJ5IGl0cyByZWdpc3RlcmVkIG5hbWUuXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBhbiB7QGxpbmsgSW5qZWN0YWJsZX0gZnJvbSB0aGUgcmVnaXN0cnkgYnkgbmFtZSwgb3B0aW9uYWxseSBwYXNzaW5nIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy5cbiAgICogQHRlbXBsYXRlIFQgVHlwZSBvZiB0aGUgaW5qZWN0YWJsZSBvYmplY3QgdG8gcmV0cmlldmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIHJlZ2lzdGVyZWQgbmFtZSBvZiB0aGUgaW5qZWN0YWJsZSB0byByZXRyaWV2ZVxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzIENvbnN0cnVjdG9yIGFyZ3VtZW50cyB0byBwYXNzIHdoZW4gaW5zdGFudGlhdGluZyB0aGUgaW5qZWN0YWJsZVxuICAgKiBAcmV0dXJuIHtJbmplY3RhYmxlPFQ+IHwgdW5kZWZpbmVkfSBUaGUgaW5qZWN0YWJsZSBpbnN0YW5jZSBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kXG4gICAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gICAqL1xuICBnZXQ8VD4obmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IEluamVjdGFibGU8VD4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBZGRzIGEgY2xhc3Mgb3Igb2JqZWN0IHRvIHRoZSBpbmplY3RhYmxlIHJlZ2lzdHJ5LlxuICAgKiBAc3VtbWFyeSBSZWdpc3RlcnMgYW4gaW5qZWN0YWJsZSBjb25zdHJ1Y3RvciBvciBpbnN0YW5jZSB3aXRoIHRoZSByZWdpc3RyeSwgbWFraW5nIGl0IGF2YWlsYWJsZSBmb3IgaW5qZWN0aW9uLlxuICAgKiBAdGVtcGxhdGUgVCBUeXBlIG9mIHRoZSBpbmplY3RhYmxlIG9iamVjdCB0byByZWdpc3RlclxuICAgKiBAcGFyYW0ge0luamVjdGFibGU8VD59IGNvbnN0cnVjdG9yIFRoZSBjbGFzcyBjb25zdHJ1Y3RvciBvciBvYmplY3QgaW5zdGFuY2UgdG8gcmVnaXN0ZXJcbiAgICogQHBhcmFtIHthbnlbXX0gYXJncyBBZGRpdGlvbmFsIGFyZ3VtZW50cyBmb3IgcmVnaXN0cmF0aW9uIChjYXRlZ29yeSwgc2luZ2xldG9uIGZsYWcsIGV0Yy4pXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gICAqL1xuICByZWdpc3RlcjxUPihjb25zdHJ1Y3RvcjogSW5qZWN0YWJsZTxUPiwgLi4uYXJnczogYW55W10pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBhbiBpbmplY3RhYmxlIGNsYXNzLlxuICAgKiBAc3VtbWFyeSBJbnN0YW50aWF0ZXMgYW4gaW5qZWN0YWJsZSBjbGFzcyB1c2luZyBpdHMgY29uc3RydWN0b3IgYW5kIHRoZSBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAqIEB0ZW1wbGF0ZSBUIFR5cGUgb2YgdGhlIG9iamVjdCB0byBidWlsZFxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG9iaiBPYmplY3QgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgaW5qZWN0YWJsZSB0byBidWlsZFxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzIENvbnN0cnVjdG9yIGFyZ3VtZW50cyB0byBwYXNzIHdoZW4gaW5zdGFudGlhdGluZyB0aGUgaW5qZWN0YWJsZVxuICAgKiBAcmV0dXJuIHtUfSBUaGUgbmV3bHkgY3JlYXRlZCBpbnN0YW5jZVxuICAgKiBAbWVtYmVyT2YgbW9kdWxlOmluamVjdGFibGUtZGVjb3JhdG9yc1xuICAgKi9cbiAgYnVpbGQ8VD4ob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCAuLi5hcmdzOiBhbnlbXSk6IFQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEluamVjdGFibGVzUmVnaXN0cnkgaW50ZXJmYWNlLlxuICogQHN1bW1hcnkgSG9sZHMgdGhlIHZhcmlvdXMge0BsaW5rIEluamVjdGFibGV9cyBpbiBhIGNhY2hlIGFuZCBwcm92aWRlcyBtZXRob2RzIHRvIHJlZ2lzdGVyLCByZXRyaWV2ZSwgYW5kIGJ1aWxkIHRoZW0uXG4gKiBAdGVtcGxhdGUgVCBUeXBlIHBhcmFtZXRlciB1c2VkIGluIHRoZSBjbGFzcyBtZXRob2RzXG4gKlxuICogQGNsYXNzIEluamVjdGFibGVSZWdpc3RyeUltcFxuICogQGltcGxlbWVudHMgSW5qZWN0YWJsZXNSZWdpc3RyeVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENyZWF0ZSBhIG5ldyByZWdpc3RyeVxuICogY29uc3QgcmVnaXN0cnkgPSBuZXcgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wKCk7XG4gKlxuICogLy8gUmVnaXN0ZXIgYSBjbGFzc1xuICogY2xhc3MgTXlTZXJ2aWNlIHtcbiAqICAgZG9Tb21ldGhpbmcoKSB7XG4gKiAgICAgcmV0dXJuICdIZWxsbyBXb3JsZCc7XG4gKiAgIH1cbiAqIH1cbiAqIHJlZ2lzdHJ5LnJlZ2lzdGVyKE15U2VydmljZSwgJ015U2VydmljZScsIHRydWUpO1xuICpcbiAqIC8vIEdldCB0aGUgaW5zdGFuY2VcbiAqIGNvbnN0IHNlcnZpY2UgPSByZWdpc3RyeS5nZXQoJ015U2VydmljZScpO1xuICogc2VydmljZS5kb1NvbWV0aGluZygpOyAvLyAnSGVsbG8gV29ybGQnXG4gKlxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAqICAgcGFydGljaXBhbnQgUmVnaXN0cnlcbiAqXG4gKiAgIENsaWVudC0+PlJlZ2lzdHJ5OiByZWdpc3RlcihNeVNlcnZpY2UpXG4gKiAgIFJlZ2lzdHJ5LT4+UmVnaXN0cnk6IFN0b3JlIGluIGNhY2hlXG4gKlxuICogICBDbGllbnQtPj5SZWdpc3RyeTogZ2V0KFwiTXlTZXJ2aWNlXCIpXG4gKiAgIGFsdCBJbnN0YW5jZSBleGlzdHMgYW5kIGlzIHNpbmdsZXRvblxuICogICAgIFJlZ2lzdHJ5LS0+PkNsaWVudDogUmV0dXJuIGNhY2hlZCBpbnN0YW5jZVxuICogICBlbHNlIE5vIGluc3RhbmNlIG9yIG5vdCBzaW5nbGV0b25cbiAqICAgICBSZWdpc3RyeS0+PlJlZ2lzdHJ5OiBidWlsZChuYW1lKVxuICogICAgIFJlZ2lzdHJ5LS0+PkNsaWVudDogUmV0dXJuIG5ldyBpbnN0YW5jZVxuICogICBlbmRcbiAqL1xuZXhwb3J0IGNsYXNzIEluamVjdGFibGVSZWdpc3RyeUltcCBpbXBsZW1lbnRzIEluamVjdGFibGVzUmVnaXN0cnkge1xuICBwcml2YXRlIGNhY2hlOiB7IFtpbmRleGVyOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgZ2V0PFQ+KG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBUIHwgdW5kZWZpbmVkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaW5uZXJDYWNoZSA9IHRoaXMuY2FjaGVbbmFtZV07XG4gICAgICBjb25zdCBidWlsZERlZiA9IHsgbmFtZTogbmFtZSB9O1xuICAgICAgaWYgKCFpbm5lckNhY2hlLnNpbmdsZXRvbiAmJiAhaW5uZXJDYWNoZS5pbnN0YW5jZSlcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGQ8VD4oYnVpbGREZWYsIC4uLmFyZ3MpO1xuICAgICAgcmV0dXJuIGlubmVyQ2FjaGUuaW5zdGFuY2UgfHwgdGhpcy5idWlsZDxUPihidWlsZERlZiwgLi4uYXJncyk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICByZWdpc3RlcjxUPihcbiAgICBvYmo6IEluamVjdGFibGU8VD4sXG4gICAgY2F0ZWdvcnk6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBpc1NpbmdsZXRvbjogYm9vbGVhbiA9IHRydWUsXG4gICAgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBjYXN0T2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gb2JqIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgICBjb25zdCBjb25zdHJ1Y3RvciA9ICFjYXN0T2JqLm5hbWUgJiYgY2FzdE9iai5jb25zdHJ1Y3RvcjtcbiAgICBpZiAodHlwZW9mIGNhc3RPYmogIT09IFwiZnVuY3Rpb25cIiAmJiAhY29uc3RydWN0b3IpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbmplY3RhYmxlIHJlZ2lzdGVyaW5nIGZhaWxlZC4gTWlzc2luZyBDbGFzcyBuYW1lIG9yIGNvbnN0cnVjdG9yYFxuICAgICAgKTtcblxuICAgIGNvbnN0IG5hbWUgPVxuICAgICAgY2F0ZWdvcnkgfHxcbiAgICAgIChjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5uYW1lICYmIGNvbnN0cnVjdG9yLm5hbWUgIT09IFwiRnVuY3Rpb25cIlxuICAgICAgICA/IChjb25zdHJ1Y3RvciBhcyB7IFtpbmRleGVyOiBzdHJpbmddOiBhbnkgfSkubmFtZVxuICAgICAgICA6IGNhc3RPYmoubmFtZSk7XG5cbiAgICBpZiAoIXRoaXMuY2FjaGVbbmFtZV0gfHwgZm9yY2UpXG4gICAgICB0aGlzLmNhY2hlW25hbWVdID0ge1xuICAgICAgICBpbnN0YW5jZTogY29uc3RydWN0b3IgPyBvYmogOiB1bmRlZmluZWQsXG4gICAgICAgIGNvbnN0cnVjdG9yOiAhY29uc3RydWN0b3IgPyBvYmogOiB1bmRlZmluZWQsXG4gICAgICAgIHNpbmdsZXRvbjogaXNTaW5nbGV0b24sXG4gICAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgYnVpbGQ8VD4oZGVmczogeyBuYW1lOiBzdHJpbmcgfSwgLi4uYXJnczogYW55W10pOiBUIHtcbiAgICBjb25zdCB7IGNvbnN0cnVjdG9yLCBzaW5nbGV0b24gfSA9IHRoaXMuY2FjaGVbZGVmcy5uYW1lXTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBjb25zdHJ1Y3RvciguLi5hcmdzKTtcbiAgICB0aGlzLmNhY2hlW2RlZnMubmFtZV0gPSB7XG4gICAgICBpbnN0YW5jZTogaW5zdGFuY2UsXG4gICAgICBjb25zdHJ1Y3RvcjogY29uc3RydWN0b3IsXG4gICAgICBzaW5nbGV0b246IHNpbmdsZXRvbixcbiAgICB9O1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxufVxuIl19
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0NBQThDO0FBQzlDLGlEQUE0QztBQThENUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNHO0FBQ0gsTUFBYSxxQkFBcUI7SUFBbEM7UUFDVSxVQUFLLEdBQWtDLEVBQUUsQ0FBQztJQTJFcEQsQ0FBQztJQXpFQyxHQUFHLENBQUksSUFBMEM7UUFDL0MsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1lBQUUsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4RCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHLENBQ0QsSUFBbUQsRUFDbkQsR0FBRyxJQUFXO1FBRWQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1lBQUUsSUFBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsV0FBVyxDQUM5QixJQUFBLHlCQUFZLEVBQUMsMkJBQWUsQ0FBQyxVQUFVLENBQUMsRUFDeEMsSUFBSSxDQUNMLENBQUM7WUFDRixJQUFJLEdBQUksSUFBSSxFQUFFLE1BQWlCLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxZQUFZLENBQUMsQ0FBQztRQUUzRCxJQUFJLENBQUMsQ0FBRSxJQUFlLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDN0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRDs7T0FFRztJQUNILFFBQVEsQ0FDTixHQUFrQixFQUNsQixRQUE0QixFQUM1QixPQUE2QixFQUM3QixRQUFpQixLQUFLO1FBRXRCLE1BQU0sT0FBTyxHQUF3QixHQUEwQixDQUFDO1FBRWhFLE1BQU0sV0FBVyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3pELElBQUksT0FBTyxPQUFPLEtBQUssVUFBVSxJQUFJLENBQUMsV0FBVztZQUMvQyxNQUFNLElBQUksS0FBSyxDQUNiLGtFQUFrRSxDQUNuRSxDQUFDO1FBRUosTUFBTSxJQUFJLEdBQUcsUUFBUSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUUsR0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSztZQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHO2dCQUNqQixRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3ZDLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBRSxHQUFXLENBQUMsV0FBVztnQkFDMUQsT0FBTyxFQUFFLE9BQU87YUFDakIsQ0FBQztJQUNOLENBQUM7SUFDRDs7T0FFRztJQUNILEtBQUssQ0FBSSxJQUFZLEVBQUUsR0FBRyxJQUFXO1FBQ25DLE1BQU0sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLFFBQVcsQ0FBQztRQUNoQixJQUFJLENBQUM7WUFDSCxRQUFRLEdBQUcsSUFBSSxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUNiLG1CQUFtQixJQUFJLENBQUMsUUFBUSxFQUFFLGNBQWMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUM3RCxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUNyQyxJQUFJLE9BQU8sQ0FBQyxRQUFRO1lBQUUsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDckUsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGO0FBNUVELHNEQTRFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGVEZWYsIEluamVjdGFibGVPcHRpb25zIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IEluamVjdGFibGVzS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZ2V0SW5qZWN0S2V5IH0gZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIHJlcHJlc2VudGluZyBlaXRoZXIgYSBjbGFzcyBjb25zdHJ1Y3RvciBvciBhbiBpbnN0YW5jZS5cbiAqIEBzdW1tYXJ5IERlZmluZXMgYW4gSW5qZWN0YWJsZSB0eXBlIHRoYXQgY2FuIGJlIGVpdGhlciBhIGNsYXNzIGNvbnN0cnVjdG9yIG9yIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MuXG4gKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiB0aGUgaW5qZWN0YWJsZSBvYmplY3RcbiAqIEB0eXBlZGVmIHtmdW5jdGlvbihhbnkpOiBUIHwgVH0gSW5qZWN0YWJsZVxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IHR5cGUgSW5qZWN0YWJsZTxUPiA9IHsgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQgfSB8IFQ7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnRyYWN0IGZvciBhIHJlZ2lzdHJ5IHRoYXQgbWFuYWdlcyBpbmplY3RhYmxlIG9iamVjdHMuXG4gKiBAc3VtbWFyeSBJbnRlcmZhY2UgZm9yIGFuIGluamVjdGFibGUgcmVnaXN0cnkgdGhhdCBwcm92aWRlcyBtZXRob2RzIGZvciByZXRyaWV2aW5nLCByZWdpc3RlcmluZywgYW5kIGJ1aWxkaW5nIGluamVjdGFibGUgb2JqZWN0cy5cbiAqIEB0ZW1wbGF0ZSBUIFR5cGUgcGFyYW1ldGVyIHVzZWQgaW4gdGhlIGludGVyZmFjZSBtZXRob2RzXG4gKiBAaW50ZXJmYWNlIEluamVjdGFibGVzUmVnaXN0cnlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5qZWN0YWJsZXNSZWdpc3RyeSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmV0Y2hlcyBhbiBpbmplY3RhYmxlIGluc3RhbmNlIGJ5IGl0cyByZWdpc3RlcmVkIG5hbWUuXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBhbiB7QGxpbmsgSW5qZWN0YWJsZX0gZnJvbSB0aGUgcmVnaXN0cnkgYnkgbmFtZSwgb3B0aW9uYWxseSBwYXNzaW5nIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy5cbiAgICogQHRlbXBsYXRlIFQgVHlwZSBvZiB0aGUgaW5qZWN0YWJsZSBvYmplY3QgdG8gcmV0cmlldmVcbiAgICogQHBhcmFtIHtzeW1ib2x9IG5hbWUgVGhlIHJlZ2lzdGVyZWQgbmFtZSBvZiB0aGUgaW5qZWN0YWJsZSB0byByZXRyaWV2ZVxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzIENvbnN0cnVjdG9yIGFyZ3VtZW50cyB0byBwYXNzIHdoZW4gaW5zdGFudGlhdGluZyB0aGUgaW5qZWN0YWJsZVxuICAgKiBAcmV0dXJuIHtJbmplY3RhYmxlPFQ+IHwgdW5kZWZpbmVkfSBUaGUgaW5qZWN0YWJsZSBpbnN0YW5jZSBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kXG4gICAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gICAqL1xuICBnZXQ8VD4oXG4gICAgbmFtZTogc3ltYm9sIHwgc3RyaW5nIHwgeyBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVCB9LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBZGRzIGEgY2xhc3Mgb3Igb2JqZWN0IHRvIHRoZSBpbmplY3RhYmxlIHJlZ2lzdHJ5LlxuICAgKiBAc3VtbWFyeSBSZWdpc3RlcnMgYW4gaW5qZWN0YWJsZSBjb25zdHJ1Y3RvciBvciBpbnN0YW5jZSB3aXRoIHRoZSByZWdpc3RyeSwgbWFraW5nIGl0IGF2YWlsYWJsZSBmb3IgaW5qZWN0aW9uLlxuICAgKiBAdGVtcGxhdGUgVCBUeXBlIG9mIHRoZSBpbmplY3RhYmxlIG9iamVjdCB0byByZWdpc3RlclxuICAgKiBAcGFyYW0ge0luamVjdGFibGU8VD59IGNvbnN0cnVjdG9yIFRoZSBjbGFzcyBjb25zdHJ1Y3RvciBvciBvYmplY3QgaW5zdGFuY2UgdG8gcmVnaXN0ZXJcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHBhcmFtIHthbnlbXX0gYXJncyBBZGRpdGlvbmFsIGFyZ3VtZW50cyBmb3IgcmVnaXN0cmF0aW9uIChjYXRlZ29yeSwgc2luZ2xldG9uIGZsYWcsIGV0Yy4pXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gICAqL1xuICByZWdpc3RlcjxUPihcbiAgICBjb25zdHJ1Y3RvcjogSW5qZWN0YWJsZTxUPixcbiAgICBjYXRlZ29yeTogc3ltYm9sIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM6IEluamVjdGFibGVPcHRpb25zPFQ+LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIGFuIGluamVjdGFibGUgY2xhc3MuXG4gICAqIEBzdW1tYXJ5IEluc3RhbnRpYXRlcyBhbiBpbmplY3RhYmxlIGNsYXNzIHVzaW5nIGl0cyBjb25zdHJ1Y3RvciBhbmQgdGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICogQHRlbXBsYXRlIFQgVHlwZSBvZiB0aGUgb2JqZWN0IHRvIGJ1aWxkXG4gICAqIEBwYXJhbSB7c3ltYm9sfSBuYW1lIE9iamVjdCBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBpbmplY3RhYmxlIHRvIGJ1aWxkXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3MgQ29uc3RydWN0b3IgYXJndW1lbnRzIHRvIHBhc3Mgd2hlbiBpbnN0YW50aWF0aW5nIHRoZSBpbmplY3RhYmxlXG4gICAqIEByZXR1cm4ge1R9IFRoZSBuZXdseSBjcmVhdGVkIGluc3RhbmNlXG4gICAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gICAqL1xuICBidWlsZDxUPihuYW1lOiBzeW1ib2wsIC4uLmFyZ3M6IGFueVtdKTogVDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSW5qZWN0YWJsZXNSZWdpc3RyeSBpbnRlcmZhY2UuXG4gKiBAc3VtbWFyeSBIb2xkcyB0aGUgdmFyaW91cyB7QGxpbmsgSW5qZWN0YWJsZX1zIGluIGEgY2FjaGUgYW5kIHByb3ZpZGVzIG1ldGhvZHMgdG8gcmVnaXN0ZXIsIHJldHJpZXZlLCBhbmQgYnVpbGQgdGhlbS5cbiAqIEB0ZW1wbGF0ZSBUIFR5cGUgcGFyYW1ldGVyIHVzZWQgaW4gdGhlIGNsYXNzIG1ldGhvZHNcbiAqXG4gKiBAY2xhc3MgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wXG4gKiBAaW1wbGVtZW50cyBJbmplY3RhYmxlc1JlZ2lzdHJ5XG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3JlYXRlIGEgbmV3IHJlZ2lzdHJ5XG4gKiBjb25zdCByZWdpc3RyeSA9IG5ldyBJbmplY3RhYmxlUmVnaXN0cnlJbXAoKTtcbiAqXG4gKiAvLyBSZWdpc3RlciBhIGNsYXNzXG4gKiBjbGFzcyBNeVNlcnZpY2Uge1xuICogICBkb1NvbWV0aGluZygpIHtcbiAqICAgICByZXR1cm4gJ0hlbGxvIFdvcmxkJztcbiAqICAgfVxuICogfVxuICogcmVnaXN0cnkucmVnaXN0ZXIoTXlTZXJ2aWNlLCAnTXlTZXJ2aWNlJywgdHJ1ZSk7XG4gKlxuICogLy8gR2V0IHRoZSBpbnN0YW5jZVxuICogY29uc3Qgc2VydmljZSA9IHJlZ2lzdHJ5LmdldCgnTXlTZXJ2aWNlJyk7XG4gKiBzZXJ2aWNlLmRvU29tZXRoaW5nKCk7IC8vICdIZWxsbyBXb3JsZCdcbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICogICBwYXJ0aWNpcGFudCBSZWdpc3RyeVxuICpcbiAqICAgQ2xpZW50LT4+UmVnaXN0cnk6IHJlZ2lzdGVyKE15U2VydmljZSlcbiAqICAgUmVnaXN0cnktPj5SZWdpc3RyeTogU3RvcmUgaW4gY2FjaGVcbiAqXG4gKiAgIENsaWVudC0+PlJlZ2lzdHJ5OiBnZXQoXCJNeVNlcnZpY2VcIilcbiAqICAgYWx0IEluc3RhbmNlIGV4aXN0cyBhbmQgaXMgc2luZ2xldG9uXG4gKiAgICAgUmVnaXN0cnktLT4+Q2xpZW50OiBSZXR1cm4gY2FjaGVkIGluc3RhbmNlXG4gKiAgIGVsc2UgTm8gaW5zdGFuY2Ugb3Igbm90IHNpbmdsZXRvblxuICogICAgIFJlZ2lzdHJ5LT4+UmVnaXN0cnk6IGJ1aWxkKG5hbWUpXG4gKiAgICAgUmVnaXN0cnktLT4+Q2xpZW50OiBSZXR1cm4gbmV3IGluc3RhbmNlXG4gKiAgIGVuZFxuICovXG5leHBvcnQgY2xhc3MgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wIGltcGxlbWVudHMgSW5qZWN0YWJsZXNSZWdpc3RyeSB7XG4gIHByaXZhdGUgY2FjaGU6IFJlY29yZDxzeW1ib2wsIEluamVjdGFibGVEZWY+ID0ge307XG5cbiAgaGFzPFQ+KG5hbWU6IHN5bWJvbCB8IHsgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQgfSk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gXCJzeW1ib2xcIikgcmV0dXJuIG5hbWUgaW4gdGhpcy5jYWNoZTtcbiAgICByZXR1cm4gU3ltYm9sLmZvcihuYW1lLnRvU3RyaW5nKCkpIGluIHRoaXMuY2FjaGU7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIGdldDxUPihcbiAgICBuYW1lOiBzeW1ib2wgfCBzdHJpbmcgfCB7IG5ldyAoLi4uYXJnczogYW55W10pOiBUIH0sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHR5cGVvZiBuYW1lID09PSBcInN0cmluZ1wiKSBuYW1lID0gU3ltYm9sLmZvcihuYW1lKTtcbiAgICBpZiAodHlwZW9mIG5hbWUgIT09IFwic3ltYm9sXCIpIHtcbiAgICAgIGNvbnN0IG1ldGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAgICBnZXRJbmplY3RLZXkoSW5qZWN0YWJsZXNLZXlzLklOSkVDVEFCTEUpLFxuICAgICAgICBuYW1lXG4gICAgICApO1xuICAgICAgbmFtZSA9IChtZXRhPy5zeW1ib2wgYXMgc3ltYm9sKSB8fCBTeW1ib2wuZm9yKG5hbWUudG9TdHJpbmcoKSk7XG4gICAgfVxuICAgIGlmICghbmFtZSkgdGhyb3cgbmV3IEVycm9yKGBJbmplY3RhYmxlICR7bmFtZX0gbm90IGZvdW5kYCk7XG5cbiAgICBpZiAoISgobmFtZSBhcyBzeW1ib2wpIGluIHRoaXMuY2FjaGUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBjYWNoZSA9IHRoaXMuY2FjaGVbbmFtZV07XG4gICAgaWYgKCFjYWNoZS5vcHRpb25zLnNpbmdsZXRvbiAmJiAhY2FjaGUuaW5zdGFuY2UpXG4gICAgICByZXR1cm4gdGhpcy5idWlsZDxUPihuYW1lLCAuLi5hcmdzKTtcbiAgICByZXR1cm4gY2FjaGUuaW5zdGFuY2UgfHwgdGhpcy5idWlsZDxUPihuYW1lLCAuLi5hcmdzKTtcbiAgfVxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIHJlZ2lzdGVyPFQ+KFxuICAgIG9iajogSW5qZWN0YWJsZTxUPixcbiAgICBjYXRlZ29yeTogc3ltYm9sIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM6IEluamVjdGFibGVPcHRpb25zPFQ+LFxuICAgIGZvcmNlOiBib29sZWFuID0gZmFsc2VcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgY2FzdE9iajogUmVjb3JkPHN0cmluZywgYW55PiA9IG9iaiBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gICAgY29uc3QgY29uc3RydWN0b3IgPSAhY2FzdE9iai5uYW1lICYmIGNhc3RPYmouY29uc3RydWN0b3I7XG4gICAgaWYgKHR5cGVvZiBjYXN0T2JqICE9PSBcImZ1bmN0aW9uXCIgJiYgIWNvbnN0cnVjdG9yKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW5qZWN0YWJsZSByZWdpc3RlcmluZyBmYWlsZWQuIE1pc3NpbmcgQ2xhc3MgbmFtZSBvciBjb25zdHJ1Y3RvcmBcbiAgICAgICk7XG5cbiAgICBjb25zdCBuYW1lID0gY2F0ZWdvcnkgfHwgU3ltYm9sLmZvcigob2JqIGFzIGFueSkudG9TdHJpbmcoKSk7XG5cbiAgICBpZiAoIXRoaXMuY2FjaGVbbmFtZV0gfHwgZm9yY2UpXG4gICAgICB0aGlzLmNhY2hlW25hbWVdID0ge1xuICAgICAgICBpbnN0YW5jZTogY29uc3RydWN0b3IgPyBvYmogOiB1bmRlZmluZWQsXG4gICAgICAgIGNvbnN0cnVjdG9yOiAhY29uc3RydWN0b3IgPyBvYmogOiAob2JqIGFzIGFueSkuY29uc3RydWN0b3IsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgYnVpbGQ8VD4obmFtZTogc3ltYm9sLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICAgIGNvbnN0IHsgY29uc3RydWN0b3IsIG9wdGlvbnMgfSA9IHRoaXMuY2FjaGVbbmFtZV07XG4gICAgbGV0IGluc3RhbmNlOiBUO1xuICAgIHRyeSB7XG4gICAgICBpbnN0YW5jZSA9IG5ldyBjb25zdHJ1Y3RvciguLi5hcmdzKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBmYWlsZWQgdG8gYnVpbGQgJHtuYW1lLnRvU3RyaW5nKCl9IHdpdGggYXJncyAke2FyZ3N9OiAke2V9YFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5jYWNoZVtuYW1lXS5pbnN0YW5jZSA9IGluc3RhbmNlO1xuICAgIGlmIChvcHRpb25zLmNhbGxiYWNrKSBpbnN0YW5jZSA9IG9wdGlvbnMuY2FsbGJhY2soaW5zdGFuY2UsIC4uLmFyZ3MpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxufVxuIl19
package/lib/registry.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { InjectableOptions } from "./types";
1
2
  /**
2
3
  * @description Type representing either a class constructor or an instance.
3
4
  * @summary Defines an Injectable type that can be either a class constructor or an instance of a class.
@@ -20,32 +21,35 @@ export interface InjectablesRegistry {
20
21
  * @description Fetches an injectable instance by its registered name.
21
22
  * @summary Retrieves an {@link Injectable} from the registry by name, optionally passing constructor arguments.
22
23
  * @template T Type of the injectable object to retrieve
23
- * @param {string} name The registered name of the injectable to retrieve
24
+ * @param {symbol} name The registered name of the injectable to retrieve
24
25
  * @param {any[]} args Constructor arguments to pass when instantiating the injectable
25
26
  * @return {Injectable<T> | undefined} The injectable instance or undefined if not found
26
27
  * @memberOf module:injectable-decorators
27
28
  */
28
- get<T>(name: string, ...args: any[]): Injectable<T> | undefined;
29
+ get<T>(name: symbol | string | {
30
+ new (...args: any[]): T;
31
+ }, ...args: any[]): T | undefined;
29
32
  /**
30
33
  * @description Adds a class or object to the injectable registry.
31
34
  * @summary Registers an injectable constructor or instance with the registry, making it available for injection.
32
35
  * @template T Type of the injectable object to register
33
36
  * @param {Injectable<T>} constructor The class constructor or object instance to register
37
+ * @param options
34
38
  * @param {any[]} args Additional arguments for registration (category, singleton flag, etc.)
35
39
  * @return {void}
36
40
  * @memberOf module:injectable-decorators
37
41
  */
38
- register<T>(constructor: Injectable<T>, ...args: any[]): void;
42
+ register<T>(constructor: Injectable<T>, category: symbol | undefined, options: InjectableOptions<T>, ...args: any[]): void;
39
43
  /**
40
44
  * @description Creates a new instance of an injectable class.
41
45
  * @summary Instantiates an injectable class using its constructor and the provided arguments.
42
46
  * @template T Type of the object to build
43
- * @param {Record<string, any>} obj Object containing the name of the injectable to build
47
+ * @param {symbol} name Object containing the name of the injectable to build
44
48
  * @param {any[]} args Constructor arguments to pass when instantiating the injectable
45
49
  * @return {T} The newly created instance
46
50
  * @memberOf module:injectable-decorators
47
51
  */
48
- build<T>(obj: Record<string, any>, ...args: any[]): T;
52
+ build<T>(name: symbol, ...args: any[]): T;
49
53
  }
50
54
  /**
51
55
  * @description Default implementation of the InjectablesRegistry interface.
@@ -91,18 +95,21 @@ export interface InjectablesRegistry {
91
95
  */
92
96
  export declare class InjectableRegistryImp implements InjectablesRegistry {
93
97
  private cache;
98
+ has<T>(name: symbol | {
99
+ new (...args: any[]): T;
100
+ }): boolean;
94
101
  /**
95
102
  * @inheritDoc
96
103
  */
97
- get<T>(name: string, ...args: any[]): T | undefined;
104
+ get<T>(name: symbol | string | {
105
+ new (...args: any[]): T;
106
+ }, ...args: any[]): T | undefined;
98
107
  /**
99
108
  * @inheritDoc
100
109
  */
101
- register<T>(obj: Injectable<T>, category?: string | undefined, isSingleton?: boolean, force?: boolean): void;
110
+ register<T>(obj: Injectable<T>, category: symbol | undefined, options: InjectableOptions<T>, force?: boolean): void;
102
111
  /**
103
112
  * @inheritDoc
104
113
  */
105
- build<T>(defs: {
106
- name: string;
107
- }, ...args: any[]): T;
114
+ build<T>(name: symbol, ...args: any[]): T;
108
115
  }
package/lib/types.cjs ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEluc3RhbmNlQ2FsbGJhY2s8VD4gPSAoaW5zdGFuY2U6IFQsIC4uLmFyZ3M6IGFueVtdKSA9PiBUO1xuXG5leHBvcnQgdHlwZSBJbmplY3RhYmxlT3B0aW9uczxUPiA9IHtcbiAgc2luZ2xldG9uOiBib29sZWFuO1xuICBjYWxsYmFjazogSW5zdGFuY2VDYWxsYmFjazxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIEluamVjdGFibGVEZWY8XG4gIFQgPSBhbnksXG4gIE9QVFMgZXh0ZW5kcyBJbmplY3RhYmxlT3B0aW9uczxUPiA9IEluamVjdGFibGVPcHRpb25zPFQ+LFxuPiA9IHtcbiAgb3B0aW9uczogT1BUUztcbiAgaW5zdGFuY2U/OiBhbnk7XG4gIGNvbnN0cnVjdG9yOiB7IG5ldyAoLi4uYXJnczogYW55W10pOiBhbnkgfTtcbn07XG5cbmV4cG9ydCB0eXBlIEluamVjdGFibGVNZXRhZGF0YSA9IHtcbiAgY2xhc3M6IHN0cmluZztcbiAgc3ltYm9sOiBzeW1ib2w7XG59O1xuIl19
package/lib/types.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ export type InstanceCallback<T> = (instance: T, ...args: any[]) => T;
2
+ export type InjectableOptions<T> = {
3
+ singleton: boolean;
4
+ callback: InstanceCallback<T>;
5
+ };
6
+ export type InjectableDef<T = any, OPTS extends InjectableOptions<T> = InjectableOptions<T>> = {
7
+ options: OPTS;
8
+ instance?: any;
9
+ constructor: {
10
+ new (...args: any[]): any;
11
+ };
12
+ };
13
+ export type InjectableMetadata = {
14
+ class: string;
15
+ symbol: symbol;
16
+ };
package/lib/utils.cjs CHANGED
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TypeKey = void 0;
4
4
  exports.getTypeFromDecorator = getTypeFromDecorator;
5
5
  require("reflect-metadata");
6
+ const decorators_1 = require("./decorators.cjs");
7
+ const constants_1 = require("./constants.cjs");
6
8
  /**
7
9
  * @description Reflection metadata key for accessing TypeScript type information.
8
10
  * @summary Holds the key for retrieving the design type from TypeScript's reflection metadata.
@@ -21,6 +23,13 @@ exports.TypeKey = "design:type";
21
23
  */
22
24
  function getTypeFromDecorator(model, propKey) {
23
25
  const typeDef = Reflect.getMetadata(exports.TypeKey, model, propKey);
24
- return typeDef.name !== "Function" ? typeDef.name : undefined;
26
+ if (typeDef.name === "Function") {
27
+ return undefined;
28
+ }
29
+ const meta = Reflect.getMetadata((0, decorators_1.getInjectKey)(constants_1.InjectablesKeys.INJECTABLE), typeDef);
30
+ if (!meta) {
31
+ return undefined;
32
+ }
33
+ return meta.symbol;
25
34
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUJBLG9EQU1DO0FBekJELDRCQUEwQjtBQUUxQjs7Ozs7R0FLRztBQUNVLFFBQUEsT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUVyQzs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxLQUFVLEVBQ1YsT0FBd0I7SUFFeEIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxlQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwicmVmbGVjdC1tZXRhZGF0YVwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZWZsZWN0aW9uIG1ldGFkYXRhIGtleSBmb3IgYWNjZXNzaW5nIFR5cGVTY3JpcHQgdHlwZSBpbmZvcm1hdGlvbi5cbiAqIEBzdW1tYXJ5IEhvbGRzIHRoZSBrZXkgZm9yIHJldHJpZXZpbmcgdGhlIGRlc2lnbiB0eXBlIGZyb20gVHlwZVNjcmlwdCdzIHJlZmxlY3Rpb24gbWV0YWRhdGEuXG4gKiBAY29uc3QgVHlwZUtleVxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFR5cGVLZXkgPSBcImRlc2lnbjp0eXBlXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEV4dHJhY3RzIHRoZSB0eXBlIG5hbWUgZnJvbSBhIGRlY29yYXRlZCBwcm9wZXJ0eSB1c2luZyByZWZsZWN0aW9uLlxuICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSB0eXBlIGZyb20gYSBwcm9wZXJ0eSBkZWNvcmF0b3IgYnkgYWNjZXNzaW5nIFR5cGVTY3JpcHQncyByZWZsZWN0aW9uIG1ldGFkYXRhLlxuICogQHBhcmFtIHthbnl9IG1vZGVsIFRoZSB0YXJnZXQgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRlY29yYXRlZCBwcm9wZXJ0eVxuICogQHBhcmFtIHtzdHJpbmcgfCBzeW1ib2x9IHByb3BLZXkgVGhlIHByb3BlcnR5IGtleSAobmFtZSBvciBzeW1ib2wpIG9mIHRoZSBkZWNvcmF0ZWQgcHJvcGVydHlcbiAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHR5cGUsIG9yIHVuZGVmaW5lZCBpZiBpdCdzIGEgRnVuY3Rpb24gdHlwZVxuICogQGZ1bmN0aW9uIGdldFR5cGVGcm9tRGVjb3JhdG9yXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmluamVjdGFibGUtZGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZUZyb21EZWNvcmF0b3IoXG4gIG1vZGVsOiBhbnksXG4gIHByb3BLZXk6IHN0cmluZyB8IHN5bWJvbCxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHR5cGVEZWYgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFR5cGVLZXksIG1vZGVsLCBwcm9wS2V5KTtcbiAgcmV0dXJuIHR5cGVEZWYubmFtZSAhPT0gXCJGdW5jdGlvblwiID8gdHlwZURlZi5uYW1lIDogdW5kZWZpbmVkO1xufVxuIl19
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBcUJBLG9EQWdCQztBQXJDRCw0QkFBMEI7QUFDMUIsaURBQTRDO0FBQzVDLCtDQUE4QztBQUU5Qzs7Ozs7R0FLRztBQUNVLFFBQUEsT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUVyQzs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxLQUFVLEVBQ1YsT0FBd0I7SUFFeEIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxlQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNoQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FDOUIsSUFBQSx5QkFBWSxFQUFDLDJCQUFlLENBQUMsVUFBVSxDQUFDLEVBQ3hDLE9BQU8sQ0FDUixDQUFDO0lBQ0YsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwicmVmbGVjdC1tZXRhZGF0YVwiO1xuaW1wb3J0IHsgZ2V0SW5qZWN0S2V5IH0gZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgSW5qZWN0YWJsZXNLZXlzIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlZmxlY3Rpb24gbWV0YWRhdGEga2V5IGZvciBhY2Nlc3NpbmcgVHlwZVNjcmlwdCB0eXBlIGluZm9ybWF0aW9uLlxuICogQHN1bW1hcnkgSG9sZHMgdGhlIGtleSBmb3IgcmV0cmlldmluZyB0aGUgZGVzaWduIHR5cGUgZnJvbSBUeXBlU2NyaXB0J3MgcmVmbGVjdGlvbiBtZXRhZGF0YS5cbiAqIEBjb25zdCBUeXBlS2V5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmluamVjdGFibGUtZGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgVHlwZUtleSA9IFwiZGVzaWduOnR5cGVcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRXh0cmFjdHMgdGhlIHR5cGUgbmFtZSBmcm9tIGEgZGVjb3JhdGVkIHByb3BlcnR5IHVzaW5nIHJlZmxlY3Rpb24uXG4gKiBAc3VtbWFyeSBSZXRyaWV2ZXMgdGhlIHR5cGUgZnJvbSBhIHByb3BlcnR5IGRlY29yYXRvciBieSBhY2Nlc3NpbmcgVHlwZVNjcmlwdCdzIHJlZmxlY3Rpb24gbWV0YWRhdGEuXG4gKiBAcGFyYW0ge2FueX0gbW9kZWwgVGhlIHRhcmdldCBvYmplY3QgY29udGFpbmluZyB0aGUgZGVjb3JhdGVkIHByb3BlcnR5XG4gKiBAcGFyYW0ge3N0cmluZyB8IHN5bWJvbH0gcHJvcEtleSBUaGUgcHJvcGVydHkga2V5IChuYW1lIG9yIHN5bWJvbCkgb2YgdGhlIGRlY29yYXRlZCBwcm9wZXJ0eVxuICogQHJldHVybiB7c3RyaW5nIHwgdW5kZWZpbmVkfSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdHlwZSwgb3IgdW5kZWZpbmVkIGlmIGl0J3MgYSBGdW5jdGlvbiB0eXBlXG4gKiBAZnVuY3Rpb24gZ2V0VHlwZUZyb21EZWNvcmF0b3JcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlRnJvbURlY29yYXRvcihcbiAgbW9kZWw6IGFueSxcbiAgcHJvcEtleTogc3RyaW5nIHwgc3ltYm9sXG4pOiBzeW1ib2wgfCB1bmRlZmluZWQge1xuICBjb25zdCB0eXBlRGVmID0gUmVmbGVjdC5nZXRNZXRhZGF0YShUeXBlS2V5LCBtb2RlbCwgcHJvcEtleSk7XG4gIGlmICh0eXBlRGVmLm5hbWUgPT09IFwiRnVuY3Rpb25cIikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgbWV0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgZ2V0SW5qZWN0S2V5KEluamVjdGFibGVzS2V5cy5JTkpFQ1RBQkxFKSxcbiAgICB0eXBlRGVmXG4gICk7XG4gIGlmICghbWV0YSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIG1ldGEuc3ltYm9sO1xufVxuIl19
package/lib/utils.d.ts CHANGED
@@ -15,4 +15,4 @@ export declare const TypeKey = "design:type";
15
15
  * @function getTypeFromDecorator
16
16
  * @memberOf module:injectable-decorators
17
17
  */
18
- export declare function getTypeFromDecorator(model: any, propKey: string | symbol): string | undefined;
18
+ export declare function getTypeFromDecorator(model: any, propKey: string | symbol): symbol | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/injectable-decorators",
3
- "version": "1.6.3",
3
+ "version": "1.6.4",
4
4
  "description": "injectable decorators extension for decorator validation",
5
5
  "type": "module",
6
6
  "exports": {