{"version":3,"file":"spy.cjs","sources":["../../../src/matchers/spy.js"],"sourcesContent":["import { getMockRegistry, getGlobalMockRegistry, clearWorkerRegistries } from './workerIsolatedRegistry.js';\n\nconst mockRegistry = getMockRegistry();\nconst globalMockRegistry = getGlobalMockRegistry();\n\nexport function createSpy(fn) {\n  const spy = function(...args) {\n    spy.calls.push(args);\n    spy.callCount++;\n    let result, threw = false, error;\n    try {\n      if (spy._mockImplementation) {\n        result = spy._mockImplementation.apply(this, args);\n      } else if (spy._mockReturnValue !== undefined) {\n        result = spy._mockReturnValue;\n      } else if (spy._mockResolvedValue !== undefined) {\n        result = Promise.resolve(spy._mockResolvedValue);\n      } else if (spy._mockRejectedValue !== undefined) {\n        result = Promise.reject(spy._mockRejectedValue);\n      } else {\n        result = fn ? fn.apply(this, args) : undefined;\n      }\n    } catch (e) {\n      threw = true;\n      error = e;\n      throw e;\n    } finally {\n      spy.results.push({ type: threw ? 'throw' : 'return', value: threw ? error : result });\n    }\n    return result;\n  };\n  spy.calls = [];\n  spy.callCount = 0;\n  spy.results = [];\n  spy.isSpy = true;\n  spy.restore = () => {};\n  \n  // Add mock-like functionality\n  spy._mockImplementation = undefined;\n  spy._mockReturnValue = undefined;\n  spy._mockResolvedValue = undefined;\n  spy._mockRejectedValue = undefined;\n  \n  spy.mockImplementation = function(implementation) {\n    spy._mockImplementation = implementation;\n    return spy;\n  };\n  \n  spy.mockReturnValue = function(value) {\n    spy._mockReturnValue = value;\n    return spy;\n  };\n  \n  spy.mockResolvedValue = function(value) {\n    spy._mockResolvedValue = value;\n    return spy;\n  };\n  \n  spy.mockRejectedValue = function(value) {\n    spy._mockRejectedValue = value;\n    return spy;\n  };\n  \n  spy.mockClear = function() {\n    spy.calls = [];\n    spy.callCount = 0;\n    spy.results = [];\n    return spy;\n  };\n  \n  spy.mockReset = function() {\n    spy.mockClear();\n    spy._mockImplementation = undefined;\n    spy._mockReturnValue = undefined;\n    spy._mockResolvedValue = undefined;\n    spy._mockRejectedValue = undefined;\n    return spy;\n  };\n  \n  return spy;\n}\nexport const spy = createSpy;\nexport function isSpy(fn) { return fn && fn.isSpy; }\n\nexport function createStub(obj, methodName, impl) {\n  if (!obj || typeof obj[methodName] !== 'function') throw new Error('No such method to stub');\n  const original = obj[methodName];\n  const stub = createSpy(impl);\n  obj[methodName] = stub;\n  stub.restore = () => { obj[methodName] = original; };\n  return stub;\n}\nexport const stub = createStub;\n\nexport function fn(impl) {\n  const mockFn = function(...args) {\n    mockFn.mock.calls.push(args);\n    mockFn.mock.instances.push(this);\n    let result, threw = false, error;\n    try {\n      // Priority: Once variants (FIFO), then persistent, then impl, then undefined\n      if (mockFn._mockImplementationOnce.length) {\n        result = mockFn._mockImplementationOnce.shift().apply(this, args);\n      } else if (mockFn._mockImplementation) {\n        result = mockFn._mockImplementation.apply(this, args);\n      } else if (mockFn._mockReturnValueOnce.length) {\n        result = mockFn._mockReturnValueOnce.shift();\n      } else if (mockFn._mockReturnValue !== undefined) {\n        result = mockFn._mockReturnValue;\n      } else if (mockFn._mockResolvedValueOnce.length) {\n        result = Promise.resolve(mockFn._mockResolvedValueOnce.shift());\n      } else if (mockFn._mockRejectedValueOnce.length) {\n        result = Promise.reject(mockFn._mockRejectedValueOnce.shift());\n      } else if (mockFn._mockResolvedValue !== undefined) {\n        result = Promise.resolve(mockFn._mockResolvedValue);\n      } else if (mockFn._mockRejectedValue !== undefined) {\n        result = Promise.reject(mockFn._mockRejectedValue);\n      } else if (impl) {\n        result = impl.apply(this, args);\n      } else {\n        result = undefined;\n      }\n    } catch (e) {\n      threw = true;\n      error = e;\n      throw e;\n    } finally {\n      mockFn.mock.results.push({ type: threw ? 'throw' : 'return', value: threw ? error : result });\n    }\n    return result;\n  };\n  mockFn.mock = {\n    calls: [],\n    instances: [],\n    results: []\n  };\n  // Internal queues for Once variants\n  mockFn._mockImplementationOnce = [];\n  mockFn._mockReturnValueOnce = [];\n  mockFn._mockResolvedValueOnce = [];\n  mockFn._mockRejectedValueOnce = [];\n  // Persistent values (use internal properties)\n  mockFn._mockImplementation = undefined;\n  mockFn._mockReturnValue = undefined;\n  mockFn._mockResolvedValue = undefined;\n  mockFn._mockRejectedValue = undefined;\n  // Chainable setters\n  mockFn.mockClear = () => {\n    mockFn.mock.calls = [];\n    mockFn.mock.instances = [];\n    mockFn.mock.results = [];\n    return mockFn;\n  };\n  mockFn.mockReset = () => {\n    mockFn.mockClear();\n    mockFn._mockReturnValue = undefined;\n    mockFn._mockResolvedValue = undefined;\n    mockFn._mockRejectedValue = undefined;\n    mockFn._mockImplementation = undefined;\n    mockFn._mockReturnValueOnce = [];\n    mockFn._mockResolvedValueOnce = [];\n    mockFn._mockRejectedValueOnce = [];\n    mockFn._mockImplementationOnce = [];\n    return mockFn;\n  };\n  mockFn.mockRestore = () => { return mockFn; };\n  mockFn.mockImplementationOnce = (fnImpl) => {\n    mockFn._mockImplementationOnce.push(fnImpl);\n    return mockFn;\n  };\n  mockFn.mockImplementation = (fnImpl) => {\n    mockFn._mockImplementation = fnImpl;\n    return mockFn;\n  };\n  mockFn.mockReturnValueOnce = (value) => {\n    mockFn._mockReturnValueOnce.push(value);\n    return mockFn;\n  };\n  mockFn.mockReturnValue = (value) => {\n    mockFn._mockReturnValue = value;\n    return mockFn;\n  };\n  mockFn.mockResolvedValueOnce = (value) => {\n    mockFn._mockResolvedValueOnce.push(value);\n    return mockFn;\n  };\n  mockFn.mockResolvedValue = (value) => {\n    mockFn._mockResolvedValue = value;\n    // Clear rejected values when setting resolved value\n    mockFn._mockRejectedValue = undefined;\n    return mockFn;\n  };\n  mockFn.mockRejectedValueOnce = (value) => {\n    mockFn._mockRejectedValueOnce.push(value);\n    return mockFn;\n  };\n  mockFn.mockRejectedValue = (value) => {\n    mockFn._mockRejectedValue = value;\n    // Clear resolved values when setting rejected value\n    mockFn._mockResolvedValue = undefined;\n    return mockFn;\n  };\n  // Register in global registry\n  globalMockRegistry.add(mockFn);\n  return mockFn;\n}\n\nexport function isMockFunction(fn) {\n  return typeof fn === 'function' && fn.mock && Array.isArray(fn.mock.calls);\n}\n\nexport function spyOn(obj, methodName, accessorType) {\n  if (accessorType === 'get' || accessorType === 'set') {\n    const descriptor = Object.getOwnPropertyDescriptor(obj, methodName);\n    if (!descriptor) {\n      throw new Error(`Cannot spy on ${methodName} because it does not exist`);\n    }\n    \n    const originalGetter = descriptor.get;\n    const originalSetter = descriptor.set;\n    \n    if (accessorType === 'get' && !originalGetter) {\n      throw new Error(`Cannot spy on ${methodName} getter because it does not exist`);\n    }\n    if (accessorType === 'set' && !originalSetter) {\n      throw new Error(`Cannot spy on ${methodName} setter because it does not exist`);\n    }\n    \n    const spy = createSpy(accessorType === 'get' ? originalGetter : originalSetter);\n    \n    // Create new descriptor with spy\n    const newDescriptor = { ...descriptor };\n    if (accessorType === 'get') {\n      newDescriptor.get = spy;\n    } else {\n      newDescriptor.set = spy;\n    }\n    \n    // Apply the new descriptor\n    Object.defineProperty(obj, methodName, newDescriptor);\n    \n    // Add restore functionality\n    spy.restore = () => {\n      Object.defineProperty(obj, methodName, descriptor);\n    };\n    \n    return spy;\n  }\n  \n  // Handle regular function spying\n  if (!obj || typeof obj[methodName] !== 'function') {\n    throw new Error(`Cannot spy on ${methodName} because it is not a function`);\n  }\n  \n  const original = obj[methodName];\n  const spy = createSpy(original);\n  \n  // Replace the method with the spy\n  obj[methodName] = spy;\n  \n  // Add restore functionality\n  spy.restore = () => {\n    obj[methodName] = original;\n  };\n  \n  return spy;\n}\n\nexport function mock(modulePath, mockImpl) {\n  // Handle the case where no implementation is provided (undefined)\n  // In this case, we should return an empty object as expected by tests\n  if (mockImpl === undefined) {\n    const emptyMock = {};\n    mockRegistry.set(modulePath, emptyMock);\n    return emptyMock;\n  }\n  \n  // For objects, we need to store a reference and return that reference\n  // so that subsequent calls to mock() return the same object\n  if (typeof mockImpl === 'object' && mockImpl !== null) {\n    // Check if we already have a mock for this module\n    const existingMock = mockRegistry.get(modulePath);\n    if (existingMock && typeof existingMock === 'object' && existingMock !== null) {\n      // Update the existing object's properties instead of replacing it\n      Object.keys(existingMock).forEach(key => delete existingMock[key]);\n      Object.assign(existingMock, mockImpl);\n      return existingMock;\n    } else {\n      // Store the new object\n      mockRegistry.set(modulePath, mockImpl);\n      return mockImpl;\n    }\n  }\n  \n  // For primitives and null, store and return as is\n  mockRegistry.set(modulePath, mockImpl);\n  return mockImpl;\n}\n\nexport function unmock(modulePath) {\n  mockRegistry.delete(modulePath);\n}\n\nexport function resetAllMocks() {\n  // Use worker-isolated registry clearing\n  clearWorkerRegistries();\n  \n  // Reset all registered mock functions\n  globalMockRegistry.forEach(mockFn => {\n    if (mockFn.mockReset) {\n      mockFn.mockReset();\n    }\n  });\n}\n\nexport function requireActual(modulePath) {\n  return { [modulePath]: 'actual-module' };\n}\n\nexport function requireMock(modulePath) {\n  const mock = mockRegistry.get(modulePath);\n  return mock;\n}\n\nexport function mockImplementation(fn, implementation) {\n  if (!fn || !fn.mock) {\n    throw new Error('mockImplementation can only be called on mock functions');\n  }\n  fn._mockImplementation = implementation;\n  return fn;\n}\n\nexport function mockReturnValue(fn, value) {\n  if (!fn || !fn.mock) {\n    throw new Error('mockReturnValue can only be called on mock functions');\n  }\n  fn._mockReturnValue = value;\n  return fn;\n}\n\nexport function mockResolvedValue(fn, value) {\n  if (!fn || !fn.mock) {\n    throw new Error('mockResolvedValue can only be called on mock functions');\n  }\n  fn._mockResolvedValue = value;\n  // Clear rejected values when setting resolved value\n  fn._mockRejectedValue = undefined;\n  return fn;\n}\n\nexport function mockRejectedValue(fn, value) {\n  if (!fn || !fn.mock) {\n    throw new Error('mockRejectedValue can only be called on mock functions');\n  }\n  fn._mockRejectedValue = value;\n  // Clear resolved values when setting rejected value\n  fn._mockResolvedValue = undefined;\n  return fn;\n}\n\nfunction autoMockExports(exports) {\n  for (const key in exports) {\n    if (typeof exports[key] === 'function') {\n      exports[key] = fn();\n    }\n  }\n  return exports;\n}\n\nfunction findManualMock(modulePath) {\n  return null;\n}\n"],"names":["getMockRegistry","getGlobalMockRegistry","clearWorkerRegistries"],"mappings":"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"}