@decaf-ts/injectable-decorators 1.6.7 → 1.6.8
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/README.md +2 -8
- package/dist/injectable-decorators.cjs +159 -75
- package/dist/injectable-decorators.esm.cjs +157 -76
- package/lib/Injectables.cjs +6 -1
- package/lib/Injectables.d.ts +5 -0
- package/lib/constants.cjs +18 -4
- package/lib/constants.d.ts +15 -2
- package/lib/decorators.cjs +105 -47
- package/lib/decorators.d.ts +140 -94
- package/lib/esm/Injectables.d.ts +5 -0
- package/lib/esm/Injectables.js +6 -1
- package/lib/esm/constants.d.ts +15 -2
- package/lib/esm/constants.js +17 -3
- package/lib/esm/decorators.d.ts +140 -94
- package/lib/esm/decorators.js +102 -44
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/registry.js +6 -4
- package/lib/esm/types.d.ts +40 -3
- package/lib/esm/types.js +1 -1
- package/lib/esm/utils.d.ts +6 -4
- package/lib/esm/utils.js +8 -7
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/registry.cjs +7 -5
- package/lib/types.cjs +1 -1
- package/lib/types.d.ts +40 -3
- package/lib/utils.cjs +11 -9
- package/lib/utils.d.ts +6 -4
- package/package.json +2 -1
package/lib/decorators.d.ts
CHANGED
|
@@ -1,60 +1,105 @@
|
|
|
1
1
|
import { InstanceCallback } from "./types";
|
|
2
2
|
/**
|
|
3
|
-
* @description
|
|
4
|
-
* @summary
|
|
5
|
-
* @
|
|
6
|
-
* @
|
|
7
|
-
* @
|
|
3
|
+
* @description Configuration options for the @injectable decorator.
|
|
4
|
+
* @summary Controls lifecycle (singleton vs on-demand) and an optional instance transformation callback executed post-construction.
|
|
5
|
+
* @template T The instance type affected by the callback when provided.
|
|
6
|
+
* @property {boolean} singleton When true, a single instance is shared (singleton). When false, instances are created on demand.
|
|
7
|
+
* @property {InstanceCallback<T>} [callback] Optional hook to transform the instance after it is constructed.
|
|
8
|
+
* @typedef InjectableConfig
|
|
8
9
|
* @memberOf module:injectable-decorators
|
|
9
10
|
*/
|
|
10
|
-
export
|
|
11
|
+
export type InjectableConfig = {
|
|
12
|
+
singleton: boolean;
|
|
13
|
+
callback?: InstanceCallback<any>;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* @description Generic constructor type for class-like values.
|
|
17
|
+
* @summary Represents any class that can be instantiated with arbitrary arguments, producing an instance of type T.
|
|
18
|
+
* @template T The instance type created by the constructor.
|
|
19
|
+
* @typedef Constructor
|
|
20
|
+
* @example
|
|
21
|
+
* // Using Constructor to type a factory
|
|
22
|
+
* function make<T>(Ctor: Constructor<T>, ...args: any[]): T {
|
|
23
|
+
* return new Ctor(...args);
|
|
24
|
+
* }
|
|
25
|
+
* @memberOf module:injectable-decorators
|
|
26
|
+
*/
|
|
27
|
+
export type Constructor<T = any> = {
|
|
28
|
+
new (...args: any[]): T;
|
|
29
|
+
};
|
|
11
30
|
/**
|
|
12
31
|
* @description Decorator that marks a class as available for dependency injection.
|
|
13
|
-
* @summary Defines a class as an injectable
|
|
14
|
-
* When applied to a class, replaces its constructor with one that returns
|
|
32
|
+
* @summary Defines a class as an injectable that can be retrieved from the registry.
|
|
33
|
+
* When applied to a class, replaces its constructor with one that returns an instance.
|
|
34
|
+
*
|
|
35
|
+
* @return {function(any): any} A decorator function that transforms the class into an injectable.
|
|
15
36
|
*
|
|
16
|
-
* @
|
|
37
|
+
* @function injectable
|
|
38
|
+
* @category Decorators
|
|
39
|
+
*/
|
|
40
|
+
export declare function injectable(): (original: any) => any;
|
|
41
|
+
/**
|
|
42
|
+
* @description Decorator that marks a class as available for dependency injection.
|
|
43
|
+
* @summary Defines a class as an injectable that can be retrieved from the registry.
|
|
44
|
+
* When applied to a class, replaces its constructor with one that returns an instance.
|
|
45
|
+
*
|
|
46
|
+
* @param {string | Constructor} category Defaults to the class category. Useful when minification occurs and names are changed,
|
|
17
47
|
* or when you want to upcast the object to a different type.
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* @param {Function} [instanceCallback] Optional callback function that will be called with the instance after creation.
|
|
21
|
-
* @return {Function} A decorator function that transforms the class into an injectable.
|
|
48
|
+
*
|
|
49
|
+
* @return {function(any): any} A decorator function that transforms the class into an injectable.
|
|
22
50
|
*
|
|
23
51
|
* @function injectable
|
|
24
|
-
* @category
|
|
52
|
+
* @category Decorators
|
|
53
|
+
*/
|
|
54
|
+
export declare function injectable(category: string | Constructor): (original: any) => any;
|
|
55
|
+
/**
|
|
56
|
+
* @description Decorator that marks a class as available for dependency injection.
|
|
57
|
+
* @summary Defines a class as an injectable that can be retrieved from the registry.
|
|
58
|
+
* When applied to a class, replaces its constructor with one that returns an instance.
|
|
25
59
|
*
|
|
26
|
-
* @
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* Client->>Decorator: @injectable()
|
|
33
|
-
* Decorator->>Decorator: Create new constructor
|
|
34
|
-
*
|
|
35
|
-
* Note over Decorator: When new instance requested
|
|
36
|
-
* Decorator->>Injectables: get(name)
|
|
37
|
-
* alt Instance exists
|
|
38
|
-
* Injectables-->>Decorator: Return existing instance
|
|
39
|
-
* else No instance
|
|
40
|
-
* Decorator->>Injectables: register(original, name)
|
|
41
|
-
* Decorator->>Injectables: get(name)
|
|
42
|
-
* Injectables-->>Decorator: Return new instance
|
|
43
|
-
* opt Has callback
|
|
44
|
-
* Decorator->>Decorator: Call instanceCallback
|
|
45
|
-
* end
|
|
46
|
-
* end
|
|
47
|
-
* Decorator->>Decorator: Define metadata
|
|
48
|
-
* Decorator-->>Client: Return instance
|
|
60
|
+
* @param {Partial<InjectableConfig>} cfg=DefaultInjectableConfig Allows overriding the default singleton behavior and adding a callback function.
|
|
61
|
+
*
|
|
62
|
+
* @return {function(any): any} A decorator function that transforms the class into an injectable.
|
|
63
|
+
*
|
|
64
|
+
* @function injectable
|
|
65
|
+
* @category Decorators
|
|
49
66
|
*/
|
|
50
|
-
export declare function injectable(): (original: any) => any;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
67
|
+
export declare function injectable(cfg: Partial<InjectableConfig>): (original: any) => any;
|
|
68
|
+
/**
|
|
69
|
+
* @description Decorator that marks a class as available for dependency injection.
|
|
70
|
+
* @summary Defines a class as an injectable that can be retrieved from the registry.
|
|
71
|
+
* When applied to a class, replaces its constructor with one that returns an instance.
|
|
72
|
+
*
|
|
73
|
+
* @param category Defaults to the class category. Useful when minification occurs and names are changed,
|
|
74
|
+
* or when you want to upcast the object to a different type.
|
|
75
|
+
* @param {Partial<InjectableConfig>} cfg=DefaultInjectableConfig Allows overriding the default singleton behavior and adding a callback function.
|
|
76
|
+
*
|
|
77
|
+
* @return {function(any): any} A decorator function that transforms the class into an injectable.
|
|
78
|
+
*
|
|
79
|
+
* @function injectable
|
|
80
|
+
* @category Decorators
|
|
81
|
+
*/
|
|
82
|
+
export declare function injectable(category: string | Constructor, cfg: Partial<InjectableConfig>): (original: any) => any;
|
|
83
|
+
/**
|
|
84
|
+
* @description Convenience decorator to register an injectable as a singleton.
|
|
85
|
+
* @summary Wraps {@link injectable} forcing the singleton lifecycle so only one instance is created and reused.
|
|
86
|
+
* @param {string|Constructor} [category] Optional explicit category/symbol source; defaults to the class.
|
|
87
|
+
* @param {Omit<InjectableConfig, "singleton">} [cfg] Additional injectable configuration excluding the singleton flag.
|
|
88
|
+
* @return function(any): any} A class decorator that registers the target as a singleton injectable.
|
|
89
|
+
* @function singleton
|
|
90
|
+
* @category Class Decorators
|
|
91
|
+
*/
|
|
92
|
+
export declare function singleton(category?: string | Constructor, cfg?: Omit<InjectableConfig, "singleton">): (original: any) => any;
|
|
93
|
+
/**
|
|
94
|
+
* @description Convenience decorator to register an injectable as on-demand (non-singleton).
|
|
95
|
+
* @summary Wraps {@link injectable} forcing new instances to be created on every injection or retrieval.
|
|
96
|
+
* @param {string|Constructor} [category] Optional explicit category/symbol source; defaults to the class.
|
|
97
|
+
* @param {Omit<InjectableConfig, "singleton">} [cfg] Additional injectable configuration excluding the singleton flag.
|
|
98
|
+
* @return {function(any): any} A class decorator that registers the target as a non-singleton injectable.
|
|
99
|
+
* @function onDemand
|
|
100
|
+
* @category Class Decorators
|
|
101
|
+
*/
|
|
102
|
+
export declare function onDemand(category?: string | Constructor, cfg?: Omit<InjectableConfig, "singleton">): (original: any) => any;
|
|
58
103
|
/**
|
|
59
104
|
* @description Function type for transforming injectable instances before they're injected.
|
|
60
105
|
* @summary Function which transforms a cached {@link injectable} instance before it's injected into a target object.
|
|
@@ -64,68 +109,69 @@ export declare function injectable(category: string | {
|
|
|
64
109
|
* @return {any} The transformed injectable instance
|
|
65
110
|
*
|
|
66
111
|
* @typedef {Function} InstanceTransformer
|
|
112
|
+
* @category Decorators
|
|
67
113
|
* @memberOf module:injectable-decorators
|
|
68
114
|
*/
|
|
69
115
|
export type InstanceTransformer = (injectable: any, obj: any) => any;
|
|
116
|
+
/**
|
|
117
|
+
* @description Options for the property-level @inject decorator.
|
|
118
|
+
* @summary Allows specifying constructor arguments and an optional transformer to be applied to the resolved instance.
|
|
119
|
+
* @property {any[]} [args] Optional constructor arguments to use when building the injectable instance.
|
|
120
|
+
* @property {InstanceTransformer} [transformer] Optional function to transform the instance before assignment.
|
|
121
|
+
* @typedef InjectOptions
|
|
122
|
+
* @memberOf module:injectable-decorators
|
|
123
|
+
*/
|
|
124
|
+
export type InjectOptions = {
|
|
125
|
+
args?: any[];
|
|
126
|
+
transformer?: InstanceTransformer;
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* @description Property decorator that injects a dependency into a class property.
|
|
130
|
+
* @summary Allows for the injection of an {@link injectable} decorated dependency into a class property.
|
|
131
|
+
* The property must be typed for the requested dependency. Only concrete classes are supported; generics are not.
|
|
132
|
+
*
|
|
133
|
+
* @return {function(any, any): void} A property decorator function that sets up the dependency injection.
|
|
134
|
+
*
|
|
135
|
+
* @function inject
|
|
136
|
+
* @category Decorators
|
|
137
|
+
*/
|
|
138
|
+
export declare function inject(): (target: any, propertyKey: any) => void;
|
|
70
139
|
/**
|
|
71
140
|
* @description Property decorator that injects a dependency into a class property.
|
|
72
141
|
* @summary Allows for the injection of an {@link injectable} decorated dependency into a class property.
|
|
73
142
|
* The property must be typed for the requested dependency. Only concrete classes are supported; generics are not.
|
|
74
143
|
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
* ...
|
|
144
|
+
* @param {string} category Defaults to the class name derived from the property type. Useful when minification occurs
|
|
145
|
+
* and names are changed, or when you want to upcast the object to a different type.
|
|
146
|
+
* @return {function(any, any): void} A property decorator function that sets up the dependency injection.
|
|
79
147
|
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
148
|
+
* @function inject
|
|
149
|
+
* @category Decorators
|
|
150
|
+
*/
|
|
151
|
+
export declare function inject(category: string | Constructor): (target: any, propertyKey: any) => void;
|
|
152
|
+
/**
|
|
153
|
+
* @description Property decorator that injects a dependency into a class property.
|
|
154
|
+
* @summary Allows for the injection of an {@link injectable} decorated dependency into a class property.
|
|
155
|
+
* The property must be typed for the requested dependency. Only concrete classes are supported; generics are not.
|
|
82
156
|
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* </pre>
|
|
157
|
+
* @param {Partial<InjectOptions>} [cfg={}] Optional function to transform the injectable instance before it's injected, or arguments to pass the constructor when injecting onDemand
|
|
158
|
+
* @return {function(any, any): void} A property decorator function that sets up the dependency injection.
|
|
86
159
|
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
|
|
160
|
+
* @function inject
|
|
161
|
+
* @category Decorators
|
|
162
|
+
*/
|
|
163
|
+
export declare function inject(cfg: Partial<InjectOptions>): (target: any, propertyKey: any) => void;
|
|
164
|
+
/**
|
|
165
|
+
* @description Property decorator that injects a dependency into a class property.
|
|
166
|
+
* @summary Allows for the injection of an {@link injectable} decorated dependency into a class property.
|
|
167
|
+
* The property must be typed for the requested dependency. Only concrete classes are supported; generics are not.
|
|
90
168
|
*
|
|
91
|
-
* @param {string}
|
|
169
|
+
* @param {string} category Defaults to the class name derived from the property type. Useful when minification occurs
|
|
92
170
|
* and names are changed, or when you want to upcast the object to a different type.
|
|
93
|
-
* @param {
|
|
94
|
-
* @return {
|
|
171
|
+
* @param {Partial<InjectOptions>} cfg={} Optional function to transform the injectable instance before it's injected, or arguments to pass the constructor when injecting onDemand
|
|
172
|
+
* @return {function(any, any): void} A property decorator function that sets up the dependency injection.
|
|
95
173
|
*
|
|
96
174
|
* @function inject
|
|
97
|
-
* @category
|
|
98
|
-
*
|
|
99
|
-
* @mermaid
|
|
100
|
-
* sequenceDiagram
|
|
101
|
-
* participant Client
|
|
102
|
-
* participant Decorator
|
|
103
|
-
* participant Injectables
|
|
104
|
-
*
|
|
105
|
-
* Client->>Decorator: @inject()
|
|
106
|
-
* Decorator->>Decorator: Get type from property
|
|
107
|
-
* Decorator->>Decorator: Define metadata
|
|
108
|
-
* Decorator->>Decorator: Define property getter
|
|
109
|
-
*
|
|
110
|
-
* Note over Decorator: When property accessed
|
|
111
|
-
* Client->>Decorator: access property
|
|
112
|
-
* Decorator->>Decorator: Check if instance exists
|
|
113
|
-
* alt Instance exists in WeakMap
|
|
114
|
-
* Decorator-->>Client: Return cached instance
|
|
115
|
-
* else No instance
|
|
116
|
-
* Decorator->>Injectables: get(name)
|
|
117
|
-
* alt Injectable found
|
|
118
|
-
* Injectables-->>Decorator: Return injectable instance
|
|
119
|
-
* opt Has transformer
|
|
120
|
-
* Decorator->>Decorator: Call transformer
|
|
121
|
-
* end
|
|
122
|
-
* Decorator->>Decorator: Store in WeakMap
|
|
123
|
-
* Decorator-->>Client: Return instance
|
|
124
|
-
* else No injectable
|
|
125
|
-
* Decorator-->>Client: Throw error
|
|
126
|
-
* end
|
|
127
|
-
* end
|
|
175
|
+
* @category Decorators
|
|
128
176
|
*/
|
|
129
|
-
export declare function inject(category
|
|
130
|
-
new (...args: any[]): any;
|
|
131
|
-
}, transformer?: InstanceTransformer, ...args: any[]): (target: any, propertyKey?: any) => void;
|
|
177
|
+
export declare function inject(category: string | Constructor, cfg: Partial<InjectOptions>): (target: any, propertyKey: any) => void;
|
package/lib/esm/Injectables.d.ts
CHANGED
|
@@ -42,6 +42,11 @@ import { Injectable, InjectablesRegistry } from "./registry";
|
|
|
42
42
|
* Injectables-->>Client: MyService instance
|
|
43
43
|
*/
|
|
44
44
|
export declare class Injectables {
|
|
45
|
+
/**
|
|
46
|
+
* @description Holds the active registry implementation used by the Injectables facade.
|
|
47
|
+
* @summary Internal static reference that can be swapped via setRegistry to customize how injectables are stored and retrieved.
|
|
48
|
+
* @type {InjectablesRegistry | undefined}
|
|
49
|
+
*/
|
|
45
50
|
private static actingInjectablesRegistry?;
|
|
46
51
|
private constructor();
|
|
47
52
|
/**
|
package/lib/esm/Injectables.js
CHANGED
|
@@ -42,6 +42,11 @@ import { InjectableRegistryImp, } from "./registry.js";
|
|
|
42
42
|
* Injectables-->>Client: MyService instance
|
|
43
43
|
*/
|
|
44
44
|
export class Injectables {
|
|
45
|
+
/**
|
|
46
|
+
* @description Holds the active registry implementation used by the Injectables facade.
|
|
47
|
+
* @summary Internal static reference that can be swapped via setRegistry to customize how injectables are stored and retrieved.
|
|
48
|
+
* @type {InjectablesRegistry | undefined}
|
|
49
|
+
*/
|
|
45
50
|
static { this.actingInjectablesRegistry = undefined; }
|
|
46
51
|
constructor() { }
|
|
47
52
|
/**
|
|
@@ -120,4 +125,4 @@ export class Injectables {
|
|
|
120
125
|
}, {});
|
|
121
126
|
}
|
|
122
127
|
}
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5qZWN0YWJsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvSW5qZWN0YWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHFCQUFxQixHQUV0QixzQkFBbUI7QUFHcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFDdEI7Ozs7T0FJRzthQUNZLDhCQUF5QixHQUF5QixTQUFTLENBQUM7SUFFM0UsZ0JBQXVCLENBQUM7SUFFeEI7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsR0FBRyxDQUNSLElBQW1ELEVBQ25ELEdBQUcsSUFBVztRQUVkLE9BQU8sV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUksV0FBMEIsRUFBRSxHQUFHLElBQVc7UUFDM0QsT0FBTyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUN2QyxXQUFXLEVBQ1gsR0FBSSxJQUF1QyxDQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFJLElBQVksRUFBRSxHQUFHLElBQVc7UUFDMUMsT0FBTyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQXVDO1FBQ3hELFdBQVcsQ0FBQyx5QkFBeUIsR0FBRyxrQkFBa0IsQ0FBQztJQUM3RCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNLLE1BQU0sQ0FBQyxXQUFXO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMseUJBQXlCO1lBQ3hDLFdBQVcsQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDdEUsT0FBTyxXQUFXLENBQUMseUJBQXlCLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBSztRQUNWLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFzQjtRQUMxQyxNQUFNLE1BQU0sR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDcEUsV0FBVyxDQUFDLHlCQUFpQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQ3JFLFdBQVcsQ0FBQyx5QkFBaUMsQ0FBQyxPQUFPLENBQUMsQ0FDeEQsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUEwQixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7WUFDbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDekMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wLFxuICBJbmplY3RhYmxlc1JlZ2lzdHJ5LFxufSBmcm9tIFwiLi9yZWdpc3RyeVwiO1xuaW1wb3J0IHsgSW5qZWN0YWJsZU9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDZW50cmFsIHJlZ2lzdHJ5IGZvciBtYW5hZ2luZyBpbmplY3RhYmxlIGRlcGVuZGVuY2llcy5cbiAqIEBzdW1tYXJ5IFN0YXRpYyBjbGFzcyBob2xkaW5nIHRoZSBhY2Nlc3MgdG8gdGhlIGluamVjdGFibGVzIGZ1bmN0aW9ucy4gUHJvdmlkZXMgbWV0aG9kcyBmb3IgcmVnaXN0ZXJpbmcsXG4gKiByZXRyaWV2aW5nLCBhbmQgYnVpbGRpbmcgaW5qZWN0YWJsZSBvYmplY3RzLlxuICogQHRlbXBsYXRlIFQgVHlwZSBvZiB0aGUgaW5qZWN0YWJsZSBvYmplY3RcbiAqXG4gKiBAY2xhc3MgSW5qZWN0YWJsZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRGVmaW5lIGFuIGluamVjdGFibGUgY2xhc3NcbiAqIEBpbmplY3RhYmxlKClcbiAqIGNsYXNzIE15U2VydmljZSB7XG4gKiAgIGRvU29tZXRoaW5nKCkge1xuICogICAgIHJldHVybiAnSGVsbG8gV29ybGQnO1xuICogICB9XG4gKiB9XG4gKlxuICogLy8gSW5qZWN0IHRoZSBzZXJ2aWNlIGludG8gYW5vdGhlciBjbGFzc1xuICogY2xhc3MgTXlDb21wb25lbnQge1xuICogICBAaW5qZWN0KClcbiAqICAgcHJpdmF0ZSBzZXJ2aWNlITogTXlTZXJ2aWNlO1xuICpcbiAqICAgdXNlU2VydmljZSgpIHtcbiAqICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmRvU29tZXRoaW5nKCk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICogICBwYXJ0aWNpcGFudCBJbmplY3RhYmxlc1xuICogICBwYXJ0aWNpcGFudCBSZWdpc3RyeVxuICpcbiAqICAgQ2xpZW50LT4+SW5qZWN0YWJsZXM6IHJlZ2lzdGVyKE15U2VydmljZSlcbiAqICAgSW5qZWN0YWJsZXMtPj5SZWdpc3RyeTogcmVnaXN0ZXIoTXlTZXJ2aWNlKVxuICogICBSZWdpc3RyeS0tPj5JbmplY3RhYmxlczogdm9pZFxuICpcbiAqICAgQ2xpZW50LT4+SW5qZWN0YWJsZXM6IGdldChcIk15U2VydmljZVwiKVxuICogICBJbmplY3RhYmxlcy0+PlJlZ2lzdHJ5OiBnZXQoXCJNeVNlcnZpY2VcIilcbiAqICAgUmVnaXN0cnktLT4+SW5qZWN0YWJsZXM6IE15U2VydmljZSBpbnN0YW5jZVxuICogICBJbmplY3RhYmxlcy0tPj5DbGllbnQ6IE15U2VydmljZSBpbnN0YW5jZVxuICovXG5leHBvcnQgY2xhc3MgSW5qZWN0YWJsZXMge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhvbGRzIHRoZSBhY3RpdmUgcmVnaXN0cnkgaW1wbGVtZW50YXRpb24gdXNlZCBieSB0aGUgSW5qZWN0YWJsZXMgZmFjYWRlLlxuICAgKiBAc3VtbWFyeSBJbnRlcm5hbCBzdGF0aWMgcmVmZXJlbmNlIHRoYXQgY2FuIGJlIHN3YXBwZWQgdmlhIHNldFJlZ2lzdHJ5IHRvIGN1c3RvbWl6ZSBob3cgaW5qZWN0YWJsZXMgYXJlIHN0b3JlZCBhbmQgcmV0cmlldmVkLlxuICAgKiBAdHlwZSB7SW5qZWN0YWJsZXNSZWdpc3RyeSB8IHVuZGVmaW5lZH1cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGFjdGluZ0luamVjdGFibGVzUmVnaXN0cnk/OiBJbmplY3RhYmxlc1JlZ2lzdHJ5ID0gdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmV0Y2hlcyBhbiBpbmplY3RhYmxlIGluc3RhbmNlIGJ5IGl0cyByZWdpc3RlcmVkIG5hbWUuXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgbmFtZWQge0BsaW5rIEluamVjdGFibGV9IGZyb20gdGhlIHJlZ2lzdHJ5LiBJZiB0aGUgaW5qZWN0YWJsZSBpcyBhIHNpbmdsZXRvbixcbiAgICogcmV0dXJucyB0aGUgZXhpc3RpbmcgaW5zdGFuY2UuIE90aGVyd2lzZSwgY3JlYXRlcyBhIG5ldyBpbnN0YW5jZS5cbiAgICogQHRlbXBsYXRlIFQgVHlwZSBvZiB0aGUgaW5qZWN0YWJsZSBvYmplY3QgdG8gcmV0cmlldmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIHJlZ2lzdGVyZWQgbmFtZSBvZiB0aGUgaW5qZWN0YWJsZSB0byByZXRyaWV2ZVxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzIENvbnN0cnVjdG9yIGFyZ3VtZW50cyB0byBwYXNzIHdoZW4gaW5zdGFudGlhdGluZyB0aGUgaW5qZWN0YWJsZVxuICAgKiBAcmV0dXJuIHtJbmplY3RhYmxlPFQ+IHwgdW5kZWZpbmVkfSBUaGUgaW5qZWN0YWJsZSBpbnN0YW5jZSBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kXG4gICAqL1xuICBzdGF0aWMgZ2V0PFQ+KFxuICAgIG5hbWU6IHN5bWJvbCB8IHN0cmluZyB8IHsgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQgfSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gSW5qZWN0YWJsZXMuZ2V0UmVnaXN0cnkoKS5nZXQobmFtZSwgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFkZHMgYSBjbGFzcyBvciBvYmplY3QgdG8gdGhlIGluamVjdGFibGUgcmVnaXN0cnkuXG4gICAqIEBzdW1tYXJ5IFJlZ2lzdGVycyBhbiBpbmplY3RhYmxlIGNvbnN0cnVjdG9yIG9yIGluc3RhbmNlIHdpdGggdGhlIHJlZ2lzdHJ5LCBtYWtpbmcgaXQgYXZhaWxhYmxlIGZvciBpbmplY3Rpb24uXG4gICAqIEB0ZW1wbGF0ZSBUIFR5cGUgb2YgdGhlIGluamVjdGFibGUgb2JqZWN0IHRvIHJlZ2lzdGVyXG4gICAqIEBwYXJhbSB7SW5qZWN0YWJsZTxUPn0gY29uc3RydWN0b3IgVGhlIGNsYXNzIGNvbnN0cnVjdG9yIG9yIG9iamVjdCBpbnN0YW5jZSB0byByZWdpc3RlclxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzIEFkZGl0aW9uYWwgYXJndW1lbnRzIGZvciByZWdpc3RyYXRpb24gKGNhdGVnb3J5LCBzaW5nbGV0b24gZmxhZywgZXRjLilcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyByZWdpc3RlcjxUPihjb25zdHJ1Y3RvcjogSW5qZWN0YWJsZTxUPiwgLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICByZXR1cm4gSW5qZWN0YWJsZXMuZ2V0UmVnaXN0cnkoKS5yZWdpc3RlcihcbiAgICAgIGNvbnN0cnVjdG9yLFxuICAgICAgLi4uKGFyZ3MgYXMgW3N5bWJvbCwgSW5qZWN0YWJsZU9wdGlvbnM8VD5dKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgYW4gaW5qZWN0YWJsZSBjbGFzcy5cbiAgICogQHN1bW1hcnkgSW5zdGFudGlhdGVzIGFuIGluamVjdGFibGUgY2xhc3MgdXNpbmcgaXRzIGNvbnN0cnVjdG9yIGFuZCB0aGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgKiBAdGVtcGxhdGUgVCBUeXBlIG9mIHRoZSBvYmplY3QgdG8gYnVpbGRcbiAgICogQHBhcmFtIHtzeW1ib2x9IG5hbWUgc3ltYm9sIHJlZmVyZW5jaW5nIHRoZSBpbmplY3RhYmxlXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3MgQ29uc3RydWN0b3IgYXJndW1lbnRzIHRvIHBhc3Mgd2hlbiBpbnN0YW50aWF0aW5nIHRoZSBpbmplY3RhYmxlXG4gICAqIEByZXR1cm4ge1R9IFRoZSBuZXdseSBjcmVhdGVkIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgYnVpbGQ8VD4obmFtZTogc3ltYm9sLCAuLi5hcmdzOiBhbnlbXSk6IFQge1xuICAgIHJldHVybiBJbmplY3RhYmxlcy5nZXRSZWdpc3RyeSgpLmJ1aWxkKG5hbWUsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXBsYWNlcyB0aGUgY3VycmVudCByZWdpc3RyeSBpbXBsZW1lbnRhdGlvbi5cbiAgICogQHN1bW1hcnkgU2V0cyBhIG5ldyB7QGxpbmsgSW5qZWN0YWJsZXNSZWdpc3RyeX0gaW1wbGVtZW50YXRpb24sIGFsbG93aW5nIGZvciBjdXN0b20gcmVnaXN0cnkgYmVoYXZpb3IuXG4gICAqIEBwYXJhbSB7SW5qZWN0YWJsZXNSZWdpc3RyeX0gb3BlcmF0aW9uc1JlZ2lzdHJ5IFRoZSBuZXcgaW1wbGVtZW50YXRpb24gb2YgUmVnaXN0cnkgdG8gdXNlXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqL1xuICBzdGF0aWMgc2V0UmVnaXN0cnkob3BlcmF0aW9uc1JlZ2lzdHJ5OiBJbmplY3RhYmxlc1JlZ2lzdHJ5KTogdm9pZCB7XG4gICAgSW5qZWN0YWJsZXMuYWN0aW5nSW5qZWN0YWJsZXNSZWdpc3RyeSA9IG9wZXJhdGlvbnNSZWdpc3RyeTtcbiAgfVxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgY3VycmVudCByZWdpc3RyeSBpbnN0YW5jZS5cbiAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgY3VycmVudCB7QGxpbmsgSW5qZWN0YWJsZXNSZWdpc3RyeX0gb3IgY3JlYXRlcyBhIGRlZmF1bHQgb25lIGlmIG5vbmUgZXhpc3RzLlxuICAgKiBAcmV0dXJuIHtJbmplY3RhYmxlc1JlZ2lzdHJ5fSBUaGUgY3VycmVudCByZWdpc3RyeSBpbnN0YW5jZVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0UmVnaXN0cnkoKTogSW5qZWN0YWJsZXNSZWdpc3RyeSB7XG4gICAgaWYgKCFJbmplY3RhYmxlcy5hY3RpbmdJbmplY3RhYmxlc1JlZ2lzdHJ5KVxuICAgICAgSW5qZWN0YWJsZXMuYWN0aW5nSW5qZWN0YWJsZXNSZWdpc3RyeSA9IG5ldyBJbmplY3RhYmxlUmVnaXN0cnlJbXAoKTtcbiAgICByZXR1cm4gSW5qZWN0YWJsZXMuYWN0aW5nSW5qZWN0YWJsZXNSZWdpc3RyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ2xlYXJzIGFsbCByZWdpc3RlcmVkIGluamVjdGFibGVzLlxuICAgKiBAc3VtbWFyeSBSZXNldHMgdGhlIHJlZ2lzdHJ5IHRvIGEgY2xlYW4gc3RhdGUgYnkgY3JlYXRpbmcgYSBuZXcgZW1wdHkgcmVnaXN0cnkgaW5zdGFuY2UuXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqL1xuICBzdGF0aWMgcmVzZXQoKTogdm9pZCB7XG4gICAgSW5qZWN0YWJsZXMuc2V0UmVnaXN0cnkobmV3IEluamVjdGFibGVSZWdpc3RyeUltcCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlcyBzcGVjaWZpYyBpbmplY3RhYmxlcyBmcm9tIHRoZSByZWdpc3RyeSBiYXNlZCBvbiBhIHBhdHRlcm4uXG4gICAqIEBzdW1tYXJ5IFNlbGVjdGl2ZWx5IHJlc2V0cyB0aGUgcmVnaXN0cnkgYnkgcmVtb3Zpbmcgb25seSB0aGUgaW5qZWN0YWJsZXMgd2hvc2UgbmFtZXMgbWF0Y2ggdGhlIHByb3ZpZGVkIHBhdHRlcm4uXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgUmVnRXhwfSBtYXRjaCBBIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiB0byBtYXRjaCBhZ2FpbnN0IGluamVjdGFibGUgbmFtZXNcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyBzZWxlY3RpdmVSZXNldChtYXRjaDogc3RyaW5nIHwgUmVnRXhwKTogdm9pZCB7XG4gICAgY29uc3QgcmVnZXhwID0gdHlwZW9mIG1hdGNoID09PSBcInN0cmluZ1wiID8gbmV3IFJlZ0V4cChtYXRjaCkgOiBtYXRjaDtcbiAgICAoSW5qZWN0YWJsZXMuYWN0aW5nSW5qZWN0YWJsZXNSZWdpc3RyeSBhcyBhbnkpW1wiY2FjaGVcIl0gPSBPYmplY3QuZW50cmllcyhcbiAgICAgIChJbmplY3RhYmxlcy5hY3RpbmdJbmplY3RhYmxlc1JlZ2lzdHJ5IGFzIGFueSlbXCJjYWNoZVwiXVxuICAgICkucmVkdWNlKChhY2N1bTogUmVjb3JkPHN0cmluZywgYW55PiwgW2tleSwgdmFsXSkgPT4ge1xuICAgICAgaWYgKCFrZXkubWF0Y2gocmVnZXhwKSkgYWNjdW1ba2V5XSA9IHZhbDtcbiAgICAgIHJldHVybiBhY2N1bTtcbiAgICB9LCB7fSk7XG4gIH1cbn1cbiJdfQ==
|
package/lib/esm/constants.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
+
import { InjectableConfig } from "./decorators";
|
|
1
2
|
/**
|
|
2
3
|
* @description Constants used for reflection metadata keys in the dependency injection system.
|
|
3
4
|
* @summary Injectables Reflection keys used to store and retrieve metadata about injectable classes and properties.
|
|
4
|
-
*
|
|
5
5
|
* @property {string} REFLECT Reflection injectables base key prefix for all metadata keys
|
|
6
6
|
* @property {string} INJECTABLE Reflection key suffix for marking a class as injectable
|
|
7
7
|
* @property {string} INJECT Reflection key suffix for marking a property for injection
|
|
8
|
-
*
|
|
9
8
|
* @const InjectablesKeys
|
|
10
9
|
* @memberOf module:injectable-decorators
|
|
11
10
|
*/
|
|
@@ -14,3 +13,17 @@ export declare const InjectablesKeys: {
|
|
|
14
13
|
INJECTABLE: string;
|
|
15
14
|
INJECT: string;
|
|
16
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* @description Default configuration applied by the @injectable decorator when none is provided.
|
|
18
|
+
* @summary Sets sensible defaults such as singleton lifecycle for newly registered injectables.
|
|
19
|
+
* @const DefaultInjectablesConfig
|
|
20
|
+
* @memberOf module:injectable-decorators
|
|
21
|
+
*/
|
|
22
|
+
export declare const DefaultInjectablesConfig: InjectableConfig;
|
|
23
|
+
/**
|
|
24
|
+
* @description Reflection metadata key for accessing TypeScript type information.
|
|
25
|
+
* @summary Holds the key for retrieving the design type from TypeScript's reflection metadata.
|
|
26
|
+
* @const TypeKey
|
|
27
|
+
* @memberOf module:injectable-decorators
|
|
28
|
+
*/
|
|
29
|
+
export declare const TypeKey = "design:type";
|
package/lib/esm/constants.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @description Constants used for reflection metadata keys in the dependency injection system.
|
|
3
3
|
* @summary Injectables Reflection keys used to store and retrieve metadata about injectable classes and properties.
|
|
4
|
-
*
|
|
5
4
|
* @property {string} REFLECT Reflection injectables base key prefix for all metadata keys
|
|
6
5
|
* @property {string} INJECTABLE Reflection key suffix for marking a class as injectable
|
|
7
6
|
* @property {string} INJECT Reflection key suffix for marking a property for injection
|
|
8
|
-
*
|
|
9
7
|
* @const InjectablesKeys
|
|
10
8
|
* @memberOf module:injectable-decorators
|
|
11
9
|
*/
|
|
@@ -14,4 +12,20 @@ export const InjectablesKeys = {
|
|
|
14
12
|
INJECTABLE: "injectable",
|
|
15
13
|
INJECT: "inject",
|
|
16
14
|
};
|
|
17
|
-
|
|
15
|
+
/**
|
|
16
|
+
* @description Default configuration applied by the @injectable decorator when none is provided.
|
|
17
|
+
* @summary Sets sensible defaults such as singleton lifecycle for newly registered injectables.
|
|
18
|
+
* @const DefaultInjectablesConfig
|
|
19
|
+
* @memberOf module:injectable-decorators
|
|
20
|
+
*/
|
|
21
|
+
export const DefaultInjectablesConfig = {
|
|
22
|
+
singleton: true,
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* @description Reflection metadata key for accessing TypeScript type information.
|
|
26
|
+
* @summary Holds the key for retrieving the design type from TypeScript's reflection metadata.
|
|
27
|
+
* @const TypeKey
|
|
28
|
+
* @memberOf module:injectable-decorators
|
|
29
|
+
*/
|
|
30
|
+
export const TypeKey = "design:type";
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixPQUFPLEVBQUUsWUFBWTtJQUNyQixVQUFVLEVBQUUsWUFBWTtJQUN4QixNQUFNLEVBQUUsUUFBUTtDQUNqQixDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBcUI7SUFDeEQsU0FBUyxFQUFFLElBQUk7Q0FDaEIsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGVDb25maWcgfSBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnN0YW50cyB1c2VkIGZvciByZWZsZWN0aW9uIG1ldGFkYXRhIGtleXMgaW4gdGhlIGRlcGVuZGVuY3kgaW5qZWN0aW9uIHN5c3RlbS5cbiAqIEBzdW1tYXJ5IEluamVjdGFibGVzIFJlZmxlY3Rpb24ga2V5cyB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBtZXRhZGF0YSBhYm91dCBpbmplY3RhYmxlIGNsYXNzZXMgYW5kIHByb3BlcnRpZXMuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVGTEVDVCBSZWZsZWN0aW9uIGluamVjdGFibGVzIGJhc2Uga2V5IHByZWZpeCBmb3IgYWxsIG1ldGFkYXRhIGtleXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBJTkpFQ1RBQkxFIFJlZmxlY3Rpb24ga2V5IHN1ZmZpeCBmb3IgbWFya2luZyBhIGNsYXNzIGFzIGluamVjdGFibGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBJTkpFQ1QgUmVmbGVjdGlvbiBrZXkgc3VmZml4IGZvciBtYXJraW5nIGEgcHJvcGVydHkgZm9yIGluamVjdGlvblxuICogQGNvbnN0IEluamVjdGFibGVzS2V5c1xuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IEluamVjdGFibGVzS2V5cyA9IHtcbiAgUkVGTEVDVDogXCJpbmplY3QuZGIuXCIsXG4gIElOSkVDVEFCTEU6IFwiaW5qZWN0YWJsZVwiLFxuICBJTkpFQ1Q6IFwiaW5qZWN0XCIsXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWZhdWx0IGNvbmZpZ3VyYXRpb24gYXBwbGllZCBieSB0aGUgQGluamVjdGFibGUgZGVjb3JhdG9yIHdoZW4gbm9uZSBpcyBwcm92aWRlZC5cbiAqIEBzdW1tYXJ5IFNldHMgc2Vuc2libGUgZGVmYXVsdHMgc3VjaCBhcyBzaW5nbGV0b24gbGlmZWN5Y2xlIGZvciBuZXdseSByZWdpc3RlcmVkIGluamVjdGFibGVzLlxuICogQGNvbnN0IERlZmF1bHRJbmplY3RhYmxlc0NvbmZpZ1xuICogQG1lbWJlck9mIG1vZHVsZTppbmplY3RhYmxlLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRJbmplY3RhYmxlc0NvbmZpZzogSW5qZWN0YWJsZUNvbmZpZyA9IHtcbiAgc2luZ2xldG9uOiB0cnVlLFxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVmbGVjdGlvbiBtZXRhZGF0YSBrZXkgZm9yIGFjY2Vzc2luZyBUeXBlU2NyaXB0IHR5cGUgaW5mb3JtYXRpb24uXG4gKiBAc3VtbWFyeSBIb2xkcyB0aGUga2V5IGZvciByZXRyaWV2aW5nIHRoZSBkZXNpZ24gdHlwZSBmcm9tIFR5cGVTY3JpcHQncyByZWZsZWN0aW9uIG1ldGFkYXRhLlxuICogQGNvbnN0IFR5cGVLZXlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW5qZWN0YWJsZS1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBUeXBlS2V5ID0gXCJkZXNpZ246dHlwZVwiO1xuIl19
|