@decaf-ts/decorator-validation 1.7.17 → 1.7.19
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 +142 -88
- package/dist/decorator-validation.esm.cjs +139 -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/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/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 +14 -3
package/lib/esm/index.d.ts
CHANGED
package/lib/esm/index.js
CHANGED
|
@@ -16,5 +16,5 @@ export * from "./model/index.js";
|
|
|
16
16
|
* @const VERSION
|
|
17
17
|
* @memberOf module:decorator-validation
|
|
18
18
|
*/
|
|
19
|
-
export const VERSION = "1.7.
|
|
19
|
+
export const VERSION = "1.7.19";
|
|
20
20
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gscUNBQTRCO0FBQzVCLGlDQUF3QjtBQUN4QixpQ0FBd0I7QUFDeEIsc0NBQTZCO0FBQzdCLGlDQUF3QjtBQUV4Qjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBkZXNjcmlwdGlvbiBUeXBlU2NyaXB0IGRlY29yYXRvci1iYXNlZCB2YWxpZGF0aW9uIGxpYnJhcnlcbiAqIEBzdW1tYXJ5IFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSB2YWxpZGF0aW9uIGZyYW1ld29yayB1c2luZyBUeXBlU2NyaXB0IGRlY29yYXRvcnMuXG4gKiBJdCBleHBvc2VzIHV0aWxpdHkgZnVuY3Rpb25zLCB2YWxpZGF0aW9uIGRlY29yYXRvcnMsIGFuZCBtb2RlbC1yZWxhdGVkIGZ1bmN0aW9uYWxpdHkgZm9yXG4gKiBpbXBsZW1lbnRpbmcgdHlwZS1zYWZlLCBkZWNsYXJhdGl2ZSB2YWxpZGF0aW9uIGluIFR5cGVTY3JpcHQgYXBwbGljYXRpb25zLlxuICovXG5leHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmFsaWRhdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3VycmVudCB2ZXJzaW9uIG9mIHRoZSByZWZsZWN0aW9uIHBhY2thZ2VcbiAqIEBzdW1tYXJ5IFN0b3JlcyB0aGUgc2VtYW50aWMgdmVyc2lvbiBudW1iZXIgb2YgdGhlIHBhY2thZ2VcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIjI1ZFUlNJT04jI1wiO1xuIl19
|
|
@@ -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 {};
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { FastMCP } from "fastmcp";
|
|
2
2
|
import { Logging } from "@decaf-ts/logging";
|
|
3
|
+
/**
|
|
4
|
+
* @description Validates and normalizes a semantic version string.
|
|
5
|
+
* @summary Ensures the provided version follows semantic versioning (major.minor.patch) and returns a tuple-like template string typed as `${number}.${number}.${number}`.
|
|
6
|
+
* @template
|
|
7
|
+
* @param {string} version The version string to validate, expected in the form MAJOR.MINOR.PATCH.
|
|
8
|
+
* @return {string} The normalized version string if valid.
|
|
9
|
+
* @function validateVersion
|
|
10
|
+
* @memberOf module:decorator-validation
|
|
11
|
+
*/
|
|
3
12
|
function validateVersion(version) {
|
|
4
13
|
const regexp = /(\d+)\.(\d+)\.(\d+)/g;
|
|
5
14
|
const match = regexp.exec(version);
|
|
@@ -7,21 +16,69 @@ function validateVersion(version) {
|
|
|
7
16
|
throw new Error(`Invalid version string. should obey semantic versioning: ${version}`);
|
|
8
17
|
return `${match[1]}.${match[2]}.${match[3]}`;
|
|
9
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* @description Fluent builder for creating a configured ModelContextProtocol instance.
|
|
21
|
+
* @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.
|
|
22
|
+
* @param {string} [name] The name of the MCP instance to build.
|
|
23
|
+
* @param {string} [version] The semantic version of the MCP instance.
|
|
24
|
+
* @param {Record<string, Tool<any, any>>} [tools] A map of tool configurations indexed by tool name.
|
|
25
|
+
* @class
|
|
26
|
+
* @example
|
|
27
|
+
* // Build a new MCP with a single tool
|
|
28
|
+
* const mcp = ModelContextProtocol.builder
|
|
29
|
+
* .setName("Example")
|
|
30
|
+
* .setVersion("1.0.0")
|
|
31
|
+
* .addTool({ name: "do", description: "", parameters: z.any(), execute: async () => "ok" })
|
|
32
|
+
* .build();
|
|
33
|
+
* @mermaid
|
|
34
|
+
* sequenceDiagram
|
|
35
|
+
* participant Dev as Developer
|
|
36
|
+
* participant B as Builder
|
|
37
|
+
* participant MCP as ModelContextProtocol
|
|
38
|
+
* Dev->>B: setName("Example")
|
|
39
|
+
* B-->>Dev: Builder
|
|
40
|
+
* Dev->>B: setVersion("1.0.0")
|
|
41
|
+
* B-->>Dev: Builder
|
|
42
|
+
* Dev->>B: addTool(tool)
|
|
43
|
+
* B-->>Dev: Builder
|
|
44
|
+
* Dev->>B: build()
|
|
45
|
+
* B->>MCP: new ModelContextProtocol(FastMCP)
|
|
46
|
+
* B-->>Dev: ModelContextProtocol
|
|
47
|
+
*/
|
|
10
48
|
class Builder {
|
|
11
49
|
constructor() {
|
|
12
50
|
this.tools = {};
|
|
13
51
|
this.log = Logging.for("MCP Builder");
|
|
14
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* @description Sets the MCP instance name.
|
|
55
|
+
* @summary Assigns a human-readable identifier to the builder configuration and enables method chaining.
|
|
56
|
+
* @param {string} value The name to assign to the MCP instance.
|
|
57
|
+
* @return {this} The current builder instance for chaining.
|
|
58
|
+
*/
|
|
15
59
|
setName(value) {
|
|
16
60
|
this.name = value;
|
|
17
61
|
this.log.debug(`name set to ${value}`);
|
|
18
62
|
return this;
|
|
19
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* @description Sets and validates the semantic version for the MCP instance.
|
|
66
|
+
* @summary Parses the provided value against semantic versioning and stores the normalized version; enables method chaining.
|
|
67
|
+
* @param {string} value The semantic version string (e.g., "1.2.3").
|
|
68
|
+
* @return {this} The current builder instance for chaining.
|
|
69
|
+
*/
|
|
20
70
|
setVersion(value) {
|
|
21
71
|
this.version = validateVersion(value);
|
|
22
72
|
this.log.debug(`version set to ${value}`);
|
|
23
73
|
return this;
|
|
24
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* @description Registers a new tool in the builder.
|
|
77
|
+
* @summary Adds a tool configuration by its unique name to the internal registry, throwing if a tool with the same name already exists.
|
|
78
|
+
* @template Auth extends FastMCPSessionAuth
|
|
79
|
+
* @param {Tool<Auth, any>} config The tool configuration object, including a unique name and an execute handler.
|
|
80
|
+
* @return {this} The current builder instance for chaining.
|
|
81
|
+
*/
|
|
25
82
|
addTool(config) {
|
|
26
83
|
const { name } = config;
|
|
27
84
|
if (name in this.tools)
|
|
@@ -30,6 +87,12 @@ class Builder {
|
|
|
30
87
|
this.log.debug(`tool ${name} added`);
|
|
31
88
|
return this;
|
|
32
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* @description Finalizes the configuration and produces a ModelContextProtocol instance.
|
|
92
|
+
* @summary Validates required fields (name and version), constructs a FastMCP instance, registers all configured tools, and returns a ModelContextProtocol wrapping the MCP.
|
|
93
|
+
* @template Auth extends FastMCPSessionAuth
|
|
94
|
+
* @return {ModelContextProtocol<Auth>} A fully initialized ModelContextProtocol instance.
|
|
95
|
+
*/
|
|
33
96
|
build() {
|
|
34
97
|
if (!this.name)
|
|
35
98
|
throw new Error("name is required");
|
|
@@ -52,19 +115,65 @@ class Builder {
|
|
|
52
115
|
return new ModelContextProtocol(mcp);
|
|
53
116
|
}
|
|
54
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* @description A thin wrapper around FastMCP providing a typed interface for model-centric protocols.
|
|
120
|
+
* @summary Encapsulates a configured FastMCP instance and exposes factory utilities via a static Builder for constructing MCPs with tools, versioning, and naming semantics.
|
|
121
|
+
* @template Auth extends FastMCPSessionAuth Authentication payload type stored in the MCP session, or undefined for no auth.
|
|
122
|
+
* @param {FastMCP<Auth>} mcp The underlying FastMCP instance used to register and run tools.
|
|
123
|
+
* @class
|
|
124
|
+
* @example
|
|
125
|
+
* // Using the builder
|
|
126
|
+
* const protocol = ModelContextProtocol.builder
|
|
127
|
+
* .setName("Validator")
|
|
128
|
+
* .setVersion("1.2.3")
|
|
129
|
+
* .addTool({ name: "ping", description: "", parameters: z.any(), execute: async () => "pong" })
|
|
130
|
+
* .build();
|
|
131
|
+
* @mermaid
|
|
132
|
+
* sequenceDiagram
|
|
133
|
+
* participant Dev as Developer
|
|
134
|
+
* participant B as ModelContextProtocol.Builder
|
|
135
|
+
* participant MCP as FastMCP
|
|
136
|
+
* participant Proto as ModelContextProtocol
|
|
137
|
+
* Dev->>B: setName()/setVersion()/addTool()
|
|
138
|
+
* Dev->>B: build()
|
|
139
|
+
* B->>MCP: new FastMCP({ name, version })
|
|
140
|
+
* B->>MCP: addTool(tool...)
|
|
141
|
+
* B->>Proto: new ModelContextProtocol(MCP)
|
|
142
|
+
* B-->>Dev: ModelContextProtocol
|
|
143
|
+
*/
|
|
55
144
|
export class ModelContextProtocol {
|
|
145
|
+
/**
|
|
146
|
+
* @description Lazily obtains a logger instance for this protocol wrapper.
|
|
147
|
+
* @summary Uses the Logging facility to create a context-aware Logger bound to this instance.
|
|
148
|
+
* @return {Logger} A logger instance for this class.
|
|
149
|
+
*/
|
|
56
150
|
get log() {
|
|
57
151
|
return Logging.for(this);
|
|
58
152
|
}
|
|
59
153
|
constructor(mcp) {
|
|
60
154
|
this.mcp = mcp;
|
|
61
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* @description Alias to the inner Builder class for external access.
|
|
158
|
+
* @summary Exposes the builder type to consumers to enable typed construction of ModelContextProtocol instances.
|
|
159
|
+
*/
|
|
62
160
|
static { this.Builder = Builder; }
|
|
161
|
+
/**
|
|
162
|
+
* @description Factory accessor for a new Builder instance.
|
|
163
|
+
* @summary Creates a new builder to fluently configure and construct a ModelContextProtocol.
|
|
164
|
+
* @return {Builder} A new builder instance.
|
|
165
|
+
*/
|
|
63
166
|
static get builder() {
|
|
64
167
|
return new ModelContextProtocol.Builder();
|
|
65
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* @description Validates a semantic version string.
|
|
171
|
+
* @summary Utility wrapper around the module-level validateVersion to keep a typed validator close to the class API.
|
|
172
|
+
* @param {string} version The version string to validate.
|
|
173
|
+
* @return {string} The normalized semantic version string.
|
|
174
|
+
*/
|
|
66
175
|
static validateVersion(version) {
|
|
67
176
|
return validateVersion(version);
|
|
68
177
|
}
|
|
69
178
|
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxDb250ZXh0UHJvdG9jb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWNwL01vZGVsQ29udGV4dFByb3RvY29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQVEsTUFBTSxTQUFTLENBQUM7QUFDeEMsT0FBTyxFQUFVLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3BELFNBQVMsZUFBZSxDQUFDLE9BQWU7SUFDdEMsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUM7SUFDdEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxJQUFJLENBQUMsS0FBSztRQUNSLE1BQU0sSUFBSSxLQUFLLENBQ2IsNERBQTRELE9BQU8sRUFBRSxDQUN0RSxDQUFDO0lBQ0osT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFxQyxDQUFDO0FBQ2xGLENBQUM7QUFFRCxNQUFNLE9BQU87SUFPWDtRQUpBLFVBQUssR0FBbUMsRUFBRSxDQUFDO1FBRTNDLFFBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRWxCLENBQUM7SUFFaEIsT0FBTyxDQUFDLEtBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGtCQUFrQixLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sQ0FDTCxNQUF1QjtRQUV2QixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQ3hCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUkscUJBQXFCLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSztRQUdILElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDMUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLENBQU87WUFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQztnQkFDSCxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLENBQUM7WUFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO2dCQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0QsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FDWixHQUFHLElBQUksQ0FBQyxJQUFJLDJCQUEyQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDNUUsQ0FBQztRQUNGLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLElBQWMsR0FBRztRQUNmLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFXLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsWUFBK0IsR0FBa0I7UUFBbEIsUUFBRyxHQUFILEdBQUcsQ0FBZTtJQUFHLENBQUM7YUFFckMsWUFBTyxHQUFHLE9BQU8sQ0FBQztJQUVsQyxNQUFNLEtBQUssT0FBTztRQUNoQixPQUFPLElBQUksb0JBQW9CLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxlQUFlLENBQzVCLE9BQWU7UUFFZixPQUFPLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFzdE1DUCwgVG9vbCB9IGZyb20gXCJmYXN0bWNwXCI7XG5pbXBvcnQgeyBMb2dnZXIsIExvZ2dpbmcgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7IEZhc3RNQ1BTZXNzaW9uQXV0aCB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVmVyc2lvbih2ZXJzaW9uOiBzdHJpbmcpOiBgJHtudW1iZXJ9LiR7bnVtYmVyfS4ke251bWJlcn1gIHtcbiAgY29uc3QgcmVnZXhwID0gLyhcXGQrKVxcLihcXGQrKVxcLihcXGQrKS9nO1xuICBjb25zdCBtYXRjaCA9IHJlZ2V4cC5leGVjKHZlcnNpb24pO1xuICBpZiAoIW1hdGNoKVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBJbnZhbGlkIHZlcnNpb24gc3RyaW5nLiBzaG91bGQgb2JleSBzZW1hbnRpYyB2ZXJzaW9uaW5nOiAke3ZlcnNpb259YFxuICAgICk7XG4gIHJldHVybiBgJHttYXRjaFsxXX0uJHttYXRjaFsyXX0uJHttYXRjaFszXX1gIGFzIGAke251bWJlcn0uJHtudW1iZXJ9LiR7bnVtYmVyfWA7XG59XG5cbmNsYXNzIEJ1aWxkZXIge1xuICBuYW1lITogc3RyaW5nO1xuICB2ZXJzaW9uITogYCR7bnVtYmVyfS4ke251bWJlcn0uJHtudW1iZXJ9YDtcbiAgdG9vbHM6IFJlY29yZDxzdHJpbmcsIFRvb2w8YW55LCBhbnk+PiA9IHt9O1xuXG4gIGxvZyA9IExvZ2dpbmcuZm9yKFwiTUNQIEJ1aWxkZXJcIik7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHNldE5hbWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMubmFtZSA9IHZhbHVlO1xuICAgIHRoaXMubG9nLmRlYnVnKGBuYW1lIHNldCB0byAke3ZhbHVlfWApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0VmVyc2lvbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52ZXJzaW9uID0gdmFsaWRhdGVWZXJzaW9uKHZhbHVlKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgdmVyc2lvbiBzZXQgdG8gJHt2YWx1ZX1gKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZFRvb2w8QXV0aCBleHRlbmRzIEZhc3RNQ1BTZXNzaW9uQXV0aCA9IHVuZGVmaW5lZD4oXG4gICAgY29uZmlnOiBUb29sPEF1dGgsIGFueT5cbiAgKSB7XG4gICAgY29uc3QgeyBuYW1lIH0gPSBjb25maWc7XG4gICAgaWYgKG5hbWUgaW4gdGhpcy50b29scykgdGhyb3cgbmV3IEVycm9yKGB0b29sICR7bmFtZX0gYWxyZWFkeSByZWdpc3RlcmVkYCk7XG4gICAgdGhpcy50b29sc1tuYW1lXSA9IGNvbmZpZztcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgdG9vbCAke25hbWV9IGFkZGVkYCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBidWlsZDxcbiAgICBBdXRoIGV4dGVuZHMgRmFzdE1DUFNlc3Npb25BdXRoID0gdW5kZWZpbmVkLFxuICA+KCk6IE1vZGVsQ29udGV4dFByb3RvY29sPEF1dGg+IHtcbiAgICBpZiAoIXRoaXMubmFtZSkgdGhyb3cgbmV3IEVycm9yKFwibmFtZSBpcyByZXF1aXJlZFwiKTtcbiAgICBpZiAoIXRoaXMudmVyc2lvbikgdGhyb3cgbmV3IEVycm9yKFwidmVyc2lvbiBpcyByZXF1aXJlZFwiKTtcbiAgICBjb25zdCBtY3AgPSBuZXcgRmFzdE1DUDxBdXRoPih7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgfSk7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLnRvb2xzKS5mb3JFYWNoKCh0b29sKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBtY3AuYWRkVG9vbCh0b29sKTtcbiAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gYWRkIHRvb2wgJHt0b29sLm5hbWV9OiAke2V9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5sb2cuaW5mbyhgJHt0aGlzLm5hbWV9IE1DUCBidWlsdGApO1xuICAgIHRoaXMubG9nLmRlYnVnKFxuICAgICAgYCR7dGhpcy5uYW1lfSBNQ1AgLSBhdmFpbGFibGUgdG9vbHM6ICR7T2JqZWN0LmtleXModGhpcy50b29scykuam9pbihcIiwgXCIpfWBcbiAgICApO1xuICAgIHJldHVybiBuZXcgTW9kZWxDb250ZXh0UHJvdG9jb2wobWNwKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTW9kZWxDb250ZXh0UHJvdG9jb2w8QXV0aCBleHRlbmRzIEZhc3RNQ1BTZXNzaW9uQXV0aCA9IHVuZGVmaW5lZD4ge1xuICBwcm90ZWN0ZWQgZ2V0IGxvZygpOiBMb2dnZXIge1xuICAgIHJldHVybiBMb2dnaW5nLmZvcih0aGlzIGFzIGFueSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgbWNwOiBGYXN0TUNQPEF1dGg+KSB7fVxuXG4gIHN0YXRpYyByZWFkb25seSBCdWlsZGVyID0gQnVpbGRlcjtcblxuICBzdGF0aWMgZ2V0IGJ1aWxkZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBNb2RlbENvbnRleHRQcm90b2NvbC5CdWlsZGVyKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZVZlcnNpb24oXG4gICAgdmVyc2lvbjogc3RyaW5nXG4gICk6IGAke251bWJlcn0uJHtudW1iZXJ9LiR7bnVtYmVyfWAge1xuICAgIHJldHVybiB2YWxpZGF0ZVZlcnNpb24odmVyc2lvbik7XG4gIH1cbn1cbiJdfQ==
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxDb250ZXh0UHJvdG9jb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWNwL01vZGVsQ29udGV4dFByb3RvY29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQVEsTUFBTSxTQUFTLENBQUM7QUFDeEMsT0FBTyxFQUFVLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3BEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxlQUFlLENBQUMsT0FBZTtJQUN0QyxNQUFNLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQztJQUN0QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLElBQUksQ0FBQyxLQUFLO1FBQ1IsTUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsT0FBTyxFQUFFLENBQ3RFLENBQUM7SUFDSixPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQXFDLENBQUM7QUFDbEYsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBQ0gsTUFBTSxPQUFPO0lBT1g7UUFKQSxVQUFLLEdBQW1DLEVBQUUsQ0FBQztRQUUzQyxRQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVsQixDQUFDO0lBRWhCOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLEtBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsT0FBTyxDQUNMLE1BQXVCO1FBRXZCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFDeEIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUs7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUs7UUFHSCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzFELE1BQU0sR0FBRyxHQUFHLElBQUksT0FBTyxDQUFPO1lBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUM7Z0JBQ0gsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQ1osR0FBRyxJQUFJLENBQUMsSUFBSSwyQkFBMkIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQzVFLENBQUM7UUFDRixPQUFPLElBQUksb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9COzs7O09BSUc7SUFDSCxJQUFjLEdBQUc7UUFDZixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBVyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFlBQStCLEdBQWtCO1FBQWxCLFFBQUcsR0FBSCxHQUFHLENBQWU7SUFBRyxDQUFDO0lBRXJEOzs7T0FHRzthQUNhLFlBQU8sR0FBRyxPQUFPLENBQUM7SUFFbEM7Ozs7T0FJRztJQUNILE1BQU0sS0FBSyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxNQUFNLENBQUMsZUFBZSxDQUM1QixPQUFlO1FBRWYsT0FBTyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhc3RNQ1AsIFRvb2wgfSBmcm9tIFwiZmFzdG1jcFwiO1xuaW1wb3J0IHsgTG9nZ2VyLCBMb2dnaW5nIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgeyBGYXN0TUNQU2Vzc2lvbkF1dGggfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0ZXMgYW5kIG5vcm1hbGl6ZXMgYSBzZW1hbnRpYyB2ZXJzaW9uIHN0cmluZy5cbiAqIEBzdW1tYXJ5IEVuc3VyZXMgdGhlIHByb3ZpZGVkIHZlcnNpb24gZm9sbG93cyBzZW1hbnRpYyB2ZXJzaW9uaW5nIChtYWpvci5taW5vci5wYXRjaCkgYW5kIHJldHVybnMgYSB0dXBsZS1saWtlIHRlbXBsYXRlIHN0cmluZyB0eXBlZCBhcyBgJHtudW1iZXJ9LiR7bnVtYmVyfS4ke251bWJlcn1gLlxuICogQHRlbXBsYXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gdmVyc2lvbiBUaGUgdmVyc2lvbiBzdHJpbmcgdG8gdmFsaWRhdGUsIGV4cGVjdGVkIGluIHRoZSBmb3JtIE1BSk9SLk1JTk9SLlBBVENILlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgbm9ybWFsaXplZCB2ZXJzaW9uIHN0cmluZyBpZiB2YWxpZC5cbiAqIEBmdW5jdGlvbiB2YWxpZGF0ZVZlcnNpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVWZXJzaW9uKHZlcnNpb246IHN0cmluZyk6IGAke251bWJlcn0uJHtudW1iZXJ9LiR7bnVtYmVyfWAge1xuICBjb25zdCByZWdleHAgPSAvKFxcZCspXFwuKFxcZCspXFwuKFxcZCspL2c7XG4gIGNvbnN0IG1hdGNoID0gcmVnZXhwLmV4ZWModmVyc2lvbik7XG4gIGlmICghbWF0Y2gpXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgdmVyc2lvbiBzdHJpbmcuIHNob3VsZCBvYmV5IHNlbWFudGljIHZlcnNpb25pbmc6ICR7dmVyc2lvbn1gXG4gICAgKTtcbiAgcmV0dXJuIGAke21hdGNoWzFdfS4ke21hdGNoWzJdfS4ke21hdGNoWzNdfWAgYXMgYCR7bnVtYmVyfS4ke251bWJlcn0uJHtudW1iZXJ9YDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRmx1ZW50IGJ1aWxkZXIgZm9yIGNyZWF0aW5nIGEgY29uZmlndXJlZCBNb2RlbENvbnRleHRQcm90b2NvbCBpbnN0YW5jZS5cbiAqIEBzdW1tYXJ5IENvbGxlY3RzIE1DUCBjb25maWd1cmF0aW9uIGluY2x1ZGluZyBhIHNlbWFudGljIHZlcnNpb24sIGEgbmFtZSwgYW5kIGEgcmVnaXN0cnkgb2YgdG9vbHMsIG9mZmVyaW5nIGNoYWluYWJsZSBtZXRob2RzIGFuZCBhIGZpbmFsIGJ1aWxkIHN0ZXAgdG8gcHJvZHVjZSBhIHJlYWR5LXRvLXVzZSBNb2RlbENvbnRleHRQcm90b2NvbC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbmFtZV0gVGhlIG5hbWUgb2YgdGhlIE1DUCBpbnN0YW5jZSB0byBidWlsZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbdmVyc2lvbl0gVGhlIHNlbWFudGljIHZlcnNpb24gb2YgdGhlIE1DUCBpbnN0YW5jZS5cbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgVG9vbDxhbnksIGFueT4+fSBbdG9vbHNdIEEgbWFwIG9mIHRvb2wgY29uZmlndXJhdGlvbnMgaW5kZXhlZCBieSB0b29sIG5hbWUuXG4gKiBAY2xhc3NcbiAqIEBleGFtcGxlXG4gKiAvLyBCdWlsZCBhIG5ldyBNQ1Agd2l0aCBhIHNpbmdsZSB0b29sXG4gKiBjb25zdCBtY3AgPSBNb2RlbENvbnRleHRQcm90b2NvbC5idWlsZGVyXG4gKiAgIC5zZXROYW1lKFwiRXhhbXBsZVwiKVxuICogICAuc2V0VmVyc2lvbihcIjEuMC4wXCIpXG4gKiAgIC5hZGRUb29sKHsgbmFtZTogXCJkb1wiLCBkZXNjcmlwdGlvbjogXCJcIiwgcGFyYW1ldGVyczogei5hbnkoKSwgZXhlY3V0ZTogYXN5bmMgKCkgPT4gXCJva1wiIH0pXG4gKiAgIC5idWlsZCgpO1xuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBEZXYgYXMgRGV2ZWxvcGVyXG4gKiAgIHBhcnRpY2lwYW50IEIgYXMgQnVpbGRlclxuICogICBwYXJ0aWNpcGFudCBNQ1AgYXMgTW9kZWxDb250ZXh0UHJvdG9jb2xcbiAqICAgRGV2LT4+Qjogc2V0TmFtZShcIkV4YW1wbGVcIilcbiAqICAgQi0tPj5EZXY6IEJ1aWxkZXJcbiAqICAgRGV2LT4+Qjogc2V0VmVyc2lvbihcIjEuMC4wXCIpXG4gKiAgIEItLT4+RGV2OiBCdWlsZGVyXG4gKiAgIERldi0+PkI6IGFkZFRvb2wodG9vbClcbiAqICAgQi0tPj5EZXY6IEJ1aWxkZXJcbiAqICAgRGV2LT4+QjogYnVpbGQoKVxuICogICBCLT4+TUNQOiBuZXcgTW9kZWxDb250ZXh0UHJvdG9jb2woRmFzdE1DUClcbiAqICAgQi0tPj5EZXY6IE1vZGVsQ29udGV4dFByb3RvY29sXG4gKi9cbmNsYXNzIEJ1aWxkZXIge1xuICBuYW1lITogc3RyaW5nO1xuICB2ZXJzaW9uITogYCR7bnVtYmVyfS4ke251bWJlcn0uJHtudW1iZXJ9YDtcbiAgdG9vbHM6IFJlY29yZDxzdHJpbmcsIFRvb2w8YW55LCBhbnk+PiA9IHt9O1xuXG4gIGxvZyA9IExvZ2dpbmcuZm9yKFwiTUNQIEJ1aWxkZXJcIik7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU2V0cyB0aGUgTUNQIGluc3RhbmNlIG5hbWUuXG4gICAqIEBzdW1tYXJ5IEFzc2lnbnMgYSBodW1hbi1yZWFkYWJsZSBpZGVudGlmaWVyIHRvIHRoZSBidWlsZGVyIGNvbmZpZ3VyYXRpb24gYW5kIGVuYWJsZXMgbWV0aG9kIGNoYWluaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgVGhlIG5hbWUgdG8gYXNzaWduIHRvIHRoZSBNQ1AgaW5zdGFuY2UuXG4gICAqIEByZXR1cm4ge3RoaXN9IFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKi9cbiAgc2V0TmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5uYW1lID0gdmFsdWU7XG4gICAgdGhpcy5sb2cuZGVidWcoYG5hbWUgc2V0IHRvICR7dmFsdWV9YCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFNldHMgYW5kIHZhbGlkYXRlcyB0aGUgc2VtYW50aWMgdmVyc2lvbiBmb3IgdGhlIE1DUCBpbnN0YW5jZS5cbiAgICogQHN1bW1hcnkgUGFyc2VzIHRoZSBwcm92aWRlZCB2YWx1ZSBhZ2FpbnN0IHNlbWFudGljIHZlcnNpb25pbmcgYW5kIHN0b3JlcyB0aGUgbm9ybWFsaXplZCB2ZXJzaW9uOyBlbmFibGVzIG1ldGhvZCBjaGFpbmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIFRoZSBzZW1hbnRpYyB2ZXJzaW9uIHN0cmluZyAoZS5nLiwgXCIxLjIuM1wiKS5cbiAgICogQHJldHVybiB7dGhpc30gVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqL1xuICBzZXRWZXJzaW9uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZlcnNpb24gPSB2YWxpZGF0ZVZlcnNpb24odmFsdWUpO1xuICAgIHRoaXMubG9nLmRlYnVnKGB2ZXJzaW9uIHNldCB0byAke3ZhbHVlfWApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWdpc3RlcnMgYSBuZXcgdG9vbCBpbiB0aGUgYnVpbGRlci5cbiAgICogQHN1bW1hcnkgQWRkcyBhIHRvb2wgY29uZmlndXJhdGlvbiBieSBpdHMgdW5pcXVlIG5hbWUgdG8gdGhlIGludGVybmFsIHJlZ2lzdHJ5LCB0aHJvd2luZyBpZiBhIHRvb2wgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLlxuICAgKiBAdGVtcGxhdGUgQXV0aCBleHRlbmRzIEZhc3RNQ1BTZXNzaW9uQXV0aFxuICAgKiBAcGFyYW0ge1Rvb2w8QXV0aCwgYW55Pn0gY29uZmlnIFRoZSB0b29sIGNvbmZpZ3VyYXRpb24gb2JqZWN0LCBpbmNsdWRpbmcgYSB1bmlxdWUgbmFtZSBhbmQgYW4gZXhlY3V0ZSBoYW5kbGVyLlxuICAgKiBAcmV0dXJuIHt0aGlzfSBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICovXG4gIGFkZFRvb2w8QXV0aCBleHRlbmRzIEZhc3RNQ1BTZXNzaW9uQXV0aCA9IHVuZGVmaW5lZD4oXG4gICAgY29uZmlnOiBUb29sPEF1dGgsIGFueT5cbiAgKSB7XG4gICAgY29uc3QgeyBuYW1lIH0gPSBjb25maWc7XG4gICAgaWYgKG5hbWUgaW4gdGhpcy50b29scykgdGhyb3cgbmV3IEVycm9yKGB0b29sICR7bmFtZX0gYWxyZWFkeSByZWdpc3RlcmVkYCk7XG4gICAgdGhpcy50b29sc1tuYW1lXSA9IGNvbmZpZztcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgdG9vbCAke25hbWV9IGFkZGVkYCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplcyB0aGUgY29uZmlndXJhdGlvbiBhbmQgcHJvZHVjZXMgYSBNb2RlbENvbnRleHRQcm90b2NvbCBpbnN0YW5jZS5cbiAgICogQHN1bW1hcnkgVmFsaWRhdGVzIHJlcXVpcmVkIGZpZWxkcyAobmFtZSBhbmQgdmVyc2lvbiksIGNvbnN0cnVjdHMgYSBGYXN0TUNQIGluc3RhbmNlLCByZWdpc3RlcnMgYWxsIGNvbmZpZ3VyZWQgdG9vbHMsIGFuZCByZXR1cm5zIGEgTW9kZWxDb250ZXh0UHJvdG9jb2wgd3JhcHBpbmcgdGhlIE1DUC5cbiAgICogQHRlbXBsYXRlIEF1dGggZXh0ZW5kcyBGYXN0TUNQU2Vzc2lvbkF1dGhcbiAgICogQHJldHVybiB7TW9kZWxDb250ZXh0UHJvdG9jb2w8QXV0aD59IEEgZnVsbHkgaW5pdGlhbGl6ZWQgTW9kZWxDb250ZXh0UHJvdG9jb2wgaW5zdGFuY2UuXG4gICAqL1xuICBidWlsZDxcbiAgICBBdXRoIGV4dGVuZHMgRmFzdE1DUFNlc3Npb25BdXRoID0gdW5kZWZpbmVkLFxuICA+KCk6IE1vZGVsQ29udGV4dFByb3RvY29sPEF1dGg+IHtcbiAgICBpZiAoIXRoaXMubmFtZSkgdGhyb3cgbmV3IEVycm9yKFwibmFtZSBpcyByZXF1aXJlZFwiKTtcbiAgICBpZiAoIXRoaXMudmVyc2lvbikgdGhyb3cgbmV3IEVycm9yKFwidmVyc2lvbiBpcyByZXF1aXJlZFwiKTtcbiAgICBjb25zdCBtY3AgPSBuZXcgRmFzdE1DUDxBdXRoPih7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgfSk7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLnRvb2xzKS5mb3JFYWNoKCh0b29sKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBtY3AuYWRkVG9vbCh0b29sKTtcbiAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gYWRkIHRvb2wgJHt0b29sLm5hbWV9OiAke2V9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5sb2cuaW5mbyhgJHt0aGlzLm5hbWV9IE1DUCBidWlsdGApO1xuICAgIHRoaXMubG9nLmRlYnVnKFxuICAgICAgYCR7dGhpcy5uYW1lfSBNQ1AgLSBhdmFpbGFibGUgdG9vbHM6ICR7T2JqZWN0LmtleXModGhpcy50b29scykuam9pbihcIiwgXCIpfWBcbiAgICApO1xuICAgIHJldHVybiBuZXcgTW9kZWxDb250ZXh0UHJvdG9jb2wobWNwKTtcbiAgfVxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIHRoaW4gd3JhcHBlciBhcm91bmQgRmFzdE1DUCBwcm92aWRpbmcgYSB0eXBlZCBpbnRlcmZhY2UgZm9yIG1vZGVsLWNlbnRyaWMgcHJvdG9jb2xzLlxuICogQHN1bW1hcnkgRW5jYXBzdWxhdGVzIGEgY29uZmlndXJlZCBGYXN0TUNQIGluc3RhbmNlIGFuZCBleHBvc2VzIGZhY3RvcnkgdXRpbGl0aWVzIHZpYSBhIHN0YXRpYyBCdWlsZGVyIGZvciBjb25zdHJ1Y3RpbmcgTUNQcyB3aXRoIHRvb2xzLCB2ZXJzaW9uaW5nLCBhbmQgbmFtaW5nIHNlbWFudGljcy5cbiAqIEB0ZW1wbGF0ZSBBdXRoIGV4dGVuZHMgRmFzdE1DUFNlc3Npb25BdXRoIEF1dGhlbnRpY2F0aW9uIHBheWxvYWQgdHlwZSBzdG9yZWQgaW4gdGhlIE1DUCBzZXNzaW9uLCBvciB1bmRlZmluZWQgZm9yIG5vIGF1dGguXG4gKiBAcGFyYW0ge0Zhc3RNQ1A8QXV0aD59IG1jcCBUaGUgdW5kZXJseWluZyBGYXN0TUNQIGluc3RhbmNlIHVzZWQgdG8gcmVnaXN0ZXIgYW5kIHJ1biB0b29scy5cbiAqIEBjbGFzc1xuICogQGV4YW1wbGVcbiAqIC8vIFVzaW5nIHRoZSBidWlsZGVyXG4gKiBjb25zdCBwcm90b2NvbCA9IE1vZGVsQ29udGV4dFByb3RvY29sLmJ1aWxkZXJcbiAqICAgLnNldE5hbWUoXCJWYWxpZGF0b3JcIilcbiAqICAgLnNldFZlcnNpb24oXCIxLjIuM1wiKVxuICogICAuYWRkVG9vbCh7IG5hbWU6IFwicGluZ1wiLCBkZXNjcmlwdGlvbjogXCJcIiwgcGFyYW1ldGVyczogei5hbnkoKSwgZXhlY3V0ZTogYXN5bmMgKCkgPT4gXCJwb25nXCIgfSlcbiAqICAgLmJ1aWxkKCk7XG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IERldiBhcyBEZXZlbG9wZXJcbiAqICAgcGFydGljaXBhbnQgQiBhcyBNb2RlbENvbnRleHRQcm90b2NvbC5CdWlsZGVyXG4gKiAgIHBhcnRpY2lwYW50IE1DUCBhcyBGYXN0TUNQXG4gKiAgIHBhcnRpY2lwYW50IFByb3RvIGFzIE1vZGVsQ29udGV4dFByb3RvY29sXG4gKiAgIERldi0+PkI6IHNldE5hbWUoKS9zZXRWZXJzaW9uKCkvYWRkVG9vbCgpXG4gKiAgIERldi0+PkI6IGJ1aWxkKClcbiAqICAgQi0+Pk1DUDogbmV3IEZhc3RNQ1AoeyBuYW1lLCB2ZXJzaW9uIH0pXG4gKiAgIEItPj5NQ1A6IGFkZFRvb2wodG9vbC4uLilcbiAqICAgQi0+PlByb3RvOiBuZXcgTW9kZWxDb250ZXh0UHJvdG9jb2woTUNQKVxuICogICBCLS0+PkRldjogTW9kZWxDb250ZXh0UHJvdG9jb2xcbiAqL1xuZXhwb3J0IGNsYXNzIE1vZGVsQ29udGV4dFByb3RvY29sPEF1dGggZXh0ZW5kcyBGYXN0TUNQU2Vzc2lvbkF1dGggPSB1bmRlZmluZWQ+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMYXppbHkgb2J0YWlucyBhIGxvZ2dlciBpbnN0YW5jZSBmb3IgdGhpcyBwcm90b2NvbCB3cmFwcGVyLlxuICAgKiBAc3VtbWFyeSBVc2VzIHRoZSBMb2dnaW5nIGZhY2lsaXR5IHRvIGNyZWF0ZSBhIGNvbnRleHQtYXdhcmUgTG9nZ2VyIGJvdW5kIHRvIHRoaXMgaW5zdGFuY2UuXG4gICAqIEByZXR1cm4ge0xvZ2dlcn0gQSBsb2dnZXIgaW5zdGFuY2UgZm9yIHRoaXMgY2xhc3MuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGxvZygpOiBMb2dnZXIge1xuICAgIHJldHVybiBMb2dnaW5nLmZvcih0aGlzIGFzIGFueSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgbWNwOiBGYXN0TUNQPEF1dGg+KSB7fVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQWxpYXMgdG8gdGhlIGlubmVyIEJ1aWxkZXIgY2xhc3MgZm9yIGV4dGVybmFsIGFjY2Vzcy5cbiAgICogQHN1bW1hcnkgRXhwb3NlcyB0aGUgYnVpbGRlciB0eXBlIHRvIGNvbnN1bWVycyB0byBlbmFibGUgdHlwZWQgY29uc3RydWN0aW9uIG9mIE1vZGVsQ29udGV4dFByb3RvY29sIGluc3RhbmNlcy5cbiAgICovXG4gIHN0YXRpYyByZWFkb25seSBCdWlsZGVyID0gQnVpbGRlcjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZhY3RvcnkgYWNjZXNzb3IgZm9yIGEgbmV3IEJ1aWxkZXIgaW5zdGFuY2UuXG4gICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBuZXcgYnVpbGRlciB0byBmbHVlbnRseSBjb25maWd1cmUgYW5kIGNvbnN0cnVjdCBhIE1vZGVsQ29udGV4dFByb3RvY29sLlxuICAgKiBAcmV0dXJuIHtCdWlsZGVyfSBBIG5ldyBidWlsZGVyIGluc3RhbmNlLlxuICAgKi9cbiAgc3RhdGljIGdldCBidWlsZGVyKCkge1xuICAgIHJldHVybiBuZXcgTW9kZWxDb250ZXh0UHJvdG9jb2wuQnVpbGRlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0ZXMgYSBzZW1hbnRpYyB2ZXJzaW9uIHN0cmluZy5cbiAgICogQHN1bW1hcnkgVXRpbGl0eSB3cmFwcGVyIGFyb3VuZCB0aGUgbW9kdWxlLWxldmVsIHZhbGlkYXRlVmVyc2lvbiB0byBrZWVwIGEgdHlwZWQgdmFsaWRhdG9yIGNsb3NlIHRvIHRoZSBjbGFzcyBBUEkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzaW9uIFRoZSB2ZXJzaW9uIHN0cmluZyB0byB2YWxpZGF0ZS5cbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgbm9ybWFsaXplZCBzZW1hbnRpYyB2ZXJzaW9uIHN0cmluZy5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHZhbGlkYXRlVmVyc2lvbihcbiAgICB2ZXJzaW9uOiBzdHJpbmdcbiAgKTogYCR7bnVtYmVyfS4ke251bWJlcn0uJHtudW1iZXJ9YCB7XG4gICAgcmV0dXJuIHZhbGlkYXRlVmVyc2lvbih2ZXJzaW9uKTtcbiAgfVxufVxuIl19
|
|
@@ -1,56 +1,65 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @
|
|
3
|
-
*
|
|
2
|
+
* @description Enumeration of JavaScript primitive type identifiers used by the model system.
|
|
3
|
+
* @summary References the relevant JS primitives and standardizes their string representations across the library.
|
|
4
4
|
* @property {string} STRING references the string primitive
|
|
5
5
|
* @property {string} NUMBER references the number primitive
|
|
6
6
|
* @property {string} BOOLEAN references the boolean primitive
|
|
7
7
|
* @property {string} BIGINT references the bigint primitive
|
|
8
|
-
*
|
|
9
|
-
* @
|
|
8
|
+
* @enum Primitives
|
|
9
|
+
* @readonly
|
|
10
10
|
* @memberOf module:decorator-validation
|
|
11
11
|
*/
|
|
12
12
|
export declare enum Primitives {
|
|
13
|
+
/** references the string primitive */
|
|
13
14
|
STRING = "string",
|
|
15
|
+
/** references the number primitive */
|
|
14
16
|
NUMBER = "number",
|
|
17
|
+
/** references the boolean primitive */
|
|
15
18
|
BOOLEAN = "boolean",
|
|
19
|
+
/** references the bigint primitive */
|
|
16
20
|
BIGINT = "bigint"
|
|
17
21
|
}
|
|
18
22
|
/**
|
|
19
|
-
* @
|
|
20
|
-
*
|
|
23
|
+
* @description Reserved model names which are excluded from model rebuilding.
|
|
24
|
+
* @summary References the Reserved model names to ignore during Model rebuilding to avoid interfering with native types and special cases.
|
|
21
25
|
* @property {string} STRING
|
|
22
26
|
* @property {string} OBJECT
|
|
23
27
|
* @property {string} NUMBER
|
|
24
28
|
* @property {string} BOOLEAN
|
|
25
29
|
* @property {string} BIGINT
|
|
26
30
|
* @property {string} DATE
|
|
27
|
-
*
|
|
28
|
-
* @
|
|
31
|
+
* @enum ReservedModels
|
|
32
|
+
* @readonly
|
|
29
33
|
* @memberOf module:decorator-validation
|
|
30
34
|
*/
|
|
31
35
|
export declare enum ReservedModels {
|
|
36
|
+
/** reserved name for string */
|
|
32
37
|
STRING = "string",
|
|
38
|
+
/** reserved name for object */
|
|
33
39
|
OBJECT = "object",
|
|
40
|
+
/** reserved name for number */
|
|
34
41
|
NUMBER = "number",
|
|
42
|
+
/** reserved name for boolean */
|
|
35
43
|
BOOLEAN = "boolean",
|
|
44
|
+
/** reserved name for bigint */
|
|
36
45
|
BIGINT = "bigint",
|
|
46
|
+
/** reserved name for Date */
|
|
37
47
|
DATE = "date"
|
|
38
48
|
}
|
|
39
49
|
/**
|
|
40
|
-
* @
|
|
41
|
-
*
|
|
42
|
-
* @
|
|
43
|
-
* @property {string}
|
|
44
|
-
* @property {
|
|
45
|
-
* @property {
|
|
46
|
-
* @property {
|
|
47
|
-
* @property {
|
|
48
|
-
* @property {
|
|
49
|
-
* @property {
|
|
50
|
-
* @property {
|
|
51
|
-
* @property {
|
|
52
|
-
*
|
|
53
|
-
* @constant jsTypes
|
|
50
|
+
* @description Basic supported JavaScript types used by the validation system.
|
|
51
|
+
* @summary References the basic supported JS types as strings that can be used for type checking and metadata.
|
|
52
|
+
* @typedef {Object} JsTypes
|
|
53
|
+
* @property {"string"} string String primitive identifier
|
|
54
|
+
* @property {"array"} array Array type identifier
|
|
55
|
+
* @property {"number"} number Number primitive identifier
|
|
56
|
+
* @property {"boolean"} boolean Boolean primitive identifier
|
|
57
|
+
* @property {"symbol"} symbol Symbol primitive identifier
|
|
58
|
+
* @property {"function"} function Function type identifier
|
|
59
|
+
* @property {"object"} object Object type identifier
|
|
60
|
+
* @property {"undefined"} undefined Undefined type identifier
|
|
61
|
+
* @property {"null"} null Null value identifier
|
|
62
|
+
* @property {"bigint"} BIGINT BigInt primitive identifier
|
|
54
63
|
* @memberOf module:decorator-validation
|
|
55
64
|
*/
|
|
56
65
|
export declare const jsTypes: string[];
|
|
@@ -1,58 +1,67 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @
|
|
3
|
-
*
|
|
2
|
+
* @description Enumeration of JavaScript primitive type identifiers used by the model system.
|
|
3
|
+
* @summary References the relevant JS primitives and standardizes their string representations across the library.
|
|
4
4
|
* @property {string} STRING references the string primitive
|
|
5
5
|
* @property {string} NUMBER references the number primitive
|
|
6
6
|
* @property {string} BOOLEAN references the boolean primitive
|
|
7
7
|
* @property {string} BIGINT references the bigint primitive
|
|
8
|
-
*
|
|
9
|
-
* @
|
|
8
|
+
* @enum Primitives
|
|
9
|
+
* @readonly
|
|
10
10
|
* @memberOf module:decorator-validation
|
|
11
11
|
*/
|
|
12
12
|
export var Primitives;
|
|
13
13
|
(function (Primitives) {
|
|
14
|
+
/** references the string primitive */
|
|
14
15
|
Primitives["STRING"] = "string";
|
|
16
|
+
/** references the number primitive */
|
|
15
17
|
Primitives["NUMBER"] = "number";
|
|
18
|
+
/** references the boolean primitive */
|
|
16
19
|
Primitives["BOOLEAN"] = "boolean";
|
|
20
|
+
/** references the bigint primitive */
|
|
17
21
|
Primitives["BIGINT"] = "bigint";
|
|
18
22
|
})(Primitives || (Primitives = {}));
|
|
19
23
|
/**
|
|
20
|
-
* @
|
|
21
|
-
*
|
|
24
|
+
* @description Reserved model names which are excluded from model rebuilding.
|
|
25
|
+
* @summary References the Reserved model names to ignore during Model rebuilding to avoid interfering with native types and special cases.
|
|
22
26
|
* @property {string} STRING
|
|
23
27
|
* @property {string} OBJECT
|
|
24
28
|
* @property {string} NUMBER
|
|
25
29
|
* @property {string} BOOLEAN
|
|
26
30
|
* @property {string} BIGINT
|
|
27
31
|
* @property {string} DATE
|
|
28
|
-
*
|
|
29
|
-
* @
|
|
32
|
+
* @enum ReservedModels
|
|
33
|
+
* @readonly
|
|
30
34
|
* @memberOf module:decorator-validation
|
|
31
35
|
*/
|
|
32
36
|
export var ReservedModels;
|
|
33
37
|
(function (ReservedModels) {
|
|
38
|
+
/** reserved name for string */
|
|
34
39
|
ReservedModels["STRING"] = "string";
|
|
40
|
+
/** reserved name for object */
|
|
35
41
|
ReservedModels["OBJECT"] = "object";
|
|
42
|
+
/** reserved name for number */
|
|
36
43
|
ReservedModels["NUMBER"] = "number";
|
|
44
|
+
/** reserved name for boolean */
|
|
37
45
|
ReservedModels["BOOLEAN"] = "boolean";
|
|
46
|
+
/** reserved name for bigint */
|
|
38
47
|
ReservedModels["BIGINT"] = "bigint";
|
|
48
|
+
/** reserved name for Date */
|
|
39
49
|
ReservedModels["DATE"] = "date";
|
|
40
50
|
})(ReservedModels || (ReservedModels = {}));
|
|
41
51
|
/**
|
|
42
|
-
* @
|
|
43
|
-
*
|
|
44
|
-
* @
|
|
45
|
-
* @property {string}
|
|
46
|
-
* @property {
|
|
47
|
-
* @property {
|
|
48
|
-
* @property {
|
|
49
|
-
* @property {
|
|
50
|
-
* @property {
|
|
51
|
-
* @property {
|
|
52
|
-
* @property {
|
|
53
|
-
* @property {
|
|
54
|
-
*
|
|
55
|
-
* @constant jsTypes
|
|
52
|
+
* @description Basic supported JavaScript types used by the validation system.
|
|
53
|
+
* @summary References the basic supported JS types as strings that can be used for type checking and metadata.
|
|
54
|
+
* @typedef {Object} JsTypes
|
|
55
|
+
* @property {"string"} string String primitive identifier
|
|
56
|
+
* @property {"array"} array Array type identifier
|
|
57
|
+
* @property {"number"} number Number primitive identifier
|
|
58
|
+
* @property {"boolean"} boolean Boolean primitive identifier
|
|
59
|
+
* @property {"symbol"} symbol Symbol primitive identifier
|
|
60
|
+
* @property {"function"} function Function type identifier
|
|
61
|
+
* @property {"object"} object Object type identifier
|
|
62
|
+
* @property {"undefined"} undefined Undefined type identifier
|
|
63
|
+
* @property {"null"} null Null value identifier
|
|
64
|
+
* @property {"bigint"} BIGINT BigInt primitive identifier
|
|
56
65
|
* @memberOf module:decorator-validation
|
|
57
66
|
*/
|
|
58
67
|
export const jsTypes = [
|
|
@@ -67,4 +76,4 @@ export const jsTypes = [
|
|
|
67
76
|
"null",
|
|
68
77
|
"bigint",
|
|
69
78
|
];
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVsL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFOLElBQVksVUFTWDtBQVRELFdBQVksVUFBVTtJQUNwQixzQ0FBc0M7SUFDdEMsK0JBQWlCLENBQUE7SUFDakIsc0NBQXNDO0lBQ3RDLCtCQUFpQixDQUFBO0lBQ2pCLHVDQUF1QztJQUN2QyxpQ0FBbUIsQ0FBQTtJQUNuQixzQ0FBc0M7SUFDdEMsK0JBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVRXLFVBQVUsS0FBVixVQUFVLFFBU3JCO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxDQUFOLElBQVksY0FhWDtBQWJELFdBQVksY0FBYztJQUN4QiwrQkFBK0I7SUFDL0IsbUNBQWlCLENBQUE7SUFDakIsK0JBQStCO0lBQy9CLG1DQUFpQixDQUFBO0lBQ2pCLCtCQUErQjtJQUMvQixtQ0FBaUIsQ0FBQTtJQUNqQixnQ0FBZ0M7SUFDaEMscUNBQW1CLENBQUE7SUFDbkIsK0JBQStCO0lBQy9CLG1DQUFpQixDQUFBO0lBQ2pCLDZCQUE2QjtJQUM3QiwrQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQWJXLGNBQWMsS0FBZCxjQUFjLFFBYXpCO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ3JCLFFBQVE7SUFDUixPQUFPO0lBQ1AsUUFBUTtJQUNSLFNBQVM7SUFDVCxRQUFRO0lBQ1IsVUFBVTtJQUNWLFFBQVE7SUFDUixXQUFXO0lBQ1gsTUFBTTtJQUNOLFFBQVE7Q0FDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb24gRW51bWVyYXRpb24gb2YgSmF2YVNjcmlwdCBwcmltaXRpdmUgdHlwZSBpZGVudGlmaWVycyB1c2VkIGJ5IHRoZSBtb2RlbCBzeXN0ZW0uXG4gKiBAc3VtbWFyeSBSZWZlcmVuY2VzIHRoZSByZWxldmFudCBKUyBwcmltaXRpdmVzIGFuZCBzdGFuZGFyZGl6ZXMgdGhlaXIgc3RyaW5nIHJlcHJlc2VudGF0aW9ucyBhY3Jvc3MgdGhlIGxpYnJhcnkuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gU1RSSU5HIHJlZmVyZW5jZXMgdGhlIHN0cmluZyBwcmltaXRpdmVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBOVU1CRVIgcmVmZXJlbmNlcyB0aGUgbnVtYmVyIHByaW1pdGl2ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEJPT0xFQU4gcmVmZXJlbmNlcyB0aGUgYm9vbGVhbiBwcmltaXRpdmVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBCSUdJTlQgcmVmZXJlbmNlcyB0aGUgYmlnaW50IHByaW1pdGl2ZVxuICogQGVudW0gUHJpbWl0aXZlc1xuICogQHJlYWRvbmx5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBlbnVtIFByaW1pdGl2ZXMge1xuICAvKiogcmVmZXJlbmNlcyB0aGUgc3RyaW5nIHByaW1pdGl2ZSAqL1xuICBTVFJJTkcgPSBcInN0cmluZ1wiLFxuICAvKiogcmVmZXJlbmNlcyB0aGUgbnVtYmVyIHByaW1pdGl2ZSAqL1xuICBOVU1CRVIgPSBcIm51bWJlclwiLFxuICAvKiogcmVmZXJlbmNlcyB0aGUgYm9vbGVhbiBwcmltaXRpdmUgKi9cbiAgQk9PTEVBTiA9IFwiYm9vbGVhblwiLFxuICAvKiogcmVmZXJlbmNlcyB0aGUgYmlnaW50IHByaW1pdGl2ZSAqL1xuICBCSUdJTlQgPSBcImJpZ2ludFwiLFxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXNlcnZlZCBtb2RlbCBuYW1lcyB3aGljaCBhcmUgZXhjbHVkZWQgZnJvbSBtb2RlbCByZWJ1aWxkaW5nLlxuICogQHN1bW1hcnkgUmVmZXJlbmNlcyB0aGUgUmVzZXJ2ZWQgbW9kZWwgbmFtZXMgdG8gaWdub3JlIGR1cmluZyBNb2RlbCByZWJ1aWxkaW5nIHRvIGF2b2lkIGludGVyZmVyaW5nIHdpdGggbmF0aXZlIHR5cGVzIGFuZCBzcGVjaWFsIGNhc2VzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFNUUklOR1xuICogQHByb3BlcnR5IHtzdHJpbmd9IE9CSkVDVFxuICogQHByb3BlcnR5IHtzdHJpbmd9IE5VTUJFUlxuICogQHByb3BlcnR5IHtzdHJpbmd9IEJPT0xFQU5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBCSUdJTlRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBEQVRFXG4gKiBAZW51bSBSZXNlcnZlZE1vZGVsc1xuICogQHJlYWRvbmx5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBlbnVtIFJlc2VydmVkTW9kZWxzIHtcbiAgLyoqIHJlc2VydmVkIG5hbWUgZm9yIHN0cmluZyAqL1xuICBTVFJJTkcgPSBcInN0cmluZ1wiLFxuICAvKiogcmVzZXJ2ZWQgbmFtZSBmb3Igb2JqZWN0ICovXG4gIE9CSkVDVCA9IFwib2JqZWN0XCIsXG4gIC8qKiByZXNlcnZlZCBuYW1lIGZvciBudW1iZXIgKi9cbiAgTlVNQkVSID0gXCJudW1iZXJcIixcbiAgLyoqIHJlc2VydmVkIG5hbWUgZm9yIGJvb2xlYW4gKi9cbiAgQk9PTEVBTiA9IFwiYm9vbGVhblwiLFxuICAvKiogcmVzZXJ2ZWQgbmFtZSBmb3IgYmlnaW50ICovXG4gIEJJR0lOVCA9IFwiYmlnaW50XCIsXG4gIC8qKiByZXNlcnZlZCBuYW1lIGZvciBEYXRlICovXG4gIERBVEUgPSBcImRhdGVcIixcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzaWMgc3VwcG9ydGVkIEphdmFTY3JpcHQgdHlwZXMgdXNlZCBieSB0aGUgdmFsaWRhdGlvbiBzeXN0ZW0uXG4gKiBAc3VtbWFyeSBSZWZlcmVuY2VzIHRoZSBiYXNpYyBzdXBwb3J0ZWQgSlMgdHlwZXMgYXMgc3RyaW5ncyB0aGF0IGNhbiBiZSB1c2VkIGZvciB0eXBlIGNoZWNraW5nIGFuZCBtZXRhZGF0YS5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IEpzVHlwZXNcbiAqIEBwcm9wZXJ0eSB7XCJzdHJpbmdcIn0gc3RyaW5nIFN0cmluZyBwcmltaXRpdmUgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtcImFycmF5XCJ9IGFycmF5IEFycmF5IHR5cGUgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtcIm51bWJlclwifSBudW1iZXIgTnVtYmVyIHByaW1pdGl2ZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkge1wiYm9vbGVhblwifSBib29sZWFuIEJvb2xlYW4gcHJpbWl0aXZlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7XCJzeW1ib2xcIn0gc3ltYm9sIFN5bWJvbCBwcmltaXRpdmUgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtcImZ1bmN0aW9uXCJ9IGZ1bmN0aW9uIEZ1bmN0aW9uIHR5cGUgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtcIm9iamVjdFwifSBvYmplY3QgT2JqZWN0IHR5cGUgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtcInVuZGVmaW5lZFwifSB1bmRlZmluZWQgVW5kZWZpbmVkIHR5cGUgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtcIm51bGxcIn0gbnVsbCBOdWxsIHZhbHVlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7XCJiaWdpbnRcIn0gQklHSU5UIEJpZ0ludCBwcmltaXRpdmUgaWRlbnRpZmllclxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QganNUeXBlcyA9IFtcbiAgXCJzdHJpbmdcIixcbiAgXCJhcnJheVwiLFxuICBcIm51bWJlclwiLFxuICBcImJvb2xlYW5cIixcbiAgXCJzeW1ib2xcIixcbiAgXCJmdW5jdGlvblwiLFxuICBcIm9iamVjdFwiLFxuICBcInVuZGVmaW5lZFwiLFxuICBcIm51bGxcIixcbiAgXCJiaWdpbnRcIixcbl07XG4iXX0=
|
|
@@ -1,31 +1,46 @@
|
|
|
1
1
|
import { Model } from "./Model";
|
|
2
2
|
/**
|
|
3
|
-
* @
|
|
4
|
-
*
|
|
3
|
+
* @description Helper function to create an instance by invoking a constructor with dynamic arguments.
|
|
4
|
+
* @summary Overrides standard construction patterns by wrapping the given constructor to allow spread argument invocation while preserving the prototype chain.
|
|
5
5
|
* @template M the model instance type
|
|
6
|
-
*
|
|
7
|
-
* @param {
|
|
8
|
-
* @
|
|
9
|
-
* @return {M} the new instance
|
|
10
|
-
*
|
|
6
|
+
* @param {any} constructor The constructor function to invoke.
|
|
7
|
+
* @param {...any[]} args Optional arguments to pass to the constructor.
|
|
8
|
+
* @return {M} The newly constructed instance.
|
|
11
9
|
* @function construct
|
|
12
10
|
* @memberOf module:decorator-validation
|
|
13
11
|
*/
|
|
14
12
|
export declare function construct<M extends Model>(constructor: any, ...args: any[]): M;
|
|
15
13
|
/**
|
|
16
|
-
* @
|
|
17
|
-
* @
|
|
18
|
-
*
|
|
14
|
+
* @description Recursively finds the last prototype in the chain before reaching Object.prototype.
|
|
15
|
+
* @summary Walks up the prototype chain to locate the most derived prototype that still precedes the base Object prototype.
|
|
16
|
+
* @param {object} obj The object whose prototype chain will be inspected.
|
|
17
|
+
* @return {object} The last prototype before Object.prototype, or the input object if its prototype is Object.prototype.
|
|
19
18
|
* @function findLastProtoBeforeObject
|
|
20
19
|
* @memberOf module:decorator-validation
|
|
21
20
|
*/
|
|
22
21
|
export declare function findLastProtoBeforeObject(obj: object): object;
|
|
23
22
|
/**
|
|
24
|
-
* @
|
|
25
|
-
*
|
|
26
|
-
* @param {unknown} obj
|
|
27
|
-
*
|
|
23
|
+
* @description Binds the Model class as the root prototype of the provided instance when not already a Model.
|
|
24
|
+
* @summary Ensures objects created outside of the Model inheritance chain gain Model as their ultimate prototype to access model utilities.
|
|
25
|
+
* @param {unknown} obj The object to bind to the Model prototype chain.
|
|
26
|
+
* @return {void}
|
|
28
27
|
* @function bindModelPrototype
|
|
28
|
+
* @mermaid
|
|
29
|
+
* sequenceDiagram
|
|
30
|
+
* participant Caller
|
|
31
|
+
* participant Fn as bindModelPrototype
|
|
32
|
+
* participant M as Model.prototype
|
|
33
|
+
* Caller->>Fn: obj
|
|
34
|
+
* alt obj instanceof Model
|
|
35
|
+
* Fn-->>Caller: return
|
|
36
|
+
* else obj chain ends at Object.prototype
|
|
37
|
+
* Fn->>Fn: setPrototypeOf(obj, M)
|
|
38
|
+
* Fn-->>Caller: return
|
|
39
|
+
* else deep prototype chain
|
|
40
|
+
* Fn->>Fn: walk prototypes
|
|
41
|
+
* Fn->>Fn: setPrototypeOf(last, M)
|
|
42
|
+
* Fn-->>Caller: return
|
|
43
|
+
* end
|
|
29
44
|
* @memberOf module:decorator-validation
|
|
30
45
|
*/
|
|
31
46
|
export declare function bindModelPrototype(obj: unknown): void;
|