ts-ref-kit 1.1.12 → 1.1.14

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 CHANGED
@@ -1,67 +1,365 @@
1
- # TS-ref-kit
1
+ # ts-ref-kit
2
2
 
3
- A TypeScript library for type reflection and validation.
3
+ TypeScript type reflection and validation library for runtime access and usage of TypeScript type information.
4
4
 
5
5
  ## Features
6
- - Type reflection for classes, interfaces, enums, and more
7
- - JSON serialization and deserialization with type validation
8
- - Function parameter and return type validation
9
- - Decorator support for enhancing type metadata
6
+
7
+ - **Type Reflection**: Retrieve metadata for TypeScript classes, interfaces, type aliases, and enums at runtime
8
+ - **Type Validation**: Validate whether values conform to specific TypeScript type definitions
9
+ - **JSON Conversion**: Convert JSON strings to class instances
10
+ - **Type Queries**: Query inheritance relationships, interface implementations, and more between classes
11
+ - **Generic Support**: Support for reflection and validation of generic types
12
+ - **Enum Handling**: Access enum names, values, and type definitions
10
13
 
11
14
  ## Installation
12
15
 
13
16
  ```bash
14
- npm install reflect-types
17
+ npm install ts-ref-kit
15
18
  ```
16
19
 
17
- ## Usage
20
+ ## Quick Start
18
21
 
19
- ### Basic Reflection
22
+ ### Type Reflection Example
20
23
 
21
24
  ```typescript
22
- import { reflect } from 'reflect-types';
25
+ import { getClassDefinition, getInterfaceDefinition, getTypeAliasDefinition, getEnumDefinition } from 'ts-ref-kit';
23
26
 
24
- class User {
27
+ // Get class definition
28
+ const classDef = getClassDefinition('MyClass');
29
+ console.log(classDef?.name); // Output: class name
30
+ console.log(classDef?.properties); // Output: class properties list
31
+ console.log(classDef?.methods); // Output: class methods list
32
+
33
+ // Get interface definition
34
+ const interfaceDef = getInterfaceDefinition('MyInterface');
35
+ console.log(interfaceDef?.name); // Output: interface name
36
+ console.log(interfaceDef?.properties); // Output: interface properties list
37
+ console.log(interfaceDef?.methods); // Output: interface methods list
38
+
39
+ // Get type alias definition
40
+ const typeAliasDef = getTypeAliasDefinition('MyTypeAlias');
41
+ console.log(typeAliasDef?.name); // Output: type alias name
42
+ console.log(typeAliasDef?.type); // Output: type definition
43
+
44
+ // Get enum definition
45
+ const enumDef = getEnumDefinition('MyEnum');
46
+ console.log(enumDef?.name); // Output: enum name
47
+ console.log(enumDef?.members); // Output: enum members
48
+ ```
49
+
50
+ ### Type Validation Example
51
+
52
+ ```typescript
53
+ import { isType, assertType } from 'ts-ref-kit';
54
+
55
+ // Validate if value matches type
56
+ const value = 'test';
57
+ const isString = isType(value, 'string');
58
+ console.log(isString); // Output: true
59
+
60
+ // Assert value matches type (throws error if not)
61
+ assertType<string>(value, 'string');
62
+
63
+ // Validate complex type
64
+ interface User {
25
65
  name: string;
26
66
  age: number;
67
+ }
27
68
 
28
- constructor(name: string, age: number) {
29
- this.name = name;
30
- this.age = age;
69
+ const user = { name: 'John', age: 30 };
70
+ const isUser = isType(user, '{ name: string, age: number }');
71
+ console.log(isUser); // Output: true
72
+ ```
73
+
74
+ ### JSON Conversion Example
75
+
76
+ ```typescript
77
+ import { JSONTransfer } from 'ts-ref-kit';
78
+
79
+ class User {
80
+ name: string;
81
+ age: number;
82
+ constructor() {
83
+ this.name = '';
84
+ this.age = 0;
31
85
  }
32
86
  }
33
87
 
34
- const userType = reflect(User);
35
- console.log(userType.name); // 'User'
36
- console.log(userType.properties); // { name: { type: String }, age: { type: Number } }
88
+ const jsonString = '{"name":"John","age":30}';
89
+ const jsonTransfer = new JSONTransfer();
90
+
91
+ // Convert JSON string to class instance
92
+ const user = jsonTransfer.parse<User>(jsonString, User);
93
+ console.log(user instanceof User); // Output: true
94
+ console.log(user.name); // Output: John
95
+ console.log(user.age); // Output: 30
96
+ ```
97
+
98
+ ### Enum Operations Example
99
+
100
+ ```typescript
101
+ import { getEnumNames, getEnumValues } from 'ts-ref-kit';
102
+
103
+ enum Color {
104
+ Red,
105
+ Green,
106
+ Blue
107
+ }
108
+
109
+ // Get enum names list
110
+ const colorNames = getEnumNames('Color');
111
+ console.log(colorNames); // Output: ['Red', 'Green', 'Blue']
112
+
113
+ // Get enum values list
114
+ const colorValues = getEnumValues({ Color });
115
+ console.log(colorValues); // Output: [0, 1, 2]
116
+ ```
117
+
118
+ ## API Documentation
119
+
120
+ ### Core Type Definitions
121
+
122
+ - **TypeDefinition**: Core interface representing TypeScript types
123
+ - **ClassDefinition**: Definition for class types
124
+ - **InterfaceDefinition**: Definition for interface types
125
+ - **TypeAliasDefinition**: Definition for type aliases
126
+ - **EnumDefinition**: Definition for enum types
127
+
128
+ ### Type Reflection API
129
+
130
+ #### Class Related
131
+ - `getClassDefinition(arg: Constructor | object | string): ClassDefinition | undefined`
132
+ - `getClassByName(className: string): Constructor | undefined`
133
+
134
+ #### Interface Related
135
+ - `getInterfaceDefinition(name: string): InterfaceDefinition | undefined`
136
+
137
+ #### Type Alias Related
138
+ - `getTypeAliasDefinition(name: string, genericArgs?: TypeDefinition[]): TypeAliasDefinition | undefined`
139
+
140
+ #### Enum Related
141
+ - `getEnumDefinition(name: string): EnumDefinition | undefined`
142
+ - `getEnumNames(enumName: string): string[]`
143
+ - `getEnumValues(args: { [enumName: string]: Record<string, string | number> }): (string | number)[]`
144
+
145
+ #### Generic Type
146
+ - `getTypeDefinition(typeName: string, genericArgs?: TypeDefinition[]): TypeDefinition`
147
+
148
+ ### Type Validation API
149
+
150
+ - `isType(value: unknown, type: Type | TypeDefinition, depth: number = 5): boolean`
151
+ - `assertType<T>(data: unknown, type: Type, depth: number = 5): T`
152
+ - `validateValue(value: unknown, typeDef: TypeDefinition, depth: number = 5): ValidateResult`
153
+
154
+ ### JSON Conversion API
155
+
156
+ - `JSONTransfer` class
157
+ - `parse<T = unknown>(jsonString: JSONString<T>, type?: Type): T`
158
+
159
+ ### Configuration Options
160
+
161
+ ```typescript
162
+ import { ReflectConfig } from 'ts-ref-kit';
163
+
164
+ ReflectConfig {
165
+ // Validation error handler
166
+ validationErrorHandler: function (e: ValidationError): void {
167
+ console.error(e.message);
168
+ console.error(e.failureResult?.errorStackFlow);
169
+ },
170
+ // Whether to enable validation
171
+ validation: true,
172
+ // Whether to enable debug mode
173
+ debug: false
174
+ }
175
+ ```
176
+
177
+ ## Advanced Usage
178
+
179
+ ### Generic Type Handling
180
+
181
+ ```typescript
182
+ import { getTypeDefinition } from 'ts-ref-kit';
183
+
184
+ // Get generic type definition
185
+ const arrayOfStringType = getTypeDefinition('Array<string>');
186
+ console.log(arrayOfStringType.arrayElementType?.name); // Output: string
187
+
188
+ // Use type literals
189
+ const mapType = getTypeDefinition('Map<string, number>');
37
190
  ```
38
191
 
39
- ### JSON Serialization
192
+ ### Type Relationship Queries
40
193
 
41
194
  ```typescript
42
- import { serialize, deserialize } from 'reflect-types/reflect-json';
195
+ import { getClassDefinition, getInterfaceDefinition } from 'ts-ref-kit';
196
+
197
+ // Query if a class is a subclass of another class
198
+ const classDef = getClassDefinition('MyClass');
199
+ const isSubClass = classDef?.isSubClassOf('BaseClass');
200
+
201
+ // Query if a class is a superclass of another class
202
+ const isSuperClass = classDef?.isSuperClassOf('DerivedClass');
203
+ ```
204
+
205
+ ### Special Type Registration
43
206
 
44
- const user = new User('John', 30);
45
- const json = serialize(user);
46
- console.log(json); // { name: 'John', age: 30 }
207
+ ```typescript
208
+ import { registerSpecialType } from 'ts-ref-kit';
47
209
 
48
- const deserializedUser = deserialize(json, User);
49
- console.log(deserializedUser instanceof User); // true
210
+ // Register custom special type
211
+ registerSpecialType('MySpecialType', (typeArgs) => {
212
+ return {
213
+ name: 'MySpecialType',
214
+ type: {
215
+ // Type definition
216
+ }
217
+ };
218
+ });
50
219
  ```
51
220
 
52
- ### Parser API
221
+ ## Parser Configuration
222
+
223
+ The core functionality of ts-ref-kit relies on type metadata generated at compile time. The parser module provides integration capabilities with different build tools to extract type information and generate metadata during compilation.
224
+
225
+ ### Vite Plugin
226
+
227
+ In Vite projects, you can use `reflectParserPlugin` to automatically generate type metadata:
53
228
 
54
229
  ```typescript
55
- import { parseType } from 'reflect-types/parser';
230
+ import { defineConfig } from 'vite'
231
+ import { reflectParserPlugin } from 'ts-ref-kit/parser'
56
232
 
57
- const typeInfo = parseType('User<string, number>');
58
- console.log(typeInfo); // { name: 'User', generics: [String, Number] }
233
+ export default defineConfig({
234
+ plugins: [
235
+ reflectParserPlugin({
236
+ entry: 'src/main.ts',
237
+ sourcePaths: 'src'
238
+ })
239
+ ]
240
+ })
59
241
  ```
60
242
 
61
- ## Documentation
243
+ ### Custom Build Configuration
244
+
245
+ If you're using other build tools or a custom build process, you can directly use `reflectLoader`:
246
+
247
+ ```typescript
248
+ import { reflectLoader } from 'ts-ref-kit/parser'
249
+
250
+ const loader = reflectLoader({
251
+ sourcePaths: 'src',
252
+ exclude: /node_modules/,
253
+ outputLog: true
254
+ })
255
+
256
+ // Transform a single file
257
+ const transformedCode = loader.transform(sourceCode, sourceFileName)
258
+
259
+ // Generate all metadata
260
+ const allMetas = loader.outputAllMetas()
261
+ ```
262
+
263
+ ### Parser Options
264
+
265
+ - `entry`: Entry file path of the project
266
+ - `sourcePaths`: Source code paths to process, can be a string or array of strings
267
+ - `exclude`: File paths to exclude, can be a string, regular expression, or array of them
268
+ - `forEnabledClassOnly`: Whether to only process classes that implement the `EnableReflect` interface
269
+ - `outputLog`: Whether to output log information
270
+
271
+ ### Working Principle
272
+
273
+ 1. The parser scans TypeScript source code during compilation
274
+ 2. Extracts definitions of classes, interfaces, enums, and type aliases
275
+ 3. Generates type metadata and injects it into the compiled code
276
+ 4. Runtime access to this metadata is available through `ts-ref-kit` APIs
277
+
278
+ ### Node.js Environment Usage
279
+
280
+ In Node.js environments, you can directly use the parser to analyze TypeScript files:
281
+
282
+ ```javascript
283
+ const { reflectLoader } = require('ts-ref-kit/parser');
284
+ const fs = require('fs');
285
+
286
+ const sourceCode = fs.readFileSync('src/types.ts', 'utf8');
287
+ const loader = reflectLoader({
288
+ sourcePaths: 'src'
289
+ });
290
+
291
+ const transformedCode = loader.transform(sourceCode, 'src/types.ts');
292
+ const metadata = loader.outputAllMetas();
62
293
 
63
- For more detailed documentation, please visit our [GitHub repository](https://github.com/yourusername/reflect-types).
294
+ console.log(metadata);
295
+ ```
296
+
297
+ ### tsconfig.json Configuration
298
+
299
+ To enable decorator metadata generation, add the following configuration to your `tsconfig.json`:
300
+
301
+ ```json
302
+ {
303
+ "compilerOptions": {
304
+ "experimentalDecorators": true,
305
+ "emitDecoratorMetadata": true,
306
+ "plugins": [
307
+ {
308
+ "transform": "ts-ref-kit/parser"
309
+ }
310
+ ]
311
+ }
312
+ }
313
+ ```
314
+
315
+ ### Webpack Configuration
316
+
317
+ In Webpack projects, you can configure through custom transformers:
318
+
319
+ ```javascript
320
+ const { ReflectParserPlugin } = require('ts-ref-kit/parser');
321
+
322
+ module.exports = {
323
+ module: {
324
+ rules: [
325
+ {
326
+ test: /\.tsx?$/,
327
+ use: [
328
+ {
329
+ loader: 'ts-loader',
330
+ options: {
331
+ getCustomTransformers: () => ({
332
+ before: [ReflectParserPlugin()]
333
+ })
334
+ }
335
+ }
336
+ ]
337
+ }
338
+ ]
339
+ }
340
+ };
341
+ ```
342
+
343
+ ## Development
344
+
345
+ ### Install Dependencies
346
+
347
+ ```bash
348
+ npm install
349
+ ```
350
+
351
+ ### Build Project
352
+
353
+ ```bash
354
+ npm run build
355
+ ```
356
+
357
+ ### Run Lint
358
+
359
+ ```bash
360
+ npm run lint
361
+ ```
64
362
 
65
363
  ## License
66
364
 
67
- MIT License (see LICENSE file for details)
365
+ MIT
@@ -1,4 +1,4 @@
1
- "use strict";var _=Object.defineProperty,ln=Object.defineProperties,un=Object.getOwnPropertyDescriptor,pn=Object.getOwnPropertyDescriptors,mn=Object.getOwnPropertyNames,ze=Object.getOwnPropertySymbols;var Ke=Object.prototype.hasOwnProperty,yn=Object.prototype.propertyIsEnumerable;var qe=(n,e,t)=>e in n?_(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,S=(n,e)=>{for(var t in e||(e={}))Ke.call(e,t)&&qe(n,t,e[t]);if(ze)for(var t of ze(e))yn.call(e,t)&&qe(n,t,e[t]);return n},Qe=(n,e)=>ln(n,pn(e)),o=(n,e)=>_(n,"name",{value:e,configurable:!0});var dn=(n,e)=>{for(var t in e)_(n,t,{get:e[t],enumerable:!0})},Tn=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of mn(e))!Ke.call(n,r)&&r!==t&&_(n,r,{get:()=>e[r],enumerable:!(i=un(e,r))||i.enumerable});return n};var Dn=n=>Tn(_({},"__esModule",{value:!0}),n);var Jn={};dn(Jn,{JSONError:()=>q,JSONTransfer:()=>Ue,ReflectConfig:()=>b,ReflectValidate:()=>En,TypeDefinition:()=>N,TypeParseError:()=>Te,ValidationError:()=>O,assertType:()=>An,failedResult:()=>l,getClassByName:()=>Ye,getClassDefinition:()=>d,getDebugInfo:()=>_n,getEnumDefinition:()=>V,getEnumNames:()=>nn,getEnumValues:()=>tn,getErrorTraceMessages:()=>bn,getInterfaceDefinition:()=>k,getTypeAliasDefinition:()=>de,getTypeDef:()=>M,isNullable:()=>kn,isType:()=>sn,registerSpecialType:()=>x,safeCall:()=>Fn,successResult:()=>u,validateArray:()=>jn,validateDictionary:()=>vn,validateInstance:()=>Ge});module.exports=Dn(Jn);var be=["string","number","boolean","bigint","symbol"],Xe={string:String,number:Number,boolean:Boolean,object:Object};var J=Reflect,G;function w(){if(G)return G;let n=J.__meta;if(n===void 0){console.warn("No reflect meta found, reflect is disabled.");return}try{G=JSON.parse(gn(n))}catch(t){console.error(t),console.warn("Illegal reflect meta found, reflect is disabled");return}delete J.__meta;let e=G;return e.classDef=J.__classDef||{},delete J.__classDef,Reflect.defineProperty(J,"registerClass",{value:o(t=>Object.assign(e.classDef,t),"value")}),G}o(w,"getRawMeta");function gn(n){let e=atob(n),t=new Uint8Array(e.length);for(let r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return new TextDecoder().decode(t)}o(gn,"decode");var X=class X{constructor(e){this.name=e.name,this.isReadOnly=!!e.isReadonly,this.isOptional=!!e.isOptional,this.isPrivate=!!e.isPrivate,this.isStatic=!!e.isStatic,this.accessor=e.accessor,this.rawType=e.type}get type(){return y(this.rawType)}static from(e){return new X(e)}};o(X,"PropertyDefinition");var P=X,Y=class Y extends P{static create(e,t){let i=C(Y,e);return i.genericContext=t,i}get type(){return y(this.rawType,this.genericContext)}};o(Y,"GenericProperty");var Q=Y;function C(n,e){let t=Object.create(n.prototype);return e!==void 0&&Object.assign(t,e),t}o(C,"createInstance");function Z(n,e){n.properties=e.properties.map(t=>Q.create(t,n.genericContext)),n.methods=e.methods.map(t=>B.create(t,n.genericContext)),n instanceof v&&e instanceof j&&e.constructorMethod!==void 0&&(n.constructorMethod=B.create(e.constructorMethod,n.genericContext))}o(Z,"buildPropertiesAndMethods");function he(n,e){let t={};return n.forEach(i=>{let[r,s]=e(i);t[r]=s}),t}o(he,"toDictionary");function ee(n,e){return(n==null?void 0:n.map(e).filter(t=>t!==void 0))||[]}o(ee,"mapNotNull");function U(n,e){if(n!==void 0)return n[e]}o(U,"getValue");var Me=class Me{constructor(e){this.rawDef=e}get name(){return this.rawDef.name}get returnType(){return y(this.rawDef.returnType)}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y(t.type),isOptional:t.isOptional})))||[]}get isPrivate(){return!!this.rawDef.isPrivate}get isStatic(){return!!this.rawDef.isStatic}get isAsync(){return!!this.rawDef.isAsync}get isConstructor(){return!!this.rawDef.isConstructor}};o(Me,"MethodDefinition");var ne=Me;function H(n){return new ne(n)}o(H,"fillMethod");var te=class te extends ne{static create(e,t){let i=C(te,e);return i.genericContext=t,i}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y(t.type,this.genericContext),isOptional:t.isOptional})))||[]}get returnType(){return y(this.rawDef.returnType,this.genericContext)}};o(te,"GenericMethod");var B=te;var W=class W{constructor(e){var t,i,r,s;this.name=e.name,this._implementationNames=e.implementations||[],this.methods=((t=e.methods)==null?void 0:t.map(H))||[],this.properties=((i=e.properties)==null?void 0:i.map(P.from))||[],this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get implementations(){return this._implementations||(this._implementations=ee(this._implementationNames,e=>{var t;return k(e)||((t=d(e))==null?void 0:t.type)||I(e)})),this._implementations}get allImplementations(){if(this._allImplementations===void 0){let e=new Set(this.implementations);this.implementations.forEach(t=>{t instanceof W?t.allImplementations.forEach(i=>e.add(i)):e.add(t)}),this._allImplementations=Array.from(e)}return this._allImplementations}get type(){if(this.implementations.length===0)return{name:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(this.properties)};let e={},t=[];return this.implementations.forEach(i=>{let r=i instanceof W?i.type:i;r.typeLiteralMembers?r.typeLiteralMembers.forEach(s=>e[s.name]=s):t.push(r)}),this.properties.forEach(i=>e[i.name]=i),t.length>0?{name:this.name,fromLib:this.fromLib,intersectionMembers:[{typeLiteralMembers:Object.values(e)},...t]}:{name:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(e)}}toString(){return`interface ${this.name}`}};o(W,"InterfaceDefinition");var E=W,re=class re extends E{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=C(re,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),Z(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(re,"GenericInterface");var ie=re,we=new Map;function k(n){var e,t;if(!we.has(n)){let i=(t=(e=w())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;we.set(n,new E(i))}return we.get(n)}o(k,"getInterfaceDefinition");var Re=class Re{constructor(e){var t,i,r,s;this.name=e.name,this.superClassName=e.superClassName||"Object",this.superClass=d(this.superClassName),this._implementationNames=e.implementations||[],this.constructorMethod=e.constructorMethod!==void 0?H(e.constructorMethod):void 0,this.methods=((t=e.methods)==null?void 0:t.map(H))||[],this.properties=((i=e.properties)==null?void 0:i.map(P.from))||[],this.jsClass=e.jsClass,this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get allMethods(){let e={};if(this.superClassName!=="Object"){let t=d(this.superClassName);t&&Object.assign(e,S({},t.allMethods))}return Object.assign(e,S({},he(this.methods,t=>[t.name,t]))),e}get allProperties(){var e;return Object.assign(((e=this.superClass)==null?void 0:e.allProperties)||{},he(this.properties,t=>[t.name,t]))}get implementations(){return this._implementations?this._implementations:ee(this._implementationNames,e=>k(e)||I(e))}get allImplementations(){var e,t;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(r=>{r instanceof E?r.allImplementations.forEach(s=>i.add(s)):i.add(r)}),(t=(e=this.superClass)==null?void 0:e.allImplementations)==null||t.forEach(r=>i.add(r)),this._allImplementations=Array.from(i)}return this._allImplementations}getProperty(e){return this.properties.find(t=>t.name===e)}get type(){var t,i;let e={};return(i=(t=this.superClass)==null?void 0:t.type.typeLiteralMembers)==null||i.forEach(r=>e[r.name]=r),this.properties.forEach(r=>e[r.name]=r),{name:this.name,classDefinition:this,typeLiteralMembers:Object.values(e),fromLib:this.fromLib}}isSubClassOf(e){var t;return this.name===e||(t=this.superClass)!=null&&t.isSubClassOf(e)?!0:this.implementations.map(i=>i.name).includes(e)}isSuperClassOf(e){if(this.name===e)return!0;let t=d(e);return t?t.isSubClassOf(this.name):!1}toString(){return`class ${this.name}`}};o(Re,"ClassDefinition");var j=Re,se=class se extends j{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=C(se,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),Z(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(se,"GenericClass");var v=se,oe=new Map;function Ye(n){var e;return((e=d(n))==null?void 0:e.jsClass)||Xe[n]}o(Ye,"getClassByName");function d(n){var e,t,i,r,s,a;switch(typeof n){case"object":return d(n.constructor);case"function":let c=d(n.name);if(c)return c;let f=Array.from(oe.values()).find(h=>h.jsClass===n);if(f)return f;let m=(t=Object.entries(((e=w())==null?void 0:e.classDef)||{}).find(([h,R])=>R===n))==null?void 0:t[0];return m?d(m):void 0;case"string":let T=n;if(!oe.has(T)){let h=(r=(i=w())==null?void 0:i.classes)==null?void 0:r[T];if(!h)return;let R=(a=(s=w())==null?void 0:s.classDef)==null?void 0:a[T];oe.set(T,new j(Qe(S({},h),{jsClass:R})))}return oe.get(T)}}o(d,"getClassDefinition");var Ce=class Ce{constructor(){this.success=!0}};o(Ce,"SuccessResult");var xe=Ce,Ie=class Ie{constructor(e,t,i){this.errorCode=e;this.errorDesc=t;this.success=!1;this.cause=i.cause,this.value=i.value,this.type=i.type}get errorStackFlow(){return this.cause?[this.errorMessage,this.cause.errorStackFlow].join(`
2
- caused by: `):this.errorMessage}get errorMessage(){return`[Err${this.errorCode}] ${this.errorDesc}`}};o(Ie,"FailureResult");var Pe=Ie,u=new xe,l=o((n,e,t)=>new Pe(n,e,t),"failedResult");function bn(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
3
- -> `)}o(bn,"getErrorTraceMessages");var Oe=class Oe extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Oe,"ValidationError");var O=Oe;var Le=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function D(n,e,t=1){if(!b.validation)return u;switch(!0){case e.name==="undefined":return n===void 0?u:l(100,`declared as ${p(e)} but actually not`,{value:n,type:e});case e.name==="null":return n===null?u:l(101,`declared as ${p(e)} but actually not`,{value:n,type:e});case en(e):return u;case me(e):return n instanceof Object?$e(n,e,t):l(200,`declared as ${p(e)} but actually not an object`,{value:n,type:e});case ae(e):return hn(n,e,t);case pe(e):return wn(n,e,t);case le(e):for(let i of e.unionMembers||[])if(D(n,i,t).success)return u;return l(320,`declared as ${p(e)} but all value not match`,{value:n,type:e});case ue(e):for(let i of e.intersectionMembers||[]){let r=D(n,i,t);if(!r.success)return l(330,`declared as ${p(e)} but all value not match`,{cause:r,value:n,type:e})}return u;case ke(e):return Mn(n,e,t);case fe(e):switch(typeof n){case"string":return n===Pn(e.literalValue)?u:l(110,`declared as string ${p(e)} but value not match`,{value:n,type:e});case"number":return n===Number(e.literalValue)?u:l(111,`declared as number ${p(e)} but value not match`,{value:n,type:e});case"bigint":return n===BigInt(e.literalValue)?u:l(112,`declared as bigint ${p(e)} but value not match`,{value:n,type:e});case"boolean":return n===!!e.literalValue?u:l(113,`declared as boolean ${p(e)} but value not match`,{value:n,type:e});default:return e.literalValue==="null"&&n===null?u:n===e.literalValue?u:l(114,`declared as ${p(e)} but value not match`,{value:n,type:e})}case ce(e):return Rn(n,e,t);case e.isFunction:case e.isConstructor:return typeof n=="function"?u:l(150,`declared as ${p(e)} but actually not`,{value:n,type:e});case Ae(e):return n==null?l(120,`declared as ${p(e)} but actually ${n}`,{value:n,type:e}):typeof n===e.name?u:l(121,`declared as ${p(e)} but actually ${typeof n}`,{value:n,type:e});default:return xn(n,e,t)}}o(D,"validateValue");function hn(n,e,t=1){if(!Array.isArray(n))return l(300,`declared as ${p(e)} but actually not`,{value:n,type:e});if(t===0)return u;for(let i=0;i<n.length;i++){let r=n[i],s=D(r,e.arrayElementType||g,t-1);if(!s.success)return l(301,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(hn,"validateArrayValue");function Mn(n,e,t=1){if(n===null)return l(400,"declared as indexedType but actually is null",{value:n,type:e});if(n===void 0)return l(401,"declared as indexedType but actually is undefined",{value:n,type:e});if(typeof n!="object")return l(410,`declared as indexedType but actually is ${typeof n}`,{value:n,type:e});for(let[i,r]of Object.entries(n)){let s=D(r,e.index.valueType,t-1);if(!s.success)return l(420,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e});if(e.index.keyType&&(s=D(i,e.index.keyType,t-1),!s.success))return l(421,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(Mn,"validateIndexedValue");function wn(n,e,t=1){if(!Array.isArray(n))return l(310,`declared as ${p(e)} but actually not a tuple`,{value:n,type:e});if(t===0)return u;let i=0;for(let r of e.tupleMembers){let s=n[i++];if(r.isOptionalInTuple&&s===void 0)continue;let a=D(n[i],r,t);if(!a.success)return l(311,`declared as ${p(e)} but not all values in tuple match`,{cause:a,value:n,type:e})}return u}o(wn,"validateTupleValue");function Rn(n,e,t=1){if(n instanceof Object){for(let i of e.typeLiteralMembers||[]){if("isStatic"in i&&i.isStatic)return u;if(i.name.startsWith("[")&&i.name.endsWith("]"))return u;if(t===0)return u;let r=i.type||g;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=U(n,i.name),a=D(s,r,t-1);if(!a.success)return l(211,`declared ${i.name} as ${p(r)}, but not match`,{cause:a,value:n,type:e})}return u}else return l(210,`declared as ${p(e)} but not an object`,{value:n,type:e})}o(Rn,"validateProperties");function xn(n,e,t=1){let i=typeof e=="string"?e:e.name;if(!i)return u;if(n===void 0)return l(130,`declared as ${p(e)} but actually undefined`,{value:n,type:e});if(n===null)return l(131,`declared as ${p(e)} but actually null`,{value:n,type:e});for(let s of Le)if(i===s.name)return n instanceof s?u:l(132,`declared as ${p(e)} but actually ${n.constructor.name}`,{value:n,type:e});if(n instanceof Object&&!Ze(n,i))return l(133,`declared as ${p(e)} but actually not instance of it`,{value:n,type:e});if(t==0)return u;let r=D(n,I(i),t);return r.success?u:l(134,`declared as ${p(e)} but actually not match`,{cause:r,value:n,type:e})}o(xn,"validateSimpleValue");function $e(n,e,t=3){if(e.classDefinition&&!Ze(n,e.classDefinition.name))return l(201,`declared as instance of ${p(e)} but actually not`,{value:n,type:e});if(e.name!=="any"&&e===g)return l(202,`${p(e)} not defined`,{value:n,type:e});let i=S({},e);return delete i.classDefinition,D(n,i,t)}o($e,"validateClassInstance");function Ze(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=d(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=d(n);return i?i.isSubClassOf(t.name):!1}o(Ze,"valueInstanceOf");function Pn(n){return n.length>=2&&(n[0]==='"'&&n[n.length-1]==='"'||n[0]==="'"&&n[n.length-1]==="'")?n.substring(1,n.length-1):n}o(Pn,"trimQuotes");function p(n){var e,t,i,r,s;return typeof n=="string"?n:me(n)?n.classDefinition.name:ae(n)?(((e=n.arrayElementType)==null?void 0:e.name)||"unknown")+"[]":n.isConstructor?"Class":n.isFunction?"Function":ce(n)?"Object":pe(n)?`(${n.tupleMembers.map(p).join(",")})`:le(n)?((t=n.unionMembers)==null?void 0:t.map(p).join(" | "))||"unknown":ue(n)?((i=n.intersectionMembers)==null?void 0:i.map(p).join(" & "))||"unknown":fe(n)?n.literalValue:ke(n)?`{ [${(r=n.index.keyType)!=null?r:"string"}]: ${((s=n.index.valueType)==null?void 0:s.name)||"unknown"} }`:n.name||"unknown"}o(p,"getTypeDisplayName");var ve=class ve{constructor(e){var t;this.name=e.name,this.members=new Map,e.members.forEach(i=>{let r=i.initializer===void 0?{name:"number"}:{literalValue:i.initializer};this.members.set(i.name,r)}),this.fromLib=(t=e.fromLib)!=null?t:!1}get type(){return{name:this.name,unionMembers:Array.from(this.members.values()),fromLib:this.fromLib}}get names(){return Array.from(this.members.keys())}};o(ve,"EnumDefinition");var je=ve,Se=new Map;function V(n){var e,t;if(!Se.has(n)){let i=(t=(e=w())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;Se.set(n,new je(i))}return Se.get(n)}o(V,"getEnumDefinition");function nn(n){var e;return((e=V(n))==null?void 0:e.names)||[]}o(nn,"getEnumNames");function tn(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=V(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(tn,"getEnumValues");var Ee=new Map;function x(n){Ee.set(n.name,n)}o(x,"registerSpecialType");function rn(n){return Ee.has(n)}o(rn,"isSpecialType");function Ve(n,...e){let t=Ee.get(n);if(!t)return;let i=t.getType(...e);return i?{name:n,type:i,genericParams:t.genericParams,fromLib:!!t.fromLib}:void 0}o(Ve,"getSpecialTypeAlias");x({name:"Partial",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e?z(e,t=>t.isOptional=!0):void 0}});x({name:"Required",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e!=null?e:z(e,t=>t.isOptional=!1)}});x({name:"Readonly",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return z(e,t=>t.isReadonly=!0)}});x({name:"Record",genericParams:["K","T"],fromLib:!0,getType(...n){let[e,t]=n;return{index:{keyType:e!=null?e:g,valueType:t!=null?t:g}}}});x({name:"Pick",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return ye(e,s=>{var a;return(a=s.name===t.literalValue||(i==null?void 0:i.includes(s.name)))!=null?a:!1})}});x({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return ye(e,s=>!(s.name===t.literalValue||i!=null&&i.includes(s.name)))}});x({name:"Extract",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return Cn(e,i)}}});x({name:"Exclude",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return In(e,i)}}});x({name:"ReflectReference",genericParams:["T","R"],getType(...n){let[e,t]=n;if(e)return{typeDef:e,reflectReference:t}}});function z(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>on(t,e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>z(t,e)).filter(t=>t!==void 0)}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>z(t,e)).filter(t=>t!==void 0)}:void 0}o(z,"getMappedType");function ye(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?on(t):void 0).filter(t=>!!t)}}o(ye,"getFilterKeyType");function Cn(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return ye(n,r=>{var s;return(s=r.name===e.literalValue||(t==null?void 0:t.includes(r.name)))!=null?s:!1})}o(Cn,"getPickType");function In(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return ye(n,r=>!(r.name===e.literalValue||t!=null&&t.includes(r.name)))}o(In,"getOmitType");function on(n,e){let t;return n instanceof P?t=new P({name:n.name,isReadonly:n.isReadOnly,isOptional:n.isOptional,isStatic:n.isStatic,accessor:n.accessor,type:n.rawType}):t={name:n.name,isOptional:n.isOptional,type:n.type},e==null||e(t),t}o(on,"copyPropertyDefinition");function de(n,e){var r,s,a;if(rn(n))return e?Ve(n,...e):Ve(n);if(!Ne.has(n)){let c=(s=(r=w())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!c||!c.type)return;Ne.set(n,{name:n,type:c.type,genericParams:c.genericParams,fromLib:c.fromLib})}let t=Ne.get(n);if(!t)return;let i;if(t.genericParams&&e){let c={};for(let f=0;f<t.genericParams.length;f++){let m=t.genericParams[f];c[m]=e[f]}i=y(t.type,c,e)}else i=y(t.type);return{name:t.name,type:i,genericParams:t.genericParams,fromLib:(a=t.fromLib)!=null?a:!1}}o(de,"getTypeAliasDefinition");var Ne=new Map;var g={name:"any"},On={name:"null"},Ln={name:"undefined"};function en(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(en,"isIgnoredType");function Ae(n){return!!(n.name&&be.includes(n.name))}o(Ae,"isPrimitiveType");function ae(n){return!!n.arrayElementType}o(ae,"isArrayType");function fe(n){return!!n.literalValue}o(fe,"isLiteralType");function ce(n){return!!n.typeLiteralMembers}o(ce,"isTypeLiteralType");function le(n){return!!n.unionMembers}o(le,"isUnionType");function ue(n){return!!n.intersectionMembers}o(ue,"isIntersectionType");function pe(n){return!!n.tupleMembers}o(pe,"isTupleType");function me(n){return!!n.classDefinition}o(me,"isClassDefinition");function $n(n){return!!n.generics}o($n,"hasGenerics");function ke(n){return!!n.index}o(ke,"isIndexType");function I(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return g;if(n==="null")return On;if(n==="undefined")return Ln;if(n==="Function")return{isFunction:!0};let t=d(n);if(t)return e?v.create(t,e).type:t.type;if(be.includes(n))return{name:n};if(Le.map(a=>a.name).includes(n))return{name:n,generics:e};let i=k(n);if(i)return i.fromLib?{name:n,generics:e}:e?ie.create(i,e).type:i.type;let r=V(n);if(r)return r.type;let s=de(n,e);return s?s.type:g}o(I,"getTypeDefinition");var Fe=new Map;function y(n,e,t){let i=_e(n);if(n===void 0)return g;let r=Fe.get(i);if(r)return r;let s={};if(Fe.set(i,s),typeof n=="string")s=(e==null?void 0:e[n])||I(n,t)||g;else if(typeof n.literalValue=="string")s.literalValue=n.literalValue;else if(n.arrayElementType)Object.assign(s,{arrayElementType:y(n.arrayElementType,e)});else if(n.unionMembers)Object.assign(s,{unionMembers:n.unionMembers.map(a=>y(a,e))});else if(n.intersectionMembers)Object.assign(s,{intersectionMembers:n.intersectionMembers.map(a=>y(a,e))});else if(n.tupleMembers)Object.assign(s,{tupleMembers:n.tupleMembers.map(a=>y(a,e))});else if(n.typeLiteralMembers)s.typeLiteralMembers=n.typeLiteralMembers.map(a=>({name:a.name,isOptional:!!a.isOptional,type:y(a.type,e,t)}));else if(n.generics){let a=n.generics[0],c=n.generics.slice(1).map(f=>y(f,e));Object.assign(s,y(a,e,c))}else n.index&&Object.assign(s,{index:{keyType:n.index.keyType?y(n.index.keyType,e):void 0,valueType:y(n.index.valueType,e)}});return Object.keys(s).length===0&&(s=g),Fe.delete(i),s}o(y,"fillType");function _e(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(_e).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+_e(n[t])).join(",")+"}"}o(_e,"stableStringify");var N={isPrimitiveType:Ae,isArrayType:ae,isLiteralType:fe,isTypeLiteralType:ce,isUnionType:le,isIntersectionType:ue,isTupleType:pe,isClassDefinition:me,hasGenerics:$n};function M(n){if(typeof n=="string"){let e=Sn(n);if(typeof e=="string"){let t=e.match(/"(.+)"$/)||e.match(/'(.+)'$/);if(t!=null&&t[1])return{literalValue:t[1]}}return typeof e=="string"?I(n):M(e)}return"array"in n?{arrayElementType:M(n.array)}:"union"in n?{unionMembers:n.union.map(M)}:"intersection"in n?{intersectionMembers:n.intersection.map(M)}:"tuple"in n?{tupleMembers:n.tuple.map(M)}:"generic"in n?I(n.name,n.generic.map(M)):n}o(M,"getTypeDef");function An(n,e,t=5){let i=D(n,M(e),t);return i.success||b.validationErrorHandler(new O(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(An,"assertType");function kn(n){return sn(null,n)}o(kn,"isNullable");function sn(n,e,t=5){return D(n,M(e),t).success}o(sn,"isType");function Sn(n){let e=0,t="%%",i={};function r(f){let m=`${t}${e++}`;return i[m]=f,m}o(r,"addPlaceholder");function s(f){let m=f.match(new RegExp(`^(${t}\\d)$`));if(!m)return;let T=m[1].trim(),h=i[T];return delete i[T],h}o(s,"getPlaceholder");function a(f,m,T,h){let R=0;for(;R<f.length;){let L=f.indexOf(m,R);if(L===-1)break;R=L+1;let A=f.indexOf(T,R);if(A===-1)throw new Te("Illegal type string");let K=f.substring(L+1,A),F=r(K);h?f=`${f.substring(0,L+1)}${F}${f.substring(A)}`:f=`${f.substring(0,L)}${F}${f.substring(A+1)}`}return f}o(a,"replaceBracket");function c(f){let m=f.trim(),T=o($=>$.trim(),"trim"),h=o($=>$.length!=0,"notEmpty");m=a(m,"(",")",!1),m=a(m,"<",">",!0);let R=s(m);if(R)return c(R);let L=m.split("|").map(T).filter(h);if(L.length>1)return{union:L.map(c)};let A=m.split("&").map(T).filter(h);if(A.length>1)return{intersection:A.map(c)};let K=m.match(/^\[(.*)]$/);if(K)return{tuple:K[1].split(",").map(T).filter(h).map(c)};let F=m.match(/^(.+)\[]$/);if(F)return{array:c(F[1])};let De=m.match(/^([^<]+)<(.+)>$/);if(De){let $=De[1].trim(),ge=c(De[2]);if(typeof ge=="string"){let cn=ge.split(",").map(T).filter(h).map(c);return{name:$,generic:cn}}else return{name:$,generic:[ge]}}return m}return o(c,"parseTypeRecursive"),c(n)}o(Sn,"parseType");var Je=class Je extends Error{};o(Je,"TypeParseError");var Te=Je;function Ge(n,e,t=3){return b.validation?(e=e||n.constructor.name,$e(n,M(e),t)):u}o(Ge,"validateInstance");function jn(n,e,t=2){if(!b.validation)return u;for(let i=0;i<n.length;i++){let r=Ge(n[i],e,t);if(!r.success)return l(220,`declared as instance of ${e}[] but [${i}] actually not`,{cause:r,value:n,type:e})}return u}o(jn,"validateArray");function vn(n,e,t=2){if(!b.validation)return u;let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,a]=i[r],c=Ge(a,e,t);if(!c.success)return l(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,{cause:c,value:n,type:e})}return u}o(vn,"validateDictionary");var an=Symbol("VALIDATE_WRAPPER"),En=o((n,e,t)=>Vn(n,e,t),"ReflectValidate");function Vn(n,e,t){if(!b.validation)return;let i=t.value;if(typeof i!="function"||U(i,an))return;let r=o(()=>{var f,m;return(m=(f=d(n))==null?void 0:f.methods)==null?void 0:m.find(T=>T.name===e)},"getMethodDef"),s=o(f=>fn(n,r(),f),"validateArgs"),a=o(f=>Nn(n,r(),f),"validateReturn"),c=o(function(...f){s(f);let m=i.call(this,...f);return a(m)},"newFunc");c[an]=i,t.value=c}o(Vn,"wrapValidateMethod");function fn(n,e,t){var i;(i=e==null?void 0:e.args)==null||i.forEach((r,s)=>{let a=t==null?void 0:t[s];if(a===void 0)if(!r.isOptional)b.validationErrorHandler(new O(`Illegal arguments for ${Be(n.constructor.name,e)}: ${r.name} is not optional`));else return;let c=D(a,r.type||g,1);c.success||(console.error("validateResult",c),b.validationErrorHandler(new O(`Illegal arguments for ${Be(n.constructor.name,e)}: ${r.name}: ${r.name} ${c.errorMessage}`,c)))})}o(fn,"validateMethodParams");function Nn(n,e,t){var s;if(!e)return t;let i=o((a,c)=>{let f=D(a,c,5);return f.success||(console.error(f.errorStackFlow),b.validationErrorHandler(new O(`result for ${Be(n.constructor.name,e)} doesn't match type ${c.name}:
4
- ${f.errorStackFlow}`,f))),a},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||g),t instanceof Promise?t.then(a=>i(a,r||g)):i(t,r||g)}o(Nn,"validateMethodReturnValue");function Be(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(Be,"getMethodDescription");function Fn(n,e,...t){let i=d(n);if(!i)return;let r=i.allMethods[e];if(r)return fn(n,r,t),U(n,e).apply(n,t)}o(Fn,"safeCall");var He=class He{constructor(e){this.exceptionHandler=e!=null?e:console.error}parse(e,t){if(!t)return JSON.parse(e);let i=M(t),r=JSON.parse(e),s=this.convertJSONValue(r,i);return D(s,i).success||this.exceptionHandler(new q(`jsonValue should be ${i.name}`)),s}convertJSONValue(e,t){switch(!0){case typeof e=="string":case typeof e=="number":case typeof e=="boolean":case e===null:return e;case e instanceof Array:return N.isArrayType(t)?e.map(i=>this.convertJSONValue(i,t)):N.isTupleType(t)?t.tupleMembers.map((i,r)=>this.convertJSONValue(e[r],i)):e;default:return N.isClassDefinition(t)?this.convertJSONObjectAsClassInstance(e,t.classDefinition):e}}convertJSONObjectAsClassInstance(e,t){if(!t.jsClass)return this.exceptionHandler(new q(`class ${t.name} not reflected`)),e;let i=C(t.jsClass);return Object.assign(i,e),i}};o(He,"JSONTransfer");var Ue=He,We=class We extends Error{};o(We,"JSONError");var q=We;var b={validationErrorHandler:o(function(n){var e;console.error(n.message),console.error((e=n.failureResult)==null?void 0:e.errorStackFlow)},"validationErrorHandler"),validation:!0,debug:!1};function _n(){if(!b.debug)return w()}o(_n,"getDebugInfo");0&&(module.exports={JSONError,JSONTransfer,ReflectConfig,ReflectValidate,TypeDefinition,TypeParseError,ValidationError,assertType,failedResult,getClassByName,getClassDefinition,getDebugInfo,getEnumDefinition,getEnumNames,getEnumValues,getErrorTraceMessages,getInterfaceDefinition,getTypeAliasDefinition,getTypeDef,isNullable,isType,registerSpecialType,safeCall,successResult,validateArray,validateDictionary,validateInstance});
1
+ "use strict";var _=Object.defineProperty,ln=Object.defineProperties,un=Object.getOwnPropertyDescriptor,pn=Object.getOwnPropertyDescriptors,mn=Object.getOwnPropertyNames,qe=Object.getOwnPropertySymbols;var Qe=Object.prototype.hasOwnProperty,yn=Object.prototype.propertyIsEnumerable;var Ke=(n,e,t)=>e in n?_(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,A=(n,e)=>{for(var t in e||(e={}))Qe.call(e,t)&&Ke(n,t,e[t]);if(qe)for(var t of qe(e))yn.call(e,t)&&Ke(n,t,e[t]);return n},Q=(n,e)=>ln(n,pn(e)),o=(n,e)=>_(n,"name",{value:e,configurable:!0});var dn=(n,e)=>{for(var t in e)_(n,t,{get:e[t],enumerable:!0})},Tn=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of mn(e))!Qe.call(n,r)&&r!==t&&_(n,r,{get:()=>e[r],enumerable:!(i=un(e,r))||i.enumerable});return n};var Dn=n=>Tn(_({},"__esModule",{value:!0}),n);var Jn={};dn(Jn,{JSONError:()=>q,JSONTransfer:()=>He,ReflectConfig:()=>b,ReflectValidate:()=>En,TypeDefinition:()=>N,TypeParseError:()=>De,ValidationError:()=>O,assertType:()=>An,failedResult:()=>l,getClassByName:()=>Ye,getClassDefinition:()=>d,getDebugInfo:()=>_n,getEnumDefinition:()=>V,getEnumNames:()=>nn,getEnumValues:()=>tn,getErrorTraceMessages:()=>bn,getInterfaceDefinition:()=>S,getTypeAliasDefinition:()=>Te,getTypeDef:()=>M,isNullable:()=>kn,isType:()=>sn,registerSpecialType:()=>x,safeCall:()=>Fn,successResult:()=>u,validateArray:()=>vn,validateDictionary:()=>jn,validateInstance:()=>Be});module.exports=Dn(Jn);var he=["string","number","boolean","bigint","symbol"],Xe={string:String,number:Number,boolean:Boolean,object:Object};var J=Reflect,G;function w(){if(G)return G;let n=J.__meta;if(n===void 0){console.warn("No reflect meta found, reflect is disabled.");return}try{G=JSON.parse(gn(n))}catch(t){console.error(t),console.warn("Illegal reflect meta found, reflect is disabled");return}delete J.__meta;let e=G;return e.classDef=J.__classDef||{},delete J.__classDef,Reflect.defineProperty(J,"registerClass",{value:o(t=>Object.assign(e.classDef,t),"value")}),G}o(w,"getRawMeta");function gn(n){let e=atob(n),t=new Uint8Array(e.length);for(let r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return new TextDecoder().decode(t)}o(gn,"decode");var Y=class Y{constructor(e){this.name=e.name,this.isReadOnly=!!e.isReadonly,this.isOptional=!!e.isOptional,this.isPrivate=!!e.isPrivate,this.isStatic=!!e.isStatic,this.accessor=e.accessor,this.rawType=e.type}get type(){return y(this.rawType)}static from(e){return new Y(e)}};o(Y,"PropertyDefinition");var P=Y,Z=class Z extends P{static create(e,t){let i=C(Z,e);return i.genericContext=t,i}get type(){return y(this.rawType,this.genericContext)}};o(Z,"GenericProperty");var X=Z;function C(n,e){let t=Object.create(n.prototype);return e!==void 0&&Object.assign(t,e),t}o(C,"createInstance");function ee(n,e){n.properties=e.properties.map(t=>X.create(t,n.genericContext)),n.methods=e.methods.map(t=>B.create(t,n.genericContext)),n instanceof j&&e instanceof v&&e.constructorMethod!==void 0&&(n.constructorMethod=B.create(e.constructorMethod,n.genericContext))}o(ee,"buildPropertiesAndMethods");function Me(n,e){let t={};return n.forEach(i=>{let[r,s]=e(i);t[r]=s}),t}o(Me,"toDictionary");function ne(n,e){return(n==null?void 0:n.map(e).filter(t=>t!==void 0))||[]}o(ne,"mapNotNull");function U(n,e){if(n!==void 0)return n[e]}o(U,"getValue");var we=class we{constructor(e){this.rawDef=e}get name(){return this.rawDef.name}get returnType(){return y(this.rawDef.returnType)}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y(t.type),isOptional:t.isOptional})))||[]}get isPrivate(){return!!this.rawDef.isPrivate}get isStatic(){return!!this.rawDef.isStatic}get isAsync(){return!!this.rawDef.isAsync}get isConstructor(){return!!this.rawDef.isConstructor}};o(we,"MethodDefinition");var te=we;function H(n){return new te(n)}o(H,"fillMethod");var ie=class ie extends te{static create(e,t){let i=C(ie,e);return i.genericContext=t,i}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y(t.type,this.genericContext),isOptional:t.isOptional})))||[]}get returnType(){return y(this.rawDef.returnType,this.genericContext)}};o(ie,"GenericMethod");var B=ie;var W=class W{constructor(e){var t,i,r,s;this.name=e.name,this._implementationNames=e.implementations||[],this.methods=((t=e.methods)==null?void 0:t.map(H))||[],this.properties=((i=e.properties)==null?void 0:i.map(P.from))||[],this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get implementations(){return this._implementations||(this._implementations=ne(this._implementationNames,e=>{var t;return S(e)||((t=d(e))==null?void 0:t.type)||I(e)})),this._implementations}get allImplementations(){if(this._allImplementations===void 0){let e=new Set(this.implementations);this.implementations.forEach(t=>{t instanceof W?t.allImplementations.forEach(i=>e.add(i)):e.add(t)}),this._allImplementations=Array.from(e)}return this._allImplementations}get type(){if(this.implementations.length===0)return{name:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(this.properties)};let e={},t=[];return this.implementations.forEach(i=>{let r=i instanceof W?i.type:i;r.typeLiteralMembers?r.typeLiteralMembers.forEach(s=>e[s.name]=s):t.push(r)}),this.properties.forEach(i=>e[i.name]=i),t.length>0?{name:this.name,fromLib:this.fromLib,intersectionMembers:[{typeLiteralMembers:Object.values(e)},...t]}:{name:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(e)}}toString(){return`interface ${this.name}`}};o(W,"InterfaceDefinition");var E=W,oe=class oe extends E{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=C(oe,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),ee(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(oe,"GenericInterface");var re=oe,Re=new Map;function S(n){var e,t;if(!Re.has(n)){let i=(t=(e=w())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;Re.set(n,new E(i))}return Re.get(n)}o(S,"getInterfaceDefinition");var xe=class xe{constructor(e){var t,i,r,s;this.name=e.name,this.superClassName=e.superClassName||"Object",this.superClass=d(this.superClassName),this._implementationNames=e.implementations||[],this.constructorMethod=e.constructorMethod!==void 0?H(e.constructorMethod):void 0,this.methods=((t=e.methods)==null?void 0:t.map(H))||[],this.properties=((i=e.properties)==null?void 0:i.map(P.from))||[],this.jsClass=e.jsClass,this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get allMethods(){let e={};if(this.superClassName!=="Object"){let t=d(this.superClassName);t&&Object.assign(e,A({},t.allMethods))}return Object.assign(e,A({},Me(this.methods,t=>[t.name,t]))),e}get allProperties(){var e;return Object.assign(((e=this.superClass)==null?void 0:e.allProperties)||{},Me(this.properties,t=>[t.name,t]))}get implementations(){return this._implementations?this._implementations:ne(this._implementationNames,e=>S(e)||I(e))}get allImplementations(){var e,t;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(r=>{r instanceof E?r.allImplementations.forEach(s=>i.add(s)):i.add(r)}),(t=(e=this.superClass)==null?void 0:e.allImplementations)==null||t.forEach(r=>i.add(r)),this._allImplementations=Array.from(i)}return this._allImplementations}getProperty(e){return this.properties.find(t=>t.name===e)}get type(){var t,i;let e={};return(i=(t=this.superClass)==null?void 0:t.type.typeLiteralMembers)==null||i.forEach(r=>e[r.name]=r),this.properties.forEach(r=>e[r.name]=r),{name:this.name,classDefinition:this,typeLiteralMembers:Object.values(e),fromLib:this.fromLib}}isSubClassOf(e){var t;return this.name===e||(t=this.superClass)!=null&&t.isSubClassOf(e)?!0:this.implementations.map(i=>i.name).includes(e)}isSuperClassOf(e){if(this.name===e)return!0;let t=d(e);return t?t.isSubClassOf(this.name):!1}toString(){return`class ${this.name}`}};o(xe,"ClassDefinition");var v=xe,ae=class ae extends v{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=C(ae,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),ee(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(ae,"GenericClass");var j=ae,se=new Map;function Ye(n){var e;return((e=d(n))==null?void 0:e.jsClass)||Xe[n]}o(Ye,"getClassByName");function d(n){var e,t,i,r,s,a;switch(typeof n){case"object":return d(n.constructor);case"function":let c=d(n.name);if(c)return c;let f=Array.from(se.values()).find(h=>h.jsClass===n);if(f)return f;let m=(t=Object.entries(((e=w())==null?void 0:e.classDef)||{}).find(([h,R])=>R===n))==null?void 0:t[0];return m?d(m):void 0;case"string":let T=n;if(!se.has(T)){let h=(r=(i=w())==null?void 0:i.classes)==null?void 0:r[T];if(!h)return;let R=(a=(s=w())==null?void 0:s.classDef)==null?void 0:a[T];se.set(T,new v(Q(A({},h),{jsClass:R})))}return se.get(T)}}o(d,"getClassDefinition");var Ie=class Ie{constructor(){this.success=!0}};o(Ie,"SuccessResult");var Pe=Ie,Oe=class Oe{constructor(e,t,i){this.errorCode=e;this.errorDesc=t;this.success=!1;this.cause=i.cause,this.value=i.value,this.type=i.type}get errorStackFlow(){return this.cause?[this.errorMessage,this.cause.errorStackFlow].join(`
2
+ caused by: `):this.errorMessage}get errorMessage(){return`[Err${this.errorCode}] ${this.errorDesc}`}};o(Oe,"FailureResult");var Ce=Oe,u=new Pe,l=o((n,e,t)=>new Ce(n,e,t),"failedResult");function bn(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
3
+ -> `)}o(bn,"getErrorTraceMessages");var $e=class $e extends Error{constructor(e,t){super(e),this.failureResult=t}};o($e,"ValidationError");var O=$e;var Le=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function D(n,e,t=1){if(!b.validation)return u;switch(!0){case e.name==="undefined":return n===void 0?u:l(100,`declared as ${p(e)} but actually not`,{value:n,type:e});case e.name==="null":return n===null?u:l(101,`declared as ${p(e)} but actually not`,{value:n,type:e});case en(e):return u;case ye(e):return n instanceof Object?Ae(n,e,t):l(200,`declared as ${p(e)} but actually not an object`,{value:n,type:e});case fe(e):return hn(n,e,t);case me(e):return wn(n,e,t);case ue(e):for(let i of e.unionMembers||[])if(D(n,i,t).success)return u;return l(320,`declared as ${p(e)} but all value not match`,{value:n,type:e});case pe(e):for(let i of e.intersectionMembers||[]){let r=D(n,i,t);if(!r.success)return l(330,`declared as ${p(e)} but all value not match`,{cause:r,value:n,type:e})}return u;case Se(e):return Mn(n,e,t);case ce(e):switch(typeof n){case"string":return n===Pn(e.literalValue)?u:l(110,`declared as string ${p(e)} but value not match`,{value:n,type:e});case"number":return n===Number(e.literalValue)?u:l(111,`declared as number ${p(e)} but value not match`,{value:n,type:e});case"bigint":return n===BigInt(e.literalValue)?u:l(112,`declared as bigint ${p(e)} but value not match`,{value:n,type:e});case"boolean":return n===!!e.literalValue?u:l(113,`declared as boolean ${p(e)} but value not match`,{value:n,type:e});default:return e.literalValue==="null"&&n===null?u:n===e.literalValue?u:l(114,`declared as ${p(e)} but value not match`,{value:n,type:e})}case le(e):return Rn(n,e,t);case e.isFunction:case e.isConstructor:return typeof n=="function"?u:l(150,`declared as ${p(e)} but actually not`,{value:n,type:e});case ke(e):return n==null?l(120,`declared as ${p(e)} but actually ${n}`,{value:n,type:e}):typeof n===e.name?u:l(121,`declared as ${p(e)} but actually ${typeof n}`,{value:n,type:e});default:return xn(n,e,t)}}o(D,"validateValue");function hn(n,e,t=1){if(!Array.isArray(n))return l(300,`declared as ${p(e)} but actually not`,{value:n,type:e});if(t===0)return u;for(let i=0;i<n.length;i++){let r=n[i],s=D(r,e.arrayElementType||g,t-1);if(!s.success)return l(301,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(hn,"validateArrayValue");function Mn(n,e,t=1){if(n===null)return l(400,"declared as indexedType but actually is null",{value:n,type:e});if(n===void 0)return l(401,"declared as indexedType but actually is undefined",{value:n,type:e});if(typeof n!="object")return l(410,`declared as indexedType but actually is ${typeof n}`,{value:n,type:e});for(let[i,r]of Object.entries(n)){let s=D(r,e.index.valueType,t-1);if(!s.success)return l(420,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e});if(e.index.keyType&&(s=D(i,e.index.keyType,t-1),!s.success))return l(421,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(Mn,"validateIndexedValue");function wn(n,e,t=1){if(!Array.isArray(n))return l(310,`declared as ${p(e)} but actually not a tuple`,{value:n,type:e});if(t===0)return u;let i=0;for(let r of e.tupleMembers){let s=n[i++];if(r.isOptionalInTuple&&s===void 0)continue;let a=D(s,r,t);if(!a.success)return l(311,`declared as ${p(e)} but not all values in tuple match`,{cause:a,value:n,type:e})}return u}o(wn,"validateTupleValue");function Rn(n,e,t=1){if(n instanceof Object){for(let i of e.typeLiteralMembers||[]){if("isStatic"in i&&i.isStatic)return u;if(i.name.startsWith("[")&&i.name.endsWith("]"))return u;if(t===0)return u;let r=i.type||g;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=U(n,i.name),a=D(s,r,t-1);if(!a.success)return l(211,`declared ${i.name} as ${p(r)}, but not match`,{cause:a,value:n,type:e})}return u}else return l(210,`declared as ${p(e)} but not an object`,{value:n,type:e})}o(Rn,"validateProperties");function xn(n,e,t=1){let i=typeof e=="string"?e:e.name;if(!i)return u;if(n===void 0)return l(130,`declared as ${p(e)} but actually undefined`,{value:n,type:e});if(n===null)return l(131,`declared as ${p(e)} but actually null`,{value:n,type:e});for(let s of Le)if(i===s.name)return n instanceof s?u:l(132,`declared as ${p(e)} but actually ${n.constructor.name}`,{value:n,type:e});if(n instanceof Object&&!Ze(n,i))return l(133,`declared as ${p(e)} but actually not instance of it`,{value:n,type:e});if(t==0)return u;let r=D(n,I(i),t);return r.success?u:l(134,`declared as ${p(e)} but actually not match`,{cause:r,value:n,type:e})}o(xn,"validateSimpleValue");function Ae(n,e,t=3){if(e.classDefinition&&!Ze(n,e.classDefinition.name))return l(201,`declared as instance of ${p(e)} but actually not`,{value:n,type:e});if(e.name!=="any"&&e===g)return l(202,`${p(e)} not defined`,{value:n,type:e});let i=A({},e);return delete i.classDefinition,D(n,i,t)}o(Ae,"validateClassInstance");function Ze(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=d(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=d(n);return i?i.isSubClassOf(t.name):!1}o(Ze,"valueInstanceOf");function Pn(n){return n.length>=2&&(n[0]==='"'&&n[n.length-1]==='"'||n[0]==="'"&&n[n.length-1]==="'")?n.substring(1,n.length-1):n}o(Pn,"trimQuotes");function p(n){var e,t,i,r,s;return typeof n=="string"?n:ye(n)?n.classDefinition.name:fe(n)?(((e=n.arrayElementType)==null?void 0:e.name)||"unknown")+"[]":n.isConstructor?"Class":n.isFunction?"Function":le(n)?"Object":me(n)?`(${n.tupleMembers.map(p).join(",")})`:ue(n)?((t=n.unionMembers)==null?void 0:t.map(p).join(" | "))||"unknown":pe(n)?((i=n.intersectionMembers)==null?void 0:i.map(p).join(" & "))||"unknown":ce(n)?n.literalValue:Se(n)?`{ [${(r=n.index.keyType)!=null?r:"string"}]: ${((s=n.index.valueType)==null?void 0:s.name)||"unknown"} }`:n.name||"unknown"}o(p,"getTypeDisplayName");var Ee=class Ee{constructor(e){var t;this.name=e.name,this.members=new Map,e.members.forEach(i=>{let r=i.initializer===void 0?{name:"number"}:{literalValue:i.initializer};this.members.set(i.name,r)}),this.fromLib=(t=e.fromLib)!=null?t:!1}get type(){return{name:this.name,unionMembers:Array.from(this.members.values()),fromLib:this.fromLib}}get names(){return Array.from(this.members.keys())}};o(Ee,"EnumDefinition");var je=Ee,ve=new Map;function V(n){var e,t;if(!ve.has(n)){let i=(t=(e=w())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;ve.set(n,new je(i))}return ve.get(n)}o(V,"getEnumDefinition");function nn(n){var e;return((e=V(n))==null?void 0:e.names)||[]}o(nn,"getEnumNames");function tn(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=V(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(tn,"getEnumValues");var Ve=new Map;function x(n){Ve.set(n.name,n)}o(x,"registerSpecialType");function rn(n){return Ve.has(n)}o(rn,"isSpecialType");function Ne(n,...e){let t=Ve.get(n);if(!t)return;let i=t.getType(...e);return i?{name:n,type:i,genericParams:t.genericParams,fromLib:!!t.fromLib}:void 0}o(Ne,"getSpecialTypeAlias");x({name:"Partial",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e?z(e,t=>t.isOptional=!0):void 0}});x({name:"Required",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e!=null?e:z(e,t=>t.isOptional=!1)}});x({name:"Readonly",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return z(e,t=>t.isReadonly=!0)}});x({name:"Record",genericParams:["K","T"],fromLib:!0,getType(...n){let[e,t]=n;return{index:{keyType:e!=null?e:g,valueType:t!=null?t:g}}}});x({name:"Pick",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return de(e,s=>{var a;return(a=s.name===t.literalValue||(i==null?void 0:i.includes(s.name)))!=null?a:!1})}});x({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return de(e,s=>!(s.name===t.literalValue||i!=null&&i.includes(s.name)))}});x({name:"Extract",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return Cn(e,i)}}});x({name:"Exclude",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return In(e,i)}}});x({name:"ReflectReference",genericParams:["T","R"],getType(...n){let[e,t]=n;if(e)return Q(A({},e),{reflectReference:t})}});function z(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>on(t,e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>z(t,e)).filter(t=>t!==void 0)}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>z(t,e)).filter(t=>t!==void 0)}:void 0}o(z,"getMappedType");function de(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?on(t):void 0).filter(t=>!!t)}}o(de,"getFilterKeyType");function Cn(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return de(n,r=>{var s;return(s=r.name===e.literalValue||(t==null?void 0:t.includes(r.name)))!=null?s:!1})}o(Cn,"getPickType");function In(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return de(n,r=>!(r.name===e.literalValue||t!=null&&t.includes(r.name)))}o(In,"getOmitType");function on(n,e){let t;return n instanceof P?t=new P({name:n.name,isReadonly:n.isReadOnly,isOptional:n.isOptional,isStatic:n.isStatic,accessor:n.accessor,type:n.rawType}):t={name:n.name,isOptional:n.isOptional,type:n.type},e==null||e(t),t}o(on,"copyPropertyDefinition");function Te(n,e){var r,s,a;if(rn(n))return e?Ne(n,...e):Ne(n);if(!Fe.has(n)){let c=(s=(r=w())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!c||!c.type)return;Fe.set(n,{name:n,type:c.type,genericParams:c.genericParams,fromLib:c.fromLib})}let t=Fe.get(n);if(!t)return;let i;if(t.genericParams&&e){let c={};for(let f=0;f<t.genericParams.length;f++){let m=t.genericParams[f];c[m]=e[f]}i=y(t.type,c,e)}else i=y(t.type);return{name:t.name,type:i,genericParams:t.genericParams,fromLib:(a=t.fromLib)!=null?a:!1}}o(Te,"getTypeAliasDefinition");var Fe=new Map;var g={name:"any"},On={name:"null"},$n={name:"undefined"};function en(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(en,"isIgnoredType");function ke(n){return!!(n.name&&he.includes(n.name))}o(ke,"isPrimitiveType");function fe(n){return!!n.arrayElementType}o(fe,"isArrayType");function ce(n){return!!n.literalValue}o(ce,"isLiteralType");function le(n){return!!n.typeLiteralMembers}o(le,"isTypeLiteralType");function ue(n){return!!n.unionMembers}o(ue,"isUnionType");function pe(n){return!!n.intersectionMembers}o(pe,"isIntersectionType");function me(n){return!!n.tupleMembers}o(me,"isTupleType");function ye(n){return!!n.classDefinition}o(ye,"isClassDefinition");function Ln(n){return!!n.generics}o(Ln,"hasGenerics");function Se(n){return!!n.index}o(Se,"isIndexType");function I(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return g;if(n==="null")return On;if(n==="undefined")return $n;if(n==="Function")return{isFunction:!0};let t=d(n);if(t)return e?j.create(t,e).type:t.type;if(he.includes(n))return{name:n};if(Le.map(a=>a.name).includes(n))return{name:n,generics:e};let i=S(n);if(i)return i.fromLib?{name:n,generics:e}:e?re.create(i,e).type:i.type;let r=V(n);if(r)return r.type;let s=Te(n,e);return s?s.type:(console.warn(`${n} not registered...`),g)}o(I,"getTypeDefinition");var _e=new Map;function y(n,e,t){let i=Je(n);if(n===void 0)return g;let r=_e.get(i);if(r)return r;let s={};if(_e.set(i,s),typeof n=="string")s=(e==null?void 0:e[n])||I(n,t)||g;else if(typeof n.literalValue=="string")s.literalValue=n.literalValue;else if(n.arrayElementType)Object.assign(s,{arrayElementType:y(n.arrayElementType,e)});else if(n.unionMembers)Object.assign(s,{unionMembers:n.unionMembers.map(a=>y(a,e))});else if(n.intersectionMembers)Object.assign(s,{intersectionMembers:n.intersectionMembers.map(a=>y(a,e))});else if(n.tupleMembers)Object.assign(s,{tupleMembers:n.tupleMembers.map(a=>y(a,e))});else if(n.typeLiteralMembers)s.typeLiteralMembers=n.typeLiteralMembers.map(a=>({name:a.name,isOptional:!!a.isOptional,type:y(a.type,e,t)}));else if(n.generics){let a=n.generics[0],c=n.generics.slice(1).map(f=>y(f,e));Object.assign(s,y(a,e,c))}else n.index&&Object.assign(s,{index:{keyType:n.index.keyType?y(n.index.keyType,e):void 0,valueType:y(n.index.valueType,e)}});return Object.keys(s).length===0&&(s=g),_e.delete(i),s}o(y,"fillType");function Je(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(Je).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+Je(n[t])).join(",")+"}"}o(Je,"stableStringify");var N={isPrimitiveType:ke,isArrayType:fe,isLiteralType:ce,isTypeLiteralType:le,isUnionType:ue,isIntersectionType:pe,isTupleType:me,isClassDefinition:ye,hasGenerics:Ln};function M(n){if(typeof n=="string"){let e=Sn(n);if(typeof e=="string"){let t=e.match(/"(.+)"$/)||e.match(/'(.+)'$/);if(t!=null&&t[1])return{literalValue:t[1]}}return typeof e=="string"?I(n):M(e)}return"array"in n?{arrayElementType:M(n.array)}:"union"in n?{unionMembers:n.union.map(M)}:"intersection"in n?{intersectionMembers:n.intersection.map(M)}:"tuple"in n?{tupleMembers:n.tuple.map(M)}:"generic"in n?I(n.name,n.generic.map(M)):n}o(M,"getTypeDef");function An(n,e,t=5){let i=D(n,M(e),t);return i.success||b.validationErrorHandler(new O(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(An,"assertType");function kn(n){return sn(null,n)}o(kn,"isNullable");function sn(n,e,t=5){return D(n,M(e),t).success}o(sn,"isType");function Sn(n){let e=0,t="%%",i={};function r(f){let m=`${t}${e++}`;return i[m]=f,m}o(r,"addPlaceholder");function s(f){let m=f.match(new RegExp(`^(${t}\\d)$`));if(!m)return;let T=m[1].trim(),h=i[T];return delete i[T],h}o(s,"getPlaceholder");function a(f,m,T,h){let R=0;for(;R<f.length;){let $=f.indexOf(m,R);if($===-1)break;R=$+1;let k=f.indexOf(T,R);if(k===-1)throw new De("Illegal type string");let K=f.substring($+1,k),F=r(K);h?f=`${f.substring(0,$+1)}${F}${f.substring(k)}`:f=`${f.substring(0,$)}${F}${f.substring(k+1)}`}return f}o(a,"replaceBracket");function c(f){let m=f.trim(),T=o(L=>L.trim(),"trim"),h=o(L=>L.length!=0,"notEmpty");m=a(m,"(",")",!1),m=a(m,"<",">",!0);let R=s(m);if(R)return c(R);let $=m.split("|").map(T).filter(h);if($.length>1)return{union:$.map(c)};let k=m.split("&").map(T).filter(h);if(k.length>1)return{intersection:k.map(c)};let K=m.match(/^\[(.*)]$/);if(K)return{tuple:K[1].split(",").map(T).filter(h).map(c)};let F=m.match(/^(.+)\[]$/);if(F)return{array:c(F[1])};let ge=m.match(/^([^<]+)<(.+)>$/);if(ge){let L=ge[1].trim(),be=c(ge[2]);if(typeof be=="string"){let cn=be.split(",").map(T).filter(h).map(c);return{name:L,generic:cn}}else return{name:L,generic:[be]}}return m}return o(c,"parseTypeRecursive"),c(n)}o(Sn,"parseType");var Ge=class Ge extends Error{};o(Ge,"TypeParseError");var De=Ge;function Be(n,e,t=3){return b.validation?(e=e||n.constructor.name,Ae(n,M(e),t)):u}o(Be,"validateInstance");function vn(n,e,t=2){if(!b.validation)return u;for(let i=0;i<n.length;i++){let r=Be(n[i],e,t);if(!r.success)return l(220,`declared as instance of ${e}[] but [${i}] actually not`,{cause:r,value:n,type:e})}return u}o(vn,"validateArray");function jn(n,e,t=2){if(!b.validation)return u;let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,a]=i[r],c=Be(a,e,t);if(!c.success)return l(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,{cause:c,value:n,type:e})}return u}o(jn,"validateDictionary");var an=Symbol("VALIDATE_WRAPPER"),En=o((n,e,t)=>Vn(n,e,t),"ReflectValidate");function Vn(n,e,t){if(!b.validation)return;let i=t.value;if(typeof i!="function"||U(i,an))return;let r=o(()=>{var f,m;return(m=(f=d(n))==null?void 0:f.methods)==null?void 0:m.find(T=>T.name===e)},"getMethodDef"),s=o(f=>fn(n,r(),f),"validateArgs"),a=o(f=>Nn(n,r(),f),"validateReturn"),c=o(function(...f){s(f);let m=i.call(this,...f);return a(m)},"newFunc");c[an]=i,t.value=c}o(Vn,"wrapValidateMethod");function fn(n,e,t){var i;(i=e==null?void 0:e.args)==null||i.forEach((r,s)=>{let a=t==null?void 0:t[s];if(a===void 0)if(!r.isOptional)b.validationErrorHandler(new O(`Illegal arguments for ${Ue(n.constructor.name,e)}: ${r.name} is not optional`));else return;let c=D(a,r.type||g,1);c.success||(console.error("validateResult",c),b.validationErrorHandler(new O(`Illegal arguments for ${Ue(n.constructor.name,e)}: ${r.name}: ${r.name} ${c.errorMessage}`,c)))})}o(fn,"validateMethodParams");function Nn(n,e,t){var s;if(!e)return t;let i=o((a,c)=>{let f=D(a,c,5);return f.success||(console.error(f.errorStackFlow),b.validationErrorHandler(new O(`result for ${Ue(n.constructor.name,e)} doesn't match type ${c.name}:
4
+ ${f.errorStackFlow}`,f))),a},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||g),t instanceof Promise?t.then(a=>i(a,r||g)):i(t,r||g)}o(Nn,"validateMethodReturnValue");function Ue(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(Ue,"getMethodDescription");function Fn(n,e,...t){let i=d(n);if(!i)return;let r=i.allMethods[e];if(r)return fn(n,r,t),U(n,e).apply(n,t)}o(Fn,"safeCall");var We=class We{constructor(e){this.exceptionHandler=e!=null?e:console.error}parse(e,t){if(!t)return JSON.parse(e);let i=M(t),r=JSON.parse(e),s=this.convertJSONValue(r,i);return D(s,i).success||this.exceptionHandler(new q(`jsonValue should be ${i.name}`)),s}convertJSONValue(e,t){switch(!0){case typeof e=="string":case typeof e=="number":case typeof e=="boolean":case e===null:return e;case e instanceof Array:return N.isArrayType(t)?e.map(i=>this.convertJSONValue(i,t)):N.isTupleType(t)?t.tupleMembers.map((i,r)=>this.convertJSONValue(e[r],i)):e;default:return N.isClassDefinition(t)?this.convertJSONObjectAsClassInstance(e,t.classDefinition):e}}convertJSONObjectAsClassInstance(e,t){if(!t.jsClass)return this.exceptionHandler(new q(`class ${t.name} not reflected`)),e;let i=C(t.jsClass);return Object.assign(i,e),i}};o(We,"JSONTransfer");var He=We,ze=class ze extends Error{};o(ze,"JSONError");var q=ze;var b={validationErrorHandler:o(function(n){var e;console.error(n.message),console.error((e=n.failureResult)==null?void 0:e.errorStackFlow)},"validationErrorHandler"),validation:!0,debug:!1};function _n(){if(!b.debug)return w()}o(_n,"getDebugInfo");0&&(module.exports={JSONError,JSONTransfer,ReflectConfig,ReflectValidate,TypeDefinition,TypeParseError,ValidationError,assertType,failedResult,getClassByName,getClassDefinition,getDebugInfo,getEnumDefinition,getEnumNames,getEnumValues,getErrorTraceMessages,getInterfaceDefinition,getTypeAliasDefinition,getTypeDef,isNullable,isType,registerSpecialType,safeCall,successResult,validateArray,validateDictionary,validateInstance});
package/dist/esm/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var We=Object.defineProperty,on=Object.defineProperties;var sn=Object.getOwnPropertyDescriptors;var Ue=Object.getOwnPropertySymbols;var an=Object.prototype.hasOwnProperty,fn=Object.prototype.propertyIsEnumerable;var He=(n,e,t)=>e in n?We(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,k=(n,e)=>{for(var t in e||(e={}))an.call(e,t)&&He(n,t,e[t]);if(Ue)for(var t of Ue(e))fn.call(e,t)&&He(n,t,e[t]);return n},ze=(n,e)=>on(n,sn(e)),o=(n,e)=>We(n,"name",{value:e,configurable:!0});var Te=["string","number","boolean","bigint","symbol"],qe={string:String,number:Number,boolean:Boolean,object:Object};var N=Reflect,F;function M(){if(F)return F;let n=N.__meta;if(n===void 0){console.warn("No reflect meta found, reflect is disabled.");return}try{F=JSON.parse(cn(n))}catch(t){console.error(t),console.warn("Illegal reflect meta found, reflect is disabled");return}delete N.__meta;let e=F;return e.classDef=N.__classDef||{},delete N.__classDef,Reflect.defineProperty(N,"registerClass",{value:o(t=>Object.assign(e.classDef,t),"value")}),F}o(M,"getRawMeta");function cn(n){let e=atob(n),t=new Uint8Array(e.length);for(let r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return new TextDecoder().decode(t)}o(cn,"decode");var K=class K{constructor(e){this.name=e.name,this.isReadOnly=!!e.isReadonly,this.isOptional=!!e.isOptional,this.isPrivate=!!e.isPrivate,this.isStatic=!!e.isStatic,this.accessor=e.accessor,this.rawType=e.type}get type(){return y(this.rawType)}static from(e){return new K(e)}};o(K,"PropertyDefinition");var x=K,Q=class Q extends x{static create(e,t){let i=P(Q,e);return i.genericContext=t,i}get type(){return y(this.rawType,this.genericContext)}};o(Q,"GenericProperty");var q=Q;function P(n,e){let t=Object.create(n.prototype);return e!==void 0&&Object.assign(t,e),t}o(P,"createInstance");function X(n,e){n.properties=e.properties.map(t=>q.create(t,n.genericContext)),n.methods=e.methods.map(t=>_.create(t,n.genericContext)),n instanceof j&&e instanceof S&&e.constructorMethod!==void 0&&(n.constructorMethod=_.create(e.constructorMethod,n.genericContext))}o(X,"buildPropertiesAndMethods");function De(n,e){let t={};return n.forEach(i=>{let[r,s]=e(i);t[r]=s}),t}o(De,"toDictionary");function Y(n,e){return(n==null?void 0:n.map(e).filter(t=>t!==void 0))||[]}o(Y,"mapNotNull");function J(n,e){if(n!==void 0)return n[e]}o(J,"getValue");var ge=class ge{constructor(e){this.rawDef=e}get name(){return this.rawDef.name}get returnType(){return y(this.rawDef.returnType)}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y(t.type),isOptional:t.isOptional})))||[]}get isPrivate(){return!!this.rawDef.isPrivate}get isStatic(){return!!this.rawDef.isStatic}get isAsync(){return!!this.rawDef.isAsync}get isConstructor(){return!!this.rawDef.isConstructor}};o(ge,"MethodDefinition");var Z=ge;function G(n){return new Z(n)}o(G,"fillMethod");var ee=class ee extends Z{static create(e,t){let i=P(ee,e);return i.genericContext=t,i}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y(t.type,this.genericContext),isOptional:t.isOptional})))||[]}get returnType(){return y(this.rawDef.returnType,this.genericContext)}};o(ee,"GenericMethod");var _=ee;var B=class B{constructor(e){var t,i,r,s;this.name=e.name,this._implementationNames=e.implementations||[],this.methods=((t=e.methods)==null?void 0:t.map(G))||[],this.properties=((i=e.properties)==null?void 0:i.map(x.from))||[],this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get implementations(){return this._implementations||(this._implementations=Y(this._implementationNames,e=>{var t;return E(e)||((t=d(e))==null?void 0:t.type)||C(e)})),this._implementations}get allImplementations(){if(this._allImplementations===void 0){let e=new Set(this.implementations);this.implementations.forEach(t=>{t instanceof B?t.allImplementations.forEach(i=>e.add(i)):e.add(t)}),this._allImplementations=Array.from(e)}return this._allImplementations}get type(){if(this.implementations.length===0)return{name:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(this.properties)};let e={},t=[];return this.implementations.forEach(i=>{let r=i instanceof B?i.type:i;r.typeLiteralMembers?r.typeLiteralMembers.forEach(s=>e[s.name]=s):t.push(r)}),this.properties.forEach(i=>e[i.name]=i),t.length>0?{name:this.name,fromLib:this.fromLib,intersectionMembers:[{typeLiteralMembers:Object.values(e)},...t]}:{name:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(e)}}toString(){return`interface ${this.name}`}};o(B,"InterfaceDefinition");var v=B,te=class te extends v{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=P(te,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),X(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(te,"GenericInterface");var ne=te,be=new Map;function E(n){var e,t;if(!be.has(n)){let i=(t=(e=M())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;be.set(n,new v(i))}return be.get(n)}o(E,"getInterfaceDefinition");var he=class he{constructor(e){var t,i,r,s;this.name=e.name,this.superClassName=e.superClassName||"Object",this.superClass=d(this.superClassName),this._implementationNames=e.implementations||[],this.constructorMethod=e.constructorMethod!==void 0?G(e.constructorMethod):void 0,this.methods=((t=e.methods)==null?void 0:t.map(G))||[],this.properties=((i=e.properties)==null?void 0:i.map(x.from))||[],this.jsClass=e.jsClass,this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get allMethods(){let e={};if(this.superClassName!=="Object"){let t=d(this.superClassName);t&&Object.assign(e,k({},t.allMethods))}return Object.assign(e,k({},De(this.methods,t=>[t.name,t]))),e}get allProperties(){var e;return Object.assign(((e=this.superClass)==null?void 0:e.allProperties)||{},De(this.properties,t=>[t.name,t]))}get implementations(){return this._implementations?this._implementations:Y(this._implementationNames,e=>E(e)||C(e))}get allImplementations(){var e,t;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(r=>{r instanceof v?r.allImplementations.forEach(s=>i.add(s)):i.add(r)}),(t=(e=this.superClass)==null?void 0:e.allImplementations)==null||t.forEach(r=>i.add(r)),this._allImplementations=Array.from(i)}return this._allImplementations}getProperty(e){return this.properties.find(t=>t.name===e)}get type(){var t,i;let e={};return(i=(t=this.superClass)==null?void 0:t.type.typeLiteralMembers)==null||i.forEach(r=>e[r.name]=r),this.properties.forEach(r=>e[r.name]=r),{name:this.name,classDefinition:this,typeLiteralMembers:Object.values(e),fromLib:this.fromLib}}isSubClassOf(e){var t;return this.name===e||(t=this.superClass)!=null&&t.isSubClassOf(e)?!0:this.implementations.map(i=>i.name).includes(e)}isSuperClassOf(e){if(this.name===e)return!0;let t=d(e);return t?t.isSubClassOf(this.name):!1}toString(){return`class ${this.name}`}};o(he,"ClassDefinition");var S=he,re=class re extends S{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=P(re,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),X(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(re,"GenericClass");var j=re,ie=new Map;function ln(n){var e;return((e=d(n))==null?void 0:e.jsClass)||qe[n]}o(ln,"getClassByName");function d(n){var e,t,i,r,s,a;switch(typeof n){case"object":return d(n.constructor);case"function":let c=d(n.name);if(c)return c;let f=Array.from(ie.values()).find(b=>b.jsClass===n);if(f)return f;let m=(t=Object.entries(((e=M())==null?void 0:e.classDef)||{}).find(([b,R])=>R===n))==null?void 0:t[0];return m?d(m):void 0;case"string":let T=n;if(!ie.has(T)){let b=(r=(i=M())==null?void 0:i.classes)==null?void 0:r[T];if(!b)return;let R=(a=(s=M())==null?void 0:s.classDef)==null?void 0:a[T];ie.set(T,new S(ze(k({},b),{jsClass:R})))}return ie.get(T)}}o(d,"getClassDefinition");var Re=class Re{constructor(){this.success=!0}};o(Re,"SuccessResult");var Me=Re,xe=class xe{constructor(e,t,i){this.errorCode=e;this.errorDesc=t;this.success=!1;this.cause=i.cause,this.value=i.value,this.type=i.type}get errorStackFlow(){return this.cause?[this.errorMessage,this.cause.errorStackFlow].join(`
2
- caused by: `):this.errorMessage}get errorMessage(){return`[Err${this.errorCode}] ${this.errorDesc}`}};o(xe,"FailureResult");var we=xe,u=new Me,l=o((n,e,t)=>new we(n,e,t),"failedResult");function ut(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
3
- -> `)}o(ut,"getErrorTraceMessages");var Pe=class Pe extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Pe,"ValidationError");var O=Pe;var Ce=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function D(n,e,t=1){if(!h.validation)return u;switch(!0){case e.name==="undefined":return n===void 0?u:l(100,`declared as ${p(e)} but actually not`,{value:n,type:e});case e.name==="null":return n===null?u:l(101,`declared as ${p(e)} but actually not`,{value:n,type:e});case Qe(e):return u;case ue(e):return n instanceof Object?Ie(n,e,t):l(200,`declared as ${p(e)} but actually not an object`,{value:n,type:e});case oe(e):return un(n,e,t);case le(e):return mn(n,e,t);case fe(e):for(let i of e.unionMembers||[])if(D(n,i,t).success)return u;return l(320,`declared as ${p(e)} but all value not match`,{value:n,type:e});case ce(e):for(let i of e.intersectionMembers||[]){let r=D(n,i,t);if(!r.success)return l(330,`declared as ${p(e)} but all value not match`,{cause:r,value:n,type:e})}return u;case Le(e):return pn(n,e,t);case se(e):switch(typeof n){case"string":return n===Tn(e.literalValue)?u:l(110,`declared as string ${p(e)} but value not match`,{value:n,type:e});case"number":return n===Number(e.literalValue)?u:l(111,`declared as number ${p(e)} but value not match`,{value:n,type:e});case"bigint":return n===BigInt(e.literalValue)?u:l(112,`declared as bigint ${p(e)} but value not match`,{value:n,type:e});case"boolean":return n===!!e.literalValue?u:l(113,`declared as boolean ${p(e)} but value not match`,{value:n,type:e});default:return e.literalValue==="null"&&n===null?u:n===e.literalValue?u:l(114,`declared as ${p(e)} but value not match`,{value:n,type:e})}case ae(e):return yn(n,e,t);case e.isFunction:case e.isConstructor:return typeof n=="function"?u:l(150,`declared as ${p(e)} but actually not`,{value:n,type:e});case Oe(e):return n==null?l(120,`declared as ${p(e)} but actually ${n}`,{value:n,type:e}):typeof n===e.name?u:l(121,`declared as ${p(e)} but actually ${typeof n}`,{value:n,type:e});default:return dn(n,e,t)}}o(D,"validateValue");function un(n,e,t=1){if(!Array.isArray(n))return l(300,`declared as ${p(e)} but actually not`,{value:n,type:e});if(t===0)return u;for(let i=0;i<n.length;i++){let r=n[i],s=D(r,e.arrayElementType||g,t-1);if(!s.success)return l(301,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(un,"validateArrayValue");function pn(n,e,t=1){if(n===null)return l(400,"declared as indexedType but actually is null",{value:n,type:e});if(n===void 0)return l(401,"declared as indexedType but actually is undefined",{value:n,type:e});if(typeof n!="object")return l(410,`declared as indexedType but actually is ${typeof n}`,{value:n,type:e});for(let[i,r]of Object.entries(n)){let s=D(r,e.index.valueType,t-1);if(!s.success)return l(420,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e});if(e.index.keyType&&(s=D(i,e.index.keyType,t-1),!s.success))return l(421,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(pn,"validateIndexedValue");function mn(n,e,t=1){if(!Array.isArray(n))return l(310,`declared as ${p(e)} but actually not a tuple`,{value:n,type:e});if(t===0)return u;let i=0;for(let r of e.tupleMembers){let s=n[i++];if(r.isOptionalInTuple&&s===void 0)continue;let a=D(n[i],r,t);if(!a.success)return l(311,`declared as ${p(e)} but not all values in tuple match`,{cause:a,value:n,type:e})}return u}o(mn,"validateTupleValue");function yn(n,e,t=1){if(n instanceof Object){for(let i of e.typeLiteralMembers||[]){if("isStatic"in i&&i.isStatic)return u;if(i.name.startsWith("[")&&i.name.endsWith("]"))return u;if(t===0)return u;let r=i.type||g;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=J(n,i.name),a=D(s,r,t-1);if(!a.success)return l(211,`declared ${i.name} as ${p(r)}, but not match`,{cause:a,value:n,type:e})}return u}else return l(210,`declared as ${p(e)} but not an object`,{value:n,type:e})}o(yn,"validateProperties");function dn(n,e,t=1){let i=typeof e=="string"?e:e.name;if(!i)return u;if(n===void 0)return l(130,`declared as ${p(e)} but actually undefined`,{value:n,type:e});if(n===null)return l(131,`declared as ${p(e)} but actually null`,{value:n,type:e});for(let s of Ce)if(i===s.name)return n instanceof s?u:l(132,`declared as ${p(e)} but actually ${n.constructor.name}`,{value:n,type:e});if(n instanceof Object&&!Ke(n,i))return l(133,`declared as ${p(e)} but actually not instance of it`,{value:n,type:e});if(t==0)return u;let r=D(n,C(i),t);return r.success?u:l(134,`declared as ${p(e)} but actually not match`,{cause:r,value:n,type:e})}o(dn,"validateSimpleValue");function Ie(n,e,t=3){if(e.classDefinition&&!Ke(n,e.classDefinition.name))return l(201,`declared as instance of ${p(e)} but actually not`,{value:n,type:e});if(e.name!=="any"&&e===g)return l(202,`${p(e)} not defined`,{value:n,type:e});let i=k({},e);return delete i.classDefinition,D(n,i,t)}o(Ie,"validateClassInstance");function Ke(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=d(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=d(n);return i?i.isSubClassOf(t.name):!1}o(Ke,"valueInstanceOf");function Tn(n){return n.length>=2&&(n[0]==='"'&&n[n.length-1]==='"'||n[0]==="'"&&n[n.length-1]==="'")?n.substring(1,n.length-1):n}o(Tn,"trimQuotes");function p(n){var e,t,i,r,s;return typeof n=="string"?n:ue(n)?n.classDefinition.name:oe(n)?(((e=n.arrayElementType)==null?void 0:e.name)||"unknown")+"[]":n.isConstructor?"Class":n.isFunction?"Function":ae(n)?"Object":le(n)?`(${n.tupleMembers.map(p).join(",")})`:fe(n)?((t=n.unionMembers)==null?void 0:t.map(p).join(" | "))||"unknown":ce(n)?((i=n.intersectionMembers)==null?void 0:i.map(p).join(" & "))||"unknown":se(n)?n.literalValue:Le(n)?`{ [${(r=n.index.keyType)!=null?r:"string"}]: ${((s=n.index.valueType)==null?void 0:s.name)||"unknown"} }`:n.name||"unknown"}o(p,"getTypeDisplayName");var ke=class ke{constructor(e){var t;this.name=e.name,this.members=new Map,e.members.forEach(i=>{let r=i.initializer===void 0?{name:"number"}:{literalValue:i.initializer};this.members.set(i.name,r)}),this.fromLib=(t=e.fromLib)!=null?t:!1}get type(){return{name:this.name,unionMembers:Array.from(this.members.values()),fromLib:this.fromLib}}get names(){return Array.from(this.members.keys())}};o(ke,"EnumDefinition");var Ae=ke,$e=new Map;function U(n){var e,t;if(!$e.has(n)){let i=(t=(e=M())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;$e.set(n,new Ae(i))}return $e.get(n)}o(U,"getEnumDefinition");function Dn(n){var e;return((e=U(n))==null?void 0:e.names)||[]}o(Dn,"getEnumNames");function gn(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=U(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(gn,"getEnumValues");var Se=new Map;function I(n){Se.set(n.name,n)}o(I,"registerSpecialType");function Xe(n){return Se.has(n)}o(Xe,"isSpecialType");function je(n,...e){let t=Se.get(n);if(!t)return;let i=t.getType(...e);return i?{name:n,type:i,genericParams:t.genericParams,fromLib:!!t.fromLib}:void 0}o(je,"getSpecialTypeAlias");I({name:"Partial",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e?H(e,t=>t.isOptional=!0):void 0}});I({name:"Required",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e!=null?e:H(e,t=>t.isOptional=!1)}});I({name:"Readonly",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return H(e,t=>t.isReadonly=!0)}});I({name:"Record",genericParams:["K","T"],fromLib:!0,getType(...n){let[e,t]=n;return{index:{keyType:e!=null?e:g,valueType:t!=null?t:g}}}});I({name:"Pick",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return pe(e,s=>{var a;return(a=s.name===t.literalValue||(i==null?void 0:i.includes(s.name)))!=null?a:!1})}});I({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return pe(e,s=>!(s.name===t.literalValue||i!=null&&i.includes(s.name)))}});I({name:"Extract",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return bn(e,i)}}});I({name:"Exclude",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return hn(e,i)}}});I({name:"ReflectReference",genericParams:["T","R"],getType(...n){let[e,t]=n;if(e)return{typeDef:e,reflectReference:t}}});function H(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>Ye(t,e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>H(t,e)).filter(t=>t!==void 0)}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>H(t,e)).filter(t=>t!==void 0)}:void 0}o(H,"getMappedType");function pe(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?Ye(t):void 0).filter(t=>!!t)}}o(pe,"getFilterKeyType");function bn(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return pe(n,r=>{var s;return(s=r.name===e.literalValue||(t==null?void 0:t.includes(r.name)))!=null?s:!1})}o(bn,"getPickType");function hn(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return pe(n,r=>!(r.name===e.literalValue||t!=null&&t.includes(r.name)))}o(hn,"getOmitType");function Ye(n,e){let t;return n instanceof x?t=new x({name:n.name,isReadonly:n.isReadOnly,isOptional:n.isOptional,isStatic:n.isStatic,accessor:n.accessor,type:n.rawType}):t={name:n.name,isOptional:n.isOptional,type:n.type},e==null||e(t),t}o(Ye,"copyPropertyDefinition");function Ee(n,e){var r,s,a;if(Xe(n))return e?je(n,...e):je(n);if(!ve.has(n)){let c=(s=(r=M())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!c||!c.type)return;ve.set(n,{name:n,type:c.type,genericParams:c.genericParams,fromLib:c.fromLib})}let t=ve.get(n);if(!t)return;let i;if(t.genericParams&&e){let c={};for(let f=0;f<t.genericParams.length;f++){let m=t.genericParams[f];c[m]=e[f]}i=y(t.type,c,e)}else i=y(t.type);return{name:t.name,type:i,genericParams:t.genericParams,fromLib:(a=t.fromLib)!=null?a:!1}}o(Ee,"getTypeAliasDefinition");var ve=new Map;var g={name:"any"},Mn={name:"null"},wn={name:"undefined"};function Qe(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(Qe,"isIgnoredType");function Oe(n){return!!(n.name&&Te.includes(n.name))}o(Oe,"isPrimitiveType");function oe(n){return!!n.arrayElementType}o(oe,"isArrayType");function se(n){return!!n.literalValue}o(se,"isLiteralType");function ae(n){return!!n.typeLiteralMembers}o(ae,"isTypeLiteralType");function fe(n){return!!n.unionMembers}o(fe,"isUnionType");function ce(n){return!!n.intersectionMembers}o(ce,"isIntersectionType");function le(n){return!!n.tupleMembers}o(le,"isTupleType");function ue(n){return!!n.classDefinition}o(ue,"isClassDefinition");function Rn(n){return!!n.generics}o(Rn,"hasGenerics");function Le(n){return!!n.index}o(Le,"isIndexType");function C(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return g;if(n==="null")return Mn;if(n==="undefined")return wn;if(n==="Function")return{isFunction:!0};let t=d(n);if(t)return e?j.create(t,e).type:t.type;if(Te.includes(n))return{name:n};if(Ce.map(a=>a.name).includes(n))return{name:n,generics:e};let i=E(n);if(i)return i.fromLib?{name:n,generics:e}:e?ne.create(i,e).type:i.type;let r=U(n);if(r)return r.type;let s=Ee(n,e);return s?s.type:g}o(C,"getTypeDefinition");var Ve=new Map;function y(n,e,t){let i=Ne(n);if(n===void 0)return g;let r=Ve.get(i);if(r)return r;let s={};if(Ve.set(i,s),typeof n=="string")s=(e==null?void 0:e[n])||C(n,t)||g;else if(typeof n.literalValue=="string")s.literalValue=n.literalValue;else if(n.arrayElementType)Object.assign(s,{arrayElementType:y(n.arrayElementType,e)});else if(n.unionMembers)Object.assign(s,{unionMembers:n.unionMembers.map(a=>y(a,e))});else if(n.intersectionMembers)Object.assign(s,{intersectionMembers:n.intersectionMembers.map(a=>y(a,e))});else if(n.tupleMembers)Object.assign(s,{tupleMembers:n.tupleMembers.map(a=>y(a,e))});else if(n.typeLiteralMembers)s.typeLiteralMembers=n.typeLiteralMembers.map(a=>({name:a.name,isOptional:!!a.isOptional,type:y(a.type,e,t)}));else if(n.generics){let a=n.generics[0],c=n.generics.slice(1).map(f=>y(f,e));Object.assign(s,y(a,e,c))}else n.index&&Object.assign(s,{index:{keyType:n.index.keyType?y(n.index.keyType,e):void 0,valueType:y(n.index.valueType,e)}});return Object.keys(s).length===0&&(s=g),Ve.delete(i),s}o(y,"fillType");function Ne(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(Ne).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+Ne(n[t])).join(",")+"}"}o(Ne,"stableStringify");var W={isPrimitiveType:Oe,isArrayType:oe,isLiteralType:se,isTypeLiteralType:ae,isUnionType:fe,isIntersectionType:ce,isTupleType:le,isClassDefinition:ue,hasGenerics:Rn};function w(n){if(typeof n=="string"){let e=Pn(n);if(typeof e=="string"){let t=e.match(/"(.+)"$/)||e.match(/'(.+)'$/);if(t!=null&&t[1])return{literalValue:t[1]}}return typeof e=="string"?C(n):w(e)}return"array"in n?{arrayElementType:w(n.array)}:"union"in n?{unionMembers:n.union.map(w)}:"intersection"in n?{intersectionMembers:n.intersection.map(w)}:"tuple"in n?{tupleMembers:n.tuple.map(w)}:"generic"in n?C(n.name,n.generic.map(w)):n}o(w,"getTypeDef");function Wt(n,e,t=5){let i=D(n,w(e),t);return i.success||h.validationErrorHandler(new O(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(Wt,"assertType");function zt(n){return xn(null,n)}o(zt,"isNullable");function xn(n,e,t=5){return D(n,w(e),t).success}o(xn,"isType");function Pn(n){let e=0,t="%%",i={};function r(f){let m=`${t}${e++}`;return i[m]=f,m}o(r,"addPlaceholder");function s(f){let m=f.match(new RegExp(`^(${t}\\d)$`));if(!m)return;let T=m[1].trim(),b=i[T];return delete i[T],b}o(s,"getPlaceholder");function a(f,m,T,b){let R=0;for(;R<f.length;){let L=f.indexOf(m,R);if(L===-1)break;R=L+1;let A=f.indexOf(T,R);if(A===-1)throw new Fe("Illegal type string");let z=f.substring(L+1,A),V=r(z);b?f=`${f.substring(0,L+1)}${V}${f.substring(A)}`:f=`${f.substring(0,L)}${V}${f.substring(A+1)}`}return f}o(a,"replaceBracket");function c(f){let m=f.trim(),T=o($=>$.trim(),"trim"),b=o($=>$.length!=0,"notEmpty");m=a(m,"(",")",!1),m=a(m,"<",">",!0);let R=s(m);if(R)return c(R);let L=m.split("|").map(T).filter(b);if(L.length>1)return{union:L.map(c)};let A=m.split("&").map(T).filter(b);if(A.length>1)return{intersection:A.map(c)};let z=m.match(/^\[(.*)]$/);if(z)return{tuple:z[1].split(",").map(T).filter(b).map(c)};let V=m.match(/^(.+)\[]$/);if(V)return{array:c(V[1])};let ye=m.match(/^([^<]+)<(.+)>$/);if(ye){let $=ye[1].trim(),de=c(ye[2]);if(typeof de=="string"){let rn=de.split(",").map(T).filter(b).map(c);return{name:$,generic:rn}}else return{name:$,generic:[de]}}return m}return o(c,"parseTypeRecursive"),c(n)}o(Pn,"parseType");var _e=class _e extends Error{};o(_e,"TypeParseError");var Fe=_e;function Ze(n,e,t=3){return h.validation?(e=e||n.constructor.name,Ie(n,w(e),t)):u}o(Ze,"validateInstance");function ei(n,e,t=2){if(!h.validation)return u;for(let i=0;i<n.length;i++){let r=Ze(n[i],e,t);if(!r.success)return l(220,`declared as instance of ${e}[] but [${i}] actually not`,{cause:r,value:n,type:e})}return u}o(ei,"validateArray");function ni(n,e,t=2){if(!h.validation)return u;let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,a]=i[r],c=Ze(a,e,t);if(!c.success)return l(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,{cause:c,value:n,type:e})}return u}o(ni,"validateDictionary");var en=Symbol("VALIDATE_WRAPPER"),li=o((n,e,t)=>Cn(n,e,t),"ReflectValidate");function Cn(n,e,t){if(!h.validation)return;let i=t.value;if(typeof i!="function"||J(i,en))return;let r=o(()=>{var f,m;return(m=(f=d(n))==null?void 0:f.methods)==null?void 0:m.find(T=>T.name===e)},"getMethodDef"),s=o(f=>nn(n,r(),f),"validateArgs"),a=o(f=>In(n,r(),f),"validateReturn"),c=o(function(...f){s(f);let m=i.call(this,...f);return a(m)},"newFunc");c[en]=i,t.value=c}o(Cn,"wrapValidateMethod");function nn(n,e,t){var i;(i=e==null?void 0:e.args)==null||i.forEach((r,s)=>{let a=t==null?void 0:t[s];if(a===void 0)if(!r.isOptional)h.validationErrorHandler(new O(`Illegal arguments for ${Je(n.constructor.name,e)}: ${r.name} is not optional`));else return;let c=D(a,r.type||g,1);c.success||(console.error("validateResult",c),h.validationErrorHandler(new O(`Illegal arguments for ${Je(n.constructor.name,e)}: ${r.name}: ${r.name} ${c.errorMessage}`,c)))})}o(nn,"validateMethodParams");function In(n,e,t){var s;if(!e)return t;let i=o((a,c)=>{let f=D(a,c,5);return f.success||(console.error(f.errorStackFlow),h.validationErrorHandler(new O(`result for ${Je(n.constructor.name,e)} doesn't match type ${c.name}:
4
- ${f.errorStackFlow}`,f))),a},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||g),t instanceof Promise?t.then(a=>i(a,r||g)):i(t,r||g)}o(In,"validateMethodReturnValue");function Je(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(Je,"getMethodDescription");function ui(n,e,...t){let i=d(n);if(!i)return;let r=i.allMethods[e];if(r)return nn(n,r,t),J(n,e).apply(n,t)}o(ui,"safeCall");var Ge=class Ge{constructor(e){this.exceptionHandler=e!=null?e:console.error}parse(e,t){if(!t)return JSON.parse(e);let i=w(t),r=JSON.parse(e),s=this.convertJSONValue(r,i);return D(s,i).success||this.exceptionHandler(new me(`jsonValue should be ${i.name}`)),s}convertJSONValue(e,t){switch(!0){case typeof e=="string":case typeof e=="number":case typeof e=="boolean":case e===null:return e;case e instanceof Array:return W.isArrayType(t)?e.map(i=>this.convertJSONValue(i,t)):W.isTupleType(t)?t.tupleMembers.map((i,r)=>this.convertJSONValue(e[r],i)):e;default:return W.isClassDefinition(t)?this.convertJSONObjectAsClassInstance(e,t.classDefinition):e}}convertJSONObjectAsClassInstance(e,t){if(!t.jsClass)return this.exceptionHandler(new me(`class ${t.name} not reflected`)),e;let i=P(t.jsClass);return Object.assign(i,e),i}};o(Ge,"JSONTransfer");var tn=Ge,Be=class Be extends Error{};o(Be,"JSONError");var me=Be;var h={validationErrorHandler:o(function(n){var e;console.error(n.message),console.error((e=n.failureResult)==null?void 0:e.errorStackFlow)},"validationErrorHandler"),validation:!0,debug:!1};function Oi(){if(!h.debug)return M()}o(Oi,"getDebugInfo");export{me as JSONError,tn as JSONTransfer,h as ReflectConfig,li as ReflectValidate,W as TypeDefinition,Fe as TypeParseError,O as ValidationError,Wt as assertType,l as failedResult,ln as getClassByName,d as getClassDefinition,Oi as getDebugInfo,U as getEnumDefinition,Dn as getEnumNames,gn as getEnumValues,ut as getErrorTraceMessages,E as getInterfaceDefinition,Ee as getTypeAliasDefinition,w as getTypeDef,zt as isNullable,xn as isType,I as registerSpecialType,ui as safeCall,u as successResult,ei as validateArray,ni as validateDictionary,Ze as validateInstance};
1
+ var ze=Object.defineProperty,on=Object.defineProperties;var sn=Object.getOwnPropertyDescriptors;var He=Object.getOwnPropertySymbols;var an=Object.prototype.hasOwnProperty,fn=Object.prototype.propertyIsEnumerable;var We=(n,e,t)=>e in n?ze(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,A=(n,e)=>{for(var t in e||(e={}))an.call(e,t)&&We(n,t,e[t]);if(He)for(var t of He(e))fn.call(e,t)&&We(n,t,e[t]);return n},q=(n,e)=>on(n,sn(e)),o=(n,e)=>ze(n,"name",{value:e,configurable:!0});var De=["string","number","boolean","bigint","symbol"],qe={string:String,number:Number,boolean:Boolean,object:Object};var N=Reflect,F;function M(){if(F)return F;let n=N.__meta;if(n===void 0){console.warn("No reflect meta found, reflect is disabled.");return}try{F=JSON.parse(cn(n))}catch(t){console.error(t),console.warn("Illegal reflect meta found, reflect is disabled");return}delete N.__meta;let e=F;return e.classDef=N.__classDef||{},delete N.__classDef,Reflect.defineProperty(N,"registerClass",{value:o(t=>Object.assign(e.classDef,t),"value")}),F}o(M,"getRawMeta");function cn(n){let e=atob(n),t=new Uint8Array(e.length);for(let r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return new TextDecoder().decode(t)}o(cn,"decode");var Q=class Q{constructor(e){this.name=e.name,this.isReadOnly=!!e.isReadonly,this.isOptional=!!e.isOptional,this.isPrivate=!!e.isPrivate,this.isStatic=!!e.isStatic,this.accessor=e.accessor,this.rawType=e.type}get type(){return y(this.rawType)}static from(e){return new Q(e)}};o(Q,"PropertyDefinition");var x=Q,X=class X extends x{static create(e,t){let i=P(X,e);return i.genericContext=t,i}get type(){return y(this.rawType,this.genericContext)}};o(X,"GenericProperty");var K=X;function P(n,e){let t=Object.create(n.prototype);return e!==void 0&&Object.assign(t,e),t}o(P,"createInstance");function Y(n,e){n.properties=e.properties.map(t=>K.create(t,n.genericContext)),n.methods=e.methods.map(t=>_.create(t,n.genericContext)),n instanceof v&&e instanceof S&&e.constructorMethod!==void 0&&(n.constructorMethod=_.create(e.constructorMethod,n.genericContext))}o(Y,"buildPropertiesAndMethods");function ge(n,e){let t={};return n.forEach(i=>{let[r,s]=e(i);t[r]=s}),t}o(ge,"toDictionary");function Z(n,e){return(n==null?void 0:n.map(e).filter(t=>t!==void 0))||[]}o(Z,"mapNotNull");function J(n,e){if(n!==void 0)return n[e]}o(J,"getValue");var be=class be{constructor(e){this.rawDef=e}get name(){return this.rawDef.name}get returnType(){return y(this.rawDef.returnType)}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y(t.type),isOptional:t.isOptional})))||[]}get isPrivate(){return!!this.rawDef.isPrivate}get isStatic(){return!!this.rawDef.isStatic}get isAsync(){return!!this.rawDef.isAsync}get isConstructor(){return!!this.rawDef.isConstructor}};o(be,"MethodDefinition");var ee=be;function G(n){return new ee(n)}o(G,"fillMethod");var ne=class ne extends ee{static create(e,t){let i=P(ne,e);return i.genericContext=t,i}get args(){var e;return((e=this.rawDef.args)==null?void 0:e.map(t=>({name:t.name,type:y(t.type,this.genericContext),isOptional:t.isOptional})))||[]}get returnType(){return y(this.rawDef.returnType,this.genericContext)}};o(ne,"GenericMethod");var _=ne;var B=class B{constructor(e){var t,i,r,s;this.name=e.name,this._implementationNames=e.implementations||[],this.methods=((t=e.methods)==null?void 0:t.map(G))||[],this.properties=((i=e.properties)==null?void 0:i.map(x.from))||[],this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get implementations(){return this._implementations||(this._implementations=Z(this._implementationNames,e=>{var t;return E(e)||((t=d(e))==null?void 0:t.type)||C(e)})),this._implementations}get allImplementations(){if(this._allImplementations===void 0){let e=new Set(this.implementations);this.implementations.forEach(t=>{t instanceof B?t.allImplementations.forEach(i=>e.add(i)):e.add(t)}),this._allImplementations=Array.from(e)}return this._allImplementations}get type(){if(this.implementations.length===0)return{name:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(this.properties)};let e={},t=[];return this.implementations.forEach(i=>{let r=i instanceof B?i.type:i;r.typeLiteralMembers?r.typeLiteralMembers.forEach(s=>e[s.name]=s):t.push(r)}),this.properties.forEach(i=>e[i.name]=i),t.length>0?{name:this.name,fromLib:this.fromLib,intersectionMembers:[{typeLiteralMembers:Object.values(e)},...t]}:{name:this.name,fromLib:this.fromLib,typeLiteralMembers:Object.values(e)}}toString(){return`interface ${this.name}`}};o(B,"InterfaceDefinition");var j=B,ie=class ie extends j{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=P(ie,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),Y(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(ie,"GenericInterface");var te=ie,he=new Map;function E(n){var e,t;if(!he.has(n)){let i=(t=(e=M())==null?void 0:e.interfaces)==null?void 0:t[n];if(!i)return;he.set(n,new j(i))}return he.get(n)}o(E,"getInterfaceDefinition");var Me=class Me{constructor(e){var t,i,r,s;this.name=e.name,this.superClassName=e.superClassName||"Object",this.superClass=d(this.superClassName),this._implementationNames=e.implementations||[],this.constructorMethod=e.constructorMethod!==void 0?G(e.constructorMethod):void 0,this.methods=((t=e.methods)==null?void 0:t.map(G))||[],this.properties=((i=e.properties)==null?void 0:i.map(x.from))||[],this.jsClass=e.jsClass,this.generics=(r=e.genericsParams)!=null?r:[],this.fromLib=(s=e.fromLib)!=null?s:!1}get allMethods(){let e={};if(this.superClassName!=="Object"){let t=d(this.superClassName);t&&Object.assign(e,A({},t.allMethods))}return Object.assign(e,A({},ge(this.methods,t=>[t.name,t]))),e}get allProperties(){var e;return Object.assign(((e=this.superClass)==null?void 0:e.allProperties)||{},ge(this.properties,t=>[t.name,t]))}get implementations(){return this._implementations?this._implementations:Z(this._implementationNames,e=>E(e)||C(e))}get allImplementations(){var e,t;if(this._allImplementations===void 0){let i=new Set(this.implementations);this.implementations.forEach(r=>{r instanceof j?r.allImplementations.forEach(s=>i.add(s)):i.add(r)}),(t=(e=this.superClass)==null?void 0:e.allImplementations)==null||t.forEach(r=>i.add(r)),this._allImplementations=Array.from(i)}return this._allImplementations}getProperty(e){return this.properties.find(t=>t.name===e)}get type(){var t,i;let e={};return(i=(t=this.superClass)==null?void 0:t.type.typeLiteralMembers)==null||i.forEach(r=>e[r.name]=r),this.properties.forEach(r=>e[r.name]=r),{name:this.name,classDefinition:this,typeLiteralMembers:Object.values(e),fromLib:this.fromLib}}isSubClassOf(e){var t;return this.name===e||(t=this.superClass)!=null&&t.isSubClassOf(e)?!0:this.implementations.map(i=>i.name).includes(e)}isSuperClassOf(e){if(this.name===e)return!0;let t=d(e);return t?t.isSubClassOf(this.name):!1}toString(){return`class ${this.name}`}};o(Me,"ClassDefinition");var S=Me,oe=class oe extends S{constructor(){super(...arguments);this.genericArgs=[];this.properties=[];this.methods=[];this.genericContext={}}static create(t,i){let r=P(oe,t);r.genericArgs=i;let s=r;return s.buildGenericContext(),Y(s,t),s}buildGenericContext(){var t;this.genericContext={},(t=this.generics)==null||t.forEach((i,r)=>this.genericContext[i]=this.genericArgs[r])}};o(oe,"GenericClass");var v=oe,re=new Map;function ln(n){var e;return((e=d(n))==null?void 0:e.jsClass)||qe[n]}o(ln,"getClassByName");function d(n){var e,t,i,r,s,a;switch(typeof n){case"object":return d(n.constructor);case"function":let c=d(n.name);if(c)return c;let f=Array.from(re.values()).find(b=>b.jsClass===n);if(f)return f;let m=(t=Object.entries(((e=M())==null?void 0:e.classDef)||{}).find(([b,R])=>R===n))==null?void 0:t[0];return m?d(m):void 0;case"string":let T=n;if(!re.has(T)){let b=(r=(i=M())==null?void 0:i.classes)==null?void 0:r[T];if(!b)return;let R=(a=(s=M())==null?void 0:s.classDef)==null?void 0:a[T];re.set(T,new S(q(A({},b),{jsClass:R})))}return re.get(T)}}o(d,"getClassDefinition");var xe=class xe{constructor(){this.success=!0}};o(xe,"SuccessResult");var we=xe,Pe=class Pe{constructor(e,t,i){this.errorCode=e;this.errorDesc=t;this.success=!1;this.cause=i.cause,this.value=i.value,this.type=i.type}get errorStackFlow(){return this.cause?[this.errorMessage,this.cause.errorStackFlow].join(`
2
+ caused by: `):this.errorMessage}get errorMessage(){return`[Err${this.errorCode}] ${this.errorDesc}`}};o(Pe,"FailureResult");var Re=Pe,u=new we,l=o((n,e,t)=>new Re(n,e,t),"failedResult");function ut(n){let e=o(t=>t.errorMessage?[t.errorMessage,...t.cause?e(t.cause):[]]:[],"getAllTraceMessages");return e(n).join(`
3
+ -> `)}o(ut,"getErrorTraceMessages");var Ce=class Ce extends Error{constructor(e,t){super(e),this.failureResult=t}};o(Ce,"ValidationError");var O=Ce;var Ie=[Promise,Date,Map,Set,Error,Function,Array,ArrayBuffer,RegExp];function D(n,e,t=1){if(!h.validation)return u;switch(!0){case e.name==="undefined":return n===void 0?u:l(100,`declared as ${p(e)} but actually not`,{value:n,type:e});case e.name==="null":return n===null?u:l(101,`declared as ${p(e)} but actually not`,{value:n,type:e});case Qe(e):return u;case pe(e):return n instanceof Object?Oe(n,e,t):l(200,`declared as ${p(e)} but actually not an object`,{value:n,type:e});case se(e):return un(n,e,t);case ue(e):return mn(n,e,t);case ce(e):for(let i of e.unionMembers||[])if(D(n,i,t).success)return u;return l(320,`declared as ${p(e)} but all value not match`,{value:n,type:e});case le(e):for(let i of e.intersectionMembers||[]){let r=D(n,i,t);if(!r.success)return l(330,`declared as ${p(e)} but all value not match`,{cause:r,value:n,type:e})}return u;case Le(e):return pn(n,e,t);case ae(e):switch(typeof n){case"string":return n===Tn(e.literalValue)?u:l(110,`declared as string ${p(e)} but value not match`,{value:n,type:e});case"number":return n===Number(e.literalValue)?u:l(111,`declared as number ${p(e)} but value not match`,{value:n,type:e});case"bigint":return n===BigInt(e.literalValue)?u:l(112,`declared as bigint ${p(e)} but value not match`,{value:n,type:e});case"boolean":return n===!!e.literalValue?u:l(113,`declared as boolean ${p(e)} but value not match`,{value:n,type:e});default:return e.literalValue==="null"&&n===null?u:n===e.literalValue?u:l(114,`declared as ${p(e)} but value not match`,{value:n,type:e})}case fe(e):return yn(n,e,t);case e.isFunction:case e.isConstructor:return typeof n=="function"?u:l(150,`declared as ${p(e)} but actually not`,{value:n,type:e});case $e(e):return n==null?l(120,`declared as ${p(e)} but actually ${n}`,{value:n,type:e}):typeof n===e.name?u:l(121,`declared as ${p(e)} but actually ${typeof n}`,{value:n,type:e});default:return dn(n,e,t)}}o(D,"validateValue");function un(n,e,t=1){if(!Array.isArray(n))return l(300,`declared as ${p(e)} but actually not`,{value:n,type:e});if(t===0)return u;for(let i=0;i<n.length;i++){let r=n[i],s=D(r,e.arrayElementType||g,t-1);if(!s.success)return l(301,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(un,"validateArrayValue");function pn(n,e,t=1){if(n===null)return l(400,"declared as indexedType but actually is null",{value:n,type:e});if(n===void 0)return l(401,"declared as indexedType but actually is undefined",{value:n,type:e});if(typeof n!="object")return l(410,`declared as indexedType but actually is ${typeof n}`,{value:n,type:e});for(let[i,r]of Object.entries(n)){let s=D(r,e.index.valueType,t-1);if(!s.success)return l(420,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e});if(e.index.keyType&&(s=D(i,e.index.keyType,t-1),!s.success))return l(421,`declared as ${p(e)} but [${i}] not match`,{cause:s,value:n,type:e})}return u}o(pn,"validateIndexedValue");function mn(n,e,t=1){if(!Array.isArray(n))return l(310,`declared as ${p(e)} but actually not a tuple`,{value:n,type:e});if(t===0)return u;let i=0;for(let r of e.tupleMembers){let s=n[i++];if(r.isOptionalInTuple&&s===void 0)continue;let a=D(s,r,t);if(!a.success)return l(311,`declared as ${p(e)} but not all values in tuple match`,{cause:a,value:n,type:e})}return u}o(mn,"validateTupleValue");function yn(n,e,t=1){if(n instanceof Object){for(let i of e.typeLiteralMembers||[]){if("isStatic"in i&&i.isStatic)return u;if(i.name.startsWith("[")&&i.name.endsWith("]"))return u;if(t===0)return u;let r=i.type||g;i.isOptional&&(r={unionMembers:[r,{name:"undefined"}]});let s=J(n,i.name),a=D(s,r,t-1);if(!a.success)return l(211,`declared ${i.name} as ${p(r)}, but not match`,{cause:a,value:n,type:e})}return u}else return l(210,`declared as ${p(e)} but not an object`,{value:n,type:e})}o(yn,"validateProperties");function dn(n,e,t=1){let i=typeof e=="string"?e:e.name;if(!i)return u;if(n===void 0)return l(130,`declared as ${p(e)} but actually undefined`,{value:n,type:e});if(n===null)return l(131,`declared as ${p(e)} but actually null`,{value:n,type:e});for(let s of Ie)if(i===s.name)return n instanceof s?u:l(132,`declared as ${p(e)} but actually ${n.constructor.name}`,{value:n,type:e});if(n instanceof Object&&!Ke(n,i))return l(133,`declared as ${p(e)} but actually not instance of it`,{value:n,type:e});if(t==0)return u;let r=D(n,C(i),t);return r.success?u:l(134,`declared as ${p(e)} but actually not match`,{cause:r,value:n,type:e})}o(dn,"validateSimpleValue");function Oe(n,e,t=3){if(e.classDefinition&&!Ke(n,e.classDefinition.name))return l(201,`declared as instance of ${p(e)} but actually not`,{value:n,type:e});if(e.name!=="any"&&e===g)return l(202,`${p(e)} not defined`,{value:n,type:e});let i=A({},e);return delete i.classDefinition,D(n,i,t)}o(Oe,"validateClassInstance");function Ke(n,e){if(n===void 0||n.constructor.name===e)return!0;let t=d(e);if(!t)return!0;if(t.jsClass)return n instanceof t.jsClass;let i=d(n);return i?i.isSubClassOf(t.name):!1}o(Ke,"valueInstanceOf");function Tn(n){return n.length>=2&&(n[0]==='"'&&n[n.length-1]==='"'||n[0]==="'"&&n[n.length-1]==="'")?n.substring(1,n.length-1):n}o(Tn,"trimQuotes");function p(n){var e,t,i,r,s;return typeof n=="string"?n:pe(n)?n.classDefinition.name:se(n)?(((e=n.arrayElementType)==null?void 0:e.name)||"unknown")+"[]":n.isConstructor?"Class":n.isFunction?"Function":fe(n)?"Object":ue(n)?`(${n.tupleMembers.map(p).join(",")})`:ce(n)?((t=n.unionMembers)==null?void 0:t.map(p).join(" | "))||"unknown":le(n)?((i=n.intersectionMembers)==null?void 0:i.map(p).join(" & "))||"unknown":ae(n)?n.literalValue:Le(n)?`{ [${(r=n.index.keyType)!=null?r:"string"}]: ${((s=n.index.valueType)==null?void 0:s.name)||"unknown"} }`:n.name||"unknown"}o(p,"getTypeDisplayName");var Se=class Se{constructor(e){var t;this.name=e.name,this.members=new Map,e.members.forEach(i=>{let r=i.initializer===void 0?{name:"number"}:{literalValue:i.initializer};this.members.set(i.name,r)}),this.fromLib=(t=e.fromLib)!=null?t:!1}get type(){return{name:this.name,unionMembers:Array.from(this.members.values()),fromLib:this.fromLib}}get names(){return Array.from(this.members.keys())}};o(Se,"EnumDefinition");var ke=Se,Ae=new Map;function U(n){var e,t;if(!Ae.has(n)){let i=(t=(e=M())==null?void 0:e.enums)==null?void 0:t[n];if(!i)return;Ae.set(n,new ke(i))}return Ae.get(n)}o(U,"getEnumDefinition");function Dn(n){var e;return((e=U(n))==null?void 0:e.names)||[]}o(Dn,"getEnumNames");function gn(n){let e=Object.entries(n)[0];if(!e)return[];let[t,i]=e,r=U(t);return r?r.names.map(s=>i[s]):Array.from(Object.keys(i))}o(gn,"getEnumValues");var ve=new Map;function I(n){ve.set(n.name,n)}o(I,"registerSpecialType");function Xe(n){return ve.has(n)}o(Xe,"isSpecialType");function je(n,...e){let t=ve.get(n);if(!t)return;let i=t.getType(...e);return i?{name:n,type:i,genericParams:t.genericParams,fromLib:!!t.fromLib}:void 0}o(je,"getSpecialTypeAlias");I({name:"Partial",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e?H(e,t=>t.isOptional=!0):void 0}});I({name:"Required",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return e!=null?e:H(e,t=>t.isOptional=!1)}});I({name:"Readonly",genericParams:["T"],fromLib:!0,getType(...n){let e=n[0];return H(e,t=>t.isReadonly=!0)}});I({name:"Record",genericParams:["K","T"],fromLib:!0,getType(...n){let[e,t]=n;return{index:{keyType:e!=null?e:g,valueType:t!=null?t:g}}}});I({name:"Pick",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return me(e,s=>{var a;return(a=s.name===t.literalValue||(i==null?void 0:i.includes(s.name)))!=null?a:!1})}});I({name:"Omit",genericParams:["T","K"],fromLib:!0,getType(...n){var r;let[e,t]=n;if(!t||!e)return;let i=(r=t.unionMembers)==null?void 0:r.map(s=>s.name);if(e.typeLiteralMembers)return me(e,s=>!(s.name===t.literalValue||i!=null&&i.includes(s.name)))}});I({name:"Extract",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return bn(e,i)}}});I({name:"Exclude",genericParams:["T","U"],fromLib:!0,getType(...n){let[e,t]=n;if(!(!e||!t)&&e.typeLiteralMembers&&t.typeLiteralMembers){let i={unionMembers:t.typeLiteralMembers.map(r=>({literalValue:r.name}))};return hn(e,i)}}});I({name:"ReflectReference",genericParams:["T","R"],getType(...n){let[e,t]=n;if(e)return q(A({},e),{reflectReference:t})}});function H(n,e){return n.typeLiteralMembers?{typeLiteralMembers:n.typeLiteralMembers.map(t=>Ye(t,e))}:n.unionMembers?{unionMembers:n.unionMembers.map(t=>H(t,e)).filter(t=>t!==void 0)}:n.intersectionMembers?{intersectionMembers:n.intersectionMembers.map(t=>H(t,e)).filter(t=>t!==void 0)}:void 0}o(H,"getMappedType");function me(n,e){if(n.typeLiteralMembers)return{typeLiteralMembers:n.typeLiteralMembers.map(t=>e(t)?Ye(t):void 0).filter(t=>!!t)}}o(me,"getFilterKeyType");function bn(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return me(n,r=>{var s;return(s=r.name===e.literalValue||(t==null?void 0:t.includes(r.name)))!=null?s:!1})}o(bn,"getPickType");function hn(n,e){var i;if(!e)return;let t=(i=e.unionMembers)==null?void 0:i.map(r=>r.name);if(n.typeLiteralMembers)return me(n,r=>!(r.name===e.literalValue||t!=null&&t.includes(r.name)))}o(hn,"getOmitType");function Ye(n,e){let t;return n instanceof x?t=new x({name:n.name,isReadonly:n.isReadOnly,isOptional:n.isOptional,isStatic:n.isStatic,accessor:n.accessor,type:n.rawType}):t={name:n.name,isOptional:n.isOptional,type:n.type},e==null||e(t),t}o(Ye,"copyPropertyDefinition");function Ve(n,e){var r,s,a;if(Xe(n))return e?je(n,...e):je(n);if(!Ee.has(n)){let c=(s=(r=M())==null?void 0:r.typeAliases)==null?void 0:s[n];if(!c||!c.type)return;Ee.set(n,{name:n,type:c.type,genericParams:c.genericParams,fromLib:c.fromLib})}let t=Ee.get(n);if(!t)return;let i;if(t.genericParams&&e){let c={};for(let f=0;f<t.genericParams.length;f++){let m=t.genericParams[f];c[m]=e[f]}i=y(t.type,c,e)}else i=y(t.type);return{name:t.name,type:i,genericParams:t.genericParams,fromLib:(a=t.fromLib)!=null?a:!1}}o(Ve,"getTypeAliasDefinition");var Ee=new Map;var g={name:"any"},Mn={name:"null"},wn={name:"undefined"};function Qe(n){return!!(n.name&&["any","void","unknown"].includes(n.name))}o(Qe,"isIgnoredType");function $e(n){return!!(n.name&&De.includes(n.name))}o($e,"isPrimitiveType");function se(n){return!!n.arrayElementType}o(se,"isArrayType");function ae(n){return!!n.literalValue}o(ae,"isLiteralType");function fe(n){return!!n.typeLiteralMembers}o(fe,"isTypeLiteralType");function ce(n){return!!n.unionMembers}o(ce,"isUnionType");function le(n){return!!n.intersectionMembers}o(le,"isIntersectionType");function ue(n){return!!n.tupleMembers}o(ue,"isTupleType");function pe(n){return!!n.classDefinition}o(pe,"isClassDefinition");function Rn(n){return!!n.generics}o(Rn,"hasGenerics");function Le(n){return!!n.index}o(Le,"isIndexType");function C(n,e){if(n==="any"||n==="Any"||n==="unknown"||n==="")return g;if(n==="null")return Mn;if(n==="undefined")return wn;if(n==="Function")return{isFunction:!0};let t=d(n);if(t)return e?v.create(t,e).type:t.type;if(De.includes(n))return{name:n};if(Ie.map(a=>a.name).includes(n))return{name:n,generics:e};let i=E(n);if(i)return i.fromLib?{name:n,generics:e}:e?te.create(i,e).type:i.type;let r=U(n);if(r)return r.type;let s=Ve(n,e);return s?s.type:(console.warn(`${n} not registered...`),g)}o(C,"getTypeDefinition");var Ne=new Map;function y(n,e,t){let i=Fe(n);if(n===void 0)return g;let r=Ne.get(i);if(r)return r;let s={};if(Ne.set(i,s),typeof n=="string")s=(e==null?void 0:e[n])||C(n,t)||g;else if(typeof n.literalValue=="string")s.literalValue=n.literalValue;else if(n.arrayElementType)Object.assign(s,{arrayElementType:y(n.arrayElementType,e)});else if(n.unionMembers)Object.assign(s,{unionMembers:n.unionMembers.map(a=>y(a,e))});else if(n.intersectionMembers)Object.assign(s,{intersectionMembers:n.intersectionMembers.map(a=>y(a,e))});else if(n.tupleMembers)Object.assign(s,{tupleMembers:n.tupleMembers.map(a=>y(a,e))});else if(n.typeLiteralMembers)s.typeLiteralMembers=n.typeLiteralMembers.map(a=>({name:a.name,isOptional:!!a.isOptional,type:y(a.type,e,t)}));else if(n.generics){let a=n.generics[0],c=n.generics.slice(1).map(f=>y(f,e));Object.assign(s,y(a,e,c))}else n.index&&Object.assign(s,{index:{keyType:n.index.keyType?y(n.index.keyType,e):void 0,valueType:y(n.index.valueType,e)}});return Object.keys(s).length===0&&(s=g),Ne.delete(i),s}o(y,"fillType");function Fe(n){return n===null?"null":n===void 0?"undefined":typeof n!="object"?JSON.stringify(n):Array.isArray(n)?"["+n.map(Fe).join(",")+"]":"{"+Object.keys(n).sort().map(t=>JSON.stringify(t)+":"+Fe(n[t])).join(",")+"}"}o(Fe,"stableStringify");var W={isPrimitiveType:$e,isArrayType:se,isLiteralType:ae,isTypeLiteralType:fe,isUnionType:ce,isIntersectionType:le,isTupleType:ue,isClassDefinition:pe,hasGenerics:Rn};function w(n){if(typeof n=="string"){let e=Pn(n);if(typeof e=="string"){let t=e.match(/"(.+)"$/)||e.match(/'(.+)'$/);if(t!=null&&t[1])return{literalValue:t[1]}}return typeof e=="string"?C(n):w(e)}return"array"in n?{arrayElementType:w(n.array)}:"union"in n?{unionMembers:n.union.map(w)}:"intersection"in n?{intersectionMembers:n.intersection.map(w)}:"tuple"in n?{tupleMembers:n.tuple.map(w)}:"generic"in n?C(n.name,n.generic.map(w)):n}o(w,"getTypeDef");function Wt(n,e,t=5){let i=D(n,w(e),t);return i.success||h.validationErrorHandler(new O(`assert failed with type: ${e}, ${i.errorStackFlow}`,i)),n}o(Wt,"assertType");function zt(n){return xn(null,n)}o(zt,"isNullable");function xn(n,e,t=5){return D(n,w(e),t).success}o(xn,"isType");function Pn(n){let e=0,t="%%",i={};function r(f){let m=`${t}${e++}`;return i[m]=f,m}o(r,"addPlaceholder");function s(f){let m=f.match(new RegExp(`^(${t}\\d)$`));if(!m)return;let T=m[1].trim(),b=i[T];return delete i[T],b}o(s,"getPlaceholder");function a(f,m,T,b){let R=0;for(;R<f.length;){let $=f.indexOf(m,R);if($===-1)break;R=$+1;let k=f.indexOf(T,R);if(k===-1)throw new _e("Illegal type string");let z=f.substring($+1,k),V=r(z);b?f=`${f.substring(0,$+1)}${V}${f.substring(k)}`:f=`${f.substring(0,$)}${V}${f.substring(k+1)}`}return f}o(a,"replaceBracket");function c(f){let m=f.trim(),T=o(L=>L.trim(),"trim"),b=o(L=>L.length!=0,"notEmpty");m=a(m,"(",")",!1),m=a(m,"<",">",!0);let R=s(m);if(R)return c(R);let $=m.split("|").map(T).filter(b);if($.length>1)return{union:$.map(c)};let k=m.split("&").map(T).filter(b);if(k.length>1)return{intersection:k.map(c)};let z=m.match(/^\[(.*)]$/);if(z)return{tuple:z[1].split(",").map(T).filter(b).map(c)};let V=m.match(/^(.+)\[]$/);if(V)return{array:c(V[1])};let de=m.match(/^([^<]+)<(.+)>$/);if(de){let L=de[1].trim(),Te=c(de[2]);if(typeof Te=="string"){let rn=Te.split(",").map(T).filter(b).map(c);return{name:L,generic:rn}}else return{name:L,generic:[Te]}}return m}return o(c,"parseTypeRecursive"),c(n)}o(Pn,"parseType");var Je=class Je extends Error{};o(Je,"TypeParseError");var _e=Je;function Ze(n,e,t=3){return h.validation?(e=e||n.constructor.name,Oe(n,w(e),t)):u}o(Ze,"validateInstance");function ei(n,e,t=2){if(!h.validation)return u;for(let i=0;i<n.length;i++){let r=Ze(n[i],e,t);if(!r.success)return l(220,`declared as instance of ${e}[] but [${i}] actually not`,{cause:r,value:n,type:e})}return u}o(ei,"validateArray");function ni(n,e,t=2){if(!h.validation)return u;let i=Object.entries(n);for(let r=0;r<i.length;r++){let[s,a]=i[r],c=Ze(a,e,t);if(!c.success)return l(230,`declared as instance of Dictionary<${e}> but [${s}] actually not`,{cause:c,value:n,type:e})}return u}o(ni,"validateDictionary");var en=Symbol("VALIDATE_WRAPPER"),li=o((n,e,t)=>Cn(n,e,t),"ReflectValidate");function Cn(n,e,t){if(!h.validation)return;let i=t.value;if(typeof i!="function"||J(i,en))return;let r=o(()=>{var f,m;return(m=(f=d(n))==null?void 0:f.methods)==null?void 0:m.find(T=>T.name===e)},"getMethodDef"),s=o(f=>nn(n,r(),f),"validateArgs"),a=o(f=>In(n,r(),f),"validateReturn"),c=o(function(...f){s(f);let m=i.call(this,...f);return a(m)},"newFunc");c[en]=i,t.value=c}o(Cn,"wrapValidateMethod");function nn(n,e,t){var i;(i=e==null?void 0:e.args)==null||i.forEach((r,s)=>{let a=t==null?void 0:t[s];if(a===void 0)if(!r.isOptional)h.validationErrorHandler(new O(`Illegal arguments for ${Ge(n.constructor.name,e)}: ${r.name} is not optional`));else return;let c=D(a,r.type||g,1);c.success||(console.error("validateResult",c),h.validationErrorHandler(new O(`Illegal arguments for ${Ge(n.constructor.name,e)}: ${r.name}: ${r.name} ${c.errorMessage}`,c)))})}o(nn,"validateMethodParams");function In(n,e,t){var s;if(!e)return t;let i=o((a,c)=>{let f=D(a,c,5);return f.success||(console.error(f.errorStackFlow),h.validationErrorHandler(new O(`result for ${Ge(n.constructor.name,e)} doesn't match type ${c.name}:
4
+ ${f.errorStackFlow}`,f))),a},"checkValue"),r=e.returnType;return r.name==="Promise"&&(r=((s=r.generics)==null?void 0:s[0])||g),t instanceof Promise?t.then(a=>i(a,r||g)):i(t,r||g)}o(In,"validateMethodReturnValue");function Ge(n,e){var t;return`${n}.${e.name}(${(t=e.args)==null?void 0:t.map(i=>i.name).join(", ")})`}o(Ge,"getMethodDescription");function ui(n,e,...t){let i=d(n);if(!i)return;let r=i.allMethods[e];if(r)return nn(n,r,t),J(n,e).apply(n,t)}o(ui,"safeCall");var Be=class Be{constructor(e){this.exceptionHandler=e!=null?e:console.error}parse(e,t){if(!t)return JSON.parse(e);let i=w(t),r=JSON.parse(e),s=this.convertJSONValue(r,i);return D(s,i).success||this.exceptionHandler(new ye(`jsonValue should be ${i.name}`)),s}convertJSONValue(e,t){switch(!0){case typeof e=="string":case typeof e=="number":case typeof e=="boolean":case e===null:return e;case e instanceof Array:return W.isArrayType(t)?e.map(i=>this.convertJSONValue(i,t)):W.isTupleType(t)?t.tupleMembers.map((i,r)=>this.convertJSONValue(e[r],i)):e;default:return W.isClassDefinition(t)?this.convertJSONObjectAsClassInstance(e,t.classDefinition):e}}convertJSONObjectAsClassInstance(e,t){if(!t.jsClass)return this.exceptionHandler(new ye(`class ${t.name} not reflected`)),e;let i=P(t.jsClass);return Object.assign(i,e),i}};o(Be,"JSONTransfer");var tn=Be,Ue=class Ue extends Error{};o(Ue,"JSONError");var ye=Ue;var h={validationErrorHandler:o(function(n){var e;console.error(n.message),console.error((e=n.failureResult)==null?void 0:e.errorStackFlow)},"validationErrorHandler"),validation:!0,debug:!1};function Oi(){if(!h.debug)return M()}o(Oi,"getDebugInfo");export{ye as JSONError,tn as JSONTransfer,h as ReflectConfig,li as ReflectValidate,W as TypeDefinition,_e as TypeParseError,O as ValidationError,Wt as assertType,l as failedResult,ln as getClassByName,d as getClassDefinition,Oi as getDebugInfo,U as getEnumDefinition,Dn as getEnumNames,gn as getEnumValues,ut as getErrorTraceMessages,E as getInterfaceDefinition,Ve as getTypeAliasDefinition,w as getTypeDef,zt as isNullable,xn as isType,I as registerSpecialType,ui as safeCall,u as successResult,ei as validateArray,ni as validateDictionary,Ze as validateInstance};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-ref-kit",
3
- "version": "1.1.12",
3
+ "version": "1.1.14",
4
4
  "description": "Type reflection and validation library for TypeScript",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",