UNPKG

json10

Version:

Handle circural references, comments and many more inside JSON

1 lines 4.66 kB
{"version":3,"file":"json10.mjs","sources":["../../../tmp-libs-for-dist/json10/projects/json10/src/lib/index.ts","../../../tmp-libs-for-dist/json10/projects/json10/src/json10.ts"],"sourcesContent":["import { _ } from 'tnp-core/browser';\nimport { walk, Models } from 'lodash-walk-object/browser';\nexport type Circ = Models.Circ;\nimport { CLASS } from 'typescript-class-helpers/browser';\n// import { Log } from 'ng2-logger'\n// const log = Log.create('JSON10')\n\n// let counter = 0\n\nexport class JSON10 {\n\n public static structureArray(anyJSON: Object, options?: { include?: string[]; exclude?: string[] }) {\n let pathes = []\n const { include, exclude } = options || {} as any;\n walk.Object(anyJSON, (value, lodashPath) => {\n\n if (!_.isUndefined(value)) {\n pathes.push(lodashPath)\n }\n\n }, { include, exclude, checkCircural: true })\n return pathes;\n }\n\n\n public static cleaned(json, onCircs?: (circs: Circ[]) => any, options?:\n {\n exclude?: string[];\n include?: string[];\n breadthWalk?: boolean;\n }) {\n // console.log('BETTER SRUGUB', json)\n const result = _.isArray(json) ? [] : {}\n const classFN = CLASS.OBJECT(json).isClassObject && CLASS.getFromObject(json);\n\n const { exclude, include, breadthWalk } = options || { exclude: [], include: [], breadthWalk: false };\n\n const { circs } = walk.Object(json, (value, lodashPath, changeValueTo, options) => {\n\n if (_.isObject(value) && options.isCircural) {\n _.set(result, lodashPath, null)\n } else {\n _.set(result, lodashPath, _.cloneDeep(value))\n }\n\n }, { include, exclude, breadthWalk, checkCircural: true });\n\n if (_.isFunction(onCircs)) {\n onCircs(circs)\n }\n\n return _.isFunction(classFN) ? _.merge(new (classFN as any)(), result) : result;\n }\n\n public static stringify(anyJSON: Object, replace?: any, spaces?: number, onCircs?: (circs: Circ[]) => any) {\n const json = this.cleaned(anyJSON, onCircs);\n return JSON.stringify(json, replace, spaces);\n }\n\n public static parse(json: string, circs: Circ[] = []) {\n let res = JSON.parse(json);\n if (_.isArray(circs)) {\n circs.forEach(({ circuralTargetPath, pathToObj }) => {\n\n if (circuralTargetPath === '') {\n _.set(res, pathToObj, res)\n } else {\n let v = _.get(res, circuralTargetPath);\n _.set(res, pathToObj, v)\n }\n\n })\n }\n return res;\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}