UNPKG

19.7 kBSource Map (JSON)View Raw
1{"version":3,"file":"mapping.js","sourceRoot":"","sources":["../../tmp-src-bundle-browser/mapping.ts"],"names":[],"mappings":"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","sourcesContent":["\n\nimport * as _ from 'lodash';\nimport { CLASSNAME } from 'typescript-class-helpers/browser/classname';\nimport { SYMBOL } from 'typescript-class-helpers/browser/symbols';\nimport { Helpers } from './helpers';\nimport { Circ, JSON10 } from 'json10/browser';\nimport { walk } from 'lodash-walk-object/browser';\nimport { CLASS } from 'typescript-class-helpers/browser';\nimport { Helpers as HelpersLog } from 'ng2-logger/browser';\n\nexport namespace Mapping {\n\n export function decode(json: Object, autodetect = false): Mapping {\n HelpersLog.simulateBrowser = true;\n // console.log('DECODE isBrowser', HelpersLog.isBrowser)\n if (_.isUndefined(json)) {\n return undefined;\n }\n\n let mapping = decodeFromDecorator(_.isArray(json) ? _.first(json) : json, !autodetect)\n\n if (autodetect) {\n mapping = _.merge(getMappingNaive(json), mapping);\n }\n HelpersLog.simulateBrowser = false;\n return mapping;\n }\n\n export function encode<T = Function>(json: Object, mapping: Mapping, circular: Circ[] = []): T {\n if (_.isString(json) || _.isBoolean(json) || _.isNumber(json)) {\n return json as any;\n }\n\n if (mapping['']) {\n const decoratorMapping = getModelsMapping(CLASSNAME.getClassBy(mapping['']));\n mapping = _.merge(mapping, decoratorMapping)\n }\n\n let res: any;\n if (_.isArray(circular) && circular.length > 0) {\n res = setMappingCirc(json, mapping, circular);\n } else {\n res = setMapping(json, mapping);\n }\n return res;\n }\n\n\n function decodeFromDecorator(json: Object, production = false): Mapping {\n const entityClass = CLASS.getFromObject(json);\n const mappings = getModelsMapping(entityClass);\n return mappings as any;\n }\n\n export function getModelsMapping(entity: Function) {\n\n if (!_.isFunction(entity) || entity === Object) {\n return {};\n }\n const className = CLASSNAME.getClassName(entity)\n // console.log(`getMaping for: '${className}' `)\n let enityOWnMapping: any[] = _.isArray(entity[SYMBOL.MODELS_MAPPING]) ?\n entity[SYMBOL.MODELS_MAPPING] : [{ '': className }];\n\n let res = {};\n let parents = enityOWnMapping\n .filter(m => !_.isUndefined(m['']) && m[''] !== className)\n .map(m => m['']);\n\n enityOWnMapping.reverse().forEach(m => {\n m = _.cloneDeep(m);\n // console.log(`'${className}' m:`, m)\n Object.keys(m).forEach(key => {\n const v = m[key]\n const isArr = _.isArray(v)\n const model = isArr ? _.first(v) : v;\n if (parents.includes(model)) {\n m[key] = isArr ? [className] : className;\n }\n })\n res = _.merge(res, m)\n })\n res[''] = className;\n // console.log(`mapping for ${className} : ${JSON.stringify(res)}`)\n return res;\n }\n\n\n export type Mapping<T={}> = {\n [P in keyof T]?: string | string[];\n };\n\n function add(o: Object, path: string, mapping: Mapping = {}) {\n if (!o || Array.isArray(o) || typeof o !== 'object') return;\n const objectClassName = CLASSNAME.getClassName(Object.getPrototypeOf(o).constructor);\n const resolveClass = CLASSNAME.getClassBy(objectClassName);\n if (!resolveClass) {\n if (objectClassName !== 'Object') {\n if (Helpers.isBrowser) {\n console.error(`Cannot resolve class: ${objectClassName} while mapping.`)\n }\n }\n return;\n }\n if (!mapping[path]) mapping[path] = CLASSNAME.getClassName(resolveClass) as any;;\n }\n\n /**\n * USE ONLY IN DEVELOPMENT\n * @param c\n * @param path\n * @param mapping\n * @param level\n */\n function getMappingNaive(c: Object, path = '', mapping: Mapping = {}, level = 0) {\n if (Array.isArray(c)) {\n c.forEach(c => getMappingNaive(c, path, mapping, level))\n return mapping;\n }\n if (++level === 16) return;\n add(c, path, mapping);\n for (var p in c) {\n if (c.hasOwnProperty(p)) {\n const v = c[p];\n if (Array.isArray(v) && v.length > 0) { // reducer as impovement\n v.forEach((elem, i) => {\n // const currentPaht = [`path[${i}]`, p].filter(c => c.trim() != '').join('.');\n const currentPaht = [path, p].filter(c => c.trim() != '').join('.');\n getMappingNaive(elem, currentPaht, mapping, level);\n })\n } else if (typeof v === 'object') {\n const currentPaht = [path, p].filter(c => c.trim() != '').join('.');\n add(v, currentPaht, mapping);\n getMappingNaive(v, currentPaht, mapping, level);\n }\n }\n }\n return mapping;\n }\n\n function getMappingPathFrom(pathLodhas: string) {\n if (!_.isString(pathLodhas)) {\n return void 0;\n }\n const regex = /\\[([0-9a-zA-Z]|\\'|\\\")*\\]/g;\n pathLodhas = pathLodhas\n .replace(regex, '')\n .replace('..', '.');\n if (pathLodhas.startsWith('.')) {\n pathLodhas = pathLodhas.slice(1)\n }\n return pathLodhas;\n }\n\n function setMappingCirc(json: Object, mapping: Mapping = {}, circular: Circ[] = []) {\n\n const mainClassFn = !_.isArray(json) && CLASS.getBy(mapping['']);\n // console.log(mapping)\n walk.Object(json, (v, lodashPath, changeValue) => {\n if (!_.isUndefined(v) && !_.isNull(v)) {\n const mappingPath = getMappingPathFrom(lodashPath)\n if (!_.isUndefined(mapping[mappingPath])) {\n const isArray = _.isArray(mapping[mappingPath]);\n if (!isArray) {\n const className = isArray ? _.first(mapping[mappingPath]) : mapping[mappingPath];\n const classFN = CLASS.getBy(className)\n if (_.isFunction(classFN)) {\n // console.log(`mapping: '${mappingPath}', lp: '${lodashPath}' class: '${className}' , set `, v.location)\n changeValue(_.merge(new (classFN as any)(), v))\n }\n }\n }\n }\n })\n\n circular.forEach(c => {\n const ref = _.get(json, c.circuralTargetPath)\n _.set(json, c.pathToObj, ref)\n })\n\n if (_.isFunction(mainClassFn)) {\n json = _.merge(new (mainClassFn as any)(), json)\n }\n\n return json;\n }\n\n\n\n function setMapping(json: Object, mapping: Mapping = {}) {\n\n // console.log('mapping', mapping)\n if (Array.isArray(json)) {\n return json.map(j => {\n return setMapping(j, mapping)\n })\n }\n\n const mainClassFn = CLASS.getBy(mapping['']);\n\n for (const key in json) {\n if (json.hasOwnProperty(key)) {\n // if (mainClassFn && mainClassFn.name === 'Project') {\n // // console.log(`OWn property: \"${key}\"`)\n // }\n if (_.isArray(json[key])) {\n json[key] = json[key].map(arrObj => {\n const objMapping = getModelsMapping(CLASS.getBy(mapping[key]))\n return setMapping(arrObj, objMapping)\n })\n } else if (_.isObject(json[key])) {\n const objMapping = getModelsMapping(CLASS.getBy(mapping[key]))\n json[key] = setMapping(json[key], objMapping)\n }\n }\n // else {\n // if (mainClassFn && mainClassFn.name === 'Project') {\n // // console.log(`Not own property: \"${key}\"`)\n // }\n // }\n }\n\n Object\n .keys(mapping)\n .filter(key => key !== '' && key.split('.').length >= 2)\n .forEach(lodasPath => {\n // console.log(`Loadsh path: ${lodasPath}`)\n const objMapping = getModelsMapping(CLASS.getBy(mapping[lodasPath]))\n const input = _.get(json, lodasPath)\n if (!_.isUndefined(input)) {\n const res = setMapping(input, objMapping)\n _.set(json, lodasPath, res)\n }\n })\n\n if (!mainClassFn) {\n return json;\n }\n return _.merge(new (mainClassFn as any)(), json)\n }\n\n\n\n\n export type ModelValue<T> = {\n /**\n * Inside models types\n */\n [propName in keyof T]?: T[propName];\n };\n\n\n export function DefaultModelWithMapping<T=Object>(\n defaultModelValues?: ModelValue<T>,\n mapping?: Mapping<T>\n ) {\n return function (target: Function) {\n\n if (!_.isArray(target[SYMBOL.MODELS_MAPPING])) {\n target[SYMBOL.MODELS_MAPPING] = [];\n }\n\n (target[SYMBOL.MODELS_MAPPING] as any[]).push({ '': CLASSNAME.getClassName(target) });\n if (_.isObject(mapping)) {\n target[SYMBOL.MODELS_MAPPING] = (target[SYMBOL.MODELS_MAPPING] as any[]).concat(mapping)\n Object.keys(mapping)\n .forEach(key => {\n const v = mapping;\n if (_.isUndefined(v) || _.isFunction(v)) {\n throw `\n\n\n Class: '${target.name}'\n[ng2rest] Bad mapping value for path: ${key} , please use type: <string> or [<string>]\n`;\n\n }\n });\n }\n\n\n if (_.isObject(defaultModelValues)) {\n const toMerge = {};\n const describedTarget = CLASS.describeProperites(target)\n // console.log(`describedTarget: ${describedTarget} for ${target.name}`)\n describedTarget.forEach(propDefInConstr => {\n if (defaultModelValues[propDefInConstr]) {\n console.warn(`\n\n CONFLICT: default value for property: \"${propDefInConstr}\"\n in class \"${target.name}\" already defined as typescript\n default class proprty value.\n\n `)\n } else {\n toMerge[propDefInConstr] = null; // TODO from toString I can't know that\n }\n });\n\n // console.log(`merge \"${JSON.stringify(target.prototype)}\" with \"${JSON.stringify(defaultModelValues)}\"`)\n\n target[SYMBOL.DEFAULT_MODEL] = _.merge(toMerge, defaultModelValues);\n _.merge(target.prototype, target[SYMBOL.DEFAULT_MODEL])\n // console.log(`DEFAULT VALUE MERGE for ${target.name}`)\n }\n }\n }\n\n}\n"]}
\No newline at end of file