@decaf-ts/decorator-validation 1.7.16 → 1.7.18
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 -2
- package/dist/decorator-validation.cjs +148 -88
- package/dist/decorator-validation.esm.cjs +145 -84
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/mcp/ModelContextProtocol.d.ts +100 -0
- package/lib/esm/mcp/ModelContextProtocol.js +110 -1
- package/lib/esm/model/Model.js +7 -1
- package/lib/esm/model/constants.d.ts +31 -22
- package/lib/esm/model/constants.js +32 -23
- package/lib/esm/model/construction.d.ts +29 -14
- package/lib/esm/model/construction.js +30 -15
- package/lib/esm/model/decorators.js +3 -2
- package/lib/esm/utils/constants.d.ts +1 -1
- package/lib/esm/utils/constants.js +2 -2
- package/lib/esm/validation/Validators/constants.d.ts +73 -44
- package/lib/esm/validation/Validators/constants.js +74 -45
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/mcp/ModelContextProtocol.cjs +110 -1
- package/lib/mcp/ModelContextProtocol.d.ts +100 -0
- package/lib/model/Model.cjs +7 -1
- package/lib/model/constants.cjs +32 -23
- package/lib/model/constants.d.ts +31 -22
- package/lib/model/construction.cjs +30 -15
- package/lib/model/construction.d.ts +29 -14
- package/lib/model/decorators.cjs +4 -3
- package/lib/utils/constants.cjs +2 -2
- package/lib/utils/constants.d.ts +1 -1
- package/lib/validation/Validators/constants.cjs +74 -45
- package/lib/validation/Validators/constants.d.ts +73 -44
- package/package.json +3 -1
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import { ModelKeys } from "./../../utils/constants.js";
|
|
2
2
|
/**
|
|
3
|
-
* @
|
|
4
|
-
*
|
|
5
|
-
* @
|
|
6
|
-
* @property {
|
|
7
|
-
* @property {
|
|
8
|
-
* @property {
|
|
9
|
-
* @property {
|
|
10
|
-
* @property {
|
|
11
|
-
*
|
|
12
|
-
* @
|
|
13
|
-
|
|
3
|
+
* @description Object-like set of keys used for comparison-based validations.
|
|
4
|
+
* @summary Provides canonical names for validators that compare two values (equality and ordering checks).
|
|
5
|
+
* @typedef {Object} ComparisonValidationKeysDef
|
|
6
|
+
* @property {"equals"} EQUALS Validates if two values are equal.
|
|
7
|
+
* @property {"different"} DIFF Validates if two values are different.
|
|
8
|
+
* @property {"lessThan"} LESS_THAN Validates if a value is less than another.
|
|
9
|
+
* @property {"lessThanOrEqual"} LESS_THAN_OR_EQUAL Validates if a value is less than or equal to another.
|
|
10
|
+
* @property {"greaterThan"} GREATER_THAN Validates if a value is greater than another.
|
|
11
|
+
* @property {"greaterThanOrEqual"} GREATER_THAN_OR_EQUAL Validates if a value is greater than or equal to another.
|
|
12
|
+
* @memberOf module:decorator-validation.Validation
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* @description Keys used for comparison-based validations.
|
|
16
|
+
* @summary Canonical key names for comparison validators.
|
|
17
|
+
* @const ComparisonValidationKeys
|
|
18
|
+
* @memberOf module:decorator-validation.Validation
|
|
14
19
|
* @category Validation
|
|
20
|
+
* @type {ComparisonValidationKeysDef}
|
|
15
21
|
*/
|
|
16
22
|
export const ComparisonValidationKeys = {
|
|
17
23
|
EQUALS: "equals",
|
|
@@ -22,26 +28,34 @@ export const ComparisonValidationKeys = {
|
|
|
22
28
|
GREATER_THAN_OR_EQUAL: "greaterThanOrEqual",
|
|
23
29
|
};
|
|
24
30
|
/**
|
|
25
|
-
* @
|
|
26
|
-
*
|
|
27
|
-
* @
|
|
28
|
-
* @property {string}
|
|
29
|
-
* @property {
|
|
30
|
-
* @property {
|
|
31
|
-
* @property {
|
|
32
|
-
* @property {
|
|
33
|
-
* @property {
|
|
34
|
-
* @property {
|
|
35
|
-
* @property {
|
|
36
|
-
* @property {
|
|
37
|
-
* @property {
|
|
38
|
-
* @property {
|
|
39
|
-
* @property {
|
|
40
|
-
* @property {
|
|
41
|
-
*
|
|
42
|
-
* @
|
|
31
|
+
* @description Object-like set of keys used across all validators in the system.
|
|
32
|
+
* @summary Defines the canonical namespaced key prefix and the individual validation flags for rules such as required, min/max, length, patterns, types, lists and more.
|
|
33
|
+
* @typedef {Object} ValidationKeysDef
|
|
34
|
+
* @property {string} REFLECT prefixes others (namespace prefix)
|
|
35
|
+
* @property {"required"} REQUIRED sets as required
|
|
36
|
+
* @property {"min"} MIN defines min value
|
|
37
|
+
* @property {"max"} MAX defines max value
|
|
38
|
+
* @property {"step"} STEP defines step
|
|
39
|
+
* @property {"minlength"} MIN_LENGTH defines min length
|
|
40
|
+
* @property {"maxlength"} MAX_LENGTH defines max length
|
|
41
|
+
* @property {"pattern"} PATTERN defines pattern
|
|
42
|
+
* @property {"email"} EMAIL defines email
|
|
43
|
+
* @property {"url"} URL defines url
|
|
44
|
+
* @property {"date"} DATE defines date
|
|
45
|
+
* @property {"type"} TYPE defines type
|
|
46
|
+
* @property {"password"} PASSWORD defines password
|
|
47
|
+
* @property {"list"} LIST defines list
|
|
48
|
+
* @property {"unique"} UNIQUE flags uniqueness
|
|
49
|
+
* @property {"validator"} VALIDATOR custom validator id
|
|
50
|
+
* @memberOf module:decorator-validation.Validation
|
|
51
|
+
*/
|
|
52
|
+
/**
|
|
53
|
+
* @description The keys used for validation.
|
|
54
|
+
* @summary A namespaced collection of validation key strings used throughout the library.
|
|
55
|
+
* @const ValidationKeys
|
|
43
56
|
* @memberOf module:decorator-validation.Validation
|
|
44
57
|
* @category Validation
|
|
58
|
+
* @type {ValidationKeysDef}
|
|
45
59
|
*/
|
|
46
60
|
export const ValidationKeys = {
|
|
47
61
|
REFLECT: `${ModelKeys.REFLECT}validation.`,
|
|
@@ -64,10 +78,9 @@ export const ValidationKeys = {
|
|
|
64
78
|
...ComparisonValidationKeys,
|
|
65
79
|
};
|
|
66
80
|
/**
|
|
67
|
-
* @
|
|
68
|
-
* @
|
|
69
|
-
*
|
|
70
|
-
* @constant MONTH_NAMES
|
|
81
|
+
* @description list of month names
|
|
82
|
+
* @summary Stores month names. Can be changed for localization purposes
|
|
83
|
+
* @const MONTH_NAMES
|
|
71
84
|
* @memberOf module:decorator-validation.Validation
|
|
72
85
|
* @category Validation
|
|
73
86
|
*/
|
|
@@ -86,10 +99,9 @@ export const MONTH_NAMES = [
|
|
|
86
99
|
"December",
|
|
87
100
|
];
|
|
88
101
|
/**
|
|
89
|
-
* @
|
|
90
|
-
* @
|
|
91
|
-
*
|
|
92
|
-
* @constant DAYS_OF_WEEK_NAMES
|
|
102
|
+
* @description list of names of days of the week
|
|
103
|
+
* @summary Stores names for days of the week. Can be changed for localization purposes
|
|
104
|
+
* @const DAYS_OF_WEEK_NAMES
|
|
93
105
|
* @memberOf module:decorator-validation.Validation
|
|
94
106
|
* @category Validation
|
|
95
107
|
*/
|
|
@@ -103,8 +115,9 @@ export const DAYS_OF_WEEK_NAMES = [
|
|
|
103
115
|
"Saturday",
|
|
104
116
|
];
|
|
105
117
|
/**
|
|
106
|
-
* @
|
|
107
|
-
*
|
|
118
|
+
* @description Type definition for default error message strings keyed by validation type.
|
|
119
|
+
* @summary Enumerates the supported error message keys with their intended meaning; used to localize or override default messages.
|
|
120
|
+
* @typedef {Object} DefaultErrorMessages
|
|
108
121
|
* @property {string} REQUIRED default error message
|
|
109
122
|
* @property {string} MIN default error message
|
|
110
123
|
* @property {string} MAX default error message
|
|
@@ -121,10 +134,15 @@ export const DAYS_OF_WEEK_NAMES = [
|
|
|
121
134
|
* @property {string} LIST default error message
|
|
122
135
|
* @property {string} LIST_INSIDE default error message
|
|
123
136
|
* @property {string} MODEL_NOT_FOUND default error message
|
|
124
|
-
*
|
|
125
|
-
|
|
137
|
+
* @memberOf module:decorator-validation.Validation
|
|
138
|
+
*/
|
|
139
|
+
/**
|
|
140
|
+
* @description Defines the default error messages
|
|
141
|
+
* @summary Mapping between validation keys and their default human-readable error messages.
|
|
142
|
+
* @const DEFAULT_ERROR_MESSAGES
|
|
126
143
|
* @memberOf module:decorator-validation.Validation
|
|
127
144
|
* @category Validation
|
|
145
|
+
* @type {DefaultErrorMessages}
|
|
128
146
|
*/
|
|
129
147
|
export const DEFAULT_ERROR_MESSAGES = {
|
|
130
148
|
REQUIRED: "This field is required",
|
|
@@ -151,11 +169,22 @@ export const DEFAULT_ERROR_MESSAGES = {
|
|
|
151
169
|
UNIQUE: "Duplicate found, this field must be unique.",
|
|
152
170
|
};
|
|
153
171
|
/**
|
|
154
|
-
* @
|
|
155
|
-
*
|
|
156
|
-
* @
|
|
172
|
+
* @description Type definition for default regular expression patterns used in validation.
|
|
173
|
+
* @summary Captures common regex patterns for email, URL, and password policies, including nested grouping for password-related rules.
|
|
174
|
+
* @typedef {Object} DefaultPatterns
|
|
175
|
+
* @property {RegExp} EMAIL Email address validation pattern
|
|
176
|
+
* @property {RegExp} URL URL validation pattern
|
|
177
|
+
* @property {Object} PASSWORD Password-related regex patterns
|
|
178
|
+
* @property {RegExp} PASSWORD.CHAR8_ONE_OF_EACH At least 8 chars with lower, upper, number, and special char
|
|
179
|
+
* @memberOf module:decorator-validation.Validation
|
|
180
|
+
*/
|
|
181
|
+
/**
|
|
182
|
+
* @description Defines the various default regexp patterns used
|
|
183
|
+
* @summary Collection of frequently used validation patterns grouped under semantic keys.
|
|
184
|
+
* @const DEFAULT_PATTERNS
|
|
157
185
|
* @memberOf module:decorator-validation.Validation
|
|
158
186
|
* @category Validation
|
|
187
|
+
* @type {DefaultPatterns}
|
|
159
188
|
*/
|
|
160
189
|
export const DEFAULT_PATTERNS = {
|
|
161
190
|
EMAIL: /[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?/,
|
|
@@ -164,4 +193,4 @@ export const DEFAULT_PATTERNS = {
|
|
|
164
193
|
CHAR8_ONE_OF_EACH: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&_\-.,])[A-Za-z\d@$!%*?&_\-.,]{8,}$/g,
|
|
165
194
|
},
|
|
166
195
|
};
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZhbGlkYXRpb24vVmFsaWRhdG9ycy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxtQ0FBOEI7QUFFbEQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3RDLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLElBQUksRUFBRSxXQUFXO0lBQ2pCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCLGtCQUFrQixFQUFFLGlCQUFpQjtJQUNyQyxZQUFZLEVBQUUsYUFBYTtJQUMzQixxQkFBcUIsRUFBRSxvQkFBb0I7Q0FDbkMsQ0FBQztBQUVYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDLE9BQU8sYUFBYTtJQUMxQyxJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxPQUFPO0lBQ2QsTUFBTSxFQUFFLFFBQVE7SUFDaEIsSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLFVBQVUsRUFBRSxXQUFXO0lBQ3ZCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsVUFBVSxFQUFFLFdBQVc7SUFDdkIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsU0FBUyxFQUFFLFdBQVc7SUFDdEIsR0FBRyx3QkFBd0I7Q0FDbkIsQ0FBQztBQUVYOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDekIsU0FBUztJQUNULFVBQVU7SUFDVixPQUFPO0lBQ1AsT0FBTztJQUNQLEtBQUs7SUFDTCxNQUFNO0lBQ04sTUFBTTtJQUNOLFFBQVE7SUFDUixXQUFXO0lBQ1gsU0FBUztJQUNULFVBQVU7SUFDVixVQUFVO0NBQ1gsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxRQUFRO0lBQ1IsUUFBUTtJQUNSLFNBQVM7SUFDVCxXQUFXO0lBQ1gsVUFBVTtJQUNWLFFBQVE7SUFDUixVQUFVO0NBQ1gsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUEyQjtJQUM1RCxRQUFRLEVBQUUsd0JBQXdCO0lBQ2xDLEdBQUcsRUFBRSwwQkFBMEI7SUFDL0IsR0FBRyxFQUFFLDBCQUEwQjtJQUMvQixVQUFVLEVBQUUsMkJBQTJCO0lBQ3ZDLFVBQVUsRUFBRSwyQkFBMkI7SUFDdkMsT0FBTyxFQUFFLHNDQUFzQztJQUMvQyxLQUFLLEVBQUUsZ0NBQWdDO0lBQ3ZDLEdBQUcsRUFBRSw4QkFBOEI7SUFDbkMsSUFBSSxFQUFFLDBDQUEwQztJQUNoRCxJQUFJLEVBQUUsa0NBQWtDO0lBQ3hDLElBQUksRUFBRSxpQ0FBaUM7SUFDdkMsT0FBTyxFQUFFLG1CQUFtQjtJQUM1QixRQUFRLEVBQ04sNEhBQTRIO0lBQzlILElBQUksRUFBRSxxQkFBcUI7SUFDM0IsZUFBZSxFQUFFLCtCQUErQjtJQUNoRCxNQUFNLEVBQUUsdUNBQXVDO0lBQy9DLElBQUksRUFBRSw2Q0FBNkM7SUFDbkQsU0FBUyxFQUFFLHdDQUF3QztJQUNuRCxrQkFBa0IsRUFBRSxvREFBb0Q7SUFDeEUsWUFBWSxFQUFFLDJDQUEyQztJQUN6RCxxQkFBcUIsRUFDbkIsdURBQXVEO0lBQ3pELE1BQU0sRUFBRSw2Q0FBNkM7Q0FDdEQsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLEtBQUssRUFDSCw0SkFBNEo7SUFDOUosR0FBRyxFQUFFLHlhQUF5YTtJQUM5YSxRQUFRLEVBQUU7UUFDUixpQkFBaUIsRUFDZixpRkFBaUY7S0FDcEY7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWxLZXlzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IEtleXMgdXNlZCBmb3IgY29tcGFyaXNvbi1iYXNlZCB2YWxpZGF0aW9ucy5cbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gRVFVQUxTIC0gVmFsaWRhdGVzIGlmIHR3byB2YWx1ZXMgYXJlIGVxdWFsLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IERJRkYgLSBWYWxpZGF0ZXMgaWYgdHdvIHZhbHVlcyBhcmUgZGlmZmVyZW50LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IExFU1NfVEhBTiAtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGxlc3MgdGhhbiBhbm90aGVyLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IExFU1NfVEhBTl9PUl9FUVVBTCAtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBhbm90aGVyLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IEdSRUFURVJfVEhBTiAtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBhbm90aGVyLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IEdSRUFURVJfVEhBTl9PUl9FUVVBTCAtIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBhbm90aGVyLlxuICpcbiAqIEBjb25zdGFudCBDb21wYXJpc29uVmFsaWRhdGlvbktleXNcbiAqIEBtZW1iZXJvZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IENvbXBhcmlzb25WYWxpZGF0aW9uS2V5cyA9IHtcbiAgRVFVQUxTOiBcImVxdWFsc1wiLFxuICBESUZGOiBcImRpZmZlcmVudFwiLFxuICBMRVNTX1RIQU46IFwibGVzc1RoYW5cIixcbiAgTEVTU19USEFOX09SX0VRVUFMOiBcImxlc3NUaGFuT3JFcXVhbFwiLFxuICBHUkVBVEVSX1RIQU46IFwiZ3JlYXRlclRoYW5cIixcbiAgR1JFQVRFUl9USEFOX09SX0VRVUFMOiBcImdyZWF0ZXJUaGFuT3JFcXVhbFwiLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBAc3VtbWFyeSBUaGUga2V5cyB1c2VkIGZvciB2YWxpZGF0aW9uXG4gKlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFJFRkxFQ1QgcHJlZml4ZXMgb3RoZXJzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVRVUlSRUQgc2V0cyBhcyByZXF1aXJlZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1JTiBkZWZpbmVzIG1pbiB2YWx1ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1BWCBkZWZpbmVzIG1heCB2YWx1ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFNURVAgZGVmaW5lcyBzdGVwXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTUlOX0xFTkdUSCBkZWZpbmVzIG1pbiBsZW5ndGhcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNQVhfTEVOR1RIIGRlZmluZXMgbWF4IGxlbmd0aFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFBBVFRFUk4gZGVmaW5lcyBwYXR0ZXJuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gRU1BSUwgZGVmaW5lcyBlbWFpbFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFVSTCBkZWZpbmVzIHVybFxuICogQHByb3BlcnR5IHtzdHJpbmd9IERBVEUgZGVmaW5lcyBkYXRlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gVFlQRSBkZWZpbmVzIHR5cGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBQQVNTV09SRCBkZWZpbmVzIHBhc3N3b3JkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTElTVCBkZWZpbmVzIGxpc3RcbiAqXG4gKiBAY29uc3RhbnQgVmFsaWRhdGlvbktleXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IFZhbGlkYXRpb25LZXlzID0ge1xuICBSRUZMRUNUOiBgJHtNb2RlbEtleXMuUkVGTEVDVH12YWxpZGF0aW9uLmAsXG4gIERBVEU6IFwiZGF0ZVwiLFxuICBFTUFJTDogXCJlbWFpbFwiLFxuICBGT1JNQVQ6IFwiZm9ybWF0XCIsXG4gIExJU1Q6IFwibGlzdFwiLFxuICBNQVg6IFwibWF4XCIsXG4gIE1BWF9MRU5HVEg6IFwibWF4bGVuZ3RoXCIsXG4gIE1JTjogXCJtaW5cIixcbiAgTUlOX0xFTkdUSDogXCJtaW5sZW5ndGhcIixcbiAgUEFTU1dPUkQ6IFwicGFzc3dvcmRcIixcbiAgUEFUVEVSTjogXCJwYXR0ZXJuXCIsXG4gIFJFUVVJUkVEOiBcInJlcXVpcmVkXCIsXG4gIFNURVA6IFwic3RlcFwiLFxuICBUWVBFOiBcInR5cGVcIixcbiAgVU5JUVVFOiBcInVuaXF1ZVwiLFxuICBVUkw6IFwidXJsXCIsXG4gIFZBTElEQVRPUjogXCJ2YWxpZGF0b3JcIixcbiAgLi4uQ29tcGFyaXNvblZhbGlkYXRpb25LZXlzLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBAc3VtbWFyeSBsaXN0IG9mIG1vbnRoIG5hbWVzXG4gKiBAZGVzY3JpcHRpb24gU3RvcmVzIG1vbnRoIG5hbWVzLiBDYW4gYmUgY2hhbmdlZCBmb3IgbG9jYWxpemF0aW9uIHB1cnBvc2VzXG4gKlxuICogQGNvbnN0YW50IE1PTlRIX05BTUVTXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBNT05USF9OQU1FUyA9IFtcbiAgXCJKYW51YXJ5XCIsXG4gIFwiRmVicnVhcnlcIixcbiAgXCJNYXJjaFwiLFxuICBcIkFwcmlsXCIsXG4gIFwiTWF5XCIsXG4gIFwiSnVuZVwiLFxuICBcIkp1bHlcIixcbiAgXCJBdWd1c3RcIixcbiAgXCJTZXB0ZW1iZXJcIixcbiAgXCJPY3RvYmVyXCIsXG4gIFwiTm92ZW1iZXJcIixcbiAgXCJEZWNlbWJlclwiLFxuXTtcblxuLyoqXG4gKiBAc3VtbWFyeSBsaXN0IG9mIG5hbWVzIG9mIGRheXMgb2YgdGhlIHdlZWtcbiAqIEBkZXNjcmlwdGlvbiBTdG9yZXMgbmFtZXMgZm9yIGRheXMgb2YgdGhlIHdlZWsuIENhbiBiZSBjaGFuZ2VkIGZvciBsb2NhbGl6YXRpb24gcHVycG9zZXNcbiAqXG4gKiBAY29uc3RhbnQgREFZU19PRl9XRUVLX05BTUVTXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBEQVlTX09GX1dFRUtfTkFNRVMgPSBbXG4gIFwiU3VuZGF5XCIsXG4gIFwiTW9uZGF5XCIsXG4gIFwiVHVlc2RheVwiLFxuICBcIldlZG5lc2RheVwiLFxuICBcIlRodXJzZGF5XCIsXG4gIFwiRnJpZGF5XCIsXG4gIFwiU2F0dXJkYXlcIixcbl07XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgZGVmYXVsdCBlcnJvciBtZXNzYWdlc1xuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRVFVSVJFRCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNSU4gZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTUFYIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1JTl9MRU5HVEggZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTUFYX0xFTkdUSCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBQQVRURVJOIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEVNQUlMIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFVSTCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBUWVBFIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFNURVAgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gREFURSBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBERUZBVUxUIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFBBU1NXT1JEIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IExJU1QgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTElTVF9JTlNJREUgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTU9ERUxfTk9UX0ZPVU5EIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICpcbiAqIEBjb25zdGFudCBERUZBVUxUX0VSUk9SX01FU1NBR0VTXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VSUk9SX01FU1NBR0VTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBSRVFVSVJFRDogXCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkXCIsXG4gIE1JTjogXCJUaGUgbWluaW11bSB2YWx1ZSBpcyB7MH1cIixcbiAgTUFYOiBcIlRoZSBtYXhpbXVtIHZhbHVlIGlzIHswfVwiLFxuICBNSU5fTEVOR1RIOiBcIlRoZSBtaW5pbXVtIGxlbmd0aCBpcyB7MH1cIixcbiAgTUFYX0xFTkdUSDogXCJUaGUgbWF4aW11bSBsZW5ndGggaXMgezB9XCIsXG4gIFBBVFRFUk46IFwiVGhlIHZhbHVlIGRvZXMgbm90IG1hdGNoIHRoZSBwYXR0ZXJuXCIsXG4gIEVNQUlMOiBcIlRoZSB2YWx1ZSBpcyBub3QgYSB2YWxpZCBlbWFpbFwiLFxuICBVUkw6IFwiVGhlIHZhbHVlIGlzIG5vdCBhIHZhbGlkIFVSTFwiLFxuICBUWVBFOiBcIkludmFsaWQgdHlwZS4gRXhwZWN0ZWQgezB9LCByZWNlaXZlZCB7MX1cIixcbiAgU1RFUDogXCJJbnZhbGlkIHZhbHVlLiBOb3QgYSBzdGVwIG9mIHswfVwiLFxuICBEQVRFOiBcIkludmFsaWQgdmFsdWUuIG5vdCBhIHZhbGlkIERhdGVcIixcbiAgREVGQVVMVDogXCJUaGVyZSBpcyBhbiBFcnJvclwiLFxuICBQQVNTV09SRDpcbiAgICBcIk11c3QgYmUgYXQgbGVhc3QgOCBjaGFyYWN0ZXJzIGFuZCBjb250YWluIG9uZSBvZiBudW1iZXIsIGxvd2VyIGFuZCB1cHBlciBjYXNlIGxldHRlcnMsIGFuZCBzcGVjaWFsIGNoYXJhY3RlciAoQCQhJSo/Jl8tLiwpXCIsXG4gIExJU1Q6IFwiSW52YWxpZCBsaXN0IG9mIHswfVwiLFxuICBNT0RFTF9OT1RfRk9VTkQ6IFwiTm8gbW9kZWwgcmVnaXN0ZXJlZCB1bmRlciB7MH1cIixcbiAgRVFVQUxTOiBcIlRoaXMgZmllbGQgbXVzdCBiZSBlcXVhbCB0byBmaWVsZCB7MH1cIixcbiAgRElGRjogXCJUaGlzIGZpZWxkIG11c3QgYmUgZGlmZmVyZW50IGZyb20gZmllbGQgezB9XCIsXG4gIExFU1NfVEhBTjogXCJUaGlzIGZpZWxkIG11c3QgYmUgbGVzcyB0aGFuIGZpZWxkIHswfVwiLFxuICBMRVNTX1RIQU5fT1JfRVFVQUw6IFwiVGhpcyBmaWVsZCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBmaWVsZCB7MH1cIixcbiAgR1JFQVRFUl9USEFOOiBcIlRoaXMgZmllbGQgbXVzdCBiZSBncmVhdGVyIHRoYW4gZmllbGQgezB9XCIsXG4gIEdSRUFURVJfVEhBTl9PUl9FUVVBTDpcbiAgICBcIlRoaXMgZmllbGQgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gZmllbGQgezB9XCIsXG4gIFVOSVFVRTogXCJEdXBsaWNhdGUgZm91bmQsIHRoaXMgZmllbGQgbXVzdCBiZSB1bmlxdWUuXCIsXG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHZhcmlvdXMgZGVmYXVsdCByZWdleHAgcGF0dGVybnMgdXNlZFxuICpcbiAqIEBlbnVtIERFRkFVTFRfUEFUVEVSTlNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUEFUVEVSTlMgPSB7XG4gIEVNQUlMOlxuICAgIC9bYS16QS1aMC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XFwuW2EtekEtWjAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKykqQCg/OlthLXpBLVowLTldKD86W2EtejAtOS1dKlthLXpBLVowLTldKT9cXC4pK1thLXpBLVowLTldKD86W2EtekEtWjAtOS1dKlthLXpBLVowLTldKT8vLFxuICBVUkw6IC9eKD86KD86KD86aHR0cHM/fGZ0cCk6KT9cXC9cXC8pKD86XFxTKyg/OjpcXFMqKT9AKT8oPzooPyEoPzoxMHwxMjcpKD86XFwuXFxkezEsM30pezN9KSg/ISg/OjE2OVxcLjI1NHwxOTJcXC4xNjgpKD86XFwuXFxkezEsM30pezJ9KSg/ITE3MlxcLig/OjFbNi05XXwyXFxkfDNbMC0xXSkoPzpcXC5cXGR7MSwzfSl7Mn0pKD86WzEtOV1cXGQ/fDFcXGRcXGR8MlswMV1cXGR8MjJbMC0zXSkoPzpcXC4oPzoxP1xcZHsxLDJ9fDJbMC00XVxcZHwyNVswLTVdKSl7Mn0oPzpcXC4oPzpbMS05XVxcZD98MVxcZFxcZHwyWzAtNF1cXGR8MjVbMC00XSkpfCg/Oig/OlthLXowLTlcXHUwMGExLVxcdWZmZmZdW2EtejAtOVxcdTAwYTEtXFx1ZmZmZl8tXXswLDYyfSk/W2EtejAtOVxcdTAwYTEtXFx1ZmZmZl1cXC4pKyg/OlthLXpcXHUwMGExLVxcdWZmZmZdezIsfVxcLj8pKSg/OjpcXGR7Miw1fSk/KD86Wy8/I11cXFMqKT8kL2ksXG4gIFBBU1NXT1JEOiB7XG4gICAgQ0hBUjhfT05FX09GX0VBQ0g6XG4gICAgICAvXig/PS4qW2Etel0pKD89LipbQS1aXSkoPz0uKlxcZCkoPz0uKltAJCElKj8mX1xcLS4sXSlbQS1aYS16XFxkQCQhJSo/Jl9cXC0uLF17OCx9JC9nLFxuICB9LFxufTtcbiJdfQ==
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZhbGlkYXRpb24vVmFsaWRhdG9ycy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxtQ0FBOEI7QUFFbEQ7Ozs7Ozs7Ozs7O0dBV0c7QUFFSDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDdEMsTUFBTSxFQUFFLFFBQVE7SUFDaEIsSUFBSSxFQUFFLFdBQVc7SUFDakIsU0FBUyxFQUFFLFVBQVU7SUFDckIsa0JBQWtCLEVBQUUsaUJBQWlCO0lBQ3JDLFlBQVksRUFBRSxhQUFhO0lBQzNCLHFCQUFxQixFQUFFLG9CQUFvQjtDQUNuQyxDQUFDO0FBRVg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUVIOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDLE9BQU8sYUFBYTtJQUMxQyxJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxPQUFPO0lBQ2QsTUFBTSxFQUFFLFFBQVE7SUFDaEIsSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLFVBQVUsRUFBRSxXQUFXO0lBQ3ZCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsVUFBVSxFQUFFLFdBQVc7SUFDdkIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsU0FBUyxFQUFFLFdBQVc7SUFDdEIsR0FBRyx3QkFBd0I7Q0FDbkIsQ0FBQztBQUVYOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixTQUFTO0lBQ1QsVUFBVTtJQUNWLE9BQU87SUFDUCxPQUFPO0lBQ1AsS0FBSztJQUNMLE1BQU07SUFDTixNQUFNO0lBQ04sUUFBUTtJQUNSLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLFVBQVU7Q0FDWCxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsUUFBUTtJQUNSLFFBQVE7SUFDUixTQUFTO0lBQ1QsV0FBVztJQUNYLFVBQVU7SUFDVixRQUFRO0lBQ1IsVUFBVTtDQUNYLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUg7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUEyQjtJQUM1RCxRQUFRLEVBQUUsd0JBQXdCO0lBQ2xDLEdBQUcsRUFBRSwwQkFBMEI7SUFDL0IsR0FBRyxFQUFFLDBCQUEwQjtJQUMvQixVQUFVLEVBQUUsMkJBQTJCO0lBQ3ZDLFVBQVUsRUFBRSwyQkFBMkI7SUFDdkMsT0FBTyxFQUFFLHNDQUFzQztJQUMvQyxLQUFLLEVBQUUsZ0NBQWdDO0lBQ3ZDLEdBQUcsRUFBRSw4QkFBOEI7SUFDbkMsSUFBSSxFQUFFLDBDQUEwQztJQUNoRCxJQUFJLEVBQUUsa0NBQWtDO0lBQ3hDLElBQUksRUFBRSxpQ0FBaUM7SUFDdkMsT0FBTyxFQUFFLG1CQUFtQjtJQUM1QixRQUFRLEVBQ04sNEhBQTRIO0lBQzlILElBQUksRUFBRSxxQkFBcUI7SUFDM0IsZUFBZSxFQUFFLCtCQUErQjtJQUNoRCxNQUFNLEVBQUUsdUNBQXVDO0lBQy9DLElBQUksRUFBRSw2Q0FBNkM7SUFDbkQsU0FBUyxFQUFFLHdDQUF3QztJQUNuRCxrQkFBa0IsRUFBRSxvREFBb0Q7SUFDeEUsWUFBWSxFQUFFLDJDQUEyQztJQUN6RCxxQkFBcUIsRUFDbkIsdURBQXVEO0lBQ3pELE1BQU0sRUFBRSw2Q0FBNkM7Q0FDdEQsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUVIOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixLQUFLLEVBQ0gsNEpBQTRKO0lBQzlKLEdBQUcsRUFBRSx5YUFBeWE7SUFDOWEsUUFBUSxFQUFFO1FBQ1IsaUJBQWlCLEVBQ2YsaUZBQWlGO0tBQ3BGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsS2V5cyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT2JqZWN0LWxpa2Ugc2V0IG9mIGtleXMgdXNlZCBmb3IgY29tcGFyaXNvbi1iYXNlZCB2YWxpZGF0aW9ucy5cbiAqIEBzdW1tYXJ5IFByb3ZpZGVzIGNhbm9uaWNhbCBuYW1lcyBmb3IgdmFsaWRhdG9ycyB0aGF0IGNvbXBhcmUgdHdvIHZhbHVlcyAoZXF1YWxpdHkgYW5kIG9yZGVyaW5nIGNoZWNrcykuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDb21wYXJpc29uVmFsaWRhdGlvbktleXNEZWZcbiAqIEBwcm9wZXJ0eSB7XCJlcXVhbHNcIn0gRVFVQUxTIFZhbGlkYXRlcyBpZiB0d28gdmFsdWVzIGFyZSBlcXVhbC5cbiAqIEBwcm9wZXJ0eSB7XCJkaWZmZXJlbnRcIn0gRElGRiBWYWxpZGF0ZXMgaWYgdHdvIHZhbHVlcyBhcmUgZGlmZmVyZW50LlxuICogQHByb3BlcnR5IHtcImxlc3NUaGFuXCJ9IExFU1NfVEhBTiBWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBsZXNzIHRoYW4gYW5vdGhlci5cbiAqIEBwcm9wZXJ0eSB7XCJsZXNzVGhhbk9yRXF1YWxcIn0gTEVTU19USEFOX09SX0VRVUFMIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBhbm90aGVyLlxuICogQHByb3BlcnR5IHtcImdyZWF0ZXJUaGFuXCJ9IEdSRUFURVJfVEhBTiBWYWxpZGF0ZXMgaWYgYSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gYW5vdGhlci5cbiAqIEBwcm9wZXJ0eSB7XCJncmVhdGVyVGhhbk9yRXF1YWxcIn0gR1JFQVRFUl9USEFOX09SX0VRVUFMIFZhbGlkYXRlcyBpZiBhIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBhbm90aGVyLlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKi9cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gS2V5cyB1c2VkIGZvciBjb21wYXJpc29uLWJhc2VkIHZhbGlkYXRpb25zLlxuICogQHN1bW1hcnkgQ2Fub25pY2FsIGtleSBuYW1lcyBmb3IgY29tcGFyaXNvbiB2YWxpZGF0b3JzLlxuICogQGNvbnN0IENvbXBhcmlzb25WYWxpZGF0aW9uS2V5c1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICogQHR5cGUge0NvbXBhcmlzb25WYWxpZGF0aW9uS2V5c0RlZn1cbiAqL1xuZXhwb3J0IGNvbnN0IENvbXBhcmlzb25WYWxpZGF0aW9uS2V5cyA9IHtcbiAgRVFVQUxTOiBcImVxdWFsc1wiLFxuICBESUZGOiBcImRpZmZlcmVudFwiLFxuICBMRVNTX1RIQU46IFwibGVzc1RoYW5cIixcbiAgTEVTU19USEFOX09SX0VRVUFMOiBcImxlc3NUaGFuT3JFcXVhbFwiLFxuICBHUkVBVEVSX1RIQU46IFwiZ3JlYXRlclRoYW5cIixcbiAgR1JFQVRFUl9USEFOX09SX0VRVUFMOiBcImdyZWF0ZXJUaGFuT3JFcXVhbFwiLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT2JqZWN0LWxpa2Ugc2V0IG9mIGtleXMgdXNlZCBhY3Jvc3MgYWxsIHZhbGlkYXRvcnMgaW4gdGhlIHN5c3RlbS5cbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNhbm9uaWNhbCBuYW1lc3BhY2VkIGtleSBwcmVmaXggYW5kIHRoZSBpbmRpdmlkdWFsIHZhbGlkYXRpb24gZmxhZ3MgZm9yIHJ1bGVzIHN1Y2ggYXMgcmVxdWlyZWQsIG1pbi9tYXgsIGxlbmd0aCwgcGF0dGVybnMsIHR5cGVzLCBsaXN0cyBhbmQgbW9yZS5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IFZhbGlkYXRpb25LZXlzRGVmXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVGTEVDVCBwcmVmaXhlcyBvdGhlcnMgKG5hbWVzcGFjZSBwcmVmaXgpXG4gKiBAcHJvcGVydHkge1wicmVxdWlyZWRcIn0gUkVRVUlSRUQgc2V0cyBhcyByZXF1aXJlZFxuICogQHByb3BlcnR5IHtcIm1pblwifSBNSU4gZGVmaW5lcyBtaW4gdmFsdWVcbiAqIEBwcm9wZXJ0eSB7XCJtYXhcIn0gTUFYIGRlZmluZXMgbWF4IHZhbHVlXG4gKiBAcHJvcGVydHkge1wic3RlcFwifSBTVEVQIGRlZmluZXMgc3RlcFxuICogQHByb3BlcnR5IHtcIm1pbmxlbmd0aFwifSBNSU5fTEVOR1RIIGRlZmluZXMgbWluIGxlbmd0aFxuICogQHByb3BlcnR5IHtcIm1heGxlbmd0aFwifSBNQVhfTEVOR1RIIGRlZmluZXMgbWF4IGxlbmd0aFxuICogQHByb3BlcnR5IHtcInBhdHRlcm5cIn0gUEFUVEVSTiBkZWZpbmVzIHBhdHRlcm5cbiAqIEBwcm9wZXJ0eSB7XCJlbWFpbFwifSBFTUFJTCBkZWZpbmVzIGVtYWlsXG4gKiBAcHJvcGVydHkge1widXJsXCJ9IFVSTCBkZWZpbmVzIHVybFxuICogQHByb3BlcnR5IHtcImRhdGVcIn0gREFURSBkZWZpbmVzIGRhdGVcbiAqIEBwcm9wZXJ0eSB7XCJ0eXBlXCJ9IFRZUEUgZGVmaW5lcyB0eXBlXG4gKiBAcHJvcGVydHkge1wicGFzc3dvcmRcIn0gUEFTU1dPUkQgZGVmaW5lcyBwYXNzd29yZFxuICogQHByb3BlcnR5IHtcImxpc3RcIn0gTElTVCBkZWZpbmVzIGxpc3RcbiAqIEBwcm9wZXJ0eSB7XCJ1bmlxdWVcIn0gVU5JUVVFIGZsYWdzIHVuaXF1ZW5lc3NcbiAqIEBwcm9wZXJ0eSB7XCJ2YWxpZGF0b3JcIn0gVkFMSURBVE9SIGN1c3RvbSB2YWxpZGF0b3IgaWRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICovXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBrZXlzIHVzZWQgZm9yIHZhbGlkYXRpb24uXG4gKiBAc3VtbWFyeSBBIG5hbWVzcGFjZWQgY29sbGVjdGlvbiBvZiB2YWxpZGF0aW9uIGtleSBzdHJpbmdzIHVzZWQgdGhyb3VnaG91dCB0aGUgbGlicmFyeS5cbiAqIEBjb25zdCBWYWxpZGF0aW9uS2V5c1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICogQHR5cGUge1ZhbGlkYXRpb25LZXlzRGVmfVxuICovXG5leHBvcnQgY29uc3QgVmFsaWRhdGlvbktleXMgPSB7XG4gIFJFRkxFQ1Q6IGAke01vZGVsS2V5cy5SRUZMRUNUfXZhbGlkYXRpb24uYCxcbiAgREFURTogXCJkYXRlXCIsXG4gIEVNQUlMOiBcImVtYWlsXCIsXG4gIEZPUk1BVDogXCJmb3JtYXRcIixcbiAgTElTVDogXCJsaXN0XCIsXG4gIE1BWDogXCJtYXhcIixcbiAgTUFYX0xFTkdUSDogXCJtYXhsZW5ndGhcIixcbiAgTUlOOiBcIm1pblwiLFxuICBNSU5fTEVOR1RIOiBcIm1pbmxlbmd0aFwiLFxuICBQQVNTV09SRDogXCJwYXNzd29yZFwiLFxuICBQQVRURVJOOiBcInBhdHRlcm5cIixcbiAgUkVRVUlSRUQ6IFwicmVxdWlyZWRcIixcbiAgU1RFUDogXCJzdGVwXCIsXG4gIFRZUEU6IFwidHlwZVwiLFxuICBVTklRVUU6IFwidW5pcXVlXCIsXG4gIFVSTDogXCJ1cmxcIixcbiAgVkFMSURBVE9SOiBcInZhbGlkYXRvclwiLFxuICAuLi5Db21wYXJpc29uVmFsaWRhdGlvbktleXMsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBsaXN0IG9mIG1vbnRoIG5hbWVzXG4gKiBAc3VtbWFyeSBTdG9yZXMgbW9udGggbmFtZXMuIENhbiBiZSBjaGFuZ2VkIGZvciBsb2NhbGl6YXRpb24gcHVycG9zZXNcbiAqIEBjb25zdCBNT05USF9OQU1FU1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QgTU9OVEhfTkFNRVMgPSBbXG4gIFwiSmFudWFyeVwiLFxuICBcIkZlYnJ1YXJ5XCIsXG4gIFwiTWFyY2hcIixcbiAgXCJBcHJpbFwiLFxuICBcIk1heVwiLFxuICBcIkp1bmVcIixcbiAgXCJKdWx5XCIsXG4gIFwiQXVndXN0XCIsXG4gIFwiU2VwdGVtYmVyXCIsXG4gIFwiT2N0b2JlclwiLFxuICBcIk5vdmVtYmVyXCIsXG4gIFwiRGVjZW1iZXJcIixcbl07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIGxpc3Qgb2YgbmFtZXMgb2YgZGF5cyBvZiB0aGUgd2Vla1xuICogQHN1bW1hcnkgU3RvcmVzIG5hbWVzIGZvciBkYXlzIG9mIHRoZSB3ZWVrLiBDYW4gYmUgY2hhbmdlZCBmb3IgbG9jYWxpemF0aW9uIHB1cnBvc2VzXG4gKiBAY29uc3QgREFZU19PRl9XRUVLX05BTUVTXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBEQVlTX09GX1dFRUtfTkFNRVMgPSBbXG4gIFwiU3VuZGF5XCIsXG4gIFwiTW9uZGF5XCIsXG4gIFwiVHVlc2RheVwiLFxuICBcIldlZG5lc2RheVwiLFxuICBcIlRodXJzZGF5XCIsXG4gIFwiRnJpZGF5XCIsXG4gIFwiU2F0dXJkYXlcIixcbl07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgZGVmaW5pdGlvbiBmb3IgZGVmYXVsdCBlcnJvciBtZXNzYWdlIHN0cmluZ3Mga2V5ZWQgYnkgdmFsaWRhdGlvbiB0eXBlLlxuICogQHN1bW1hcnkgRW51bWVyYXRlcyB0aGUgc3VwcG9ydGVkIGVycm9yIG1lc3NhZ2Uga2V5cyB3aXRoIHRoZWlyIGludGVuZGVkIG1lYW5pbmc7IHVzZWQgdG8gbG9jYWxpemUgb3Igb3ZlcnJpZGUgZGVmYXVsdCBtZXNzYWdlcy5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IERlZmF1bHRFcnJvck1lc3NhZ2VzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVRVUlSRUQgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTUlOIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1BWCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNSU5fTEVOR1RIIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1BWF9MRU5HVEggZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUEFUVEVSTiBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBFTUFJTCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBVUkwgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gVFlQRSBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBTVEVQIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IERBVEUgZGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gREVGQVVMVCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBQQVNTV09SRCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBMSVNUIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IExJU1RfSU5TSURFIGRlZmF1bHQgZXJyb3IgbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1PREVMX05PVF9GT1VORCBkZWZhdWx0IGVycm9yIG1lc3NhZ2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICovXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlZmluZXMgdGhlIGRlZmF1bHQgZXJyb3IgbWVzc2FnZXNcbiAqIEBzdW1tYXJ5IE1hcHBpbmcgYmV0d2VlbiB2YWxpZGF0aW9uIGtleXMgYW5kIHRoZWlyIGRlZmF1bHQgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZXMuXG4gKiBAY29uc3QgREVGQVVMVF9FUlJPUl9NRVNTQUdFU1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICogQHR5cGUge0RlZmF1bHRFcnJvck1lc3NhZ2VzfVxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FUlJPUl9NRVNTQUdFUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgUkVRVUlSRUQ6IFwiVGhpcyBmaWVsZCBpcyByZXF1aXJlZFwiLFxuICBNSU46IFwiVGhlIG1pbmltdW0gdmFsdWUgaXMgezB9XCIsXG4gIE1BWDogXCJUaGUgbWF4aW11bSB2YWx1ZSBpcyB7MH1cIixcbiAgTUlOX0xFTkdUSDogXCJUaGUgbWluaW11bSBsZW5ndGggaXMgezB9XCIsXG4gIE1BWF9MRU5HVEg6IFwiVGhlIG1heGltdW0gbGVuZ3RoIGlzIHswfVwiLFxuICBQQVRURVJOOiBcIlRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcGF0dGVyblwiLFxuICBFTUFJTDogXCJUaGUgdmFsdWUgaXMgbm90IGEgdmFsaWQgZW1haWxcIixcbiAgVVJMOiBcIlRoZSB2YWx1ZSBpcyBub3QgYSB2YWxpZCBVUkxcIixcbiAgVFlQRTogXCJJbnZhbGlkIHR5cGUuIEV4cGVjdGVkIHswfSwgcmVjZWl2ZWQgezF9XCIsXG4gIFNURVA6IFwiSW52YWxpZCB2YWx1ZS4gTm90IGEgc3RlcCBvZiB7MH1cIixcbiAgREFURTogXCJJbnZhbGlkIHZhbHVlLiBub3QgYSB2YWxpZCBEYXRlXCIsXG4gIERFRkFVTFQ6IFwiVGhlcmUgaXMgYW4gRXJyb3JcIixcbiAgUEFTU1dPUkQ6XG4gICAgXCJNdXN0IGJlIGF0IGxlYXN0IDggY2hhcmFjdGVycyBhbmQgY29udGFpbiBvbmUgb2YgbnVtYmVyLCBsb3dlciBhbmQgdXBwZXIgY2FzZSBsZXR0ZXJzLCBhbmQgc3BlY2lhbCBjaGFyYWN0ZXIgKEAkISUqPyZfLS4sKVwiLFxuICBMSVNUOiBcIkludmFsaWQgbGlzdCBvZiB7MH1cIixcbiAgTU9ERUxfTk9UX0ZPVU5EOiBcIk5vIG1vZGVsIHJlZ2lzdGVyZWQgdW5kZXIgezB9XCIsXG4gIEVRVUFMUzogXCJUaGlzIGZpZWxkIG11c3QgYmUgZXF1YWwgdG8gZmllbGQgezB9XCIsXG4gIERJRkY6IFwiVGhpcyBmaWVsZCBtdXN0IGJlIGRpZmZlcmVudCBmcm9tIGZpZWxkIHswfVwiLFxuICBMRVNTX1RIQU46IFwiVGhpcyBmaWVsZCBtdXN0IGJlIGxlc3MgdGhhbiBmaWVsZCB7MH1cIixcbiAgTEVTU19USEFOX09SX0VRVUFMOiBcIlRoaXMgZmllbGQgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gZmllbGQgezB9XCIsXG4gIEdSRUFURVJfVEhBTjogXCJUaGlzIGZpZWxkIG11c3QgYmUgZ3JlYXRlciB0aGFuIGZpZWxkIHswfVwiLFxuICBHUkVBVEVSX1RIQU5fT1JfRVFVQUw6XG4gICAgXCJUaGlzIGZpZWxkIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGZpZWxkIHswfVwiLFxuICBVTklRVUU6IFwiRHVwbGljYXRlIGZvdW5kLCB0aGlzIGZpZWxkIG11c3QgYmUgdW5pcXVlLlwiLFxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSBkZWZpbml0aW9uIGZvciBkZWZhdWx0IHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJucyB1c2VkIGluIHZhbGlkYXRpb24uXG4gKiBAc3VtbWFyeSBDYXB0dXJlcyBjb21tb24gcmVnZXggcGF0dGVybnMgZm9yIGVtYWlsLCBVUkwsIGFuZCBwYXNzd29yZCBwb2xpY2llcywgaW5jbHVkaW5nIG5lc3RlZCBncm91cGluZyBmb3IgcGFzc3dvcmQtcmVsYXRlZCBydWxlcy5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IERlZmF1bHRQYXR0ZXJuc1xuICogQHByb3BlcnR5IHtSZWdFeHB9IEVNQUlMIEVtYWlsIGFkZHJlc3MgdmFsaWRhdGlvbiBwYXR0ZXJuXG4gKiBAcHJvcGVydHkge1JlZ0V4cH0gVVJMIFVSTCB2YWxpZGF0aW9uIHBhdHRlcm5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBQQVNTV09SRCBQYXNzd29yZC1yZWxhdGVkIHJlZ2V4IHBhdHRlcm5zXG4gKiBAcHJvcGVydHkge1JlZ0V4cH0gUEFTU1dPUkQuQ0hBUjhfT05FX09GX0VBQ0ggQXQgbGVhc3QgOCBjaGFycyB3aXRoIGxvd2VyLCB1cHBlciwgbnVtYmVyLCBhbmQgc3BlY2lhbCBjaGFyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqL1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIHRoZSB2YXJpb3VzIGRlZmF1bHQgcmVnZXhwIHBhdHRlcm5zIHVzZWRcbiAqIEBzdW1tYXJ5IENvbGxlY3Rpb24gb2YgZnJlcXVlbnRseSB1c2VkIHZhbGlkYXRpb24gcGF0dGVybnMgZ3JvdXBlZCB1bmRlciBzZW1hbnRpYyBrZXlzLlxuICogQGNvbnN0IERFRkFVTFRfUEFUVEVSTlNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqIEB0eXBlIHtEZWZhdWx0UGF0dGVybnN9XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BBVFRFUk5TID0ge1xuICBFTUFJTDpcbiAgICAvW2EtekEtWjAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKyg/OlxcLlthLXpBLVowLTkhIyQlJicqKy89P15fYHt8fX4tXSspKkAoPzpbYS16QS1aMC05XSg/OlthLXowLTktXSpbYS16QS1aMC05XSk/XFwuKStbYS16QS1aMC05XSg/OlthLXpBLVowLTktXSpbYS16QS1aMC05XSk/LyxcbiAgVVJMOiAvXig/Oig/Oig/Omh0dHBzP3xmdHApOik/XFwvXFwvKSg/OlxcUysoPzo6XFxTKik/QCk/KD86KD8hKD86MTB8MTI3KSg/OlxcLlxcZHsxLDN9KXszfSkoPyEoPzoxNjlcXC4yNTR8MTkyXFwuMTY4KSg/OlxcLlxcZHsxLDN9KXsyfSkoPyExNzJcXC4oPzoxWzYtOV18MlxcZHwzWzAtMV0pKD86XFwuXFxkezEsM30pezJ9KSg/OlsxLTldXFxkP3wxXFxkXFxkfDJbMDFdXFxkfDIyWzAtM10pKD86XFwuKD86MT9cXGR7MSwyfXwyWzAtNF1cXGR8MjVbMC01XSkpezJ9KD86XFwuKD86WzEtOV1cXGQ/fDFcXGRcXGR8MlswLTRdXFxkfDI1WzAtNF0pKXwoPzooPzpbYS16MC05XFx1MDBhMS1cXHVmZmZmXVthLXowLTlcXHUwMGExLVxcdWZmZmZfLV17MCw2Mn0pP1thLXowLTlcXHUwMGExLVxcdWZmZmZdXFwuKSsoPzpbYS16XFx1MDBhMS1cXHVmZmZmXXsyLH1cXC4/KSkoPzo6XFxkezIsNX0pPyg/OlsvPyNdXFxTKik/JC9pLFxuICBQQVNTV09SRDoge1xuICAgIENIQVI4X09ORV9PRl9FQUNIOlxuICAgICAgL14oPz0uKlthLXpdKSg/PS4qW0EtWl0pKD89LipcXGQpKD89LipbQCQhJSo/Jl9cXC0uLF0pW0EtWmEtelxcZEAkISUqPyZfXFwtLixdezgsfSQvZyxcbiAgfSxcbn07XG4iXX0=
|
package/lib/index.cjs
CHANGED
|
@@ -33,5 +33,5 @@ __exportStar(require("./model/index.cjs"), exports);
|
|
|
33
33
|
* @const VERSION
|
|
34
34
|
* @memberOf module:decorator-validation
|
|
35
35
|
*/
|
|
36
|
-
exports.VERSION = "1.7.
|
|
36
|
+
exports.VERSION = "1.7.18";
|
|
37
37
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7O0dBTUc7QUFDSCx3REFBNEI7QUFDNUIsb0RBQXdCO0FBQ3hCLG9EQUF3QjtBQUN4Qix5REFBNkI7QUFDN0Isb0RBQXdCO0FBRXhCOzs7OztHQUtHO0FBQ1UsUUFBQSxPQUFPLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAZGVzY3JpcHRpb24gVHlwZVNjcmlwdCBkZWNvcmF0b3ItYmFzZWQgdmFsaWRhdGlvbiBsaWJyYXJ5XG4gKiBAc3VtbWFyeSBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgdmFsaWRhdGlvbiBmcmFtZXdvcmsgdXNpbmcgVHlwZVNjcmlwdCBkZWNvcmF0b3JzLlxuICogSXQgZXhwb3NlcyB1dGlsaXR5IGZ1bmN0aW9ucywgdmFsaWRhdGlvbiBkZWNvcmF0b3JzLCBhbmQgbW9kZWwtcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGZvclxuICogaW1wbGVtZW50aW5nIHR5cGUtc2FmZSwgZGVjbGFyYXRpdmUgdmFsaWRhdGlvbiBpbiBUeXBlU2NyaXB0IGFwcGxpY2F0aW9ucy5cbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZhbGlkYXRpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL21vZGVsXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgcmVmbGVjdGlvbiBwYWNrYWdlXG4gKiBAc3VtbWFyeSBTdG9yZXMgdGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBwYWNrYWdlXG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcbiJdfQ==
|
package/lib/index.d.ts
CHANGED
|
@@ -3,6 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ModelContextProtocol = void 0;
|
|
4
4
|
const fastmcp_1 = require("fastmcp");
|
|
5
5
|
const logging_1 = require("@decaf-ts/logging");
|
|
6
|
+
/**
|
|
7
|
+
* @description Validates and normalizes a semantic version string.
|
|
8
|
+
* @summary Ensures the provided version follows semantic versioning (major.minor.patch) and returns a tuple-like template string typed as `${number}.${number}.${number}`.
|
|
9
|
+
* @template
|
|
10
|
+
* @param {string} version The version string to validate, expected in the form MAJOR.MINOR.PATCH.
|
|
11
|
+
* @return {string} The normalized version string if valid.
|
|
12
|
+
* @function validateVersion
|
|
13
|
+
* @memberOf module:decorator-validation
|
|
14
|
+
*/
|
|
6
15
|
function validateVersion(version) {
|
|
7
16
|
const regexp = /(\d+)\.(\d+)\.(\d+)/g;
|
|
8
17
|
const match = regexp.exec(version);
|
|
@@ -10,21 +19,69 @@ function validateVersion(version) {
|
|
|
10
19
|
throw new Error(`Invalid version string. should obey semantic versioning: ${version}`);
|
|
11
20
|
return `${match[1]}.${match[2]}.${match[3]}`;
|
|
12
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* @description Fluent builder for creating a configured ModelContextProtocol instance.
|
|
24
|
+
* @summary Collects MCP configuration including a semantic version, a name, and a registry of tools, offering chainable methods and a final build step to produce a ready-to-use ModelContextProtocol.
|
|
25
|
+
* @param {string} [name] The name of the MCP instance to build.
|
|
26
|
+
* @param {string} [version] The semantic version of the MCP instance.
|
|
27
|
+
* @param {Record<string, Tool<any, any>>} [tools] A map of tool configurations indexed by tool name.
|
|
28
|
+
* @class
|
|
29
|
+
* @example
|
|
30
|
+
* // Build a new MCP with a single tool
|
|
31
|
+
* const mcp = ModelContextProtocol.builder
|
|
32
|
+
* .setName("Example")
|
|
33
|
+
* .setVersion("1.0.0")
|
|
34
|
+
* .addTool({ name: "do", description: "", parameters: z.any(), execute: async () => "ok" })
|
|
35
|
+
* .build();
|
|
36
|
+
* @mermaid
|
|
37
|
+
* sequenceDiagram
|
|
38
|
+
* participant Dev as Developer
|
|
39
|
+
* participant B as Builder
|
|
40
|
+
* participant MCP as ModelContextProtocol
|
|
41
|
+
* Dev->>B: setName("Example")
|
|
42
|
+
* B-->>Dev: Builder
|
|
43
|
+
* Dev->>B: setVersion("1.0.0")
|
|
44
|
+
* B-->>Dev: Builder
|
|
45
|
+
* Dev->>B: addTool(tool)
|
|
46
|
+
* B-->>Dev: Builder
|
|
47
|
+
* Dev->>B: build()
|
|
48
|
+
* B->>MCP: new ModelContextProtocol(FastMCP)
|
|
49
|
+
* B-->>Dev: ModelContextProtocol
|
|
50
|
+
*/
|
|
13
51
|
class Builder {
|
|
14
52
|
constructor() {
|
|
15
53
|
this.tools = {};
|
|
16
54
|
this.log = logging_1.Logging.for("MCP Builder");
|
|
17
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* @description Sets the MCP instance name.
|
|
58
|
+
* @summary Assigns a human-readable identifier to the builder configuration and enables method chaining.
|
|
59
|
+
* @param {string} value The name to assign to the MCP instance.
|
|
60
|
+
* @return {this} The current builder instance for chaining.
|
|
61
|
+
*/
|
|
18
62
|
setName(value) {
|
|
19
63
|
this.name = value;
|
|
20
64
|
this.log.debug(`name set to ${value}`);
|
|
21
65
|
return this;
|
|
22
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* @description Sets and validates the semantic version for the MCP instance.
|
|
69
|
+
* @summary Parses the provided value against semantic versioning and stores the normalized version; enables method chaining.
|
|
70
|
+
* @param {string} value The semantic version string (e.g., "1.2.3").
|
|
71
|
+
* @return {this} The current builder instance for chaining.
|
|
72
|
+
*/
|
|
23
73
|
setVersion(value) {
|
|
24
74
|
this.version = validateVersion(value);
|
|
25
75
|
this.log.debug(`version set to ${value}`);
|
|
26
76
|
return this;
|
|
27
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* @description Registers a new tool in the builder.
|
|
80
|
+
* @summary Adds a tool configuration by its unique name to the internal registry, throwing if a tool with the same name already exists.
|
|
81
|
+
* @template Auth extends FastMCPSessionAuth
|
|
82
|
+
* @param {Tool<Auth, any>} config The tool configuration object, including a unique name and an execute handler.
|
|
83
|
+
* @return {this} The current builder instance for chaining.
|
|
84
|
+
*/
|
|
28
85
|
addTool(config) {
|
|
29
86
|
const { name } = config;
|
|
30
87
|
if (name in this.tools)
|
|
@@ -33,6 +90,12 @@ class Builder {
|
|
|
33
90
|
this.log.debug(`tool ${name} added`);
|
|
34
91
|
return this;
|
|
35
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* @description Finalizes the configuration and produces a ModelContextProtocol instance.
|
|
95
|
+
* @summary Validates required fields (name and version), constructs a FastMCP instance, registers all configured tools, and returns a ModelContextProtocol wrapping the MCP.
|
|
96
|
+
* @template Auth extends FastMCPSessionAuth
|
|
97
|
+
* @return {ModelContextProtocol<Auth>} A fully initialized ModelContextProtocol instance.
|
|
98
|
+
*/
|
|
36
99
|
build() {
|
|
37
100
|
if (!this.name)
|
|
38
101
|
throw new Error("name is required");
|
|
@@ -55,20 +118,66 @@ class Builder {
|
|
|
55
118
|
return new ModelContextProtocol(mcp);
|
|
56
119
|
}
|
|
57
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* @description A thin wrapper around FastMCP providing a typed interface for model-centric protocols.
|
|
123
|
+
* @summary Encapsulates a configured FastMCP instance and exposes factory utilities via a static Builder for constructing MCPs with tools, versioning, and naming semantics.
|
|
124
|
+
* @template Auth extends FastMCPSessionAuth Authentication payload type stored in the MCP session, or undefined for no auth.
|
|
125
|
+
* @param {FastMCP<Auth>} mcp The underlying FastMCP instance used to register and run tools.
|
|
126
|
+
* @class
|
|
127
|
+
* @example
|
|
128
|
+
* // Using the builder
|
|
129
|
+
* const protocol = ModelContextProtocol.builder
|
|
130
|
+
* .setName("Validator")
|
|
131
|
+
* .setVersion("1.2.3")
|
|
132
|
+
* .addTool({ name: "ping", description: "", parameters: z.any(), execute: async () => "pong" })
|
|
133
|
+
* .build();
|
|
134
|
+
* @mermaid
|
|
135
|
+
* sequenceDiagram
|
|
136
|
+
* participant Dev as Developer
|
|
137
|
+
* participant B as ModelContextProtocol.Builder
|
|
138
|
+
* participant MCP as FastMCP
|
|
139
|
+
* participant Proto as ModelContextProtocol
|
|
140
|
+
* Dev->>B: setName()/setVersion()/addTool()
|
|
141
|
+
* Dev->>B: build()
|
|
142
|
+
* B->>MCP: new FastMCP({ name, version })
|
|
143
|
+
* B->>MCP: addTool(tool...)
|
|
144
|
+
* B->>Proto: new ModelContextProtocol(MCP)
|
|
145
|
+
* B-->>Dev: ModelContextProtocol
|
|
146
|
+
*/
|
|
58
147
|
class ModelContextProtocol {
|
|
148
|
+
/**
|
|
149
|
+
* @description Lazily obtains a logger instance for this protocol wrapper.
|
|
150
|
+
* @summary Uses the Logging facility to create a context-aware Logger bound to this instance.
|
|
151
|
+
* @return {Logger} A logger instance for this class.
|
|
152
|
+
*/
|
|
59
153
|
get log() {
|
|
60
154
|
return logging_1.Logging.for(this);
|
|
61
155
|
}
|
|
62
156
|
constructor(mcp) {
|
|
63
157
|
this.mcp = mcp;
|
|
64
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* @description Alias to the inner Builder class for external access.
|
|
161
|
+
* @summary Exposes the builder type to consumers to enable typed construction of ModelContextProtocol instances.
|
|
162
|
+
*/
|
|
65
163
|
static { this.Builder = Builder; }
|
|
164
|
+
/**
|
|
165
|
+
* @description Factory accessor for a new Builder instance.
|
|
166
|
+
* @summary Creates a new builder to fluently configure and construct a ModelContextProtocol.
|
|
167
|
+
* @return {Builder} A new builder instance.
|
|
168
|
+
*/
|
|
66
169
|
static get builder() {
|
|
67
170
|
return new ModelContextProtocol.Builder();
|
|
68
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* @description Validates a semantic version string.
|
|
174
|
+
* @summary Utility wrapper around the module-level validateVersion to keep a typed validator close to the class API.
|
|
175
|
+
* @param {string} version The version string to validate.
|
|
176
|
+
* @return {string} The normalized semantic version string.
|
|
177
|
+
*/
|
|
69
178
|
static validateVersion(version) {
|
|
70
179
|
return validateVersion(version);
|
|
71
180
|
}
|
|
72
181
|
}
|
|
73
182
|
exports.ModelContextProtocol = ModelContextProtocol;
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxDb250ZXh0UHJvdG9jb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWNwL01vZGVsQ29udGV4dFByb3RvY29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUF3QztBQUN4QywrQ0FBb0Q7QUFHcEQsU0FBUyxlQUFlLENBQUMsT0FBZTtJQUN0QyxNQUFNLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQztJQUN0QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLElBQUksQ0FBQyxLQUFLO1FBQ1IsTUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsT0FBTyxFQUFFLENBQ3RFLENBQUM7SUFDSixPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQXFDLENBQUM7QUFDbEYsQ0FBQztBQUVELE1BQU0sT0FBTztJQU9YO1FBSkEsVUFBSyxHQUFtQyxFQUFFLENBQUM7UUFFM0MsUUFBRyxHQUFHLGlCQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRWxCLENBQUM7SUFFaEIsT0FBTyxDQUFDLEtBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGtCQUFrQixLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sQ0FDTCxNQUF1QjtRQUV2QixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQ3hCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUkscUJBQXFCLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSztRQUdILElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDMUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBTyxDQUFPO1lBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUM7Z0JBQ0gsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQ1osR0FBRyxJQUFJLENBQUMsSUFBSSwyQkFBMkIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQzVFLENBQUM7UUFDRixPQUFPLElBQUksb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBRUQsTUFBYSxvQkFBb0I7SUFDL0IsSUFBYyxHQUFHO1FBQ2YsT0FBTyxpQkFBTyxDQUFDLEdBQUcsQ0FBQyxJQUFXLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsWUFBK0IsR0FBa0I7UUFBbEIsUUFBRyxHQUFILEdBQUcsQ0FBZTtJQUFHLENBQUM7YUFFckMsWUFBTyxHQUFHLE9BQU8sQ0FBQztJQUVsQyxNQUFNLEtBQUssT0FBTztRQUNoQixPQUFPLElBQUksb0JBQW9CLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxlQUFlLENBQzVCLE9BQWU7UUFFZixPQUFPLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDOztBQWpCSCxvREFrQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYXN0TUNQLCBUb29sIH0gZnJvbSBcImZhc3RtY3BcIjtcbmltcG9ydCB7IExvZ2dlciwgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgRmFzdE1DUFNlc3Npb25BdXRoIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZnVuY3Rpb24gdmFsaWRhdGVWZXJzaW9uKHZlcnNpb246IHN0cmluZyk6IGAke251bWJlcn0uJHtudW1iZXJ9LiR7bnVtYmVyfWAge1xuICBjb25zdCByZWdleHAgPSAvKFxcZCspXFwuKFxcZCspXFwuKFxcZCspL2c7XG4gIGNvbnN0IG1hdGNoID0gcmVnZXhwLmV4ZWModmVyc2lvbik7XG4gIGlmICghbWF0Y2gpXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgdmVyc2lvbiBzdHJpbmcuIHNob3VsZCBvYmV5IHNlbWFudGljIHZlcnNpb25pbmc6ICR7dmVyc2lvbn1gXG4gICAgKTtcbiAgcmV0dXJuIGAke21hdGNoWzFdfS4ke21hdGNoWzJdfS4ke21hdGNoWzNdfWAgYXMgYCR7bnVtYmVyfS4ke251bWJlcn0uJHtudW1iZXJ9YDtcbn1cblxuY2xhc3MgQnVpbGRlciB7XG4gIG5hbWUhOiBzdHJpbmc7XG4gIHZlcnNpb24hOiBgJHtudW1iZXJ9LiR7bnVtYmVyfS4ke251bWJlcn1gO1xuICB0b29sczogUmVjb3JkPHN0cmluZywgVG9vbDxhbnksIGFueT4+ID0ge307XG5cbiAgbG9nID0gTG9nZ2luZy5mb3IoXCJNQ1AgQnVpbGRlclwiKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgc2V0TmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5uYW1lID0gdmFsdWU7XG4gICAgdGhpcy5sb2cuZGVidWcoYG5hbWUgc2V0IHRvICR7dmFsdWV9YCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRWZXJzaW9uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZlcnNpb24gPSB2YWxpZGF0ZVZlcnNpb24odmFsdWUpO1xuICAgIHRoaXMubG9nLmRlYnVnKGB2ZXJzaW9uIHNldCB0byAke3ZhbHVlfWApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkVG9vbDxBdXRoIGV4dGVuZHMgRmFzdE1DUFNlc3Npb25BdXRoID0gdW5kZWZpbmVkPihcbiAgICBjb25maWc6IFRvb2w8QXV0aCwgYW55PlxuICApIHtcbiAgICBjb25zdCB7IG5hbWUgfSA9IGNvbmZpZztcbiAgICBpZiAobmFtZSBpbiB0aGlzLnRvb2xzKSB0aHJvdyBuZXcgRXJyb3IoYHRvb2wgJHtuYW1lfSBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtcbiAgICB0aGlzLnRvb2xzW25hbWVdID0gY29uZmlnO1xuICAgIHRoaXMubG9nLmRlYnVnKGB0b29sICR7bmFtZX0gYWRkZWRgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGJ1aWxkPFxuICAgIEF1dGggZXh0ZW5kcyBGYXN0TUNQU2Vzc2lvbkF1dGggPSB1bmRlZmluZWQsXG4gID4oKTogTW9kZWxDb250ZXh0UHJvdG9jb2w8QXV0aD4ge1xuICAgIGlmICghdGhpcy5uYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJuYW1lIGlzIHJlcXVpcmVkXCIpO1xuICAgIGlmICghdGhpcy52ZXJzaW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJ2ZXJzaW9uIGlzIHJlcXVpcmVkXCIpO1xuICAgIGNvbnN0IG1jcCA9IG5ldyBGYXN0TUNQPEF1dGg+KHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICB9KTtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMudG9vbHMpLmZvckVhY2goKHRvb2wpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG1jcC5hZGRUb29sKHRvb2wpO1xuICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBhZGQgdG9vbCAke3Rvb2wubmFtZX06ICR7ZX1gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmxvZy5pbmZvKGAke3RoaXMubmFtZX0gTUNQIGJ1aWx0YCk7XG4gICAgdGhpcy5sb2cuZGVidWcoXG4gICAgICBgJHt0aGlzLm5hbWV9IE1DUCAtIGF2YWlsYWJsZSB0b29sczogJHtPYmplY3Qua2V5cyh0aGlzLnRvb2xzKS5qb2luKFwiLCBcIil9YFxuICAgICk7XG4gICAgcmV0dXJuIG5ldyBNb2RlbENvbnRleHRQcm90b2NvbChtY3ApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNb2RlbENvbnRleHRQcm90b2NvbDxBdXRoIGV4dGVuZHMgRmFzdE1DUFNlc3Npb25BdXRoID0gdW5kZWZpbmVkPiB7XG4gIHByb3RlY3RlZCBnZXQgbG9nKCk6IExvZ2dlciB7XG4gICAgcmV0dXJuIExvZ2dpbmcuZm9yKHRoaXMgYXMgYW55KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBtY3A6IEZhc3RNQ1A8QXV0aD4pIHt9XG5cbiAgc3RhdGljIHJlYWRvbmx5IEJ1aWxkZXIgPSBCdWlsZGVyO1xuXG4gIHN0YXRpYyBnZXQgYnVpbGRlcigpIHtcbiAgICByZXR1cm4gbmV3IE1vZGVsQ29udGV4dFByb3RvY29sLkJ1aWxkZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHZhbGlkYXRlVmVyc2lvbihcbiAgICB2ZXJzaW9uOiBzdHJpbmdcbiAgKTogYCR7bnVtYmVyfS4ke251bWJlcn0uJHtudW1iZXJ9YCB7XG4gICAgcmV0dXJuIHZhbGlkYXRlVmVyc2lvbih2ZXJzaW9uKTtcbiAgfVxufVxuIl19
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxDb250ZXh0UHJvdG9jb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWNwL01vZGVsQ29udGV4dFByb3RvY29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUF3QztBQUN4QywrQ0FBb0Q7QUFHcEQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxPQUFlO0lBQ3RDLE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDO0lBQ3RDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsSUFBSSxDQUFDLEtBQUs7UUFDUixNQUFNLElBQUksS0FBSyxDQUNiLDREQUE0RCxPQUFPLEVBQUUsQ0FDdEUsQ0FBQztJQUNKLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBcUMsQ0FBQztBQUNsRixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSCxNQUFNLE9BQU87SUFPWDtRQUpBLFVBQUssR0FBbUMsRUFBRSxDQUFDO1FBRTNDLFFBQUcsR0FBRyxpQkFBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVsQixDQUFDO0lBRWhCOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLEtBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsT0FBTyxDQUNMLE1BQXVCO1FBRXZCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFDeEIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUs7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUs7UUFHSCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzFELE1BQU0sR0FBRyxHQUFHLElBQUksaUJBQU8sQ0FBTztZQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDO2dCQUNILEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsQ0FBQztZQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUNaLEdBQUcsSUFBSSxDQUFDLElBQUksMkJBQTJCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUM1RSxDQUFDO1FBQ0YsT0FBTyxJQUFJLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBQ0gsTUFBYSxvQkFBb0I7SUFDL0I7Ozs7T0FJRztJQUNILElBQWMsR0FBRztRQUNmLE9BQU8saUJBQU8sQ0FBQyxHQUFHLENBQUMsSUFBVyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFlBQStCLEdBQWtCO1FBQWxCLFFBQUcsR0FBSCxHQUFHLENBQWU7SUFBRyxDQUFDO0lBRXJEOzs7T0FHRzthQUNhLFlBQU8sR0FBRyxPQUFPLENBQUM7SUFFbEM7Ozs7T0FJRztJQUNILE1BQU0sS0FBSyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxNQUFNLENBQUMsZUFBZSxDQUM1QixPQUFlO1FBRWYsT0FBTyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7QUFyQ0gsb0RBc0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFzdE1DUCwgVG9vbCB9IGZyb20gXCJmYXN0bWNwXCI7XG5pbXBvcnQgeyBMb2dnZXIsIExvZ2dpbmcgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7IEZhc3RNQ1BTZXNzaW9uQXV0aCB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRlcyBhbmQgbm9ybWFsaXplcyBhIHNlbWFudGljIHZlcnNpb24gc3RyaW5nLlxuICogQHN1bW1hcnkgRW5zdXJlcyB0aGUgcHJvdmlkZWQgdmVyc2lvbiBmb2xsb3dzIHNlbWFudGljIHZlcnNpb25pbmcgKG1ham9yLm1pbm9yLnBhdGNoKSBhbmQgcmV0dXJucyBhIHR1cGxlLWxpa2UgdGVtcGxhdGUgc3RyaW5nIHR5cGVkIGFzIGAke251bWJlcn0uJHtudW1iZXJ9LiR7bnVtYmVyfWAuXG4gKiBAdGVtcGxhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzaW9uIFRoZSB2ZXJzaW9uIHN0cmluZyB0byB2YWxpZGF0ZSwgZXhwZWN0ZWQgaW4gdGhlIGZvcm0gTUFKT1IuTUlOT1IuUEFUQ0guXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBub3JtYWxpemVkIHZlcnNpb24gc3RyaW5nIGlmIHZhbGlkLlxuICogQGZ1bmN0aW9uIHZhbGlkYXRlVmVyc2lvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVZlcnNpb24odmVyc2lvbjogc3RyaW5nKTogYCR7bnVtYmVyfS4ke251bWJlcn0uJHtudW1iZXJ9YCB7XG4gIGNvbnN0IHJlZ2V4cCA9IC8oXFxkKylcXC4oXFxkKylcXC4oXFxkKykvZztcbiAgY29uc3QgbWF0Y2ggPSByZWdleHAuZXhlYyh2ZXJzaW9uKTtcbiAgaWYgKCFtYXRjaClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCB2ZXJzaW9uIHN0cmluZy4gc2hvdWxkIG9iZXkgc2VtYW50aWMgdmVyc2lvbmluZzogJHt2ZXJzaW9ufWBcbiAgICApO1xuICByZXR1cm4gYCR7bWF0Y2hbMV19LiR7bWF0Y2hbMl19LiR7bWF0Y2hbM119YCBhcyBgJHtudW1iZXJ9LiR7bnVtYmVyfS4ke251bWJlcn1gO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGbHVlbnQgYnVpbGRlciBmb3IgY3JlYXRpbmcgYSBjb25maWd1cmVkIE1vZGVsQ29udGV4dFByb3RvY29sIGluc3RhbmNlLlxuICogQHN1bW1hcnkgQ29sbGVjdHMgTUNQIGNvbmZpZ3VyYXRpb24gaW5jbHVkaW5nIGEgc2VtYW50aWMgdmVyc2lvbiwgYSBuYW1lLCBhbmQgYSByZWdpc3RyeSBvZiB0b29scywgb2ZmZXJpbmcgY2hhaW5hYmxlIG1ldGhvZHMgYW5kIGEgZmluYWwgYnVpbGQgc3RlcCB0byBwcm9kdWNlIGEgcmVhZHktdG8tdXNlIE1vZGVsQ29udGV4dFByb3RvY29sLlxuICogQHBhcmFtIHtzdHJpbmd9IFtuYW1lXSBUaGUgbmFtZSBvZiB0aGUgTUNQIGluc3RhbmNlIHRvIGJ1aWxkLlxuICogQHBhcmFtIHtzdHJpbmd9IFt2ZXJzaW9uXSBUaGUgc2VtYW50aWMgdmVyc2lvbiBvZiB0aGUgTUNQIGluc3RhbmNlLlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBUb29sPGFueSwgYW55Pj59IFt0b29sc10gQSBtYXAgb2YgdG9vbCBjb25maWd1cmF0aW9ucyBpbmRleGVkIGJ5IHRvb2wgbmFtZS5cbiAqIEBjbGFzc1xuICogQGV4YW1wbGVcbiAqIC8vIEJ1aWxkIGEgbmV3IE1DUCB3aXRoIGEgc2luZ2xlIHRvb2xcbiAqIGNvbnN0IG1jcCA9IE1vZGVsQ29udGV4dFByb3RvY29sLmJ1aWxkZXJcbiAqICAgLnNldE5hbWUoXCJFeGFtcGxlXCIpXG4gKiAgIC5zZXRWZXJzaW9uKFwiMS4wLjBcIilcbiAqICAgLmFkZFRvb2woeyBuYW1lOiBcImRvXCIsIGRlc2NyaXB0aW9uOiBcIlwiLCBwYXJhbWV0ZXJzOiB6LmFueSgpLCBleGVjdXRlOiBhc3luYyAoKSA9PiBcIm9rXCIgfSlcbiAqICAgLmJ1aWxkKCk7XG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IERldiBhcyBEZXZlbG9wZXJcbiAqICAgcGFydGljaXBhbnQgQiBhcyBCdWlsZGVyXG4gKiAgIHBhcnRpY2lwYW50IE1DUCBhcyBNb2RlbENvbnRleHRQcm90b2NvbFxuICogICBEZXYtPj5COiBzZXROYW1lKFwiRXhhbXBsZVwiKVxuICogICBCLS0+PkRldjogQnVpbGRlclxuICogICBEZXYtPj5COiBzZXRWZXJzaW9uKFwiMS4wLjBcIilcbiAqICAgQi0tPj5EZXY6IEJ1aWxkZXJcbiAqICAgRGV2LT4+QjogYWRkVG9vbCh0b29sKVxuICogICBCLS0+PkRldjogQnVpbGRlclxuICogICBEZXYtPj5COiBidWlsZCgpXG4gKiAgIEItPj5NQ1A6IG5ldyBNb2RlbENvbnRleHRQcm90b2NvbChGYXN0TUNQKVxuICogICBCLS0+PkRldjogTW9kZWxDb250ZXh0UHJvdG9jb2xcbiAqL1xuY2xhc3MgQnVpbGRlciB7XG4gIG5hbWUhOiBzdHJpbmc7XG4gIHZlcnNpb24hOiBgJHtudW1iZXJ9LiR7bnVtYmVyfS4ke251bWJlcn1gO1xuICB0b29sczogUmVjb3JkPHN0cmluZywgVG9vbDxhbnksIGFueT4+ID0ge307XG5cbiAgbG9nID0gTG9nZ2luZy5mb3IoXCJNQ1AgQnVpbGRlclwiKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTZXRzIHRoZSBNQ1AgaW5zdGFuY2UgbmFtZS5cbiAgICogQHN1bW1hcnkgQXNzaWducyBhIGh1bWFuLXJlYWRhYmxlIGlkZW50aWZpZXIgdG8gdGhlIGJ1aWxkZXIgY29uZmlndXJhdGlvbiBhbmQgZW5hYmxlcyBtZXRob2QgY2hhaW5pbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSBUaGUgbmFtZSB0byBhc3NpZ24gdG8gdGhlIE1DUCBpbnN0YW5jZS5cbiAgICogQHJldHVybiB7dGhpc30gVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqL1xuICBzZXROYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgbmFtZSBzZXQgdG8gJHt2YWx1ZX1gKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU2V0cyBhbmQgdmFsaWRhdGVzIHRoZSBzZW1hbnRpYyB2ZXJzaW9uIGZvciB0aGUgTUNQIGluc3RhbmNlLlxuICAgKiBAc3VtbWFyeSBQYXJzZXMgdGhlIHByb3ZpZGVkIHZhbHVlIGFnYWluc3Qgc2VtYW50aWMgdmVyc2lvbmluZyBhbmQgc3RvcmVzIHRoZSBub3JtYWxpemVkIHZlcnNpb247IGVuYWJsZXMgbWV0aG9kIGNoYWluaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgVGhlIHNlbWFudGljIHZlcnNpb24gc3RyaW5nIChlLmcuLCBcIjEuMi4zXCIpLlxuICAgKiBAcmV0dXJuIHt0aGlzfSBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICovXG4gIHNldFZlcnNpb24odmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmVyc2lvbiA9IHZhbGlkYXRlVmVyc2lvbih2YWx1ZSk7XG4gICAgdGhpcy5sb2cuZGVidWcoYHZlcnNpb24gc2V0IHRvICR7dmFsdWV9YCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVycyBhIG5ldyB0b29sIGluIHRoZSBidWlsZGVyLlxuICAgKiBAc3VtbWFyeSBBZGRzIGEgdG9vbCBjb25maWd1cmF0aW9uIGJ5IGl0cyB1bmlxdWUgbmFtZSB0byB0aGUgaW50ZXJuYWwgcmVnaXN0cnksIHRocm93aW5nIGlmIGEgdG9vbCB3aXRoIHRoZSBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMuXG4gICAqIEB0ZW1wbGF0ZSBBdXRoIGV4dGVuZHMgRmFzdE1DUFNlc3Npb25BdXRoXG4gICAqIEBwYXJhbSB7VG9vbDxBdXRoLCBhbnk+fSBjb25maWcgVGhlIHRvb2wgY29uZmlndXJhdGlvbiBvYmplY3QsIGluY2x1ZGluZyBhIHVuaXF1ZSBuYW1lIGFuZCBhbiBleGVjdXRlIGhhbmRsZXIuXG4gICAqIEByZXR1cm4ge3RoaXN9IFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKi9cbiAgYWRkVG9vbDxBdXRoIGV4dGVuZHMgRmFzdE1DUFNlc3Npb25BdXRoID0gdW5kZWZpbmVkPihcbiAgICBjb25maWc6IFRvb2w8QXV0aCwgYW55PlxuICApIHtcbiAgICBjb25zdCB7IG5hbWUgfSA9IGNvbmZpZztcbiAgICBpZiAobmFtZSBpbiB0aGlzLnRvb2xzKSB0aHJvdyBuZXcgRXJyb3IoYHRvb2wgJHtuYW1lfSBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtcbiAgICB0aGlzLnRvb2xzW25hbWVdID0gY29uZmlnO1xuICAgIHRoaXMubG9nLmRlYnVnKGB0b29sICR7bmFtZX0gYWRkZWRgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemVzIHRoZSBjb25maWd1cmF0aW9uIGFuZCBwcm9kdWNlcyBhIE1vZGVsQ29udGV4dFByb3RvY29sIGluc3RhbmNlLlxuICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgcmVxdWlyZWQgZmllbGRzIChuYW1lIGFuZCB2ZXJzaW9uKSwgY29uc3RydWN0cyBhIEZhc3RNQ1AgaW5zdGFuY2UsIHJlZ2lzdGVycyBhbGwgY29uZmlndXJlZCB0b29scywgYW5kIHJldHVybnMgYSBNb2RlbENvbnRleHRQcm90b2NvbCB3cmFwcGluZyB0aGUgTUNQLlxuICAgKiBAdGVtcGxhdGUgQXV0aCBleHRlbmRzIEZhc3RNQ1BTZXNzaW9uQXV0aFxuICAgKiBAcmV0dXJuIHtNb2RlbENvbnRleHRQcm90b2NvbDxBdXRoPn0gQSBmdWxseSBpbml0aWFsaXplZCBNb2RlbENvbnRleHRQcm90b2NvbCBpbnN0YW5jZS5cbiAgICovXG4gIGJ1aWxkPFxuICAgIEF1dGggZXh0ZW5kcyBGYXN0TUNQU2Vzc2lvbkF1dGggPSB1bmRlZmluZWQsXG4gID4oKTogTW9kZWxDb250ZXh0UHJvdG9jb2w8QXV0aD4ge1xuICAgIGlmICghdGhpcy5uYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJuYW1lIGlzIHJlcXVpcmVkXCIpO1xuICAgIGlmICghdGhpcy52ZXJzaW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJ2ZXJzaW9uIGlzIHJlcXVpcmVkXCIpO1xuICAgIGNvbnN0IG1jcCA9IG5ldyBGYXN0TUNQPEF1dGg+KHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICB9KTtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMudG9vbHMpLmZvckVhY2goKHRvb2wpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG1jcC5hZGRUb29sKHRvb2wpO1xuICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBhZGQgdG9vbCAke3Rvb2wubmFtZX06ICR7ZX1gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmxvZy5pbmZvKGAke3RoaXMubmFtZX0gTUNQIGJ1aWx0YCk7XG4gICAgdGhpcy5sb2cuZGVidWcoXG4gICAgICBgJHt0aGlzLm5hbWV9IE1DUCAtIGF2YWlsYWJsZSB0b29sczogJHtPYmplY3Qua2V5cyh0aGlzLnRvb2xzKS5qb2luKFwiLCBcIil9YFxuICAgICk7XG4gICAgcmV0dXJuIG5ldyBNb2RlbENvbnRleHRQcm90b2NvbChtY3ApO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEEgdGhpbiB3cmFwcGVyIGFyb3VuZCBGYXN0TUNQIHByb3ZpZGluZyBhIHR5cGVkIGludGVyZmFjZSBmb3IgbW9kZWwtY2VudHJpYyBwcm90b2NvbHMuXG4gKiBAc3VtbWFyeSBFbmNhcHN1bGF0ZXMgYSBjb25maWd1cmVkIEZhc3RNQ1AgaW5zdGFuY2UgYW5kIGV4cG9zZXMgZmFjdG9yeSB1dGlsaXRpZXMgdmlhIGEgc3RhdGljIEJ1aWxkZXIgZm9yIGNvbnN0cnVjdGluZyBNQ1BzIHdpdGggdG9vbHMsIHZlcnNpb25pbmcsIGFuZCBuYW1pbmcgc2VtYW50aWNzLlxuICogQHRlbXBsYXRlIEF1dGggZXh0ZW5kcyBGYXN0TUNQU2Vzc2lvbkF1dGggQXV0aGVudGljYXRpb24gcGF5bG9hZCB0eXBlIHN0b3JlZCBpbiB0aGUgTUNQIHNlc3Npb24sIG9yIHVuZGVmaW5lZCBmb3Igbm8gYXV0aC5cbiAqIEBwYXJhbSB7RmFzdE1DUDxBdXRoPn0gbWNwIFRoZSB1bmRlcmx5aW5nIEZhc3RNQ1AgaW5zdGFuY2UgdXNlZCB0byByZWdpc3RlciBhbmQgcnVuIHRvb2xzLlxuICogQGNsYXNzXG4gKiBAZXhhbXBsZVxuICogLy8gVXNpbmcgdGhlIGJ1aWxkZXJcbiAqIGNvbnN0IHByb3RvY29sID0gTW9kZWxDb250ZXh0UHJvdG9jb2wuYnVpbGRlclxuICogICAuc2V0TmFtZShcIlZhbGlkYXRvclwiKVxuICogICAuc2V0VmVyc2lvbihcIjEuMi4zXCIpXG4gKiAgIC5hZGRUb29sKHsgbmFtZTogXCJwaW5nXCIsIGRlc2NyaXB0aW9uOiBcIlwiLCBwYXJhbWV0ZXJzOiB6LmFueSgpLCBleGVjdXRlOiBhc3luYyAoKSA9PiBcInBvbmdcIiB9KVxuICogICAuYnVpbGQoKTtcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgRGV2IGFzIERldmVsb3BlclxuICogICBwYXJ0aWNpcGFudCBCIGFzIE1vZGVsQ29udGV4dFByb3RvY29sLkJ1aWxkZXJcbiAqICAgcGFydGljaXBhbnQgTUNQIGFzIEZhc3RNQ1BcbiAqICAgcGFydGljaXBhbnQgUHJvdG8gYXMgTW9kZWxDb250ZXh0UHJvdG9jb2xcbiAqICAgRGV2LT4+Qjogc2V0TmFtZSgpL3NldFZlcnNpb24oKS9hZGRUb29sKClcbiAqICAgRGV2LT4+QjogYnVpbGQoKVxuICogICBCLT4+TUNQOiBuZXcgRmFzdE1DUCh7IG5hbWUsIHZlcnNpb24gfSlcbiAqICAgQi0+Pk1DUDogYWRkVG9vbCh0b29sLi4uKVxuICogICBCLT4+UHJvdG86IG5ldyBNb2RlbENvbnRleHRQcm90b2NvbChNQ1ApXG4gKiAgIEItLT4+RGV2OiBNb2RlbENvbnRleHRQcm90b2NvbFxuICovXG5leHBvcnQgY2xhc3MgTW9kZWxDb250ZXh0UHJvdG9jb2w8QXV0aCBleHRlbmRzIEZhc3RNQ1BTZXNzaW9uQXV0aCA9IHVuZGVmaW5lZD4ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExhemlseSBvYnRhaW5zIGEgbG9nZ2VyIGluc3RhbmNlIGZvciB0aGlzIHByb3RvY29sIHdyYXBwZXIuXG4gICAqIEBzdW1tYXJ5IFVzZXMgdGhlIExvZ2dpbmcgZmFjaWxpdHkgdG8gY3JlYXRlIGEgY29udGV4dC1hd2FyZSBMb2dnZXIgYm91bmQgdG8gdGhpcyBpbnN0YW5jZS5cbiAgICogQHJldHVybiB7TG9nZ2VyfSBBIGxvZ2dlciBpbnN0YW5jZSBmb3IgdGhpcyBjbGFzcy5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgbG9nKCk6IExvZ2dlciB7XG4gICAgcmV0dXJuIExvZ2dpbmcuZm9yKHRoaXMgYXMgYW55KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBtY3A6IEZhc3RNQ1A8QXV0aD4pIHt9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBbGlhcyB0byB0aGUgaW5uZXIgQnVpbGRlciBjbGFzcyBmb3IgZXh0ZXJuYWwgYWNjZXNzLlxuICAgKiBAc3VtbWFyeSBFeHBvc2VzIHRoZSBidWlsZGVyIHR5cGUgdG8gY29uc3VtZXJzIHRvIGVuYWJsZSB0eXBlZCBjb25zdHJ1Y3Rpb24gb2YgTW9kZWxDb250ZXh0UHJvdG9jb2wgaW5zdGFuY2VzLlxuICAgKi9cbiAgc3RhdGljIHJlYWRvbmx5IEJ1aWxkZXIgPSBCdWlsZGVyO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmFjdG9yeSBhY2Nlc3NvciBmb3IgYSBuZXcgQnVpbGRlciBpbnN0YW5jZS5cbiAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIG5ldyBidWlsZGVyIHRvIGZsdWVudGx5IGNvbmZpZ3VyZSBhbmQgY29uc3RydWN0IGEgTW9kZWxDb250ZXh0UHJvdG9jb2wuXG4gICAqIEByZXR1cm4ge0J1aWxkZXJ9IEEgbmV3IGJ1aWxkZXIgaW5zdGFuY2UuXG4gICAqL1xuICBzdGF0aWMgZ2V0IGJ1aWxkZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBNb2RlbENvbnRleHRQcm90b2NvbC5CdWlsZGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFZhbGlkYXRlcyBhIHNlbWFudGljIHZlcnNpb24gc3RyaW5nLlxuICAgKiBAc3VtbWFyeSBVdGlsaXR5IHdyYXBwZXIgYXJvdW5kIHRoZSBtb2R1bGUtbGV2ZWwgdmFsaWRhdGVWZXJzaW9uIHRvIGtlZXAgYSB0eXBlZCB2YWxpZGF0b3IgY2xvc2UgdG8gdGhlIGNsYXNzIEFQSS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNpb24gVGhlIHZlcnNpb24gc3RyaW5nIHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBub3JtYWxpemVkIHNlbWFudGljIHZlcnNpb24gc3RyaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgdmFsaWRhdGVWZXJzaW9uKFxuICAgIHZlcnNpb246IHN0cmluZ1xuICApOiBgJHtudW1iZXJ9LiR7bnVtYmVyfS4ke251bWJlcn1gIHtcbiAgICByZXR1cm4gdmFsaWRhdGVWZXJzaW9uKHZlcnNpb24pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,23 +1,123 @@
|
|
|
1
1
|
import { FastMCP, Tool } from "fastmcp";
|
|
2
2
|
import { Logger } from "@decaf-ts/logging";
|
|
3
3
|
import { FastMCPSessionAuth } from "./types";
|
|
4
|
+
/**
|
|
5
|
+
* @description Fluent builder for creating a configured ModelContextProtocol instance.
|
|
6
|
+
* @summary Collects MCP configuration including a semantic version, a name, and a registry of tools, offering chainable methods and a final build step to produce a ready-to-use ModelContextProtocol.
|
|
7
|
+
* @param {string} [name] The name of the MCP instance to build.
|
|
8
|
+
* @param {string} [version] The semantic version of the MCP instance.
|
|
9
|
+
* @param {Record<string, Tool<any, any>>} [tools] A map of tool configurations indexed by tool name.
|
|
10
|
+
* @class
|
|
11
|
+
* @example
|
|
12
|
+
* // Build a new MCP with a single tool
|
|
13
|
+
* const mcp = ModelContextProtocol.builder
|
|
14
|
+
* .setName("Example")
|
|
15
|
+
* .setVersion("1.0.0")
|
|
16
|
+
* .addTool({ name: "do", description: "", parameters: z.any(), execute: async () => "ok" })
|
|
17
|
+
* .build();
|
|
18
|
+
* @mermaid
|
|
19
|
+
* sequenceDiagram
|
|
20
|
+
* participant Dev as Developer
|
|
21
|
+
* participant B as Builder
|
|
22
|
+
* participant MCP as ModelContextProtocol
|
|
23
|
+
* Dev->>B: setName("Example")
|
|
24
|
+
* B-->>Dev: Builder
|
|
25
|
+
* Dev->>B: setVersion("1.0.0")
|
|
26
|
+
* B-->>Dev: Builder
|
|
27
|
+
* Dev->>B: addTool(tool)
|
|
28
|
+
* B-->>Dev: Builder
|
|
29
|
+
* Dev->>B: build()
|
|
30
|
+
* B->>MCP: new ModelContextProtocol(FastMCP)
|
|
31
|
+
* B-->>Dev: ModelContextProtocol
|
|
32
|
+
*/
|
|
4
33
|
declare class Builder {
|
|
5
34
|
name: string;
|
|
6
35
|
version: `${number}.${number}.${number}`;
|
|
7
36
|
tools: Record<string, Tool<any, any>>;
|
|
8
37
|
log: Logger;
|
|
9
38
|
constructor();
|
|
39
|
+
/**
|
|
40
|
+
* @description Sets the MCP instance name.
|
|
41
|
+
* @summary Assigns a human-readable identifier to the builder configuration and enables method chaining.
|
|
42
|
+
* @param {string} value The name to assign to the MCP instance.
|
|
43
|
+
* @return {this} The current builder instance for chaining.
|
|
44
|
+
*/
|
|
10
45
|
setName(value: string): this;
|
|
46
|
+
/**
|
|
47
|
+
* @description Sets and validates the semantic version for the MCP instance.
|
|
48
|
+
* @summary Parses the provided value against semantic versioning and stores the normalized version; enables method chaining.
|
|
49
|
+
* @param {string} value The semantic version string (e.g., "1.2.3").
|
|
50
|
+
* @return {this} The current builder instance for chaining.
|
|
51
|
+
*/
|
|
11
52
|
setVersion(value: string): this;
|
|
53
|
+
/**
|
|
54
|
+
* @description Registers a new tool in the builder.
|
|
55
|
+
* @summary Adds a tool configuration by its unique name to the internal registry, throwing if a tool with the same name already exists.
|
|
56
|
+
* @template Auth extends FastMCPSessionAuth
|
|
57
|
+
* @param {Tool<Auth, any>} config The tool configuration object, including a unique name and an execute handler.
|
|
58
|
+
* @return {this} The current builder instance for chaining.
|
|
59
|
+
*/
|
|
12
60
|
addTool<Auth extends FastMCPSessionAuth = undefined>(config: Tool<Auth, any>): this;
|
|
61
|
+
/**
|
|
62
|
+
* @description Finalizes the configuration and produces a ModelContextProtocol instance.
|
|
63
|
+
* @summary Validates required fields (name and version), constructs a FastMCP instance, registers all configured tools, and returns a ModelContextProtocol wrapping the MCP.
|
|
64
|
+
* @template Auth extends FastMCPSessionAuth
|
|
65
|
+
* @return {ModelContextProtocol<Auth>} A fully initialized ModelContextProtocol instance.
|
|
66
|
+
*/
|
|
13
67
|
build<Auth extends FastMCPSessionAuth = undefined>(): ModelContextProtocol<Auth>;
|
|
14
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* @description A thin wrapper around FastMCP providing a typed interface for model-centric protocols.
|
|
71
|
+
* @summary Encapsulates a configured FastMCP instance and exposes factory utilities via a static Builder for constructing MCPs with tools, versioning, and naming semantics.
|
|
72
|
+
* @template Auth extends FastMCPSessionAuth Authentication payload type stored in the MCP session, or undefined for no auth.
|
|
73
|
+
* @param {FastMCP<Auth>} mcp The underlying FastMCP instance used to register and run tools.
|
|
74
|
+
* @class
|
|
75
|
+
* @example
|
|
76
|
+
* // Using the builder
|
|
77
|
+
* const protocol = ModelContextProtocol.builder
|
|
78
|
+
* .setName("Validator")
|
|
79
|
+
* .setVersion("1.2.3")
|
|
80
|
+
* .addTool({ name: "ping", description: "", parameters: z.any(), execute: async () => "pong" })
|
|
81
|
+
* .build();
|
|
82
|
+
* @mermaid
|
|
83
|
+
* sequenceDiagram
|
|
84
|
+
* participant Dev as Developer
|
|
85
|
+
* participant B as ModelContextProtocol.Builder
|
|
86
|
+
* participant MCP as FastMCP
|
|
87
|
+
* participant Proto as ModelContextProtocol
|
|
88
|
+
* Dev->>B: setName()/setVersion()/addTool()
|
|
89
|
+
* Dev->>B: build()
|
|
90
|
+
* B->>MCP: new FastMCP({ name, version })
|
|
91
|
+
* B->>MCP: addTool(tool...)
|
|
92
|
+
* B->>Proto: new ModelContextProtocol(MCP)
|
|
93
|
+
* B-->>Dev: ModelContextProtocol
|
|
94
|
+
*/
|
|
15
95
|
export declare class ModelContextProtocol<Auth extends FastMCPSessionAuth = undefined> {
|
|
16
96
|
protected readonly mcp: FastMCP<Auth>;
|
|
97
|
+
/**
|
|
98
|
+
* @description Lazily obtains a logger instance for this protocol wrapper.
|
|
99
|
+
* @summary Uses the Logging facility to create a context-aware Logger bound to this instance.
|
|
100
|
+
* @return {Logger} A logger instance for this class.
|
|
101
|
+
*/
|
|
17
102
|
protected get log(): Logger;
|
|
18
103
|
constructor(mcp: FastMCP<Auth>);
|
|
104
|
+
/**
|
|
105
|
+
* @description Alias to the inner Builder class for external access.
|
|
106
|
+
* @summary Exposes the builder type to consumers to enable typed construction of ModelContextProtocol instances.
|
|
107
|
+
*/
|
|
19
108
|
static readonly Builder: typeof Builder;
|
|
109
|
+
/**
|
|
110
|
+
* @description Factory accessor for a new Builder instance.
|
|
111
|
+
* @summary Creates a new builder to fluently configure and construct a ModelContextProtocol.
|
|
112
|
+
* @return {Builder} A new builder instance.
|
|
113
|
+
*/
|
|
20
114
|
static get builder(): Builder;
|
|
115
|
+
/**
|
|
116
|
+
* @description Validates a semantic version string.
|
|
117
|
+
* @summary Utility wrapper around the module-level validateVersion to keep a typed validator close to the class API.
|
|
118
|
+
* @param {string} version The version string to validate.
|
|
119
|
+
* @return {string} The normalized semantic version string.
|
|
120
|
+
*/
|
|
21
121
|
private static validateVersion;
|
|
22
122
|
}
|
|
23
123
|
export {};
|