@dipscope/type-manager 4.1.1 → 5.0.0-beta.0

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.
Files changed (142) hide show
  1. package/CHANGELOG.md +222 -197
  2. package/LICENSE.md +201 -201
  3. package/README.md +1827 -2037
  4. package/alias.d.ts +6 -10
  5. package/custom-data.d.ts +6 -11
  6. package/{core/default-value-resolver.d.ts → default-value-resolver.d.ts} +7 -7
  7. package/default-value.d.ts +7 -11
  8. package/discriminant.d.ts +8 -11
  9. package/discriminator.d.ts +6 -11
  10. package/factories/index.d.ts +1 -1
  11. package/factories/type-factory.d.ts +19 -19
  12. package/factory.d.ts +18 -11
  13. package/functions/get-own-reflect-metadata.d.ts +9 -0
  14. package/functions/get-reflect-metadata.d.ts +10 -0
  15. package/functions/get-words.d.ts +8 -0
  16. package/functions/index.d.ts +16 -0
  17. package/functions/is-arrow-function.d.ts +8 -0
  18. package/functions/is-ctor-function.d.ts +8 -0
  19. package/functions/is-data-view.d.ts +8 -0
  20. package/functions/is-float-32-array.d.ts +8 -0
  21. package/functions/is-float-64-array.d.ts +8 -0
  22. package/functions/is-int-16-array.d.ts +8 -0
  23. package/functions/is-int-32-array.d.ts +8 -0
  24. package/functions/is-int-8-array.d.ts +8 -0
  25. package/functions/is-uint-16-array.d.ts +8 -0
  26. package/functions/is-uint-32-array.d.ts +8 -0
  27. package/functions/is-uint-8-array.d.ts +8 -0
  28. package/functions/is-uint-8-clamped-array.d.ts +8 -0
  29. package/functions/name-of.d.ts +8 -0
  30. package/{core/generic-argument.d.ts → generic-argument.d.ts} +7 -7
  31. package/{core/generic-metadata.d.ts → generic-metadata.d.ts} +7 -7
  32. package/index.d.ts +54 -24
  33. package/index.js +1 -2
  34. package/{core/inject-index.d.ts → inject-index.d.ts} +6 -6
  35. package/{core/inject-metadata.d.ts → inject-metadata.d.ts} +72 -72
  36. package/{core/inject-options.d.ts → inject-options.d.ts} +22 -22
  37. package/inject.d.ts +10 -10
  38. package/injector.d.ts +16 -11
  39. package/injectors/index.d.ts +1 -1
  40. package/injectors/singleton-injector.d.ts +31 -31
  41. package/{core/log-level.d.ts → log-level.d.ts} +11 -11
  42. package/{core/log.d.ts → log.d.ts} +95 -65
  43. package/{core/metadata.d.ts → metadata.d.ts} +42 -42
  44. package/naming-convention.d.ts +15 -11
  45. package/naming-conventions/camel-case-naming-convention.d.ts +26 -26
  46. package/naming-conventions/flat-case-naming-convention.d.ts +25 -25
  47. package/naming-conventions/flat-upper-case-naming-convention.d.ts +25 -25
  48. package/naming-conventions/index.d.ts +8 -8
  49. package/naming-conventions/kebab-case-naming-convention.d.ts +26 -26
  50. package/naming-conventions/kebab-upper-case-naming-convention.d.ts +26 -26
  51. package/naming-conventions/pascal-case-naming-convention.d.ts +26 -26
  52. package/naming-conventions/snake-case-naming-convention.d.ts +26 -26
  53. package/naming-conventions/snake-upper-case-naming-convention.d.ts +26 -26
  54. package/package.json +51 -48
  55. package/{core/property-metadata.d.ts → property-metadata.d.ts} +178 -178
  56. package/{core/property-name.d.ts → property-name.d.ts} +6 -6
  57. package/{core/property-options.d.ts → property-options.d.ts} +109 -100
  58. package/property.d.ts +13 -12
  59. package/{core/reference-callback.d.ts → reference-callback.d.ts} +7 -7
  60. package/reference-handler.d.ts +32 -11
  61. package/reference-handlers/direct-reference-handler.d.ts +33 -33
  62. package/reference-handlers/index.d.ts +3 -3
  63. package/reference-handlers/lead-reference-handler.d.ts +34 -34
  64. package/reference-handlers/path-reference-handler.d.ts +56 -56
  65. package/{core/reference-key.d.ts → reference-key.d.ts} +6 -6
  66. package/{core/reference-value-initializer.d.ts → reference-value-initializer.d.ts} +8 -8
  67. package/{core/reference-value-resolver.d.ts → reference-value-resolver.d.ts} +8 -8
  68. package/{core/reference-value.d.ts → reference-value.d.ts} +6 -6
  69. package/{core/serializer-context-options.d.ts → serializer-context-options.d.ts} +63 -63
  70. package/{core/serializer-context.d.ts → serializer-context.d.ts} +296 -296
  71. package/serializer.d.ts +27 -11
  72. package/serializers/array-buffer-serializer.d.ts +28 -28
  73. package/serializers/array-serializer.d.ts +28 -28
  74. package/serializers/boolean-serializer.d.ts +37 -37
  75. package/serializers/data-view-serializer.d.ts +28 -28
  76. package/serializers/date-serializer.d.ts +28 -28
  77. package/serializers/float-32-array-serializer.d.ts +28 -28
  78. package/serializers/float-64-array-serializer.d.ts +28 -28
  79. package/serializers/index.d.ts +19 -19
  80. package/serializers/int-16-array-serializer.d.ts +28 -28
  81. package/serializers/int-32-array-serializer.d.ts +28 -28
  82. package/serializers/int-8-array-serializer.d.ts +28 -28
  83. package/serializers/map-serializer.d.ts +28 -28
  84. package/serializers/number-serializer.d.ts +37 -37
  85. package/serializers/set-serializer.d.ts +28 -28
  86. package/serializers/string-serializer.d.ts +37 -37
  87. package/serializers/type-serializer.d.ts +28 -28
  88. package/serializers/uint-16-array-serializer.d.ts +28 -28
  89. package/serializers/uint-32-array-serializer.d.ts +28 -28
  90. package/serializers/uint-8-array-serializer.d.ts +28 -28
  91. package/serializers/uint-8-clamped-array-serializer.d.ts +28 -28
  92. package/{core/type-abstraction.d.ts → type-abstraction.d.ts} +8 -8
  93. package/{core/type-argument.d.ts → type-argument.d.ts} +9 -9
  94. package/{core/type-context-entry.d.ts → type-context-entry.d.ts} +36 -36
  95. package/{core/type-context.d.ts → type-context.d.ts} +58 -58
  96. package/{core/type-ctor.d.ts → type-ctor.d.ts} +6 -6
  97. package/{core/type-fn.d.ts → type-fn.d.ts} +8 -8
  98. package/{core/type-like.d.ts → type-like.d.ts} +7 -7
  99. package/type-manager-options.d.ts +24 -24
  100. package/type-manager.d.ts +331 -331
  101. package/{core/type-metadata-resolver.d.ts → type-metadata-resolver.d.ts} +8 -8
  102. package/{core/type-metadata-symbol.d.ts → type-metadata-symbol.d.ts} +6 -6
  103. package/{core/type-metadata.d.ts → type-metadata.d.ts} +304 -304
  104. package/{core/type-name.d.ts → type-name.d.ts} +6 -6
  105. package/{core/type-options-base.d.ts → type-options-base.d.ts} +83 -100
  106. package/{core/type-options.d.ts → type-options.d.ts} +79 -53
  107. package/{core/type-resolver.d.ts → type-resolver.d.ts} +7 -7
  108. package/type.d.ts +9 -9
  109. package/core/alias.d.ts +0 -6
  110. package/core/custom-data.d.ts +0 -6
  111. package/core/default-value.d.ts +0 -7
  112. package/core/discriminant.d.ts +0 -8
  113. package/core/discriminator.d.ts +0 -6
  114. package/core/factory.d.ts +0 -18
  115. package/core/fn.d.ts +0 -316
  116. package/core/index.d.ts +0 -44
  117. package/core/index.js +0 -2
  118. package/core/index.js.map +0 -1
  119. package/core/injector.d.ts +0 -16
  120. package/core/naming-convention.d.ts +0 -15
  121. package/core/reference-handler.d.ts +0 -32
  122. package/core/serializer.d.ts +0 -27
  123. package/deserializable.d.ts +0 -11
  124. package/deserialized-default-value.d.ts +0 -11
  125. package/factories/index.js +0 -2
  126. package/factories/index.js.map +0 -1
  127. package/index.js.map +0 -1
  128. package/injectable.d.ts +0 -10
  129. package/injectors/index.js +0 -2
  130. package/injectors/index.js.map +0 -1
  131. package/naming-conventions/index.js +0 -2
  132. package/naming-conventions/index.js.map +0 -1
  133. package/preserve-discriminator.d.ts +0 -10
  134. package/reference-handlers/index.js +0 -2
  135. package/reference-handlers/index.js.map +0 -1
  136. package/serializable.d.ts +0 -11
  137. package/serialized-default-value.d.ts +0 -11
  138. package/serializers/index.js +0 -2
  139. package/serializers/index.js.map +0 -1
  140. package/type-and-property.d.ts +0 -12
  141. package/use-default-value.d.ts +0 -10
  142. package/use-implicit-conversion.d.ts +0 -10
package/type-manager.d.ts CHANGED
@@ -1,331 +1,331 @@
1
- import { Alias } from './core/alias';
2
- import { TypeFn } from './core/type-fn';
3
- import { TypeLike } from './core/type-like';
4
- import { TypeMetadata } from './core/type-metadata';
5
- import { TypeOptions } from './core/type-options';
6
- import { TypeOptionsBase } from './core/type-options-base';
7
- import { TypeManagerOptions } from './type-manager-options';
8
- /**
9
- * Type manager class for external usage.
10
- *
11
- * @type {TypeManager<TType>}
12
- */
13
- export declare class TypeManager<TType> {
14
- /**
15
- * Static global options of any type.
16
- *
17
- * @type {TypeOptionsBase<any>}
18
- */
19
- static readonly typeOptionsBase: TypeOptionsBase<any>;
20
- /**
21
- * Static type options per type.
22
- *
23
- * Overrides static global type options.
24
- *
25
- * @type {Map<TypeFn<any>, TypeOptions<any>>}
26
- */
27
- static readonly typeOptionsMap: Map<TypeFn<any>, TypeOptions<any>>;
28
- /**
29
- * Static type function map for types with aliases.
30
- *
31
- * @type {Map<Alias, TypeFn<any>>}
32
- */
33
- static readonly typeFnMap: Map<Alias, TypeFn<any>>;
34
- /**
35
- * Type function provided to the type manager.
36
- *
37
- * @type {TypeFn<TType>}
38
- */
39
- readonly typeFn: TypeFn<TType>;
40
- /**
41
- * Type metadata for provided type function.
42
- *
43
- * @type {TypeMetadata<TType>}
44
- */
45
- readonly typeMetadata: TypeMetadata<TType>;
46
- /**
47
- * Type manager options.
48
- *
49
- * @type {TypeManagerOptions}
50
- */
51
- readonly typeManagerOptions: TypeManagerOptions;
52
- /**
53
- * Type options base of current instance.
54
- *
55
- * @type {TypeOptionsBase<any>}
56
- */
57
- readonly typeOptionsBase: TypeOptionsBase<any>;
58
- /**
59
- * Type options map of current instance.
60
- *
61
- * @type {Map<TypeFn<any>, TypeOptions<any>>}
62
- */
63
- readonly typeOptionsMap: Map<TypeFn<any>, TypeOptions<any>>;
64
- /**
65
- * Type function map for types with aliases of current instance.
66
- *
67
- * @type {Map<Alias, TypeFn<any>>}
68
- */
69
- readonly typeFnMap: Map<Alias, TypeFn<any>>;
70
- /**
71
- * Type metadata map of current instance.
72
- *
73
- * @type {Map<TypeFn<any>, TypeMetadata<any>>}
74
- */
75
- readonly typeMetadataMap: Map<TypeFn<any>, TypeMetadata<any>>;
76
- /**
77
- * Constructor.
78
- *
79
- * Creating an instance of type manager is a heavy operation as it preserves a configuration state.
80
- * If you don't modify any of type manager options at runtime it is better to use static methods.
81
- *
82
- * @param {TypeFn<TType>} typeFn Type function.
83
- * @param {TypeManagerOptions} typeManagerOptions Type manager options.
84
- */
85
- constructor(typeFn: TypeFn<TType>, typeManagerOptions?: TypeManagerOptions);
86
- /**
87
- * Declares type metadata for provided type function based on general configuration.
88
- *
89
- * @param {TypeFn<TType>} typeFn Type function.
90
- *
91
- * @returns {TypeMetadata<TType>} Type metadata.
92
- */
93
- private static declareTypeMetadata;
94
- /**
95
- * Defines type metadata for the type prototype.
96
- *
97
- * @param {TypeFn<TType>} typeFn Type function.
98
- * @param {TypeOptions<TType>} typeOptions Type options.
99
- *
100
- * @returns {TypeMetadata<TType>} Type metadata for provided type function.
101
- */
102
- static defineTypeMetadata<TType>(typeFn: TypeFn<TType>, typeOptions?: TypeOptions<TType>): TypeMetadata<TType>;
103
- /**
104
- * Extracts type metadata from provided type function.
105
- *
106
- * @param {TypeFn<TType>} typeFn Type function.
107
- *
108
- * @returns {TypeMetadata<TType>} Type metadata for provided type function.
109
- */
110
- static extractTypeMetadata<TType>(typeFn: TypeFn<TType>): TypeMetadata<TType>;
111
- /**
112
- * Resolves type metadata by provided type argument.
113
- *
114
- * @type {TypeMetadata<any>} Type metadata for provided type argument.
115
- */
116
- private static resolveTypeMetadata;
117
- /**
118
- * Configures static global type options.
119
- *
120
- * @param {Partial<TypeOptionsBase<TType>>} typeOptionsBase Type options base.
121
- *
122
- * @returns {typeof TypeManager} Static instance of type manager.
123
- */
124
- static configureTypeOptionsBase<TType>(typeOptionsBase: Partial<TypeOptionsBase<TType>>): typeof TypeManager;
125
- /**
126
- * Configures static type options.
127
- *
128
- * @param {TypeFn<TType>} typeFn Type function.
129
- * @param {TypeOptions<TType>} typeOptions Type options.
130
- *
131
- * @returns {typeof TypeManager} Static instance of type manager.
132
- */
133
- static configureTypeOptions<TType>(typeFn: TypeFn<TType>, typeOptions: TypeOptions<TType>): typeof TypeManager;
134
- /**
135
- * Configures static type options map.
136
- *
137
- * @param {Map<TypeFn<TType>, TypeOptions<TType>>} typeOptionsMap Type options map.
138
- *
139
- * @returns {typeof TypeManager} Static instance of type manager.
140
- */
141
- static configureTypeOptionsMap<TType>(typeOptionsMap: Map<TypeFn<TType>, TypeOptions<TType>>): typeof TypeManager;
142
- /**
143
- * Configures type manager in static context.
144
- *
145
- * @param {TypeManagerOptions} typeManagerOptions Type manager options.
146
- *
147
- * @returns {typeof TypeManager} Static instance of type manager.
148
- */
149
- static configure(typeManagerOptions: TypeManagerOptions): typeof TypeManager;
150
- /**
151
- * Defines serializer context for x in static context.
152
- *
153
- * @param {TypeFn<TType>} typeFn Type function.
154
- * @param {any} x Some value.
155
- * @param {Array<GenericArgument<any>>} genericArguments Generic arguments.
156
- *
157
- * @returns {SerializerContext<TType>} Serializer context.
158
- */
159
- private static defineSerializerContext;
160
- /**
161
- * Serializes provided value based on the type function.
162
- *
163
- * @param {TypeFn<TType>} typeFn Type function.
164
- * @param {TypeLike<TType>} x Input value.
165
- *
166
- * @returns {TypeLike<any>} Object created from provided input value or undefined.
167
- */
168
- static serialize<TType>(typeFn: TypeFn<TType>, x: undefined): undefined;
169
- static serialize<TType>(typeFn: TypeFn<TType>, x: null): null;
170
- static serialize<TType>(typeFn: TypeFn<TType>, x: Array<TType>): Array<any>;
171
- static serialize<TType>(typeFn: TypeFn<TType>, x: TType): any;
172
- /**
173
- * Deserializes provided value based on the type function.
174
- *
175
- * @param {TypeFn<TType>} typeFn Type function.
176
- * @param {TypeLike<any>} x Input value.
177
- *
178
- * @returns {TypeLike<TType>} Type created from provided input value or undefined.
179
- */
180
- static deserialize<TType>(typeFn: TypeFn<TType>, x: undefined): undefined;
181
- static deserialize<TType>(typeFn: TypeFn<TType>, x: null): null;
182
- static deserialize<TType>(typeFn: TypeFn<TType>, x: Array<any>): Array<TType>;
183
- static deserialize<TType>(typeFn: TypeFn<TType>, x: any): TType;
184
- /**
185
- * Converts provided value to a JavaScript Object Notation (JSON) string.
186
- *
187
- * @param {TypeFn<TType>} typeFn Type function.
188
- * @param {any} x Input value, usually an object or array, to be converted.
189
- * @param {Function|Array<number>|Array<string>} replacer A function that transforms the results or an array of strings and numbers that acts as an approved list.
190
- * @param {string|number} space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
191
- *
192
- * @returns {string} JSON string.
193
- */
194
- static stringify<TType>(typeFn: TypeFn<TType>, x: any, replacer?: (this: any, key: string, value: any) => any | Array<number> | Array<string> | null, space?: string | number): string;
195
- /**
196
- * Converts a JavaScript Object Notation (JSON) string into a type.
197
- *
198
- * @param {TypeFn<TType>} typeFn Type function.
199
- * @param {string} x A valid JSON string.
200
- * @param {Function} reviver A function that transforms the results. This function is called for each member of the object.
201
- *
202
- * @returns {TypeLike<TType>} Type created from provided input value or undefined.
203
- */
204
- static parse<TType>(typeFn: TypeFn<TType>, x: string, reviver?: (this: any, key: string, value: any) => any): TypeLike<TType>;
205
- /**
206
- * Declares type metadata for provided type function.
207
- *
208
- * @param {TypeFn<TType>} typeFn Type function.
209
- *
210
- * @returns {TypeMetadata<TType>} Type metadata.
211
- */
212
- private declareTypeMetadata;
213
- /**
214
- * Defines type metadata in the type metadata map.
215
- *
216
- * @param {TypeFn<TType>} typeFn Type function.
217
- * @param {TypeOptions<TType>} typeOptions Type options.
218
- *
219
- * @returns {TypeMetadata<TType>} Type metadata for provided type function.
220
- */
221
- defineTypeMetadata<TType>(typeFn: TypeFn<TType>, typeOptions?: TypeOptions<TType>): TypeMetadata<TType>;
222
- /**
223
- * Extracts type metadata from provided type function.
224
- *
225
- * @param {TypeFn<TType>} typeFn Type function.
226
- *
227
- * @returns {TypeMetadata<TType>} Type metadata for provided type function.
228
- */
229
- extractTypeMetadata<TType>(typeFn: TypeFn<TType>): TypeMetadata<TType>;
230
- /**
231
- * Resolves type metadata by provided type argument.
232
- *
233
- * @type {TypeMetadata<any>} Type metadata for provided type argument.
234
- */
235
- private resolveTypeMetadata;
236
- /**
237
- * Configures instance global type options.
238
- *
239
- * @param {Partial<TypeOptionsBase<any>>} typeOptionsBase Type options base.
240
- *
241
- * @returns {TypeManager<TType>} Current instance of type manager.
242
- */
243
- configureTypeOptionsBase(typeOptionsBase: Partial<TypeOptionsBase<any>>): TypeManager<TType>;
244
- /**
245
- * Configures instance type options.
246
- *
247
- * @param {TypeFn<TType>} typeFn Type function.
248
- * @param {TypeOptions<TType>} typeOptions Type options.
249
- *
250
- * @returns {TypeManager<TType>} Current instance of type manager.
251
- */
252
- configureTypeOptions(typeFn: TypeFn<any>, typeOptions: TypeOptions<any>): TypeManager<TType>;
253
- /**
254
- * Configures instance type options map.
255
- *
256
- * @param {Map<TypeFn<TType>, TypeOptions<TType>>} typeOptionsMap Type options map.
257
- *
258
- * @returns {TypeManager<TType>} Current instance of type manager.
259
- */
260
- configureTypeOptionsMap(typeOptionsMap: Map<TypeFn<any>, TypeOptions<any>>): TypeManager<TType>;
261
- /**
262
- * Configures type manager.
263
- *
264
- * @param {TypeManagerOptions} typeManagerOptions Type manager options.
265
- *
266
- * @returns {TypeManager<TType>} Current instance of type manager.
267
- */
268
- configure(typeManagerOptions: TypeManagerOptions): TypeManager<TType>;
269
- /**
270
- * Builds type options base for the current instance.
271
- *
272
- * @returns {TypeOptionsBase<any>} Type options base.
273
- */
274
- private buildTypeOptionsBase;
275
- /**
276
- * Builds type options map of the current instance.
277
- *
278
- * @returns {Map<TypeFn<any>, TypeOptions<any>>} Type options map.
279
- */
280
- private buildTypeOptionsMap;
281
- /**
282
- * Defines serializer context for x.
283
- *
284
- * @param {any} x Some value.
285
- * @param {Array<GenericArgument<any>>} genericArguments Generic arguments.
286
- *
287
- * @returns {SerializerContext<any>} Serializer context.
288
- */
289
- private defineSerializerContext;
290
- /**
291
- * Serializes provided value.
292
- *
293
- * @param {TypeLike<TType>} x Input value.
294
- *
295
- * @returns {TypeLike<any>} Object created from provided input value or undefined.
296
- */
297
- serialize(x: undefined): undefined;
298
- serialize(x: null): null;
299
- serialize(x: Array<TType>): Array<any>;
300
- serialize(x: TType): any;
301
- /**
302
- * Deserializes provided value.
303
- *
304
- * @param {TypeLike<any>} x Input value.
305
- *
306
- * @returns {TypeLike<TType>} Type created from provided input value or undefined.
307
- */
308
- deserialize(x: undefined): undefined;
309
- deserialize(x: null): null;
310
- deserialize(x: Array<any>): Array<TType>;
311
- deserialize(x: any): TType;
312
- /**
313
- * Converts provided value to a JavaScript Object Notation (JSON) string.
314
- *
315
- * @param {any} x Input value, usually an object or array, to be converted.
316
- * @param {Function|Array<number>|Array<string>} replacer A function that transforms the results or an array of strings and numbers that acts as an approved list.
317
- * @param {string|number} space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
318
- *
319
- * @returns {string} JSON string.
320
- */
321
- stringify(x: any, replacer?: (this: any, key: string, value: any) => any | Array<number> | Array<string> | null, space?: string | number): string;
322
- /**
323
- * Converts a JavaScript Object Notation (JSON) string into a type.
324
- *
325
- * @param {string} x A valid JSON string.
326
- * @param {Function} reviver A function that transforms the results. This function is called for each member of the object.
327
- *
328
- * @returns {TypeLike<TType>} Type created from provided input value or undefined.
329
- */
330
- parse(x: string, reviver?: (this: any, key: string, value: any) => any): TypeLike<TType>;
331
- }
1
+ import { Alias } from './alias';
2
+ import { TypeFn } from './type-fn';
3
+ import { TypeLike } from './type-like';
4
+ import { TypeManagerOptions } from './type-manager-options';
5
+ import { TypeMetadata } from './type-metadata';
6
+ import { TypeOptions } from './type-options';
7
+ import { TypeOptionsBase } from './type-options-base';
8
+ /**
9
+ * Type manager class for external usage.
10
+ *
11
+ * @type {TypeManager<TType>}
12
+ */
13
+ export declare class TypeManager<TType> {
14
+ /**
15
+ * Static global options of any type.
16
+ *
17
+ * @type {TypeOptionsBase<any>}
18
+ */
19
+ static readonly typeOptionsBase: TypeOptionsBase<any>;
20
+ /**
21
+ * Static type options per type.
22
+ *
23
+ * Overrides static global type options.
24
+ *
25
+ * @type {Map<TypeFn<any>, TypeOptions<any>>}
26
+ */
27
+ static readonly typeOptionsMap: Map<TypeFn<any>, TypeOptions<any>>;
28
+ /**
29
+ * Static type function map for types with aliases.
30
+ *
31
+ * @type {Map<Alias, TypeFn<any>>}
32
+ */
33
+ static readonly typeFnMap: Map<Alias, TypeFn<any>>;
34
+ /**
35
+ * Type function provided to the type manager.
36
+ *
37
+ * @type {TypeFn<TType>}
38
+ */
39
+ readonly typeFn: TypeFn<TType>;
40
+ /**
41
+ * Type metadata for provided type function.
42
+ *
43
+ * @type {TypeMetadata<TType>}
44
+ */
45
+ readonly typeMetadata: TypeMetadata<TType>;
46
+ /**
47
+ * Type manager options.
48
+ *
49
+ * @type {TypeManagerOptions}
50
+ */
51
+ readonly typeManagerOptions: TypeManagerOptions;
52
+ /**
53
+ * Type options base of current instance.
54
+ *
55
+ * @type {TypeOptionsBase<any>}
56
+ */
57
+ readonly typeOptionsBase: TypeOptionsBase<any>;
58
+ /**
59
+ * Type options map of current instance.
60
+ *
61
+ * @type {Map<TypeFn<any>, TypeOptions<any>>}
62
+ */
63
+ readonly typeOptionsMap: Map<TypeFn<any>, TypeOptions<any>>;
64
+ /**
65
+ * Type function map for types with aliases of current instance.
66
+ *
67
+ * @type {Map<Alias, TypeFn<any>>}
68
+ */
69
+ readonly typeFnMap: Map<Alias, TypeFn<any>>;
70
+ /**
71
+ * Type metadata map of current instance.
72
+ *
73
+ * @type {Map<TypeFn<any>, TypeMetadata<any>>}
74
+ */
75
+ readonly typeMetadataMap: Map<TypeFn<any>, TypeMetadata<any>>;
76
+ /**
77
+ * Constructor.
78
+ *
79
+ * Creating an instance of type manager is a heavy operation as it preserves a configuration state.
80
+ * If you don't modify any of type manager options at runtime it is better to use static methods.
81
+ *
82
+ * @param {TypeFn<TType>} typeFn Type function.
83
+ * @param {TypeManagerOptions} typeManagerOptions Type manager options.
84
+ */
85
+ constructor(typeFn: TypeFn<TType>, typeManagerOptions?: TypeManagerOptions);
86
+ /**
87
+ * Declares type metadata for provided type function based on general configuration.
88
+ *
89
+ * @param {TypeFn<TType>} typeFn Type function.
90
+ *
91
+ * @returns {TypeMetadata<TType>} Type metadata.
92
+ */
93
+ private static declareTypeMetadata;
94
+ /**
95
+ * Defines type metadata for the type prototype.
96
+ *
97
+ * @param {TypeFn<TType>} typeFn Type function.
98
+ * @param {TypeOptions<TType>} typeOptions Type options.
99
+ *
100
+ * @returns {TypeMetadata<TType>} Type metadata for provided type function.
101
+ */
102
+ static defineTypeMetadata<TType>(typeFn: TypeFn<TType>, typeOptions?: TypeOptions<TType>): TypeMetadata<TType>;
103
+ /**
104
+ * Extracts type metadata from provided type function.
105
+ *
106
+ * @param {TypeFn<TType>} typeFn Type function.
107
+ *
108
+ * @returns {TypeMetadata<TType>} Type metadata for provided type function.
109
+ */
110
+ static extractTypeMetadata<TType>(typeFn: TypeFn<TType>): TypeMetadata<TType>;
111
+ /**
112
+ * Resolves type metadata by provided type argument.
113
+ *
114
+ * @type {TypeMetadata<any>} Type metadata for provided type argument.
115
+ */
116
+ private static resolveTypeMetadata;
117
+ /**
118
+ * Configures static global type options.
119
+ *
120
+ * @param {Partial<TypeOptionsBase<TType>>} typeOptionsBase Type options base.
121
+ *
122
+ * @returns {typeof TypeManager} Static instance of type manager.
123
+ */
124
+ static configureTypeOptionsBase<TType>(typeOptionsBase: Partial<TypeOptionsBase<TType>>): typeof TypeManager;
125
+ /**
126
+ * Configures static type options.
127
+ *
128
+ * @param {TypeFn<TType>} typeFn Type function.
129
+ * @param {TypeOptions<TType>} typeOptions Type options.
130
+ *
131
+ * @returns {typeof TypeManager} Static instance of type manager.
132
+ */
133
+ static configureTypeOptions<TType>(typeFn: TypeFn<TType>, typeOptions: TypeOptions<TType>): typeof TypeManager;
134
+ /**
135
+ * Configures static type options map.
136
+ *
137
+ * @param {Map<TypeFn<TType>, TypeOptions<TType>>} typeOptionsMap Type options map.
138
+ *
139
+ * @returns {typeof TypeManager} Static instance of type manager.
140
+ */
141
+ static configureTypeOptionsMap<TType>(typeOptionsMap: Map<TypeFn<TType>, TypeOptions<TType>>): typeof TypeManager;
142
+ /**
143
+ * Configures type manager in static context.
144
+ *
145
+ * @param {TypeManagerOptions} typeManagerOptions Type manager options.
146
+ *
147
+ * @returns {typeof TypeManager} Static instance of type manager.
148
+ */
149
+ static configure(typeManagerOptions: TypeManagerOptions): typeof TypeManager;
150
+ /**
151
+ * Defines serializer context for x in static context.
152
+ *
153
+ * @param {TypeFn<TType>} typeFn Type function.
154
+ * @param {any} x Some value.
155
+ * @param {Array<GenericArgument<any>>} genericArguments Generic arguments.
156
+ *
157
+ * @returns {SerializerContext<TType>} Serializer context.
158
+ */
159
+ private static defineSerializerContext;
160
+ /**
161
+ * Serializes provided value based on the type function.
162
+ *
163
+ * @param {TypeFn<TType>} typeFn Type function.
164
+ * @param {TypeLike<TType>} x Input value.
165
+ *
166
+ * @returns {TypeLike<any>} Object created from provided input value or undefined.
167
+ */
168
+ static serialize<TType>(typeFn: TypeFn<TType>, x: undefined): any;
169
+ static serialize<TType>(typeFn: TypeFn<TType>, x: null): null;
170
+ static serialize<TType>(typeFn: TypeFn<TType>, x: Array<TType>): Array<any>;
171
+ static serialize<TType>(typeFn: TypeFn<TType>, x: TType): any;
172
+ /**
173
+ * Deserializes provided value based on the type function.
174
+ *
175
+ * @param {TypeFn<TType>} typeFn Type function.
176
+ * @param {TypeLike<any>} x Input value.
177
+ *
178
+ * @returns {TypeLike<TType>} Type created from provided input value or undefined.
179
+ */
180
+ static deserialize<TType>(typeFn: TypeFn<TType>, x: undefined): any;
181
+ static deserialize<TType>(typeFn: TypeFn<TType>, x: null): null;
182
+ static deserialize<TType>(typeFn: TypeFn<TType>, x: Array<any>): Array<TType>;
183
+ static deserialize<TType>(typeFn: TypeFn<TType>, x: any): TType;
184
+ /**
185
+ * Converts provided value to a JavaScript Object Notation (JSON) string.
186
+ *
187
+ * @param {TypeFn<TType>} typeFn Type function.
188
+ * @param {any} x Input value, usually an object or array, to be converted.
189
+ * @param {Function|Array<number>|Array<string>} replacer A function that transforms the results or an array of strings and numbers that acts as an approved list.
190
+ * @param {string|number} space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
191
+ *
192
+ * @returns {string} JSON string.
193
+ */
194
+ static stringify<TType>(typeFn: TypeFn<TType>, x: any, replacer?: (this: any, key: string, value: any) => any | Array<number> | Array<string> | null, space?: string | number): string;
195
+ /**
196
+ * Converts a JavaScript Object Notation (JSON) string into a type.
197
+ *
198
+ * @param {TypeFn<TType>} typeFn Type function.
199
+ * @param {string} x A valid JSON string.
200
+ * @param {Function} reviver A function that transforms the results. This function is called for each member of the object.
201
+ *
202
+ * @returns {TypeLike<TType>} Type created from provided input value or undefined.
203
+ */
204
+ static parse<TType>(typeFn: TypeFn<TType>, x: string, reviver?: (this: any, key: string, value: any) => any): TypeLike<TType>;
205
+ /**
206
+ * Declares type metadata for provided type function.
207
+ *
208
+ * @param {TypeFn<TType>} typeFn Type function.
209
+ *
210
+ * @returns {TypeMetadata<TType>} Type metadata.
211
+ */
212
+ private declareTypeMetadata;
213
+ /**
214
+ * Defines type metadata in the type metadata map.
215
+ *
216
+ * @param {TypeFn<TType>} typeFn Type function.
217
+ * @param {TypeOptions<TType>} typeOptions Type options.
218
+ *
219
+ * @returns {TypeMetadata<TType>} Type metadata for provided type function.
220
+ */
221
+ defineTypeMetadata<TType>(typeFn: TypeFn<TType>, typeOptions?: TypeOptions<TType>): TypeMetadata<TType>;
222
+ /**
223
+ * Extracts type metadata from provided type function.
224
+ *
225
+ * @param {TypeFn<TType>} typeFn Type function.
226
+ *
227
+ * @returns {TypeMetadata<TType>} Type metadata for provided type function.
228
+ */
229
+ extractTypeMetadata<TType>(typeFn: TypeFn<TType>): TypeMetadata<TType>;
230
+ /**
231
+ * Resolves type metadata by provided type argument.
232
+ *
233
+ * @type {TypeMetadata<any>} Type metadata for provided type argument.
234
+ */
235
+ private resolveTypeMetadata;
236
+ /**
237
+ * Configures instance global type options.
238
+ *
239
+ * @param {Partial<TypeOptionsBase<any>>} typeOptionsBase Type options base.
240
+ *
241
+ * @returns {TypeManager<TType>} Current instance of type manager.
242
+ */
243
+ configureTypeOptionsBase(typeOptionsBase: Partial<TypeOptionsBase<any>>): TypeManager<TType>;
244
+ /**
245
+ * Configures instance type options.
246
+ *
247
+ * @param {TypeFn<TType>} typeFn Type function.
248
+ * @param {TypeOptions<TType>} typeOptions Type options.
249
+ *
250
+ * @returns {TypeManager<TType>} Current instance of type manager.
251
+ */
252
+ configureTypeOptions(typeFn: TypeFn<any>, typeOptions: TypeOptions<any>): TypeManager<TType>;
253
+ /**
254
+ * Configures instance type options map.
255
+ *
256
+ * @param {Map<TypeFn<TType>, TypeOptions<TType>>} typeOptionsMap Type options map.
257
+ *
258
+ * @returns {TypeManager<TType>} Current instance of type manager.
259
+ */
260
+ configureTypeOptionsMap(typeOptionsMap: Map<TypeFn<any>, TypeOptions<any>>): TypeManager<TType>;
261
+ /**
262
+ * Configures type manager.
263
+ *
264
+ * @param {TypeManagerOptions} typeManagerOptions Type manager options.
265
+ *
266
+ * @returns {TypeManager<TType>} Current instance of type manager.
267
+ */
268
+ configure(typeManagerOptions: TypeManagerOptions): TypeManager<TType>;
269
+ /**
270
+ * Builds type options base for the current instance.
271
+ *
272
+ * @returns {TypeOptionsBase<any>} Type options base.
273
+ */
274
+ private buildTypeOptionsBase;
275
+ /**
276
+ * Builds type options map of the current instance.
277
+ *
278
+ * @returns {Map<TypeFn<any>, TypeOptions<any>>} Type options map.
279
+ */
280
+ private buildTypeOptionsMap;
281
+ /**
282
+ * Defines serializer context for x.
283
+ *
284
+ * @param {any} x Some value.
285
+ * @param {Array<GenericArgument<any>>} genericArguments Generic arguments.
286
+ *
287
+ * @returns {SerializerContext<any>} Serializer context.
288
+ */
289
+ private defineSerializerContext;
290
+ /**
291
+ * Serializes provided value.
292
+ *
293
+ * @param {TypeLike<TType>} x Input value.
294
+ *
295
+ * @returns {TypeLike<any>} Object created from provided input value or undefined.
296
+ */
297
+ serialize(x: undefined): any;
298
+ serialize(x: null): null;
299
+ serialize(x: Array<TType>): Array<any>;
300
+ serialize(x: TType): any;
301
+ /**
302
+ * Deserializes provided value.
303
+ *
304
+ * @param {TypeLike<any>} x Input value.
305
+ *
306
+ * @returns {TypeLike<TType>} Type created from provided input value or undefined.
307
+ */
308
+ deserialize(x: undefined): any;
309
+ deserialize(x: null): null;
310
+ deserialize(x: Array<any>): Array<TType>;
311
+ deserialize(x: any): TType;
312
+ /**
313
+ * Converts provided value to a JavaScript Object Notation (JSON) string.
314
+ *
315
+ * @param {any} x Input value, usually an object or array, to be converted.
316
+ * @param {Function|Array<number>|Array<string>} replacer A function that transforms the results or an array of strings and numbers that acts as an approved list.
317
+ * @param {string|number} space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.
318
+ *
319
+ * @returns {string} JSON string.
320
+ */
321
+ stringify(x: any, replacer?: (this: any, key: string, value: any) => any | Array<number> | Array<string> | null, space?: string | number): string;
322
+ /**
323
+ * Converts a JavaScript Object Notation (JSON) string into a type.
324
+ *
325
+ * @param {string} x A valid JSON string.
326
+ * @param {Function} reviver A function that transforms the results. This function is called for each member of the object.
327
+ *
328
+ * @returns {TypeLike<TType>} Type created from provided input value or undefined.
329
+ */
330
+ parse(x: string, reviver?: (this: any, key: string, value: any) => any): TypeLike<TType>;
331
+ }