{"version":3,"file":"object.mjs","sources":["../../../src/utils/object.ts"],"sourcesContent":["import { isArray, isMap, isObject, isRegExp, isSet } from './type'\n\nexport function has(object: unknown, key: string): boolean {\n  return object != null && Object.prototype.hasOwnProperty.call(object, key)\n}\n\nexport function isEqual(source: unknown, other: unknown): boolean {\n  if (Object.is(source, other)) {\n    return true\n  }\n\n  if (!isObject(source) || !isObject(other) || !source || !other) {\n    return false\n  }\n\n  if (source.constructor !== other.constructor) {\n    return false\n  }\n\n  if (isArray(source)) {\n    if (!isArray(other)) {\n      return false\n    }\n    if (source.length !== other.length) {\n      return false\n    }\n    for (let i = 0; i < source.length; i += 1) {\n      if (!isEqual(source[i], other[i])) {\n        return false\n      }\n    }\n    return true\n  }\n\n  if (isSet(source)) {\n    if (!isSet(other)) {\n      return false\n    }\n    if (source.size !== other.size) {\n      return false\n    }\n    for (const value of source.values()) {\n      if (!other.has(value)) {\n        return false\n      }\n    }\n    return true\n  }\n\n  if (isMap(source)) {\n    if (!isMap(other)) {\n      return false\n    }\n    if (source.size !== other.size) {\n      return false\n    }\n    for (const key of source.keys()) {\n      if (!other.has(key)) {\n        return false\n      }\n    }\n    for (const [key, value] of source.entries()) {\n      if (!isEqual(value, other.get(key))) {\n        return false\n      }\n    }\n    return true\n  }\n\n  if (isRegExp(source)) {\n    if (!isRegExp(other)) {\n      return false\n    }\n    return source.source === other.source && source.flags === other.flags\n  }\n\n  if (source.valueOf !== Object.prototype.valueOf) {\n    return source.valueOf() === other.valueOf()\n  }\n  if (source.toString !== Object.prototype.toString) {\n    return source.toString() === other.toString()\n  }\n\n  const keys = Object.keys(source)\n  if (keys.length !== Object.keys(other).length) {\n    return false\n  }\n  for (const key of keys) {\n    if (!Object.prototype.hasOwnProperty.call(other, key)) {\n      return false\n    }\n  }\n  for (const key of keys) {\n    if (\n      !isEqual(\n        (source as { [Key: string]: unknown })[key],\n        (other as { [Key: string]: unknown })[key]\n      )\n    ) {\n      return false\n    }\n  }\n\n  return true\n}\n"],"names":["isEqual","source","other","Object","is","isObject","constructor","isArray","length","i","isSet","size","value","values","has","isMap","key","keys","entries","get","isRegExp","flags","valueOf","prototype","toString","hasOwnProperty","call"],"mappings":"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"}