@dipscope/type-manager 4.1.0 → 5.0.0-beta.1
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/CHANGELOG.md +27 -0
- package/{LICENSE.txt → LICENSE.md} +0 -0
- package/README.md +150 -324
- package/alias.d.ts +3 -7
- package/custom-data.d.ts +3 -8
- package/{core/default-value-resolver.d.ts → default-value-resolver.d.ts} +0 -0
- package/default-value.d.ts +4 -8
- package/discriminant.d.ts +5 -8
- package/discriminator.d.ts +3 -8
- package/factories/type-factory.d.ts +3 -3
- package/factory.d.ts +15 -8
- package/functions/get-own-reflect-metadata.d.ts +9 -0
- package/functions/get-reflect-metadata.d.ts +10 -0
- package/functions/get-words.d.ts +8 -0
- package/functions/index.d.ts +16 -0
- package/functions/is-arrow-function.d.ts +8 -0
- package/functions/is-ctor-function.d.ts +8 -0
- package/functions/is-data-view.d.ts +8 -0
- package/functions/is-float-32-array.d.ts +8 -0
- package/functions/is-float-64-array.d.ts +8 -0
- package/functions/is-int-16-array.d.ts +8 -0
- package/functions/is-int-32-array.d.ts +8 -0
- package/functions/is-int-8-array.d.ts +8 -0
- package/functions/is-uint-16-array.d.ts +8 -0
- package/functions/is-uint-32-array.d.ts +8 -0
- package/functions/is-uint-8-array.d.ts +8 -0
- package/functions/is-uint-8-clamped-array.d.ts +8 -0
- package/functions/name-of.d.ts +8 -0
- package/{core/generic-argument.d.ts → generic-argument.d.ts} +0 -0
- package/{core/generic-metadata.d.ts → generic-metadata.d.ts} +0 -0
- package/index.d.ts +39 -9
- package/index.js +1 -2
- package/{core/inject-index.d.ts → inject-index.d.ts} +0 -0
- package/{core/inject-metadata.d.ts → inject-metadata.d.ts} +0 -0
- package/{core/inject-options.d.ts → inject-options.d.ts} +2 -2
- package/inject.d.ts +2 -2
- package/injector.d.ts +13 -8
- package/injectors/singleton-injector.d.ts +2 -2
- package/{core/log-level.d.ts → log-level.d.ts} +0 -0
- package/{core/log.d.ts → log.d.ts} +41 -11
- package/{core/metadata.d.ts → metadata.d.ts} +0 -0
- package/naming-convention.d.ts +12 -8
- package/naming-conventions/camel-case-naming-convention.d.ts +1 -1
- package/naming-conventions/flat-case-naming-convention.d.ts +1 -1
- package/naming-conventions/flat-upper-case-naming-convention.d.ts +1 -1
- package/naming-conventions/kebab-case-naming-convention.d.ts +1 -1
- package/naming-conventions/kebab-upper-case-naming-convention.d.ts +1 -1
- package/naming-conventions/pascal-case-naming-convention.d.ts +1 -1
- package/naming-conventions/snake-case-naming-convention.d.ts +1 -1
- package/naming-conventions/snake-upper-case-naming-convention.d.ts +1 -1
- package/package.json +6 -3
- package/{core/property-metadata.d.ts → property-metadata.d.ts} +18 -0
- package/{core/property-name.d.ts → property-name.d.ts} +0 -0
- package/{core/property-options.d.ts → property-options.d.ts} +18 -2
- package/property.d.ts +3 -2
- package/{core/reference-callback.d.ts → reference-callback.d.ts} +1 -1
- package/reference-handler.d.ts +28 -8
- package/reference-handlers/direct-reference-handler.d.ts +11 -12
- package/reference-handlers/lead-reference-handler.d.ts +11 -12
- package/reference-handlers/path-reference-handler.d.ts +11 -12
- package/{core/reference-key.d.ts → reference-key.d.ts} +0 -0
- package/reference-value-getter.d.ts +7 -0
- package/reference-value-setter.d.ts +7 -0
- package/{core/reference-value.d.ts → reference-value.d.ts} +0 -0
- package/serializer-context-options.d.ts +43 -0
- package/{core/serializer-context.d.ts → serializer-context.d.ts} +110 -44
- package/serializer.d.ts +24 -8
- package/serializers/array-buffer-serializer.d.ts +3 -3
- package/serializers/array-serializer.d.ts +3 -3
- package/serializers/boolean-serializer.d.ts +3 -3
- package/serializers/data-view-serializer.d.ts +3 -3
- package/serializers/date-serializer.d.ts +3 -3
- package/serializers/float-32-array-serializer.d.ts +3 -3
- package/serializers/float-64-array-serializer.d.ts +3 -3
- package/serializers/int-16-array-serializer.d.ts +3 -3
- package/serializers/int-32-array-serializer.d.ts +3 -3
- package/serializers/int-8-array-serializer.d.ts +3 -3
- package/serializers/map-serializer.d.ts +15 -3
- package/serializers/number-serializer.d.ts +3 -3
- package/serializers/set-serializer.d.ts +3 -3
- package/serializers/string-serializer.d.ts +3 -3
- package/serializers/type-serializer.d.ts +3 -3
- package/serializers/uint-16-array-serializer.d.ts +3 -3
- package/serializers/uint-32-array-serializer.d.ts +3 -3
- package/serializers/uint-8-array-serializer.d.ts +3 -3
- package/serializers/uint-8-clamped-array-serializer.d.ts +3 -3
- package/{core/type-abstraction.d.ts → type-abstraction.d.ts} +0 -0
- package/{core/type-argument.d.ts → type-argument.d.ts} +0 -0
- package/{core/type-context-entry.d.ts → type-context-entry.d.ts} +0 -0
- package/{core/type-context.d.ts → type-context.d.ts} +0 -0
- package/{core/type-ctor.d.ts → type-ctor.d.ts} +0 -0
- package/{core/type-fn.d.ts → type-fn.d.ts} +0 -0
- package/{core/type-like.d.ts → type-like.d.ts} +0 -0
- package/type-manager-options.d.ts +5 -5
- package/type-manager.d.ts +10 -10
- package/{core/type-metadata-resolver.d.ts → type-metadata-resolver.d.ts} +0 -0
- package/{core/type-metadata-symbol.d.ts → type-metadata-symbol.d.ts} +0 -0
- package/{core/type-metadata.d.ts → type-metadata.d.ts} +24 -6
- package/{core/type-name.d.ts → type-name.d.ts} +0 -0
- package/{core/type-options-base.d.ts → type-options-base.d.ts} +9 -19
- package/{core/type-options.d.ts → type-options.d.ts} +28 -2
- package/{core/type-resolver.d.ts → type-resolver.d.ts} +0 -0
- package/type.d.ts +1 -1
- package/core/alias.d.ts +0 -6
- package/core/custom-data.d.ts +0 -6
- package/core/default-value.d.ts +0 -7
- package/core/discriminant.d.ts +0 -8
- package/core/discriminator.d.ts +0 -6
- package/core/factory.d.ts +0 -18
- package/core/fn.d.ts +0 -316
- package/core/index.d.ts +0 -44
- package/core/index.js +0 -2
- package/core/injector.d.ts +0 -16
- package/core/naming-convention.d.ts +0 -15
- package/core/reference-handler.d.ts +0 -32
- package/core/reference-value-initializer.d.ts +0 -8
- package/core/reference-value-resolver.d.ts +0 -8
- package/core/serializer-context-options.d.ts +0 -63
- package/core/serializer.d.ts +0 -27
- package/deserializable.d.ts +0 -11
- package/deserialized-default-value.d.ts +0 -11
- package/factories/index.js +0 -2
- package/injectable.d.ts +0 -10
- package/injectors/index.js +0 -2
- package/naming-conventions/index.js +0 -2
- package/preserve-discriminator.d.ts +0 -10
- package/reference-handlers/index.js +0 -2
- package/serializable.d.ts +0 -11
- package/serialized-default-value.d.ts +0 -11
- package/serializers/index.js +0 -2
- package/type-and-property.d.ts +0 -12
- package/use-default-value.d.ts +0 -10
- package/use-implicit-conversion.d.ts +0 -10
|
File without changes
|
|
File without changes
|
|
@@ -4,7 +4,7 @@ import { TypeFn } from './type-fn';
|
|
|
4
4
|
*
|
|
5
5
|
* @type {InjectOptions<TType>}
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
7
|
+
export declare type InjectOptions<TType> = {
|
|
8
8
|
/**
|
|
9
9
|
* Parameter key to inject within a type context. If specified then
|
|
10
10
|
* type function will be ignored.
|
|
@@ -19,4 +19,4 @@ export interface InjectOptions<TType> {
|
|
|
19
19
|
* @type {TypeFn<TType>}
|
|
20
20
|
*/
|
|
21
21
|
typeFn?: TypeFn<TType>;
|
|
22
|
-
}
|
|
22
|
+
};
|
package/inject.d.ts
CHANGED
package/injector.d.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TypeMetadata } from './type-metadata';
|
|
2
2
|
/**
|
|
3
|
-
* Injector
|
|
3
|
+
* Injector used to resolve dependent types.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* @param {Injector} injector Injector.
|
|
8
|
-
*
|
|
9
|
-
* @returns {ClassDecorator} Class decorator.
|
|
5
|
+
* @type {Injector}
|
|
10
6
|
*/
|
|
11
|
-
export
|
|
7
|
+
export interface Injector {
|
|
8
|
+
/**
|
|
9
|
+
* Method to get instance described by type metadata.
|
|
10
|
+
*
|
|
11
|
+
* @param {TypeMetadata<TType>} typeMetadata Type metadata.
|
|
12
|
+
*
|
|
13
|
+
* @returns {TType|undefined} Instance of type described by type metadata or undefined.
|
|
14
|
+
*/
|
|
15
|
+
get<TType>(typeMetadata: TypeMetadata<TType>): TType | undefined;
|
|
16
|
+
}
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LogLevel } from './log-level';
|
|
2
2
|
/**
|
|
3
|
-
* Main logger class.
|
|
3
|
+
* Main logger class used by serializers for displaying messages.
|
|
4
4
|
*
|
|
5
5
|
* @type {Log}
|
|
6
6
|
*/
|
|
@@ -10,31 +10,61 @@ export declare class Log {
|
|
|
10
10
|
*
|
|
11
11
|
* @type {LogLevel}
|
|
12
12
|
*/
|
|
13
|
-
logLevel: LogLevel;
|
|
13
|
+
readonly logLevel: LogLevel;
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Info enabled?
|
|
16
16
|
*
|
|
17
|
-
* @
|
|
17
|
+
* @type {boolean}
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
readonly infoEnabled: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Warn enabled?
|
|
22
|
+
*
|
|
23
|
+
* @type {boolean}
|
|
24
|
+
*/
|
|
25
|
+
readonly warnEnabled: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Error enabled?
|
|
28
|
+
*
|
|
29
|
+
* @type {boolean}
|
|
30
|
+
*/
|
|
31
|
+
readonly errorEnabled: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Supports console?
|
|
34
|
+
*
|
|
35
|
+
* @type {boolean}
|
|
36
|
+
*/
|
|
37
|
+
readonly supportsConsole: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Supports console log?
|
|
40
|
+
*
|
|
41
|
+
* @type {boolean}
|
|
42
|
+
*/
|
|
43
|
+
readonly supportsConsoleLog: boolean;
|
|
20
44
|
/**
|
|
21
|
-
*
|
|
45
|
+
* Supports console info?
|
|
22
46
|
*
|
|
23
47
|
* @type {boolean}
|
|
24
48
|
*/
|
|
25
|
-
|
|
49
|
+
readonly supportsConsoleInfo: boolean;
|
|
26
50
|
/**
|
|
27
|
-
*
|
|
51
|
+
* Supports console warn?
|
|
28
52
|
*
|
|
29
53
|
* @type {boolean}
|
|
30
54
|
*/
|
|
31
|
-
|
|
55
|
+
readonly supportsConsoleWarn: boolean;
|
|
32
56
|
/**
|
|
33
|
-
*
|
|
57
|
+
* Supports console error?
|
|
34
58
|
*
|
|
35
59
|
* @type {boolean}
|
|
36
60
|
*/
|
|
37
|
-
|
|
61
|
+
readonly supportsConsoleError: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Constructor.
|
|
64
|
+
*
|
|
65
|
+
* @param {LogLevel} logLevel Log level.
|
|
66
|
+
*/
|
|
67
|
+
constructor(logLevel: LogLevel);
|
|
38
68
|
/**
|
|
39
69
|
* Displays info message.
|
|
40
70
|
*
|
|
File without changes
|
package/naming-convention.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { NamingConvention } from './core/naming-convention';
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
2
|
+
* Represents naming convention.
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* @param {NamingConvention} namingConvention Naming convention.
|
|
8
|
-
*
|
|
9
|
-
* @returns {ClassDecorator&PropertyDecorator} Class and property decorator.
|
|
4
|
+
* @type {NamingConvention}
|
|
10
5
|
*/
|
|
11
|
-
export
|
|
6
|
+
export interface NamingConvention {
|
|
7
|
+
/**
|
|
8
|
+
* Converts name from provided to target one.
|
|
9
|
+
*
|
|
10
|
+
* @param {string} name Name.
|
|
11
|
+
*
|
|
12
|
+
* @returns {string} Converted name.
|
|
13
|
+
*/
|
|
14
|
+
convert(name: string): string;
|
|
15
|
+
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"author": "DipScope authors and contributors",
|
|
3
|
-
"dependencies": {
|
|
3
|
+
"dependencies": {
|
|
4
|
+
"lodash": "^4.17.21"
|
|
5
|
+
},
|
|
4
6
|
"description": "A package which will help you to transform your JSON strings or plain objects into JS object instances.",
|
|
5
7
|
"devDependencies": {
|
|
8
|
+
"@types/lodash": "^4.14.182",
|
|
6
9
|
"@types/jasmine": "^3.6.3",
|
|
7
10
|
"@typescript-eslint/eslint-plugin": "^4.14.2",
|
|
8
11
|
"@typescript-eslint/parser": "^4.14.2",
|
|
@@ -39,10 +42,10 @@
|
|
|
39
42
|
"scripts": {
|
|
40
43
|
"build": "npm run clean && npx webpack --config=webpack.config.js && npm run copy",
|
|
41
44
|
"clean": "shx rm -rf dist",
|
|
42
|
-
"copy": "shx cp CHANGELOG.md dist && shx cp LICENSE.
|
|
45
|
+
"copy": "shx cp CHANGELOG.md dist && shx cp LICENSE.md dist && shx cp package.json dist && shx cp README.md dist",
|
|
43
46
|
"test": "jasmine-ts --config=jasmine.json",
|
|
44
47
|
"lint": "eslint . --ext .ts"
|
|
45
48
|
},
|
|
46
49
|
"types": "index.d.ts",
|
|
47
|
-
"version": "
|
|
50
|
+
"version": "5.0.0-beta.1"
|
|
48
51
|
}
|
|
@@ -63,12 +63,24 @@ export declare class PropertyMetadata<TDeclaringType, TType> extends Metadata {
|
|
|
63
63
|
* @returns {CustomData} Custom data.
|
|
64
64
|
*/
|
|
65
65
|
get customData(): CustomData;
|
|
66
|
+
/**
|
|
67
|
+
* Gets serialized null value.
|
|
68
|
+
*
|
|
69
|
+
* @returns {any|undefined} Resolved serialized null value or undefined.
|
|
70
|
+
*/
|
|
71
|
+
get serializedNullValue(): any | undefined;
|
|
66
72
|
/**
|
|
67
73
|
* Gets serialized default value.
|
|
68
74
|
*
|
|
69
75
|
* @returns {any|undefined} Resolved serialized default value or undefined.
|
|
70
76
|
*/
|
|
71
77
|
get serializedDefaultValue(): any | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* Gets deserialized null value.
|
|
80
|
+
*
|
|
81
|
+
* @returns {any|undefined} Resolved deserialized null value or undefined.
|
|
82
|
+
*/
|
|
83
|
+
get deserializedNullValue(): any | undefined;
|
|
72
84
|
/**
|
|
73
85
|
* Gets deserialized default value.
|
|
74
86
|
*
|
|
@@ -147,6 +159,12 @@ export declare class PropertyMetadata<TDeclaringType, TType> extends Metadata {
|
|
|
147
159
|
* @returns {TypeMetadata<TType>} Type metadata.
|
|
148
160
|
*/
|
|
149
161
|
get typeMetadata(): TypeMetadata<TType>;
|
|
162
|
+
/**
|
|
163
|
+
* Gets indicator if null value should be preserved.
|
|
164
|
+
*
|
|
165
|
+
* @returns {boolean} True when null value should be preserved. False otherwise.
|
|
166
|
+
*/
|
|
167
|
+
get preserveNull(): boolean;
|
|
150
168
|
/**
|
|
151
169
|
* Gets indicator if default value should be used.
|
|
152
170
|
*
|
|
File without changes
|
|
@@ -11,7 +11,7 @@ import { TypeArgument } from './type-argument';
|
|
|
11
11
|
*
|
|
12
12
|
* @type {PropertyOptions<TType>}
|
|
13
13
|
*/
|
|
14
|
-
export
|
|
14
|
+
export declare type PropertyOptions<TType> = {
|
|
15
15
|
/**
|
|
16
16
|
* Property alias.
|
|
17
17
|
*
|
|
@@ -26,6 +26,15 @@ export interface PropertyOptions<TType> {
|
|
|
26
26
|
* @type {CustomData}
|
|
27
27
|
*/
|
|
28
28
|
customData?: CustomData;
|
|
29
|
+
/**
|
|
30
|
+
* Default value for undefined ones.
|
|
31
|
+
*
|
|
32
|
+
* Used to set both serialized and deserialized default values and
|
|
33
|
+
* only when use default value option is true.
|
|
34
|
+
*
|
|
35
|
+
* @type {DefaultValue}
|
|
36
|
+
*/
|
|
37
|
+
defaultValue?: DefaultValue;
|
|
29
38
|
/**
|
|
30
39
|
* Serialized default value for undefined ones.
|
|
31
40
|
*
|
|
@@ -84,6 +93,13 @@ export interface PropertyOptions<TType> {
|
|
|
84
93
|
* @type {TypeArgument<TType>}
|
|
85
94
|
*/
|
|
86
95
|
typeArgument?: TypeArgument<TType>;
|
|
96
|
+
/**
|
|
97
|
+
* If set to true then null values are preserved. Otherwise they will be
|
|
98
|
+
* treated as undefined.
|
|
99
|
+
*
|
|
100
|
+
* @type {boolean}
|
|
101
|
+
*/
|
|
102
|
+
preserveNull?: boolean;
|
|
87
103
|
/**
|
|
88
104
|
* Use default value assignment for undefined values?
|
|
89
105
|
*
|
|
@@ -97,4 +113,4 @@ export interface PropertyOptions<TType> {
|
|
|
97
113
|
* @type {boolean}
|
|
98
114
|
*/
|
|
99
115
|
useImplicitConversion?: boolean;
|
|
100
|
-
}
|
|
116
|
+
};
|
package/property.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { GenericArgument
|
|
2
|
-
import { PropertyOptions } from './
|
|
1
|
+
import { GenericArgument } from './generic-argument';
|
|
2
|
+
import { PropertyOptions } from './property-options';
|
|
3
|
+
import { TypeArgument } from './type-argument';
|
|
3
4
|
/**
|
|
4
5
|
* Property decorator.
|
|
5
6
|
*
|
package/reference-handler.d.ts
CHANGED
|
@@ -1,11 +1,31 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ReferenceKey } from './reference-key';
|
|
2
|
+
import { ReferenceValue } from './reference-value';
|
|
3
|
+
import { ReferenceValueGetter } from './reference-value-getter';
|
|
4
|
+
import { SerializerContext } from './serializer-context';
|
|
2
5
|
/**
|
|
3
|
-
* Reference handler
|
|
6
|
+
* Reference handler to resolve object references.
|
|
4
7
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* @param {ReferenceHandler} referenceHandler Reference handler.
|
|
8
|
-
*
|
|
9
|
-
* @returns {ClassDecorator&PropertyDecorator} Class and property decorator.
|
|
8
|
+
* @type {ReferenceHandler}
|
|
10
9
|
*/
|
|
11
|
-
export
|
|
10
|
+
export interface ReferenceHandler {
|
|
11
|
+
/**
|
|
12
|
+
* Defines reference. Called during serialization.
|
|
13
|
+
*
|
|
14
|
+
* @param {SerializerContext<any>} serializerContext Serializer context.
|
|
15
|
+
* @param {ReferenceKey} referenceKey Reference which acts as a key. This is basically a serializing object.
|
|
16
|
+
* @param {ReferenceValueGetter} referenceValueGetter Function to get a reference value when one is not yet present for a key.
|
|
17
|
+
*
|
|
18
|
+
* @returns {ReferenceValue} Resolved reference value.
|
|
19
|
+
*/
|
|
20
|
+
define(serializerContext: SerializerContext<any>, referenceKey: ReferenceKey, referenceValueGetter: ReferenceValueGetter): ReferenceValue;
|
|
21
|
+
/**
|
|
22
|
+
* Restores reference. Called during deserialization.
|
|
23
|
+
*
|
|
24
|
+
* @param {SerializerContext<any>} serializerContext Serializer context.
|
|
25
|
+
* @param {ReferenceKey} referenceKey Reference which acts as a key. This is basically a deserializing object.
|
|
26
|
+
* @param {ReferenceValueGetter} referenceValueGetter Function to get a reference value when one is not yet present for a key.
|
|
27
|
+
*
|
|
28
|
+
* @returns {ReferenceValue} Resolved reference value.
|
|
29
|
+
*/
|
|
30
|
+
restore(serializerContext: SerializerContext<any>, referenceKey: ReferenceKey, referenceValueGetter: ReferenceValueGetter): ReferenceValue;
|
|
31
|
+
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { ReferenceHandler } from '../
|
|
2
|
-
import { ReferenceKey } from '../
|
|
3
|
-
import { ReferenceValue } from '../
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { SerializerContext } from '../core/serializer-context';
|
|
1
|
+
import { ReferenceHandler } from '../reference-handler';
|
|
2
|
+
import { ReferenceKey } from '../reference-key';
|
|
3
|
+
import { ReferenceValue } from '../reference-value';
|
|
4
|
+
import { ReferenceValueGetter } from '../reference-value-getter';
|
|
5
|
+
import { SerializerContext } from '../serializer-context';
|
|
7
6
|
/**
|
|
8
7
|
* Direct reference handler which preserves references as is.
|
|
9
8
|
*
|
|
@@ -15,19 +14,19 @@ export declare class DirectReferenceHandler implements ReferenceHandler {
|
|
|
15
14
|
*
|
|
16
15
|
* @param {SerializerContext<any>} serializerContext Serializer context.
|
|
17
16
|
* @param {ReferenceKey} referenceKey Reference which acts as a key. This is basically a serializing object.
|
|
18
|
-
* @param {
|
|
17
|
+
* @param {ReferenceValueGetter} referenceValueGetter Function to get a reference value when one is not yet present for a key.
|
|
19
18
|
*
|
|
20
|
-
* @returns {ReferenceValue
|
|
19
|
+
* @returns {ReferenceValue} Resolved reference value.
|
|
21
20
|
*/
|
|
22
|
-
define(serializerContext: SerializerContext<any>, referenceKey: ReferenceKey,
|
|
21
|
+
define(serializerContext: SerializerContext<any>, referenceKey: ReferenceKey, referenceValueGetter: ReferenceValueGetter): ReferenceValue;
|
|
23
22
|
/**
|
|
24
23
|
* Restores reference. Called during deserialization.
|
|
25
24
|
*
|
|
26
25
|
* @param {SerializerContext<any>} serializerContext Serializer context.
|
|
27
26
|
* @param {ReferenceKey} referenceKey Reference which acts as a key. This is basically a deserializing object.
|
|
28
|
-
* @param {
|
|
27
|
+
* @param {ReferenceValueGetter} referenceValueGetter Function to get a reference value when one is not yet present for a key.
|
|
29
28
|
*
|
|
30
|
-
* @returns {ReferenceValue
|
|
29
|
+
* @returns {ReferenceValue} Resolved reference value.
|
|
31
30
|
*/
|
|
32
|
-
restore(serializerContext: SerializerContext<any>, referenceKey: ReferenceKey,
|
|
31
|
+
restore(serializerContext: SerializerContext<any>, referenceKey: ReferenceKey, referenceValueGetter: ReferenceValueGetter): ReferenceValue;
|
|
33
32
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { ReferenceHandler } from '../
|
|
2
|
-
import { ReferenceKey } from '../
|
|
3
|
-
import { ReferenceValue } from '../
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { SerializerContext } from '../core/serializer-context';
|
|
1
|
+
import { ReferenceHandler } from '../reference-handler';
|
|
2
|
+
import { ReferenceKey } from '../reference-key';
|
|
3
|
+
import { ReferenceValue } from '../reference-value';
|
|
4
|
+
import { ReferenceValueGetter } from '../reference-value-getter';
|
|
5
|
+
import { SerializerContext } from '../serializer-context';
|
|
7
6
|
/**
|
|
8
7
|
* Lead reference handler preserves references except circular. If circular reference is detected the it will
|
|
9
8
|
* be setted to undefined so only first occurance is handled.
|
|
@@ -16,19 +15,19 @@ export declare class LeadReferenceHandler implements ReferenceHandler {
|
|
|
16
15
|
*
|
|
17
16
|
* @param {SerializerContext<any>} serializerContext Serializer context.
|
|
18
17
|
* @param {ReferenceKey} referenceKey Reference which acts as a key. This is basically a serializing object.
|
|
19
|
-
* @param {
|
|
18
|
+
* @param {ReferenceValueGetter} referenceValueGetter Function to get a reference value when one is not yet present for a key.
|
|
20
19
|
*
|
|
21
|
-
* @returns {ReferenceValue
|
|
20
|
+
* @returns {ReferenceValue} Resolved reference value.
|
|
22
21
|
*/
|
|
23
|
-
define(serializerContext: SerializerContext<any>, referenceKey: ReferenceKey,
|
|
22
|
+
define(serializerContext: SerializerContext<any>, referenceKey: ReferenceKey, referenceValueGetter: ReferenceValueGetter): ReferenceValue;
|
|
24
23
|
/**
|
|
25
24
|
* Restores reference. Called during deserialization.
|
|
26
25
|
*
|
|
27
26
|
* @param {SerializerContext<any>} serializerContext Serializer context.
|
|
28
27
|
* @param {ReferenceKey} referenceKey Reference which acts as a key. This is basically a deserializing object.
|
|
29
|
-
* @param {
|
|
28
|
+
* @param {ReferenceValueGetter} referenceValueGetter Function to get a reference value when one is not yet present for a key.
|
|
30
29
|
*
|
|
31
|
-
* @returns {ReferenceValue
|
|
30
|
+
* @returns {ReferenceValue} Resolved reference value.
|
|
32
31
|
*/
|
|
33
|
-
restore(serializerContext: SerializerContext<any>, referenceKey: ReferenceKey,
|
|
32
|
+
restore(serializerContext: SerializerContext<any>, referenceKey: ReferenceKey, referenceValueGetter: ReferenceValueGetter): ReferenceValue;
|
|
34
33
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { ReferenceHandler } from '../
|
|
2
|
-
import { ReferenceKey } from '../
|
|
3
|
-
import { ReferenceValue } from '../
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { SerializerContext } from '../core/serializer-context';
|
|
1
|
+
import { ReferenceHandler } from '../reference-handler';
|
|
2
|
+
import { ReferenceKey } from '../reference-key';
|
|
3
|
+
import { ReferenceValue } from '../reference-value';
|
|
4
|
+
import { ReferenceValueGetter } from '../reference-value-getter';
|
|
5
|
+
import { SerializerContext } from '../serializer-context';
|
|
7
6
|
/**
|
|
8
7
|
* Path reference handler preserves references using JSONPath.
|
|
9
8
|
*
|
|
@@ -21,21 +20,21 @@ export declare class PathReferenceHandler implements ReferenceHandler {
|
|
|
21
20
|
*
|
|
22
21
|
* @param {SerializerContext<any>} serializerContext Serializer context.
|
|
23
22
|
* @param {ReferenceKey} referenceKey Reference which acts as a key. This is basically a serializing object.
|
|
24
|
-
* @param {
|
|
23
|
+
* @param {ReferenceValueGetter} referenceValueGetter Function to get a reference value when one is not yet present for a key.
|
|
25
24
|
*
|
|
26
|
-
* @returns {ReferenceValue
|
|
25
|
+
* @returns {ReferenceValue} Resolved reference value.
|
|
27
26
|
*/
|
|
28
|
-
define(serializerContext: SerializerContext<any>, referenceKey: ReferenceKey,
|
|
27
|
+
define(serializerContext: SerializerContext<any>, referenceKey: ReferenceKey, referenceValueGetter: ReferenceValueGetter): ReferenceValue;
|
|
29
28
|
/**
|
|
30
29
|
* Restores reference. Called during deserialization.
|
|
31
30
|
*
|
|
32
31
|
* @param {SerializerContext<any>} serializerContext Serializer context.
|
|
33
32
|
* @param {ReferenceKey} referenceKey Reference which acts as a key. This is basically a deserializing object.
|
|
34
|
-
* @param {
|
|
33
|
+
* @param {ReferenceValueGetter} referenceValueGetter Function to get a reference value when one is not yet present for a key.
|
|
35
34
|
*
|
|
36
|
-
* @returns {ReferenceValue
|
|
35
|
+
* @returns {ReferenceValue} Resolved reference value.
|
|
37
36
|
*/
|
|
38
|
-
restore(serializerContext: SerializerContext<any>, referenceKey: ReferenceKey,
|
|
37
|
+
restore(serializerContext: SerializerContext<any>, referenceKey: ReferenceKey, referenceValueGetter: ReferenceValueGetter): ReferenceValue;
|
|
39
38
|
/**
|
|
40
39
|
* Defines reference target based on reference key.
|
|
41
40
|
*
|
|
File without changes
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ReferenceValue } from './reference-value';
|
|
2
|
+
/**
|
|
3
|
+
* Callback to set a reference value when one may be resolved for a reference key.
|
|
4
|
+
*
|
|
5
|
+
* @type {ReferenceValueSetter}
|
|
6
|
+
*/
|
|
7
|
+
export declare type ReferenceValueSetter = (referenceValue: ReferenceValue) => void;
|
|
File without changes
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { GenericArgument } from './generic-argument';
|
|
2
|
+
import { PropertyMetadata } from './property-metadata';
|
|
3
|
+
import { ReferenceValueSetter } from './reference-value-setter';
|
|
4
|
+
import { TypeMetadata } from './type-metadata';
|
|
5
|
+
/**
|
|
6
|
+
* Serializer context options.
|
|
7
|
+
*
|
|
8
|
+
* @type {SerializerContextOptions<TType>}
|
|
9
|
+
*/
|
|
10
|
+
export declare type SerializerContextOptions<TType> = {
|
|
11
|
+
/**
|
|
12
|
+
* Json path key of current serializer context. It equals to $ for
|
|
13
|
+
* root serializer context. Read about JSONPath for more info.
|
|
14
|
+
*
|
|
15
|
+
* @type {string|number}
|
|
16
|
+
*/
|
|
17
|
+
jsonPathKey: string | number;
|
|
18
|
+
/**
|
|
19
|
+
* Reference value setter if serialization may result in circular dependency
|
|
20
|
+
* which must be resolved.
|
|
21
|
+
*
|
|
22
|
+
* @type {ReferenceValueSetter}
|
|
23
|
+
*/
|
|
24
|
+
referenceValueSetter?: ReferenceValueSetter;
|
|
25
|
+
/**
|
|
26
|
+
* Generic arguments.
|
|
27
|
+
*
|
|
28
|
+
* @type {Array<GenericArgument<any>>}
|
|
29
|
+
*/
|
|
30
|
+
genericArguments?: Array<GenericArgument<any>>;
|
|
31
|
+
/**
|
|
32
|
+
* Property metadata.
|
|
33
|
+
*
|
|
34
|
+
* @type {PropertyMetadata<any, TType>}
|
|
35
|
+
*/
|
|
36
|
+
propertyMetadata?: PropertyMetadata<any, TType>;
|
|
37
|
+
/**
|
|
38
|
+
* Type metadata.
|
|
39
|
+
*
|
|
40
|
+
* @type {TypeMetadata<TType>}
|
|
41
|
+
*/
|
|
42
|
+
typeMetadata: TypeMetadata<TType>;
|
|
43
|
+
};
|