@decaf-ts/decoration 0.0.6 → 0.0.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 +200 -108
- package/dist/decoration.cjs +312 -165
- package/dist/decoration.esm.cjs +310 -166
- package/lib/constants.cjs +23 -30
- package/lib/constants.d.ts +22 -29
- package/lib/decoration/Decoration.cjs +55 -57
- package/lib/decoration/Decoration.d.ts +59 -61
- package/lib/decoration/index.cjs +5 -1
- package/lib/decoration/index.d.ts +4 -0
- package/lib/decoration/types.cjs +1 -1
- package/lib/decoration/types.d.ts +34 -49
- package/lib/decorators.cjs +103 -25
- package/lib/decorators.d.ts +82 -25
- package/lib/esm/constants.d.ts +22 -29
- package/lib/esm/constants.js +23 -30
- package/lib/esm/decoration/Decoration.d.ts +59 -61
- package/lib/esm/decoration/Decoration.js +55 -57
- package/lib/esm/decoration/index.d.ts +4 -0
- package/lib/esm/decoration/index.js +5 -1
- package/lib/esm/decoration/types.d.ts +34 -49
- package/lib/esm/decoration/types.js +1 -1
- package/lib/esm/decorators.d.ts +82 -25
- package/lib/esm/decorators.js +101 -26
- package/lib/esm/index.d.ts +4 -5
- package/lib/esm/index.js +5 -6
- package/lib/esm/metadata/Metadata.d.ts +108 -51
- package/lib/esm/metadata/Metadata.js +130 -51
- package/lib/esm/metadata/index.d.ts +4 -0
- package/lib/esm/metadata/index.js +5 -1
- package/lib/esm/metadata/types.d.ts +22 -6
- package/lib/esm/metadata/types.js +1 -1
- package/lib/index.cjs +5 -6
- package/lib/index.d.ts +4 -5
- package/lib/metadata/Metadata.cjs +130 -51
- package/lib/metadata/Metadata.d.ts +108 -51
- package/lib/metadata/index.cjs +5 -1
- package/lib/metadata/index.d.ts +4 -0
- package/lib/metadata/types.cjs +1 -1
- package/lib/metadata/types.d.ts +22 -6
- package/package.json +10 -3
|
@@ -1,95 +1,80 @@
|
|
|
1
1
|
import { DecoratorData } from "./Decoration";
|
|
2
2
|
/**
|
|
3
|
-
* @description Interface for the final stage of the decoration builder pattern
|
|
4
|
-
* @summary Represents the build stage of the decoration builder, providing the ability to apply
|
|
5
|
-
* the configured decorator to a target. This is the final stage in the builder chain.
|
|
6
|
-
*
|
|
3
|
+
* @description Interface for the final stage of the decoration builder pattern.
|
|
4
|
+
* @summary Represents the build stage of the decoration builder, providing the ability to apply the configured decorator to a target. This is the final stage in the builder chain.
|
|
7
5
|
* @interface DecorationBuilderBuild
|
|
6
|
+
* @memberOf module:decoration
|
|
8
7
|
*/
|
|
9
8
|
export interface DecorationBuilderBuild {
|
|
10
9
|
/**
|
|
11
|
-
* @description Creates and returns the decorator function
|
|
12
|
-
* @summary
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* @
|
|
10
|
+
* @description Creates and returns the decorator function.
|
|
11
|
+
* @summary Finalises the builder process and returns a decorator function that can be applied to a class, property, or method.
|
|
12
|
+
* @param {any} target Target constructor or prototype receiving the decorator.
|
|
13
|
+
* @param {any} [propertyKey] Property key when decorating a class member.
|
|
14
|
+
* @param {TypedPropertyDescriptor<any>} [descriptor] Descriptor supplied for method or accessor decoration.
|
|
15
|
+
* @return {ClassDecorator|MethodDecorator|PropertyDecorator|ParameterDecorator} Decorator function that can be applied to a target.
|
|
16
16
|
*/
|
|
17
17
|
apply(): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
|
-
* @description Interface for the extension stage of the decoration builder pattern
|
|
21
|
-
* @summary Represents the extension stage of the decoration builder, providing the ability to add
|
|
22
|
-
* additional decorators to the existing configuration.
|
|
23
|
-
*
|
|
20
|
+
* @description Interface for the extension stage of the decoration builder pattern.
|
|
21
|
+
* @summary Represents the extension stage of the decoration builder, providing the ability to add additional decorators to the existing configuration.
|
|
24
22
|
* @interface DecorationBuilderEnd
|
|
25
23
|
* @memberOf module:decoration
|
|
26
24
|
*/
|
|
27
25
|
export interface DecorationBuilderEnd {
|
|
28
26
|
/**
|
|
29
|
-
* @description Adds additional decorators to the existing configuration
|
|
30
|
-
* @summary Extends the current decorator configuration with additional decorators.
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* @param {...(ClassDecorator|PropertyDecorator|MethodDecorator)} decorators - Additional decorators to add
|
|
34
|
-
* @returns {DecorationBuilderBuild} The build stage of the builder pattern
|
|
27
|
+
* @description Adds additional decorators to the existing configuration.
|
|
28
|
+
* @summary Extends the current decorator configuration with additional decorators, making it useful for augmenting previously defined behaviour.
|
|
29
|
+
* @param {...DecoratorData} decorators Additional decorators to add.
|
|
30
|
+
* @return {DecorationBuilderBuild} The build stage of the builder pattern.
|
|
35
31
|
*/
|
|
36
32
|
extend(...decorators: DecoratorData[]): DecorationBuilderBuild;
|
|
37
33
|
}
|
|
38
34
|
/**
|
|
39
|
-
* @description Interface for the middle stage of the decoration builder pattern
|
|
40
|
-
* @summary Represents the middle stage of the decoration builder, extending the end stage
|
|
41
|
-
* and providing the ability to define the primary decorators for the configuration.
|
|
42
|
-
*
|
|
35
|
+
* @description Interface for the middle stage of the decoration builder pattern.
|
|
36
|
+
* @summary Represents the middle stage of the decoration builder, extending the end stage and providing the ability to define the primary decorators for the configuration.
|
|
43
37
|
* @interface DecorationBuilderMid
|
|
44
38
|
* @memberOf module:decoration
|
|
45
39
|
*/
|
|
46
40
|
export interface DecorationBuilderMid extends DecorationBuilderEnd {
|
|
47
41
|
/**
|
|
48
|
-
* @description Defines the primary decorators for the configuration
|
|
49
|
-
* @summary Sets the main decorators for the current context
|
|
50
|
-
*
|
|
42
|
+
* @description Defines the primary decorators for the configuration.
|
|
43
|
+
* @summary Sets the main decorators for the current context after specifying the key with the `for` method.
|
|
44
|
+
* @param {...DecoratorData} decorators Decorators to define for the current key and flavour.
|
|
45
|
+
* @return {DecorationBuilderEnd} Interface representing the remaining builder stages (also implements DecorationBuilderBuild).
|
|
51
46
|
*/
|
|
52
47
|
define(...decorators: DecoratorData[]): DecorationBuilderEnd & DecorationBuilderBuild;
|
|
53
48
|
}
|
|
54
49
|
/**
|
|
55
|
-
* @description Interface for the starting stage of the decoration builder pattern
|
|
56
|
-
* @summary Represents the initial stage of the decoration builder, providing the entry point
|
|
57
|
-
* for the builder pattern by specifying the key for the decorator.
|
|
58
|
-
*
|
|
50
|
+
* @description Interface for the starting stage of the decoration builder pattern.
|
|
51
|
+
* @summary Represents the initial stage of the decoration builder, providing the entry point for the builder pattern by specifying the key for the decorator.
|
|
59
52
|
* @interface DecorationBuilderStart
|
|
60
53
|
* @memberOf module:decoration
|
|
61
54
|
*/
|
|
62
55
|
export interface DecorationBuilderStart {
|
|
63
56
|
/**
|
|
64
|
-
* @description Specifies the key for the decorator
|
|
65
|
-
* @summary Sets the identifier for the decorator, which is used to register and retrieve
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* @param {string} id - The identifier for the decorator
|
|
69
|
-
* @return {DecorationBuilderMid} The middle stage of the builder pattern
|
|
57
|
+
* @description Specifies the key for the decorator.
|
|
58
|
+
* @summary Sets the identifier for the decorator, which is used to register and retrieve the decorator in the decoration registry.
|
|
59
|
+
* @param {string} id Identifier for the decorator.
|
|
60
|
+
* @return {DecorationBuilderMid} The middle stage of the builder pattern.
|
|
70
61
|
*/
|
|
71
62
|
for(id: string): DecorationBuilderMid;
|
|
72
63
|
}
|
|
73
64
|
/**
|
|
74
|
-
* @description Comprehensive interface for the complete decoration builder pattern
|
|
75
|
-
* @summary
|
|
76
|
-
* providing a complete API for creating, configuring, and applying decorators.
|
|
77
|
-
* This interface is implemented by the Decoration class.
|
|
78
|
-
*
|
|
65
|
+
* @description Comprehensive interface for the complete decoration builder pattern.
|
|
66
|
+
* @summary Unified interface that combines all stages of the decoration builder pattern, providing a complete API for creating, configuring, and applying decorators. This interface is implemented by the Decoration class.
|
|
79
67
|
* @interface IDecorationBuilder
|
|
80
68
|
* @memberOf module:decoration
|
|
81
69
|
*/
|
|
82
70
|
export interface IDecorationBuilder extends DecorationBuilderStart, DecorationBuilderMid, DecorationBuilderEnd, DecorationBuilderBuild {
|
|
83
71
|
}
|
|
84
72
|
/**
|
|
85
|
-
* @description Type definition for a function that resolves the flavour for a target
|
|
86
|
-
* @summary Defines a function type that determines the appropriate flavour for a given target object.
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* @
|
|
90
|
-
*
|
|
91
|
-
* @param {object} target - The target object to resolve the flavour for
|
|
92
|
-
* @return {string} The resolved flavour identifier
|
|
73
|
+
* @description Type definition for a function that resolves the flavour for a target.
|
|
74
|
+
* @summary Defines a function type that determines the appropriate flavour for a given target object, enabling flavour-aware decorator selection.
|
|
75
|
+
* @param {object} target Target object to resolve the flavour for.
|
|
76
|
+
* @return {string} Resolved flavour identifier.
|
|
77
|
+
* @typeDef FlavourResolver
|
|
93
78
|
* @memberOf module:decoration
|
|
94
79
|
*/
|
|
95
80
|
export type FlavourResolver = (target: object) => string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVjb3JhdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVjb3JhdG9yRGF0YSB9IGZyb20gXCIuL0RlY29yYXRpb25cIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciB0aGUgZmluYWwgc3RhZ2Ugb2YgdGhlIGRlY29yYXRpb24gYnVpbGRlciBwYXR0ZXJuLlxuICogQHN1bW1hcnkgUmVwcmVzZW50cyB0aGUgYnVpbGQgc3RhZ2Ugb2YgdGhlIGRlY29yYXRpb24gYnVpbGRlciwgcHJvdmlkaW5nIHRoZSBhYmlsaXR5IHRvIGFwcGx5IHRoZSBjb25maWd1cmVkIGRlY29yYXRvciB0byBhIHRhcmdldC4gVGhpcyBpcyB0aGUgZmluYWwgc3RhZ2UgaW4gdGhlIGJ1aWxkZXIgY2hhaW4uXG4gKiBAaW50ZXJmYWNlIERlY29yYXRpb25CdWlsZGVyQnVpbGRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlY29yYXRpb25CdWlsZGVyQnVpbGQge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYW5kIHJldHVybnMgdGhlIGRlY29yYXRvciBmdW5jdGlvbi5cbiAgICogQHN1bW1hcnkgRmluYWxpc2VzIHRoZSBidWlsZGVyIHByb2Nlc3MgYW5kIHJldHVybnMgYSBkZWNvcmF0b3IgZnVuY3Rpb24gdGhhdCBjYW4gYmUgYXBwbGllZCB0byBhIGNsYXNzLCBwcm9wZXJ0eSwgb3IgbWV0aG9kLlxuICAgKiBAcGFyYW0ge2FueX0gdGFyZ2V0IFRhcmdldCBjb25zdHJ1Y3RvciBvciBwcm90b3R5cGUgcmVjZWl2aW5nIHRoZSBkZWNvcmF0b3IuXG4gICAqIEBwYXJhbSB7YW55fSBbcHJvcGVydHlLZXldIFByb3BlcnR5IGtleSB3aGVuIGRlY29yYXRpbmcgYSBjbGFzcyBtZW1iZXIuXG4gICAqIEBwYXJhbSB7VHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8YW55Pn0gW2Rlc2NyaXB0b3JdIERlc2NyaXB0b3Igc3VwcGxpZWQgZm9yIG1ldGhvZCBvciBhY2Nlc3NvciBkZWNvcmF0aW9uLlxuICAgKiBAcmV0dXJuIHtDbGFzc0RlY29yYXRvcnxNZXRob2REZWNvcmF0b3J8UHJvcGVydHlEZWNvcmF0b3J8UGFyYW1ldGVyRGVjb3JhdG9yfSBEZWNvcmF0b3IgZnVuY3Rpb24gdGhhdCBjYW4gYmUgYXBwbGllZCB0byBhIHRhcmdldC5cbiAgICovXG4gIGFwcGx5KCk6IChcbiAgICB0YXJnZXQ6IGFueSxcbiAgICBwcm9wZXJ0eUtleT86IGFueSxcbiAgICBkZXNjcmlwdG9yPzogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8YW55PlxuICApID0+IGFueTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciB0aGUgZXh0ZW5zaW9uIHN0YWdlIG9mIHRoZSBkZWNvcmF0aW9uIGJ1aWxkZXIgcGF0dGVybi5cbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgdGhlIGV4dGVuc2lvbiBzdGFnZSBvZiB0aGUgZGVjb3JhdGlvbiBidWlsZGVyLCBwcm92aWRpbmcgdGhlIGFiaWxpdHkgdG8gYWRkIGFkZGl0aW9uYWwgZGVjb3JhdG9ycyB0byB0aGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbi5cbiAqIEBpbnRlcmZhY2UgRGVjb3JhdGlvbkJ1aWxkZXJFbmRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlY29yYXRpb25CdWlsZGVyRW5kIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBZGRzIGFkZGl0aW9uYWwgZGVjb3JhdG9ycyB0byB0aGUgZXhpc3RpbmcgY29uZmlndXJhdGlvbi5cbiAgICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgY3VycmVudCBkZWNvcmF0b3IgY29uZmlndXJhdGlvbiB3aXRoIGFkZGl0aW9uYWwgZGVjb3JhdG9ycywgbWFraW5nIGl0IHVzZWZ1bCBmb3IgYXVnbWVudGluZyBwcmV2aW91c2x5IGRlZmluZWQgYmVoYXZpb3VyLlxuICAgKiBAcGFyYW0gey4uLkRlY29yYXRvckRhdGF9IGRlY29yYXRvcnMgQWRkaXRpb25hbCBkZWNvcmF0b3JzIHRvIGFkZC5cbiAgICogQHJldHVybiB7RGVjb3JhdGlvbkJ1aWxkZXJCdWlsZH0gVGhlIGJ1aWxkIHN0YWdlIG9mIHRoZSBidWlsZGVyIHBhdHRlcm4uXG4gICAqL1xuICBleHRlbmQoLi4uZGVjb3JhdG9yczogRGVjb3JhdG9yRGF0YVtdKTogRGVjb3JhdGlvbkJ1aWxkZXJCdWlsZDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciB0aGUgbWlkZGxlIHN0YWdlIG9mIHRoZSBkZWNvcmF0aW9uIGJ1aWxkZXIgcGF0dGVybi5cbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgdGhlIG1pZGRsZSBzdGFnZSBvZiB0aGUgZGVjb3JhdGlvbiBidWlsZGVyLCBleHRlbmRpbmcgdGhlIGVuZCBzdGFnZSBhbmQgcHJvdmlkaW5nIHRoZSBhYmlsaXR5IHRvIGRlZmluZSB0aGUgcHJpbWFyeSBkZWNvcmF0b3JzIGZvciB0aGUgY29uZmlndXJhdGlvbi5cbiAqIEBpbnRlcmZhY2UgRGVjb3JhdGlvbkJ1aWxkZXJNaWRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlY29yYXRpb25CdWlsZGVyTWlkIGV4dGVuZHMgRGVjb3JhdGlvbkJ1aWxkZXJFbmQge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlZmluZXMgdGhlIHByaW1hcnkgZGVjb3JhdG9ycyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBzdW1tYXJ5IFNldHMgdGhlIG1haW4gZGVjb3JhdG9ycyBmb3IgdGhlIGN1cnJlbnQgY29udGV4dCBhZnRlciBzcGVjaWZ5aW5nIHRoZSBrZXkgd2l0aCB0aGUgYGZvcmAgbWV0aG9kLlxuICAgKiBAcGFyYW0gey4uLkRlY29yYXRvckRhdGF9IGRlY29yYXRvcnMgRGVjb3JhdG9ycyB0byBkZWZpbmUgZm9yIHRoZSBjdXJyZW50IGtleSBhbmQgZmxhdm91ci5cbiAgICogQHJldHVybiB7RGVjb3JhdGlvbkJ1aWxkZXJFbmR9IEludGVyZmFjZSByZXByZXNlbnRpbmcgdGhlIHJlbWFpbmluZyBidWlsZGVyIHN0YWdlcyAoYWxzbyBpbXBsZW1lbnRzIERlY29yYXRpb25CdWlsZGVyQnVpbGQpLlxuICAgKi9cbiAgZGVmaW5lKFxuICAgIC4uLmRlY29yYXRvcnM6IERlY29yYXRvckRhdGFbXVxuICApOiBEZWNvcmF0aW9uQnVpbGRlckVuZCAmIERlY29yYXRpb25CdWlsZGVyQnVpbGQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgdGhlIHN0YXJ0aW5nIHN0YWdlIG9mIHRoZSBkZWNvcmF0aW9uIGJ1aWxkZXIgcGF0dGVybi5cbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgdGhlIGluaXRpYWwgc3RhZ2Ugb2YgdGhlIGRlY29yYXRpb24gYnVpbGRlciwgcHJvdmlkaW5nIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIGJ1aWxkZXIgcGF0dGVybiBieSBzcGVjaWZ5aW5nIHRoZSBrZXkgZm9yIHRoZSBkZWNvcmF0b3IuXG4gKiBAaW50ZXJmYWNlIERlY29yYXRpb25CdWlsZGVyU3RhcnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlY29yYXRpb25CdWlsZGVyU3RhcnQge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFNwZWNpZmllcyB0aGUga2V5IGZvciB0aGUgZGVjb3JhdG9yLlxuICAgKiBAc3VtbWFyeSBTZXRzIHRoZSBpZGVudGlmaWVyIGZvciB0aGUgZGVjb3JhdG9yLCB3aGljaCBpcyB1c2VkIHRvIHJlZ2lzdGVyIGFuZCByZXRyaWV2ZSB0aGUgZGVjb3JhdG9yIGluIHRoZSBkZWNvcmF0aW9uIHJlZ2lzdHJ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgSWRlbnRpZmllciBmb3IgdGhlIGRlY29yYXRvci5cbiAgICogQHJldHVybiB7RGVjb3JhdGlvbkJ1aWxkZXJNaWR9IFRoZSBtaWRkbGUgc3RhZ2Ugb2YgdGhlIGJ1aWxkZXIgcGF0dGVybi5cbiAgICovXG4gIGZvcihpZDogc3RyaW5nKTogRGVjb3JhdGlvbkJ1aWxkZXJNaWQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXByZWhlbnNpdmUgaW50ZXJmYWNlIGZvciB0aGUgY29tcGxldGUgZGVjb3JhdGlvbiBidWlsZGVyIHBhdHRlcm4uXG4gKiBAc3VtbWFyeSBVbmlmaWVkIGludGVyZmFjZSB0aGF0IGNvbWJpbmVzIGFsbCBzdGFnZXMgb2YgdGhlIGRlY29yYXRpb24gYnVpbGRlciBwYXR0ZXJuLCBwcm92aWRpbmcgYSBjb21wbGV0ZSBBUEkgZm9yIGNyZWF0aW5nLCBjb25maWd1cmluZywgYW5kIGFwcGx5aW5nIGRlY29yYXRvcnMuIFRoaXMgaW50ZXJmYWNlIGlzIGltcGxlbWVudGVkIGJ5IHRoZSBEZWNvcmF0aW9uIGNsYXNzLlxuICogQGludGVyZmFjZSBJRGVjb3JhdGlvbkJ1aWxkZXJcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIElEZWNvcmF0aW9uQnVpbGRlclxuICBleHRlbmRzIERlY29yYXRpb25CdWlsZGVyU3RhcnQsXG4gICAgRGVjb3JhdGlvbkJ1aWxkZXJNaWQsXG4gICAgRGVjb3JhdGlvbkJ1aWxkZXJFbmQsXG4gICAgRGVjb3JhdGlvbkJ1aWxkZXJCdWlsZCB7fVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0aGUgZmxhdm91ciBmb3IgYSB0YXJnZXQuXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgZnVuY3Rpb24gdHlwZSB0aGF0IGRldGVybWluZXMgdGhlIGFwcHJvcHJpYXRlIGZsYXZvdXIgZm9yIGEgZ2l2ZW4gdGFyZ2V0IG9iamVjdCwgZW5hYmxpbmcgZmxhdm91ci1hd2FyZSBkZWNvcmF0b3Igc2VsZWN0aW9uLlxuICogQHBhcmFtIHtvYmplY3R9IHRhcmdldCBUYXJnZXQgb2JqZWN0IHRvIHJlc29sdmUgdGhlIGZsYXZvdXIgZm9yLlxuICogQHJldHVybiB7c3RyaW5nfSBSZXNvbHZlZCBmbGF2b3VyIGlkZW50aWZpZXIuXG4gKiBAdHlwZURlZiBGbGF2b3VyUmVzb2x2ZXJcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdGlvblxuICovXG5leHBvcnQgdHlwZSBGbGF2b3VyUmVzb2x2ZXIgPSAodGFyZ2V0OiBvYmplY3QpID0+IHN0cmluZztcbiJdfQ==
|
package/lib/esm/decorators.d.ts
CHANGED
|
@@ -1,27 +1,74 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @description Assigns arbitrary metadata to a target using a string key
|
|
3
|
-
* @summary Decorator factory that stores a key/value pair in the central
|
|
4
|
-
* @param {string} key
|
|
5
|
-
* @param {
|
|
6
|
-
* @return
|
|
2
|
+
* @description Assigns arbitrary metadata to a target using a string key.
|
|
3
|
+
* @summary Decorator factory that stores a key/value pair in the central metadata store for the provided class or member.
|
|
4
|
+
* @param {string} key Metadata key to associate with the target.
|
|
5
|
+
* @param {any} value Metadata value to store under the given key.
|
|
6
|
+
* @return {ClassDecorator|MethodDecorator|PropertyDecorator|ParameterDecorator} Decorator that writes the metadata when applied.
|
|
7
7
|
* @function metadata
|
|
8
8
|
* @category Decorators
|
|
9
9
|
*/
|
|
10
|
-
export declare function metadata(key: string, value: any): (model: any, prop?: any, descriptor?: PropertyDescriptor) => void;
|
|
10
|
+
export declare function metadata(key: string, value: any): (model: any, prop?: any, descriptor?: PropertyDescriptor | number) => void;
|
|
11
11
|
/**
|
|
12
|
-
* @description Captures and stores a property's design type
|
|
13
|
-
* @summary Decorator factory that reads the reflected design:type for a property and registers it in the
|
|
14
|
-
* @return
|
|
12
|
+
* @description Captures and stores a property's design type.
|
|
13
|
+
* @summary Decorator factory that reads the reflected `design:type` for a property and registers it in the metadata store under the properties map.
|
|
14
|
+
* @return {PropertyDecorator} Decorator that records the property's type metadata when applied.
|
|
15
15
|
* @function prop
|
|
16
16
|
* @category Property Decorators
|
|
17
17
|
*/
|
|
18
18
|
export declare function prop(): (model: object, prop: any) => void;
|
|
19
|
-
export declare function method(): (obj: any, prop: any, descriptor: any) => void;
|
|
20
19
|
/**
|
|
21
|
-
* @description
|
|
22
|
-
* @summary
|
|
23
|
-
* @
|
|
24
|
-
* @
|
|
20
|
+
* @description Captures a single parameter type for the decorated method.
|
|
21
|
+
* @summary Decorator factory that ensures the method metadata is initialised and stores the reflected parameter constructor at the provided index.
|
|
22
|
+
* @return {ParameterDecorator} Decorator that records the parameter type when applied.
|
|
23
|
+
* @function param
|
|
24
|
+
* @category Parameter Decorators
|
|
25
|
+
* @mermaid
|
|
26
|
+
* sequenceDiagram
|
|
27
|
+
* participant U as User Code
|
|
28
|
+
* participant P as param()
|
|
29
|
+
* participant M as Metadata
|
|
30
|
+
* U->>P: param()(target, key, index)
|
|
31
|
+
* P->>U: method()(target, key, descriptor)
|
|
32
|
+
* P->>M: params(constructor, key)
|
|
33
|
+
* M-->>P: parameter constructors[]
|
|
34
|
+
* P->>M: set(methods.key.index, constructor)
|
|
35
|
+
* P-->>U: parameter recorded
|
|
36
|
+
*/
|
|
37
|
+
export declare function param(): (model: object, prop: string | symbol | undefined, index: number) => void;
|
|
38
|
+
/**
|
|
39
|
+
* @description Extends a parameter decorator with additional metadata.
|
|
40
|
+
* @summary Applies the default `param()` decorator and augments the stored metadata with an arbitrary key/value pair.
|
|
41
|
+
* @param {string} key Metadata key to associate with the parameter.
|
|
42
|
+
* @param {any} value Metadata value persisted under the given key.
|
|
43
|
+
* @return {ParameterDecorator} Decorator that records both the parameter design type and additional metadata.
|
|
44
|
+
* @function paramMetadata
|
|
45
|
+
* @category Parameter Decorators
|
|
46
|
+
*/
|
|
47
|
+
export declare function paramMetadata(key: string, value: any): (target: any, prop: any, index: number) => void;
|
|
48
|
+
/**
|
|
49
|
+
* @description Records method design-time metadata.
|
|
50
|
+
* @summary Decorator factory that captures a method's reflected parameter and return types, storing them under the appropriate metadata keys so they can be inspected at runtime.
|
|
51
|
+
* @return {MethodDecorator} Decorator that persists the method's signature information into the metadata store when applied.
|
|
52
|
+
* @function method
|
|
53
|
+
* @mermaid
|
|
54
|
+
* sequenceDiagram
|
|
55
|
+
* participant U as User Code
|
|
56
|
+
* participant F as method()
|
|
57
|
+
* participant M as Metadata
|
|
58
|
+
* U->>F: method()(target, key, descriptor)
|
|
59
|
+
* F->>U: Reflect.getOwnMetadata(design:paramtypes)
|
|
60
|
+
* F->>U: Reflect.getOwnMetadata(design:returntype)
|
|
61
|
+
* F->>M: set(methods.key.design:paramtypes, params)
|
|
62
|
+
* F->>M: set(methods.key.design:returntype, returnType)
|
|
63
|
+
* F-->>U: decorated function
|
|
64
|
+
* @category Method Decorators
|
|
65
|
+
*/
|
|
66
|
+
export declare function method(): (obj: any, prop?: any, descriptor?: any) => void;
|
|
67
|
+
/**
|
|
68
|
+
* @description Decorator factory that applies multiple decorators to a single target.
|
|
69
|
+
* @summary Creates a composite decorator that applies multiple decorators in sequence, correctly handling class, method, property, and parameter decorators.
|
|
70
|
+
* @param {Array<ClassDecorator|MethodDecorator|PropertyDecorator|ParameterDecorator>} decorators Collection of decorators to apply.
|
|
71
|
+
* @return {ClassDecorator|MethodDecorator|PropertyDecorator|ParameterDecorator} Decorator function that applies all provided decorators to the target.
|
|
25
72
|
* @function apply
|
|
26
73
|
* @mermaid
|
|
27
74
|
* sequenceDiagram
|
|
@@ -36,22 +83,32 @@ export declare function method(): (obj: any, prop: any, descriptor: any) => void
|
|
|
36
83
|
* end
|
|
37
84
|
* @category Decorators
|
|
38
85
|
*/
|
|
39
|
-
export declare function apply(...decorators: Array<ClassDecorator | MethodDecorator | PropertyDecorator>): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|
|
86
|
+
export declare function apply(...decorators: Array<ClassDecorator | MethodDecorator | PropertyDecorator | ParameterDecorator>): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor | number) => void;
|
|
40
87
|
/**
|
|
41
|
-
* @description Creates a property metadata decorator
|
|
42
|
-
* @summary Convenience factory that combines metadata(key, value) and prop() to both set an arbitrary metadata key and record the property's design type.
|
|
43
|
-
* @param {string} key
|
|
44
|
-
* @param {
|
|
45
|
-
* @return
|
|
88
|
+
* @description Creates a property metadata decorator.
|
|
89
|
+
* @summary Convenience factory that combines `metadata(key, value)` and `prop()` to both set an arbitrary metadata key and record the property's design type.
|
|
90
|
+
* @param {string} key Metadata key to set for the property.
|
|
91
|
+
* @param {any} value Metadata value to associate with the key.
|
|
92
|
+
* @return {PropertyDecorator} Decorator that sets the metadata and captures the property's type.
|
|
46
93
|
* @function propMetadata
|
|
47
94
|
* @category Property Decorators
|
|
48
95
|
*/
|
|
49
|
-
export declare function propMetadata(key: string, value: any): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|
|
96
|
+
export declare function propMetadata(key: string, value: any): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor | number) => void;
|
|
97
|
+
/**
|
|
98
|
+
* @description Creates a method metadata decorator.
|
|
99
|
+
* @summary Convenience factory that combines `metadata(key, value)` and `method()` to both set an arbitrary metadata key and record the method's design return and param types.
|
|
100
|
+
* @param {string} key Metadata key to set for the property.
|
|
101
|
+
* @param {any} value Metadata value to associate with the key.
|
|
102
|
+
* @return {PropertyDecorator} Decorator that sets the metadata and captures the property's type.
|
|
103
|
+
* @function methodMetadata
|
|
104
|
+
* @category Method Decorators
|
|
105
|
+
*/
|
|
106
|
+
export declare function methodMetadata(key: string, value: any): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor | number) => void;
|
|
50
107
|
/**
|
|
51
|
-
* @description Attaches a human-readable description to a class or member
|
|
52
|
-
* @summary Decorator factory that stores a textual description in the
|
|
53
|
-
* @param {string} desc
|
|
54
|
-
* @return
|
|
108
|
+
* @description Attaches a human-readable description to a class or member.
|
|
109
|
+
* @summary Decorator factory that stores a textual description in the metadata store under the appropriate description key for a class or its property.
|
|
110
|
+
* @param {string} desc Descriptive text to associate with the class or property.
|
|
111
|
+
* @return {ClassDecorator|MethodDecorator|PropertyDecorator} Decorator that records the description when applied.
|
|
55
112
|
* @function description
|
|
56
113
|
* @category Decorators
|
|
57
114
|
*/
|
package/lib/esm/decorators.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Metadata } from "./metadata/Metadata.js";
|
|
2
|
-
import { DecorationKeys
|
|
2
|
+
import { DecorationKeys } from "./constants.js";
|
|
3
3
|
/**
|
|
4
|
-
* @description Assigns arbitrary metadata to a target using a string key
|
|
5
|
-
* @summary Decorator factory that stores a key/value pair in the central
|
|
6
|
-
* @param {string} key
|
|
7
|
-
* @param {
|
|
8
|
-
* @return
|
|
4
|
+
* @description Assigns arbitrary metadata to a target using a string key.
|
|
5
|
+
* @summary Decorator factory that stores a key/value pair in the central metadata store for the provided class or member.
|
|
6
|
+
* @param {string} key Metadata key to associate with the target.
|
|
7
|
+
* @param {any} value Metadata value to store under the given key.
|
|
8
|
+
* @return {ClassDecorator|MethodDecorator|PropertyDecorator|ParameterDecorator} Decorator that writes the metadata when applied.
|
|
9
9
|
* @function metadata
|
|
10
10
|
* @category Decorators
|
|
11
11
|
*/
|
|
@@ -17,30 +17,93 @@ export function metadata(key, value) {
|
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
|
-
* @description Captures and stores a property's design type
|
|
21
|
-
* @summary Decorator factory that reads the reflected design:type for a property and registers it in the
|
|
22
|
-
* @return
|
|
20
|
+
* @description Captures and stores a property's design type.
|
|
21
|
+
* @summary Decorator factory that reads the reflected `design:type` for a property and registers it in the metadata store under the properties map.
|
|
22
|
+
* @return {PropertyDecorator} Decorator that records the property's type metadata when applied.
|
|
23
23
|
* @function prop
|
|
24
24
|
* @category Property Decorators
|
|
25
25
|
*/
|
|
26
26
|
export function prop() {
|
|
27
27
|
return function prop(model, prop) {
|
|
28
28
|
const designType = Reflect.getOwnMetadata(DecorationKeys.DESIGN_TYPE, model, prop);
|
|
29
|
-
return metadata(
|
|
29
|
+
return metadata(Metadata.key(DecorationKeys.PROPERTIES, prop), designType)(model, prop);
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* @description Captures a single parameter type for the decorated method.
|
|
34
|
+
* @summary Decorator factory that ensures the method metadata is initialised and stores the reflected parameter constructor at the provided index.
|
|
35
|
+
* @return {ParameterDecorator} Decorator that records the parameter type when applied.
|
|
36
|
+
* @function param
|
|
37
|
+
* @category Parameter Decorators
|
|
38
|
+
* @mermaid
|
|
39
|
+
* sequenceDiagram
|
|
40
|
+
* participant U as User Code
|
|
41
|
+
* participant P as param()
|
|
42
|
+
* participant M as Metadata
|
|
43
|
+
* U->>P: param()(target, key, index)
|
|
44
|
+
* P->>U: method()(target, key, descriptor)
|
|
45
|
+
* P->>M: params(constructor, key)
|
|
46
|
+
* M-->>P: parameter constructors[]
|
|
47
|
+
* P->>M: set(methods.key.index, constructor)
|
|
48
|
+
* P-->>U: parameter recorded
|
|
49
|
+
*/
|
|
50
|
+
export function param() {
|
|
51
|
+
return function param(model, prop, index) {
|
|
52
|
+
if (!prop)
|
|
53
|
+
throw new Error(`The @param decorator can only be applied to methods`);
|
|
54
|
+
method()(model, prop, Object.getOwnPropertyDescriptor(model, prop));
|
|
55
|
+
const paramTpes = Metadata.params(model.constructor, prop);
|
|
56
|
+
if (!paramTpes)
|
|
57
|
+
throw new Error(`Missing parameter types for ${String(prop)}`);
|
|
58
|
+
if (index >= paramTpes.length)
|
|
59
|
+
throw new Error(`Parameter index ${index} out of range for ${String(prop)}`);
|
|
60
|
+
metadata(Metadata.key(DecorationKeys.METHODS, prop, index.toString()), paramTpes[index])(model, prop);
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* @description Extends a parameter decorator with additional metadata.
|
|
65
|
+
* @summary Applies the default `param()` decorator and augments the stored metadata with an arbitrary key/value pair.
|
|
66
|
+
* @param {string} key Metadata key to associate with the parameter.
|
|
67
|
+
* @param {any} value Metadata value persisted under the given key.
|
|
68
|
+
* @return {ParameterDecorator} Decorator that records both the parameter design type and additional metadata.
|
|
69
|
+
* @function paramMetadata
|
|
70
|
+
* @category Parameter Decorators
|
|
71
|
+
*/
|
|
72
|
+
export function paramMetadata(key, value) {
|
|
73
|
+
return function paramMetadata(target, prop, index) {
|
|
74
|
+
return apply(param(), metadata(Metadata.key(DecorationKeys.METHODS, prop, key), value))(target, prop, index);
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* @description Records method design-time metadata.
|
|
79
|
+
* @summary Decorator factory that captures a method's reflected parameter and return types, storing them under the appropriate metadata keys so they can be inspected at runtime.
|
|
80
|
+
* @return {MethodDecorator} Decorator that persists the method's signature information into the metadata store when applied.
|
|
81
|
+
* @function method
|
|
82
|
+
* @mermaid
|
|
83
|
+
* sequenceDiagram
|
|
84
|
+
* participant U as User Code
|
|
85
|
+
* participant F as method()
|
|
86
|
+
* participant M as Metadata
|
|
87
|
+
* U->>F: method()(target, key, descriptor)
|
|
88
|
+
* F->>U: Reflect.getOwnMetadata(design:paramtypes)
|
|
89
|
+
* F->>U: Reflect.getOwnMetadata(design:returntype)
|
|
90
|
+
* F->>M: set(methods.key.design:paramtypes, params)
|
|
91
|
+
* F->>M: set(methods.key.design:returntype, returnType)
|
|
92
|
+
* F-->>U: decorated function
|
|
93
|
+
* @category Method Decorators
|
|
94
|
+
*/
|
|
32
95
|
export function method() {
|
|
33
96
|
return function method(obj, prop, descriptor) {
|
|
34
97
|
const designParams = Reflect.getOwnMetadata(DecorationKeys.DESIGN_PARAMS, obj, prop);
|
|
35
98
|
const designReturn = Reflect.getOwnMetadata(DecorationKeys.DESIGN_RETURN, obj, prop);
|
|
36
|
-
return apply(metadata(
|
|
99
|
+
return apply(metadata(Metadata.key(DecorationKeys.METHODS, prop, DecorationKeys.DESIGN_PARAMS), designParams), metadata(Metadata.key(DecorationKeys.METHODS, prop, DecorationKeys.DESIGN_RETURN), designReturn))(obj, prop, descriptor);
|
|
37
100
|
};
|
|
38
101
|
}
|
|
39
102
|
/**
|
|
40
|
-
* @description Decorator factory that applies multiple decorators to a single target
|
|
41
|
-
* @summary Creates a composite decorator that applies multiple decorators in sequence, correctly handling class, method, and
|
|
42
|
-
* @param {Array<ClassDecorator
|
|
43
|
-
* @return {
|
|
103
|
+
* @description Decorator factory that applies multiple decorators to a single target.
|
|
104
|
+
* @summary Creates a composite decorator that applies multiple decorators in sequence, correctly handling class, method, property, and parameter decorators.
|
|
105
|
+
* @param {Array<ClassDecorator|MethodDecorator|PropertyDecorator|ParameterDecorator>} decorators Collection of decorators to apply.
|
|
106
|
+
* @return {ClassDecorator|MethodDecorator|PropertyDecorator|ParameterDecorator} Decorator function that applies all provided decorators to the target.
|
|
44
107
|
* @function apply
|
|
45
108
|
* @mermaid
|
|
46
109
|
* sequenceDiagram
|
|
@@ -67,11 +130,11 @@ export function apply(...decorators) {
|
|
|
67
130
|
};
|
|
68
131
|
}
|
|
69
132
|
/**
|
|
70
|
-
* @description Creates a property metadata decorator
|
|
71
|
-
* @summary Convenience factory that combines metadata(key, value) and prop() to both set an arbitrary metadata key and record the property's design type.
|
|
72
|
-
* @param {string} key
|
|
73
|
-
* @param {
|
|
74
|
-
* @return
|
|
133
|
+
* @description Creates a property metadata decorator.
|
|
134
|
+
* @summary Convenience factory that combines `metadata(key, value)` and `prop()` to both set an arbitrary metadata key and record the property's design type.
|
|
135
|
+
* @param {string} key Metadata key to set for the property.
|
|
136
|
+
* @param {any} value Metadata value to associate with the key.
|
|
137
|
+
* @return {PropertyDecorator} Decorator that sets the metadata and captures the property's type.
|
|
75
138
|
* @function propMetadata
|
|
76
139
|
* @category Property Decorators
|
|
77
140
|
*/
|
|
@@ -79,10 +142,22 @@ export function propMetadata(key, value) {
|
|
|
79
142
|
return apply(metadata(key, value), prop());
|
|
80
143
|
}
|
|
81
144
|
/**
|
|
82
|
-
* @description
|
|
83
|
-
* @summary
|
|
84
|
-
* @param {string}
|
|
85
|
-
* @
|
|
145
|
+
* @description Creates a method metadata decorator.
|
|
146
|
+
* @summary Convenience factory that combines `metadata(key, value)` and `method()` to both set an arbitrary metadata key and record the method's design return and param types.
|
|
147
|
+
* @param {string} key Metadata key to set for the property.
|
|
148
|
+
* @param {any} value Metadata value to associate with the key.
|
|
149
|
+
* @return {PropertyDecorator} Decorator that sets the metadata and captures the property's type.
|
|
150
|
+
* @function methodMetadata
|
|
151
|
+
* @category Method Decorators
|
|
152
|
+
*/
|
|
153
|
+
export function methodMetadata(key, value) {
|
|
154
|
+
return apply(metadata(key, value), method());
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* @description Attaches a human-readable description to a class or member.
|
|
158
|
+
* @summary Decorator factory that stores a textual description in the metadata store under the appropriate description key for a class or its property.
|
|
159
|
+
* @param {string} desc Descriptive text to associate with the class or property.
|
|
160
|
+
* @return {ClassDecorator|MethodDecorator|PropertyDecorator} Decorator that records the description when applied.
|
|
86
161
|
* @function description
|
|
87
162
|
* @category Decorators
|
|
88
163
|
*/
|
|
@@ -91,7 +166,7 @@ export function description(desc) {
|
|
|
91
166
|
return metadata([
|
|
92
167
|
DecorationKeys.DESCRIPTION,
|
|
93
168
|
prop ? prop.toString() : DecorationKeys.CLASS,
|
|
94
|
-
].join(
|
|
169
|
+
].join(Metadata.splitter), desc)(original, prop, descriptor);
|
|
95
170
|
};
|
|
96
171
|
}
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsK0JBQTRCO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsdUJBQW9CO0FBRWhFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFXLEVBQUUsS0FBVTtJQUM5QyxPQUFPLFNBQVMsUUFBUSxDQUN0QixLQUFVLEVBRVYsSUFBVTtJQUNWLDZEQUE2RDtJQUM3RCxVQUErQjtRQUUvQixRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLElBQUk7SUFDbEIsT0FBTyxTQUFTLElBQUksQ0FBQyxLQUFhLEVBQUUsSUFBUztRQUMzQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUN2QyxjQUFjLENBQUMsV0FBVyxFQUMxQixLQUFLLEVBQ0wsSUFBSSxDQUNMLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQ2pFLEtBQUssRUFDTCxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTTtJQUNwQixPQUFPLFNBQVMsTUFBTSxDQUFDLEdBQVEsRUFBRSxJQUFTLEVBQUUsVUFBZTtRQUN6RCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsY0FBYyxDQUN6QyxjQUFjLENBQUMsYUFBYSxFQUM1QixHQUFHLEVBQ0gsSUFBSSxDQUNMLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsY0FBYyxDQUN6QyxjQUFjLENBQUMsYUFBYSxFQUM1QixHQUFHLEVBQ0gsSUFBSSxDQUNMLENBQUM7UUFDRixPQUFPLEtBQUssQ0FDVixRQUFRLENBQ04sR0FBRyxjQUFjLENBQUMsT0FBTyxJQUFJLElBQUksSUFBSSxjQUFjLENBQUMsYUFBYSxFQUFFLEVBQ25FLFlBQVksQ0FDYixFQUNELFFBQVEsQ0FDTixHQUFHLGNBQWMsQ0FBQyxPQUFPLElBQUksSUFBSSxJQUFJLGNBQWMsQ0FBQyxhQUFhLEVBQUUsRUFDbkUsWUFBWSxDQUNiLENBQ0YsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FDbkIsR0FBRyxVQUF1RTtJQUUxRSxPQUFPLENBQ0wsTUFBYyxFQUNkLFdBQXVDLEVBQ3ZDLFVBQStCLEVBQy9CLEVBQUU7UUFDRixLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ25DLElBQUksTUFBTSxZQUFZLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUM3QyxTQUE0QixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0QyxTQUFTO1lBQ1gsQ0FBQztZQUNBLFNBQWlELENBQ2hELE1BQU0sRUFDTixXQUE4QixFQUM5QixVQUE4QyxDQUMvQyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBVyxFQUFFLEtBQVU7SUFDbEQsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUFZO0lBQ3RDLE9BQU8sU0FBUyxXQUFXLENBQUMsUUFBYSxFQUFFLElBQVUsRUFBRSxVQUFnQjtRQUNyRSxPQUFPLFFBQVEsQ0FDYjtZQUNFLGNBQWMsQ0FBQyxXQUFXO1lBQzFCLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSztTQUM5QyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUN6QixJQUFJLENBQ0wsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gXCIuL21ldGFkYXRhL01ldGFkYXRhXCI7XG5pbXBvcnQgeyBEZWNvcmF0aW9uS2V5cywgT2JqZWN0S2V5U3BsaXR0ZXIgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQXNzaWducyBhcmJpdHJhcnkgbWV0YWRhdGEgdG8gYSB0YXJnZXQgdXNpbmcgYSBzdHJpbmcga2V5XG4gKiBAc3VtbWFyeSBEZWNvcmF0b3IgZmFjdG9yeSB0aGF0IHN0b3JlcyBhIGtleS92YWx1ZSBwYWlyIGluIHRoZSBjZW50cmFsIE1ldGFkYXRhIHN0b3JlIGZvciB0aGUgcHJvdmlkZWQgY2xhc3Mgb3IgbWVtYmVyLlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgbWV0YWRhdGEga2V5IHRvIGFzc29jaWF0ZSB3aXRoIHRoZSB0YXJnZXRcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIG1ldGFkYXRhIHZhbHVlIHRvIHN0b3JlIHVuZGVyIHRoZSBnaXZlbiBrZXlcbiAqIEByZXR1cm4gQSBkZWNvcmF0b3IgdGhhdCB3cml0ZXMgdGhlIG1ldGFkYXRhIHdoZW4gYXBwbGllZFxuICogQGZ1bmN0aW9uIG1ldGFkYXRhXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWV0YWRhdGEoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIG1ldGFkYXRhKFxuICAgIG1vZGVsOiBhbnksXG5cbiAgICBwcm9wPzogYW55LFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBkZXNjcmlwdG9yPzogUHJvcGVydHlEZXNjcmlwdG9yXG4gICkge1xuICAgIE1ldGFkYXRhLnNldChwcm9wID8gbW9kZWwuY29uc3RydWN0b3IgOiBtb2RlbCwga2V5LCB2YWx1ZSk7XG4gIH07XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENhcHR1cmVzIGFuZCBzdG9yZXMgYSBwcm9wZXJ0eSdzIGRlc2lnbiB0eXBlXG4gKiBAc3VtbWFyeSBEZWNvcmF0b3IgZmFjdG9yeSB0aGF0IHJlYWRzIHRoZSByZWZsZWN0ZWQgZGVzaWduOnR5cGUgZm9yIGEgcHJvcGVydHkgYW5kIHJlZ2lzdGVycyBpdCBpbiB0aGUgTWV0YWRhdGEgc3RvcmUgdW5kZXIgdGhlIHByb3BlcnRpZXMgbWFwLlxuICogQHJldHVybiBBIGRlY29yYXRvciB0aGF0IHJlY29yZHMgdGhlIHByb3BlcnR5J3MgdHlwZSBtZXRhZGF0YSB3aGVuIGFwcGxpZWRcbiAqIEBmdW5jdGlvbiBwcm9wXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvcCgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHByb3AobW9kZWw6IG9iamVjdCwgcHJvcDogYW55KSB7XG4gICAgY29uc3QgZGVzaWduVHlwZSA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXG4gICAgICBEZWNvcmF0aW9uS2V5cy5ERVNJR05fVFlQRSxcbiAgICAgIG1vZGVsLFxuICAgICAgcHJvcFxuICAgICk7XG4gICAgcmV0dXJuIG1ldGFkYXRhKGAke0RlY29yYXRpb25LZXlzLlBST1BFUlRJRVN9LiR7cHJvcH1gLCBkZXNpZ25UeXBlKShcbiAgICAgIG1vZGVsLFxuICAgICAgcHJvcFxuICAgICk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRob2QoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBtZXRob2Qob2JqOiBhbnksIHByb3A6IGFueSwgZGVzY3JpcHRvcjogYW55KSB7XG4gICAgY29uc3QgZGVzaWduUGFyYW1zID0gUmVmbGVjdC5nZXRPd25NZXRhZGF0YShcbiAgICAgIERlY29yYXRpb25LZXlzLkRFU0lHTl9QQVJBTVMsXG4gICAgICBvYmosXG4gICAgICBwcm9wXG4gICAgKTtcbiAgICBjb25zdCBkZXNpZ25SZXR1cm4gPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKFxuICAgICAgRGVjb3JhdGlvbktleXMuREVTSUdOX1JFVFVSTixcbiAgICAgIG9iaixcbiAgICAgIHByb3BcbiAgICApO1xuICAgIHJldHVybiBhcHBseShcbiAgICAgIG1ldGFkYXRhKFxuICAgICAgICBgJHtEZWNvcmF0aW9uS2V5cy5NRVRIT0RTfS4ke3Byb3B9LiR7RGVjb3JhdGlvbktleXMuREVTSUdOX1BBUkFNU31gLFxuICAgICAgICBkZXNpZ25QYXJhbXNcbiAgICAgICksXG4gICAgICBtZXRhZGF0YShcbiAgICAgICAgYCR7RGVjb3JhdGlvbktleXMuTUVUSE9EU30uJHtwcm9wfS4ke0RlY29yYXRpb25LZXlzLkRFU0lHTl9SRVRVUk59YCxcbiAgICAgICAgZGVzaWduUmV0dXJuXG4gICAgICApXG4gICAgKShvYmosIHByb3AsIGRlc2NyaXB0b3IpO1xuICB9O1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWNvcmF0b3IgZmFjdG9yeSB0aGF0IGFwcGxpZXMgbXVsdGlwbGUgZGVjb3JhdG9ycyB0byBhIHNpbmdsZSB0YXJnZXRcbiAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBjb21wb3NpdGUgZGVjb3JhdG9yIHRoYXQgYXBwbGllcyBtdWx0aXBsZSBkZWNvcmF0b3JzIGluIHNlcXVlbmNlLCBjb3JyZWN0bHkgaGFuZGxpbmcgY2xhc3MsIG1ldGhvZCwgYW5kIHByb3BlcnR5IGRlY29yYXRvcnMuXG4gKiBAcGFyYW0ge0FycmF5PENsYXNzRGVjb3JhdG9yIHwgTWV0aG9kRGVjb3JhdG9yIHwgUHJvcGVydHlEZWNvcmF0b3I+fSBkZWNvcmF0b3JzIC0gQXJyYXkgb2YgZGVjb3JhdG9ycyB0byBhcHBseVxuICogQHJldHVybiB7RnVuY3Rpb259IEEgZGVjb3JhdG9yIGZ1bmN0aW9uIHRoYXQgYXBwbGllcyBhbGwgcHJvdmlkZWQgZGVjb3JhdG9ycyB0byB0aGUgdGFyZ2V0XG4gKiBAZnVuY3Rpb24gYXBwbHlcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgVSBhcyBVc2VyIENvZGVcbiAqICAgcGFydGljaXBhbnQgQSBhcyBhcHBseSguLi5kZWNvcmF0b3JzKVxuICogICBwYXJ0aWNpcGFudCBEIGFzIERlY29yYXRvclxuICogICBVLT4+QTogZ2V0IGRlY29yYXRvciguLi5kZWNvcmF0b3JzKVxuICogICBBLT4+VTogcmV0dXJucyAodGFyZ2V0LCBrZXk/LCBkZXNjPykgPT4gdm9pZFxuICogICBVLT4+QTogaW52b2tlIG9uIHRhcmdldFxuICogICBsb29wIGZvciBlYWNoIGRlY29yYXRvclxuICogICAgIEEtPj5EOiBpbnZva2UgYXBwcm9wcmlhdGUgZGVjb3JhdG9yIHR5cGVcbiAqICAgZW5kXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHkoXG4gIC4uLmRlY29yYXRvcnM6IEFycmF5PENsYXNzRGVjb3JhdG9yIHwgTWV0aG9kRGVjb3JhdG9yIHwgUHJvcGVydHlEZWNvcmF0b3I+XG4pIHtcbiAgcmV0dXJuIChcbiAgICB0YXJnZXQ6IG9iamVjdCxcbiAgICBwcm9wZXJ0eUtleT86IHN0cmluZyB8IHN5bWJvbCB8IHVua25vd24sXG4gICAgZGVzY3JpcHRvcj86IFByb3BlcnR5RGVzY3JpcHRvclxuICApID0+IHtcbiAgICBmb3IgKGNvbnN0IGRlY29yYXRvciBvZiBkZWNvcmF0b3JzKSB7XG4gICAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgRnVuY3Rpb24gJiYgIWRlc2NyaXB0b3IpIHtcbiAgICAgICAgKGRlY29yYXRvciBhcyBDbGFzc0RlY29yYXRvcikodGFyZ2V0KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAoZGVjb3JhdG9yIGFzIE1ldGhvZERlY29yYXRvciB8IFByb3BlcnR5RGVjb3JhdG9yKShcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgICBwcm9wZXJ0eUtleSBhcyBzdHJpbmcgfCBzeW1ib2wsXG4gICAgICAgIGRlc2NyaXB0b3IgYXMgVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8dW5rbm93bj5cbiAgICAgICk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgcHJvcGVydHkgbWV0YWRhdGEgZGVjb3JhdG9yXG4gKiBAc3VtbWFyeSBDb252ZW5pZW5jZSBmYWN0b3J5IHRoYXQgY29tYmluZXMgbWV0YWRhdGEoa2V5LCB2YWx1ZSkgYW5kIHByb3AoKSB0byBib3RoIHNldCBhbiBhcmJpdHJhcnkgbWV0YWRhdGEga2V5IGFuZCByZWNvcmQgdGhlIHByb3BlcnR5J3MgZGVzaWduIHR5cGUuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBtZXRhZGF0YSBrZXkgdG8gc2V0IGZvciB0aGUgcHJvcGVydHlcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIG1ldGFkYXRhIHZhbHVlIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBrZXlcbiAqIEByZXR1cm4gQSBkZWNvcmF0b3IgdGhhdCBzZXRzIHRoZSBtZXRhZGF0YSBhbmQgY2FwdHVyZXMgdGhlIHByb3BlcnR5J3MgdHlwZVxuICogQGZ1bmN0aW9uIHByb3BNZXRhZGF0YVxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3BNZXRhZGF0YShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICByZXR1cm4gYXBwbHkobWV0YWRhdGEoa2V5LCB2YWx1ZSksIHByb3AoKSk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEF0dGFjaGVzIGEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gdG8gYSBjbGFzcyBvciBtZW1iZXJcbiAqIEBzdW1tYXJ5IERlY29yYXRvciBmYWN0b3J5IHRoYXQgc3RvcmVzIGEgdGV4dHVhbCBkZXNjcmlwdGlvbiBpbiB0aGUgTWV0YWRhdGEgc3RvcmUgdW5kZXIgdGhlIGFwcHJvcHJpYXRlIGRlc2NyaXB0aW9uIGtleSBmb3IgYSBjbGFzcyBvciBpdHMgcHJvcGVydHkuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVzYyBUaGUgZGVzY3JpcHRpdmUgdGV4dCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgY2xhc3Mgb3IgcHJvcGVydHlcbiAqIEByZXR1cm4gQSBkZWNvcmF0b3IgdGhhdCByZWNvcmRzIHRoZSBkZXNjcmlwdGlvbiB3aGVuIGFwcGxpZWRcbiAqIEBmdW5jdGlvbiBkZXNjcmlwdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaXB0aW9uKGRlc2M6IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gZGVzY3JpcHRpb24ob3JpZ2luYWw6IGFueSwgcHJvcD86IGFueSwgZGVzY3JpcHRvcj86IGFueSkge1xuICAgIHJldHVybiBtZXRhZGF0YShcbiAgICAgIFtcbiAgICAgICAgRGVjb3JhdGlvbktleXMuREVTQ1JJUFRJT04sXG4gICAgICAgIHByb3AgPyBwcm9wLnRvU3RyaW5nKCkgOiBEZWNvcmF0aW9uS2V5cy5DTEFTUyxcbiAgICAgIF0uam9pbihPYmplY3RLZXlTcGxpdHRlciksXG4gICAgICBkZXNjXG4gICAgKShvcmlnaW5hbCwgcHJvcCwgZGVzY3JpcHRvcik7XG4gIH07XG59XG4iXX0=
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsK0JBQTRCO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsdUJBQW9CO0FBRTdDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFXLEVBQUUsS0FBVTtJQUM5QyxPQUFPLFNBQVMsUUFBUSxDQUN0QixLQUFVLEVBRVYsSUFBVTtJQUNWLDZEQUE2RDtJQUM3RCxVQUF3QztRQUV4QyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLElBQUk7SUFDbEIsT0FBTyxTQUFTLElBQUksQ0FBQyxLQUFhLEVBQUUsSUFBUztRQUMzQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUN2QyxjQUFjLENBQUMsV0FBVyxFQUMxQixLQUFLLEVBQ0wsSUFBSSxDQUNMLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQ3hFLEtBQUssRUFDTCxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLFVBQVUsS0FBSztJQUNuQixPQUFPLFNBQVMsS0FBSyxDQUNuQixLQUFhLEVBQ2IsSUFBaUMsRUFDakMsS0FBYTtRQUViLElBQUksQ0FBQyxJQUFJO1lBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQWtCLEVBQUUsSUFBYyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFNBQVM7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLElBQUksS0FBSyxJQUFJLFNBQVMsQ0FBQyxNQUFNO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQ2IsbUJBQW1CLEtBQUsscUJBQXFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUM1RCxDQUFDO1FBQ0osUUFBUSxDQUNOLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFjLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQ3RFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FDakIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFXLEVBQUUsS0FBVTtJQUNuRCxPQUFPLFNBQVMsYUFBYSxDQUFDLE1BQVcsRUFBRSxJQUFTLEVBQUUsS0FBYTtRQUNqRSxPQUFPLEtBQUssQ0FDVixLQUFLLEVBQUUsRUFDUCxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FDakUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLFVBQVUsTUFBTTtJQUNwQixPQUFPLFNBQVMsTUFBTSxDQUFDLEdBQVEsRUFBRSxJQUFVLEVBQUUsVUFBZ0I7UUFDM0QsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FDekMsY0FBYyxDQUFDLGFBQWEsRUFDNUIsR0FBRyxFQUNILElBQUksQ0FDTCxDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FDekMsY0FBYyxDQUFDLGFBQWEsRUFDNUIsR0FBRyxFQUNILElBQUksQ0FDTCxDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQ1YsUUFBUSxDQUNOLFFBQVEsQ0FBQyxHQUFHLENBQ1YsY0FBYyxDQUFDLE9BQU8sRUFDdEIsSUFBSSxFQUNKLGNBQWMsQ0FBQyxhQUFhLENBQzdCLEVBQ0QsWUFBWSxDQUNiLEVBQ0QsUUFBUSxDQUNOLFFBQVEsQ0FBQyxHQUFHLENBQ1YsY0FBYyxDQUFDLE9BQU8sRUFDdEIsSUFBSSxFQUNKLGNBQWMsQ0FBQyxhQUFhLENBQzdCLEVBQ0QsWUFBWSxDQUNiLENBQ0YsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FDbkIsR0FBRyxVQUVGO0lBRUQsT0FBTyxDQUNMLE1BQWMsRUFDZCxXQUF1QyxFQUN2QyxVQUF3QyxFQUN4QyxFQUFFO1FBQ0YsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxJQUFJLE1BQU0sWUFBWSxRQUFRLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDN0MsU0FBNEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDdEMsU0FBUztZQUNYLENBQUM7WUFDQSxTQUFpRCxDQUNoRCxNQUFNLEVBQ04sV0FBOEIsRUFDOUIsVUFBOEMsQ0FDL0MsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQVcsRUFBRSxLQUFVO0lBQ2xELE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEdBQVcsRUFBRSxLQUFVO0lBQ3BELE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBWTtJQUN0QyxPQUFPLFNBQVMsV0FBVyxDQUFDLFFBQWEsRUFBRSxJQUFVLEVBQUUsVUFBZ0I7UUFDckUsT0FBTyxRQUFRLENBQ2I7WUFDRSxjQUFjLENBQUMsV0FBVztZQUMxQixJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUs7U0FDOUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUN6QixJQUFJLENBQ0wsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gXCIuL21ldGFkYXRhL01ldGFkYXRhXCI7XG5pbXBvcnQgeyBEZWNvcmF0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBc3NpZ25zIGFyYml0cmFyeSBtZXRhZGF0YSB0byBhIHRhcmdldCB1c2luZyBhIHN0cmluZyBrZXkuXG4gKiBAc3VtbWFyeSBEZWNvcmF0b3IgZmFjdG9yeSB0aGF0IHN0b3JlcyBhIGtleS92YWx1ZSBwYWlyIGluIHRoZSBjZW50cmFsIG1ldGFkYXRhIHN0b3JlIGZvciB0aGUgcHJvdmlkZWQgY2xhc3Mgb3IgbWVtYmVyLlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBNZXRhZGF0YSBrZXkgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHRhcmdldC5cbiAqIEBwYXJhbSB7YW55fSB2YWx1ZSBNZXRhZGF0YSB2YWx1ZSB0byBzdG9yZSB1bmRlciB0aGUgZ2l2ZW4ga2V5LlxuICogQHJldHVybiB7Q2xhc3NEZWNvcmF0b3J8TWV0aG9kRGVjb3JhdG9yfFByb3BlcnR5RGVjb3JhdG9yfFBhcmFtZXRlckRlY29yYXRvcn0gRGVjb3JhdG9yIHRoYXQgd3JpdGVzIHRoZSBtZXRhZGF0YSB3aGVuIGFwcGxpZWQuXG4gKiBAZnVuY3Rpb24gbWV0YWRhdGFcbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRhZGF0YShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICByZXR1cm4gZnVuY3Rpb24gbWV0YWRhdGEoXG4gICAgbW9kZWw6IGFueSxcblxuICAgIHByb3A/OiBhbnksXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGRlc2NyaXB0b3I/OiBQcm9wZXJ0eURlc2NyaXB0b3IgfCBudW1iZXJcbiAgKSB7XG4gICAgTWV0YWRhdGEuc2V0KHByb3AgPyBtb2RlbC5jb25zdHJ1Y3RvciA6IG1vZGVsLCBrZXksIHZhbHVlKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ2FwdHVyZXMgYW5kIHN0b3JlcyBhIHByb3BlcnR5J3MgZGVzaWduIHR5cGUuXG4gKiBAc3VtbWFyeSBEZWNvcmF0b3IgZmFjdG9yeSB0aGF0IHJlYWRzIHRoZSByZWZsZWN0ZWQgYGRlc2lnbjp0eXBlYCBmb3IgYSBwcm9wZXJ0eSBhbmQgcmVnaXN0ZXJzIGl0IGluIHRoZSBtZXRhZGF0YSBzdG9yZSB1bmRlciB0aGUgcHJvcGVydGllcyBtYXAuXG4gKiBAcmV0dXJuIHtQcm9wZXJ0eURlY29yYXRvcn0gRGVjb3JhdG9yIHRoYXQgcmVjb3JkcyB0aGUgcHJvcGVydHkncyB0eXBlIG1ldGFkYXRhIHdoZW4gYXBwbGllZC5cbiAqIEBmdW5jdGlvbiBwcm9wXG4gKiBAY2F0ZWdvcnkgUHJvcGVydHkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvcCgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHByb3AobW9kZWw6IG9iamVjdCwgcHJvcDogYW55KSB7XG4gICAgY29uc3QgZGVzaWduVHlwZSA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXG4gICAgICBEZWNvcmF0aW9uS2V5cy5ERVNJR05fVFlQRSxcbiAgICAgIG1vZGVsLFxuICAgICAgcHJvcFxuICAgICk7XG4gICAgcmV0dXJuIG1ldGFkYXRhKE1ldGFkYXRhLmtleShEZWNvcmF0aW9uS2V5cy5QUk9QRVJUSUVTLCBwcm9wKSwgZGVzaWduVHlwZSkoXG4gICAgICBtb2RlbCxcbiAgICAgIHByb3BcbiAgICApO1xuICB9O1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDYXB0dXJlcyBhIHNpbmdsZSBwYXJhbWV0ZXIgdHlwZSBmb3IgdGhlIGRlY29yYXRlZCBtZXRob2QuXG4gKiBAc3VtbWFyeSBEZWNvcmF0b3IgZmFjdG9yeSB0aGF0IGVuc3VyZXMgdGhlIG1ldGhvZCBtZXRhZGF0YSBpcyBpbml0aWFsaXNlZCBhbmQgc3RvcmVzIHRoZSByZWZsZWN0ZWQgcGFyYW1ldGVyIGNvbnN0cnVjdG9yIGF0IHRoZSBwcm92aWRlZCBpbmRleC5cbiAqIEByZXR1cm4ge1BhcmFtZXRlckRlY29yYXRvcn0gRGVjb3JhdG9yIHRoYXQgcmVjb3JkcyB0aGUgcGFyYW1ldGVyIHR5cGUgd2hlbiBhcHBsaWVkLlxuICogQGZ1bmN0aW9uIHBhcmFtXG4gKiBAY2F0ZWdvcnkgUGFyYW1ldGVyIERlY29yYXRvcnNcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgVSBhcyBVc2VyIENvZGVcbiAqICAgcGFydGljaXBhbnQgUCBhcyBwYXJhbSgpXG4gKiAgIHBhcnRpY2lwYW50IE0gYXMgTWV0YWRhdGFcbiAqICAgVS0+PlA6IHBhcmFtKCkodGFyZ2V0LCBrZXksIGluZGV4KVxuICogICBQLT4+VTogbWV0aG9kKCkodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpXG4gKiAgIFAtPj5NOiBwYXJhbXMoY29uc3RydWN0b3IsIGtleSlcbiAqICAgTS0tPj5QOiBwYXJhbWV0ZXIgY29uc3RydWN0b3JzW11cbiAqICAgUC0+Pk06IHNldChtZXRob2RzLmtleS5pbmRleCwgY29uc3RydWN0b3IpXG4gKiAgIFAtLT4+VTogcGFyYW1ldGVyIHJlY29yZGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbSgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHBhcmFtKFxuICAgIG1vZGVsOiBvYmplY3QsXG4gICAgcHJvcDogc3RyaW5nIHwgc3ltYm9sIHwgdW5kZWZpbmVkLFxuICAgIGluZGV4OiBudW1iZXJcbiAgKSB7XG4gICAgaWYgKCFwcm9wKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgQHBhcmFtIGRlY29yYXRvciBjYW4gb25seSBiZSBhcHBsaWVkIHRvIG1ldGhvZHNgKTtcbiAgICBtZXRob2QoKShtb2RlbCwgcHJvcCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtb2RlbCwgcHJvcCkpO1xuICAgIGNvbnN0IHBhcmFtVHBlcyA9IE1ldGFkYXRhLnBhcmFtcyhtb2RlbC5jb25zdHJ1Y3RvciBhcyBhbnksIHByb3AgYXMgc3RyaW5nKTtcbiAgICBpZiAoIXBhcmFtVHBlcylcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBwYXJhbWV0ZXIgdHlwZXMgZm9yICR7U3RyaW5nKHByb3ApfWApO1xuICAgIGlmIChpbmRleCA+PSBwYXJhbVRwZXMubGVuZ3RoKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgUGFyYW1ldGVyIGluZGV4ICR7aW5kZXh9IG91dCBvZiByYW5nZSBmb3IgJHtTdHJpbmcocHJvcCl9YFxuICAgICAgKTtcbiAgICBtZXRhZGF0YShcbiAgICAgIE1ldGFkYXRhLmtleShEZWNvcmF0aW9uS2V5cy5NRVRIT0RTLCBwcm9wIGFzIHN0cmluZywgaW5kZXgudG9TdHJpbmcoKSksXG4gICAgICBwYXJhbVRwZXNbaW5kZXhdXG4gICAgKShtb2RlbCwgcHJvcCk7XG4gIH07XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEV4dGVuZHMgYSBwYXJhbWV0ZXIgZGVjb3JhdG9yIHdpdGggYWRkaXRpb25hbCBtZXRhZGF0YS5cbiAqIEBzdW1tYXJ5IEFwcGxpZXMgdGhlIGRlZmF1bHQgYHBhcmFtKClgIGRlY29yYXRvciBhbmQgYXVnbWVudHMgdGhlIHN0b3JlZCBtZXRhZGF0YSB3aXRoIGFuIGFyYml0cmFyeSBrZXkvdmFsdWUgcGFpci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgTWV0YWRhdGEga2V5IHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0ge2FueX0gdmFsdWUgTWV0YWRhdGEgdmFsdWUgcGVyc2lzdGVkIHVuZGVyIHRoZSBnaXZlbiBrZXkuXG4gKiBAcmV0dXJuIHtQYXJhbWV0ZXJEZWNvcmF0b3J9IERlY29yYXRvciB0aGF0IHJlY29yZHMgYm90aCB0aGUgcGFyYW1ldGVyIGRlc2lnbiB0eXBlIGFuZCBhZGRpdGlvbmFsIG1ldGFkYXRhLlxuICogQGZ1bmN0aW9uIHBhcmFtTWV0YWRhdGFcbiAqIEBjYXRlZ29yeSBQYXJhbWV0ZXIgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1NZXRhZGF0YShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICByZXR1cm4gZnVuY3Rpb24gcGFyYW1NZXRhZGF0YSh0YXJnZXQ6IGFueSwgcHJvcDogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGFwcGx5KFxuICAgICAgcGFyYW0oKSxcbiAgICAgIG1ldGFkYXRhKE1ldGFkYXRhLmtleShEZWNvcmF0aW9uS2V5cy5NRVRIT0RTLCBwcm9wLCBrZXkpLCB2YWx1ZSlcbiAgICApKHRhcmdldCwgcHJvcCwgaW5kZXgpO1xuICB9O1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZWNvcmRzIG1ldGhvZCBkZXNpZ24tdGltZSBtZXRhZGF0YS5cbiAqIEBzdW1tYXJ5IERlY29yYXRvciBmYWN0b3J5IHRoYXQgY2FwdHVyZXMgYSBtZXRob2QncyByZWZsZWN0ZWQgcGFyYW1ldGVyIGFuZCByZXR1cm4gdHlwZXMsIHN0b3JpbmcgdGhlbSB1bmRlciB0aGUgYXBwcm9wcmlhdGUgbWV0YWRhdGEga2V5cyBzbyB0aGV5IGNhbiBiZSBpbnNwZWN0ZWQgYXQgcnVudGltZS5cbiAqIEByZXR1cm4ge01ldGhvZERlY29yYXRvcn0gRGVjb3JhdG9yIHRoYXQgcGVyc2lzdHMgdGhlIG1ldGhvZCdzIHNpZ25hdHVyZSBpbmZvcm1hdGlvbiBpbnRvIHRoZSBtZXRhZGF0YSBzdG9yZSB3aGVuIGFwcGxpZWQuXG4gKiBAZnVuY3Rpb24gbWV0aG9kXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IFUgYXMgVXNlciBDb2RlXG4gKiAgIHBhcnRpY2lwYW50IEYgYXMgbWV0aG9kKClcbiAqICAgcGFydGljaXBhbnQgTSBhcyBNZXRhZGF0YVxuICogICBVLT4+RjogbWV0aG9kKCkodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpXG4gKiAgIEYtPj5VOiBSZWZsZWN0LmdldE93bk1ldGFkYXRhKGRlc2lnbjpwYXJhbXR5cGVzKVxuICogICBGLT4+VTogUmVmbGVjdC5nZXRPd25NZXRhZGF0YShkZXNpZ246cmV0dXJudHlwZSlcbiAqICAgRi0+Pk06IHNldChtZXRob2RzLmtleS5kZXNpZ246cGFyYW10eXBlcywgcGFyYW1zKVxuICogICBGLT4+TTogc2V0KG1ldGhvZHMua2V5LmRlc2lnbjpyZXR1cm50eXBlLCByZXR1cm5UeXBlKVxuICogICBGLS0+PlU6IGRlY29yYXRlZCBmdW5jdGlvblxuICogQGNhdGVnb3J5IE1ldGhvZCBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRob2QoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBtZXRob2Qob2JqOiBhbnksIHByb3A/OiBhbnksIGRlc2NyaXB0b3I/OiBhbnkpIHtcbiAgICBjb25zdCBkZXNpZ25QYXJhbXMgPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhKFxuICAgICAgRGVjb3JhdGlvbktleXMuREVTSUdOX1BBUkFNUyxcbiAgICAgIG9iaixcbiAgICAgIHByb3BcbiAgICApO1xuICAgIGNvbnN0IGRlc2lnblJldHVybiA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGEoXG4gICAgICBEZWNvcmF0aW9uS2V5cy5ERVNJR05fUkVUVVJOLFxuICAgICAgb2JqLFxuICAgICAgcHJvcFxuICAgICk7XG4gICAgcmV0dXJuIGFwcGx5KFxuICAgICAgbWV0YWRhdGEoXG4gICAgICAgIE1ldGFkYXRhLmtleShcbiAgICAgICAgICBEZWNvcmF0aW9uS2V5cy5NRVRIT0RTLFxuICAgICAgICAgIHByb3AsXG4gICAgICAgICAgRGVjb3JhdGlvbktleXMuREVTSUdOX1BBUkFNU1xuICAgICAgICApLFxuICAgICAgICBkZXNpZ25QYXJhbXNcbiAgICAgICksXG4gICAgICBtZXRhZGF0YShcbiAgICAgICAgTWV0YWRhdGEua2V5KFxuICAgICAgICAgIERlY29yYXRpb25LZXlzLk1FVEhPRFMsXG4gICAgICAgICAgcHJvcCxcbiAgICAgICAgICBEZWNvcmF0aW9uS2V5cy5ERVNJR05fUkVUVVJOXG4gICAgICAgICksXG4gICAgICAgIGRlc2lnblJldHVyblxuICAgICAgKVxuICAgICkob2JqLCBwcm9wLCBkZXNjcmlwdG9yKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVjb3JhdG9yIGZhY3RvcnkgdGhhdCBhcHBsaWVzIG11bHRpcGxlIGRlY29yYXRvcnMgdG8gYSBzaW5nbGUgdGFyZ2V0LlxuICogQHN1bW1hcnkgQ3JlYXRlcyBhIGNvbXBvc2l0ZSBkZWNvcmF0b3IgdGhhdCBhcHBsaWVzIG11bHRpcGxlIGRlY29yYXRvcnMgaW4gc2VxdWVuY2UsIGNvcnJlY3RseSBoYW5kbGluZyBjbGFzcywgbWV0aG9kLCBwcm9wZXJ0eSwgYW5kIHBhcmFtZXRlciBkZWNvcmF0b3JzLlxuICogQHBhcmFtIHtBcnJheTxDbGFzc0RlY29yYXRvcnxNZXRob2REZWNvcmF0b3J8UHJvcGVydHlEZWNvcmF0b3J8UGFyYW1ldGVyRGVjb3JhdG9yPn0gZGVjb3JhdG9ycyBDb2xsZWN0aW9uIG9mIGRlY29yYXRvcnMgdG8gYXBwbHkuXG4gKiBAcmV0dXJuIHtDbGFzc0RlY29yYXRvcnxNZXRob2REZWNvcmF0b3J8UHJvcGVydHlEZWNvcmF0b3J8UGFyYW1ldGVyRGVjb3JhdG9yfSBEZWNvcmF0b3IgZnVuY3Rpb24gdGhhdCBhcHBsaWVzIGFsbCBwcm92aWRlZCBkZWNvcmF0b3JzIHRvIHRoZSB0YXJnZXQuXG4gKiBAZnVuY3Rpb24gYXBwbHlcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgVSBhcyBVc2VyIENvZGVcbiAqICAgcGFydGljaXBhbnQgQSBhcyBhcHBseSguLi5kZWNvcmF0b3JzKVxuICogICBwYXJ0aWNpcGFudCBEIGFzIERlY29yYXRvclxuICogICBVLT4+QTogZ2V0IGRlY29yYXRvciguLi5kZWNvcmF0b3JzKVxuICogICBBLT4+VTogcmV0dXJucyAodGFyZ2V0LCBrZXk/LCBkZXNjPykgPT4gdm9pZFxuICogICBVLT4+QTogaW52b2tlIG9uIHRhcmdldFxuICogICBsb29wIGZvciBlYWNoIGRlY29yYXRvclxuICogICAgIEEtPj5EOiBpbnZva2UgYXBwcm9wcmlhdGUgZGVjb3JhdG9yIHR5cGVcbiAqICAgZW5kXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHkoXG4gIC4uLmRlY29yYXRvcnM6IEFycmF5PFxuICAgIENsYXNzRGVjb3JhdG9yIHwgTWV0aG9kRGVjb3JhdG9yIHwgUHJvcGVydHlEZWNvcmF0b3IgfCBQYXJhbWV0ZXJEZWNvcmF0b3JcbiAgPlxuKSB7XG4gIHJldHVybiAoXG4gICAgdGFyZ2V0OiBvYmplY3QsXG4gICAgcHJvcGVydHlLZXk/OiBzdHJpbmcgfCBzeW1ib2wgfCB1bmtub3duLFxuICAgIGRlc2NyaXB0b3I/OiBQcm9wZXJ0eURlc2NyaXB0b3IgfCBudW1iZXJcbiAgKSA9PiB7XG4gICAgZm9yIChjb25zdCBkZWNvcmF0b3Igb2YgZGVjb3JhdG9ycykge1xuICAgICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmICFkZXNjcmlwdG9yKSB7XG4gICAgICAgIChkZWNvcmF0b3IgYXMgQ2xhc3NEZWNvcmF0b3IpKHRhcmdldCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgKGRlY29yYXRvciBhcyBNZXRob2REZWNvcmF0b3IgfCBQcm9wZXJ0eURlY29yYXRvcikoXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgcHJvcGVydHlLZXkgYXMgc3RyaW5nIHwgc3ltYm9sLFxuICAgICAgICBkZXNjcmlwdG9yIGFzIFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPHVua25vd24+XG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIHByb3BlcnR5IG1ldGFkYXRhIGRlY29yYXRvci5cbiAqIEBzdW1tYXJ5IENvbnZlbmllbmNlIGZhY3RvcnkgdGhhdCBjb21iaW5lcyBgbWV0YWRhdGEoa2V5LCB2YWx1ZSlgIGFuZCBgcHJvcCgpYCB0byBib3RoIHNldCBhbiBhcmJpdHJhcnkgbWV0YWRhdGEga2V5IGFuZCByZWNvcmQgdGhlIHByb3BlcnR5J3MgZGVzaWduIHR5cGUuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IE1ldGFkYXRhIGtleSB0byBzZXQgZm9yIHRoZSBwcm9wZXJ0eS5cbiAqIEBwYXJhbSB7YW55fSB2YWx1ZSBNZXRhZGF0YSB2YWx1ZSB0byBhc3NvY2lhdGUgd2l0aCB0aGUga2V5LlxuICogQHJldHVybiB7UHJvcGVydHlEZWNvcmF0b3J9IERlY29yYXRvciB0aGF0IHNldHMgdGhlIG1ldGFkYXRhIGFuZCBjYXB0dXJlcyB0aGUgcHJvcGVydHkncyB0eXBlLlxuICogQGZ1bmN0aW9uIHByb3BNZXRhZGF0YVxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3BNZXRhZGF0YShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICByZXR1cm4gYXBwbHkobWV0YWRhdGEoa2V5LCB2YWx1ZSksIHByb3AoKSk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBtZXRob2QgbWV0YWRhdGEgZGVjb3JhdG9yLlxuICogQHN1bW1hcnkgQ29udmVuaWVuY2UgZmFjdG9yeSB0aGF0IGNvbWJpbmVzIGBtZXRhZGF0YShrZXksIHZhbHVlKWAgYW5kIGBtZXRob2QoKWAgdG8gYm90aCBzZXQgYW4gYXJiaXRyYXJ5IG1ldGFkYXRhIGtleSBhbmQgcmVjb3JkIHRoZSBtZXRob2QncyBkZXNpZ24gcmV0dXJuIGFuZCBwYXJhbSB0eXBlcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgTWV0YWRhdGEga2V5IHRvIHNldCBmb3IgdGhlIHByb3BlcnR5LlxuICogQHBhcmFtIHthbnl9IHZhbHVlIE1ldGFkYXRhIHZhbHVlIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBrZXkuXG4gKiBAcmV0dXJuIHtQcm9wZXJ0eURlY29yYXRvcn0gRGVjb3JhdG9yIHRoYXQgc2V0cyB0aGUgbWV0YWRhdGEgYW5kIGNhcHR1cmVzIHRoZSBwcm9wZXJ0eSdzIHR5cGUuXG4gKiBAZnVuY3Rpb24gbWV0aG9kTWV0YWRhdGFcbiAqIEBjYXRlZ29yeSBNZXRob2QgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWV0aG9kTWV0YWRhdGEoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuIGFwcGx5KG1ldGFkYXRhKGtleSwgdmFsdWUpLCBtZXRob2QoKSk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEF0dGFjaGVzIGEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gdG8gYSBjbGFzcyBvciBtZW1iZXIuXG4gKiBAc3VtbWFyeSBEZWNvcmF0b3IgZmFjdG9yeSB0aGF0IHN0b3JlcyBhIHRleHR1YWwgZGVzY3JpcHRpb24gaW4gdGhlIG1ldGFkYXRhIHN0b3JlIHVuZGVyIHRoZSBhcHByb3ByaWF0ZSBkZXNjcmlwdGlvbiBrZXkgZm9yIGEgY2xhc3Mgb3IgaXRzIHByb3BlcnR5LlxuICogQHBhcmFtIHtzdHJpbmd9IGRlc2MgRGVzY3JpcHRpdmUgdGV4dCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgY2xhc3Mgb3IgcHJvcGVydHkuXG4gKiBAcmV0dXJuIHtDbGFzc0RlY29yYXRvcnxNZXRob2REZWNvcmF0b3J8UHJvcGVydHlEZWNvcmF0b3J9IERlY29yYXRvciB0aGF0IHJlY29yZHMgdGhlIGRlc2NyaXB0aW9uIHdoZW4gYXBwbGllZC5cbiAqIEBmdW5jdGlvbiBkZXNjcmlwdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaXB0aW9uKGRlc2M6IHN0cmluZykge1xuICByZXR1cm4gZnVuY3Rpb24gZGVzY3JpcHRpb24ob3JpZ2luYWw6IGFueSwgcHJvcD86IGFueSwgZGVzY3JpcHRvcj86IGFueSkge1xuICAgIHJldHVybiBtZXRhZGF0YShcbiAgICAgIFtcbiAgICAgICAgRGVjb3JhdGlvbktleXMuREVTQ1JJUFRJT04sXG4gICAgICAgIHByb3AgPyBwcm9wLnRvU3RyaW5nKCkgOiBEZWNvcmF0aW9uS2V5cy5DTEFTUyxcbiAgICAgIF0uam9pbihNZXRhZGF0YS5zcGxpdHRlciksXG4gICAgICBkZXNjXG4gICAgKShvcmlnaW5hbCwgcHJvcCwgZGVzY3JpcHRvcik7XG4gIH07XG59XG4iXX0=
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @description Root entry point for the decoration module
|
|
3
|
-
* @summary Aggregates and re-exports the public API of the decoration library, including
|
|
2
|
+
* @description Root entry point for the decoration module.
|
|
3
|
+
* @summary Aggregates and re-exports the public API of the decoration library, including {@link Decoration}, decorator utilities from {@link module:decoration|./decorators}, {@link Metadata}, and shared constants such as {@link DecorationKeys} and {@link DefaultFlavour}. This is the primary import surface for consumers and exposes:
|
|
4
4
|
* - Core builder: {@link Decoration}
|
|
5
|
-
* - Decorator utilities: {@link module:decoration
|
|
5
|
+
* - Decorator utilities: {@link module:decoration|decorators in ./decorators}
|
|
6
6
|
* - Metadata utilities: {@link Metadata}
|
|
7
7
|
* - Constants and enums: {@link DecorationKeys}, {@link DefaultFlavour}
|
|
8
|
-
*
|
|
9
8
|
* @module decoration
|
|
10
9
|
*/
|
|
11
10
|
export * from "./decoration";
|
|
@@ -18,4 +17,4 @@ export * from "./decorators";
|
|
|
18
17
|
* @const VERSION
|
|
19
18
|
* @memberOf module:decoration
|
|
20
19
|
*/
|
|
21
|
-
export declare const VERSION = "0.0.
|
|
20
|
+
export declare const VERSION = "0.0.8";
|
package/lib/esm/index.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @description Root entry point for the decoration module
|
|
3
|
-
* @summary Aggregates and re-exports the public API of the decoration library, including
|
|
2
|
+
* @description Root entry point for the decoration module.
|
|
3
|
+
* @summary Aggregates and re-exports the public API of the decoration library, including {@link Decoration}, decorator utilities from {@link module:decoration|./decorators}, {@link Metadata}, and shared constants such as {@link DecorationKeys} and {@link DefaultFlavour}. This is the primary import surface for consumers and exposes:
|
|
4
4
|
* - Core builder: {@link Decoration}
|
|
5
|
-
* - Decorator utilities: {@link module:decoration
|
|
5
|
+
* - Decorator utilities: {@link module:decoration|decorators in ./decorators}
|
|
6
6
|
* - Metadata utilities: {@link Metadata}
|
|
7
7
|
* - Constants and enums: {@link DecorationKeys}, {@link DefaultFlavour}
|
|
8
|
-
*
|
|
9
8
|
* @module decoration
|
|
10
9
|
*/
|
|
11
10
|
import { Metadata } from "./metadata/index.js";
|
|
@@ -19,6 +18,6 @@ export * from "./decorators.js";
|
|
|
19
18
|
* @const VERSION
|
|
20
19
|
* @memberOf module:decoration
|
|
21
20
|
*/
|
|
22
|
-
export const VERSION = "0.0.
|
|
21
|
+
export const VERSION = "0.0.8";
|
|
23
22
|
Metadata.registerLibrary("@decaf-ts/decoration", VERSION);
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLDRCQUF5QjtBQUU1QyxzQ0FBNkI7QUFDN0Isb0NBQTJCO0FBQzNCLCtCQUE0QjtBQUM1QixnQ0FBNkI7QUFFN0I7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDO0FBRXJDLFFBQVEsQ0FBQyxlQUFlLENBQUMsc0JBQXNCLEVBQUUsT0FBTyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBSb290IGVudHJ5IHBvaW50IGZvciB0aGUgZGVjb3JhdGlvbiBtb2R1bGUuXG4gKiBAc3VtbWFyeSBBZ2dyZWdhdGVzIGFuZCByZS1leHBvcnRzIHRoZSBwdWJsaWMgQVBJIG9mIHRoZSBkZWNvcmF0aW9uIGxpYnJhcnksIGluY2x1ZGluZyB7QGxpbmsgRGVjb3JhdGlvbn0sIGRlY29yYXRvciB1dGlsaXRpZXMgZnJvbSB7QGxpbmsgbW9kdWxlOmRlY29yYXRpb258Li9kZWNvcmF0b3JzfSwge0BsaW5rIE1ldGFkYXRhfSwgYW5kIHNoYXJlZCBjb25zdGFudHMgc3VjaCBhcyB7QGxpbmsgRGVjb3JhdGlvbktleXN9IGFuZCB7QGxpbmsgRGVmYXVsdEZsYXZvdXJ9LiBUaGlzIGlzIHRoZSBwcmltYXJ5IGltcG9ydCBzdXJmYWNlIGZvciBjb25zdW1lcnMgYW5kIGV4cG9zZXM6XG4gKiAtIENvcmUgYnVpbGRlcjoge0BsaW5rIERlY29yYXRpb259XG4gKiAtIERlY29yYXRvciB1dGlsaXRpZXM6IHtAbGluayBtb2R1bGU6ZGVjb3JhdGlvbnxkZWNvcmF0b3JzIGluIC4vZGVjb3JhdG9yc31cbiAqIC0gTWV0YWRhdGEgdXRpbGl0aWVzOiB7QGxpbmsgTWV0YWRhdGF9XG4gKiAtIENvbnN0YW50cyBhbmQgZW51bXM6IHtAbGluayBEZWNvcmF0aW9uS2V5c30sIHtAbGluayBEZWZhdWx0Rmxhdm91cn1cbiAqIEBtb2R1bGUgZGVjb3JhdGlvblxuICovXG5cbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSBcIi4vbWV0YWRhdGEvaW5kZXhcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWV0YWRhdGFcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDdXJyZW50IHZlcnNpb24gb2YgdGhlIHJlZmxlY3Rpb24gcGFja2FnZVxuICogQHN1bW1hcnkgU3RvcmVzIHRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlciBvZiB0aGUgcGFja2FnZVxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdGlvblxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcblxuTWV0YWRhdGEucmVnaXN0ZXJMaWJyYXJ5KFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIiwgVkVSU0lPTik7XG4iXX0=
|