{"version":3,"file":"helpers.cjs","names":["keys","str: string","path: string","obj: any","i","message: String","args: Object","message: string","name: JsonPatchErrorName","index?: number","operation?: any","tree?: any"],"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;AACtC;AACD,SAAgB,YAAY,KAAK;AAC/B,KAAI,MAAM,QAAQ,IAAI,EAAE;EACtB,MAAMA,SAAO,IAAI,MAAM,IAAI;AAC3B,OAAK,IAAI,IAAI,GAAG,IAAIA,OAAK,QAAQ,KAC/BA,OAAK,KAAK,KAAK;AAEjB,SAAOA;CACR;AACD,KAAI,OAAO,KACT,QAAO,OAAO,KAAK,IAAI;CAEzB,IAAI,OAAO,CAAE;AACb,MAAK,IAAI,KAAK,IACZ,KAAI,eAAe,KAAK,EAAE,EACxB,KAAK,KAAK,EAAE;AAGhB,QAAO;AACR;;;;;;;AAOD,SAAgB,WAAW,KAAK;AAC9B,SAAQ,OAAO,KAAf;EACE,KAAK,SACH,QAAO,KAAK,MAAM,KAAK,UAAU,IAAI,CAAC;EACxC,KAAK,YACH,QAAO;EACT,QACE,QAAO;CACV;AACF;AAED,SAAgB,UAAUC,KAAsB;CAC9C,IAAI,IAAI;CACR,MAAM,MAAM,IAAI;CAChB,IAAI;AACJ,QAAO,IAAI,KAAK;EACd,WAAW,IAAI,WAAW,EAAE;AAC5B,MAAI,YAAY,MAAM,YAAY,IAAI;GACpC;AACA;EACD;AACD,SAAO;CACR;AACD,QAAO;AACR;;;;;;AAMD,SAAgB,oBAAoBC,MAAsB;AACxD,KAAI,KAAK,QAAQ,IAAI,KAAK,MAAM,KAAK,QAAQ,IAAI,KAAK,GAAI,QAAO;AACjE,QAAO,KAAK,QAAQ,MAAM,KAAK,CAAC,QAAQ,OAAO,KAAK;AACrD;;;;;;AAMD,SAAgB,sBAAsBA,MAAsB;AAC1D,QAAO,KAAK,QAAQ,OAAO,IAAI,CAAC,QAAQ,OAAO,IAAI;AACpD;;;;AAgCD,SAAgB,aAAaC,KAAmB;AAC9C,KAAI,QAAQ,OACV,QAAO;AAET,KAAI,KACF;MAAI,MAAM,QAAQ,IAAI,EACpB;QAAK,IAAIC,MAAI,GAAG,MAAM,IAAI,QAAQA,MAAI,KAAKA,MACzC,KAAI,aAAa,IAAIA,KAAG,CACtB,QAAO;EAEV,WACQ,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;EAGZ;;AAEH,QAAO;AACR;AAiBD,SAAS,2BAA2BC,SAAiBC,MAAsB;CACzE,MAAM,eAAe,CAAC,OAAQ;AAC9B,MAAK,MAAM,OAAO,MAAM;EACtB,MAAM,QACJ,OAAO,KAAK,SAAS,WACjB,KAAK,UAAU,KAAK,MAAM,MAAM,EAAE,GAClC,KAAK;AACX,MAAI,OAAO,UAAU,aACnB,aAAa,KAAK,GAAG,IAAI,EAAE,EAAE,OAAO,CAAC;CAExC;AACD,QAAO,aAAa,KAAK,KAAK;AAC/B;AACD,IAAa,aAAb,cAAgC,MAAM;CACpC,YACEC,SACOC,MACAC,OACAC,WACAC,MACP;EACA,MACE,2BAA2B,SAAS;GAAE;GAAM;GAAO;GAAW;EAAM,EAAC,CACtE;EAPM;EACA;EACA;EACA;EAKP,OAAO,eAAe,MAAM,IAAI,OAAO,UAAU;EACjD,KAAK,UAAU,2BAA2B,SAAS;GACjD;GACA;GACA;GACA;EACD,EAAC;CACH;AACF"}