@tsed/json-mapper 8.11.1 → 8.12.0-rc.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/lib/esm/components/DateMapper.js +0 -1
- package/lib/esm/components/PrimitiveMapper.js +0 -1
- package/lib/esm/components/SymbolMapper.js +0 -1
- package/lib/esm/decorators/afterDeserialize.js +0 -1
- package/lib/esm/decorators/beforeDeserialize.js +0 -1
- package/lib/esm/decorators/jsonMapper.js +0 -1
- package/lib/esm/decorators/onDeserialize.js +0 -1
- package/lib/esm/decorators/onSerialize.js +0 -1
- package/lib/esm/domain/JsonDeserializer.js +0 -1
- package/lib/esm/domain/JsonDeserializerOptions.js +0 -1
- package/lib/esm/domain/JsonMapperCompiler.js +0 -1
- package/lib/esm/domain/JsonMapperGlobalOptions.js +0 -1
- package/lib/esm/domain/JsonMapperSettings.js +0 -1
- package/lib/esm/domain/JsonMapperTypesContainer.js +0 -1
- package/lib/esm/domain/JsonSerializer.js +0 -1
- package/lib/esm/domain/JsonSerializerOptions.js +0 -1
- package/lib/esm/domain/Writer.js +0 -1
- package/lib/esm/hooks/alterAfterDeserialize.js +0 -1
- package/lib/esm/hooks/alterBeforeDeserialize.js +0 -1
- package/lib/esm/hooks/alterOnDeserialize.js +0 -1
- package/lib/esm/hooks/alterOnSerialize.js +0 -1
- package/lib/esm/index.js +0 -1
- package/lib/esm/interfaces/JsonMapperMethods.js +0 -1
- package/lib/esm/utils/deserialize.js +0 -1
- package/lib/esm/utils/getObjectProperties.js +0 -1
- package/lib/esm/utils/serialize.js +0 -1
- package/package.json +12 -11
- package/lib/browser/components/DateMapper.js +0 -22
- package/lib/browser/components/DateMapper.js.map +0 -1
- package/lib/browser/components/PrimitiveMapper.js +0 -52
- package/lib/browser/components/PrimitiveMapper.js.map +0 -1
- package/lib/browser/components/SymbolMapper.js +0 -21
- package/lib/browser/components/SymbolMapper.js.map +0 -1
- package/lib/browser/decorators/afterDeserialize.js +0 -10
- package/lib/browser/decorators/afterDeserialize.js.map +0 -1
- package/lib/browser/decorators/beforeDeserialize.js +0 -10
- package/lib/browser/decorators/beforeDeserialize.js.map +0 -1
- package/lib/browser/decorators/jsonMapper.js +0 -12
- package/lib/browser/decorators/jsonMapper.js.map +0 -1
- package/lib/browser/decorators/onDeserialize.js +0 -10
- package/lib/browser/decorators/onDeserialize.js.map +0 -1
- package/lib/browser/decorators/onSerialize.js +0 -10
- package/lib/browser/decorators/onSerialize.js.map +0 -1
- package/lib/browser/domain/JsonDeserializer.js +0 -179
- package/lib/browser/domain/JsonDeserializer.js.map +0 -1
- package/lib/browser/domain/JsonDeserializerOptions.js +0 -2
- package/lib/browser/domain/JsonDeserializerOptions.js.map +0 -1
- package/lib/browser/domain/JsonMapperCompiler.js +0 -110
- package/lib/browser/domain/JsonMapperCompiler.js.map +0 -1
- package/lib/browser/domain/JsonMapperGlobalOptions.js +0 -2
- package/lib/browser/domain/JsonMapperGlobalOptions.js.map +0 -1
- package/lib/browser/domain/JsonMapperSettings.js +0 -9
- package/lib/browser/domain/JsonMapperSettings.js.map +0 -1
- package/lib/browser/domain/JsonMapperTypesContainer.js +0 -12
- package/lib/browser/domain/JsonMapperTypesContainer.js.map +0 -1
- package/lib/browser/domain/JsonSerializer.js +0 -164
- package/lib/browser/domain/JsonSerializer.js.map +0 -1
- package/lib/browser/domain/JsonSerializerOptions.js +0 -2
- package/lib/browser/domain/JsonSerializerOptions.js.map +0 -1
- package/lib/browser/domain/Writer.js +0 -124
- package/lib/browser/domain/Writer.js.map +0 -1
- package/lib/browser/hooks/alterAfterDeserialize.js +0 -8
- package/lib/browser/hooks/alterAfterDeserialize.js.map +0 -1
- package/lib/browser/hooks/alterBeforeDeserialize.js +0 -8
- package/lib/browser/hooks/alterBeforeDeserialize.js.map +0 -1
- package/lib/browser/hooks/alterOnDeserialize.js +0 -7
- package/lib/browser/hooks/alterOnDeserialize.js.map +0 -1
- package/lib/browser/hooks/alterOnSerialize.js +0 -7
- package/lib/browser/hooks/alterOnSerialize.js.map +0 -1
- package/lib/browser/index.js +0 -47
- package/lib/browser/index.js.map +0 -1
- package/lib/browser/utils/deserialize.js +0 -12
- package/lib/browser/utils/deserialize.js.map +0 -1
- package/lib/browser/utils/getObjectProperties.js +0 -8
- package/lib/browser/utils/getObjectProperties.js.map +0 -1
- package/lib/browser/utils/serialize.js +0 -12
- package/lib/browser/utils/serialize.js.map +0 -1
- package/lib/esm/components/DateMapper.js.map +0 -1
- package/lib/esm/components/PrimitiveMapper.js.map +0 -1
- package/lib/esm/components/SymbolMapper.js.map +0 -1
- package/lib/esm/decorators/afterDeserialize.js.map +0 -1
- package/lib/esm/decorators/beforeDeserialize.js.map +0 -1
- package/lib/esm/decorators/jsonMapper.js.map +0 -1
- package/lib/esm/decorators/onDeserialize.js.map +0 -1
- package/lib/esm/decorators/onSerialize.js.map +0 -1
- package/lib/esm/domain/JsonDeserializer.js.map +0 -1
- package/lib/esm/domain/JsonDeserializerOptions.js.map +0 -1
- package/lib/esm/domain/JsonMapperCompiler.js.map +0 -1
- package/lib/esm/domain/JsonMapperGlobalOptions.js.map +0 -1
- package/lib/esm/domain/JsonMapperSettings.js.map +0 -1
- package/lib/esm/domain/JsonMapperTypesContainer.js.map +0 -1
- package/lib/esm/domain/JsonSerializer.js.map +0 -1
- package/lib/esm/domain/JsonSerializerOptions.js.map +0 -1
- package/lib/esm/domain/Writer.js.map +0 -1
- package/lib/esm/hooks/alterAfterDeserialize.js.map +0 -1
- package/lib/esm/hooks/alterBeforeDeserialize.js.map +0 -1
- package/lib/esm/hooks/alterOnDeserialize.js.map +0 -1
- package/lib/esm/hooks/alterOnSerialize.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/interfaces/JsonMapperMethods.js.map +0 -1
- package/lib/esm/utils/deserialize.js.map +0 -1
- package/lib/esm/utils/getObjectProperties.js.map +0 -1
- package/lib/esm/utils/serialize.js.map +0 -1
- package/src/components/DateMapper.spec.ts +0 -43
- package/src/components/DateMapper.ts +0 -29
- package/src/components/PrimitiveMapper.spec.ts +0 -179
- package/src/components/PrimitiveMapper.ts +0 -64
- package/src/components/SymbolMapper.spec.ts +0 -23
- package/src/components/SymbolMapper.ts +0 -19
- package/src/decorators/afterDeserialize.ts +0 -39
- package/src/decorators/beforeDeserialize.ts +0 -39
- package/src/decorators/jsonMapper.ts +0 -16
- package/src/decorators/onDeserialize.ts +0 -29
- package/src/decorators/onSerialize.ts +0 -29
- package/src/domain/JsonDeserializer.spec.ts +0 -1437
- package/src/domain/JsonDeserializer.ts +0 -402
- package/src/domain/JsonDeserializerOptions.ts +0 -31
- package/src/domain/JsonMapperCompiler.ts +0 -247
- package/src/domain/JsonMapperGlobalOptions.ts +0 -14
- package/src/domain/JsonMapperSettings.ts +0 -7
- package/src/domain/JsonMapperTypesContainer.ts +0 -20
- package/src/domain/JsonSerializer.spec.ts +0 -1506
- package/src/domain/JsonSerializer.ts +0 -371
- package/src/domain/JsonSerializerOptions.ts +0 -17
- package/src/domain/Writer.spec.ts +0 -11
- package/src/domain/Writer.ts +0 -181
- package/src/domain/__snapshots__/Writer.spec.ts.snap +0 -10
- package/src/hooks/alterAfterDeserialize.ts +0 -5
- package/src/hooks/alterBeforeDeserialize.ts +0 -5
- package/src/hooks/alterOnDeserialize.ts +0 -5
- package/src/hooks/alterOnSerialize.ts +0 -5
- package/src/index.ts +0 -28
- package/src/interfaces/JsonMapperMethods.ts +0 -32
- package/src/utils/deserialize.spec.ts +0 -33
- package/src/utils/deserialize.ts +0 -12
- package/src/utils/getObjectProperties.ts +0 -5
- package/src/utils/serialize.spec.ts +0 -37
- package/src/utils/serialize.ts +0 -12
- package/vite.config.mts +0 -45
- package/vitest.config.mts +0 -21
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsonDeserializer.js","sources":["../../../src/domain/JsonDeserializer.ts"],"sourcesContent":["import {classOf, isArray, isBoolean, isClass, isEmpty, isNil, nameOf, objectKeys, Type} from \"@tsed/core\";\nimport {getPropertiesStores, JsonClassStore, JsonEntityStore, JsonParameterStore, JsonPropertyStore} from \"@tsed/schema\";\n\nimport {alterAfterDeserialize} from \"../hooks/alterAfterDeserialize.js\";\nimport {alterBeforeDeserialize} from \"../hooks/alterBeforeDeserialize.js\";\nimport {alterOnDeserialize} from \"../hooks/alterOnDeserialize.js\";\nimport {JsonDeserializerOptions} from \"./JsonDeserializerOptions.js\";\nimport {CachedJsonMapper, JsonMapperCompiler} from \"./JsonMapperCompiler.js\";\nimport {JsonMapperSettings} from \"./JsonMapperSettings.js\";\nimport {getJsonMapperTypes} from \"./JsonMapperTypesContainer.js\";\nimport {Writer} from \"./Writer.js\";\n\nfunction isDeserializable(obj: any, options: JsonDeserializerOptions) {\n if ((!!options.collectionType && isNil(obj)) || obj === undefined) {\n return false;\n }\n\n return !(isEmpty(options.type) || (options.type === Object && !options.collectionType));\n}\n\nfunction varKey(k: string) {\n return `__${k}`;\n}\n\nfunction mapParamStoreOptions(store: JsonParameterStore, options: JsonDeserializerOptions) {\n return {\n ...options,\n store: undefined,\n type: store.getBestType(),\n collectionType: store.collectionType,\n groups: store.parameter.groups,\n // genericTypes: store.nestedGenerics[0],\n generics: store.nestedGenerics\n };\n}\n\nfunction getGenericIndex(propertyStore: JsonPropertyStore) {\n return propertyStore.parent.schema.genericLabels.indexOf(propertyStore.itemSchema.genericType);\n}\n\nexport class JsonDeserializer extends JsonMapperCompiler<JsonDeserializerOptions> {\n /**\n * Cached classes by his id\n * @protected\n */\n protected constructors: Record<string, Type<any>> = {};\n\n constructor() {\n super();\n\n this.addGlobal(\"newInstanceOf\", this.newInstanceOf.bind(this));\n this.addGlobal(\"alterBeforeDeserialize\", this.alterBeforeDeserialize.bind(this));\n this.addGlobal(\"alterAfterDeserialize\", this.alterAfterDeserialize.bind(this));\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.addTypeMapper(\"ObjectId\", (value: any) => String(value));\n }\n\n map<Model = any>(input: any, options: JsonDeserializerOptions = {}): Model {\n options = this.mapOptions(options);\n\n if (!isDeserializable(input, options)) {\n return input;\n }\n\n if (!options.collectionType && isArray(input)) {\n options.collectionType = Array;\n }\n\n const model = options.type || classOf(input);\n\n const mapper = this.compile(model, options.groups!);\n\n if (options.collectionType) {\n const collectionMapper = this.compile(options.collectionType, options.groups!);\n return collectionMapper.fn(input, {...options, id: mapper.id});\n }\n\n return mapper.fn(input, this.createContext(options));\n }\n\n compile(model: Type<any>, groups: false | string[]): CachedJsonMapper<JsonDeserializerOptions> {\n if ([WeakMap, WeakSet].includes(model)) {\n throw new Error(`${nameOf(model)} is not supported by JsonMapper.`);\n }\n\n return super.compile(model, groups);\n }\n\n eval(\n mapper: string,\n {\n id,\n groupsId,\n model\n }: {\n id: string;\n model: Type<any>;\n groupsId: string;\n }\n ): CachedJsonMapper<JsonDeserializerOptions> {\n this.constructors[id] = model;\n\n return super.eval(mapper, {id, groupsId, model});\n }\n\n protected newInstanceOf(id: string, obj: any, options: any) {\n try {\n return new this.constructors[id](options.disableUnsecureConstructor ? {} : obj);\n } catch (er) {\n return obj;\n }\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 if (entity.schema.hasDiscriminator) {\n writer.add(this.mapDiscriminator(entity, groups));\n }\n\n // pre hook\n if (entity.schema.$hooks?.has(\"beforeDeserialize\")) {\n this.schemes[id] = entity.schema;\n writer.set(\"input\", `alterBeforeDeserialize('${id}', input, options)`);\n }\n\n // generics and options\n writer.const(\"generics\", \"options.generics[0]\");\n\n if (entity.schema.genericLabels?.length) {\n writer.set(\"options\", \"{...options, self: input, generics: [...options.generics].slice(1)}\");\n } else {\n writer.set(\"options\", \"{...options, self: input}\");\n }\n\n writer.const(\"obj\", `newInstanceOf('${id}', input, options)`);\n\n // properties\n writer.add(\n ...schemaProperties.flatMap((propertyStore) => {\n const key = propertyStore.propertyName;\n\n // TODO V8 add this line: properties.add(key as string);\n properties.add(String(propertyStore.parent.schema.getAliasOf(key) || key));\n\n if (\n (propertyStore.schema?.$ignore && isBoolean(propertyStore.schema?.$ignore)) ||\n propertyStore.isGetterOnly() ||\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 // additional properties\n writer.add(this.mapAdditionalProperties(entity, properties, groups));\n\n // post hook\n if (entity.schema.$hooks?.has(\"afterDeserialize\")) {\n this.schemes[id] = entity.schema;\n\n return writer.return(`alterAfterDeserialize('${id}', obj, options)`).root().toString();\n }\n\n return writer.return(\"obj\").root().toString();\n }\n\n protected alterValue(schemaId: string, value: any, options: JsonDeserializerOptions): any {\n return alterOnDeserialize(this.schemes[schemaId], value, options as any);\n }\n\n private mapDiscriminator(entity: JsonClassStore, groups: false | string[]) {\n const writer = new Writer();\n const discriminator = entity.schema.discriminator();\n\n const sw = writer.switch(`input['${discriminator.propertyName}']`);\n\n discriminator.values.forEach((value, kind) => {\n const nestedMapper = this.compile(value, groups);\n\n sw.case(`'${kind}'`).returnCallMapper(nestedMapper.id, \"input\");\n });\n\n return writer;\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 const pick = key !== aliasKey ? `options.useAlias ? '${aliasKey}' : '${key}'` : `'${key}'`;\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 hasDeserializer = propertyStore.schema?.$hooks?.has(\"onDeserialize\");\n let getter = `input[${pick}]`;\n\n if (hasDeserializer) {\n this.schemes[schemaId] = propertyStore.schema;\n const opts = Writer.options(formatOpts);\n\n getter = `alterValue('${schemaId}', input[${pick}], ${opts})`;\n }\n\n const ifWriter = writer.set(`let ${varKey(key)}`, getter).if(`${varKey(key)} !== undefined`);\n\n const fill = this.getPropertyFiller(propertyStore, id, groups, formatOpts);\n\n if (hasDeserializer) {\n fill(ifWriter.if(`${varKey(key)} === input.${key}`));\n } else {\n fill(ifWriter);\n }\n\n ifWriter.set(`obj.${key}`, varKey(key));\n\n if (groups && groups.includes(\"partial\")) {\n ifWriter.else().add(`delete obj.${key}`);\n }\n\n return writer.root();\n }\n\n private getPropertyFiller(propertyStore: JsonPropertyStore, id: string, groups: false | string[], formatOpts: any) {\n const key = String(propertyStore.propertyKey);\n const schemaId = this.getSchemaId(id, key);\n const generics = propertyStore.itemSchema.nestedGenerics;\n const isGeneric = propertyStore.itemSchema.isGeneric && !generics?.length;\n\n if (isGeneric) {\n const index = getGenericIndex(propertyStore);\n const opts = Writer.options(formatOpts, `type: generics[${index}]`);\n\n return (writer: Writer) => writer.set(varKey(key), `compileAndMap(${varKey(key)}, ${opts})`);\n }\n\n const type = propertyStore.itemSchema.hasDiscriminator ? propertyStore.itemSchema.discriminator().base : propertyStore.getBestType();\n const nestedMapper = this.compile(type, groups);\n\n if (propertyStore.isCollection) {\n return (writer: Writer) =>\n writer.callMapper(nameOf(propertyStore.collectionType), varKey(key), `id: '${nestedMapper.id}'`, formatOpts);\n }\n\n if (generics?.length) {\n this.schemes[schemaId] = propertyStore.schema;\n\n return (writer: Writer) =>\n writer.callMapper(nestedMapper.id, varKey(key), formatOpts, `generics: schemes['${schemaId}'].nestedGenerics`);\n }\n\n return (writer: Writer) => writer.callMapper(nestedMapper.id, varKey(key), formatOpts);\n }\n\n private mapOptions({groups, useAlias = true, types, ...options}: JsonDeserializerOptions<any, any>): JsonDeserializerOptions {\n if (options.store instanceof JsonParameterStore) {\n return this.mapOptions(mapParamStoreOptions(options.store, options));\n }\n\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 const typeName = nameOf(model);\n\n if (nameOf(model) in mapper) {\n this.addTypeMapper(model as any, (mapper as any)[typeName].bind(mapper));\n } else {\n this.addTypeMapper(model as any, (value: any, options: any) =>\n mapper.deserialize(value, {\n ...options,\n type: model\n })\n );\n }\n }\n });\n\n const strictGroups = options.strictGroups ?? JsonMapperSettings.strictGroups;\n\n return {\n ...options,\n additionalProperties: options.additionalProperties ?? JsonMapperSettings.additionalProperties,\n disableUnsecureConstructor: options.disableUnsecureConstructor ?? JsonMapperSettings.disableUnsecureConstructor,\n groups: groups === undefined ? (strictGroups ? [] : false) : groups || false,\n useAlias,\n customMappers,\n generics: options.generics || []\n };\n }\n\n private mapAdditionalProperties(entity: JsonClassStore, properties: Set<string>, groups: string[] | false) {\n const additionalProperties = entity.schema.get(\"additionalProperties\");\n\n const exclude = [...properties.values()].map((key) => `'${key}'`).join(\", \");\n const writer = new Writer();\n\n writer.add(\"// add additional properties\");\n let each = writer.each(\"objectKeys(input)\", [\"key\"]);\n\n if (exclude.length) {\n each = each.if(`![${exclude}].includes(key)`);\n }\n\n if (isClass(additionalProperties)) {\n const nestedMapper = this.compile(additionalProperties.getComputedType(), groups);\n\n each.set(\"obj[key]\", Writer.mapper(nestedMapper.id, \"input[key]\", \"options\"));\n\n return writer;\n }\n\n if (additionalProperties) {\n each.set(\"obj[key]\", \"input[key]\");\n\n return writer;\n }\n\n // dynamic additional properties options\n each.if(`options.additionalProperties && obj[key] === undefined`).set(\"obj[key]\", \"input[key]\");\n\n return writer;\n }\n\n private mapObject(input: any, options: JsonDeserializerOptions) {\n return input;\n }\n\n private mapSet(input: any, options: JsonDeserializerOptions): Set<any> {\n if (isNil(input)) {\n return input;\n }\n\n const obj = new Set<any>();\n\n objectKeys(input).forEach((key) => {\n obj.add(this.mapItem(input[key], options));\n });\n\n return obj;\n }\n\n private mapArray(input: any, options: JsonDeserializerOptions) {\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: JsonDeserializerOptions): Map<string, any> {\n if (isNil(input)) {\n return input;\n }\n\n const obj = new Map<string, any>();\n\n objectKeys(input).forEach((key) => {\n obj.set(key, this.mapItem(input[key], options));\n });\n\n return obj;\n }\n\n private mapItem(input: any, {id, ...options}: JsonDeserializerOptions) {\n return this.execMapper(id, input, options);\n }\n\n private alterBeforeDeserialize(schemaId: string, value: any, options: JsonDeserializerOptions): any {\n return alterBeforeDeserialize(value, this.schemes[schemaId], options);\n }\n\n private alterAfterDeserialize(schemaId: string, value: any, options: JsonDeserializerOptions): any {\n return alterAfterDeserialize(value, this.schemes[schemaId], options);\n }\n}\n"],"names":["isDeserializable","obj","options","isNil","isEmpty","varKey","k","mapParamStoreOptions","store","getGenericIndex","propertyStore","JsonDeserializer","JsonMapperCompiler","value","input","isArray","model","classOf","mapper","groups","nameOf","id","groupsId","entity","JsonEntityStore","properties","schemaProperties","getPropertiesStores","writer","Writer","_a","_b","key","isBoolean","_d","_c","schemaId","alterOnDeserialize","discriminator","sw","kind","nestedMapper","aliasKey","format","formatOpts","pick","hasDeserializer","getter","opts","ifWriter","fill","generics","index","type","useAlias","types","JsonParameterStore","customMappers","getJsonMapperTypes","typeName","strictGroups","JsonMapperSettings","additionalProperties","exclude","each","isClass","objectKeys","item","alterBeforeDeserialize","alterAfterDeserialize"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsonDeserializerOptions.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { isMomentObject, objectKeys, isDate, isNil, isMongooseObject, hasJsonMethod, nameOf, classOf, isObject, isClass, isCollection, isString, isObjectID, ancestorsOf, getRandomId } from "@tsed/core";
|
|
2
|
-
class JsonMapperCompiler {
|
|
3
|
-
constructor() {
|
|
4
|
-
this.cache = /* @__PURE__ */ new Map(), this.mappers = {}, this.schemes = {}, this.constructors = {}, this.globals = {
|
|
5
|
-
isCollection,
|
|
6
|
-
isClass,
|
|
7
|
-
isObject,
|
|
8
|
-
classOf,
|
|
9
|
-
nameOf,
|
|
10
|
-
hasJsonMethod,
|
|
11
|
-
isMongooseObject,
|
|
12
|
-
isNil,
|
|
13
|
-
isDate,
|
|
14
|
-
objectKeys,
|
|
15
|
-
isMomentObject
|
|
16
|
-
}, this.addGlobal("alterIgnore", this.alterIgnore.bind(this)), this.addGlobal("alterValue", this.alterValue.bind(this)), this.addGlobal("execMapper", this.execMapper.bind(this)), this.addGlobal("compileAndMap", this.map.bind(this));
|
|
17
|
-
}
|
|
18
|
-
addTypeMapper(e, t) {
|
|
19
|
-
const s = nameOf(e);
|
|
20
|
-
return this.cache.set(
|
|
21
|
-
e,
|
|
22
|
-
(/* @__PURE__ */ new Map()).set("typeMapper", {
|
|
23
|
-
id: s,
|
|
24
|
-
fn: t
|
|
25
|
-
})
|
|
26
|
-
), this.mappers[s] = t, this;
|
|
27
|
-
}
|
|
28
|
-
removeTypeMapper(e) {
|
|
29
|
-
const t = this.cache.get(e);
|
|
30
|
-
if (t) {
|
|
31
|
-
const { id: s } = t.get("typeMapper");
|
|
32
|
-
delete this.mappers[s], this.cache.delete(e);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
addGlobal(e, t) {
|
|
36
|
-
return this.globals[e] = t, this;
|
|
37
|
-
}
|
|
38
|
-
eval(mapper, { id, groupsId, model }) {
|
|
39
|
-
this.addGlobal("cache", this.cache);
|
|
40
|
-
const { globals, schemes } = this, injectGlobals = Object.keys(globals).map((e) => `const ${e} = globals.${e};`).join(`
|
|
41
|
-
`);
|
|
42
|
-
eval(`${injectGlobals};
|
|
43
|
-
|
|
44
|
-
cache.get(model).set(groupsId, { id: '${id}', fn: ${mapper} })`);
|
|
45
|
-
const store = this.cache.get(model).get(groupsId);
|
|
46
|
-
return this.mappers[id] = store.fn, store;
|
|
47
|
-
}
|
|
48
|
-
createContext(e) {
|
|
49
|
-
const { cache: t } = this;
|
|
50
|
-
return {
|
|
51
|
-
...e,
|
|
52
|
-
cache: t
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
compile(e, t, s = {}) {
|
|
56
|
-
const r = isString(e) ? e : this.getType(e), i = this.getGroupsId(t);
|
|
57
|
-
let a = this.cache.get(r) || this.cache.get(nameOf(r));
|
|
58
|
-
if (a || (a = /* @__PURE__ */ new Map(), this.cache.set(r, a)), a.has("typeMapper"))
|
|
59
|
-
return a.get("typeMapper");
|
|
60
|
-
if (!a.has(i)) {
|
|
61
|
-
const o = this.getId(r, i);
|
|
62
|
-
a.set(i, {
|
|
63
|
-
id: o
|
|
64
|
-
});
|
|
65
|
-
const n = s.mapper ? s.mapper(o, t) : this.createMapper(r, o, t);
|
|
66
|
-
try {
|
|
67
|
-
return this.eval(n, { id: o, model: r, groupsId: i });
|
|
68
|
-
} catch (c) {
|
|
69
|
-
throw new Error(`Fail to compile mapper for ${nameOf(e)}. See the error above: ${c.message}.
|
|
70
|
-
${n}`);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return a.get(i);
|
|
74
|
-
}
|
|
75
|
-
execMapper(e, t, s) {
|
|
76
|
-
return isObjectID(t) ? t.toString() : this.mappers[e || nameOf(classOf(t))](t, s);
|
|
77
|
-
}
|
|
78
|
-
getType(e) {
|
|
79
|
-
if (!e)
|
|
80
|
-
return Object;
|
|
81
|
-
if (isClass(e) && !isCollection(e)) {
|
|
82
|
-
const t = [Array, Map, Set].find((s) => ancestorsOf(e).includes(s));
|
|
83
|
-
if (t)
|
|
84
|
-
return t;
|
|
85
|
-
}
|
|
86
|
-
return e;
|
|
87
|
-
}
|
|
88
|
-
alterIgnore(e, t) {
|
|
89
|
-
var r, i;
|
|
90
|
-
let s = (i = (r = this.schemes[e]) == null ? void 0 : r.$hooks) == null ? void 0 : i.alter("ignore", !1, [t]);
|
|
91
|
-
if (s)
|
|
92
|
-
return s;
|
|
93
|
-
}
|
|
94
|
-
alterGroups(e, t) {
|
|
95
|
-
return t !== !1 ? e.$hooks.alter("groups", !1, [t]) : !1;
|
|
96
|
-
}
|
|
97
|
-
getGroupsId(e) {
|
|
98
|
-
return e === !1 ? "default" : e.length === 0 ? "-" : e.join(",");
|
|
99
|
-
}
|
|
100
|
-
getId(e, t) {
|
|
101
|
-
return `${isString(e) ? e : nameOf(e)}:${getRandomId()}:${t}`;
|
|
102
|
-
}
|
|
103
|
-
getSchemaId(e, t) {
|
|
104
|
-
return `${e}:${t}`;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
export {
|
|
108
|
-
JsonMapperCompiler
|
|
109
|
-
};
|
|
110
|
-
//# sourceMappingURL=JsonMapperCompiler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsonMapperCompiler.js","sources":["../../../src/domain/JsonMapperCompiler.ts"],"sourcesContent":["import {\n ancestorsOf,\n classOf,\n getRandomId,\n hasJsonMethod,\n isClass,\n isCollection,\n isDate,\n isMomentObject,\n isMongooseObject,\n isNil,\n isObject,\n isObjectID,\n isString,\n nameOf,\n objectKeys,\n Type\n} from \"@tsed/core\";\nimport {JsonSchema} from \"@tsed/schema\";\n\nexport type JsonMapperCallback<Options> = (input: any, options?: Options) => any;\nexport type CachedJsonMapper<Options> = {\n id: string;\n fn: JsonMapperCallback<Options>;\n};\n\nexport type CachedGroupsJsonMapper<Options> = Map<string, CachedJsonMapper<Options>>;\n\nexport abstract class JsonMapperCompiler<Options extends Record<string, any> = any> {\n /**\n * Cached mappers metadata\n * @protected\n */\n protected cache = new Map<Type<any> | string, CachedGroupsJsonMapper<Options>>();\n /**\n * Cached executable mappers by his id\n * @protected\n */\n protected mappers: Record<string, JsonMapperCallback<Options>> = {};\n /**\n * Cached schemas\n * @protected\n */\n protected schemes: Record<string, any> = {};\n\n /**\n * Cached classes by his id\n * @protected\n */\n protected constructors: Record<string, Type<any>> = {};\n /**\n * Global variables available in the mapper\n * @protected\n */\n protected globals: Record<string, any> = {\n isCollection,\n isClass,\n isObject,\n classOf,\n nameOf,\n hasJsonMethod,\n isMongooseObject,\n isNil,\n isDate,\n objectKeys,\n isMomentObject\n };\n\n constructor() {\n this.addGlobal(\"alterIgnore\", this.alterIgnore.bind(this));\n this.addGlobal(\"alterValue\", this.alterValue.bind(this));\n this.addGlobal(\"execMapper\", this.execMapper.bind(this));\n this.addGlobal(\"compileAndMap\", this.map.bind(this));\n }\n\n addTypeMapper(model: Type<any> | string, fn: any) {\n const id = nameOf(model);\n\n this.cache.set(\n model,\n new Map().set(\"typeMapper\", {\n id,\n fn\n })\n );\n\n this.mappers[id] = fn;\n\n return this;\n }\n\n removeTypeMapper(model: Type<any> | string) {\n const store = this.cache.get(model);\n\n if (store) {\n const {id} = store.get(\"typeMapper\")!;\n\n delete this.mappers[id];\n this.cache.delete(model);\n }\n }\n\n addGlobal(key: string, value: any) {\n this.globals[key] = value;\n\n return this;\n }\n\n eval(mapper: string, {id, groupsId, model}: {id: string; model: Type<any> | string; groupsId: string}) {\n this.addGlobal(\"cache\", this.cache);\n\n const {globals, schemes} = this;\n\n const injectGlobals = Object.keys(globals)\n .map((name) => {\n return `const ${name} = globals.${name};`;\n })\n .join(\"\\n\");\n\n eval(`${injectGlobals};\n\n cache.get(model).set(groupsId, { id: '${id}', fn: ${mapper} })`);\n\n const store = this.cache.get(model)!.get(groupsId)!;\n\n this.mappers[id] = store.fn;\n\n return store;\n }\n\n createContext(options: Options) {\n const {cache} = this;\n\n return {\n ...options,\n cache\n };\n }\n\n compile(\n model: Type<any> | string,\n groups: false | string[],\n opts: {\n mapper?: any;\n } = {}\n ): CachedJsonMapper<Options> {\n const token = isString(model) ? model : this.getType(model);\n\n const groupsId = this.getGroupsId(groups);\n let storeGroups = this.cache.get(token) || this.cache.get(nameOf(token));\n\n if (!storeGroups) {\n storeGroups = new Map();\n this.cache.set(token, storeGroups);\n }\n\n if (storeGroups.has(\"typeMapper\")) {\n return storeGroups.get(\"typeMapper\")!;\n }\n\n // generate mapper for the given groups\n if (!storeGroups.has(groupsId)) {\n const id = this.getId(token, groupsId);\n\n // prevent circular dependencies\n storeGroups.set(groupsId, {\n id\n } as any);\n\n const mapper = opts.mapper ? opts.mapper(id, groups) : this.createMapper(token as Type<any>, id, groups);\n\n try {\n return this.eval(mapper, {id, model: token, groupsId});\n } catch (err) {\n throw new Error(`Fail to compile mapper for ${nameOf(model)}. See the error above: ${err.message}.\\n${mapper}`);\n }\n }\n\n return storeGroups!.get(groupsId)!;\n }\n\n protected execMapper(id: string, value: any, options: Options) {\n if (isObjectID(value)) {\n return value.toString();\n }\n\n return this.mappers[id || nameOf(classOf(value))](value, options);\n }\n\n protected abstract map(input: any, options: Options): any;\n\n protected abstract alterValue(schemaId: string, value: any, options: Options): any;\n\n protected abstract createMapper(model: Type<any>, id: string, groups: false | string[]): string;\n\n protected getType(model: Type<any>) {\n if (!model) {\n return Object;\n }\n\n if (isClass(model) && !isCollection(model)) {\n const type = [Array, Map, Set].find((t) => ancestorsOf(model).includes(t));\n\n if (type) {\n return type;\n }\n }\n\n return model;\n }\n\n protected alterIgnore(id: string, options: Options) {\n let result = this.schemes[id]?.$hooks?.alter(\"ignore\", false, [options]);\n\n if (result) {\n return result;\n }\n }\n\n protected alterGroups(schema: JsonSchema, groups: false | string[]) {\n if (groups !== false) {\n return schema.$hooks.alter(\"groups\", false, [groups]);\n }\n\n return false;\n }\n\n protected getGroupsId(groups: false | string[]) {\n if (groups === false) {\n return \"default\";\n }\n\n if (groups.length === 0) {\n return \"-\";\n }\n\n return groups.join(\",\");\n }\n\n protected getId(model: Type<any> | string, groupsId: string) {\n return `${isString(model) ? model : nameOf(model)}:${getRandomId()}:${groupsId}`;\n }\n\n protected getSchemaId(id: string, propertyKey: string) {\n return `${id}:${propertyKey}`;\n }\n}\n"],"names":["model","fn","id","store","key","value","name","options","cache","groups","opts","token","groupsId","storeGroups","mapper","err","type","t","result","_b","_a","schema","propertyKey"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsonMapperGlobalOptions.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsonMapperSettings.js","sources":["../../../src/domain/JsonMapperSettings.ts"],"sourcesContent":["import type {JsonMapperGlobalOptions} from \"./JsonMapperGlobalOptions.js\";\n\nexport const JsonMapperSettings: JsonMapperGlobalOptions = {\n disableUnsecureConstructor: true,\n additionalProperties: false,\n strictGroups: false\n};\n"],"names":["JsonMapperSettings"],"mappings":"AAEO,MAAMA,IAA8C;AAAA,EACzD,4BAA4B;AAAA,EAC5B,sBAAsB;AAAA,EACtB,cAAc;AAChB;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsonMapperTypesContainer.js","sources":["../../../src/domain/JsonMapperTypesContainer.ts"],"sourcesContent":["import {Type} from \"@tsed/core\";\n\nimport {JsonMapperMethods} from \"../interfaces/JsonMapperMethods.js\";\n/**\n * @ignore\n */\n// tslint:disable-next-line:variable-name\nconst JsonMapperTypesContainer: Map<Type<any> | Symbol | string, JsonMapperMethods> = new Map();\n/**\n * @ignore\n */\nexport function registerJsonTypeMapper(type: Type<any> | Symbol | string, token: Type<JsonMapperMethods>) {\n JsonMapperTypesContainer.set(type, new token());\n}\n/**\n * @ignore\n */\nexport function getJsonMapperTypes(): Map<Type<any> | Symbol | string, JsonMapperMethods> {\n return JsonMapperTypesContainer;\n}\n"],"names":["JsonMapperTypesContainer","registerJsonTypeMapper","type","token","getJsonMapperTypes"],"mappings":"AAOA,MAAMA,wBAAoF,IAAI;AAI9E,SAAAC,EAAuBC,GAAmCC,GAAgC;AACxG,EAAAH,EAAyB,IAAIE,GAAM,IAAIC,EAAA,CAAO;AAChD;AAIO,SAASC,IAA0E;AACjF,SAAAJ;AACT;"}
|
|
@@ -1,164 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsonSerializerOptions.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,124 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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":";;;;;AAAO,MAAMA,IAAN,MAAMA,EAAO;AAAA,EAWlB,YAAYC,GAAe;AAH3B,SAAU,OAA4B,CAAC,GAIrC,KAAK,QAAQA;AAAA,EAAA;AAAA,EAGf,OAAO,OAAOC,GAAiB;AAC7B,WAAOA,EAAM,IAAI,CAACC,MAAM,IAAKA,CAAC,EAAE;AAAA,EAAA;AAAA,EAGlC,OAAO,OAAOC,GAAkBC,GAAaC,GAAiB;AAC5D,WAAO,eAAeF,CAAQ,MAAMC,CAAG,KAAKC,CAAO;AAAA,EAAA;AAAA,EAGrD,OAAO,WAAWD,GAAaC,GAAiB;AAC9C,WAAO,6BAA6BD,CAAG,OAAOA,CAAG,KAAKC,CAAO;AAAA,EAAA;AAAA,EAG/D,OAAO,WAAWC,GAAgB;AACzB,WAAAA,IAAAA,EAAK,OAAO,OAAO,GAClBA,EAAK,SAAqBP,EAAO,OAAO,OAAO,cAAc,GAAGO,CAAI,IAAtD;AAAA,EAAsD;AAAA,EAG9E,OAAOL,GAAwC;AAC7C,WAAAA,IAAQA,EAAM,OAAO,CAACM,MAASA,MAAS,MAAS,GAEjDN,EAAM,UAAU,KAAK,KAAK,KAAK,GAAIA,CAA2B,GAEvD;AAAA,EAAA;AAAA,EAGT,SAASK,GAAgB;AAClB,SAAA,IAAI,IAAIA,CAAI,QAAQ;AAEnB,UAAAE,IAAS,KAAK,IAAI;AAExB,gBAAK,IAAI,GAAG,GAELA;AAAA,EAAA;AAAA,EAGT,QAAkB;AAChB,UAAMC,IAAS,KAAK,KAAK,QAAQ,CAACF,MACzBA,aAAgBR,IAASQ,EAAK,MAAU,IAAAA,CAChD;AAEM,WAAA,KAAK,UAAUE,EAAO,IAAI,CAACC,MAAS,MAAOA,CAAI,IAAID;AAAA,EAAA;AAAA,EAG5D,WAAWE,GAAYP,MAAgBC,GAAmB;AACxD,WAAO,KAAK,IAAID,GAAKL,EAAO,OAAOY,GAAIP,GAAKL,EAAO,QAAQ,GAAGM,CAAO,CAAC,CAAC;AAAA,EAAA;AAAA,EAGzE,iBAAiBM,GAAYP,MAAgBC,GAAmB;AACvD,WAAA,KAAK,OAAON,EAAO,OAAOY,GAAIP,GAAKL,EAAO,QAAQ,GAAGM,CAAO,CAAC,CAAC;AAAA,EAAA;AAAA,EAGvE,MAAMO,GAAcL,GAAc;AAChC,gBAAK,IAAI,SAASK,CAAI,MAAML,CAAI,GAAG,GAC5B;AAAA,EAAA;AAAA,EAGT,KAAKM,GAAkBP,IAAiB,IAAI;AACpC,UAAAE,IAAS,KAAK,IAAIK,IAAW,eAAeP,EAAK,KAAK,IAAI,IAAI,QAAQ,EAAE,IAAI;AAElF,gBAAK,IAAI,KAAK,GAEPE;AAAA,EAAA;AAAA,EAGT,GAAGM,GAAmB;AACpB,UAAMN,IAAS,IAAIO,EAASD,GAAW,IAAI;AAE3C,gBAAK,IAAIN,CAAM,GAERA;AAAA,EAAA;AAAA,EAGT,OAAOQ,GAAe;AACd,UAAAC,IAAK,IAAIC,EAAaF,CAAK;AAEjC,gBAAK,IAAIC,CAAE,GAEJA;AAAA,EAAA;AAAA,EAGT,OAAOE,GAAiB;AACtB,gBAAK,UAAUA,GACR;AAAA,EAAA;AAAA,EAGT,IAAIA,IAAS,IAAM;AACjB,UAAMX,IAAS,IAAIT,EAAO,KAAK,MAAM;AACrC,WAAAS,EAAO,OAAOW,CAAM,GACpB,KAAK,IAAIX,CAAM,GAERA;AAAA,EAAA;AAAA,EAGT,OAAOD,GAAc;AACd,gBAAA,IAAI,UAAUA,CAAI,GAAG,GACnB,KAAK,KAAK;AAAA,EAAA;AAAA,EAGnB,OAAO;AACL,WAAO,KAAK,SAAS;AAAA,EAAA;AAAA,EAGvB,IAAIa,GAAcC,GAAe;AAC/B,gBAAK,IAAI,GAAGD,CAAI,MAAMC,CAAK,GAAG,GACvB;AAAA,EAAA;AAAA,EAGT,WAAW;AACT,WAAO,KAAK,QAAQ,KAAK;AAAA,CAAI;AAAA,EAAA;AAEjC;AA5HEtB,EAAO,SAAS;AAAA,EACd,UAAUO,GAAgB;AACxB,WAAO,KAAKA,EAAK,OAAO,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,EAAA;AAE/C;AALK,IAAMgB,IAANvB;AA+HP,MAAMgB,UAAiBO,EAAO;AAAA,EAG5B,YACYR,GACVd,GACA;AACM,UAAA,GAHI,KAAA,YAAAc,GAIV,KAAK,QAAQd;AAAA,EAAA;AAAA,EAGf,OAAO;AACL,UAAMQ,IAAS,IAAIc,EAAO,KAAK,KAAK;AAEpC,gBAAK,aAAad,GAEXA;AAAA,EAAA;AAAA,EAGT,QAAQ;AACC,WAAA;AAAA,MACL,OAAO,KAAK,SAAS;AAAA,MACrB,GAAGc,EAAO,OAAO,MAAM,OAAO;AAAA,MAC9B;AAAA,MACA,KAAK,aAAa,CAAC,UAAU,GAAGA,EAAO,OAAO,KAAK,WAAW,OAAO,GAAG,GAAG,IAAI,CAAA;AAAA,MAC/E,KAAK;AAAA,EAAA;AAEX;AA1JO,IAAAC;AA4JP,MAAML,UAAqBI,EAAO;AAAA,EAGhC,YAAoBN,GAAe;AAC3B,UAAA;AAHR,IAAAQ,EAAA,MAAAD,uBAAW,IAAoB;AAEX,SAAA,QAAAP;AAAA,EAAA;AAAA,EAIpB,KAAKF,GAAmB;AAChB,UAAAN,IAAS,IAAIc,EAAO;AACrB,WAAAG,EAAA,MAAAF,GAAK,IAAIT,GAAWN,CAAM,GACxBA;AAAA,EAAA;AAAA,EAGT,QAAQ;AACC,WAAA;AAAA,MACL,WAAW,KAAK,KAAK;AAAA,MACrB,GAAGc,EAAO;AAAA,QACR,MAAM,KAAKG,EAAA,MAAKF,GAAK,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAACT,GAAWN,CAAM,MAClD,CAACM,MAAc,YAAY,GAAGA,CAAS,MAAM,QAAQA,CAAS,KAAK,GAAGQ,EAAO,OAAOd,EAAO,MAAA,CAAO,CAAC,CAC3G;AAAA,MACH;AAAA,MACA;AAAA,MACA,KAAK;AAAA,EAAA;AAEX;AAvBEe,IAAA;"}
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|