UNPKG

cerializr

Version:

(de)serialization made easy with ES7/Typescript annotations (decorators)

1 lines 2.42 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const interfaces_1=require("./interfaces"),string_transforms_1=require("./string_transforms"),TypeMap=new Map;var MetaDataFlag;!function(e){e[e.DeserializePrimitive=2]="DeserializePrimitive",e[e.SerializePrimitive=4]="SerializePrimitive",e[e.DeserializeArray=8]="DeserializeArray",e[e.SerializeArray=16]="SerializeArray",e[e.DeserializeMap=32]="DeserializeMap",e[e.SerializeMap=64]="SerializeMap",e[e.DeserializeJSON=128]="DeserializeJSON",e[e.SerializeJSON=256]="SerializeJSON",e[e.DeserializeUsing=2048]="DeserializeUsing",e[e.SerializeUsing=4096]="SerializeUsing",e[e.DeserializeObject=8192]="DeserializeObject",e[e.SerializeObject=16384]="SerializeObject",e[e.AutoPrimitive=6]="AutoPrimitive",e[e.AutoUsing=6144]="AutoUsing"}(MetaDataFlag=exports.MetaDataFlag||(exports.MetaDataFlag={}));class MetaData{constructor(e){this.transformKey=!0,this.keyName=e,this.serializedKey="",this.deserializedKey="",this.deserializedType=Function,this.serializedType=Function,this.flags=0}getSerializedKey(){return this.serializedKey===this.keyName?MetaData.serializeKeyTransform(this.keyName):this.serializedKey?this.serializedKey:this.keyName}getDeserializedKey(){return this.deserializedKey===this.keyName?MetaData.deserializeKeyTransform(this.keyName):MetaData.deserializeKeyTransform(this.deserializedKey?this.deserializedKey:this.keyName)}static hasKeyName(e,a){for(var i=0;i<e.length;i++)if(e[i].keyName===a)return!0;return!1}static clone(e){const a=new MetaData(e.keyName);return a.deserializedKey=e.deserializedKey,a.serializedKey=e.serializedKey,a.serializedType=e.serializedType,a.deserializedType=e.deserializedType,a.transformKey=e.transformKey,a.flags=e.flags,a}static getMetaData(e,a){var i=TypeMap.get(e);void 0===i&&(i=[],TypeMap.set(e,i));for(var t=0;t<i.length;t++)if(i[t].keyName===a)return i[t];return i.push(new MetaData(a)),i[i.length-1]}static inheritMetaData(e,a){for(var i=TypeMap.get(e)||[],t=TypeMap.get(a)||[],r=0;r<i.length;r++){const e=i[r].keyName;MetaData.hasKeyName(t,e)||t.push(MetaData.clone(i[r]))}TypeMap.set(a,t)}static getMetaDataForType(e){return null!=e&&TypeMap.get(e)||null}}exports.MetaData=MetaData,MetaData.TypeMap=TypeMap,MetaData.serializeKeyTransform=string_transforms_1.NoOp,MetaData.deserializeKeyTransform=string_transforms_1.NoOp,MetaData.deserializeInstantationMethod=interfaces_1.InstantiationMethod.New;