UNPKG

19.2 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/metadata/MetadataStorage.ts"],"names":[],"mappings":"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","file":"MetadataStorage.js","sourcesContent":["import {TypeMetadata} from \"./TypeMetadata\";\r\nimport {ExposeMetadata} from \"./ExposeMetadata\";\r\nimport {ExcludeMetadata} from \"./ExcludeMetadata\";\r\nimport {TransformationType} from \"../TransformOperationExecutor\";\r\nimport {TransformMetadata} from \"./TransformMetadata\";\r\n\r\n/**\r\n * Storage all library metadata.\r\n */\r\nexport class MetadataStorage {\r\n\r\n // -------------------------------------------------------------------------\r\n // Properties\r\n // -------------------------------------------------------------------------\r\n\r\n private _typeMetadatas = new Map<Function, Map<string, TypeMetadata>>();\r\n private _transformMetadatas = new Map<Function, Map<string, TransformMetadata[]>>();\r\n private _exposeMetadatas = new Map<Function, Map<string, ExposeMetadata>>();\r\n private _excludeMetadatas = new Map<Function, Map<string, ExcludeMetadata>>();\r\n private _ancestorsMap = new Map<Function, Function[]>();\r\n\r\n // -------------------------------------------------------------------------\r\n // Adder Methods\r\n // -------------------------------------------------------------------------\r\n\r\n addTypeMetadata(metadata: TypeMetadata) {\r\n if (!this._typeMetadatas.has(metadata.target)) {\r\n this._typeMetadatas.set(metadata.target, new Map<string, TypeMetadata>());\r\n }\r\n this._typeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\r\n }\r\n\r\n addTransformMetadata(metadata: TransformMetadata) {\r\n if (!this._transformMetadatas.has(metadata.target)) {\r\n this._transformMetadatas.set(metadata.target, new Map<string, TransformMetadata[]>());\r\n }\r\n if (!this._transformMetadatas.get(metadata.target).has(metadata.propertyName)) {\r\n this._transformMetadatas.get(metadata.target).set(metadata.propertyName, []);\r\n }\r\n this._transformMetadatas.get(metadata.target).get(metadata.propertyName).push(metadata);\r\n }\r\n\r\n addExposeMetadata(metadata: ExposeMetadata) {\r\n if (!this._exposeMetadatas.has(metadata.target)) {\r\n this._exposeMetadatas.set(metadata.target, new Map<string, ExposeMetadata>());\r\n }\r\n this._exposeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\r\n }\r\n\r\n addExcludeMetadata(metadata: ExcludeMetadata) {\r\n if (!this._excludeMetadatas.has(metadata.target)) {\r\n this._excludeMetadatas.set(metadata.target, new Map<string, ExcludeMetadata>());\r\n }\r\n this._excludeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\r\n }\r\n\r\n // -------------------------------------------------------------------------\r\n // Public Methods\r\n // -------------------------------------------------------------------------\r\n\r\n findTransformMetadatas(target: Function, propertyName: string, transformationType: TransformationType): TransformMetadata[] {\r\n return this.findMetadatas(this._transformMetadatas, target, propertyName)\r\n .filter(metadata => {\r\n if (!metadata.options)\r\n return true;\r\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true)\r\n return true;\r\n\r\n if (metadata.options.toClassOnly === true) {\r\n return transformationType === TransformationType.CLASS_TO_CLASS || transformationType === TransformationType.PLAIN_TO_CLASS;\r\n }\r\n if (metadata.options.toPlainOnly === true) {\r\n return transformationType === TransformationType.CLASS_TO_PLAIN;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n findExcludeMetadata(target: Function, propertyName: string): ExcludeMetadata {\r\n return this.findMetadata(this._excludeMetadatas, target, propertyName);\r\n }\r\n\r\n findExposeMetadata(target: Function, propertyName: string): ExposeMetadata {\r\n return this.findMetadata(this._exposeMetadatas, target, propertyName);\r\n }\r\n\r\n findExposeMetadataByCustomName(target: Function, name: string): ExposeMetadata {\r\n return this.getExposedMetadatas(target).find(metadata => {\r\n return metadata.options && metadata.options.name === name;\r\n });\r\n }\r\n\r\n findTypeMetadata(target: Function, propertyName: string) {\r\n return this.findMetadata(this._typeMetadatas, target, propertyName);\r\n }\r\n\r\n getStrategy(target: Function): \"excludeAll\"|\"exposeAll\"|\"none\" {\r\n const excludeMap = this._excludeMetadatas.get(target);\r\n const exclude = excludeMap && excludeMap.get(undefined);\r\n const exposeMap = this._exposeMetadatas.get(target);\r\n const expose = exposeMap && exposeMap.get(undefined);\r\n if ((exclude && expose) || (!exclude && !expose)) return \"none\";\r\n return exclude ? \"excludeAll\" : \"exposeAll\";\r\n }\r\n\r\n getExposedMetadatas(target: Function): ExposeMetadata[] {\r\n return this.getMetadata(this._exposeMetadatas, target);\r\n }\r\n\r\n getExcludedMetadatas(target: Function): ExcludeMetadata[] {\r\n return this.getMetadata(this._excludeMetadatas, target);\r\n }\r\n\r\n getExposedProperties(target: Function, transformationType: TransformationType): string[] {\r\n return this.getExposedMetadatas(target)\r\n .filter(metadata => {\r\n if (!metadata.options)\r\n return true;\r\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true)\r\n return true;\r\n\r\n if (metadata.options.toClassOnly === true) {\r\n return transformationType === TransformationType.CLASS_TO_CLASS || transformationType === TransformationType.PLAIN_TO_CLASS;\r\n }\r\n if (metadata.options.toPlainOnly === true) {\r\n return transformationType === TransformationType.CLASS_TO_PLAIN;\r\n }\r\n\r\n return true;\r\n })\r\n .map(metadata => metadata.propertyName);\r\n }\r\n\r\n getExcludedProperties(target: Function, transformationType: TransformationType): string[] {\r\n return this.getExcludedMetadatas(target)\r\n .filter(metadata => {\r\n if (!metadata.options)\r\n return true;\r\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true)\r\n return true;\r\n\r\n if (metadata.options.toClassOnly === true) {\r\n return transformationType === TransformationType.CLASS_TO_CLASS || transformationType === TransformationType.PLAIN_TO_CLASS;\r\n }\r\n if (metadata.options.toPlainOnly === true) {\r\n return transformationType === TransformationType.CLASS_TO_PLAIN;\r\n }\r\n\r\n return true;\r\n })\r\n .map(metadata => metadata.propertyName);\r\n }\r\n\r\n clear() {\r\n this._typeMetadatas.clear();\r\n this._exposeMetadatas.clear();\r\n this._excludeMetadatas.clear();\r\n this._ancestorsMap.clear();\r\n }\r\n\r\n // -------------------------------------------------------------------------\r\n // Private Methods\r\n // -------------------------------------------------------------------------\r\n\r\n private getMetadata<T extends { target: Function, propertyName: string }>(metadatas: Map<Function, Map<String, T>>, target: Function): T[] {\r\n const metadataFromTargetMap = metadatas.get(target);\r\n let metadataFromTarget: T[];\r\n if (metadataFromTargetMap) {\r\n metadataFromTarget = Array.from(metadataFromTargetMap.values()).filter(meta => meta.propertyName !== undefined);\r\n }\r\n let metadataFromAncestors: T[] = [];\r\n for (const ancestor of this.getAncestors(target)) {\r\n const ancestorMetadataMap = metadatas.get(ancestor);\r\n if (ancestorMetadataMap) {\r\n const metadataFromAncestor = Array.from(ancestorMetadataMap.values()).filter(meta => meta.propertyName !== undefined);\r\n metadataFromAncestors.push(...metadataFromAncestor);\r\n }\r\n } \r\n return metadataFromAncestors.concat(metadataFromTarget || []);\r\n }\r\n\r\n private findMetadata<T extends { target: Function, propertyName: string }>(metadatas: Map<Function, Map<string, T>>, target: Function, propertyName: string): T {\r\n const metadataFromTargetMap = metadatas.get(target);\r\n if (metadataFromTargetMap) {\r\n const metadataFromTarget = metadataFromTargetMap.get(propertyName); \r\n if (metadataFromTarget) {\r\n return metadataFromTarget;\r\n }\r\n }\r\n for (const ancestor of this.getAncestors(target)) {\r\n const ancestorMetadataMap = metadatas.get(ancestor);\r\n if (ancestorMetadataMap) {\r\n const ancestorResult = ancestorMetadataMap.get(propertyName);\r\n if (ancestorResult) {\r\n return ancestorResult;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n private findMetadatas<T extends { target: Function, propertyName: string }>(metadatas: Map<Function, Map<string, T[]>>, target: Function, propertyName: string): T[] {\r\n const metadataFromTargetMap = metadatas.get(target);\r\n let metadataFromTarget: T[];\r\n if (metadataFromTargetMap) {\r\n metadataFromTarget = metadataFromTargetMap.get(propertyName); \r\n }\r\n let metadataFromAncestorsTarget: T[] = [];\r\n for (const ancestor of this.getAncestors(target)) {\r\n const ancestorMetadataMap = metadatas.get(ancestor);\r\n if (ancestorMetadataMap) {\r\n if (ancestorMetadataMap.has(propertyName)) {\r\n metadataFromAncestorsTarget.push(...ancestorMetadataMap.get(propertyName));\r\n }\r\n }\r\n }\r\n return (metadataFromAncestorsTarget).reverse().concat((metadataFromTarget || []).reverse());\r\n }\r\n\r\n private getAncestors(target: Function): Function[] {\r\n if (!target) return [];\r\n if (!this._ancestorsMap.has(target)) {\r\n let ancestors: Function[] = [];\r\n for (let baseClass = Object.getPrototypeOf(target.prototype.constructor);\r\n typeof baseClass.prototype !== \"undefined\";\r\n baseClass = Object.getPrototypeOf(baseClass.prototype.constructor)) {\r\n ancestors.push(baseClass);\r\n }\r\n this._ancestorsMap.set(target, ancestors);\r\n }\r\n return this._ancestorsMap.get(target);\r\n }\r\n}\r\n"],"sourceRoot":".."}
\No newline at end of file