@tsed/json-mapper 7.35.0-beta.2 → 7.35.0-beta.4

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 (75) hide show
  1. package/jest.config.js +3 -3
  2. package/lib/browser/json-mapper.umd.min.js +1 -1
  3. package/lib/browser/json-mapper.umd.min.js.map +1 -1
  4. package/lib/cjs/components/DateMapper.js.map +1 -1
  5. package/lib/cjs/components/PrimitiveMapper.js +30 -26
  6. package/lib/cjs/components/PrimitiveMapper.js.map +1 -1
  7. package/lib/cjs/components/SymbolMapper.js.map +1 -1
  8. package/lib/cjs/domain/JsonDeserializer.js +275 -0
  9. package/lib/cjs/domain/JsonDeserializer.js.map +1 -0
  10. package/lib/cjs/domain/JsonDeserializerOptions.js +3 -0
  11. package/lib/cjs/domain/JsonDeserializerOptions.js.map +1 -0
  12. package/lib/cjs/domain/JsonMapperCompiler.js +11 -2
  13. package/lib/cjs/domain/JsonMapperCompiler.js.map +1 -1
  14. package/lib/cjs/domain/JsonSerializer.js +16 -15
  15. package/lib/cjs/domain/JsonSerializer.js.map +1 -1
  16. package/lib/cjs/domain/Writer.js +30 -0
  17. package/lib/cjs/domain/Writer.js.map +1 -1
  18. package/lib/cjs/hooks/alterOnDeserialize.js +8 -0
  19. package/lib/cjs/hooks/alterOnDeserialize.js.map +1 -0
  20. package/lib/cjs/index.js +3 -4
  21. package/lib/cjs/index.js.map +1 -1
  22. package/lib/cjs/utils/deserialize.js +5 -202
  23. package/lib/cjs/utils/deserialize.js.map +1 -1
  24. package/lib/esm/components/DateMapper.js.map +1 -1
  25. package/lib/esm/components/PrimitiveMapper.js +30 -26
  26. package/lib/esm/components/PrimitiveMapper.js.map +1 -1
  27. package/lib/esm/components/SymbolMapper.js.map +1 -1
  28. package/lib/esm/domain/JsonDeserializer.js +271 -0
  29. package/lib/esm/domain/JsonDeserializer.js.map +1 -0
  30. package/lib/esm/domain/JsonDeserializerOptions.js +2 -0
  31. package/lib/esm/domain/JsonDeserializerOptions.js.map +1 -0
  32. package/lib/esm/domain/JsonMapperCompiler.js +11 -2
  33. package/lib/esm/domain/JsonMapperCompiler.js.map +1 -1
  34. package/lib/esm/domain/JsonSerializer.js +16 -15
  35. package/lib/esm/domain/JsonSerializer.js.map +1 -1
  36. package/lib/esm/domain/Writer.js +31 -2
  37. package/lib/esm/domain/Writer.js.map +1 -1
  38. package/lib/esm/hooks/alterOnDeserialize.js +4 -0
  39. package/lib/esm/hooks/alterOnDeserialize.js.map +1 -0
  40. package/lib/esm/index.js +3 -4
  41. package/lib/esm/index.js.map +1 -1
  42. package/lib/esm/utils/deserialize.js +4 -200
  43. package/lib/esm/utils/deserialize.js.map +1 -1
  44. package/lib/tsconfig.esm.tsbuildinfo +1 -1
  45. package/lib/tsconfig.tsbuildinfo +1 -1
  46. package/lib/types/components/PrimitiveMapper.d.ts +4 -0
  47. package/lib/types/domain/JsonDeserializer.d.ts +33 -0
  48. package/lib/types/domain/JsonDeserializerOptions.d.ts +31 -0
  49. package/lib/types/domain/JsonMapperCompiler.d.ts +7 -1
  50. package/lib/types/domain/JsonSerializer.d.ts +1 -0
  51. package/lib/types/domain/Writer.d.ts +9 -0
  52. package/lib/types/hooks/alterOnDeserialize.d.ts +2 -0
  53. package/lib/types/index.d.ts +3 -4
  54. package/lib/types/utils/deserialize.d.ts +2 -47
  55. package/package.json +7 -7
  56. package/lib/cjs/components/ArrayMapper.js +0 -23
  57. package/lib/cjs/components/ArrayMapper.js.map +0 -1
  58. package/lib/cjs/components/MapMapper.js +0 -30
  59. package/lib/cjs/components/MapMapper.js.map +0 -1
  60. package/lib/cjs/components/SetMapper.js +0 -30
  61. package/lib/cjs/components/SetMapper.js.map +0 -1
  62. package/lib/cjs/domain/JsonMapperContext.js +0 -27
  63. package/lib/cjs/domain/JsonMapperContext.js.map +0 -1
  64. package/lib/esm/components/ArrayMapper.js +0 -20
  65. package/lib/esm/components/ArrayMapper.js.map +0 -1
  66. package/lib/esm/components/MapMapper.js +0 -27
  67. package/lib/esm/components/MapMapper.js.map +0 -1
  68. package/lib/esm/components/SetMapper.js +0 -27
  69. package/lib/esm/components/SetMapper.js.map +0 -1
  70. package/lib/esm/domain/JsonMapperContext.js +0 -23
  71. package/lib/esm/domain/JsonMapperContext.js.map +0 -1
  72. package/lib/types/components/ArrayMapper.d.ts +0 -10
  73. package/lib/types/components/MapMapper.d.ts +0 -12
  74. package/lib/types/components/SetMapper.d.ts +0 -10
  75. package/lib/types/domain/JsonMapperContext.d.ts +0 -20
@@ -1,210 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deserialize = exports.plainObjectToClass = void 0;
4
- const core_1 = require("@tsed/core");
5
- const schema_1 = require("@tsed/schema");
6
- require("../components/ArrayMapper");
3
+ exports.deserialize = void 0;
7
4
  require("../components/DateMapper");
8
- require("../components/MapMapper");
9
5
  require("../components/PrimitiveMapper");
10
- require("../components/SetMapper");
11
6
  require("../components/SymbolMapper");
12
- const JsonMapperContext_1 = require("../domain/JsonMapperContext");
13
- const JsonMapperSettings_1 = require("../domain/JsonMapperSettings");
14
- const JsonMapperTypesContainer_1 = require("../domain/JsonMapperTypesContainer");
15
- const alterAfterDeserialize_1 = require("../hooks/alterAfterDeserialize");
16
- const alterBeforeDeserialize_1 = require("../hooks/alterBeforeDeserialize");
17
- function isDeserializable(obj, options) {
18
- if ((!!options.collectionType && (0, core_1.isNil)(obj)) || obj === undefined) {
19
- return false;
20
- }
21
- return !((0, core_1.isEmpty)(options.type) || (options.type === Object && !options.collectionType));
22
- }
23
- function alterValue(schema, value, options) {
24
- return schema.$hooks.alter("onDeserialize", value, [options]);
25
- }
26
- function transformCollection(src, options) {
27
- const { types, type = Object, collectionType } = options;
28
- const context = new JsonMapperContext_1.JsonMapperContext({
29
- type,
30
- collectionType,
31
- options,
32
- next: (data, { collectionType, ...options }) => deserialize(data, options)
33
- });
34
- return types?.get(options.collectionType)?.deserialize(src, context);
35
- }
36
- function transformType(src, options) {
37
- const { types, type = Object } = options;
38
- const context = new JsonMapperContext_1.JsonMapperContext({
39
- type,
40
- options,
41
- next: (data, { type, ...options }) => deserialize(data, options)
42
- });
43
- return types?.get(type)?.deserialize(src, context);
44
- }
45
- function getAdditionalProperties(nbProps, store, options) {
46
- const additionalProperties = store.schema.get("additionalProperties");
47
- if ((0, core_1.isBoolean)(additionalProperties) || (0, core_1.isClass)(additionalProperties)) {
48
- return additionalProperties;
49
- }
50
- return nbProps === 0 || !!options.additionalProperties;
51
- }
52
- /**
53
- * Transform given plain object to class.
54
- * @param src
55
- * @param options
56
- */
57
- function plainObjectToClass(src, options) {
58
- if ((0, core_1.isEmpty)(src)) {
59
- return src;
60
- }
61
- const { type, store = schema_1.JsonEntityStore.from(type) } = options;
62
- const propertiesMap = (0, schema_1.getProperties)(store, { ...options, withIgnoredProps: true });
63
- let keys = new Set((0, core_1.objectKeys)(src));
64
- const additionalProperties = getAdditionalProperties(propertiesMap.size, store, options);
65
- src = (0, alterBeforeDeserialize_1.alterBeforeDeserialize)(src, store.schema, options);
66
- const out = new type(options.disableUnsecureConstructor ? {} : src);
67
- propertiesMap.forEach((propStore) => {
68
- const key = options.useAlias
69
- ? propStore.parent.schema.getAliasOf(propStore.propertyName) || propStore.propertyName
70
- : propStore.propertyName;
71
- keys.delete(key);
72
- if ((0, schema_1.alterIgnore)(propStore.schema, options)) {
73
- return;
74
- }
75
- let value = alterValue(propStore.schema, src[key], { ...options, self: src });
76
- value =
77
- value === src[key]
78
- ? deserialize(value, {
79
- ...options,
80
- store: propStore,
81
- format: propStore.itemSchema.get("format"),
82
- self: src,
83
- collectionType: propStore.collectionType
84
- })
85
- : value;
86
- if (!propStore.isGetterOnly()) {
87
- if (value !== undefined) {
88
- out[propStore.propertyName] = value;
89
- }
90
- else if (options.partial) {
91
- delete out[propStore.propertyName];
92
- }
93
- }
94
- });
95
- if (additionalProperties) {
96
- if ((0, core_1.isBoolean)(additionalProperties)) {
97
- keys.forEach((key) => {
98
- out[key] = src[key];
99
- });
100
- }
101
- else {
102
- const type = additionalProperties.getComputedType();
103
- keys.forEach((key) => {
104
- out[key] = deserialize(src[key], {
105
- ...options,
106
- type
107
- });
108
- });
109
- }
110
- }
111
- return (0, alterAfterDeserialize_1.alterAfterDeserialize)(out, store.schema, options);
112
- }
113
- exports.plainObjectToClass = plainObjectToClass;
114
- function mapPropStoreOptions(store, options) {
115
- const itemOpts = {
116
- ...options,
117
- store: undefined,
118
- type: store.computedType
119
- };
120
- if (store.itemSchema.isDiscriminator) {
121
- itemOpts.type = store.itemSchema.discriminator();
122
- }
123
- if (store.schema.hasGenerics) {
124
- itemOpts.nestedGenerics = store.schema.nestedGenerics;
125
- }
126
- else if (store.schema.isGeneric && options.nestedGenerics) {
127
- const [genericTypes = [], ...nestedGenerics] = options.nestedGenerics;
128
- const genericLabels = store.parent.schema.genericLabels || [];
129
- itemOpts.type = genericTypes[genericLabels.indexOf(store.schema.genericType)] || Object;
130
- if (itemOpts.type instanceof schema_1.JsonSchema) {
131
- itemOpts.type = itemOpts.type.getTarget();
132
- }
133
- itemOpts.nestedGenerics = nestedGenerics;
134
- }
135
- return itemOpts;
136
- }
137
- function mapParamStoreOptions(store, options) {
138
- return {
139
- ...options,
140
- store: undefined,
141
- type: store.getBestType(),
142
- collectionType: store.collectionType,
143
- groups: store.parameter.groups,
144
- genericTypes: store.nestedGenerics[0],
145
- nestedGenerics: store.nestedGenerics
146
- };
147
- }
148
- function buildOptions(options) {
149
- if (options.store instanceof schema_1.JsonPropertyStore) {
150
- return buildOptions(mapPropStoreOptions(options.store, options));
151
- }
152
- if (options.store instanceof schema_1.JsonParameterStore) {
153
- return buildOptions(mapParamStoreOptions(options.store, options));
154
- }
155
- if (options.store instanceof schema_1.JsonEntityStore) {
156
- options.type = options.store.computedType;
157
- options.collectionType = options.store.collectionType;
158
- options.store = undefined;
159
- }
160
- else if ((0, core_1.isClass)(options.type)) {
161
- const store = schema_1.JsonEntityStore.from(options.type);
162
- if (store.schema.isDiscriminator) {
163
- options.type = schema_1.JsonEntityStore.from(options.type).schema.discriminator();
164
- }
165
- }
166
- return {
167
- groups: false,
168
- useAlias: true,
169
- ...options,
170
- additionalProperties: (0, core_1.getValue)(options, "additionalProperties", JsonMapperSettings_1.JsonMapperSettings.additionalProperties),
171
- disableUnsecureConstructor: (0, core_1.getValue)(options, "disableUnsecureConstructor", JsonMapperSettings_1.JsonMapperSettings.disableUnsecureConstructor),
172
- partial: options.groups ? options.groups.includes("partial") : false,
173
- type: options.type ? options.type : undefined,
174
- types: options.types ? options.types : (0, JsonMapperTypesContainer_1.getJsonMapperTypes)()
175
- };
176
- }
177
- /**
178
- * Transform given source to class base on the given `options.type`.
179
- *
180
- * @param src
181
- * @param options
182
- */
183
- function deserialize(src, options = {}) {
184
- options = buildOptions(options);
185
- if (!isDeserializable(src, options)) {
186
- return src;
187
- }
188
- if (!options.collectionType && (0, core_1.isArray)(src)) {
189
- options.collectionType = Array;
190
- }
191
- if (options.collectionType) {
192
- if (!options.types?.has(options.collectionType)) {
193
- throw new Error(`${(0, core_1.nameOf)(options.collectionType)} is not supported by JsonMapper.`);
194
- }
195
- return transformCollection(src, options);
196
- }
197
- if (options.types?.has(options.type)) {
198
- return transformType(src, options);
199
- }
200
- if (options.type instanceof schema_1.Discriminator) {
201
- const discriminator = options.type;
202
- const discriminatorValue = src[discriminator.propertyName];
203
- const type = discriminator.getType(discriminatorValue);
204
- return plainObjectToClass(src, { ...options, type });
205
- }
206
- // class converter
207
- return plainObjectToClass(src, options);
7
+ const JsonDeserializer_1 = require("../domain/JsonDeserializer");
8
+ const deserializer = new JsonDeserializer_1.JsonDeserializer();
9
+ function deserialize(input, options) {
10
+ return deserializer.map(input, options);
208
11
  }
209
12
  exports.deserialize = deserialize;
210
13
  //# sourceMappingURL=deserialize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../../../src/utils/deserialize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../../../src/utils/deserialize.ts"],"names":[],"mappings":";;;AAAA,oCAAkC;AAClC,yCAAuC;AACvC,sCAAoC;AAEpC,iEAA4D;AAG5D,MAAM,YAAY,GAAG,IAAI,mCAAgB,EAAE,CAAC;AAE5C,SAAgB,WAAW,CAAc,KAAU,EAAE,OAAiC;IACpF,OAAO,YAAY,CAAC,GAAG,CAAQ,KAAK,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAFD,kCAEC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DateMapper.js","sourceRoot":"","sources":["../../../src/components/DateMapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AACrC,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAGpD;;;;GAIG;AAEH,IAAa,UAAU,GAAvB,MAAa,UAAU;IAGrB,WAAW,CAAC,IAAS;QACnB,6EAA6E;QAC7E,6EAA6E;QAC7E,oBAAoB;QACpB,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;YAC1D,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,SAAS,CAAC,MAAY;QACpB,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1D,CAAC;CACF,CAAA;AAjBY,UAAU;IADtB,UAAU,CAAC,IAAI,CAAC;GACJ,UAAU,CAiBtB;SAjBY,UAAU"}
1
+ {"version":3,"file":"DateMapper.js","sourceRoot":"","sources":["../../../src/components/DateMapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AACrC,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAGpD;;;;GAIG;AAEI,IAAM,UAAU,GAAhB,MAAM,UAAU;IAGrB,WAAW,CAAC,IAAS;QACnB,6EAA6E;QAC7E,6EAA6E;QAC7E,oBAAoB;QACpB,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;YAC1D,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,SAAS,CAAC,MAAY;QACpB,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1D,CAAC;CACF,CAAA;AAjBY,UAAU;IADtB,UAAU,CAAC,IAAI,CAAC;GACJ,UAAU,CAiBtB;SAjBY,UAAU"}
@@ -1,4 +1,5 @@
1
1
  import { __decorate } from "tslib";
2
+ import { nameOf } from "@tsed/core";
2
3
  import { JsonMapper } from "../decorators/jsonMapper.js";
3
4
  function isNullish(data) {
4
5
  return [null, "null"].includes(data);
@@ -16,36 +17,39 @@ export class CastError extends Error {
16
17
  */
17
18
  let PrimitiveMapper = class PrimitiveMapper {
18
19
  deserialize(data, ctx) {
19
- switch (ctx.type) {
20
- case String:
21
- return data === null ? null : "" + data;
22
- case BigInt:
23
- if (isNullish(data))
24
- return null;
25
- return BigInt(data);
26
- case Number:
27
- if (isNullish(data))
28
- return null;
29
- const n = +data;
30
- if (isNaN(n)) {
31
- throw new CastError("Expression value is not a number.");
32
- }
33
- return n;
34
- case Boolean:
35
- if (["true", "1", true].includes(data))
36
- return true;
37
- if (["false", "0", false].includes(data))
38
- return false;
39
- if (isNullish(data))
40
- return null;
41
- if (data === undefined)
42
- return undefined;
43
- return !!data;
44
- }
20
+ return this[nameOf(ctx.type)] ? this[nameOf(ctx.type)](data, ctx) : undefined;
45
21
  }
46
22
  serialize(object) {
47
23
  return object;
48
24
  }
25
+ String(data) {
26
+ return data === null ? null : "" + data;
27
+ }
28
+ Boolean(data) {
29
+ if (["true", "1", true].includes(data))
30
+ return true;
31
+ if (["false", "0", false].includes(data))
32
+ return false;
33
+ if (isNullish(data))
34
+ return null;
35
+ if (data === undefined)
36
+ return undefined;
37
+ return !!data;
38
+ }
39
+ Number(data) {
40
+ if (isNullish(data))
41
+ return null;
42
+ const n = +data;
43
+ if (isNaN(n)) {
44
+ throw new CastError("Expression value is not a number.");
45
+ }
46
+ return n;
47
+ }
48
+ BigInt(data) {
49
+ if (isNullish(data))
50
+ return null;
51
+ return BigInt(data);
52
+ }
49
53
  };
50
54
  PrimitiveMapper = __decorate([
51
55
  JsonMapper(String, Number, Boolean, BigInt)
@@ -1 +1 @@
1
- {"version":3,"file":"PrimitiveMapper.js","sourceRoot":"","sources":["../../../src/components/PrimitiveMapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAGpD,SAAS,SAAS,CAAC,IAAS;IAC1B,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,IAAI,GAAG,YAAY,CAAC;IAEpB,YAAY,OAAe;QACzB,KAAK,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;IAClC,CAAC;CACF;AAED;;;;GAIG;AAEH,IAAa,eAAe,GAA5B,MAAa,eAAe;IAC1B,WAAW,CAAI,IAAS,EAAE,GAAkB;QAC1C,QAAQ,GAAG,CAAC,IAAI,EAAE;YAChB,KAAK,MAAM;gBACT,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;YAE1C,KAAK,MAAM;gBACT,IAAI,SAAS,CAAC,IAAI,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAEjC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;YAEtB,KAAK,MAAM;gBACT,IAAI,SAAS,CAAC,IAAI,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAEjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gBAEhB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;oBACZ,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;iBAC1D;gBAED,OAAO,CAAC,CAAC;YAEX,KAAK,OAAO;gBACV,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACpD,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACvD,IAAI,SAAS,CAAC,IAAI,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACjC,IAAI,IAAI,KAAK,SAAS;oBAAE,OAAO,SAAS,CAAC;gBAEzC,OAAO,CAAC,CAAC,IAAI,CAAC;SACjB;IACH,CAAC;IAED,SAAS,CAAC,MAA0C;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AAnCY,eAAe;IAD3B,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;GAC/B,eAAe,CAmC3B;SAnCY,eAAe"}
1
+ {"version":3,"file":"PrimitiveMapper.js","sourceRoot":"","sources":["../../../src/components/PrimitiveMapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,YAAY,CAAC;AAClC,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAGpD,SAAS,SAAS,CAAC,IAAS;IAC1B,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,IAAI,GAAG,YAAY,CAAC;IAEpB,YAAY,OAAe;QACzB,KAAK,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;IAClC,CAAC;CACF;AAED;;;;GAIG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,WAAW,CAAI,IAAS,EAAE,GAAkB;QAC1C,OAAQ,IAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,IAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,CAAC;IAED,SAAS,CAAC,MAA0C;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,MAAM,CAAC,IAAS;QACxB,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;IAC1C,CAAC;IAES,OAAO,CAAC,IAAS;QACzB,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACvD,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAEzC,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC;IAES,MAAM,CAAC,IAAS;QACxB,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAEjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAEhB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACZ,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;SAC1D;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAES,MAAM,CAAC,IAAS;QACxB,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAEjC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;CACF,CAAA;AAvCY,eAAe;IAD3B,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;GAC/B,eAAe,CAuC3B;SAvCY,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"SymbolMapper.js","sourceRoot":"","sources":["../../../src/components/SymbolMapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAGpD;;;;;GAKG;AAEH,IAAa,YAAY,GAAzB,MAAa,YAAY;IACvB,WAAW,CAAC,IAAY;QACtB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;CACF,CAAA;AARY,YAAY;IADxB,UAAU,CAAC,MAAM,CAAC;GACN,YAAY,CAQxB;SARY,YAAY"}
1
+ {"version":3,"file":"SymbolMapper.js","sourceRoot":"","sources":["../../../src/components/SymbolMapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAGpD;;;;;GAKG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB,WAAW,CAAC,IAAY;QACtB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;CACF,CAAA;AARY,YAAY;IADxB,UAAU,CAAC,MAAM,CAAC;GACN,YAAY,CAQxB;SARY,YAAY"}
@@ -0,0 +1,271 @@
1
+ import { classOf, getValue, isArray, isClass, isEmpty, isNil, nameOf, objectKeys } from "@tsed/core";
2
+ import { getPropertiesStores, JsonEntityStore, JsonParameterStore } from "@tsed/schema";
3
+ import { alterAfterDeserialize } from "../hooks/alterAfterDeserialize.js";
4
+ import { alterBeforeDeserialize } from "../hooks/alterBeforeDeserialize.js";
5
+ import { alterOnDeserialize } from "../hooks/alterOnDeserialize.js";
6
+ import { JsonMapperCompiler } from "./JsonMapperCompiler.js";
7
+ import { JsonMapperSettings } from "./JsonMapperSettings.js";
8
+ import { getJsonMapperTypes } from "./JsonMapperTypesContainer.js";
9
+ import { Writer } from "./Writer.js";
10
+ function isDeserializable(obj, options) {
11
+ if ((!!options.collectionType && isNil(obj)) || obj === undefined) {
12
+ return false;
13
+ }
14
+ return !(isEmpty(options.type) || (options.type === Object && !options.collectionType));
15
+ }
16
+ function mapParamStoreOptions(store, options) {
17
+ return {
18
+ ...options,
19
+ store: undefined,
20
+ type: store.itemSchema.hasDiscriminator ? store.itemSchema.discriminator().base : store.getBestType(),
21
+ collectionType: store.collectionType,
22
+ groups: store.parameter.groups,
23
+ // genericTypes: store.nestedGenerics[0],
24
+ generics: store.nestedGenerics
25
+ };
26
+ }
27
+ function getGenericIndex(propertyStore) {
28
+ return propertyStore.parent.schema.genericLabels.indexOf(propertyStore.itemSchema.genericType);
29
+ }
30
+ export class JsonDeserializer extends JsonMapperCompiler {
31
+ /**
32
+ * Cached classes by his id
33
+ * @protected
34
+ */
35
+ constructors = {};
36
+ constructor() {
37
+ super();
38
+ this.addGlobal("newInstanceOf", this.newInstanceOf.bind(this));
39
+ this.addGlobal("alterBeforeDeserialize", this.alterBeforeDeserialize.bind(this));
40
+ this.addGlobal("alterAfterDeserialize", this.alterAfterDeserialize.bind(this));
41
+ this.addTypeMapper(Object, this.mapObject.bind(this));
42
+ this.addTypeMapper(Array, this.mapArray.bind(this));
43
+ this.addTypeMapper(Map, this.mapMap.bind(this));
44
+ this.addTypeMapper(Set, this.mapSet.bind(this));
45
+ this.addTypeMapper("ObjectId", (value) => String(value));
46
+ }
47
+ map(input, options = {}) {
48
+ options = this.mapOptions(options);
49
+ if (!isDeserializable(input, options)) {
50
+ return input;
51
+ }
52
+ if (!options.collectionType && isArray(input)) {
53
+ options.collectionType = Array;
54
+ }
55
+ const model = options.type || classOf(input);
56
+ const mapper = this.compile(model, options.groups);
57
+ if (options.collectionType) {
58
+ const collectionMapper = this.compile(options.collectionType, options.groups);
59
+ return collectionMapper.fn(input, { ...options, id: mapper.id });
60
+ }
61
+ return mapper.fn(input, this.createContext(options));
62
+ }
63
+ compile(model, groups) {
64
+ if ([WeakMap, WeakSet].includes(model)) {
65
+ throw new Error(`${nameOf(model)} is not supported by JsonMapper.`);
66
+ }
67
+ return super.compile(model, groups);
68
+ }
69
+ eval(mapper, { id, groupsId, model }) {
70
+ this.constructors[id] = model;
71
+ return super.eval(mapper, { id, groupsId, model });
72
+ }
73
+ newInstanceOf(id, obj, options) {
74
+ try {
75
+ return new this.constructors[id](options.disableUnsecureConstructor ? {} : obj);
76
+ }
77
+ catch (er) {
78
+ return obj;
79
+ }
80
+ }
81
+ createMapper(model, id, groups) {
82
+ const entity = JsonEntityStore.from(model);
83
+ const properties = new Set();
84
+ const schemaProperties = [...getPropertiesStores(entity).values()];
85
+ const writer = new Writer().arrow("input", "options");
86
+ writer.if("isNil(input)").return("input");
87
+ if (entity.schema.hasDiscriminator) {
88
+ writer.add(this.mapDiscriminator(entity, groups));
89
+ }
90
+ // pre hook
91
+ if (entity.schema.$hooks?.has("beforeDeserialize")) {
92
+ this.schemes[id] = entity.schema;
93
+ writer.set("input", `alterBeforeDeserialize('${id}', input, options)`);
94
+ }
95
+ // generics and options
96
+ writer.const("generics", "options.generics[0]");
97
+ if (entity.schema.genericLabels?.length) {
98
+ writer.set("options", "{...options, self: input, generics: [...options.generics].slice(1)}");
99
+ }
100
+ else {
101
+ writer.set("options", "{...options, self: input}");
102
+ }
103
+ writer.const("obj", `newInstanceOf('${id}', input, options)`);
104
+ // properties
105
+ writer.add(...schemaProperties.flatMap((propertyStore) => {
106
+ const key = propertyStore.propertyName;
107
+ properties.add(key);
108
+ properties.add(String(propertyStore.parent.schema.getAliasOf(key) || key));
109
+ if (propertyStore.isGetterOnly() ||
110
+ (propertyStore.schema?.$hooks?.has("groups") && this.alterGroups(propertyStore.schema, groups))) {
111
+ return;
112
+ }
113
+ return this.mapProperty(propertyStore, id, groups);
114
+ }));
115
+ // additional properties
116
+ writer.add(this.mapAdditionalProperties(entity, properties, groups));
117
+ // post hook
118
+ if (entity.schema.$hooks?.has("afterDeserialize")) {
119
+ this.schemes[id] = entity.schema;
120
+ return writer.return(`alterAfterDeserialize('${id}', obj, options)`).root().toString();
121
+ }
122
+ return writer.return("obj").root().toString();
123
+ }
124
+ alterValue(schemaId, value, options) {
125
+ return alterOnDeserialize(this.schemes[schemaId], value, options);
126
+ }
127
+ mapDiscriminator(entity, groups) {
128
+ const writer = new Writer();
129
+ const discriminator = entity.schema.discriminator();
130
+ const sw = writer.switch(`input['${discriminator.propertyName}']`);
131
+ discriminator.values.forEach((value, kind) => {
132
+ const nestedMapper = this.compile(value, groups);
133
+ sw.case(`'${kind}'`).returnCallMapper(nestedMapper.id, "input");
134
+ });
135
+ return writer;
136
+ }
137
+ mapProperty(propertyStore, id, groups) {
138
+ const key = String(propertyStore.propertyKey);
139
+ const aliasKey = String(propertyStore.parent.schema.getAliasOf(key) || key);
140
+ const schemaId = this.getSchemaId(id, key);
141
+ const format = propertyStore.itemSchema.get("format");
142
+ const formatOpts = format && `options: {format: '${format}'}`;
143
+ let writer = new Writer().add(`// Map ${key} ${id} ${groups || ""}`);
144
+ const pick = key !== aliasKey ? `options.useAlias ? '${aliasKey}' : '${key}'` : `'${key}'`;
145
+ const ifWriter = writer.set(`let ${key}`, `input[${pick}]`).if(`${key} !== undefined`);
146
+ // pre hook
147
+ const hasDeserializer = propertyStore.schema?.$hooks?.has("onDeserialize");
148
+ if (hasDeserializer) {
149
+ this.schemes[schemaId] = propertyStore.schema;
150
+ const opts = Writer.options(formatOpts);
151
+ ifWriter.set(key, `alterValue('${schemaId}', ${key}, ${opts})`);
152
+ }
153
+ const fill = this.getPropertyFiller(propertyStore, id, groups, formatOpts);
154
+ if (hasDeserializer) {
155
+ fill(ifWriter.if(`${key} === input.${key}`));
156
+ }
157
+ else {
158
+ fill(ifWriter);
159
+ }
160
+ ifWriter.set(`obj.${key}`, key);
161
+ if (groups && groups.includes("partial")) {
162
+ ifWriter.else().add(`delete obj.${key}`);
163
+ }
164
+ return writer.root();
165
+ }
166
+ getPropertyFiller(propertyStore, id, groups, formatOpts) {
167
+ const key = String(propertyStore.propertyKey);
168
+ const schemaId = this.getSchemaId(id, key);
169
+ const generics = propertyStore.itemSchema.nestedGenerics;
170
+ const isGeneric = propertyStore.itemSchema.isGeneric && !generics?.length;
171
+ if (isGeneric) {
172
+ const index = getGenericIndex(propertyStore);
173
+ const opts = Writer.options(formatOpts, `type: generics[${index}]`);
174
+ return (writer) => writer.set(key, `compileAndMap(${key}, ${opts})`);
175
+ }
176
+ const type = propertyStore.itemSchema.hasDiscriminator ? propertyStore.itemSchema.discriminator().base : propertyStore.getBestType();
177
+ const nestedMapper = this.compile(type, groups);
178
+ if (propertyStore.isCollection) {
179
+ return (writer) => writer.callMapper(nameOf(propertyStore.collectionType), key, `id: '${nestedMapper.id}'`, formatOpts);
180
+ }
181
+ if (generics?.length) {
182
+ this.schemes[schemaId] = propertyStore.schema;
183
+ return (writer) => writer.callMapper(nestedMapper.id, key, formatOpts, `generics: schemes['${schemaId}'].nestedGenerics`);
184
+ }
185
+ return (writer) => writer.callMapper(nestedMapper.id, key, formatOpts);
186
+ }
187
+ mapOptions({ groups = false, useAlias = true, types, ...options }) {
188
+ if (options.store instanceof JsonParameterStore) {
189
+ return this.mapOptions(mapParamStoreOptions(options.store, options));
190
+ }
191
+ const customMappers = {};
192
+ types = types || getJsonMapperTypes();
193
+ types.forEach((mapper, model) => {
194
+ if (![Array, Set, Map].includes(model)) {
195
+ const typeName = nameOf(model);
196
+ if (nameOf(model) in mapper) {
197
+ this.addTypeMapper(model, mapper[typeName].bind(mapper));
198
+ }
199
+ else {
200
+ this.addTypeMapper(model, (value, options) => mapper.deserialize(value, {
201
+ ...options,
202
+ type: model
203
+ }));
204
+ }
205
+ }
206
+ });
207
+ return {
208
+ ...options,
209
+ additionalProperties: getValue(options, "additionalProperties", JsonMapperSettings.additionalProperties),
210
+ disableUnsecureConstructor: getValue(options, "disableUnsecureConstructor", JsonMapperSettings.disableUnsecureConstructor),
211
+ groups,
212
+ useAlias,
213
+ customMappers,
214
+ generics: options.generics || []
215
+ };
216
+ }
217
+ mapAdditionalProperties(entity, properties, groups) {
218
+ const additionalProperties = entity.schema.get("additionalProperties");
219
+ const exclude = [...properties.values()].map((key) => `'${key}'`).join(", ");
220
+ const writer = new Writer();
221
+ writer.add("// add additional properties");
222
+ let each = writer.each("objectKeys(input)", ["key"]);
223
+ if (exclude.length) {
224
+ each = each.if(`![${exclude}].includes(key)`);
225
+ }
226
+ if (isClass(additionalProperties)) {
227
+ const nestedMapper = this.compile(additionalProperties.getComputedType(), groups);
228
+ each.set("obj[key]", Writer.mapper(nestedMapper.id, "input[key]", "options"));
229
+ return writer;
230
+ }
231
+ if (additionalProperties) {
232
+ each.set("obj[key]", "input[key]");
233
+ return writer;
234
+ }
235
+ // dynamic additional properties options
236
+ each.if(`options.additionalProperties`).set("obj[key]", "input[key]");
237
+ return writer;
238
+ }
239
+ mapObject(input, options) {
240
+ return input;
241
+ }
242
+ mapSet(input, options) {
243
+ const obj = new Set();
244
+ objectKeys(input).forEach((key) => {
245
+ obj.add(this.mapItem(input[key], options));
246
+ });
247
+ return obj;
248
+ }
249
+ mapArray(input, options) {
250
+ return [].concat(input).map((item) => {
251
+ return this.mapItem(item, options);
252
+ });
253
+ }
254
+ mapMap(input, options) {
255
+ const obj = new Map();
256
+ objectKeys(input).forEach((key) => {
257
+ obj.set(key, this.mapItem(input[key], options));
258
+ });
259
+ return obj;
260
+ }
261
+ mapItem(input, { id, ...options }) {
262
+ return this.execMapper(id, input, options);
263
+ }
264
+ alterBeforeDeserialize(schemaId, value, options) {
265
+ return alterBeforeDeserialize(value, this.schemes[schemaId], options);
266
+ }
267
+ alterAfterDeserialize(schemaId, value, options) {
268
+ return alterAfterDeserialize(value, this.schemes[schemaId], options);
269
+ }
270
+ }
271
+ //# sourceMappingURL=JsonDeserializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonDeserializer.js","sourceRoot":"","sources":["../../../src/domain/JsonDeserializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=JsonDeserializerOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonDeserializerOptions.js","sourceRoot":"","sources":["../../../src/domain/JsonDeserializerOptions.ts"],"names":[],"mappings":""}