@decaf-ts/injectable-decorators 1.6.0 → 1.6.2

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.
@@ -1,18 +1,18 @@
1
1
  import "reflect-metadata";
2
2
  /**
3
- * @summary holds the key for the design type
3
+ * @description Reflection metadata key for accessing TypeScript type information.
4
+ * @summary Holds the key for retrieving the design type from TypeScript's reflection metadata.
4
5
  * @const TypeKey
5
- * @memberOf module:injectable-decorators
6
+ * @memberOf module:injectable-decorators
6
7
  */
7
8
  export declare const TypeKey = "design:type";
8
9
  /**
9
- * @summary Retrieves the type from the decorators
10
- * @param {any} model
11
- * @param {string | symbol} propKey
12
- * @return {string | undefined}
13
- *
14
- * @function geTypeFromDecorators
15
- *
10
+ * @description Extracts the type name from a decorated property using reflection.
11
+ * @summary Retrieves the type from a property decorator by accessing TypeScript's reflection metadata.
12
+ * @param {any} model The target object containing the decorated property
13
+ * @param {string | symbol} propKey The property key (name or symbol) of the decorated property
14
+ * @return {string | undefined} The name of the property type, or undefined if it's a Function type
15
+ * @function getTypeFromDecorator
16
16
  * @memberOf module:injectable-decorators
17
17
  */
18
18
  export declare function getTypeFromDecorator(model: any, propKey: string | symbol): string | undefined;
package/lib/esm/utils.js CHANGED
@@ -1,22 +1,22 @@
1
1
  import "reflect-metadata";
2
2
  /**
3
- * @summary holds the key for the design type
3
+ * @description Reflection metadata key for accessing TypeScript type information.
4
+ * @summary Holds the key for retrieving the design type from TypeScript's reflection metadata.
4
5
  * @const TypeKey
5
- * @memberOf module:injectable-decorators
6
+ * @memberOf module:injectable-decorators
6
7
  */
7
8
  export const TypeKey = "design:type";
8
9
  /**
9
- * @summary Retrieves the type from the decorators
10
- * @param {any} model
11
- * @param {string | symbol} propKey
12
- * @return {string | undefined}
13
- *
14
- * @function geTypeFromDecorators
15
- *
10
+ * @description Extracts the type name from a decorated property using reflection.
11
+ * @summary Retrieves the type from a property decorator by accessing TypeScript's reflection metadata.
12
+ * @param {any} model The target object containing the decorated property
13
+ * @param {string | symbol} propKey The property key (name or symbol) of the decorated property
14
+ * @return {string | undefined} The name of the property type, or undefined if it's a Function type
15
+ * @function getTypeFromDecorator
16
16
  * @memberOf module:injectable-decorators
17
17
  */
18
18
  export function getTypeFromDecorator(model, propKey) {
19
19
  const typeDef = Reflect.getMetadata(TypeKey, model, propKey);
20
20
  return typeDef.name !== "Function" ? typeDef.name : undefined;
21
21
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUUxQjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUVyQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLEtBQVUsRUFDVixPQUF3QjtJQUV4QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0QsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgaG9sZHMgdGhlIGtleSBmb3IgdGhlIGRlc2lnbiB0eXBlXG4gKiBAY29uc3QgVHlwZUtleVxuICogQG1lbWJlck9mICBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBUeXBlS2V5ID0gXCJkZXNpZ246dHlwZVwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgdHlwZSBmcm9tIHRoZSBkZWNvcmF0b3JzXG4gKiBAcGFyYW0ge2FueX0gbW9kZWxcbiAqIEBwYXJhbSB7c3RyaW5nIHwgc3ltYm9sfSBwcm9wS2V5XG4gKiBAcmV0dXJuIHtzdHJpbmcgfCB1bmRlZmluZWR9XG4gKlxuICogQGZ1bmN0aW9uIGdlVHlwZUZyb21EZWNvcmF0b3JzXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVGcm9tRGVjb3JhdG9yKFxuICBtb2RlbDogYW55LFxuICBwcm9wS2V5OiBzdHJpbmcgfCBzeW1ib2wsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCB0eXBlRGVmID0gUmVmbGVjdC5nZXRNZXRhZGF0YShUeXBlS2V5LCBtb2RlbCwgcHJvcEtleSk7XG4gIHJldHVybiB0eXBlRGVmLm5hbWUgIT09IFwiRnVuY3Rpb25cIiA/IHR5cGVEZWYubmFtZSA6IHVuZGVmaW5lZDtcbn1cbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUUxQjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUM7QUFFckM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLEtBQVUsRUFDVixPQUF3QjtJQUV4QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0QsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlZmxlY3Rpb24gbWV0YWRhdGEga2V5IGZvciBhY2Nlc3NpbmcgVHlwZVNjcmlwdCB0eXBlIGluZm9ybWF0aW9uLlxuICogQHN1bW1hcnkgSG9sZHMgdGhlIGtleSBmb3IgcmV0cmlldmluZyB0aGUgZGVzaWduIHR5cGUgZnJvbSBUeXBlU2NyaXB0J3MgcmVmbGVjdGlvbiBtZXRhZGF0YS5cbiAqIEBjb25zdCBUeXBlS2V5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmluamVjdGFibGUtZGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgVHlwZUtleSA9IFwiZGVzaWduOnR5cGVcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRXh0cmFjdHMgdGhlIHR5cGUgbmFtZSBmcm9tIGEgZGVjb3JhdGVkIHByb3BlcnR5IHVzaW5nIHJlZmxlY3Rpb24uXG4gKiBAc3VtbWFyeSBSZXRyaWV2ZXMgdGhlIHR5cGUgZnJvbSBhIHByb3BlcnR5IGRlY29yYXRvciBieSBhY2Nlc3NpbmcgVHlwZVNjcmlwdCdzIHJlZmxlY3Rpb24gbWV0YWRhdGEuXG4gKiBAcGFyYW0ge2FueX0gbW9kZWwgVGhlIHRhcmdldCBvYmplY3QgY29udGFpbmluZyB0aGUgZGVjb3JhdGVkIHByb3BlcnR5XG4gKiBAcGFyYW0ge3N0cmluZyB8IHN5bWJvbH0gcHJvcEtleSBUaGUgcHJvcGVydHkga2V5IChuYW1lIG9yIHN5bWJvbCkgb2YgdGhlIGRlY29yYXRlZCBwcm9wZXJ0eVxuICogQHJldHVybiB7c3RyaW5nIHwgdW5kZWZpbmVkfSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdHlwZSwgb3IgdW5kZWZpbmVkIGlmIGl0J3MgYSBGdW5jdGlvbiB0eXBlXG4gKiBAZnVuY3Rpb24gZ2V0VHlwZUZyb21EZWNvcmF0b3JcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlRnJvbURlY29yYXRvcihcbiAgbW9kZWw6IGFueSxcbiAgcHJvcEtleTogc3RyaW5nIHwgc3ltYm9sLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdHlwZURlZiA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoVHlwZUtleSwgbW9kZWwsIHByb3BLZXkpO1xuICByZXR1cm4gdHlwZURlZi5uYW1lICE9PSBcIkZ1bmN0aW9uXCIgPyB0eXBlRGVmLm5hbWUgOiB1bmRlZmluZWQ7XG59XG4iXX0=
package/lib/index.cjs CHANGED
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  /**
3
+ * @description A lightweight dependency injection library for TypeScript applications.
3
4
  * @summary Adds a simple Injectables implementation to create singleton instances of an object
4
- * and easily inject it into other objects
5
+ * and easily inject it into other objects. Provides decorators for marking classes as injectable
6
+ * and for injecting dependencies into class properties.
5
7
  *
6
8
  * @module injectable-decorators
7
9
  */
@@ -21,20 +23,16 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
23
  };
22
24
  Object.defineProperty(exports, "__esModule", { value: true });
23
25
  exports.VERSION = void 0;
24
- /**
25
- * @summary functions that decorate classes or class properties
26
- * @namespace Decorators
27
- * @memberOf module:injectable-decorators
28
- */
29
26
  __exportStar(require("./constants.cjs"), exports);
30
27
  __exportStar(require("./decorators.cjs"), exports);
31
28
  __exportStar(require("./Injectables.cjs"), exports);
32
29
  __exportStar(require("./registry.cjs"), exports);
33
30
  __exportStar(require("./utils.cjs"), exports);
34
31
  /**
35
- * @summary Defined on library build. holds the library current version
32
+ * @description Current version of the injectable-decorators library.
33
+ * @summary Defined on library build. Holds the library's current version string.
36
34
  * @const VERSION
37
35
  * @memberOf module:injectable-decorators
38
36
  */
39
- exports.VERSION = "1.6.0";
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVIOzs7O0dBSUc7QUFFSCw4Q0FBNEI7QUFDNUIsK0NBQTZCO0FBQzdCLGdEQUE4QjtBQUM5Qiw2Q0FBMkI7QUFDM0IsMENBQXdCO0FBRXhCOzs7O0dBSUc7QUFDVSxRQUFBLE9BQU8sR0FBRyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzdW1tYXJ5IEFkZHMgYSBzaW1wbGUgSW5qZWN0YWJsZXMgaW1wbGVtZW50YXRpb24gdG8gY3JlYXRlIHNpbmdsZXRvbiBpbnN0YW5jZXMgb2YgYW4gb2JqZWN0XG4gKiBhbmQgZWFzaWx5IGluamVjdCBpdCBpbnRvIG90aGVyIG9iamVjdHNcbiAqXG4gKiBAbW9kdWxlIGluamVjdGFibGUtZGVjb3JhdG9yc1xuICovXG5cbi8qKlxuICogQHN1bW1hcnkgZnVuY3Rpb25zIHRoYXQgZGVjb3JhdGUgY2xhc3NlcyBvciBjbGFzcyBwcm9wZXJ0aWVzXG4gKiBAbmFtZXNwYWNlIERlY29yYXRvcnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cblxuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9JbmplY3RhYmxlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVnaXN0cnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lZCBvbiBsaWJyYXJ5IGJ1aWxkLiBob2xkcyB0aGUgbGlicmFyeSBjdXJyZW50IHZlcnNpb25cbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmluamVjdGFibGUtZGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcbiJdfQ==
37
+ exports.VERSION = "1.6.2";
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsa0RBQTRCO0FBQzVCLG1EQUE2QjtBQUM3QixvREFBOEI7QUFDOUIsaURBQTJCO0FBQzNCLDhDQUF3QjtBQUV4Qjs7Ozs7R0FLRztBQUNVLFFBQUEsT0FBTyxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2NyaXB0aW9uIEEgbGlnaHR3ZWlnaHQgZGVwZW5kZW5jeSBpbmplY3Rpb24gbGlicmFyeSBmb3IgVHlwZVNjcmlwdCBhcHBsaWNhdGlvbnMuXG4gKiBAc3VtbWFyeSBBZGRzIGEgc2ltcGxlIEluamVjdGFibGVzIGltcGxlbWVudGF0aW9uIHRvIGNyZWF0ZSBzaW5nbGV0b24gaW5zdGFuY2VzIG9mIGFuIG9iamVjdFxuICogYW5kIGVhc2lseSBpbmplY3QgaXQgaW50byBvdGhlciBvYmplY3RzLiBQcm92aWRlcyBkZWNvcmF0b3JzIGZvciBtYXJraW5nIGNsYXNzZXMgYXMgaW5qZWN0YWJsZVxuICogYW5kIGZvciBpbmplY3RpbmcgZGVwZW5kZW5jaWVzIGludG8gY2xhc3MgcHJvcGVydGllcy5cbiAqXG4gKiBAbW9kdWxlIGluamVjdGFibGUtZGVjb3JhdG9yc1xuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vSW5qZWN0YWJsZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDdXJyZW50IHZlcnNpb24gb2YgdGhlIGluamVjdGFibGUtZGVjb3JhdG9ycyBsaWJyYXJ5LlxuICogQHN1bW1hcnkgRGVmaW5lZCBvbiBsaWJyYXJ5IGJ1aWxkLiBIb2xkcyB0aGUgbGlicmFyeSdzIGN1cnJlbnQgdmVyc2lvbiBzdHJpbmcuXG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG4iXX0=
package/lib/index.d.ts CHANGED
@@ -1,22 +1,20 @@
1
1
  /**
2
+ * @description A lightweight dependency injection library for TypeScript applications.
2
3
  * @summary Adds a simple Injectables implementation to create singleton instances of an object
3
- * and easily inject it into other objects
4
+ * and easily inject it into other objects. Provides decorators for marking classes as injectable
5
+ * and for injecting dependencies into class properties.
4
6
  *
5
7
  * @module injectable-decorators
6
8
  */
7
- /**
8
- * @summary functions that decorate classes or class properties
9
- * @namespace Decorators
10
- * @memberOf module:injectable-decorators
11
- */
12
9
  export * from "./constants";
13
10
  export * from "./decorators";
14
11
  export * from "./Injectables";
15
12
  export * from "./registry";
16
13
  export * from "./utils";
17
14
  /**
18
- * @summary Defined on library build. holds the library current version
15
+ * @description Current version of the injectable-decorators library.
16
+ * @summary Defined on library build. Holds the library's current version string.
19
17
  * @const VERSION
20
18
  * @memberOf module:injectable-decorators
21
19
  */
22
- export declare const VERSION = "1.6.0";
20
+ export declare const VERSION = "1.6.2";
package/lib/registry.cjs CHANGED
@@ -2,9 +2,46 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InjectableRegistryImp = void 0;
4
4
  /**
5
- * @summary Holds the vairous {@link Injectable}s
5
+ * @description Default implementation of the InjectablesRegistry interface.
6
+ * @summary Holds the various {@link Injectable}s in a cache and provides methods to register, retrieve, and build them.
7
+ * @template T Type parameter used in the class methods
8
+ *
6
9
  * @class InjectableRegistryImp
7
10
  * @implements InjectablesRegistry
11
+ *
12
+ * @memberOf module:injectable-decorators
13
+ *
14
+ * @example
15
+ * // Create a new registry
16
+ * const registry = new InjectableRegistryImp();
17
+ *
18
+ * // Register a class
19
+ * class MyService {
20
+ * doSomething() {
21
+ * return 'Hello World';
22
+ * }
23
+ * }
24
+ * registry.register(MyService, 'MyService', true);
25
+ *
26
+ * // Get the instance
27
+ * const service = registry.get('MyService');
28
+ * service.doSomething(); // 'Hello World'
29
+ *
30
+ * @mermaid
31
+ * sequenceDiagram
32
+ * participant Client
33
+ * participant Registry
34
+ *
35
+ * Client->>Registry: register(MyService)
36
+ * Registry->>Registry: Store in cache
37
+ *
38
+ * Client->>Registry: get("MyService")
39
+ * alt Instance exists and is singleton
40
+ * Registry-->>Client: Return cached instance
41
+ * else No instance or not singleton
42
+ * Registry->>Registry: build(name)
43
+ * Registry-->>Client: Return new instance
44
+ * end
8
45
  */
9
46
  class InjectableRegistryImp {
10
47
  constructor() {
@@ -60,4 +97,4 @@ class InjectableRegistryImp {
60
97
  }
61
98
  }
62
99
  exports.InjectableRegistryImp = InjectableRegistryImp;
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBeUNBOzs7O0dBSUc7QUFDSCxNQUFhLHFCQUFxQjtJQUFsQztRQUNVLFVBQUssR0FBK0IsRUFBRSxDQUFDO0lBNERqRCxDQUFDO0lBMURDOztPQUVHO0lBQ0gsR0FBRyxDQUFJLElBQVksRUFBRSxHQUFHLElBQVc7UUFDakMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxNQUFNLFFBQVEsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRO2dCQUMvQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUksUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDMUMsT0FBTyxVQUFVLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUksUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDL0QsNkRBQTZEO1FBQy9ELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFDRDs7T0FFRztJQUNILFFBQVEsQ0FDTixHQUFrQixFQUNsQixXQUErQixTQUFTLEVBQ3hDLGNBQXVCLElBQUksRUFDM0IsUUFBaUIsS0FBSztRQUV0QixNQUFNLE9BQU8sR0FBd0IsR0FBMEIsQ0FBQztRQUVoRSxNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN6RCxJQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsSUFBSSxDQUFDLFdBQVc7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FDYixrRUFBa0UsQ0FDbkUsQ0FBQztRQUVKLE1BQU0sSUFBSSxHQUNSLFFBQVE7WUFDUixDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssVUFBVTtnQkFDakUsQ0FBQyxDQUFFLFdBQTBDLENBQUMsSUFBSTtnQkFDbEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQ2pCLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDdkMsV0FBVyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQzNDLFNBQVMsRUFBRSxXQUFXO2FBQ3ZCLENBQUM7SUFDTixDQUFDO0lBQ0Q7O09BRUc7SUFDSCxLQUFLLENBQUksSUFBc0IsRUFBRSxHQUFHLElBQVc7UUFDN0MsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQ3RCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUE3REQsc0RBNkRDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc3VtbWFyeSBkZWZpbmVzIGFuIEluamVjdGFibGUgdHlwZVxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IHR5cGUgSW5qZWN0YWJsZTxUPiA9IHsgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQgfSB8IFQ7XG5cbi8qKlxuICogQHN1bW1hcnkgSW50ZXJmYWNlIGZvciBhbiBpbmplY3RhYmxlIHJlZ2lzdHJ5XG4gKiBAaW50ZXJmYWNlIEluamVjdGFibGVSZWdpc3RyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluamVjdGFibGVzUmVnaXN0cnkge1xuICAvKipcbiAgICogQHN1bW1hcnkgcmV0cmlldmVzIGFuIHtAbGluayBJbmplY3RhYmxlfVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqIEByZXR1cm4ge0luamVjdGFibGUgfCB1bmRlZmluZWR9XG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIGdldDxUPihuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogSW5qZWN0YWJsZTxUPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQHN1bW1hcnkgcmVnaXN0ZXJzIGFuIGluamVjdGFibGUgY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtJbmplY3RhYmxlfSBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIHJlZ2lzdGVyPFQ+KGNvbnN0cnVjdG9yOiBJbmplY3RhYmxlPFQ+LCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEluc3RhbnRpYXRlcyBhbiBJbmplY3RhYmxlXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gb2JqXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3NcbiAgICogQHJldHVybiBUXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIGJ1aWxkPFQ+KG9iajogUmVjb3JkPHN0cmluZywgYW55PiwgLi4uYXJnczogYW55W10pOiBUO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IEhvbGRzIHRoZSB2YWlyb3VzIHtAbGluayBJbmplY3RhYmxlfXNcbiAqIEBjbGFzcyBJbmplY3RhYmxlUmVnaXN0cnlJbXBcbiAqIEBpbXBsZW1lbnRzIEluamVjdGFibGVzUmVnaXN0cnlcbiAqL1xuZXhwb3J0IGNsYXNzIEluamVjdGFibGVSZWdpc3RyeUltcCBpbXBsZW1lbnRzIEluamVjdGFibGVzUmVnaXN0cnkge1xuICBwcml2YXRlIGNhY2hlOiB7IFtpbmRleGVyOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgZ2V0PFQ+KG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBUIHwgdW5kZWZpbmVkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaW5uZXJDYWNoZSA9IHRoaXMuY2FjaGVbbmFtZV07XG4gICAgICBjb25zdCBidWlsZERlZiA9IHsgbmFtZTogbmFtZSB9O1xuICAgICAgaWYgKCFpbm5lckNhY2hlLnNpbmdsZXRvbiAmJiAhaW5uZXJDYWNoZS5pbnN0YW5jZSlcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGQ8VD4oYnVpbGREZWYsIC4uLmFyZ3MpO1xuICAgICAgcmV0dXJuIGlubmVyQ2FjaGUuaW5zdGFuY2UgfHwgdGhpcy5idWlsZDxUPihidWlsZERlZiwgLi4uYXJncyk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICByZWdpc3RlcjxUPihcbiAgICBvYmo6IEluamVjdGFibGU8VD4sXG4gICAgY2F0ZWdvcnk6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBpc1NpbmdsZXRvbjogYm9vbGVhbiA9IHRydWUsXG4gICAgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBjYXN0T2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gb2JqIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgICBjb25zdCBjb25zdHJ1Y3RvciA9ICFjYXN0T2JqLm5hbWUgJiYgY2FzdE9iai5jb25zdHJ1Y3RvcjtcbiAgICBpZiAodHlwZW9mIGNhc3RPYmogIT09IFwiZnVuY3Rpb25cIiAmJiAhY29uc3RydWN0b3IpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbmplY3RhYmxlIHJlZ2lzdGVyaW5nIGZhaWxlZC4gTWlzc2luZyBDbGFzcyBuYW1lIG9yIGNvbnN0cnVjdG9yYFxuICAgICAgKTtcblxuICAgIGNvbnN0IG5hbWUgPVxuICAgICAgY2F0ZWdvcnkgfHxcbiAgICAgIChjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5uYW1lICYmIGNvbnN0cnVjdG9yLm5hbWUgIT09IFwiRnVuY3Rpb25cIlxuICAgICAgICA/IChjb25zdHJ1Y3RvciBhcyB7IFtpbmRleGVyOiBzdHJpbmddOiBhbnkgfSkubmFtZVxuICAgICAgICA6IGNhc3RPYmoubmFtZSk7XG5cbiAgICBpZiAoIXRoaXMuY2FjaGVbbmFtZV0gfHwgZm9yY2UpXG4gICAgICB0aGlzLmNhY2hlW25hbWVdID0ge1xuICAgICAgICBpbnN0YW5jZTogY29uc3RydWN0b3IgPyBvYmogOiB1bmRlZmluZWQsXG4gICAgICAgIGNvbnN0cnVjdG9yOiAhY29uc3RydWN0b3IgPyBvYmogOiB1bmRlZmluZWQsXG4gICAgICAgIHNpbmdsZXRvbjogaXNTaW5nbGV0b24sXG4gICAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgYnVpbGQ8VD4oZGVmczogeyBuYW1lOiBzdHJpbmcgfSwgLi4uYXJnczogYW55W10pOiBUIHtcbiAgICBjb25zdCB7IGNvbnN0cnVjdG9yLCBzaW5nbGV0b24gfSA9IHRoaXMuY2FjaGVbZGVmcy5uYW1lXTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBjb25zdHJ1Y3RvciguLi5hcmdzKTtcbiAgICB0aGlzLmNhY2hlW2RlZnMubmFtZV0gPSB7XG4gICAgICBpbnN0YW5jZTogaW5zdGFuY2UsXG4gICAgICBjb25zdHJ1Y3RvcjogY29uc3RydWN0b3IsXG4gICAgICBzaW5nbGV0b246IHNpbmdsZXRvbixcbiAgICB9O1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxufVxuIl19
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbURBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlDRztBQUNILE1BQWEscUJBQXFCO0lBQWxDO1FBQ1UsVUFBSyxHQUErQixFQUFFLENBQUM7SUE0RGpELENBQUM7SUExREM7O09BRUc7SUFDSCxHQUFHLENBQUksSUFBWSxFQUFFLEdBQUcsSUFBVztRQUNqQyxJQUFJLENBQUM7WUFDSCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVE7Z0JBQy9DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBSSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUMxQyxPQUFPLFVBQVUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBSSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUMvRCw2REFBNkQ7UUFDL0QsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUNEOztPQUVHO0lBQ0gsUUFBUSxDQUNOLEdBQWtCLEVBQ2xCLFdBQStCLFNBQVMsRUFDeEMsY0FBdUIsSUFBSSxFQUMzQixRQUFpQixLQUFLO1FBRXRCLE1BQU0sT0FBTyxHQUF3QixHQUEwQixDQUFDO1FBRWhFLE1BQU0sV0FBVyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3pELElBQUksT0FBTyxPQUFPLEtBQUssVUFBVSxJQUFJLENBQUMsV0FBVztZQUMvQyxNQUFNLElBQUksS0FBSyxDQUNiLGtFQUFrRSxDQUNuRSxDQUFDO1FBRUosTUFBTSxJQUFJLEdBQ1IsUUFBUTtZQUNSLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxJQUFJLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxVQUFVO2dCQUNqRSxDQUFDLENBQUUsV0FBMEMsQ0FBQyxJQUFJO2dCQUNsRCxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUs7WUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRztnQkFDakIsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUN2QyxXQUFXLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDM0MsU0FBUyxFQUFFLFdBQVc7YUFDdkIsQ0FBQztJQUNOLENBQUM7SUFDRDs7T0FFRztJQUNILEtBQUssQ0FBSSxJQUFzQixFQUFFLEdBQUcsSUFBVztRQUM3QyxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLElBQUksV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7WUFDdEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsV0FBVyxFQUFFLFdBQVc7WUFDeEIsU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRjtBQTdERCxzREE2REMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIHJlcHJlc2VudGluZyBlaXRoZXIgYSBjbGFzcyBjb25zdHJ1Y3RvciBvciBhbiBpbnN0YW5jZS5cbiAqIEBzdW1tYXJ5IERlZmluZXMgYW4gSW5qZWN0YWJsZSB0eXBlIHRoYXQgY2FuIGJlIGVpdGhlciBhIGNsYXNzIGNvbnN0cnVjdG9yIG9yIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MuXG4gKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiB0aGUgaW5qZWN0YWJsZSBvYmplY3RcbiAqIEB0eXBlZGVmIHtmdW5jdGlvbihhbnkpOiBUIHwgVH0gSW5qZWN0YWJsZVxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IHR5cGUgSW5qZWN0YWJsZTxUPiA9IHsgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQgfSB8IFQ7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnRyYWN0IGZvciBhIHJlZ2lzdHJ5IHRoYXQgbWFuYWdlcyBpbmplY3RhYmxlIG9iamVjdHMuXG4gKiBAc3VtbWFyeSBJbnRlcmZhY2UgZm9yIGFuIGluamVjdGFibGUgcmVnaXN0cnkgdGhhdCBwcm92aWRlcyBtZXRob2RzIGZvciByZXRyaWV2aW5nLCByZWdpc3RlcmluZywgYW5kIGJ1aWxkaW5nIGluamVjdGFibGUgb2JqZWN0cy5cbiAqIEB0ZW1wbGF0ZSBUIFR5cGUgcGFyYW1ldGVyIHVzZWQgaW4gdGhlIGludGVyZmFjZSBtZXRob2RzXG4gKiBAaW50ZXJmYWNlIEluamVjdGFibGVzUmVnaXN0cnlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5qZWN0YWJsZXNSZWdpc3RyeSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmV0Y2hlcyBhbiBpbmplY3RhYmxlIGluc3RhbmNlIGJ5IGl0cyByZWdpc3RlcmVkIG5hbWUuXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBhbiB7QGxpbmsgSW5qZWN0YWJsZX0gZnJvbSB0aGUgcmVnaXN0cnkgYnkgbmFtZSwgb3B0aW9uYWxseSBwYXNzaW5nIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy5cbiAgICogQHRlbXBsYXRlIFQgVHlwZSBvZiB0aGUgaW5qZWN0YWJsZSBvYmplY3QgdG8gcmV0cmlldmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIHJlZ2lzdGVyZWQgbmFtZSBvZiB0aGUgaW5qZWN0YWJsZSB0byByZXRyaWV2ZVxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzIENvbnN0cnVjdG9yIGFyZ3VtZW50cyB0byBwYXNzIHdoZW4gaW5zdGFudGlhdGluZyB0aGUgaW5qZWN0YWJsZVxuICAgKiBAcmV0dXJuIHtJbmplY3RhYmxlPFQ+IHwgdW5kZWZpbmVkfSBUaGUgaW5qZWN0YWJsZSBpbnN0YW5jZSBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kXG4gICAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gICAqL1xuICBnZXQ8VD4obmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IEluamVjdGFibGU8VD4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBZGRzIGEgY2xhc3Mgb3Igb2JqZWN0IHRvIHRoZSBpbmplY3RhYmxlIHJlZ2lzdHJ5LlxuICAgKiBAc3VtbWFyeSBSZWdpc3RlcnMgYW4gaW5qZWN0YWJsZSBjb25zdHJ1Y3RvciBvciBpbnN0YW5jZSB3aXRoIHRoZSByZWdpc3RyeSwgbWFraW5nIGl0IGF2YWlsYWJsZSBmb3IgaW5qZWN0aW9uLlxuICAgKiBAdGVtcGxhdGUgVCBUeXBlIG9mIHRoZSBpbmplY3RhYmxlIG9iamVjdCB0byByZWdpc3RlclxuICAgKiBAcGFyYW0ge0luamVjdGFibGU8VD59IGNvbnN0cnVjdG9yIFRoZSBjbGFzcyBjb25zdHJ1Y3RvciBvciBvYmplY3QgaW5zdGFuY2UgdG8gcmVnaXN0ZXJcbiAgICogQHBhcmFtIHthbnlbXX0gYXJncyBBZGRpdGlvbmFsIGFyZ3VtZW50cyBmb3IgcmVnaXN0cmF0aW9uIChjYXRlZ29yeSwgc2luZ2xldG9uIGZsYWcsIGV0Yy4pXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gICAqL1xuICByZWdpc3RlcjxUPihjb25zdHJ1Y3RvcjogSW5qZWN0YWJsZTxUPiwgLi4uYXJnczogYW55W10pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBhbiBpbmplY3RhYmxlIGNsYXNzLlxuICAgKiBAc3VtbWFyeSBJbnN0YW50aWF0ZXMgYW4gaW5qZWN0YWJsZSBjbGFzcyB1c2luZyBpdHMgY29uc3RydWN0b3IgYW5kIHRoZSBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAqIEB0ZW1wbGF0ZSBUIFR5cGUgb2YgdGhlIG9iamVjdCB0byBidWlsZFxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG9iaiBPYmplY3QgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgaW5qZWN0YWJsZSB0byBidWlsZFxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzIENvbnN0cnVjdG9yIGFyZ3VtZW50cyB0byBwYXNzIHdoZW4gaW5zdGFudGlhdGluZyB0aGUgaW5qZWN0YWJsZVxuICAgKiBAcmV0dXJuIHtUfSBUaGUgbmV3bHkgY3JlYXRlZCBpbnN0YW5jZVxuICAgKiBAbWVtYmVyT2YgbW9kdWxlOmluamVjdGFibGUtZGVjb3JhdG9yc1xuICAgKi9cbiAgYnVpbGQ8VD4ob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCAuLi5hcmdzOiBhbnlbXSk6IFQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEluamVjdGFibGVzUmVnaXN0cnkgaW50ZXJmYWNlLlxuICogQHN1bW1hcnkgSG9sZHMgdGhlIHZhcmlvdXMge0BsaW5rIEluamVjdGFibGV9cyBpbiBhIGNhY2hlIGFuZCBwcm92aWRlcyBtZXRob2RzIHRvIHJlZ2lzdGVyLCByZXRyaWV2ZSwgYW5kIGJ1aWxkIHRoZW0uXG4gKiBAdGVtcGxhdGUgVCBUeXBlIHBhcmFtZXRlciB1c2VkIGluIHRoZSBjbGFzcyBtZXRob2RzXG4gKlxuICogQGNsYXNzIEluamVjdGFibGVSZWdpc3RyeUltcFxuICogQGltcGxlbWVudHMgSW5qZWN0YWJsZXNSZWdpc3RyeVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENyZWF0ZSBhIG5ldyByZWdpc3RyeVxuICogY29uc3QgcmVnaXN0cnkgPSBuZXcgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wKCk7XG4gKlxuICogLy8gUmVnaXN0ZXIgYSBjbGFzc1xuICogY2xhc3MgTXlTZXJ2aWNlIHtcbiAqICAgZG9Tb21ldGhpbmcoKSB7XG4gKiAgICAgcmV0dXJuICdIZWxsbyBXb3JsZCc7XG4gKiAgIH1cbiAqIH1cbiAqIHJlZ2lzdHJ5LnJlZ2lzdGVyKE15U2VydmljZSwgJ015U2VydmljZScsIHRydWUpO1xuICpcbiAqIC8vIEdldCB0aGUgaW5zdGFuY2VcbiAqIGNvbnN0IHNlcnZpY2UgPSByZWdpc3RyeS5nZXQoJ015U2VydmljZScpO1xuICogc2VydmljZS5kb1NvbWV0aGluZygpOyAvLyAnSGVsbG8gV29ybGQnXG4gKlxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDbGllbnRcbiAqICAgcGFydGljaXBhbnQgUmVnaXN0cnlcbiAqXG4gKiAgIENsaWVudC0+PlJlZ2lzdHJ5OiByZWdpc3RlcihNeVNlcnZpY2UpXG4gKiAgIFJlZ2lzdHJ5LT4+UmVnaXN0cnk6IFN0b3JlIGluIGNhY2hlXG4gKlxuICogICBDbGllbnQtPj5SZWdpc3RyeTogZ2V0KFwiTXlTZXJ2aWNlXCIpXG4gKiAgIGFsdCBJbnN0YW5jZSBleGlzdHMgYW5kIGlzIHNpbmdsZXRvblxuICogICAgIFJlZ2lzdHJ5LS0+PkNsaWVudDogUmV0dXJuIGNhY2hlZCBpbnN0YW5jZVxuICogICBlbHNlIE5vIGluc3RhbmNlIG9yIG5vdCBzaW5nbGV0b25cbiAqICAgICBSZWdpc3RyeS0+PlJlZ2lzdHJ5OiBidWlsZChuYW1lKVxuICogICAgIFJlZ2lzdHJ5LS0+PkNsaWVudDogUmV0dXJuIG5ldyBpbnN0YW5jZVxuICogICBlbmRcbiAqL1xuZXhwb3J0IGNsYXNzIEluamVjdGFibGVSZWdpc3RyeUltcCBpbXBsZW1lbnRzIEluamVjdGFibGVzUmVnaXN0cnkge1xuICBwcml2YXRlIGNhY2hlOiB7IFtpbmRleGVyOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgZ2V0PFQ+KG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBUIHwgdW5kZWZpbmVkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaW5uZXJDYWNoZSA9IHRoaXMuY2FjaGVbbmFtZV07XG4gICAgICBjb25zdCBidWlsZERlZiA9IHsgbmFtZTogbmFtZSB9O1xuICAgICAgaWYgKCFpbm5lckNhY2hlLnNpbmdsZXRvbiAmJiAhaW5uZXJDYWNoZS5pbnN0YW5jZSlcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGQ8VD4oYnVpbGREZWYsIC4uLmFyZ3MpO1xuICAgICAgcmV0dXJuIGlubmVyQ2FjaGUuaW5zdGFuY2UgfHwgdGhpcy5idWlsZDxUPihidWlsZERlZiwgLi4uYXJncyk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICByZWdpc3RlcjxUPihcbiAgICBvYmo6IEluamVjdGFibGU8VD4sXG4gICAgY2F0ZWdvcnk6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBpc1NpbmdsZXRvbjogYm9vbGVhbiA9IHRydWUsXG4gICAgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBjYXN0T2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gb2JqIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgICBjb25zdCBjb25zdHJ1Y3RvciA9ICFjYXN0T2JqLm5hbWUgJiYgY2FzdE9iai5jb25zdHJ1Y3RvcjtcbiAgICBpZiAodHlwZW9mIGNhc3RPYmogIT09IFwiZnVuY3Rpb25cIiAmJiAhY29uc3RydWN0b3IpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbmplY3RhYmxlIHJlZ2lzdGVyaW5nIGZhaWxlZC4gTWlzc2luZyBDbGFzcyBuYW1lIG9yIGNvbnN0cnVjdG9yYFxuICAgICAgKTtcblxuICAgIGNvbnN0IG5hbWUgPVxuICAgICAgY2F0ZWdvcnkgfHxcbiAgICAgIChjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5uYW1lICYmIGNvbnN0cnVjdG9yLm5hbWUgIT09IFwiRnVuY3Rpb25cIlxuICAgICAgICA/IChjb25zdHJ1Y3RvciBhcyB7IFtpbmRleGVyOiBzdHJpbmddOiBhbnkgfSkubmFtZVxuICAgICAgICA6IGNhc3RPYmoubmFtZSk7XG5cbiAgICBpZiAoIXRoaXMuY2FjaGVbbmFtZV0gfHwgZm9yY2UpXG4gICAgICB0aGlzLmNhY2hlW25hbWVdID0ge1xuICAgICAgICBpbnN0YW5jZTogY29uc3RydWN0b3IgPyBvYmogOiB1bmRlZmluZWQsXG4gICAgICAgIGNvbnN0cnVjdG9yOiAhY29uc3RydWN0b3IgPyBvYmogOiB1bmRlZmluZWQsXG4gICAgICAgIHNpbmdsZXRvbjogaXNTaW5nbGV0b24sXG4gICAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgYnVpbGQ8VD4oZGVmczogeyBuYW1lOiBzdHJpbmcgfSwgLi4uYXJnczogYW55W10pOiBUIHtcbiAgICBjb25zdCB7IGNvbnN0cnVjdG9yLCBzaW5nbGV0b24gfSA9IHRoaXMuY2FjaGVbZGVmcy5uYW1lXTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBjb25zdHJ1Y3RvciguLi5hcmdzKTtcbiAgICB0aGlzLmNhY2hlW2RlZnMubmFtZV0gPSB7XG4gICAgICBpbnN0YW5jZTogaW5zdGFuY2UsXG4gICAgICBjb25zdHJ1Y3RvcjogY29uc3RydWN0b3IsXG4gICAgICBzaW5nbGV0b246IHNpbmdsZXRvbixcbiAgICB9O1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxufVxuIl19
package/lib/registry.d.ts CHANGED
@@ -1,46 +1,93 @@
1
1
  /**
2
- * @summary defines an Injectable type
2
+ * @description Type representing either a class constructor or an instance.
3
+ * @summary Defines an Injectable type that can be either a class constructor or an instance of a class.
4
+ * @template T The type of the injectable object
5
+ * @typedef {function(any): T | T} Injectable
3
6
  * @memberOf module:injectable-decorators
4
7
  */
5
8
  export type Injectable<T> = {
6
9
  new (...args: any[]): T;
7
10
  } | T;
8
11
  /**
9
- * @summary Interface for an injectable registry
10
- * @interface InjectableRegistry
12
+ * @description Contract for a registry that manages injectable objects.
13
+ * @summary Interface for an injectable registry that provides methods for retrieving, registering, and building injectable objects.
14
+ * @template T Type parameter used in the interface methods
15
+ * @interface InjectablesRegistry
16
+ * @memberOf module:injectable-decorators
11
17
  */
12
18
  export interface InjectablesRegistry {
13
19
  /**
14
- * @summary retrieves an {@link Injectable}
15
- * @param {string} name
16
- * @param {any[]} args
17
- * @return {Injectable | undefined}
18
- *
19
- * @method
20
+ * @description Fetches an injectable instance by its registered name.
21
+ * @summary Retrieves an {@link Injectable} from the registry by name, optionally passing constructor arguments.
22
+ * @template T Type of the injectable object to retrieve
23
+ * @param {string} name The registered name of the injectable to retrieve
24
+ * @param {any[]} args Constructor arguments to pass when instantiating the injectable
25
+ * @return {Injectable<T> | undefined} The injectable instance or undefined if not found
26
+ * @memberOf module:injectable-decorators
20
27
  */
21
28
  get<T>(name: string, ...args: any[]): Injectable<T> | undefined;
22
29
  /**
23
- * @summary registers an injectable constructor
24
- * @param {Injectable} constructor
25
- * @param {any[]} args
26
- *
27
- * @method
30
+ * @description Adds a class or object to the injectable registry.
31
+ * @summary Registers an injectable constructor or instance with the registry, making it available for injection.
32
+ * @template T Type of the injectable object to register
33
+ * @param {Injectable<T>} constructor The class constructor or object instance to register
34
+ * @param {any[]} args Additional arguments for registration (category, singleton flag, etc.)
35
+ * @return {void}
36
+ * @memberOf module:injectable-decorators
28
37
  */
29
38
  register<T>(constructor: Injectable<T>, ...args: any[]): void;
30
39
  /**
31
- * @summary Instantiates an Injectable
32
- * @param {Record<string, any>} obj
33
- * @param {any[]} args
34
- * @return T
35
- *
36
- * @method
40
+ * @description Creates a new instance of an injectable class.
41
+ * @summary Instantiates an injectable class using its constructor and the provided arguments.
42
+ * @template T Type of the object to build
43
+ * @param {Record<string, any>} obj Object containing the name of the injectable to build
44
+ * @param {any[]} args Constructor arguments to pass when instantiating the injectable
45
+ * @return {T} The newly created instance
46
+ * @memberOf module:injectable-decorators
37
47
  */
38
48
  build<T>(obj: Record<string, any>, ...args: any[]): T;
39
49
  }
40
50
  /**
41
- * @summary Holds the vairous {@link Injectable}s
51
+ * @description Default implementation of the InjectablesRegistry interface.
52
+ * @summary Holds the various {@link Injectable}s in a cache and provides methods to register, retrieve, and build them.
53
+ * @template T Type parameter used in the class methods
54
+ *
42
55
  * @class InjectableRegistryImp
43
56
  * @implements InjectablesRegistry
57
+ *
58
+ * @memberOf module:injectable-decorators
59
+ *
60
+ * @example
61
+ * // Create a new registry
62
+ * const registry = new InjectableRegistryImp();
63
+ *
64
+ * // Register a class
65
+ * class MyService {
66
+ * doSomething() {
67
+ * return 'Hello World';
68
+ * }
69
+ * }
70
+ * registry.register(MyService, 'MyService', true);
71
+ *
72
+ * // Get the instance
73
+ * const service = registry.get('MyService');
74
+ * service.doSomething(); // 'Hello World'
75
+ *
76
+ * @mermaid
77
+ * sequenceDiagram
78
+ * participant Client
79
+ * participant Registry
80
+ *
81
+ * Client->>Registry: register(MyService)
82
+ * Registry->>Registry: Store in cache
83
+ *
84
+ * Client->>Registry: get("MyService")
85
+ * alt Instance exists and is singleton
86
+ * Registry-->>Client: Return cached instance
87
+ * else No instance or not singleton
88
+ * Registry->>Registry: build(name)
89
+ * Registry-->>Client: Return new instance
90
+ * end
44
91
  */
45
92
  export declare class InjectableRegistryImp implements InjectablesRegistry {
46
93
  private cache;
package/lib/utils.cjs CHANGED
@@ -4,23 +4,23 @@ exports.TypeKey = void 0;
4
4
  exports.getTypeFromDecorator = getTypeFromDecorator;
5
5
  require("reflect-metadata");
6
6
  /**
7
- * @summary holds the key for the design type
7
+ * @description Reflection metadata key for accessing TypeScript type information.
8
+ * @summary Holds the key for retrieving the design type from TypeScript's reflection metadata.
8
9
  * @const TypeKey
9
- * @memberOf module:injectable-decorators
10
+ * @memberOf module:injectable-decorators
10
11
  */
11
12
  exports.TypeKey = "design:type";
12
13
  /**
13
- * @summary Retrieves the type from the decorators
14
- * @param {any} model
15
- * @param {string | symbol} propKey
16
- * @return {string | undefined}
17
- *
18
- * @function geTypeFromDecorators
19
- *
14
+ * @description Extracts the type name from a decorated property using reflection.
15
+ * @summary Retrieves the type from a property decorator by accessing TypeScript's reflection metadata.
16
+ * @param {any} model The target object containing the decorated property
17
+ * @param {string | symbol} propKey The property key (name or symbol) of the decorated property
18
+ * @return {string | undefined} The name of the property type, or undefined if it's a Function type
19
+ * @function getTypeFromDecorator
20
20
  * @memberOf module:injectable-decorators
21
21
  */
22
22
  function getTypeFromDecorator(model, propKey) {
23
23
  const typeDef = Reflect.getMetadata(exports.TypeKey, model, propKey);
24
24
  return typeDef.name !== "Function" ? typeDef.name : undefined;
25
25
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUJBLG9EQU1DO0FBekJELDRCQUEwQjtBQUUxQjs7OztHQUlHO0FBQ1UsUUFBQSxPQUFPLEdBQUcsYUFBYSxDQUFDO0FBRXJDOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxLQUFVLEVBQ1YsT0FBd0I7SUFFeEIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxlQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwicmVmbGVjdC1tZXRhZGF0YVwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IGhvbGRzIHRoZSBrZXkgZm9yIHRoZSBkZXNpZ24gdHlwZVxuICogQGNvbnN0IFR5cGVLZXlcbiAqIEBtZW1iZXJPZiAgbW9kdWxlOmluamVjdGFibGUtZGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgVHlwZUtleSA9IFwiZGVzaWduOnR5cGVcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBSZXRyaWV2ZXMgdGhlIHR5cGUgZnJvbSB0aGUgZGVjb3JhdG9yc1xuICogQHBhcmFtIHthbnl9IG1vZGVsXG4gKiBAcGFyYW0ge3N0cmluZyB8IHN5bWJvbH0gcHJvcEtleVxuICogQHJldHVybiB7c3RyaW5nIHwgdW5kZWZpbmVkfVxuICpcbiAqIEBmdW5jdGlvbiBnZVR5cGVGcm9tRGVjb3JhdG9yc1xuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlRnJvbURlY29yYXRvcihcbiAgbW9kZWw6IGFueSxcbiAgcHJvcEtleTogc3RyaW5nIHwgc3ltYm9sLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdHlwZURlZiA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoVHlwZUtleSwgbW9kZWwsIHByb3BLZXkpO1xuICByZXR1cm4gdHlwZURlZi5uYW1lICE9PSBcIkZ1bmN0aW9uXCIgPyB0eXBlRGVmLm5hbWUgOiB1bmRlZmluZWQ7XG59XG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUJBLG9EQU1DO0FBekJELDRCQUEwQjtBQUUxQjs7Ozs7R0FLRztBQUNVLFFBQUEsT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUVyQzs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxLQUFVLEVBQ1YsT0FBd0I7SUFFeEIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxlQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwicmVmbGVjdC1tZXRhZGF0YVwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZWZsZWN0aW9uIG1ldGFkYXRhIGtleSBmb3IgYWNjZXNzaW5nIFR5cGVTY3JpcHQgdHlwZSBpbmZvcm1hdGlvbi5cbiAqIEBzdW1tYXJ5IEhvbGRzIHRoZSBrZXkgZm9yIHJldHJpZXZpbmcgdGhlIGRlc2lnbiB0eXBlIGZyb20gVHlwZVNjcmlwdCdzIHJlZmxlY3Rpb24gbWV0YWRhdGEuXG4gKiBAY29uc3QgVHlwZUtleVxuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFR5cGVLZXkgPSBcImRlc2lnbjp0eXBlXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEV4dHJhY3RzIHRoZSB0eXBlIG5hbWUgZnJvbSBhIGRlY29yYXRlZCBwcm9wZXJ0eSB1c2luZyByZWZsZWN0aW9uLlxuICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSB0eXBlIGZyb20gYSBwcm9wZXJ0eSBkZWNvcmF0b3IgYnkgYWNjZXNzaW5nIFR5cGVTY3JpcHQncyByZWZsZWN0aW9uIG1ldGFkYXRhLlxuICogQHBhcmFtIHthbnl9IG1vZGVsIFRoZSB0YXJnZXQgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRlY29yYXRlZCBwcm9wZXJ0eVxuICogQHBhcmFtIHtzdHJpbmcgfCBzeW1ib2x9IHByb3BLZXkgVGhlIHByb3BlcnR5IGtleSAobmFtZSBvciBzeW1ib2wpIG9mIHRoZSBkZWNvcmF0ZWQgcHJvcGVydHlcbiAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHR5cGUsIG9yIHVuZGVmaW5lZCBpZiBpdCdzIGEgRnVuY3Rpb24gdHlwZVxuICogQGZ1bmN0aW9uIGdldFR5cGVGcm9tRGVjb3JhdG9yXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmluamVjdGFibGUtZGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZUZyb21EZWNvcmF0b3IoXG4gIG1vZGVsOiBhbnksXG4gIHByb3BLZXk6IHN0cmluZyB8IHN5bWJvbCxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHR5cGVEZWYgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFR5cGVLZXksIG1vZGVsLCBwcm9wS2V5KTtcbiAgcmV0dXJuIHR5cGVEZWYubmFtZSAhPT0gXCJGdW5jdGlvblwiID8gdHlwZURlZi5uYW1lIDogdW5kZWZpbmVkO1xufVxuIl19
package/lib/utils.d.ts CHANGED
@@ -1,18 +1,18 @@
1
1
  import "reflect-metadata";
2
2
  /**
3
- * @summary holds the key for the design type
3
+ * @description Reflection metadata key for accessing TypeScript type information.
4
+ * @summary Holds the key for retrieving the design type from TypeScript's reflection metadata.
4
5
  * @const TypeKey
5
- * @memberOf module:injectable-decorators
6
+ * @memberOf module:injectable-decorators
6
7
  */
7
8
  export declare const TypeKey = "design:type";
8
9
  /**
9
- * @summary Retrieves the type from the decorators
10
- * @param {any} model
11
- * @param {string | symbol} propKey
12
- * @return {string | undefined}
13
- *
14
- * @function geTypeFromDecorators
15
- *
10
+ * @description Extracts the type name from a decorated property using reflection.
11
+ * @summary Retrieves the type from a property decorator by accessing TypeScript's reflection metadata.
12
+ * @param {any} model The target object containing the decorated property
13
+ * @param {string | symbol} propKey The property key (name or symbol) of the decorated property
14
+ * @return {string | undefined} The name of the property type, or undefined if it's a Function type
15
+ * @function getTypeFromDecorator
16
16
  * @memberOf module:injectable-decorators
17
17
  */
18
18
  export declare function getTypeFromDecorator(model: any, propKey: string | symbol): string | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/injectable-decorators",
3
- "version": "1.6.0",
3
+ "version": "1.6.2",
4
4
  "description": "injectable decorators extension for decorator validation",
5
5
  "type": "module",
6
6
  "exports": {
@@ -10,7 +10,7 @@
10
10
  "types": "lib/index.d.ts",
11
11
  "scripts": {
12
12
  "do-install": "TOKEN=$(cat .token) npm install",
13
- "update-dependencies": "npm update @decaf-ts/*",
13
+ "update-dependencies": "PREFIX=\"decaf-ts\"; npm ls | grep \"$PREFIX\" | awk -F/ '{print $NF}' | sed 's/@.*//' | xargs -I package npm update @\"$PREFIX\"/package",
14
14
  "update-scripts": "npx update-scripts",
15
15
  "on-first-run": "npx update-scripts --boot",
16
16
  "set-git-auth": "git config url.\"https://api:$(cat .token)@github.com/\".insteadOf \"https://github.com/\" && git config url.\"https://ssh:$(cat .token)@github.com/\".insteadOf \"ssh://git@github.com/\" && git config url.\"https://git:$(cat .token)@github.com/\".insteadOf \"git@github.com:\"",
@@ -59,8 +59,8 @@
59
59
  "id",
60
60
  "timestamp"
61
61
  ],
62
- "author": "decaf-ts",
63
- "license": "LGPL-3.0-or-later",
62
+ "author": "Tiago Venceslau",
63
+ "license": "MIT",
64
64
  "bugs": {
65
65
  "url": "https://github.com/decaf-ts/injectable-decorators/issues"
66
66
  },