{"version":3,"file":"index.cjs","sources":["../../../src/matchers/index.js"],"sourcesContent":["import * as equality from './equality.js';\nimport * as type from './type.js';\nimport * as string from './string.js';\nimport * as object from './object.js';\nimport * as number from './number.js';\nimport * as spyMatchers from './spyMatchers.js';\nimport * as asyncMatchers from './async.js';\nimport * as schema from './schema.js';\nimport * as empty from './empty.js';\nimport * as validation from './validation.js';\nimport * as satisfy from './satisfy.js';\nimport * as throwMatcher from './throw.js';\nimport * as length from './length.js';\nimport * as utils from './utils.js';\nimport { createNotHandler } from './notHandler.js';\nimport { createAsyncMatcherWrapper, isAsyncMatcherResult } from './asyncMatcherWrapper.js';\n\nconst customMatchers = {};\n\nexport function addMatchers(matchers) {\n  Object.assign(customMatchers, matchers);\n}\n\nexport function allMatchers(received, isNot = false) {\n  // Create async matcher wrappers for async matchers\n  const asyncMatcherWrappers = {\n    toResolve: createAsyncMatcherWrapper(asyncMatchers.toResolve, 'toResolve'),\n    toReject: createAsyncMatcherWrapper(asyncMatchers.toReject, 'toReject'),\n  };\n\n  const builtIn = {\n    ...equality,\n    ...type,\n    ...string,\n    ...object,\n    ...number,\n    ...spyMatchers,\n    ...asyncMatchers,\n    ...schema,\n    ...empty,\n    ...validation,\n    ...satisfy,\n    ...throwMatcher,\n    ...length,\n    ...utils,\n    rejects: asyncMatchers.rejects,\n    // Add async matcher wrappers\n    ...asyncMatcherWrappers,\n  };\n  const matchers = { ...builtIn, ...customMatchers };\n\n  // Handler for the proxy\n  const handler = {\n    get(target, prop) {\n      if (prop === 'not') {\n        // Return a new proxy with isNot flipped\n        return allMatchers(received, !isNot);\n      }\n      if (typeof matchers[prop] === 'function') {\n        // Special handling for 'rejects' function\n        if (prop === 'rejects') {\n          return matchers[prop](received);\n        }\n        // For regular matcher functions, handle with args\n        return (...args) => {\n          if (!isNot) {\n            // Execute matcher and return matcher object for chaining\n            const result = matchers[prop](received, ...args);\n            \n            // Check if this is an async matcher result\n            if (isAsyncMatcherResult(result)) {\n              // For async matchers, return a special object that can be awaited\n              return {\n                asyncMatcherResult: result,\n                chain: () => allMatchers(received, isNot),\n                execute: async () => {\n                  try {\n                    await result.execute();\n                    return allMatchers(received, isNot);\n                  } catch (error) {\n                    // Re-throw the error to be handled by the test runner\n                    throw error;\n                  }\n                }\n              };\n            }\n            \n            return allMatchers(received, isNot);\n          } else {\n            // Use separate .not handler for cleaner logic\n            const notHandler = createNotHandler(matchers[prop], prop);\n            notHandler(received, ...args);\n            return allMatchers(received, isNot);\n          }\n        };\n      }\n      // Handle special cases like 'rejects' that return objects\n      if (matchers[prop] && typeof matchers[prop] === 'object') {\n        return matchers[prop];\n      }\n      // Fallback to undefined\n      return undefined;\n    }\n  };\n  return new Proxy({}, handler);\n}\n\nexport default {\n  ...equality,\n  ...type,\n  ...string,\n  ...object,\n  ...number,\n  ...spyMatchers,\n  ...asyncMatchers,\n  ...schema,\n  ...empty,\n  ...validation,\n  ...satisfy,\n  ...throwMatcher,\n  ...length,\n  ...utils,\n  addMatchers,\n  allMatchers,\n}; "],"names":["createAsyncMatcherWrapper","asyncMatchers.toResolve","asyncMatchers.toReject","asyncMatchers","throwMatcher","asyncMatchers.rejects","isAsyncMatcherResult","notHandler","createNotHandler"],"mappings":"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"}