@tsed/json-mapper 8.9.5 → 8.10.0-rc.2

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 (55) hide show
  1. package/lib/browser/components/DateMapper.js +22 -0
  2. package/lib/browser/components/DateMapper.js.map +1 -0
  3. package/lib/browser/components/PrimitiveMapper.js +52 -0
  4. package/lib/browser/components/PrimitiveMapper.js.map +1 -0
  5. package/lib/browser/components/SymbolMapper.js +21 -0
  6. package/lib/browser/components/SymbolMapper.js.map +1 -0
  7. package/lib/browser/decorators/afterDeserialize.js +10 -0
  8. package/lib/browser/decorators/afterDeserialize.js.map +1 -0
  9. package/lib/browser/decorators/beforeDeserialize.js +10 -0
  10. package/lib/browser/decorators/beforeDeserialize.js.map +1 -0
  11. package/lib/browser/decorators/jsonMapper.js +12 -0
  12. package/lib/browser/decorators/jsonMapper.js.map +1 -0
  13. package/lib/browser/decorators/onDeserialize.js +10 -0
  14. package/lib/browser/decorators/onDeserialize.js.map +1 -0
  15. package/lib/browser/decorators/onSerialize.js +10 -0
  16. package/lib/browser/decorators/onSerialize.js.map +1 -0
  17. package/lib/browser/domain/JsonDeserializer.js +179 -0
  18. package/lib/browser/domain/JsonDeserializer.js.map +1 -0
  19. package/lib/browser/domain/JsonDeserializerOptions.js +2 -0
  20. package/lib/browser/domain/JsonDeserializerOptions.js.map +1 -0
  21. package/lib/browser/domain/JsonMapperCompiler.js +110 -0
  22. package/lib/browser/domain/JsonMapperCompiler.js.map +1 -0
  23. package/lib/browser/domain/JsonMapperGlobalOptions.js +2 -0
  24. package/lib/browser/domain/JsonMapperGlobalOptions.js.map +1 -0
  25. package/lib/browser/domain/JsonMapperSettings.js +9 -0
  26. package/lib/browser/domain/JsonMapperSettings.js.map +1 -0
  27. package/lib/browser/domain/JsonMapperTypesContainer.js +12 -0
  28. package/lib/browser/domain/JsonMapperTypesContainer.js.map +1 -0
  29. package/lib/browser/domain/JsonSerializer.js +164 -0
  30. package/lib/browser/domain/JsonSerializer.js.map +1 -0
  31. package/lib/browser/domain/JsonSerializerOptions.js +2 -0
  32. package/lib/browser/domain/JsonSerializerOptions.js.map +1 -0
  33. package/lib/browser/domain/Writer.js +124 -0
  34. package/lib/browser/domain/Writer.js.map +1 -0
  35. package/lib/browser/hooks/alterAfterDeserialize.js +8 -0
  36. package/lib/browser/hooks/alterAfterDeserialize.js.map +1 -0
  37. package/lib/browser/hooks/alterBeforeDeserialize.js +8 -0
  38. package/lib/browser/hooks/alterBeforeDeserialize.js.map +1 -0
  39. package/lib/browser/hooks/alterOnDeserialize.js +7 -0
  40. package/lib/browser/hooks/alterOnDeserialize.js.map +1 -0
  41. package/lib/browser/hooks/alterOnSerialize.js +7 -0
  42. package/lib/browser/hooks/alterOnSerialize.js.map +1 -0
  43. package/lib/browser/index.js +47 -0
  44. package/lib/browser/index.js.map +1 -0
  45. package/lib/browser/utils/deserialize.js +12 -0
  46. package/lib/browser/utils/deserialize.js.map +1 -0
  47. package/lib/browser/utils/getObjectProperties.js +8 -0
  48. package/lib/browser/utils/getObjectProperties.js.map +1 -0
  49. package/lib/browser/utils/serialize.js +12 -0
  50. package/lib/browser/utils/serialize.js.map +1 -0
  51. package/package.json +16 -13
  52. package/vite.config.mts +45 -0
  53. package/lib/browser/json-mapper.umd.min.js +0 -2
  54. package/lib/browser/json-mapper.umd.min.js.map +0 -1
  55. package/webpack.config.cjs +0 -10
@@ -0,0 +1,164 @@
1
+ import { isNil as u, isBoolean as N, nameOf as $, isPrimitive as P, isCollection as w, hasJsonMethod as J, classOf as M, isMongooseObject as A, isDate as T, isMomentObject as D, isObject as S, isClassObject as x, isArray as C } from "@tsed/core";
2
+ import { JsonEntityStore as I, getPropertiesStores as G } from "@tsed/schema";
3
+ import { alterOnSerialize as K } from "../hooks/alterOnSerialize.js";
4
+ import { getObjectProperties as v } from "../utils/getObjectProperties.js";
5
+ import { JsonMapperCompiler as z } from "./JsonMapperCompiler.js";
6
+ import { JsonMapperSettings as V } from "./JsonMapperSettings.js";
7
+ import { getJsonMapperTypes as B } from "./JsonMapperTypesContainer.js";
8
+ import { Writer as l } from "./Writer.js";
9
+ const k = (h) => C(h) ? "Array" : h instanceof Set ? "Set" : h instanceof Map ? "Map" : void 0;
10
+ function E(h, e) {
11
+ const t = M(e);
12
+ return t && !x(t) && !w(e) ? t : h || Object;
13
+ }
14
+ function p(h) {
15
+ return `__${h}`;
16
+ }
17
+ class U extends z {
18
+ constructor() {
19
+ super(), this.addTypeMapper(Object, this.mapObject.bind(this)), this.addTypeMapper(Array, this.mapArray.bind(this)), this.addTypeMapper(Map, this.mapMap.bind(this)), this.addTypeMapper(Set, this.mapSet.bind(this)), this.addGlobal("mapJSON", this.mapJSON.bind(this)), this.addTypeMapper("ObjectId", (e) => String(e));
20
+ }
21
+ map(e, t = {}) {
22
+ if (u(e))
23
+ return e;
24
+ t = this.mapOptions(t);
25
+ const r = E(t.type, e);
26
+ return this.compile(r, t.groups).fn(e, this.createContext(t));
27
+ }
28
+ alterValue(e, t, r) {
29
+ return K(this.schemes[e], t, r);
30
+ }
31
+ createMapper(e, t, r) {
32
+ const i = I.from(e), n = /* @__PURE__ */ new Set(), a = [...G(i).values()], o = new l().arrow("input", "options");
33
+ return o.if("isNil(input)").return("input"), o.const("obj", "{}"), o.set("options", "{...options, self: input}"), o.add(this.mapPrecondition(t)), a.length ? (o.add(
34
+ ...a.flatMap((s) => {
35
+ var c, m, d, f;
36
+ if (n.add(s.propertyKey), !((c = s.schema) != null && c.$ignore && N((m = s.schema) == null ? void 0 : m.$ignore) || (f = (d = s.schema) == null ? void 0 : d.$hooks) != null && f.has("groups") && this.alterGroups(s.schema, r)))
37
+ return this.mapProperty(s, t, r);
38
+ })
39
+ ), o.add(this.mapDiscriminatorKeyValue(i)), o.add(this.mapAdditionalProperties(i, n)), o.return("obj").root().toString()) : o.return("isObject(input) ? {...input} : input").root().toString();
40
+ }
41
+ mapOptions({ groups: e, useAlias: t = !0, types: r, ...i }) {
42
+ const n = {};
43
+ r = r || B(), r.forEach((o, s) => {
44
+ [Array, Set, Map].includes(s) || this.addTypeMapper(
45
+ s,
46
+ (c, m) => o.serialize(c, {
47
+ ...m,
48
+ type: s
49
+ })
50
+ );
51
+ });
52
+ const a = i.strictGroups ?? V.strictGroups;
53
+ return {
54
+ ...i,
55
+ groups: e === void 0 ? a ? [] : !1 : e || !1,
56
+ useAlias: t,
57
+ customMappers: n
58
+ };
59
+ }
60
+ mapProperty(e, t, r) {
61
+ var g, O, b, j;
62
+ const i = String(e.propertyKey), n = String(e.parent.schema.getAliasOf(i) || i), a = this.getSchemaId(t, i), o = e.itemSchema.get("format"), s = o && `options: {format: '${o}'}`;
63
+ let c = new l().add(`// Map ${i} ${t} ${r || ""}`);
64
+ (O = (g = e.schema) == null ? void 0 : g.$hooks) != null && O.has("ignore") && (this.schemes[a] = e.schema, c = c.if(`!alterIgnore('${a}', {...options, self: input})`));
65
+ const m = (j = (b = e.schema) == null ? void 0 : b.$hooks) == null ? void 0 : j.has("onSerialize");
66
+ let d = `input.${i}`;
67
+ if (m) {
68
+ this.schemes[a] = e.schema;
69
+ const y = l.options(s);
70
+ d = `alterValue('${a}', input.${i}, ${y})`;
71
+ }
72
+ c = c.set(`let ${p(i)}`, d).if(`${p(i)} !== undefined`);
73
+ const f = this.getPropertyFiller(e, i, r, s);
74
+ return f(m ? c.if(`${p(i)} === input.${i}`) : c), n !== i ? c.set(`obj[options.useAlias ? '${n}' : '${i}']`, p(i)) : c.set(`obj.${i}`, p(i)), c.root();
75
+ }
76
+ getPropertyFiller(e, t, r, i) {
77
+ const n = e.itemSchema.isGeneric, a = e.itemSchema.hasDiscriminator;
78
+ if (e.isCollection) {
79
+ const s = e.getBestType();
80
+ let c;
81
+ if (a) {
82
+ const m = e.parent.targetName;
83
+ c = this.compile(`Discriminator:${m}:${t}`, r, {
84
+ mapper: () => this.createDiscriminatorMapper(e, r)
85
+ });
86
+ } else
87
+ c = n ? { id: "" } : this.compile(s, r);
88
+ return (m) => m.callMapper($(e.collectionType), p(t), `id: '${c.id}'`, i);
89
+ }
90
+ if (n)
91
+ return (s) => s.set(p(t), `compileAndMap(${p(t)}, options)`);
92
+ let o;
93
+ if (a) {
94
+ const s = e.parent.targetName;
95
+ o = this.compile(`Discriminator:${s}:${t}`, r, {
96
+ mapper: () => this.createDiscriminatorMapper(e, r)
97
+ });
98
+ } else
99
+ o = this.compile(e.getBestType(), r);
100
+ return (s) => s.callMapper(o.id, p(t), i);
101
+ }
102
+ createDiscriminatorMapper(e, t) {
103
+ const r = e.itemSchema.discriminator(), i = new l().arrow("input", "options"), n = i.switch("nameOf(classOf(input))");
104
+ return r.values.forEach((a, o) => {
105
+ const s = this.compile(a, t);
106
+ n.case(`'${$(a)}'`).returnCallMapper(s.id, "input");
107
+ }), i.root().toString();
108
+ }
109
+ mapPrecondition(e) {
110
+ const t = new l();
111
+ return t.if("input && isCollection(input)").return(l.mapperFrom("input", `{...options, id: '${e}'}`)), t.if("hasJsonMethod(input)").return(`mapJSON(input, {...options, id: '${e}'})`), t;
112
+ }
113
+ mapDiscriminatorKeyValue(e) {
114
+ if (e.discriminatorAncestor) {
115
+ const t = e.discriminatorAncestor.schema.discriminator(), r = t.getDefaultValue(e.target);
116
+ if (r) {
117
+ const i = new l();
118
+ return i.if(`!obj.${t.propertyName}`).set(`obj.${t.propertyName}`, `'${r}'`), i;
119
+ }
120
+ }
121
+ }
122
+ mapAdditionalProperties(e, t) {
123
+ if (!!e.schema.get("additionalProperties")) {
124
+ const i = [...t.values()].map((a) => `'${a}'`).join(", "), n = new l();
125
+ return n.add("// add additional properties"), n.each("objectKeys(input)", ["key"]).if(`![${i}].includes(key)`).set("obj[key]", "input[key]"), n;
126
+ }
127
+ }
128
+ mapObject(e, { type: t, ...r }) {
129
+ return e && P(e) || !e ? e : e && w(e) ? this.execMapper(k(e), e, r) : J(e) ? this.mapJSON(e, r) : v(e).filter(([, i]) => i !== void 0).reduce((i, [n, a]) => {
130
+ if (u(a))
131
+ return {
132
+ ...i,
133
+ [n]: a
134
+ };
135
+ const o = this.compile(M(a), r.groups);
136
+ return {
137
+ ...i,
138
+ [n]: o.fn(a, r)
139
+ };
140
+ }, {});
141
+ }
142
+ mapSet(e, t) {
143
+ return u(e) ? e : [...e.values()].map((r) => this.mapItem(r, t));
144
+ }
145
+ mapArray(e, t) {
146
+ return u(e) ? e : [].concat(e).map((r) => this.mapItem(r, t));
147
+ }
148
+ mapMap(e, t) {
149
+ return u(e) ? e : [...e.entries()].reduce((r, [i, n]) => ({
150
+ ...r,
151
+ [i]: this.mapItem(n, t)
152
+ }), {});
153
+ }
154
+ mapItem(e, { id: t, ...r }) {
155
+ return !t && e ? this.compile(M(e), r.groups).fn(e, r) : t ? this.execMapper(t, e, r) : e;
156
+ }
157
+ mapJSON(e, { id: t, ...r }) {
158
+ return A(e) ? e.toJSON({ ...r, self: void 0, id: t }) : (t = t || $(M(e)), this.mappers[t] && (T(e) || D(e)) ? this.execMapper(t, e, r) : (e = e.toJSON(), S(e) ? this.execMapper(t, e, r) : e));
159
+ }
160
+ }
161
+ export {
162
+ U as JsonSerializer
163
+ };
164
+ //# sourceMappingURL=JsonSerializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSerializer.js","sources":["../../../src/domain/JsonSerializer.ts"],"sourcesContent":["import {\n classOf,\n hasJsonMethod,\n isArray,\n isBoolean,\n isClassObject,\n isCollection,\n isDate,\n isMomentObject,\n isMongooseObject,\n isNil,\n isObject,\n isPrimitive,\n nameOf,\n Type\n} from \"@tsed/core\";\nimport {getPropertiesStores, JsonClassStore, JsonEntityStore, JsonPropertyStore} from \"@tsed/schema\";\n\nimport {alterOnSerialize} from \"../hooks/alterOnSerialize.js\";\nimport {getObjectProperties} from \"../utils/getObjectProperties.js\";\nimport {JsonMapperCompiler} from \"./JsonMapperCompiler.js\";\nimport {JsonMapperSettings} from \"./JsonMapperSettings.js\";\nimport {getJsonMapperTypes} from \"./JsonMapperTypesContainer.js\";\nimport {JsonSerializerOptions} from \"./JsonSerializerOptions.js\";\nimport {Writer} from \"./Writer.js\";\n\nconst getCollectionType = (input: any) => {\n return isArray(input) ? \"Array\" : input instanceof Set ? \"Set\" : input instanceof Map ? \"Map\" : undefined;\n};\n\nfunction getBestType(type: Type<any>, obj: any) {\n const dataType = classOf(obj);\n\n if (dataType && !isClassObject(dataType) && !isCollection(obj)) {\n return dataType;\n }\n\n return type || Object;\n}\n\nfunction varKey(k: string) {\n return `__${k}`;\n}\n\nexport class JsonSerializer extends JsonMapperCompiler<JsonSerializerOptions> {\n constructor() {\n super();\n\n this.addTypeMapper(Object, this.mapObject.bind(this));\n this.addTypeMapper(Array, this.mapArray.bind(this));\n this.addTypeMapper(Map, this.mapMap.bind(this));\n this.addTypeMapper(Set, this.mapSet.bind(this));\n this.addGlobal(\"mapJSON\", this.mapJSON.bind(this));\n this.addTypeMapper(\"ObjectId\", (value: any) => String(value));\n }\n\n map(input: any, options: JsonSerializerOptions = {}) {\n if (isNil(input)) {\n return input;\n }\n\n options = this.mapOptions(options);\n\n const model = getBestType(options.type, input);\n\n const mapper = this.compile(model, options.groups);\n\n return mapper.fn(input, this.createContext(options));\n }\n\n protected alterValue(schemaId: string, value: any, options: JsonSerializerOptions): any {\n return alterOnSerialize(this.schemes[schemaId], value, options as any);\n }\n\n protected createMapper(model: Type<any>, id: string, groups: false | string[]): string {\n const entity = JsonEntityStore.from(model);\n const properties = new Set<string>();\n const schemaProperties = [...getPropertiesStores(entity).values()];\n\n const writer = new Writer().arrow(\"input\", \"options\");\n\n writer.if(\"isNil(input)\").return(\"input\");\n\n // prepare options\n writer.const(\"obj\", \"{}\");\n writer.set(\"options\", \"{...options, self: input}\");\n\n // detect some special case\n writer.add(this.mapPrecondition(id));\n\n if (!schemaProperties.length) {\n return writer.return(\"isObject(input) ? {...input} : input\").root().toString();\n }\n\n // properties\n writer.add(\n ...schemaProperties.flatMap((propertyStore) => {\n properties.add(propertyStore.propertyKey as string);\n\n if (\n (propertyStore.schema?.$ignore && isBoolean(propertyStore.schema?.$ignore)) ||\n (propertyStore.schema?.$hooks?.has(\"groups\") && this.alterGroups(propertyStore.schema, groups))\n ) {\n return;\n }\n\n return this.mapProperty(propertyStore, id, groups);\n })\n );\n\n // discriminator\n writer.add(this.mapDiscriminatorKeyValue(entity));\n\n // additional properties\n writer.add(this.mapAdditionalProperties(entity, properties));\n\n return writer.return(\"obj\").root().toString();\n }\n\n private mapOptions({groups, useAlias = true, types, ...options}: JsonSerializerOptions<any, any>): JsonSerializerOptions {\n const customMappers: Record<string, any> = {};\n types = types || getJsonMapperTypes();\n\n types.forEach((mapper, model) => {\n if (![Array, Set, Map].includes(model as any)) {\n this.addTypeMapper(model as any, (value: any, options: any) =>\n mapper.serialize(value, {\n ...options,\n type: model\n })\n );\n }\n });\n\n const strictGroups = options.strictGroups ?? JsonMapperSettings.strictGroups;\n\n return {\n ...options,\n groups: groups === undefined ? (strictGroups ? [] : false) : groups || false,\n useAlias,\n customMappers\n };\n }\n\n private mapProperty(propertyStore: JsonPropertyStore, id: string, groups: false | string[]) {\n const key = String(propertyStore.propertyKey);\n const aliasKey: string = String(propertyStore.parent.schema.getAliasOf(key) || key);\n const schemaId = this.getSchemaId(id, key);\n const format = propertyStore.itemSchema.get(\"format\");\n const formatOpts = format && `options: {format: '${format}'}`;\n\n let writer = new Writer().add(`// Map ${key} ${id} ${groups || \"\"}`);\n\n // ignore hook (deprecated)\n if (propertyStore.schema?.$hooks?.has(\"ignore\")) {\n this.schemes[schemaId] = propertyStore.schema;\n\n writer = writer.if(`!alterIgnore('${schemaId}', {...options, self: input})`);\n }\n\n // pre hook\n const hasSerializer = propertyStore.schema?.$hooks?.has(\"onSerialize\");\n let getter = `input.${key}`;\n\n if (hasSerializer) {\n this.schemes[schemaId] = propertyStore.schema;\n const opts = Writer.options(formatOpts);\n\n getter = `alterValue('${schemaId}', input.${key}, ${opts})`;\n }\n\n writer = writer.set(`let ${varKey(key)}`, getter).if(`${varKey(key)} !== undefined`);\n\n const fill = this.getPropertyFiller(propertyStore, key, groups, formatOpts);\n\n if (hasSerializer) {\n fill(writer.if(`${varKey(key)} === input.${key}`));\n } else {\n fill(writer);\n }\n\n if (aliasKey !== key) {\n writer.set(`obj[options.useAlias ? '${aliasKey}' : '${key}']`, varKey(key));\n } else {\n writer.set(`obj.${key}`, varKey(key));\n }\n\n return writer.root();\n }\n\n private getPropertyFiller(propertyStore: JsonPropertyStore, key: string, groups: false | string[], formatOpts: any) {\n const isGeneric = propertyStore.itemSchema.isGeneric;\n const hasDiscriminator = propertyStore.itemSchema.hasDiscriminator;\n\n if (propertyStore.isCollection) {\n const type = propertyStore.getBestType();\n let nestedMapper: any;\n\n if (hasDiscriminator) {\n const targetName = propertyStore.parent.targetName;\n\n nestedMapper = this.compile(`Discriminator:${targetName}:${key}`, groups, {\n mapper: () => this.createDiscriminatorMapper(propertyStore, groups)\n });\n } else {\n nestedMapper = isGeneric ? {id: \"\"} : this.compile(type, groups);\n }\n\n return (writer: Writer) =>\n writer.callMapper(nameOf(propertyStore.collectionType), varKey(key), `id: '${nestedMapper.id}'`, formatOpts);\n }\n\n if (isGeneric) {\n return (writer: Writer) => writer.set(varKey(key), `compileAndMap(${varKey(key)}, options)`);\n }\n\n let nestedMapper: any;\n if (hasDiscriminator) {\n const targetName = propertyStore.parent.targetName;\n\n nestedMapper = this.compile(`Discriminator:${targetName}:${key}`, groups, {\n mapper: () => this.createDiscriminatorMapper(propertyStore, groups)\n });\n } else {\n nestedMapper = this.compile(propertyStore.getBestType(), groups);\n }\n\n return (writer: Writer) => writer.callMapper(nestedMapper.id, varKey(key), formatOpts);\n }\n\n private createDiscriminatorMapper(propertyStore: JsonPropertyStore, groups: false | string[]) {\n const discriminator = propertyStore.itemSchema.discriminator();\n const writer = new Writer().arrow(\"input\", \"options\");\n\n const sw = writer.switch(`nameOf(classOf(input))`);\n\n discriminator.values.forEach((value, kind) => {\n const nestedMapper = this.compile(value, groups);\n\n sw.case(`'${nameOf(value)}'`).returnCallMapper(nestedMapper.id, \"input\");\n });\n\n return writer.root().toString();\n }\n\n private mapPrecondition(id: string) {\n const writer = new Writer();\n\n writer.if(\"input && isCollection(input)\").return(Writer.mapperFrom(\"input\", `{...options, id: '${id}'}`));\n\n writer.if(\"hasJsonMethod(input)\").return(`mapJSON(input, {...options, id: '${id}'})`);\n\n return writer;\n }\n\n private mapDiscriminatorKeyValue(entity: JsonClassStore) {\n if (entity.discriminatorAncestor) {\n const discriminator = entity.discriminatorAncestor.schema.discriminator();\n const type = discriminator.getDefaultValue(entity.target);\n\n if (type) {\n const writer = new Writer();\n writer.if(`!obj.${discriminator.propertyName}`).set(`obj.${discriminator.propertyName}`, `'${type}'`);\n\n return writer;\n }\n }\n }\n\n private mapAdditionalProperties(entity: JsonClassStore, properties: Set<string>) {\n const additionalProperties = !!entity.schema.get(\"additionalProperties\");\n\n if (additionalProperties) {\n const exclude = [...properties.values()].map((key) => `'${key}'`).join(\", \");\n const writer = new Writer();\n writer.add(\"// add additional properties\");\n writer.each(\"objectKeys(input)\", [\"key\"]).if(`![${exclude}].includes(key)`).set(\"obj[key]\", \"input[key]\");\n\n return writer;\n }\n }\n\n private mapObject(input: any, {type, ...options}: JsonSerializerOptions) {\n if ((input && isPrimitive(input)) || !input) {\n // prevent mongoose mapping error\n return input;\n }\n\n if (input && isCollection(input)) {\n return this.execMapper(getCollectionType(input)!, input, options);\n }\n\n if (hasJsonMethod(input)) {\n return this.mapJSON(input, options);\n }\n\n return getObjectProperties(input)\n .filter(([, value]) => value !== undefined)\n .reduce((obj, [key, value]) => {\n if (isNil(value)) {\n return {\n ...obj,\n [key]: value\n };\n }\n\n const mapper = this.compile(classOf(value), options.groups);\n\n return {\n ...obj,\n [key]: mapper.fn(value, options)\n };\n }, {});\n }\n\n private mapSet(input: any, options: JsonSerializerOptions) {\n if (isNil(input)) {\n return input;\n }\n return [...input.values()].map((item) => {\n return this.mapItem(item, options);\n });\n }\n\n private mapArray(input: any, options: JsonSerializerOptions) {\n if (isNil(input)) {\n return input;\n }\n\n return [].concat(input).map((item: any) => {\n return this.mapItem(item, options);\n });\n }\n\n private mapMap(input: any, options: JsonSerializerOptions) {\n if (isNil(input)) {\n return input;\n }\n\n return [...input.entries()].reduce((obj, [key, item]) => {\n return {\n ...obj,\n [key]: this.mapItem(item, options)\n };\n }, {});\n }\n\n private mapItem(input: any, {id, ...options}: JsonSerializerOptions) {\n if (!id && input) {\n return this.compile(classOf(input), options.groups).fn(input, options);\n }\n\n return id ? this.execMapper(id, input, options) : input;\n }\n\n private mapJSON(input: any, {id, ...options}: JsonSerializerOptions) {\n if (isMongooseObject(input)) {\n return input.toJSON({...options, self: undefined, id});\n }\n\n id = id || nameOf(classOf(input));\n\n if (this.mappers[id] && (isDate(input) || isMomentObject(input))) {\n return this.execMapper(id, input, options);\n }\n\n input = input.toJSON();\n\n return isObject(input) ? this.execMapper(id, input, options) : input;\n }\n}\n"],"names":["getCollectionType","input","isArray","getBestType","type","obj","dataType","classOf","isClassObject","isCollection","varKey","k","JsonSerializer","JsonMapperCompiler","value","options","isNil","model","schemaId","alterOnSerialize","id","groups","entity","JsonEntityStore","properties","schemaProperties","getPropertiesStores","writer","Writer","propertyStore","_a","isBoolean","_b","_d","_c","useAlias","types","customMappers","getJsonMapperTypes","mapper","strictGroups","JsonMapperSettings","key","aliasKey","format","formatOpts","hasSerializer","getter","opts","fill","isGeneric","hasDiscriminator","nestedMapper","targetName","nameOf","discriminator","sw","kind","exclude","isPrimitive","hasJsonMethod","getObjectProperties","item","isMongooseObject","isDate","isMomentObject","isObject"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=JsonSerializerOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSerializerOptions.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,124 @@
1
+ var u = (e) => {
2
+ throw TypeError(e);
3
+ };
4
+ var d = (e, t, r) => t.has(e) || u("Cannot " + r);
5
+ var a = (e, t, r) => (d(e, t, "read from private field"), r ? r.call(e) : t.get(e)), h = (e, t, r) => t.has(e) ? u("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, r);
6
+ const i = class i {
7
+ constructor(t) {
8
+ this.body = [], this._root = t;
9
+ }
10
+ static indent(t) {
11
+ return t.map((r) => ` ${r}`);
12
+ }
13
+ static mapper(t, r, s) {
14
+ return `execMapper('${t}', ${r}, ${s})`;
15
+ }
16
+ static mapperFrom(t, r) {
17
+ return `execMapper(nameOf(classOf(${t})), ${t}, ${r})`;
18
+ }
19
+ static options(...t) {
20
+ return t = t.filter(Boolean), t.length ? i.object.assign("...options", ...t) : "options";
21
+ }
22
+ add(...t) {
23
+ return t = t.filter((r) => r !== void 0), t.length && this.body.push(...t), this;
24
+ }
25
+ arrow(...t) {
26
+ this.add(`(${t}) => {`);
27
+ const r = this.new();
28
+ return this.add("}"), r;
29
+ }
30
+ build() {
31
+ const t = this.body.flatMap((r) => r instanceof i ? r.build() : r);
32
+ return this._indent ? t.map((r) => " " + r) : t;
33
+ }
34
+ callMapper(t, r, ...s) {
35
+ return this.set(r, i.mapper(t, r, i.options(...s)));
36
+ }
37
+ returnCallMapper(t, r, ...s) {
38
+ return this.return(i.mapper(t, r, i.options(...s)));
39
+ }
40
+ const(t, r) {
41
+ return this.add(`const ${t} = ${r};`), this;
42
+ }
43
+ each(t, r = []) {
44
+ const s = this.add(t + ".forEach((" + r.join(", ") + ") => {").new();
45
+ return this.add("});"), s;
46
+ }
47
+ if(t) {
48
+ const r = new c(t, this);
49
+ return this.add(r), r;
50
+ }
51
+ switch(t) {
52
+ const r = new p(t);
53
+ return this.add(r), r;
54
+ }
55
+ indent(t) {
56
+ return this._indent = t, this;
57
+ }
58
+ new(t = !0) {
59
+ const r = new i(this.root());
60
+ return r.indent(t), this.add(r), r;
61
+ }
62
+ return(t) {
63
+ return this.add(`return ${t};`), this.root();
64
+ }
65
+ root() {
66
+ return this._root || this;
67
+ }
68
+ set(t, r) {
69
+ return this.add(`${t} = ${r};`), this;
70
+ }
71
+ toString() {
72
+ return this.build().join(`
73
+ `);
74
+ }
75
+ };
76
+ i.object = {
77
+ assign(...t) {
78
+ return `{ ${t.filter(Boolean).join(", ")} }`;
79
+ }
80
+ };
81
+ let n = i;
82
+ class c extends n {
83
+ constructor(t, r) {
84
+ super(), this.condition = t, this._root = r;
85
+ }
86
+ else() {
87
+ const t = new n(this._root);
88
+ return this.elseWriter = t, t;
89
+ }
90
+ build() {
91
+ return [
92
+ `if (${this.condition}) {`,
93
+ ...n.indent(super.build()),
94
+ "}",
95
+ this.elseWriter ? ["else {", ...n.indent(this.elseWriter.build()), "}"] : []
96
+ ].flat();
97
+ }
98
+ }
99
+ var o;
100
+ class p extends n {
101
+ constructor(r) {
102
+ super();
103
+ h(this, o, /* @__PURE__ */ new Map());
104
+ this.input = r;
105
+ }
106
+ case(r) {
107
+ const s = new n();
108
+ return a(this, o).set(r, s), s;
109
+ }
110
+ build() {
111
+ return [
112
+ `switch (${this.input}) {`,
113
+ ...n.indent(
114
+ Array.from(a(this, o).entries()).flatMap(([r, s]) => [r === "default" ? `${r}:` : `case ${r}:`, ...n.indent(s.build())])
115
+ ),
116
+ "}"
117
+ ].flat();
118
+ }
119
+ }
120
+ o = new WeakMap();
121
+ export {
122
+ n as Writer
123
+ };
124
+ //# sourceMappingURL=Writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Writer.js","sources":["../../../src/domain/Writer.ts"],"sourcesContent":["export class Writer {\n static object = {\n assign(...args: string[]) {\n return `{ ${args.filter(Boolean).join(\", \")} }`;\n }\n };\n\n protected _root?: Writer;\n protected body: (string | Writer)[] = [];\n private _indent: boolean;\n\n constructor(root?: Writer) {\n this._root = root;\n }\n\n static indent(lines: string[]) {\n return lines.map((p) => `\\t${p}`);\n }\n\n static mapper(mapperId: string, key: string, options: string) {\n return `execMapper('${mapperId}', ${key}, ${options})`;\n }\n\n static mapperFrom(key: string, options: string) {\n return `execMapper(nameOf(classOf(${key})), ${key}, ${options})`;\n }\n\n static options(...args: string[]) {\n args = args.filter(Boolean);\n return !args.length ? \"options\" : Writer.object.assign(\"...options\", ...args);\n }\n\n add(...lines: (undefined | string | Writer)[]) {\n lines = lines.filter((line) => line !== undefined);\n\n lines.length && this.body.push(...(lines as string | Writer[]));\n\n return this;\n }\n\n arrow(...args: string[]) {\n this.add(`(${args}) => {`);\n\n const writer = this.new();\n\n this.add(\"}\");\n\n return writer;\n }\n\n build(): string[] {\n const result = this.body.flatMap((line) => {\n return line instanceof Writer ? line.build() : line;\n });\n\n return this._indent ? result.map((item) => \"\\t\" + item) : result;\n }\n\n callMapper(id: string, key: string, ...options: string[]) {\n return this.set(key, Writer.mapper(id, key, Writer.options(...options)));\n }\n\n returnCallMapper(id: string, key: string, ...options: string[]) {\n return this.return(Writer.mapper(id, key, Writer.options(...options)));\n }\n\n const(name: string, line: string) {\n this.add(`const ${name} = ${line};`);\n return this;\n }\n\n each(iterable: string, args: string[] = []) {\n const writer = this.add(iterable + \".forEach((\" + args.join(\", \") + \") => {\").new();\n\n this.add(\"});\");\n\n return writer;\n }\n\n if(condition: string) {\n const writer = new IfWriter(condition, this);\n\n this.add(writer);\n\n return writer;\n }\n\n switch(input: string) {\n const sw = new SwitchWriter(input);\n\n this.add(sw);\n\n return sw;\n }\n\n indent(indent: boolean) {\n this._indent = indent;\n return this;\n }\n\n new(indent = true) {\n const writer = new Writer(this.root());\n writer.indent(indent);\n this.add(writer);\n\n return writer;\n }\n\n return(line: string) {\n this.add(`return ${line};`);\n return this.root();\n }\n\n root() {\n return this._root || this;\n }\n\n set(left: string, right: string) {\n this.add(`${left} = ${right};`);\n return this;\n }\n\n toString() {\n return this.build().join(\"\\n\");\n }\n}\n\nclass IfWriter extends Writer {\n protected elseWriter?: Writer;\n\n constructor(\n protected condition: string,\n root: Writer\n ) {\n super();\n this._root = root;\n }\n\n else() {\n const writer = new Writer(this._root);\n\n this.elseWriter = writer;\n\n return writer;\n }\n\n build() {\n return [\n `if (${this.condition}) {`,\n ...Writer.indent(super.build()),\n \"}\",\n this.elseWriter ? [`else {`, ...Writer.indent(this.elseWriter.build()), \"}\"] : []\n ].flat();\n }\n}\n\nclass SwitchWriter extends Writer {\n #map = new Map<string, Writer>();\n\n constructor(private input: string) {\n super();\n }\n\n case(condition: string) {\n const writer = new Writer();\n this.#map.set(condition, writer);\n return writer;\n }\n\n build() {\n return [\n `switch (${this.input}) {`,\n ...Writer.indent(\n Array.from(this.#map.entries()).flatMap(([condition, writer]) => {\n return [condition === \"default\" ? `${condition}:` : `case ${condition}:`, ...Writer.indent(writer.build())];\n })\n ),\n \"}\"\n ].flat();\n }\n}\n"],"names":["_Writer","root","lines","p","mapperId","key","options","args","line","writer","result","item","id","name","iterable","condition","IfWriter","input","sw","SwitchWriter","indent","left","right","Writer","_map","__privateAdd","__privateGet"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ function l(t, r, i) {
2
+ var e;
3
+ return (e = r == null ? void 0 : r.$hooks) == null ? void 0 : e.alter("afterDeserialize", t, [i]);
4
+ }
5
+ export {
6
+ l as alterAfterDeserialize
7
+ };
8
+ //# sourceMappingURL=alterAfterDeserialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alterAfterDeserialize.js","sources":["../../../src/hooks/alterAfterDeserialize.ts"],"sourcesContent":["import type {Hooks} from \"@tsed/hooks\";\n\nexport function alterAfterDeserialize(data: any, schema: {$hooks: Hooks}, options: any) {\n return schema?.$hooks?.alter(\"afterDeserialize\", data, [options]);\n}\n"],"names":["alterAfterDeserialize","data","schema","options","_a"],"mappings":"AAEgB,SAAAA,EAAsBC,GAAWC,GAAyBC,GAAc;AAAxE,MAAAC;AACd,UAAOA,IAAAF,KAAA,gBAAAA,EAAQ,WAAR,gBAAAE,EAAgB,MAAM,oBAAoBH,GAAM,CAACE,CAAO;AACjE;"}
@@ -0,0 +1,8 @@
1
+ function t(o, e, i) {
2
+ var r;
3
+ return (r = e == null ? void 0 : e.$hooks) == null ? void 0 : r.alter("beforeDeserialize", o, [i]);
4
+ }
5
+ export {
6
+ t as alterBeforeDeserialize
7
+ };
8
+ //# sourceMappingURL=alterBeforeDeserialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alterBeforeDeserialize.js","sources":["../../../src/hooks/alterBeforeDeserialize.ts"],"sourcesContent":["import type {Hooks} from \"@tsed/hooks\";\n\nexport function alterBeforeDeserialize(data: any, schema: {$hooks: Hooks}, options: any) {\n return schema?.$hooks?.alter(\"beforeDeserialize\", data, [options]);\n}\n"],"names":["alterBeforeDeserialize","data","schema","options","_a"],"mappings":"AAEgB,SAAAA,EAAuBC,GAAWC,GAAyBC,GAAc;AAAzE,MAAAC;AACd,UAAOA,IAAAF,KAAA,gBAAAA,EAAQ,WAAR,gBAAAE,EAAgB,MAAM,qBAAqBH,GAAM,CAACE,CAAO;AAClE;"}
@@ -0,0 +1,7 @@
1
+ function n(e, r, i) {
2
+ return e.$hooks.alter("onDeserialize", r, [i]);
3
+ }
4
+ export {
5
+ n as alterOnDeserialize
6
+ };
7
+ //# sourceMappingURL=alterOnDeserialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alterOnDeserialize.js","sources":["../../../src/hooks/alterOnDeserialize.ts"],"sourcesContent":["import {JsonHookContext, JsonSchema} from \"@tsed/schema\";\n\nexport function alterOnDeserialize(schema: JsonSchema, value: any, options: JsonHookContext) {\n return schema.$hooks.alter(\"onDeserialize\", value, [options]);\n}\n"],"names":["alterOnDeserialize","schema","value","options"],"mappings":"AAEgB,SAAAA,EAAmBC,GAAoBC,GAAYC,GAA0B;AAC3F,SAAOF,EAAO,OAAO,MAAM,iBAAiBC,GAAO,CAACC,CAAO,CAAC;AAC9D;"}
@@ -0,0 +1,7 @@
1
+ function n(e, r, i) {
2
+ return e.$hooks.alter("onSerialize", r, [i]);
3
+ }
4
+ export {
5
+ n as alterOnSerialize
6
+ };
7
+ //# sourceMappingURL=alterOnSerialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alterOnSerialize.js","sources":["../../../src/hooks/alterOnSerialize.ts"],"sourcesContent":["import {JsonHookContext, JsonSchema} from \"@tsed/schema\";\n\nexport function alterOnSerialize(schema: JsonSchema, value: any, options: JsonHookContext) {\n return schema.$hooks.alter(\"onSerialize\", value, [options]);\n}\n"],"names":["alterOnSerialize","schema","value","options"],"mappings":"AAEgB,SAAAA,EAAiBC,GAAoBC,GAAYC,GAA0B;AACzF,SAAOF,EAAO,OAAO,MAAM,eAAeC,GAAO,CAACC,CAAO,CAAC;AAC5D;"}
@@ -0,0 +1,47 @@
1
+ import { DateMapper as o } from "./components/DateMapper.js";
2
+ import { CastError as t, PrimitiveMapper as i } from "./components/PrimitiveMapper.js";
3
+ import { SymbolMapper as f } from "./components/SymbolMapper.js";
4
+ import { AfterDeserialize as s } from "./decorators/afterDeserialize.js";
5
+ import { BeforeDeserialize as l } from "./decorators/beforeDeserialize.js";
6
+ import { JsonMapper as z } from "./decorators/jsonMapper.js";
7
+ import { OnDeserialize as M } from "./decorators/onDeserialize.js";
8
+ import { OnSerialize as O } from "./decorators/onSerialize.js";
9
+ import { JsonDeserializer as g } from "./domain/JsonDeserializer.js";
10
+ import { JsonMapperCompiler as b } from "./domain/JsonMapperCompiler.js";
11
+ import { JsonMapperSettings as B } from "./domain/JsonMapperSettings.js";
12
+ import { getJsonMapperTypes as P, registerJsonTypeMapper as T } from "./domain/JsonMapperTypesContainer.js";
13
+ import { JsonSerializer as d } from "./domain/JsonSerializer.js";
14
+ import { Writer as v } from "./domain/Writer.js";
15
+ import { alterAfterDeserialize as W } from "./hooks/alterAfterDeserialize.js";
16
+ import { alterBeforeDeserialize as k } from "./hooks/alterBeforeDeserialize.js";
17
+ import { alterOnDeserialize as u } from "./hooks/alterOnDeserialize.js";
18
+ import { alterOnSerialize as F } from "./hooks/alterOnSerialize.js";
19
+ import { deserialize as H } from "./utils/deserialize.js";
20
+ import { getObjectProperties as K } from "./utils/getObjectProperties.js";
21
+ import { serialize as N } from "./utils/serialize.js";
22
+ export {
23
+ s as AfterDeserialize,
24
+ l as BeforeDeserialize,
25
+ t as CastError,
26
+ o as DateMapper,
27
+ g as JsonDeserializer,
28
+ z as JsonMapper,
29
+ b as JsonMapperCompiler,
30
+ B as JsonMapperSettings,
31
+ d as JsonSerializer,
32
+ M as OnDeserialize,
33
+ O as OnSerialize,
34
+ i as PrimitiveMapper,
35
+ f as SymbolMapper,
36
+ v as Writer,
37
+ W as alterAfterDeserialize,
38
+ k as alterBeforeDeserialize,
39
+ u as alterOnDeserialize,
40
+ F as alterOnSerialize,
41
+ H as deserialize,
42
+ P as getJsonMapperTypes,
43
+ K as getObjectProperties,
44
+ T as registerJsonTypeMapper,
45
+ N as serialize
46
+ };
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,12 @@
1
+ import "../components/DateMapper.js";
2
+ import "../components/PrimitiveMapper.js";
3
+ import "../components/SymbolMapper.js";
4
+ import { JsonDeserializer as i } from "../domain/JsonDeserializer.js";
5
+ const o = new i();
6
+ function s(r, e) {
7
+ return o.map(r, e);
8
+ }
9
+ export {
10
+ s as deserialize
11
+ };
12
+ //# sourceMappingURL=deserialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deserialize.js","sources":["../../../src/utils/deserialize.ts"],"sourcesContent":["import \"../components/DateMapper.js\";\nimport \"../components/PrimitiveMapper.js\";\nimport \"../components/SymbolMapper.js\";\n\nimport {JsonDeserializer} from \"../domain/JsonDeserializer.js\";\nimport {JsonDeserializerOptions} from \"../domain/JsonDeserializerOptions.js\";\n\nconst deserializer = new JsonDeserializer();\n\nexport function deserialize<Model = any>(input: any, options?: JsonDeserializerOptions): Model {\n return deserializer.map<Model>(input, options);\n}\n"],"names":["deserializer","JsonDeserializer","deserialize","input","options"],"mappings":";;;;AAOA,MAAMA,IAAe,IAAIC,EAAiB;AAE1B,SAAAC,EAAyBC,GAAYC,GAA0C;AACtF,SAAAJ,EAAa,IAAWG,GAAOC,CAAO;AAC/C;"}
@@ -0,0 +1,8 @@
1
+ import { isFunction as r } from "@tsed/core";
2
+ function n(t) {
3
+ return Object.entries(t).filter(([, e]) => !r(e));
4
+ }
5
+ export {
6
+ n as getObjectProperties
7
+ };
8
+ //# sourceMappingURL=getObjectProperties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getObjectProperties.js","sources":["../../../src/utils/getObjectProperties.ts"],"sourcesContent":["import {isFunction} from \"@tsed/core\";\n\nexport function getObjectProperties(obj: any): [string, any][] {\n return Object.entries(obj).filter(([, value]) => !isFunction(value));\n}\n"],"names":["getObjectProperties","obj","value","isFunction"],"mappings":";AAEO,SAASA,EAAoBC,GAA2B;AAC7D,SAAO,OAAO,QAAQA,CAAG,EAAE,OAAO,CAAC,CAAG,EAAAC,CAAK,MAAM,CAACC,EAAWD,CAAK,CAAC;AACrE;"}
@@ -0,0 +1,12 @@
1
+ import "../components/DateMapper.js";
2
+ import "../components/PrimitiveMapper.js";
3
+ import "../components/SymbolMapper.js";
4
+ import { JsonSerializer as e } from "../domain/JsonSerializer.js";
5
+ const o = new e();
6
+ function a(r, i) {
7
+ return o.map(r, i);
8
+ }
9
+ export {
10
+ a as serialize
11
+ };
12
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.js","sources":["../../../src/utils/serialize.ts"],"sourcesContent":["import \"../components/DateMapper.js\";\nimport \"../components/PrimitiveMapper.js\";\nimport \"../components/SymbolMapper.js\";\n\nimport {JsonSerializer} from \"../domain/JsonSerializer.js\";\nimport {JsonSerializerOptions} from \"../domain/JsonSerializerOptions.js\";\n\nconst serializer = new JsonSerializer();\n\nexport function serialize(input: any, options?: JsonSerializerOptions) {\n return serializer.map(input, options);\n}\n"],"names":["serializer","JsonSerializer","serialize","input","options"],"mappings":";;;;AAOA,MAAMA,IAAa,IAAIC,EAAe;AAEtB,SAAAC,EAAUC,GAAYC,GAAiC;AAC9D,SAAAJ,EAAW,IAAIG,GAAOC,CAAO;AACtC;"}
package/package.json CHANGED
@@ -2,17 +2,17 @@
2
2
  "name": "@tsed/json-mapper",
3
3
  "description": "Json mapper module for Ts.ED Framework",
4
4
  "type": "module",
5
- "version": "8.9.5",
5
+ "version": "8.10.0-rc.2",
6
6
  "source": "./src/index.ts",
7
7
  "main": "./lib/esm/index.js",
8
8
  "module": "./lib/esm/index.js",
9
9
  "typings": "./lib/types/index.d.ts",
10
- "browser": "./lib/browser/json-mapper.umd.min.js",
10
+ "browser": "./lib/browser/index.js",
11
11
  "exports": {
12
12
  ".": {
13
13
  "tsed-source": "./src/index.ts",
14
14
  "types": "./lib/types/index.d.ts",
15
- "browser": "./lib/browser/json-mapper.umd.min.js",
15
+ "browser": "./lib/browser/index.js",
16
16
  "import": "./lib/esm/index.js",
17
17
  "default": "./lib/esm/index.js"
18
18
  }
@@ -20,7 +20,7 @@
20
20
  "scripts": {
21
21
  "clean": "rm -rf lib",
22
22
  "build": "yarn clean && yarn barrels && yarn build:ts && yarn run build:browser",
23
- "build:browser": "webpack",
23
+ "build:browser": "vite build",
24
24
  "barrels": "barrels",
25
25
  "test": "vitest run",
26
26
  "build:ts": "tsc --build tsconfig.esm.json",
@@ -42,18 +42,18 @@
42
42
  "tslib": "2.7.0"
43
43
  },
44
44
  "devDependencies": {
45
- "@tsed/barrels": "8.9.5",
46
- "@tsed/core": "8.9.5",
47
- "@tsed/schema": "8.9.5",
48
- "@tsed/typescript": "8.9.5",
45
+ "@tsed/barrels": "8.10.0-rc.2",
46
+ "@tsed/core": "8.10.0-rc.2",
47
+ "@tsed/schema": "8.10.0-rc.2",
48
+ "@tsed/typescript": "8.10.0-rc.2",
49
49
  "eslint": "9.12.0",
50
50
  "typescript": "5.4.5",
51
- "vitest": "3.1.4",
52
- "webpack": "^5.75.0"
51
+ "vite": "6.2.2",
52
+ "vitest": "3.1.4"
53
53
  },
54
54
  "peerDependencies": {
55
- "@tsed/core": ">=8.9.5",
56
- "@tsed/schema": ">=8.9.5"
55
+ "@tsed/core": ">=8.0.0",
56
+ "@tsed/schema": ">=8.0.0"
57
57
  },
58
58
  "peerDependenciesMeta": {
59
59
  "@tsed/core": {
@@ -69,5 +69,8 @@
69
69
  },
70
70
  "homepage": "https://github.com/tsedio/tsed/tree/production/packages/specs/json-mapper",
71
71
  "author": "Romain Lenzotti",
72
- "license": "MIT"
72
+ "license": "MIT",
73
+ "publishConfig": {
74
+ "tag": "rc"
75
+ }
73
76
  }
@@ -0,0 +1,45 @@
1
+ import {defineConfig} from "vite";
2
+ import {join} from "node:path";
3
+ import {extname, relative} from "path";
4
+ import {fileURLToPath} from "node:url";
5
+ import {globbySync} from "globby";
6
+
7
+ // https://vitejs.dev/config/
8
+ export default defineConfig({
9
+ plugins: [],
10
+ build: {
11
+ assetsInlineLimit: 0,
12
+ sourcemap: true,
13
+ outDir: "lib/browser",
14
+ lib: {
15
+ entry: join(import.meta.dirname, "src/index.ts"),
16
+ formats: ["es"]
17
+ },
18
+ rollupOptions: {
19
+ external: [/node_modules\/(.*)/, /^@tsed\//],
20
+ input: Object.fromEntries(
21
+ globbySync("src/**/*.ts", {
22
+ ignore: [
23
+ "**/*.spec.{ts,tsx}",
24
+ "**/*.stories.{ts,tsx}",
25
+ "**/__mocks__/**",
26
+ "**/__mock__/**",
27
+ "**/interfaces/**"
28
+ ]
29
+ }).map((file) => [
30
+ // The name of the entry point
31
+ // lib/nested/foo.ts becomes nested/foo
32
+ relative("src", file.slice(0, file.length - extname(file).length)),
33
+ // The absolute path to the entry file
34
+ // lib/nested/foo.ts becomes /project/lib/nested/foo.ts
35
+ fileURLToPath(new URL(file, import.meta.url))
36
+ ])
37
+ ),
38
+ output: {
39
+ assetFileNames: "assets/[name][extname]",
40
+ chunkFileNames: "chunks/[name].js",
41
+ entryFileNames: "[name].js"
42
+ }
43
+ }
44
+ }
45
+ });