{"version":3,"file":"objectUtils.mjs","names":[],"sources":["../../../src/tools/utils/objectUtils.ts"],"sourcesContent":["// Prevent prototype pollution: __proto__ as an own property in parsed JSON can corrupt Object.prototype\nconst stripDangerousKeys = (key: string, value: unknown) => (key === '__proto__' ? undefined : value)\n\nexport function tryJsonParse<T = unknown>(text: string): T | undefined {\n  try {\n    return JSON.parse(text, stripDangerousKeys) as T\n  } catch {\n    // ignore\n  }\n}\n\nexport function shallowClone<T>(object: T): T & Record<string, never> {\n  return { ...object } as T & Record<string, never>\n}\n\nexport function objectHasValue<T extends { [key: string]: unknown }>(object: T, value: unknown): value is T[keyof T] {\n  return Object.keys(object).some((key) => object[key] === value)\n}\n\nexport function isEmptyObject(object: object) {\n  return Object.keys(object).length === 0\n}\n\nexport function mapValues<A, B>(object: { [key: string]: A }, fn: (arg: A) => B) {\n  const newObject: { [key: string]: B } = {}\n  for (const key of Object.keys(object)) {\n    newObject[key] = fn(object[key])\n  }\n  return newObject\n}\n\nexport function getConstructorName(value: unknown): string | undefined {\n  try {\n    const name = (value as { constructor?: { name?: unknown } } | null | undefined)?.constructor?.name\n    return typeof name === 'string' && name ? name : undefined\n  } catch {\n    // ignore: accessing `constructor` can throw on hostile objects\n  }\n}\n"],"mappings":";AACA,MAAM,sBAAsB,KAAa,UAAoB,QAAQ,cAAc,KAAA,IAAY;AAE/F,SAAgB,aAA0B,MAA6B;CACrE,IAAI;EACF,OAAO,KAAK,MAAM,MAAM,kBAAkB;CAC5C,QAAQ,CAER;AACF;AAEA,SAAgB,aAAgB,QAAsC;CACpE,OAAO,EAAE,GAAG,OAAO;AACrB;AAEA,SAAgB,eAAqD,QAAW,OAAqC;CACnH,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,MAAM,QAAQ,OAAO,SAAS,KAAK;AAChE;AAEA,SAAgB,cAAc,QAAgB;CAC5C,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,WAAW;AACxC;AAEA,SAAgB,UAAgB,QAA8B,IAAmB;CAC/E,MAAM,YAAkC,CAAC;CACzC,KAAK,MAAM,OAAO,OAAO,KAAK,MAAM,GAClC,UAAU,OAAO,GAAG,OAAO,IAAI;CAEjC,OAAO;AACT;AAEA,SAAgB,mBAAmB,OAAoC;CACrE,IAAI;EACF,MAAM,OAAQ,OAAmE,aAAa;EAC9F,OAAO,OAAO,SAAS,YAAY,OAAO,OAAO,KAAA;CACnD,QAAQ,CAER;AACF"}