@dipscope/type-manager 4.1.1 → 5.0.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 (140) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +140 -320
  3. package/alias.d.ts +3 -7
  4. package/custom-data.d.ts +3 -8
  5. package/{core/default-value-resolver.d.ts → default-value-resolver.d.ts} +0 -0
  6. package/default-value.d.ts +4 -8
  7. package/discriminant.d.ts +5 -8
  8. package/discriminator.d.ts +3 -8
  9. package/factories/type-factory.d.ts +3 -3
  10. package/factory.d.ts +15 -8
  11. package/functions/get-own-reflect-metadata.d.ts +9 -0
  12. package/functions/get-reflect-metadata.d.ts +10 -0
  13. package/functions/get-words.d.ts +8 -0
  14. package/functions/index.d.ts +16 -0
  15. package/functions/is-arrow-function.d.ts +8 -0
  16. package/functions/is-ctor-function.d.ts +8 -0
  17. package/functions/is-data-view.d.ts +8 -0
  18. package/functions/is-float-32-array.d.ts +8 -0
  19. package/functions/is-float-64-array.d.ts +8 -0
  20. package/functions/is-int-16-array.d.ts +8 -0
  21. package/functions/is-int-32-array.d.ts +8 -0
  22. package/functions/is-int-8-array.d.ts +8 -0
  23. package/functions/is-uint-16-array.d.ts +8 -0
  24. package/functions/is-uint-32-array.d.ts +8 -0
  25. package/functions/is-uint-8-array.d.ts +8 -0
  26. package/functions/is-uint-8-clamped-array.d.ts +8 -0
  27. package/functions/name-of.d.ts +8 -0
  28. package/{core/generic-argument.d.ts → generic-argument.d.ts} +0 -0
  29. package/{core/generic-metadata.d.ts → generic-metadata.d.ts} +0 -0
  30. package/index.d.ts +39 -9
  31. package/index.js +1 -2
  32. package/{core/inject-index.d.ts → inject-index.d.ts} +0 -0
  33. package/{core/inject-metadata.d.ts → inject-metadata.d.ts} +17 -1
  34. package/{core/inject-options.d.ts → inject-options.d.ts} +2 -2
  35. package/inject.d.ts +2 -2
  36. package/injector.d.ts +13 -8
  37. package/injectors/singleton-injector.d.ts +2 -2
  38. package/{core/log-level.d.ts → log-level.d.ts} +0 -0
  39. package/{core/log.d.ts → log.d.ts} +41 -11
  40. package/{core/metadata.d.ts → metadata.d.ts} +0 -0
  41. package/naming-convention.d.ts +12 -8
  42. package/naming-conventions/camel-case-naming-convention.d.ts +1 -1
  43. package/naming-conventions/flat-case-naming-convention.d.ts +1 -1
  44. package/naming-conventions/flat-upper-case-naming-convention.d.ts +1 -1
  45. package/naming-conventions/kebab-case-naming-convention.d.ts +1 -1
  46. package/naming-conventions/kebab-upper-case-naming-convention.d.ts +1 -1
  47. package/naming-conventions/pascal-case-naming-convention.d.ts +1 -1
  48. package/naming-conventions/snake-case-naming-convention.d.ts +1 -1
  49. package/naming-conventions/snake-upper-case-naming-convention.d.ts +1 -1
  50. package/package.json +15 -8
  51. package/property-metadata.d.ts +309 -0
  52. package/{core/property-name.d.ts → property-name.d.ts} +0 -0
  53. package/{core/property-options.d.ts → property-options.d.ts} +18 -2
  54. package/property.d.ts +3 -2
  55. package/{core/reference-callback.d.ts → reference-callback.d.ts} +1 -1
  56. package/reference-handler.d.ts +28 -8
  57. package/reference-handlers/direct-reference-handler.d.ts +11 -12
  58. package/reference-handlers/lead-reference-handler.d.ts +11 -12
  59. package/reference-handlers/path-reference-handler.d.ts +11 -12
  60. package/{core/reference-key.d.ts → reference-key.d.ts} +0 -0
  61. package/reference-value-getter.d.ts +7 -0
  62. package/reference-value-setter.d.ts +7 -0
  63. package/{core/reference-value.d.ts → reference-value.d.ts} +0 -0
  64. package/serializer-context-options.d.ts +43 -0
  65. package/{core/serializer-context.d.ts → serializer-context.d.ts} +153 -39
  66. package/serializer.d.ts +24 -8
  67. package/serializers/array-buffer-serializer.d.ts +3 -3
  68. package/serializers/array-serializer.d.ts +3 -3
  69. package/serializers/boolean-serializer.d.ts +3 -3
  70. package/serializers/data-view-serializer.d.ts +3 -3
  71. package/serializers/date-serializer.d.ts +3 -3
  72. package/serializers/float-32-array-serializer.d.ts +3 -3
  73. package/serializers/float-64-array-serializer.d.ts +3 -3
  74. package/serializers/int-16-array-serializer.d.ts +3 -3
  75. package/serializers/int-32-array-serializer.d.ts +3 -3
  76. package/serializers/int-8-array-serializer.d.ts +3 -3
  77. package/serializers/map-serializer.d.ts +3 -3
  78. package/serializers/number-serializer.d.ts +3 -3
  79. package/serializers/set-serializer.d.ts +3 -3
  80. package/serializers/string-serializer.d.ts +3 -3
  81. package/serializers/type-serializer.d.ts +3 -3
  82. package/serializers/uint-16-array-serializer.d.ts +3 -3
  83. package/serializers/uint-32-array-serializer.d.ts +3 -3
  84. package/serializers/uint-8-array-serializer.d.ts +3 -3
  85. package/serializers/uint-8-clamped-array-serializer.d.ts +3 -3
  86. package/{core/type-abstraction.d.ts → type-abstraction.d.ts} +0 -0
  87. package/{core/type-argument.d.ts → type-argument.d.ts} +0 -0
  88. package/{core/type-context-entry.d.ts → type-context-entry.d.ts} +0 -0
  89. package/{core/type-context.d.ts → type-context.d.ts} +0 -0
  90. package/{core/type-ctor.d.ts → type-ctor.d.ts} +0 -0
  91. package/{core/type-fn.d.ts → type-fn.d.ts} +0 -0
  92. package/{core/type-like.d.ts → type-like.d.ts} +0 -0
  93. package/type-manager-options.d.ts +5 -5
  94. package/type-manager.d.ts +10 -10
  95. package/{core/type-metadata-resolver.d.ts → type-metadata-resolver.d.ts} +0 -0
  96. package/{core/type-metadata-symbol.d.ts → type-metadata-symbol.d.ts} +0 -0
  97. package/{core/type-metadata.d.ts → type-metadata.d.ts} +183 -15
  98. package/{core/type-name.d.ts → type-name.d.ts} +0 -0
  99. package/{core/type-options-base.d.ts → type-options-base.d.ts} +9 -19
  100. package/{core/type-options.d.ts → type-options.d.ts} +28 -2
  101. package/{core/type-resolver.d.ts → type-resolver.d.ts} +0 -0
  102. package/type.d.ts +1 -1
  103. package/core/alias.d.ts +0 -6
  104. package/core/custom-data.d.ts +0 -6
  105. package/core/default-value.d.ts +0 -7
  106. package/core/discriminant.d.ts +0 -8
  107. package/core/discriminator.d.ts +0 -6
  108. package/core/factory.d.ts +0 -18
  109. package/core/fn.d.ts +0 -316
  110. package/core/index.d.ts +0 -44
  111. package/core/index.js +0 -2
  112. package/core/index.js.map +0 -1
  113. package/core/injector.d.ts +0 -16
  114. package/core/naming-convention.d.ts +0 -15
  115. package/core/property-metadata.d.ts +0 -178
  116. package/core/reference-handler.d.ts +0 -32
  117. package/core/reference-value-initializer.d.ts +0 -8
  118. package/core/reference-value-resolver.d.ts +0 -8
  119. package/core/serializer-context-options.d.ts +0 -63
  120. package/core/serializer.d.ts +0 -27
  121. package/deserializable.d.ts +0 -11
  122. package/deserialized-default-value.d.ts +0 -11
  123. package/factories/index.js +0 -2
  124. package/factories/index.js.map +0 -1
  125. package/index.js.map +0 -1
  126. package/injectable.d.ts +0 -10
  127. package/injectors/index.js +0 -2
  128. package/injectors/index.js.map +0 -1
  129. package/naming-conventions/index.js +0 -2
  130. package/naming-conventions/index.js.map +0 -1
  131. package/preserve-discriminator.d.ts +0 -10
  132. package/reference-handlers/index.js +0 -2
  133. package/reference-handlers/index.js.map +0 -1
  134. package/serializable.d.ts +0 -11
  135. package/serialized-default-value.d.ts +0 -11
  136. package/serializers/index.js +0 -2
  137. package/serializers/index.js.map +0 -1
  138. package/type-and-property.d.ts +0 -12
  139. package/use-default-value.d.ts +0 -10
  140. package/use-implicit-conversion.d.ts +0 -10
@@ -1,6 +1,6 @@
1
- import { Serializer } from '../core/serializer';
2
- import { SerializerContext } from '../core/serializer-context';
3
- import { TypeLike } from '../core/type-like';
1
+ import { Serializer } from '../serializer';
2
+ import { SerializerContext } from '../serializer-context';
3
+ import { TypeLike } from '../type-like';
4
4
  /**
5
5
  * String serializer.
6
6
  *
@@ -1,6 +1,6 @@
1
- import { Serializer } from '../core/serializer';
2
- import { SerializerContext } from '../core/serializer-context';
3
- import { TypeLike } from '../core/type-like';
1
+ import { Serializer } from '../serializer';
2
+ import { SerializerContext } from '../serializer-context';
3
+ import { TypeLike } from '../type-like';
4
4
  /**
5
5
  * Type serializer.
6
6
  *
@@ -1,6 +1,6 @@
1
- import { Serializer } from '../core/serializer';
2
- import { SerializerContext } from '../core/serializer-context';
3
- import { TypeLike } from '../core/type-like';
1
+ import { Serializer } from '../serializer';
2
+ import { SerializerContext } from '../serializer-context';
3
+ import { TypeLike } from '../type-like';
4
4
  /**
5
5
  * Uint 16 array serializer.
6
6
  *
@@ -1,6 +1,6 @@
1
- import { Serializer } from '../core/serializer';
2
- import { SerializerContext } from '../core/serializer-context';
3
- import { TypeLike } from '../core/type-like';
1
+ import { Serializer } from '../serializer';
2
+ import { SerializerContext } from '../serializer-context';
3
+ import { TypeLike } from '../type-like';
4
4
  /**
5
5
  * Uint 32 array serializer.
6
6
  *
@@ -1,6 +1,6 @@
1
- import { Serializer } from '../core/serializer';
2
- import { SerializerContext } from '../core/serializer-context';
3
- import { TypeLike } from '../core/type-like';
1
+ import { Serializer } from '../serializer';
2
+ import { SerializerContext } from '../serializer-context';
3
+ import { TypeLike } from '../type-like';
4
4
  /**
5
5
  * Uint 8 array serializer.
6
6
  *
@@ -1,6 +1,6 @@
1
- import { Serializer } from '../core/serializer';
2
- import { SerializerContext } from '../core/serializer-context';
3
- import { TypeLike } from '../core/type-like';
1
+ import { Serializer } from '../serializer';
2
+ import { SerializerContext } from '../serializer-context';
3
+ import { TypeLike } from '../type-like';
4
4
  /**
5
5
  * Uint 8 clamped array serializer.
6
6
  *
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,12 +1,12 @@
1
- import { TypeFn } from './core';
2
- import { TypeOptions } from './core/type-options';
3
- import { TypeOptionsBase } from './core/type-options-base';
1
+ import { TypeFn } from './type-fn';
2
+ import { TypeOptions } from './type-options';
3
+ import { TypeOptionsBase } from './type-options-base';
4
4
  /**
5
5
  * Type manager options.
6
6
  *
7
7
  * @type {TypeManagerOptions}
8
8
  */
9
- export interface TypeManagerOptions {
9
+ export declare type TypeManagerOptions = {
10
10
  /**
11
11
  * Global type options shared among all types.
12
12
  *
@@ -21,4 +21,4 @@ export interface TypeManagerOptions {
21
21
  * @type {Map<TypeFn<any>, TypeOptions<any>>}
22
22
  */
23
23
  typeOptionsMap?: Map<TypeFn<any>, TypeOptions<any>>;
24
- }
24
+ };
package/type-manager.d.ts CHANGED
@@ -1,10 +1,10 @@
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';
1
+ import { Alias } from './alias';
2
+ import { TypeFn } from './type-fn';
3
+ import { TypeLike } from './type-like';
7
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
8
  /**
9
9
  * Type manager class for external usage.
10
10
  *
@@ -165,7 +165,7 @@ export declare class TypeManager<TType> {
165
165
  *
166
166
  * @returns {TypeLike<any>} Object created from provided input value or undefined.
167
167
  */
168
- static serialize<TType>(typeFn: TypeFn<TType>, x: undefined): undefined;
168
+ static serialize<TType>(typeFn: TypeFn<TType>, x: undefined): any;
169
169
  static serialize<TType>(typeFn: TypeFn<TType>, x: null): null;
170
170
  static serialize<TType>(typeFn: TypeFn<TType>, x: Array<TType>): Array<any>;
171
171
  static serialize<TType>(typeFn: TypeFn<TType>, x: TType): any;
@@ -177,7 +177,7 @@ export declare class TypeManager<TType> {
177
177
  *
178
178
  * @returns {TypeLike<TType>} Type created from provided input value or undefined.
179
179
  */
180
- static deserialize<TType>(typeFn: TypeFn<TType>, x: undefined): undefined;
180
+ static deserialize<TType>(typeFn: TypeFn<TType>, x: undefined): any;
181
181
  static deserialize<TType>(typeFn: TypeFn<TType>, x: null): null;
182
182
  static deserialize<TType>(typeFn: TypeFn<TType>, x: Array<any>): Array<TType>;
183
183
  static deserialize<TType>(typeFn: TypeFn<TType>, x: any): TType;
@@ -294,7 +294,7 @@ export declare class TypeManager<TType> {
294
294
  *
295
295
  * @returns {TypeLike<any>} Object created from provided input value or undefined.
296
296
  */
297
- serialize(x: undefined): undefined;
297
+ serialize(x: undefined): any;
298
298
  serialize(x: null): null;
299
299
  serialize(x: Array<TType>): Array<any>;
300
300
  serialize(x: TType): any;
@@ -305,7 +305,7 @@ export declare class TypeManager<TType> {
305
305
  *
306
306
  * @returns {TypeLike<TType>} Type created from provided input value or undefined.
307
307
  */
308
- deserialize(x: undefined): undefined;
308
+ deserialize(x: undefined): any;
309
309
  deserialize(x: null): null;
310
310
  deserialize(x: Array<any>): Array<TType>;
311
311
  deserialize(x: any): TType;
@@ -1,5 +1,6 @@
1
1
  import { Alias } from './alias';
2
2
  import { CustomData } from './custom-data';
3
+ import { DefaultValue } from './default-value';
3
4
  import { Discriminant } from './discriminant';
4
5
  import { Discriminator } from './discriminator';
5
6
  import { Factory } from './factory';
@@ -28,12 +29,6 @@ import { TypeOptionsBase } from './type-options-base';
28
29
  * @type {TypeMetadata<TType>}
29
30
  */
30
31
  export declare class TypeMetadata<TType> extends Metadata {
31
- /**
32
- * Parent type metadata.
33
- *
34
- * @type {TypeMetadata<any>}
35
- */
36
- readonly parentTypeMetadata?: TypeMetadata<any>;
37
32
  /**
38
33
  * Type name.
39
34
  *
@@ -48,6 +43,12 @@ export declare class TypeMetadata<TType> extends Metadata {
48
43
  * @type {TypeFn<TType>}
49
44
  */
50
45
  readonly typeFn: TypeFn<TType>;
46
+ /**
47
+ * Type function map for types with aliases.
48
+ *
49
+ * @type {Map<Alias, TypeFn<any>>}
50
+ */
51
+ readonly typeFnMap: Map<Alias, TypeFn<any>>;
51
52
  /**
52
53
  * Type options used by default.
53
54
  *
@@ -61,11 +62,11 @@ export declare class TypeMetadata<TType> extends Metadata {
61
62
  */
62
63
  readonly typeOptions: TypeOptions<TType>;
63
64
  /**
64
- * Children type metadatas.
65
+ * Children type metadata map.
65
66
  *
66
67
  * @type {Map<TypeFn<TType>, TypeMetadata<any>>}
67
68
  */
68
- readonly childrenTypeMetadatas: Map<TypeFn<any>, TypeMetadata<any>>;
69
+ readonly childrenTypeMetadataMap: Map<TypeFn<any>, TypeMetadata<any>>;
69
70
  /**
70
71
  * Discriminant map.
71
72
  *
@@ -84,16 +85,23 @@ export declare class TypeMetadata<TType> extends Metadata {
84
85
  * @type {Map<InjectIndex, InjectMetadata<TType, any>>}
85
86
  */
86
87
  readonly injectMetadataMap: Map<InjectIndex, InjectMetadata<TType, any>>;
88
+ /**
89
+ * Parent type metadata.
90
+ *
91
+ * @type {TypeMetadata<any>}
92
+ */
93
+ readonly parentTypeMetadata?: TypeMetadata<any>;
87
94
  /**
88
95
  * Constructor.
89
96
  *
90
97
  * @param {TypeMetadataResolver<any>} typeMetadataResolver Type metadata resolver.
91
98
  * @param {TypeFn<any>} typeFn Type function.
99
+ * @param {Map<Alias, TypeFn<any>>} typeFnMap Type function map.
92
100
  * @param {TypeOptionsBase<TType>} typeOptionsBase Type options used by default.
93
101
  * @param {TypeOptions<TType>} typeOptions Type options.
94
102
  * @param {TypeMetadata<any>} parentTypeMetadata Parent type metadata.
95
103
  */
96
- constructor(typeMetadataResolver: TypeMetadataResolver<any>, typeFn: TypeFn<TType>, typeOptionsBase: TypeOptionsBase<TType>, typeOptions: TypeOptions<TType>, parentTypeMetadata?: TypeMetadata<any>);
104
+ constructor(typeMetadataResolver: TypeMetadataResolver<any>, typeFn: TypeFn<TType>, typeFnMap: Map<Alias, TypeFn<any>>, typeOptionsBase: TypeOptionsBase<TType>, typeOptions: TypeOptions<TType>, parentTypeMetadata?: TypeMetadata<any>);
97
105
  /**
98
106
  * Gets alias.
99
107
  *
@@ -106,12 +114,24 @@ export declare class TypeMetadata<TType> extends Metadata {
106
114
  * @returns {CustomData} Custom data.
107
115
  */
108
116
  get customData(): CustomData;
117
+ /**
118
+ * Gets serialized null value.
119
+ *
120
+ * @returns {any|undefined} Resolved serialized null value or undefined.
121
+ */
122
+ get serializedNullValue(): any | undefined;
109
123
  /**
110
124
  * Gets serialized default value.
111
125
  *
112
126
  * @returns {any|undefined} Resolved serialized default value or undefined.
113
127
  */
114
128
  get serializedDefaultValue(): any | undefined;
129
+ /**
130
+ * Gets deserialized null value.
131
+ *
132
+ * @returns {any|undefined} Resolved deserialized null value or undefined.
133
+ */
134
+ get deserializedNullValue(): any | undefined;
115
135
  /**
116
136
  * Gets deserialized default value.
117
137
  *
@@ -196,6 +216,12 @@ export declare class TypeMetadata<TType> extends Metadata {
196
216
  * @returns {Serializer<TType>} Serializer.
197
217
  */
198
218
  get serializer(): Serializer<TType>;
219
+ /**
220
+ * Gets indicator if null value should be preserved.
221
+ *
222
+ * @returns {boolean} True when null value should be preserved. False otherwise.
223
+ */
224
+ get preserveNull(): boolean;
199
225
  /**
200
226
  * Gets indicator if default value should be used.
201
227
  *
@@ -234,6 +260,68 @@ export declare class TypeMetadata<TType> extends Metadata {
234
260
  * @returns {TypeMetadata<TType>} Current instance of type metadata.
235
261
  */
236
262
  reflectInjectMetadata(): TypeMetadata<TType>;
263
+ /**
264
+ * Configures alias.
265
+ *
266
+ * @param {Alias} alias Alias.
267
+ *
268
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
269
+ */
270
+ configureAlias(alias: Alias): TypeMetadata<TType>;
271
+ /**
272
+ * Releases alias.
273
+ *
274
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
275
+ */
276
+ private releaseAlias;
277
+ /**
278
+ * Configures custom data.
279
+ *
280
+ * @param {CustomData} customData Custom data.
281
+ *
282
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
283
+ */
284
+ configureCustomData(customData: CustomData): TypeMetadata<TType>;
285
+ /**
286
+ * Configures default value.
287
+ *
288
+ * @param {DefaultValue} defaultValue Default value.
289
+ *
290
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
291
+ */
292
+ configureDefaultValue(defaultValue: DefaultValue): TypeMetadata<TType>;
293
+ /**
294
+ * Configures serialized default value.
295
+ *
296
+ * @param {DefaultValue} serializedDefaultValue Serialized default value.
297
+ *
298
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
299
+ */
300
+ configureSerializedDefaultValue(serializedDefaultValue: DefaultValue): TypeMetadata<TType>;
301
+ /**
302
+ * Configures deserialized default value.
303
+ *
304
+ * @param {DefaultValue} deserializedDefaultValue Deserialized default value.
305
+ *
306
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
307
+ */
308
+ configureDeserializedDefaultValue(deserializedDefaultValue: DefaultValue): TypeMetadata<TType>;
309
+ /**
310
+ * Configures discriminator.
311
+ *
312
+ * @param {Discriminator} discriminator Discriminator.
313
+ *
314
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
315
+ */
316
+ configureDiscriminator(discriminator: Discriminator): TypeMetadata<TType>;
317
+ /**
318
+ * Configures discriminant.
319
+ *
320
+ * @param {Discriminant} discriminant Discriminant.
321
+ *
322
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
323
+ */
324
+ configureDiscriminant(discriminant: Discriminant): TypeMetadata<TType>;
237
325
  /**
238
326
  * Provides discriminant.
239
327
  *
@@ -244,21 +332,101 @@ export declare class TypeMetadata<TType> extends Metadata {
244
332
  */
245
333
  private provideDiscriminant;
246
334
  /**
247
- * Configures discriminant.
335
+ * Configures factory.
248
336
  *
249
- * @param {Discriminant} discriminant Discriminant.
337
+ * @param {Factory} factory Factory.
250
338
  *
251
339
  * @returns {TypeMetadata<TType>} Current instance of type metadata.
252
340
  */
253
- private configureDiscriminant;
341
+ configureFactory(factory: Factory): TypeMetadata<TType>;
254
342
  /**
255
- * Configures custom data.
343
+ * Configures generic arguments.
256
344
  *
257
- * @param {CustomData} customData Custom data.
345
+ * @param {Array<GenericArgument<any>>|undefined} genericArguments Generic arguments.
346
+ *
347
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
348
+ */
349
+ configureGenericArguments(genericArguments: Array<GenericArgument<any>> | undefined): TypeMetadata<TType>;
350
+ /**
351
+ * Configures injectable.
352
+ *
353
+ * @param {boolean} injectable Injectable.
354
+ *
355
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
356
+ */
357
+ configureInjectable(injectable: boolean): TypeMetadata<TType>;
358
+ /**
359
+ * Configures injector.
360
+ *
361
+ * @param {Injector} injector Injector.
362
+ *
363
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
364
+ */
365
+ configureInjector(injector: Injector): TypeMetadata<TType>;
366
+ /**
367
+ * Configures log.
368
+ *
369
+ * @param {Log} log Log.
370
+ *
371
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
372
+ */
373
+ configureLog(log: Log): TypeMetadata<TType>;
374
+ /**
375
+ * Configures naming convention.
376
+ *
377
+ * @param {NamingConvention} namingConvention Naming convention.
378
+ *
379
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
380
+ */
381
+ configureNamingConvention(namingConvention: NamingConvention): TypeMetadata<TType>;
382
+ /**
383
+ * Configures preserve discriminator.
384
+ *
385
+ * @param {boolean} preserveDiscriminator Preserve discriminator.
386
+ *
387
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
388
+ */
389
+ configurePreserveDiscriminator(preserveDiscriminator: boolean): TypeMetadata<TType>;
390
+ /**
391
+ * Configures reference handler.
392
+ *
393
+ * @param {ReferenceHandler} referenceHandler Reference handler.
394
+ *
395
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
396
+ */
397
+ configureReferenceHandler(referenceHandler: ReferenceHandler): TypeMetadata<TType>;
398
+ /**
399
+ * Configures serializer.
400
+ *
401
+ * @param {Serializer<TType>} serializer Serializer.
402
+ *
403
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
404
+ */
405
+ configureSerializer(serializer: Serializer<TType>): TypeMetadata<TType>;
406
+ /**
407
+ * Configures preserve null.
408
+ *
409
+ * @param {boolean} preserveNull Preserve null.
410
+ *
411
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
412
+ */
413
+ configurePreserveNull(preserveNull: boolean): TypeMetadata<TType>;
414
+ /**
415
+ * Configures use default value.
416
+ *
417
+ * @param {boolean} useDefaultValue Use default value.
418
+ *
419
+ * @returns {TypeMetadata<TType>} Current instance of type metadata.
420
+ */
421
+ configureUseDefaultValue(useDefaultValue: boolean): TypeMetadata<TType>;
422
+ /**
423
+ * Configures use implicit convertion.
424
+ *
425
+ * @param {boolean} useImplicitConversion Use implicit convertion.
258
426
  *
259
427
  * @returns {TypeMetadata<TType>} Current instance of type metadata.
260
428
  */
261
- private configureCustomData;
429
+ configureUseImplicitConversion(useImplicitConversion: boolean): TypeMetadata<TType>;
262
430
  /**
263
431
  * Configures certain property metadata.
264
432
  *
File without changes
@@ -1,5 +1,4 @@
1
1
  import { CustomData } from './custom-data';
2
- import { DefaultValue } from './default-value';
3
2
  import { Discriminator } from './discriminator';
4
3
  import { Factory } from './factory';
5
4
  import { Injector } from './injector';
@@ -12,7 +11,7 @@ import { Serializer } from './serializer';
12
11
  *
13
12
  * @type {TypeOptionsBase<TType>}
14
13
  */
15
- export interface TypeOptionsBase<TType> {
14
+ export declare type TypeOptionsBase<TType> = {
16
15
  /**
17
16
  * Custom developer data.
18
17
  *
@@ -25,22 +24,6 @@ export interface TypeOptionsBase<TType> {
25
24
  * @type {Discriminator}
26
25
  */
27
26
  discriminator: Discriminator;
28
- /**
29
- * Serialized default value for undefined ones.
30
- *
31
- * Used only when use default value option is true.
32
- *
33
- * @type {DefaultValue}
34
- */
35
- serializedDefaultValue?: DefaultValue;
36
- /**
37
- * Deserialized default value for undefined ones.
38
- *
39
- * Used only when use default value option is true.
40
- *
41
- * @type {DefaultValue}
42
- */
43
- deserializedDefaultValue?: DefaultValue;
44
27
  /**
45
28
  * Factory used to build instances of type.
46
29
  *
@@ -84,6 +67,13 @@ export interface TypeOptionsBase<TType> {
84
67
  * @type {Serializer<TType>}
85
68
  */
86
69
  serializer: Serializer<TType>;
70
+ /**
71
+ * If set to true then null values are preserved. Otherwise they will be
72
+ * treated as undefined.
73
+ *
74
+ * @type {boolean}
75
+ */
76
+ preserveNull: boolean;
87
77
  /**
88
78
  * Use default value assignment for undefined values?
89
79
  *
@@ -97,4 +87,4 @@ export interface TypeOptionsBase<TType> {
97
87
  * @type {boolean}
98
88
  */
99
89
  useImplicitConversion: boolean;
100
- }
90
+ };
@@ -1,4 +1,5 @@
1
1
  import { Alias } from './alias';
2
+ import { DefaultValue } from './default-value';
2
3
  import { Discriminant } from './discriminant';
3
4
  import { GenericArgument } from './generic-argument';
4
5
  import { InjectIndex } from './inject-index';
@@ -11,7 +12,7 @@ import { TypeOptionsBase } from './type-options-base';
11
12
  *
12
13
  * @type {TypeOptions<TType>}
13
14
  */
14
- export interface TypeOptions<TType> extends Partial<TypeOptionsBase<TType>> {
15
+ export declare type TypeOptions<TType> = Partial<TypeOptionsBase<TType>> & {
15
16
  /**
16
17
  * Type alias.
17
18
  *
@@ -20,6 +21,31 @@ export interface TypeOptions<TType> extends Partial<TypeOptionsBase<TType>> {
20
21
  * @type {Alias}
21
22
  */
22
23
  alias?: Alias;
24
+ /**
25
+ * Default value for undefined ones.
26
+ *
27
+ * Used to set both serialized and deserialized default values and
28
+ * only when use default value option is true.
29
+ *
30
+ * @type {DefaultValue}
31
+ */
32
+ defaultValue?: DefaultValue;
33
+ /**
34
+ * Serialized default value for undefined ones.
35
+ *
36
+ * Used only when use default value option is true.
37
+ *
38
+ * @type {DefaultValue}
39
+ */
40
+ serializedDefaultValue?: DefaultValue;
41
+ /**
42
+ * Deserialized default value for undefined ones.
43
+ *
44
+ * Used only when use default value option is true.
45
+ *
46
+ * @type {DefaultValue}
47
+ */
48
+ deserializedDefaultValue?: DefaultValue;
23
49
  /**
24
50
  * Discriminant.
25
51
  *
@@ -50,4 +76,4 @@ export interface TypeOptions<TType> extends Partial<TypeOptionsBase<TType>> {
50
76
  * @type {Map<PropertyName, PropertyOptions<any>>}
51
77
  */
52
78
  propertyOptionsMap?: Map<PropertyName, PropertyOptions<any>>;
53
- }
79
+ };
File without changes
package/type.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { TypeOptions } from './core/type-options';
1
+ import { TypeOptions } from './type-options';
2
2
  /**
3
3
  * Type decorator.
4
4
  *
package/core/alias.d.ts DELETED
@@ -1,6 +0,0 @@
1
- /**
2
- * Type to explicitly define an alias within a source code.
3
- *
4
- * @type {Alias}
5
- */
6
- export declare type Alias = string;
@@ -1,6 +0,0 @@
1
- /**
2
- * Custom data which can be defined by developer.
3
- *
4
- * @type {CustomData}
5
- */
6
- export declare type CustomData = Record<string, any>;
@@ -1,7 +0,0 @@
1
- import { DefaultValueResolver } from './default-value-resolver';
2
- /**
3
- * Default value which can be defined by developer.
4
- *
5
- * @type {DefaultValue}
6
- */
7
- export declare type DefaultValue = any | DefaultValueResolver;
@@ -1,8 +0,0 @@
1
- import { TypeName } from './type-name';
2
- /**
3
- * Discriminant intends to describe a unique key for a polymorphic type which will be
4
- * used during serialization and deserialization. Can be a type name, any string or number.
5
- *
6
- * @type {Discriminant}
7
- */
8
- export declare type Discriminant = TypeName | string | number;
@@ -1,6 +0,0 @@
1
- /**
2
- * Discriminator intends to indicate the property used to identify the type of an object.
3
- *
4
- * @type {Discriminator}
5
- */
6
- export declare type Discriminator = string;
package/core/factory.d.ts DELETED
@@ -1,18 +0,0 @@
1
- import { Injector } from './injector';
2
- import { TypeContext } from './type-context';
3
- /**
4
- * Factory for building types.
5
- *
6
- * @type {Factory}
7
- */
8
- export interface Factory {
9
- /**
10
- * Builds type described by provided type context.
11
- *
12
- * @param {TypeContext<TType>} typeContext Type context.
13
- * @param {Injector} injector Injector.
14
- *
15
- * @returns {TType} Type instance described by provided type context.
16
- */
17
- build<TType>(typeContext: TypeContext<TType>, injector: Injector): TType;
18
- }