{"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;CACvC,OAAO,gBAAgB,KAAK,KAAK,GAAG;AACtC;AACA,SAAgB,YAAY,KAAK;CAC/B,IAAI,MAAM,QAAQ,GAAG,GAAG;EACtB,MAAM,OAAO,IAAI,MAAM,IAAI,MAAM;EACjC,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAC/B,KAAK,KAAK,KAAK;EAEjB,OAAO;CACT;CACA,IAAI,OAAO,MACT,OAAO,OAAO,KAAK,GAAG;CAExB,IAAI,OAAO,CAAC;CACZ,KAAK,IAAI,KAAK,KACZ,IAAI,eAAe,KAAK,CAAC,GACvB,KAAK,KAAK,CAAC;CAGf,OAAO;AACT;;;;;;;AAOA,SAAgB,WAAW,KAAK;CAC9B,QAAQ,OAAO,KAAf;EACE,KAAK,UACH,OAAO,KAAK,MAAM,KAAK,UAAU,GAAG,CAAC;EACvC,KAAK,aACH,OAAO;EACT,SACE,OAAO;CACX;AACF;AAEA,SAAgB,UAAU,KAAsB;CAC9C,IAAI,IAAI;CACR,MAAM,MAAM,IAAI;CAChB,IAAI;CACJ,OAAO,IAAI,KAAK;EACd,WAAW,IAAI,WAAW,CAAC;EAC3B,IAAI,YAAY,MAAM,YAAY,IAAI;GACpC;GACA;EACF;EACA,OAAO;CACT;CACA,OAAO;AACT;;;;;;AAMA,SAAgB,oBAAoB,MAAsB;CACxD,IAAI,KAAK,QAAQ,GAAG,MAAM,MAAM,KAAK,QAAQ,GAAG,MAAM,IAAI,OAAO;CACjE,OAAO,KAAK,QAAQ,MAAM,IAAI,CAAC,CAAC,QAAQ,OAAO,IAAI;AACrD;;;;;;AAMA,SAAgB,sBAAsB,MAAsB;CAC1D,OAAO,KAAK,QAAQ,OAAO,GAAG,CAAC,CAAC,QAAQ,OAAO,GAAG;AACpD;;;;AAgCA,SAAgB,aAAa,KAAmB;CAC9C,IAAI,QAAQ,KAAA,GACV,OAAO;CAET,IAAI,KACE;MAAA,MAAM,QAAQ,GAAG,GACd;QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,QAAQ,IAAI,KAAK,KACzC,IAAI,aAAa,IAAI,EAAE,GACrB,OAAO;EAAA,OAGN,IAAI,OAAO,QAAQ,UAAU;GAClC,MAAM,UAAU,YAAY,GAAG;GAC/B,MAAM,gBAAgB,QAAQ;GAC9B,KAAK,IAAI,IAAI,GAAG,IAAI,eAAe,KACjC,IAAI,aAAa,IAAI,QAAQ,GAAG,GAC9B,OAAO;EAGb;;CAEF,OAAO;AACT;AAiBA,SAAS,2BAA2B,SAAiB,MAAsB;CACzE,MAAM,eAAe,CAAC,OAAO;CAC7B,KAAK,MAAM,OAAO,MAAM;EACtB,MAAM,QACJ,OAAO,KAAK,SAAS,WACjB,KAAK,UAAU,KAAK,MAAM,MAAM,CAAC,IACjC,KAAK;EACX,IAAI,OAAO,UAAU,aACnB,aAAa,KAAK,GAAG,IAAI,IAAI,OAAO;CAExC;CACA,OAAO,aAAa,KAAK,IAAI;AAC/B;AACA,IAAa,aAAb,cAAgC,MAAM;CAG3B;CACA;CACA;CACA;CALT,YACE,SACA,MACA,OACA,WACA,MACA;EACA,MACE,2BAA2B,SAAS;GAAE;GAAM;GAAO;GAAW;EAAK,CAAC,CACtE;EAPO,KAAA,OAAA;EACA,KAAA,QAAA;EACA,KAAA,YAAA;EACA,KAAA,OAAA;EAKP,OAAO,eAAe,MAAM,IAAI,OAAO,SAAS;EAChD,KAAK,UAAU,2BAA2B,SAAS;GACjD;GACA;GACA;GACA;EACF,CAAC;CACH;AACF"}