UNPKG

@dipscope/type-manager

Version:

Transform JSON strings or plain objects into JS class instances.

58 lines 2.09 kB
export class TypeScope { constructor() { this.opened = false; this.propertyOptionsArrayMap = new Map(); this.injectOptionsArrayMap = new Map(); return; } open() { this.opened = true; this.propertyOptionsArrayMap.clear(); this.injectOptionsArrayMap.clear(); return this; } addPropertyOptions(propertyName, propertyOptions) { if (!this.opened) { return this; } let propertyOptionsArray = this.propertyOptionsArrayMap.get(propertyName); if (propertyOptionsArray === undefined) { propertyOptionsArray = new Array(); this.propertyOptionsArrayMap.set(propertyName, propertyOptionsArray); } propertyOptionsArray.push(propertyOptions); return this; } addInjectOptions(injectIndex, injectOptions) { if (!this.opened) { return this; } let injectOptionsArray = this.injectOptionsArrayMap.get(injectIndex); if (injectOptionsArray === undefined) { injectOptionsArray = new Array(); this.injectOptionsArrayMap.set(injectIndex, injectOptionsArray); } injectOptionsArray.push(injectOptions); return this; } close(typeMetadata) { if (!this.opened) { return this; } for (const [propertyName, propertyOptionsArray] of this.propertyOptionsArrayMap) { for (let i = 0; i < propertyOptionsArray.length; i++) { typeMetadata.configurePropertyMetadata(propertyName, propertyOptionsArray[i]); } } for (const [injectIndex, injectOptionsArray] of this.injectOptionsArrayMap) { for (let i = 0; i < injectOptionsArray.length; i++) { typeMetadata.configureInjectMetadata(injectIndex, injectOptionsArray[i]); } } this.injectOptionsArrayMap.clear(); this.propertyOptionsArrayMap.clear(); this.opened = false; return this; } } //# sourceMappingURL=type-scope.js.map