@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.
@@ -16,4 +16,4 @@ export * from "./model";
16
16
  * @const VERSION
17
17
  * @memberOf module:decorator-validation
18
18
  */
19
- export declare const VERSION = "1.7.17";
19
+ export declare const VERSION = "1.7.19";
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.17";
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
- * @summary References the relevant JS primitives
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
- * @constant Primitives
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
- * @summary References the Reserved model names to ignore during Model rebuilding
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
- * @constant ReservedModels
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
- * @summary References the basic supported js types
41
- *
42
- * @property {string} string
43
- * @property {string} array
44
- * @property {string} number
45
- * @property {string} boolean
46
- * @property {string} symbol
47
- * @property {string} function
48
- * @property {string} object
49
- * @property {string} undefined
50
- * @property {string} null
51
- * @property {string} BIGINT
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
- * @summary References the relevant JS primitives
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
- * @constant Primitives
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
- * @summary References the Reserved model names to ignore during Model rebuilding
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
- * @constant ReservedModels
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
- * @summary References the basic supported js types
43
- *
44
- * @property {string} string
45
- * @property {string} array
46
- * @property {string} number
47
- * @property {string} boolean
48
- * @property {string} symbol
49
- * @property {string} function
50
- * @property {string} object
51
- * @property {string} undefined
52
- * @property {string} null
53
- * @property {string} BIGINT
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVsL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFOLElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQiwrQkFBaUIsQ0FBQTtJQUNqQiwrQkFBaUIsQ0FBQTtJQUNqQixpQ0FBbUIsQ0FBQTtJQUNuQiwrQkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBTFcsVUFBVSxLQUFWLFVBQVUsUUFLckI7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLENBQU4sSUFBWSxjQU9YO0FBUEQsV0FBWSxjQUFjO0lBQ3hCLG1DQUFpQixDQUFBO0lBQ2pCLG1DQUFpQixDQUFBO0lBQ2pCLG1DQUFpQixDQUFBO0lBQ2pCLHFDQUFtQixDQUFBO0lBQ25CLG1DQUFpQixDQUFBO0lBQ2pCLCtCQUFhLENBQUE7QUFDZixDQUFDLEVBUFcsY0FBYyxLQUFkLGNBQWMsUUFPekI7QUFFRDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRztJQUNyQixRQUFRO0lBQ1IsT0FBTztJQUNQLFFBQVE7SUFDUixTQUFTO0lBQ1QsUUFBUTtJQUNSLFVBQVU7SUFDVixRQUFRO0lBQ1IsV0FBVztJQUNYLE1BQU07SUFDTixRQUFRO0NBQ1QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHN1bW1hcnkgUmVmZXJlbmNlcyB0aGUgcmVsZXZhbnQgSlMgcHJpbWl0aXZlc1xuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBTVFJJTkcgcmVmZXJlbmNlcyB0aGUgc3RyaW5nIHByaW1pdGl2ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE5VTUJFUiByZWZlcmVuY2VzIHRoZSBudW1iZXIgcHJpbWl0aXZlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gQk9PTEVBTiByZWZlcmVuY2VzIHRoZSBib29sZWFuIHByaW1pdGl2ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEJJR0lOVCByZWZlcmVuY2VzIHRoZSBiaWdpbnQgcHJpbWl0aXZlXG4gKlxuICogQGNvbnN0YW50IFByaW1pdGl2ZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGVudW0gUHJpbWl0aXZlcyB7XG4gIFNUUklORyA9IFwic3RyaW5nXCIsXG4gIE5VTUJFUiA9IFwibnVtYmVyXCIsXG4gIEJPT0xFQU4gPSBcImJvb2xlYW5cIixcbiAgQklHSU5UID0gXCJiaWdpbnRcIixcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBSZWZlcmVuY2VzIHRoZSBSZXNlcnZlZCBtb2RlbCBuYW1lcyB0byBpZ25vcmUgZHVyaW5nIE1vZGVsIHJlYnVpbGRpbmdcbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gU1RSSU5HXG4gKiBAcHJvcGVydHkge3N0cmluZ30gT0JKRUNUXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTlVNQkVSXG4gKiBAcHJvcGVydHkge3N0cmluZ30gQk9PTEVBTlxuICogQHByb3BlcnR5IHtzdHJpbmd9IEJJR0lOVFxuICogQHByb3BlcnR5IHtzdHJpbmd9IERBVEVcbiAqXG4gKiBAY29uc3RhbnQgUmVzZXJ2ZWRNb2RlbHNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGVudW0gUmVzZXJ2ZWRNb2RlbHMge1xuICBTVFJJTkcgPSBcInN0cmluZ1wiLFxuICBPQkpFQ1QgPSBcIm9iamVjdFwiLFxuICBOVU1CRVIgPSBcIm51bWJlclwiLFxuICBCT09MRUFOID0gXCJib29sZWFuXCIsXG4gIEJJR0lOVCA9IFwiYmlnaW50XCIsXG4gIERBVEUgPSBcImRhdGVcIixcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBSZWZlcmVuY2VzIHRoZSBiYXNpYyBzdXBwb3J0ZWQganMgdHlwZXNcbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc3RyaW5nXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXJyYXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBudW1iZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBib29sZWFuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc3ltYm9sXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZnVuY3Rpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB1bmRlZmluZWRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBudWxsXG4gKiBAcHJvcGVydHkge3N0cmluZ30gQklHSU5UXG4gKlxuICogQGNvbnN0YW50IGpzVHlwZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGpzVHlwZXMgPSBbXG4gIFwic3RyaW5nXCIsXG4gIFwiYXJyYXlcIixcbiAgXCJudW1iZXJcIixcbiAgXCJib29sZWFuXCIsXG4gIFwic3ltYm9sXCIsXG4gIFwiZnVuY3Rpb25cIixcbiAgXCJvYmplY3RcIixcbiAgXCJ1bmRlZmluZWRcIixcbiAgXCJudWxsXCIsXG4gIFwiYmlnaW50XCIsXG5dO1xuIl19
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVsL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFOLElBQVksVUFTWDtBQVRELFdBQVksVUFBVTtJQUNwQixzQ0FBc0M7SUFDdEMsK0JBQWlCLENBQUE7SUFDakIsc0NBQXNDO0lBQ3RDLCtCQUFpQixDQUFBO0lBQ2pCLHVDQUF1QztJQUN2QyxpQ0FBbUIsQ0FBQTtJQUNuQixzQ0FBc0M7SUFDdEMsK0JBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVRXLFVBQVUsS0FBVixVQUFVLFFBU3JCO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxDQUFOLElBQVksY0FhWDtBQWJELFdBQVksY0FBYztJQUN4QiwrQkFBK0I7SUFDL0IsbUNBQWlCLENBQUE7SUFDakIsK0JBQStCO0lBQy9CLG1DQUFpQixDQUFBO0lBQ2pCLCtCQUErQjtJQUMvQixtQ0FBaUIsQ0FBQTtJQUNqQixnQ0FBZ0M7SUFDaEMscUNBQW1CLENBQUE7SUFDbkIsK0JBQStCO0lBQy9CLG1DQUFpQixDQUFBO0lBQ2pCLDZCQUE2QjtJQUM3QiwrQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQWJXLGNBQWMsS0FBZCxjQUFjLFFBYXpCO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ3JCLFFBQVE7SUFDUixPQUFPO0lBQ1AsUUFBUTtJQUNSLFNBQVM7SUFDVCxRQUFRO0lBQ1IsVUFBVTtJQUNWLFFBQVE7SUFDUixXQUFXO0lBQ1gsTUFBTTtJQUNOLFFBQVE7Q0FDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb24gRW51bWVyYXRpb24gb2YgSmF2YVNjcmlwdCBwcmltaXRpdmUgdHlwZSBpZGVudGlmaWVycyB1c2VkIGJ5IHRoZSBtb2RlbCBzeXN0ZW0uXG4gKiBAc3VtbWFyeSBSZWZlcmVuY2VzIHRoZSByZWxldmFudCBKUyBwcmltaXRpdmVzIGFuZCBzdGFuZGFyZGl6ZXMgdGhlaXIgc3RyaW5nIHJlcHJlc2VudGF0aW9ucyBhY3Jvc3MgdGhlIGxpYnJhcnkuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gU1RSSU5HIHJlZmVyZW5jZXMgdGhlIHN0cmluZyBwcmltaXRpdmVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBOVU1CRVIgcmVmZXJlbmNlcyB0aGUgbnVtYmVyIHByaW1pdGl2ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEJPT0xFQU4gcmVmZXJlbmNlcyB0aGUgYm9vbGVhbiBwcmltaXRpdmVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBCSUdJTlQgcmVmZXJlbmNlcyB0aGUgYmlnaW50IHByaW1pdGl2ZVxuICogQGVudW0gUHJpbWl0aXZlc1xuICogQHJlYWRvbmx5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBlbnVtIFByaW1pdGl2ZXMge1xuICAvKiogcmVmZXJlbmNlcyB0aGUgc3RyaW5nIHByaW1pdGl2ZSAqL1xuICBTVFJJTkcgPSBcInN0cmluZ1wiLFxuICAvKiogcmVmZXJlbmNlcyB0aGUgbnVtYmVyIHByaW1pdGl2ZSAqL1xuICBOVU1CRVIgPSBcIm51bWJlclwiLFxuICAvKiogcmVmZXJlbmNlcyB0aGUgYm9vbGVhbiBwcmltaXRpdmUgKi9cbiAgQk9PTEVBTiA9IFwiYm9vbGVhblwiLFxuICAvKiogcmVmZXJlbmNlcyB0aGUgYmlnaW50IHByaW1pdGl2ZSAqL1xuICBCSUdJTlQgPSBcImJpZ2ludFwiLFxufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXNlcnZlZCBtb2RlbCBuYW1lcyB3aGljaCBhcmUgZXhjbHVkZWQgZnJvbSBtb2RlbCByZWJ1aWxkaW5nLlxuICogQHN1bW1hcnkgUmVmZXJlbmNlcyB0aGUgUmVzZXJ2ZWQgbW9kZWwgbmFtZXMgdG8gaWdub3JlIGR1cmluZyBNb2RlbCByZWJ1aWxkaW5nIHRvIGF2b2lkIGludGVyZmVyaW5nIHdpdGggbmF0aXZlIHR5cGVzIGFuZCBzcGVjaWFsIGNhc2VzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFNUUklOR1xuICogQHByb3BlcnR5IHtzdHJpbmd9IE9CSkVDVFxuICogQHByb3BlcnR5IHtzdHJpbmd9IE5VTUJFUlxuICogQHByb3BlcnR5IHtzdHJpbmd9IEJPT0xFQU5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBCSUdJTlRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBEQVRFXG4gKiBAZW51bSBSZXNlcnZlZE1vZGVsc1xuICogQHJlYWRvbmx5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBlbnVtIFJlc2VydmVkTW9kZWxzIHtcbiAgLyoqIHJlc2VydmVkIG5hbWUgZm9yIHN0cmluZyAqL1xuICBTVFJJTkcgPSBcInN0cmluZ1wiLFxuICAvKiogcmVzZXJ2ZWQgbmFtZSBmb3Igb2JqZWN0ICovXG4gIE9CSkVDVCA9IFwib2JqZWN0XCIsXG4gIC8qKiByZXNlcnZlZCBuYW1lIGZvciBudW1iZXIgKi9cbiAgTlVNQkVSID0gXCJudW1iZXJcIixcbiAgLyoqIHJlc2VydmVkIG5hbWUgZm9yIGJvb2xlYW4gKi9cbiAgQk9PTEVBTiA9IFwiYm9vbGVhblwiLFxuICAvKiogcmVzZXJ2ZWQgbmFtZSBmb3IgYmlnaW50ICovXG4gIEJJR0lOVCA9IFwiYmlnaW50XCIsXG4gIC8qKiByZXNlcnZlZCBuYW1lIGZvciBEYXRlICovXG4gIERBVEUgPSBcImRhdGVcIixcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzaWMgc3VwcG9ydGVkIEphdmFTY3JpcHQgdHlwZXMgdXNlZCBieSB0aGUgdmFsaWRhdGlvbiBzeXN0ZW0uXG4gKiBAc3VtbWFyeSBSZWZlcmVuY2VzIHRoZSBiYXNpYyBzdXBwb3J0ZWQgSlMgdHlwZXMgYXMgc3RyaW5ncyB0aGF0IGNhbiBiZSB1c2VkIGZvciB0eXBlIGNoZWNraW5nIGFuZCBtZXRhZGF0YS5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IEpzVHlwZXNcbiAqIEBwcm9wZXJ0eSB7XCJzdHJpbmdcIn0gc3RyaW5nIFN0cmluZyBwcmltaXRpdmUgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtcImFycmF5XCJ9IGFycmF5IEFycmF5IHR5cGUgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtcIm51bWJlclwifSBudW1iZXIgTnVtYmVyIHByaW1pdGl2ZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkge1wiYm9vbGVhblwifSBib29sZWFuIEJvb2xlYW4gcHJpbWl0aXZlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7XCJzeW1ib2xcIn0gc3ltYm9sIFN5bWJvbCBwcmltaXRpdmUgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtcImZ1bmN0aW9uXCJ9IGZ1bmN0aW9uIEZ1bmN0aW9uIHR5cGUgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtcIm9iamVjdFwifSBvYmplY3QgT2JqZWN0IHR5cGUgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtcInVuZGVmaW5lZFwifSB1bmRlZmluZWQgVW5kZWZpbmVkIHR5cGUgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtcIm51bGxcIn0gbnVsbCBOdWxsIHZhbHVlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7XCJiaWdpbnRcIn0gQklHSU5UIEJpZ0ludCBwcmltaXRpdmUgaWRlbnRpZmllclxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICovXG5leHBvcnQgY29uc3QganNUeXBlcyA9IFtcbiAgXCJzdHJpbmdcIixcbiAgXCJhcnJheVwiLFxuICBcIm51bWJlclwiLFxuICBcImJvb2xlYW5cIixcbiAgXCJzeW1ib2xcIixcbiAgXCJmdW5jdGlvblwiLFxuICBcIm9iamVjdFwiLFxuICBcInVuZGVmaW5lZFwiLFxuICBcIm51bGxcIixcbiAgXCJiaWdpbnRcIixcbl07XG4iXX0=
@@ -1,31 +1,46 @@
1
1
  import { Model } from "./Model";
2
2
  /**
3
- * @summary Helper Function to override constructors
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 {Function} constructor
8
- * @param {any[]} [args]
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
- * @summary Recursively finds the last prototype before Object
17
- * @param {object} obj
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
- * @sumary binds the {@link Model} class as a root prototype of the provided instance
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;