lodash-walk-object
Version:
Walk all properties deep in object with lodash help
1 lines • 30.1 kB
Source Map (JSON)
{"version":3,"file":"lodash-walk-object-browser-prod.mjs","sources":["../../../tmp-libs-for-dist-prod/lodash-walk-object/projects/lodash-walk-object/src/lib/lodash-walk-object.ts","../../../tmp-libs-for-dist-prod/lodash-walk-object/projects/lodash-walk-object/src/lib/index.ts","../../../tmp-libs-for-dist-prod/lodash-walk-object/projects/lodash-walk-object/src/lodash-walk-object-browser-prod.ts"],"sourcesContent":["import { ___NS__add, ___NS__after, ___NS__ary, ___NS__assign, ___NS__assignIn, ___NS__assignInWith, ___NS__assignWith, ___NS__at, ___NS__attempt, ___NS__before, ___NS__bind, ___NS__bindAll, ___NS__bindKey, ___NS__camelCase, ___NS__capitalize, ___NS__castArray, ___NS__ceil, ___NS__chain, ___NS__chunk, ___NS__clamp, ___NS__clone, ___NS__cloneDeep, ___NS__cloneDeepWith, ___NS__cloneWith, ___NS__compact, ___NS__concat, ___NS__cond, ___NS__conforms, ___NS__conformsTo, ___NS__constant, ___NS__countBy, ___NS__create, ___NS__curry, ___NS__curryRight, ___NS__debounce, ___NS__deburr, ___NS__defaults, ___NS__defaultsDeep, ___NS__defaultTo, ___NS__defer, ___NS__delay, ___NS__difference, ___NS__differenceBy, ___NS__differenceWith, ___NS__divide, ___NS__drop, ___NS__dropRight, ___NS__dropRightWhile, ___NS__dropWhile, ___NS__each, ___NS__eachRight, ___NS__endsWith, ___NS__entries, ___NS__entriesIn, ___NS__eq, ___NS__escape, ___NS__escapeRegExp, ___NS__every, ___NS__extend, ___NS__extendWith, ___NS__fill, ___NS__filter, ___NS__find, ___NS__findIndex, ___NS__findKey, ___NS__findLast, ___NS__findLastIndex, ___NS__findLastKey, ___NS__first, ___NS__flatMap, ___NS__flatMapDeep, ___NS__flatMapDepth, ___NS__flatten, ___NS__flattenDeep, ___NS__flattenDepth, ___NS__flip, ___NS__floor, ___NS__flow, ___NS__flowRight, ___NS__forEach, ___NS__forEachRight, ___NS__forIn, ___NS__forInRight, ___NS__forOwn, ___NS__forOwnRight, ___NS__fromPairs, ___NS__functions, ___NS__functionsIn, ___NS__get, ___NS__groupBy, ___NS__gt, ___NS__gte, ___NS__has, ___NS__hasIn, ___NS__head, ___NS__identity, ___NS__includes, ___NS__indexOf, ___NS__initial, ___NS__inRange, ___NS__intersection, ___NS__intersectionBy, ___NS__intersectionWith, ___NS__invert, ___NS__invertBy, ___NS__invoke, ___NS__invokeMap, ___NS__isArguments, ___NS__isArray, ___NS__isArrayBuffer, ___NS__isArrayLike, ___NS__isArrayLikeObject, ___NS__isBoolean, ___NS__isBuffer, ___NS__isDate, ___NS__isElement, ___NS__isEmpty, ___NS__isEqual, ___NS__isEqualWith, ___NS__isError, ___NS__isFinite, ___NS__isFunction, ___NS__isInteger, ___NS__isLength, ___NS__isMap, ___NS__isMatch, ___NS__isMatchWith, ___NS__isNaN, ___NS__isNative, ___NS__isNil, ___NS__isNull, ___NS__isNumber, ___NS__isObject, ___NS__isObjectLike, ___NS__isPlainObject, ___NS__isRegExp, ___NS__isSafeInteger, ___NS__isSet, ___NS__isString, ___NS__isSymbol, ___NS__isTypedArray, ___NS__isUndefined, ___NS__isWeakMap, ___NS__isWeakSet, ___NS__iteratee, ___NS__join, ___NS__kebabCase, ___NS__keyBy, ___NS__keys, ___NS__keysIn, ___NS__last, ___NS__lastIndexOf, ___NS__lowerCase, ___NS__lowerFirst, ___NS__lt, ___NS__lte, ___NS__map, ___NS__mapKeys, ___NS__mapValues, ___NS__matches, ___NS__matchesProperty, ___NS__max, ___NS__maxBy, ___NS__mean, ___NS__meanBy, ___NS__memoize, ___NS__merge, ___NS__mergeWith, ___NS__method, ___NS__methodOf, ___NS__min, ___NS__minBy, ___NS__mixin, ___NS__multiply, ___NS__negate, ___NS__noop, ___NS__now, ___NS__nth, ___NS__nthArg, ___NS__omit, ___NS__omitBy, ___NS__once, ___NS__orderBy, ___NS__over, ___NS__overArgs, ___NS__overEvery, ___NS__overSome, ___NS__pad, ___NS__padEnd, ___NS__padStart, ___NS__parseInt, ___NS__partial, ___NS__partialRight, ___NS__partition, ___NS__pick, ___NS__pickBy, ___NS__property, ___NS__propertyOf, ___NS__pull, ___NS__pullAll, ___NS__pullAllBy, ___NS__pullAllWith, ___NS__pullAt, ___NS__random, ___NS__range, ___NS__rangeRight, ___NS__rearg, ___NS__reduce, ___NS__reduceRight, ___NS__reject, ___NS__remove, ___NS__repeat, ___NS__replace, ___NS__rest, ___NS__result, ___NS__reverse, ___NS__round, ___NS__sample, ___NS__sampleSize, ___NS__set, ___NS__setWith, ___NS__shuffle, ___NS__size, ___NS__slice, ___NS__snakeCase, ___NS__some, ___NS__sortBy, ___NS__sortedIndex, ___NS__sortedIndexBy, ___NS__sortedIndexOf, ___NS__sortedLastIndex, ___NS__sortedLastIndexBy, ___NS__sortedLastIndexOf, ___NS__sortedUniq, ___NS__sortedUniqBy, ___NS__split, ___NS__spread, ___NS__startCase, ___NS__startsWith, ___NS__stubArray, ___NS__stubFalse, ___NS__stubObject, ___NS__stubString, ___NS__stubTrue, ___NS__subtract, ___NS__sum, ___NS__sumBy, ___NS__tail, ___NS__take, ___NS__takeRight, ___NS__takeRightWhile, ___NS__takeWhile, ___NS__tap, ___NS__template, ___NS__templateSettings, ___NS__throttle, ___NS__thru, ___NS__times, ___NS__toArray, ___NS__toFinite, ___NS__toInteger, ___NS__toLength, ___NS__toLower, ___NS__toNumber, ___NS__toPairs, ___NS__toPairsIn, ___NS__toPath, ___NS__toPlainObject, ___NS__toSafeInteger, ___NS__toString, ___NS__toUpper, ___NS__transform, ___NS__trim, ___NS__trimEnd, ___NS__trimStart, ___NS__truncate, ___NS__unary, ___NS__unescape, ___NS__union, ___NS__unionBy, ___NS__unionWith, ___NS__uniq, ___NS__uniqBy, ___NS__uniqueId, ___NS__uniqWith, ___NS__unset, ___NS__unzip, ___NS__unzipWith, ___NS__update, ___NS__updateWith, ___NS__upperCase, ___NS__upperFirst, ___NS__values, ___NS__valuesIn, ___NS__without, ___NS__words, ___NS__wrap, ___NS__xor, ___NS__xorBy, ___NS__xorWith, ___NS__zip, ___NS__zipObject, ___NS__zipObjectDeep, ___NS__zipWith } from 'tnp-core/browser-prod';\nimport { CLASS__NS__getBy, CLASS__NS__getClassNameFromObjInstanceOrClassFn, CLASS__NS__getFromObject, CLASS__NS__getMethodsNames, CLASS__NS__getName, CLASS__NS__getNameFromObject, CLASS__NS__NAME, CLASS__NS__setClassName, CLASS__NS__setName } from 'typescript-class-helpers/browser-prod';\n\nexport interface Circ {\n /**\n * This path value will be overriten with circural object value\n */\n pathToObj: string;\n /**\n * lodash path to circural objects\n * OR\n * actual object for circural mapping\n */\n circuralTargetPath: string | any;\n}\n\n// let counter = 0\n//namespace Models\n\n export interface Models__NS__InDBType {\n target: any;\n path: string;\n }\n\n export interface Models__NS__Ver {\n v: any;\n p: string;\n parent: Models__NS__Ver;\n isGetter?: boolean;\n }\n\n export interface Models__NS__StartIteratorOptions {\n walkGetters?: boolean;\n\n /**\n * Default in breadhTwalk\n */\n checkCircural?: boolean;\n breadthWalk?: boolean;\n include?: string[];\n exclude?: string[];\n }\n\n export interface Models__NS__AdditionalIteratorOptions extends Models__NS__StartIteratorOptions {\n skipObject?: () => void;\n isGetter?: boolean;\n /**\n * Breadth walk will skip content of circural objects\n */\n isCircural?: boolean;\n exit?: () => void;\n }\n\n export interface Models__NS__InternalValues extends Models__NS__AdditionalIteratorOptions {\n stack?: any[];\n circural?: Circ[];\n hasIterator?: boolean;\n _valueChanged: boolean;\n _skip: boolean;\n _exit: boolean;\n }\n\n//end of namespace Models\n\n\nfunction findChildren(\n ver: Models__NS__Ver,\n lp: string,\n walkGetters: boolean,\n): Models__NS__Ver[] {\n const obj = ver.v;\n if (___NS__isArray(obj)) {\n return obj.map((v, i) => {\n return { v, p: `${lp}[${i}]`, parent: ver, isGetter: false };\n });\n } else if (___NS__isObject(obj)) {\n const allKeys = !walkGetters ? [] : Object.getOwnPropertyNames(obj);\n const children: Models__NS__Ver[] = [];\n for (const key in obj) {\n if (\n ___NS__isObject(obj) &&\n ___NS__isFunction(obj.hasOwnProperty) &&\n obj.hasOwnProperty(key)\n ) {\n ___NS__pull(allKeys, key);\n children.push({\n v: obj[key],\n p: `${lp === '' ? '' : `${lp}.`}${key}`,\n parent: ver,\n isGetter: false,\n });\n }\n }\n if (walkGetters) {\n for (let index = 0; index < allKeys.length; index++) {\n if (___NS__isObject(obj)) {\n const key = allKeys[index];\n children.push({\n v: obj[key],\n p: `${lp === '' ? '' : `${lp}.`}${key}`,\n parent: ver,\n isGetter: true,\n });\n }\n }\n }\n return children;\n }\n return [];\n}\n\nexport type Iterator = (\n value: any,\n lodashPath: string,\n // @ts-ignore\n changeValueTo: (newValue) => void,\n options?: Models__NS__AdditionalIteratorOptions,\n) => void;\nexport class Helpers {\n public static get Walk() {\n const self = this;\n return {\n Object(\n json: Object,\n iterator: Iterator,\n optionsOrWalkGettersValue?: Models__NS__StartIteratorOptions,\n ) {\n if (___NS__isUndefined(optionsOrWalkGettersValue)) {\n optionsOrWalkGettersValue = {};\n }\n\n (optionsOrWalkGettersValue as Models__NS__InternalValues).hasIterator =\n ___NS__isFunction(iterator);\n\n if (___NS__isUndefined(optionsOrWalkGettersValue.breadthWalk)) {\n optionsOrWalkGettersValue.breadthWalk = false;\n }\n\n let { circural } = self._walk(\n json,\n json,\n iterator,\n void 0,\n optionsOrWalkGettersValue as any,\n );\n\n return { circs: circural };\n },\n ObjectBy(\n property: string,\n inContext: Object,\n iterator: Iterator,\n options?: Models__NS__StartIteratorOptions,\n ) {\n if (___NS__isFunction(iterator)) {\n iterator(inContext, '', self._changeValue(inContext, property, true)); // TODO Add optoins\n }\n // @ts-ignore\n const json = inContext[property];\n return self.Walk.Object(json, iterator, options);\n },\n };\n }\n\n private static _changeValue(\n json: Object,\n lodahPath: string,\n simpleChange = false,\n options?: Models__NS__InternalValues,\n ) {\n var { contextPath, property } = this._prepareParams(lodahPath);\n var context = ___NS__get(json, contextPath);\n\n return (newValue: any) => {\n if (contextPath === '') {\n simpleChange = true;\n }\n\n if (simpleChange) {\n // @ts-ignore\n json[property] = newValue;\n } else {\n // console.log(`CONTEXT VALUE CHANGE! \"${contextPath}\" + \"${property}\" `, newValue)\n // console.log('context', context)\n if (context) {\n context[property] = newValue;\n }\n }\n if (options) {\n options._valueChanged = true;\n }\n };\n }\n\n private static _prepareParams(lodashPath: string) {\n // console.log('contextPath before', lodashPath)\n const contextPath = this._Helpers.Path.getContextPath(lodashPath);\n // console.log('contextPath after', contextPath)\n\n let property = this._Helpers.Path.getPropertyPath(lodashPath, contextPath);\n // console.log('property after process', property)\n if (\n ___NS__isString(property) &&\n property.trim() !== '' &&\n !___NS__isNaN(Number(property))\n ) {\n property = Number(property);\n }\n return {\n contextPath,\n property,\n };\n }\n\n private static get _Helpers() {\n return {\n get Path() {\n return {\n // @ts-ignore\n getPropertyPath(lodahPath, contetPath) {\n return lodahPath\n .replace(contetPath, '')\n .replace(/^\\./, '')\n .replace(/\\[/, '')\n .replace(/\\]/, '');\n },\n getContextPath(p: string) {\n let res: string;\n if (p.endsWith(']')) {\n res = p.replace(/\\[(\\\"|\\')?[0-9]+(\\\"|\\')?\\]$/, '');\n } else {\n res = p.replace(/\\.([a-zA-Z0-9]|\\$|\\_|\\@|\\-|\\/|\\:)+$/, '');\n }\n return res === p ? '' : res;\n },\n };\n },\n };\n }\n\n private static _shoudlReturn(include = [], exclude = [], lodashPath: string) {\n let res = false;\n if (lodashPath.replace(/^\\[(\\'|\\\")?[0-9]*(\\'|\\\")?\\]/, '').trim() !== '') {\n lodashPath = lodashPath.replace(/^\\[(\\'|\\\")?[0-9]*(\\'|\\\")?\\]\\./, '');\n res =\n (___NS__isArray(include) &&\n include.length > 0 &&\n !include.find(p => lodashPath.startsWith(p))) ||\n (___NS__isArray(exclude) &&\n exclude.length > 0 &&\n !!exclude.find(p => lodashPath.startsWith(p)));\n }\n\n return res;\n }\n\n // @ts-ignore\n private static prepareOptions(\n options: Models__NS__InternalValues,\n obj,\n lodashPath,\n ) {\n if (options._exit) {\n return;\n }\n\n if (___NS__isUndefined(options.walkGetters)) {\n options.walkGetters = true;\n }\n\n if (___NS__isUndefined(options.checkCircural)) {\n options.checkCircural = false;\n }\n\n if (___NS__isUndefined(options.isGetter)) {\n // @ts-ignore\n options.isGetter = false;\n }\n\n if (___NS__isUndefined(options._valueChanged)) {\n options._valueChanged = false;\n }\n\n if (___NS__isUndefined(options._exit)) {\n // @ts-ignore\n options._exit = false;\n }\n\n if (___NS__isUndefined(options.exit)) {\n options.exit = () => {\n options._exit = true;\n };\n }\n\n if (___NS__isUndefined(options._skip)) {\n // @ts-ignore\n options._skip = false;\n }\n\n if (___NS__isUndefined(options.skipObject)) {\n options.skipObject = () => {\n options._skip = true;\n };\n }\n\n if (options.checkCircural) {\n if (___NS__isUndefined(options.stack)) {\n options.stack = [];\n }\n\n if (___NS__isUndefined(options.circural)) {\n options.circural = [];\n }\n }\n\n const { stack } = options;\n options.isCircural = false;\n\n if (options.checkCircural && ___NS__isObject(obj)) {\n const inStack = stack.find((c: Models__NS__InDBType) => c.target == obj);\n\n if (!___NS__isUndefined(inStack)) {\n const circ: Circ = {\n pathToObj: lodashPath,\n circuralTargetPath: inStack.path,\n };\n\n options.circural.push(circ);\n options.isCircural = true;\n } else {\n stack.push({\n path: lodashPath,\n target: obj,\n } as Models__NS__InDBType);\n }\n }\n return options;\n }\n\n private static _walk(\n json: Object,\n objOrWhatever: unknown,\n iterator: Iterator,\n lodashPath = '',\n options?: Models__NS__InternalValues,\n depthLevel = 0,\n ) {\n if (!options) {\n options = {} as any;\n }\n\n // @ts-ignore\n if (!options.breadthWalk) {\n // @ts-ignore\n options = this.prepareOptions(options, objOrWhatever, lodashPath);\n\n // @ts-ignore\n if (this._shoudlReturn(options.include, options.exclude, lodashPath)) {\n return;\n }\n\n // @ts-ignore\n if (options.hasIterator && lodashPath !== '') {\n iterator(\n objOrWhatever,\n lodashPath,\n this._changeValue(json, lodashPath, false, options),\n options,\n );\n }\n\n // @ts-ignore\n if (options._valueChanged) {\n objOrWhatever = ___NS__get(json, lodashPath);\n }\n options._valueChanged = false;\n\n if (options.isCircural) {\n options._skip = true;\n }\n\n if (options._skip) {\n // @ts-ignore\n options._skip = false;\n return;\n }\n }\n\n if (options.breadthWalk) {\n let queue: Models__NS__Ver[] = [{ v: json, p: lodashPath, parent: void 0 }];\n\n // const pathesToSkip = {};\n while (queue.length > 0) {\n const ver = queue.shift();\n // console.log(`pathes to skip`, pathesToSkip);\n // if (!___NS__isUndefined(Object.keys(pathesToSkip).find(key => ver.p.startsWith(pathesToSkip[key])))) {\n // console.log(`skip: ${ver.p}`)\n // continue;\n // }\n // @ts-ignore\n if (this._shoudlReturn(options.include, options.exclude, ver.p)) {\n // pathesToSkip[ver.p] = true;\n // console.log(`skip2: ${ver.p}`)\n continue;\n }\n\n // console.log(`not skip value ${ver.p}`)\n\n // @ts-ignore\n let { v, p } = ver;\n // @ts-ignore\n options = this.prepareOptions(options, v, p);\n\n if (options._exit) {\n console.log('EXIT');\n return options;\n }\n if (options.hasIterator && p !== '') {\n iterator(v, p, this._changeValue(json, p, false, options), options);\n }\n\n // @ts-ignore\n if (options._valueChanged) {\n ver.v = ___NS__get(json, p);\n }\n options._valueChanged = false;\n\n if (options.isCircural) {\n // pathesToSkip[ver.p] = true;\n continue;\n }\n\n if (options._skip) {\n // @ts-ignore\n options._skip = false;\n // pathesToSkip[ver.p] = true;\n continue;\n }\n // console.log(`LOOK FOR CHILDREN OF ${ver.p}`)\n if (___NS__isArray(v)) {\n // @ts-ignore\n queue = queue.concat(findChildren(ver, p, options.walkGetters));\n } else if (___NS__isObject(v)) {\n // @ts-ignore\n queue = queue.concat(findChildren(ver, p, options.walkGetters));\n }\n }\n } else {\n // @ts-ignore\n const { walkGetters } = options;\n\n if (Array.isArray(objOrWhatever)) {\n objOrWhatever.forEach((o, i) => {\n // @ts-ignore\n this._walk(\n json,\n objOrWhatever[i],\n iterator,\n `${lodashPath}[${i}]`,\n options,\n depthLevel + 1,\n );\n });\n } else if (___NS__isObject(objOrWhatever)) {\n const allKeys = !walkGetters\n ? []\n : Object.getOwnPropertyNames(objOrWhatever);\n\n // @ts-ignore\n for (const key in objOrWhatever) {\n // console.log('KEY', key)\n if (___NS__isObject(objOrWhatever) && objOrWhatever.hasOwnProperty(key)) {\n ___NS__pull(allKeys, key);\n\n let newPropKey = key;\n options.isGetter = false;\n if (newPropKey.includes('.')) {\n newPropKey = `['${newPropKey}']`;\n }\n // @ts-ignore\n this._walk(\n json,\n objOrWhatever[newPropKey],\n iterator,\n `${lodashPath === '' ? '' : `${lodashPath}.`}${newPropKey}`,\n options,\n depthLevel + 1,\n );\n }\n }\n if (walkGetters) {\n for (let index = 0; index < allKeys.length; index++) {\n if (___NS__isObject(objOrWhatever)) {\n const key = allKeys[index];\n\n // @ts-ignore\n options.isGetter = true;\n // @ts-ignore\n this._walk(\n json,\n objOrWhatever[key],\n iterator,\n `${lodashPath === '' ? '' : `${lodashPath}.`}${key}`,\n options,\n depthLevel + 1,\n );\n }\n }\n }\n }\n\n // @ts-ignore\n if (options._exit && json === objOrWhatever) {\n // @ts-ignore\n options._exit = false;\n }\n }\n\n return options;\n }\n}\n\nexport const walk = {\n Object: Helpers.Walk.Object,\n ObjectBy: Helpers.Walk.ObjectBy,\n};","export * from './lodash-walk-object';\n// export * from './start-cli'; // @backend","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}