{"version":3,"file":"equality.cjs","sources":["../../../src/matchers/equality.js"],"sourcesContent":["import { getMatcherResult } from './utils.js';\nimport deepEqualCheck from 'deep-equal-check';\n\nexport function toBe(received, expected) {\n  const isEqual = Object.is(received, expected);\n  return getMatcherResult(isEqual, 'toBe', received, expected);\n}\n\nexport function toEqual(received, expected) {\n  return getMatcherResult(deepEqualCheck(received, expected), 'toEqual', received, expected);\n}\n\nexport function toBeNull(received) {\n  return getMatcherResult(received === null, 'toBeNull', received);\n}\n\nexport function toBeUndefined(received) {\n  return getMatcherResult(received === undefined, 'toBeUndefined', received);\n}\n\nexport function toBeDefined(received) {\n  return getMatcherResult(received !== undefined, 'toBeDefined', received);\n}\n\n/**\n * toBeCloseTo matcher follows below standards\n * \n * - Strings: Case-sensitive substring matching\n * - RegExp: Uses RegExp.test()\n * - Performance: Early termination for better performance\n * - Edge Cases: Handles NaN, Symbol, and other special values\n *  \n * @param {*} received \n * @param {*} expected \n * @param {*} precision \n * @returns \n */\nexport function toBeCloseTo(received, expected, precision = 2) {\n  if (typeof precision !== 'number' || precision < 0 || !Number.isInteger(precision)) {\n    throw new Error('toBeCloseTo precision must be a non-negative integer');\n  }\n  if (isNaN(received) && isNaN(expected)) {\n    return getMatcherResult(true, 'toBeCloseTo', received, expected);\n  }\n  if (isNaN(received) || isNaN(expected)) {\n    return getMatcherResult(false, 'toBeCloseTo', received, expected);\n  }\n  if (!isFinite(received) || !isFinite(expected)) {\n    return getMatcherResult(received === expected, 'toBeCloseTo', received, expected);\n  }\n  \n  const tolerance = Math.pow(10, -precision) / 2;\n  const diff = Math.abs(received - expected);\n  const isClose = diff < tolerance;\n  \n  return getMatcherResult(isClose, 'toBeCloseTo', received, expected);\n}\n"],"names":["getMatcherResult"],"mappings":";;;;;AAGO,SAAS,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE;AACzC,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC/C,EAAE,OAAOA,sBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAC9D;;AAEO,SAAS,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE;AAC5C,EAAE,OAAOA,sBAAgB,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAC5F;;AAEO,SAAS,QAAQ,CAAC,QAAQ,EAAE;AACnC,EAAE,OAAOA,sBAAgB,CAAC,QAAQ,KAAK,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC;AAClE;;AAEO,SAAS,aAAa,CAAC,QAAQ,EAAE;AACxC,EAAE,OAAOA,sBAAgB,CAAC,QAAQ,KAAK,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC;AAC5E;;AAEO,SAAS,WAAW,CAAC,QAAQ,EAAE;AACtC,EAAE,OAAOA,sBAAgB,CAAC,QAAQ,KAAK,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC;AAC1E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,GAAG,CAAC,EAAE;AAC/D,EAAE,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;AACtF,IAAI,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;AAC3E,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;AAC1C,IAAI,OAAOA,sBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACpE,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;AAC1C,IAAI,OAAOA,sBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACrE,EAAE;AACF,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAClD,IAAI,OAAOA,sBAAgB,CAAC,QAAQ,KAAK,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACrF,EAAE;AACF;AACA,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;AAChD,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5C,EAAE,MAAM,OAAO,GAAG,IAAI,GAAG,SAAS;AAClC;AACA,EAAE,OAAOA,sBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACrE;;;;;;;;;"}