{"version":3,"file":"helpers.cjs","names":[],"sources":["../../../../src/utils/fast-json-patch/src/helpers.ts"],"sourcesContent":["// @ts-nocheck\n\n// Inlined because of ESM import issues\n\n/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2022 Joachim Wester\n * MIT licensed\n */\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwnProperty(obj, key) {\n  return _hasOwnProperty.call(obj, key);\n}\nexport function _objectKeys(obj) {\n  if (Array.isArray(obj)) {\n    const keys = new Array(obj.length);\n    for (let k = 0; k < keys.length; k++) {\n      keys[k] = \"\" + k;\n    }\n    return keys;\n  }\n  if (Object.keys) {\n    return Object.keys(obj);\n  }\n  let keys = [];\n  for (let i in obj) {\n    if (hasOwnProperty(obj, i)) {\n      keys.push(i);\n    }\n  }\n  return keys;\n}\n/**\n * Deeply clone the object.\n * https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\n * @param  {any} obj value to clone\n * @return {any} cloned obj\n */\nexport function _deepClone(obj) {\n  switch (typeof obj) {\n    case \"object\":\n      return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n    case \"undefined\":\n      return null; //this is how JSON.stringify behaves for array items\n    default:\n      return obj; //no need to clone primitives\n  }\n}\n//3x faster than cached /^\\d+$/.test(str)\nexport function isInteger(str: string): boolean {\n  let i = 0;\n  const len = str.length;\n  let charCode;\n  while (i < len) {\n    charCode = str.charCodeAt(i);\n    if (charCode >= 48 && charCode <= 57) {\n      i++;\n      continue;\n    }\n    return false;\n  }\n  return true;\n}\n/**\n * Escapes a json pointer path\n * @param path The raw pointer\n * @return the Escaped path\n */\nexport function escapePathComponent(path: string): string {\n  if (path.indexOf(\"/\") === -1 && path.indexOf(\"~\") === -1) return path;\n  return path.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n}\n/**\n * Unescapes a json pointer path\n * @param path The escaped pointer\n * @return The unescaped path\n */\nexport function unescapePathComponent(path: string): string {\n  return path.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n}\n\nexport function _getPathRecursive(root: Object, obj: Object): string {\n  let found;\n  for (let key in root) {\n    if (hasOwnProperty(root, key)) {\n      if (root[key] === obj) {\n        return escapePathComponent(key) + \"/\";\n      } else if (typeof root[key] === \"object\") {\n        found = _getPathRecursive(root[key], obj);\n        if (found != \"\") {\n          return escapePathComponent(key) + \"/\" + found;\n        }\n      }\n    }\n  }\n  return \"\";\n}\n\nexport function getPath(root: Object, obj: Object): string {\n  if (root === obj) {\n    return \"/\";\n  }\n  const path = _getPathRecursive(root, obj);\n  if (path === \"\") {\n    throw new Error(\"Object not found in root\");\n  }\n  return `/${path}`;\n}\n/**\n * Recursively checks whether an object has any undefined values inside.\n */\nexport function hasUndefined(obj: any): boolean {\n  if (obj === undefined) {\n    return true;\n  }\n  if (obj) {\n    if (Array.isArray(obj)) {\n      for (let i = 0, len = obj.length; i < len; i++) {\n        if (hasUndefined(obj[i])) {\n          return true;\n        }\n      }\n    } else if (typeof obj === \"object\") {\n      const objKeys = _objectKeys(obj);\n      const objKeysLength = objKeys.length;\n      for (var i = 0; i < objKeysLength; i++) {\n        if (hasUndefined(obj[objKeys[i]])) {\n          return true;\n        }\n      }\n    }\n  }\n  return false;\n}\n\nexport type JsonPatchErrorName =\n  | \"SEQUENCE_NOT_AN_ARRAY\"\n  | \"OPERATION_NOT_AN_OBJECT\"\n  | \"OPERATION_OP_INVALID\"\n  | \"OPERATION_PATH_INVALID\"\n  | \"OPERATION_FROM_REQUIRED\"\n  | \"OPERATION_VALUE_REQUIRED\"\n  | \"OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED\"\n  | \"OPERATION_PATH_CANNOT_ADD\"\n  | \"OPERATION_PATH_UNRESOLVABLE\"\n  | \"OPERATION_FROM_UNRESOLVABLE\"\n  | \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\"\n  | \"OPERATION_VALUE_OUT_OF_BOUNDS\"\n  | \"TEST_OPERATION_FAILED\";\n\nfunction patchErrorMessageFormatter(message: String, args: Object): string {\n  const messageParts = [message];\n  for (const key in args) {\n    const value =\n      typeof args[key] === \"object\"\n        ? JSON.stringify(args[key], null, 2)\n        : args[key]; // pretty print\n    if (typeof value !== \"undefined\") {\n      messageParts.push(`${key}: ${value}`);\n    }\n  }\n  return messageParts.join(\"\\n\");\n}\nexport class PatchError extends Error {\n  constructor(\n    message: string,\n    public name: JsonPatchErrorName,\n    public index?: number,\n    public operation?: any,\n    public tree?: any\n  ) {\n    super(\n      patchErrorMessageFormatter(message, { name, index, operation, tree })\n    );\n    Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\n    this.message = patchErrorMessageFormatter(message, {\n      name,\n      index,\n      operation,\n      tree,\n    });\n  }\n}\n"],"mappings":";;;;;;AAUA,MAAM,kBAAkB,OAAO,UAAU;AACzC,SAAgB,eAAe,KAAK,KAAK;AACvC,QAAO,gBAAgB,KAAK,KAAK,IAAI;;AAEvC,SAAgB,YAAY,KAAK;AAC/B,KAAI,MAAM,QAAQ,IAAI,EAAE;EACtB,MAAM,OAAO,IAAI,MAAM,IAAI,OAAO;AAClC,OAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,MAAK,KAAK,KAAK;AAEjB,SAAO;;AAET,KAAI,OAAO,KACT,QAAO,OAAO,KAAK,IAAI;CAEzB,IAAI,OAAO,EAAE;AACb,MAAK,IAAI,KAAK,IACZ,KAAI,eAAe,KAAK,EAAE,CACxB,MAAK,KAAK,EAAE;AAGhB,QAAO;;;;;;;;AAQT,SAAgB,WAAW,KAAK;AAC9B,SAAQ,OAAO,KAAf;EACE,KAAK,SACH,QAAO,KAAK,MAAM,KAAK,UAAU,IAAI,CAAC;EACxC,KAAK,YACH,QAAO;EACT,QACE,QAAO;;;AAIb,SAAgB,UAAU,KAAsB;CAC9C,IAAI,IAAI;CACR,MAAM,MAAM,IAAI;CAChB,IAAI;AACJ,QAAO,IAAI,KAAK;AACd,aAAW,IAAI,WAAW,EAAE;AAC5B,MAAI,YAAY,MAAM,YAAY,IAAI;AACpC;AACA;;AAEF,SAAO;;AAET,QAAO;;;;;;;AAOT,SAAgB,oBAAoB,MAAsB;AACxD,KAAI,KAAK,QAAQ,IAAI,KAAK,MAAM,KAAK,QAAQ,IAAI,KAAK,GAAI,QAAO;AACjE,QAAO,KAAK,QAAQ,MAAM,KAAK,CAAC,QAAQ,OAAO,KAAK;;;;;;;AAOtD,SAAgB,sBAAsB,MAAsB;AAC1D,QAAO,KAAK,QAAQ,OAAO,IAAI,CAAC,QAAQ,OAAO,IAAI;;;;;AAiCrD,SAAgB,aAAa,KAAmB;AAC9C,KAAI,QAAQ,KAAA,EACV,QAAO;AAET,KAAI;MACE,MAAM,QAAQ,IAAI;QACf,IAAI,IAAI,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,IACzC,KAAI,aAAa,IAAI,GAAG,CACtB,QAAO;aAGF,OAAO,QAAQ,UAAU;GAClC,MAAM,UAAU,YAAY,IAAI;GAChC,MAAM,gBAAgB,QAAQ;AAC9B,QAAK,IAAI,IAAI,GAAG,IAAI,eAAe,IACjC,KAAI,aAAa,IAAI,QAAQ,IAAI,CAC/B,QAAO;;;AAKf,QAAO;;AAkBT,SAAS,2BAA2B,SAAiB,MAAsB;CACzE,MAAM,eAAe,CAAC,QAAQ;AAC9B,MAAK,MAAM,OAAO,MAAM;EACtB,MAAM,QACJ,OAAO,KAAK,SAAS,WACjB,KAAK,UAAU,KAAK,MAAM,MAAM,EAAE,GAClC,KAAK;AACX,MAAI,OAAO,UAAU,YACnB,cAAa,KAAK,GAAG,IAAI,IAAI,QAAQ;;AAGzC,QAAO,aAAa,KAAK,KAAK;;AAEhC,IAAa,aAAb,cAAgC,MAAM;CACpC,YACE,SACA,MACA,OACA,WACA,MACA;AACA,QACE,2BAA2B,SAAS;GAAE;GAAM;GAAO;GAAW;GAAM,CAAC,CACtE;AAPM,OAAA,OAAA;AACA,OAAA,QAAA;AACA,OAAA,YAAA;AACA,OAAA,OAAA;AAKP,SAAO,eAAe,MAAM,IAAI,OAAO,UAAU;AACjD,OAAK,UAAU,2BAA2B,SAAS;GACjD;GACA;GACA;GACA;GACD,CAAC"}