{"version":3,"file":"lodash-walk-object-browser.mjs","sources":["../../../tmp-libs-for-dist/lodash-walk-object/projects/lodash-walk-object/src/lib/lodash-walk-object.ts","../../../tmp-libs-for-dist/lodash-walk-object/projects/lodash-walk-object/src/lib/index.ts","../../../tmp-libs-for-dist/lodash-walk-object/projects/lodash-walk-object/src/lodash-walk-object-browser.ts"],"sourcesContent":["import { _ } from 'tnp-core/browser';\n\nimport {\n  Circ,\n  Models,\n  Iterator,\n  UnknownRecord,\n  PropertyEntry,\n  PreparedPath,\n} from './models';\n\nexport class Helpers {\n  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n  public static get Walk() {\n    const self = this;\n\n    return {\n      Object(\n        json: object,\n        iterator: Iterator,\n        options: Models.StartIteratorOptions = {},\n      ): {\n        circs: Circ[] | undefined;\n      } {\n        const internalOptions = self.createInternalOptions(\n          options,\n          _.isFunction(iterator),\n        );\n\n        const result = self._walk(json, json, iterator, '', internalOptions);\n\n        return {\n          circs: result.circural,\n        };\n      },\n\n      ObjectBy(\n        property: string,\n        inContext: object,\n        iterator: Iterator,\n        options: Models.StartIteratorOptions = {},\n      ): {\n        circs: Circ[] | undefined;\n      } {\n        const contextRecord = inContext as UnknownRecord;\n\n        if (_.isFunction(iterator)) {\n          iterator(inContext, '', self._changeValue(inContext, property, true));\n        }\n\n        const json = contextRecord[property];\n\n        if (!self.isObjectLike(json)) {\n          return {\n            circs: undefined,\n          };\n        }\n\n        return self.Walk.Object(json, iterator, options);\n      },\n    };\n  }\n\n  private static createInternalOptions(\n    options: Models.StartIteratorOptions,\n    hasIterator: boolean,\n  ): Models.InternalValues {\n    const internalOptions: Models.InternalValues = {\n      ...options,\n\n      walkGetters: options.walkGetters ?? true,\n      checkCircural: options.checkCircural ?? false,\n      breadthWalk: options.breadthWalk ?? false,\n      considerSharedObjects: options.considerSharedObjects ?? false,\n\n      include: options.include ?? [],\n      exclude: options.exclude ?? [],\n\n      isGetter: false,\n      isCircural: false,\n\n      hasIterator,\n\n      _valueChanged: false,\n      _skip: false,\n      _exit: false,\n    };\n\n    internalOptions.skipObject = () => {\n      internalOptions._skip = true;\n    };\n\n    internalOptions.exit = () => {\n      internalOptions._exit = true;\n    };\n\n    if (internalOptions.checkCircural) {\n      internalOptions.stack = [];\n      internalOptions.circural = [];\n    }\n\n    return internalOptions;\n  }\n\n  private static _walk(\n    json: object,\n    currentValue: unknown,\n    iterator: Iterator,\n    lodashPath: string,\n    options: Models.InternalValues,\n  ): Models.InternalValues {\n    if (options.breadthWalk) {\n      return this.walkBreadthFirst(json, iterator, lodashPath, options);\n    }\n\n    this.walkDepthFirst(\n      json,\n      currentValue,\n      iterator,\n      lodashPath,\n      options,\n      false,\n    );\n\n    return options;\n  }\n\n  private static walkDepthFirst(\n    json: object,\n    currentValue: unknown,\n    iterator: Iterator,\n    lodashPath: string,\n    options: Models.InternalValues,\n    isGetter: boolean,\n  ): void {\n    if (options._exit) {\n      return;\n    }\n\n    if (this.shouldSkipPath(options.include, options.exclude, lodashPath)) {\n      return;\n    }\n\n    const pushedToStack = this.prepareCurrentValue(\n      currentValue,\n      lodashPath,\n      options,\n      isGetter,\n    );\n\n    try {\n      if (options._exit) {\n        return;\n      }\n\n      if (options.hasIterator && lodashPath !== '') {\n        iterator(\n          currentValue,\n          lodashPath,\n          this._changeValue(json, lodashPath, false, options),\n          options,\n        );\n      }\n\n      if (options._exit) {\n        return;\n      }\n\n      if (options._valueChanged) {\n        currentValue = _.get(json, lodashPath);\n        options._valueChanged = false;\n      }\n\n      if (options.isCircural) {\n        return;\n      }\n\n      if (options._skip) {\n        options._skip = false;\n        return;\n      }\n\n      const children = this.findChildren(\n        currentValue,\n        lodashPath,\n        options.walkGetters ?? true,\n      );\n\n      for (const child of children) {\n        if (options._exit) {\n          return;\n        }\n\n        this.walkDepthFirst(\n          json,\n          child.value,\n          iterator,\n          child.path,\n          options,\n          child.isGetter,\n        );\n      }\n    } finally {\n      if (pushedToStack && options.considerSharedObjects) {\n        options.stack?.pop();\n      }\n    }\n  }\n\n  private static walkBreadthFirst(\n    json: object,\n    iterator: Iterator,\n    lodashPath: string,\n    options: Models.InternalValues,\n  ): Models.InternalValues {\n    const queue: Models.Ver[] = [\n      {\n        v: json,\n        p: lodashPath,\n        isGetter: false,\n        ancestors: [],\n      },\n    ];\n\n    while (queue.length > 0) {\n      if (options._exit) {\n        break;\n      }\n\n      const current = queue.shift();\n\n      if (!current) {\n        break;\n      }\n\n      if (this.shouldSkipPath(options.include, options.exclude, current.p)) {\n        continue;\n      }\n\n      options.isGetter = current.isGetter ?? false;\n      options.isCircural = false;\n\n      let childAncestors = current.ancestors ?? [];\n\n      if (options.checkCircural && this.isObjectLike(current.v)) {\n        if (options.considerSharedObjects) {\n          const existingAncestor = childAncestors.find(\n            entry => entry.target === current.v,\n          );\n\n          if (existingAncestor) {\n            options.circural ??= [];\n\n            options.circural.push({\n              pathToObj: current.p,\n              circuralTargetPath: existingAncestor.path,\n            });\n\n            options.isCircural = true;\n          } else {\n            childAncestors = [\n              ...childAncestors,\n              {\n                target: current.v,\n                path: current.p,\n              },\n            ];\n          }\n        } else {\n          options.stack ??= [];\n          options.circural ??= [];\n\n          const existing = options.stack.find(\n            entry => entry.target === current.v,\n          );\n\n          if (existing) {\n            options.circural.push({\n              pathToObj: current.p,\n              circuralTargetPath: existing.path,\n            });\n\n            options.isCircural = true;\n          } else {\n            options.stack.push({\n              target: current.v,\n              path: current.p,\n            });\n          }\n        }\n      }\n\n      if (options.hasIterator && current.p !== '') {\n        iterator(\n          current.v,\n          current.p,\n          this._changeValue(json, current.p, false, options),\n          options,\n        );\n      }\n\n      if (options._exit) {\n        break;\n      }\n\n      if (options._valueChanged) {\n        current.v = _.get(json, current.p);\n        options._valueChanged = false;\n      }\n\n      if (options.isCircural) {\n        continue;\n      }\n\n      if (options._skip) {\n        options._skip = false;\n        continue;\n      }\n\n      const children = this.findChildren(\n        current.v,\n        current.p,\n        options.walkGetters ?? true,\n      );\n\n      for (const child of children) {\n        queue.push({\n          v: child.value,\n          p: child.path,\n          parent: current,\n          isGetter: child.isGetter,\n          ancestors: childAncestors,\n        });\n      }\n    }\n\n    return options;\n  }\n\n  private static prepareCurrentValue(\n    value: unknown,\n    lodashPath: string,\n    options: Models.InternalValues,\n    isGetter: boolean,\n  ): boolean {\n    options.isGetter = isGetter;\n    options.isCircural = false;\n\n    if (!options.checkCircural || !this.isObjectLike(value)) {\n      return false;\n    }\n\n    const stack = options.stack ?? [];\n    const circular = options.circural ?? [];\n\n    options.stack = stack;\n    options.circural = circular;\n\n    const existing = stack.find(entry => entry.target === value);\n\n    if (existing) {\n      circular.push({\n        pathToObj: lodashPath,\n        circuralTargetPath: existing.path,\n      });\n\n      options.isCircural = true;\n      return false;\n    }\n\n    stack.push({\n      target: value,\n      path: lodashPath,\n    });\n\n    return true;\n  }\n\n  private static findChildren(\n    value: unknown,\n    parentPath: string,\n    walkGetters: boolean,\n  ): Array<{\n    value: unknown;\n    path: string;\n    isGetter: boolean;\n  }> {\n    if (Array.isArray(value)) {\n      return value.map((child, index) => ({\n        value: child,\n        path: `${parentPath}[${index}]`,\n        isGetter: false,\n      }));\n    }\n\n    if (!this.isObjectLike(value)) {\n      return [];\n    }\n\n    const entries = this.getPropertyEntries(value, walkGetters);\n\n    return entries.map(entry => ({\n      value: entry.value,\n      path: this.appendPath(parentPath, entry.key),\n      isGetter: entry.isGetter,\n    }));\n  }\n\n  private static getPropertyEntries(\n    object: object,\n    walkGetters: boolean,\n  ): PropertyEntry[] {\n    const result: PropertyEntry[] = [];\n    const handledKeys = new Set<string>();\n\n    for (const key of Object.keys(object)) {\n      const readResult = this.readProperty(object, key);\n\n      if (!readResult.success) {\n        continue;\n      }\n\n      handledKeys.add(key);\n\n      result.push({\n        key,\n        value: readResult.value,\n        isGetter: false,\n      });\n    }\n\n    if (!walkGetters) {\n      return result;\n    }\n\n    for (const key of Object.getOwnPropertyNames(object)) {\n      if (handledKeys.has(key)) {\n        continue;\n      }\n\n      const readResult = this.readProperty(object, key);\n\n      if (!readResult.success) {\n        continue;\n      }\n\n      handledKeys.add(key);\n\n      result.push({\n        key,\n        value: readResult.value,\n        isGetter: true,\n      });\n    }\n\n    let prototype = Object.getPrototypeOf(object) as object | null;\n\n    while (prototype && prototype !== Object.prototype) {\n      const descriptors = Object.getOwnPropertyDescriptors(prototype);\n\n      for (const [key, descriptor] of Object.entries(descriptors)) {\n        if (\n          key === 'constructor' ||\n          handledKeys.has(key) ||\n          typeof descriptor.get !== 'function'\n        ) {\n          continue;\n        }\n\n        const readResult = this.readProperty(object, key);\n\n        if (!readResult.success) {\n          continue;\n        }\n\n        handledKeys.add(key);\n\n        result.push({\n          key,\n          value: readResult.value,\n          isGetter: true,\n        });\n      }\n\n      prototype = Object.getPrototypeOf(prototype) as object | null;\n    }\n\n    return result;\n  }\n\n  private static readProperty(\n    object: object,\n    key: string,\n  ):\n    | {\n        success: true;\n        value: unknown;\n      }\n    | {\n        success: false;\n      } {\n    try {\n      return {\n        success: true,\n        value: Reflect.get(object, key),\n      };\n    } catch {\n      return {\n        success: false,\n      };\n    }\n  }\n\n  private static appendPath(parentPath: string, property: string): string {\n    const propertyPath = this.propertyToPath(property);\n\n    if (parentPath === '') {\n      return propertyPath;\n    }\n\n    if (propertyPath.startsWith('[')) {\n      return `${parentPath}${propertyPath}`;\n    }\n\n    return `${parentPath}.${propertyPath}`;\n  }\n\n  private static propertyToPath(property: string): string {\n    /**\n     * Preserve the old path format for keys that lodash can safely\n     * interpret in dot notation.\n     *\n     * Only keys containing dots or brackets need quoted bracket syntax,\n     * because those characters change the lodash path meaning.\n     */\n    if (\n      property !== '' &&\n      !property.includes('.') &&\n      !property.includes('[') &&\n      !property.includes(']')\n    ) {\n      return property;\n    }\n\n    return `[${JSON.stringify(property)}]`;\n  }\n\n  private static shouldSkipPath(\n    include: string[] = [],\n    exclude: string[] = [],\n    lodashPath: string,\n  ): boolean {\n    const normalizedPath = this.normalizeRootArrayPath(lodashPath);\n\n    if (normalizedPath === '') {\n      return false;\n    }\n\n    const excluded = exclude.some(excludedPath =>\n      this.isSamePathOrDescendant(normalizedPath, excludedPath),\n    );\n\n    if (excluded) {\n      return true;\n    }\n\n    if (include.length === 0) {\n      return false;\n    }\n\n    const includedOrRequiredParent = include.some(includedPath => {\n      return (\n        this.isSamePathOrDescendant(normalizedPath, includedPath) ||\n        this.isAncestorPath(normalizedPath, includedPath)\n      );\n    });\n\n    return !includedOrRequiredParent;\n  }\n\n  private static normalizeRootArrayPath(path: string): string {\n    return path.replace(/^\\[(?:'|\")?\\d+(?:'|\")?\\]\\.?/, '').trim();\n  }\n\n  private static isSamePathOrDescendant(\n    path: string,\n    parentPath: string,\n  ): boolean {\n    return (\n      path === parentPath ||\n      path.startsWith(`${parentPath}.`) ||\n      path.startsWith(`${parentPath}[`)\n    );\n  }\n\n  private static isAncestorPath(\n    possibleAncestor: string,\n    path: string,\n  ): boolean {\n    return (\n      path.startsWith(`${possibleAncestor}.`) ||\n      path.startsWith(`${possibleAncestor}[`)\n    );\n  }\n\n  private static _changeValue(\n    json: object,\n    lodashPath: string,\n    simpleChange = false,\n    options?: Models.InternalValues,\n  ): (newValue: unknown) => void {\n    const { contextPath, property } = this._prepareParams(lodashPath);\n\n    return (newValue: unknown): void => {\n      if (contextPath === '') {\n        simpleChange = true;\n      }\n\n      if (simpleChange) {\n        Reflect.set(json, property, newValue);\n      } else {\n        const context = _.get(json, contextPath);\n\n        if (this.isObjectLike(context)) {\n          Reflect.set(context, property, newValue);\n        }\n      }\n\n      if (options) {\n        options._valueChanged = true;\n      }\n    };\n  }\n\n  private static _prepareParams(lodashPath: string): PreparedPath {\n    const contextPath = this._Helpers.Path.getContextPath(lodashPath);\n\n    const rawProperty = this._Helpers.Path.getPropertyPath(\n      lodashPath,\n      contextPath,\n    );\n\n    const property =\n      rawProperty.trim() !== '' && !Number.isNaN(Number(rawProperty))\n        ? Number(rawProperty)\n        : rawProperty;\n\n    return {\n      contextPath,\n      property,\n    };\n  }\n\n  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n  private static get _Helpers() {\n    return {\n      get Path() {\n        return {\n          getPropertyPath(lodashPath: string, contextPath: string): string {\n            return lodashPath\n              .replace(contextPath, '')\n              .replace(/^\\./, '')\n              .replace(/^\\[/, '')\n              .replace(/\\]$/, '')\n              .replace(/^[\"']|[\"']$/g, '');\n          },\n\n          getContextPath(path: string): string {\n            let result: string;\n\n            if (path.endsWith(']')) {\n              result = path.replace(/\\[(?:\"|')?.+?(?:\"|')?\\]$/, '');\n            } else {\n              result = path.replace(/\\.([a-zA-Z0-9_$@\\-/:]+)$/, '');\n            }\n\n            return result === path ? '' : result;\n          },\n        };\n      },\n    };\n  }\n\n  private static isObjectLike(value: unknown): value is object {\n    return (\n      value !== null &&\n      (typeof value === 'object' || typeof value === 'function')\n    );\n  }\n}\n\nexport const walk = {\n  Object: Helpers.Walk.Object,\n  ObjectBy: Helpers.Walk.ObjectBy,\n};","export * from './lodash-walk-object';\nexport * from './models';\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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"}