osra 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +284 -34
- package/build/extension/background.js +2 -0
- package/build/extension/background.js.map +1 -0
- package/build/extension/chunks/index.js +2 -0
- package/build/extension/chunks/index.js.map +1 -0
- package/build/extension/content.js +2 -0
- package/build/extension/content.js.map +1 -0
- package/build/extension/manifest.json +21 -0
- package/build/extension/popup.html +120 -0
- package/build/extension/popup.js +2 -0
- package/build/extension/popup.js.map +1 -0
- package/build/extension-test/background.js +753 -0
- package/build/extension-test/background.js.map +1 -0
- package/build/extension-test/content.js +4585 -0
- package/build/extension-test/content.js.map +1 -0
- package/build/extension-test/manifest.json +22 -0
- package/build/extension-test/popup.html +106 -0
- package/build/extension-test/popup.js +4610 -0
- package/build/extension-test/popup.js.map +1 -0
- package/build/extension-test-firefox/background.js +5464 -0
- package/build/extension-test-firefox/background.js.map +1 -0
- package/build/extension-test-firefox/content.js +5286 -0
- package/build/extension-test-firefox/content.js.map +1 -0
- package/build/extension-test-firefox/manifest.json +27 -0
- package/build/extension-test-firefox/popup.html +106 -0
- package/build/extension-test-firefox/popup.js +5213 -0
- package/build/extension-test-firefox/popup.js.map +1 -0
- package/build/index.d.ts +383 -9
- package/build/index.js +432 -327
- package/build/index.js.map +1 -1
- package/build/test.js +25848 -0
- package/build/test.js.map +1 -0
- package/package.json +13 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.js","sources":["../../src/types.ts","../../src/utils/allocator.ts","../../src/utils/platform.ts","../../src/utils/type-guards.ts","../../src/utils/transferable.ts","../../src/utils/capabilities.ts","../../src/utils/revivable.ts","../../src/utils/connection.ts","../../node_modules/typescript-event-target/dist/index.mjs","../../src/index.ts","../../node_modules/chai/index.js","../../node_modules/check-error/index.js","../../node_modules/chai-as-promised/lib/chai-as-promised.js","../../tests/extension/base-tests.ts","../../tests/extension/content-tests.ts","../../tests/extension/content.ts"],"sourcesContent":["import { TypedEventTarget } from 'typescript-event-target'\r\nimport type { TypedArray, WebExtOnConnect, WebExtOnMessage, WebExtPort, WebExtRuntime, WebExtSender } from './utils/type-guards'\r\n\r\nexport const OSRA_KEY = '__OSRA_KEY__' as const\r\nexport const OSRA_DEFAULT_KEY = '__OSRA_DEFAULT_KEY__' as const\r\nexport const OSRA_BOX = '__OSRA_BOX__' as const\r\n\r\nexport type Uuid = `${string}-${string}-${string}-${string}-${string}`\r\n\r\nexport type Jsonable =\r\n | boolean\r\n | null\r\n | number\r\n | string\r\n | { [key: string]: Jsonable }\r\n | Array<Jsonable>\r\n\r\nexport type Structurable =\r\n | Jsonable\r\n /** not really structureable but here for convenience */\r\n | void\r\n | undefined\r\n | BigInt\r\n | Date\r\n | RegExp\r\n | Blob\r\n | File\r\n | FileList\r\n | ArrayBuffer\r\n | ArrayBufferView\r\n | ImageBitmap\r\n | ImageData\r\n | { [key: string]: Structurable }\r\n | Array<Structurable>\r\n | Map<Structurable, Structurable>\r\n | Set<Structurable>\r\n\r\nexport type TransferBox<T extends Transferable = Transferable> = {\r\n [OSRA_BOX]: 'transferable'\r\n value: T\r\n}\r\n\r\nexport type ReviveBoxBase<T extends RevivableVariant['type'] = RevivableVariant['type']> = {\r\n [OSRA_BOX]: 'revivable'\r\n type: T\r\n value?: RevivableVariantTypeToRevivableVariant<T>\r\n [Symbol.toPrimitive]?: Function\r\n valueOf?: Function\r\n toString?: Function\r\n toJSON?: Function\r\n}\r\n\r\nexport type RevivableMessagePort = {\r\n type: 'messagePort'\r\n portId: string\r\n}\r\n\r\nexport type RevivablePromiseContext =\r\n | {\r\n type: 'resolve'\r\n data: Capable\r\n }\r\n | {\r\n type: 'reject'\r\n error: string\r\n }\r\n\r\nexport type RevivablePromise = {\r\n type: 'promise'\r\n port: MessagePort\r\n}\r\n\r\nexport type RevivableFunctionCallContext = [\r\n /** MessagePort that will be used to send the result of the function call */\r\n MessagePort,\r\n /** Arguments that will be passed to the function call */\r\n Capable[]\r\n]\r\n\r\nexport type RevivableFunction = {\r\n type: 'function'\r\n port: MessagePort\r\n}\r\n\r\nexport type RevivableTypedArray = {\r\n type: 'typedArray'\r\n typedArrayType: 'Int8Array' | 'Uint8Array' | 'Uint8ClampedArray' | 'Int16Array' | 'Uint16Array' | 'Int32Array' | 'Uint32Array' | 'Float16Array' | 'Float32Array' | 'Float64Array' | 'BigInt64Array' | 'BigUint64Array'\r\n arrayBuffer: ArrayBuffer\r\n}\r\n\r\nexport type RevivableArrayBuffer = {\r\n type: 'arrayBuffer'\r\n base64Buffer: string\r\n}\r\n\r\nexport type RevivableReadableStreamPullContext = {\r\n type: 'pull' | 'cancel'\r\n}\r\n\r\nexport type RevivableReadableStream = {\r\n type: 'readableStream'\r\n port: MessagePort\r\n}\r\n\r\nexport type RevivableDate = {\r\n type: 'date'\r\n ISOString: string\r\n}\r\n\r\nexport type RevivableError = {\r\n type: 'error'\r\n message: string\r\n stack: string\r\n}\r\n\r\nexport type RevivableVariant =\r\n | RevivableMessagePort\r\n | RevivablePromise\r\n | RevivableFunction\r\n | RevivableTypedArray\r\n | RevivableArrayBuffer\r\n | RevivableReadableStream\r\n | RevivableDate\r\n | RevivableError\r\n\r\nexport type RevivableVariantType = RevivableVariant['type']\r\n\r\nexport type RevivableVariantTypeToRevivableVariant<T extends RevivableVariantType> =\r\n T extends 'messagePort' ? MessagePort :\r\n T extends 'promise' ? Promise<any> :\r\n T extends 'function' ? Function :\r\n T extends 'typedArray' ? TypedArray :\r\n T extends 'arrayBuffer' ? ArrayBuffer :\r\n T extends 'readableStream' ? ReadableStream :\r\n T extends 'date' ? Date :\r\n T extends 'error' ? Error :\r\n never\r\n\r\nexport type RevivableBox =\r\n | ReviveBoxBase\r\n & RevivableVariant\r\n\r\nexport type Revivable =\r\n | MessagePort\r\n | Promise<Capable>\r\n | TypedArray\r\n | ArrayBuffer\r\n | ReadableStream\r\n | Date\r\n | Error\r\n | ((...args: Capable[]) => Promise<Capable>)\r\n\r\nexport type RevivableToRevivableType<T extends Revivable> =\r\n T extends MessagePort ? 'messagePort' :\r\n T extends Promise<any> ? 'promise' :\r\n T extends Function ? 'function' :\r\n T extends TypedArray ? 'typedArray' :\r\n T extends ArrayBuffer ? 'arrayBuffer' :\r\n T extends ReadableStream ? 'readableStream' :\r\n T extends Date ? 'date' :\r\n T extends Error ? 'error' :\r\n never\r\n\r\nexport type Capable =\r\n | Structurable\r\n | TransferBox\r\n | Transferable\r\n | Revivable\r\n | { [key: string]: Capable }\r\n | Array<Capable>\r\n | Map<Capable, Capable>\r\n | Set<Capable>\r\n\r\nexport type MessageBase = {\r\n [OSRA_KEY]: string\r\n /** UUID of the client that sent the message */\r\n uuid: Uuid\r\n name?: string\r\n}\r\n\r\nexport type ProtocolMessage =\r\n | {\r\n type: 'announce'\r\n /** Only set when acknowledging a remote announcement */\r\n remoteUuid?: Uuid\r\n }\r\n | {\r\n /** uuid already taken, try announcing with another one */\r\n type: 'reject-uuid-taken'\r\n remoteUuid: Uuid\r\n }\r\n | {\r\n type: 'close'\r\n remoteUuid: Uuid\r\n }\r\n\r\nexport type BidirectionalConnectionMessage =\r\n | {\r\n type: 'init'\r\n remoteUuid: Uuid\r\n data: Capable\r\n }\r\n /** message not needed if transferring MessagePort is supported */\r\n | {\r\n type: 'message'\r\n remoteUuid: Uuid\r\n data: Capable\r\n /** uuid of the messagePort that the message was sent through */\r\n portId: Uuid\r\n }\r\n /** message not needed if transferring MessagePort is supported */\r\n | {\r\n type: 'message-port-close'\r\n remoteUuid: Uuid\r\n /** uuid of the messagePort that closed */\r\n portId: string\r\n }\r\n\r\nexport type UnidirectionalConnectionMessage = {\r\n type: 'message'\r\n remoteUuid: Uuid\r\n data: Capable\r\n portId: Uuid\r\n}\r\n\r\nexport type ConnectionMessage =\r\n | BidirectionalConnectionMessage\r\n | UnidirectionalConnectionMessage\r\n\r\nexport type MessageVariant =\r\n | ProtocolMessage\r\n | ConnectionMessage\r\n\r\nexport type Message =\r\n | MessageBase\r\n & MessageVariant\r\n\r\nexport type MessageContext = {\r\n port?: MessagePort | WebExtPort // WebExtension\r\n sender?: WebExtSender // WebExtension\r\n receiveTransport?: ReceivePlatformTransport\r\n source?: MessageEventSource | null // Window, Worker, WebSocket, ect...\r\n}\r\n\r\nexport type MessageEventMap = {\r\n message: CustomEvent<Message>\r\n}\r\nexport type MessageEventTarget = TypedEventTarget<MessageEventMap>\r\n\r\nexport type CustomTransport =\r\n { isJson?: boolean }\r\n & (\r\n | {\r\n receive: ReceivePlatformTransport | ((listener: (event: Message, messageContext: MessageContext) => void) => void)\r\n emit: EmitPlatformTransport | ((message: Message, transferables?: Transferable[]) => void)\r\n }\r\n | { receive: ReceivePlatformTransport | ((listener: (event: Message, messageContext: MessageContext) => void) => void) }\r\n | { emit: EmitPlatformTransport | ((message: Message, transferables?: Transferable[]) => void) }\r\n )\r\n\r\nexport type CustomEmitTransport = Extract<CustomTransport, { emit: any }>\r\nexport type CustomReceiveTransport = Extract<CustomTransport, { receive: any }>\r\n\r\nexport type EmitJsonPlatformTransport =\r\n | WebSocket\r\n | WebExtPort\r\n\r\nexport type ReceiveJsonPlatformTransport =\r\n | WebSocket\r\n | WebExtPort\r\n | WebExtOnConnect\r\n | WebExtOnMessage\r\n\r\nexport type JsonPlatformTransport =\r\n { isJson: true }\r\n & (\r\n | EmitJsonPlatformTransport\r\n | ReceiveJsonPlatformTransport\r\n )\r\n\r\nexport type EmitPlatformTransport =\r\n | EmitJsonPlatformTransport\r\n | Window\r\n | ServiceWorker\r\n | Worker\r\n | SharedWorker\r\n | MessagePort\r\n\r\nexport type ReceivePlatformTransport =\r\n | ReceiveJsonPlatformTransport\r\n | Window\r\n | ServiceWorker\r\n | Worker\r\n | SharedWorker\r\n | MessagePort\r\n\r\nexport type PlatformTransport =\r\n | EmitPlatformTransport\r\n | ReceivePlatformTransport\r\n\r\nexport type EmitTransport = EmitPlatformTransport & Extract<CustomTransport, { emit: any }>\r\nexport type ReceiveTransport = ReceivePlatformTransport & Extract<CustomTransport, { receive: any }>\r\n\r\nexport type Transport =\r\n | PlatformTransport\r\n | CustomTransport\r\n","import type { Message, Uuid } from '../types'\r\nimport type { StrictMessagePort } from './message-channel'\r\n\r\nexport const makeAllocator = <T>() => {\r\n const channels = new Map<string, T>()\r\n\r\n const alloc = (value: T): string => {\r\n let uuid = globalThis.crypto.randomUUID()\r\n while (channels.has(uuid)) {\r\n uuid = globalThis.crypto.randomUUID()\r\n }\r\n channels.set(uuid, value)\r\n return uuid\r\n }\r\n\r\n const has = (uuid: string) => channels.has(uuid)\r\n const get = (uuid: string) => channels.get(uuid)\r\n\r\n const free = (uuid: string) => {\r\n channels.delete(uuid)\r\n }\r\n\r\n const set = (uuid: string, value: T) => {\r\n channels.set(uuid, value)\r\n }\r\n\r\n return {\r\n alloc,\r\n has,\r\n get,\r\n free,\r\n set\r\n }\r\n}\r\n\r\nexport type Allocator<T> = ReturnType<typeof makeAllocator<T>>\r\n\r\ntype AllocatedMessageChannel = {\r\n uuid: Uuid\r\n /** Local port */\r\n port1: StrictMessagePort<Message>\r\n /** Remote port that gets transferred, might be undefined if a remote context created the channel */\r\n port2?: StrictMessagePort<Message>\r\n}\r\n\r\nexport const makeMessageChannelAllocator = () => {\r\n const channels = new Map<string, AllocatedMessageChannel>()\r\n\r\n const result = {\r\n getUniqueUuid: () => {\r\n let uuid: Uuid = globalThis.crypto.randomUUID()\r\n while (channels.has(uuid)) {\r\n uuid = globalThis.crypto.randomUUID()\r\n }\r\n return uuid\r\n },\r\n set: (uuid: Uuid, messagePorts: { port1: MessagePort, port2?: MessagePort }) => {\r\n channels.set(uuid, { uuid, ...messagePorts })\r\n },\r\n alloc: (uuid: Uuid | undefined = result.getUniqueUuid(), messagePorts?: { port1: MessagePort, port2?: MessagePort }) => {\r\n if (messagePorts) {\r\n channels.set(uuid, { uuid, ...messagePorts })\r\n return { uuid, ...messagePorts }\r\n }\r\n const messageChannel = new MessageChannel()\r\n const allocatedMessageChannel = {\r\n uuid,\r\n port1: messageChannel.port1,\r\n port2: messageChannel.port2\r\n } satisfies AllocatedMessageChannel\r\n channels.set(uuid, allocatedMessageChannel)\r\n return allocatedMessageChannel\r\n },\r\n has: (uuid: string) => channels.has(uuid),\r\n get: (uuid: string) => channels.get(uuid),\r\n free: (uuid: string) => channels.delete(uuid),\r\n getOrAlloc: (uuid: Uuid | undefined = result.getUniqueUuid(), messagePorts?: { port1: MessagePort, port2?: MessagePort }) => {\r\n const existingChannel = result.get(uuid)\r\n if (existingChannel) return existingChannel!\r\n return result.alloc(uuid, messagePorts)\r\n }\r\n }\r\n return result\r\n}\r\n\r\nexport type MessageChannelAllocator = ReturnType<typeof makeMessageChannelAllocator>\r\n","import type {\r\n CustomTransport, EmitTransport,\r\n Message, MessageContext,\r\n ReceiveTransport\r\n} from '../types'\r\nimport type { WebExtOnMessage, WebExtPort, WebExtSender } from './type-guards'\r\n\r\nimport { OSRA_KEY } from '../types'\r\nimport {\r\n isOsraMessage, isCustomTransport,\r\n isWebExtensionOnConnect, isWebExtensionOnMessage,\r\n isWebExtensionPort, isWebSocket, isWindow, isSharedWorker\r\n} from './type-guards'\r\n\r\nexport const getWebExtensionGlobal = () => globalThis.browser ?? globalThis.chrome\r\nexport const getWebExtensionRuntime = () => getWebExtensionGlobal().runtime\r\n\r\nexport const checkOsraMessageKey = (message: any, key: string): message is Message =>\r\n isOsraMessage(message)\r\n && message[OSRA_KEY] === key\r\n\r\nexport const registerOsraMessageListener = (\r\n { listener, transport, remoteName, key = OSRA_KEY, unregisterSignal }:\r\n {\r\n listener: (message: Message, messageContext: MessageContext) => Promise<void>\r\n transport: ReceiveTransport\r\n remoteName?: string\r\n key?: string\r\n unregisterSignal?: AbortSignal\r\n }\r\n) => {\r\n const registerListenerOnReceiveTransport = (receiveTransport: Extract<CustomTransport, { receive: any }>['receive']) => {\r\n // Custom function handler\r\n if (typeof receiveTransport === 'function') {\r\n receiveTransport(listener)\r\n // WebExtension handler\r\n } else if (\r\n isWebExtensionPort(receiveTransport)\r\n || isWebExtensionOnConnect(receiveTransport)\r\n || isWebExtensionOnMessage(receiveTransport)\r\n ) {\r\n const listenOnWebExtOnMessage = (onMessage: WebExtOnMessage, port?: WebExtPort) => {\r\n const _listener = (message: object, sender?: WebExtSender) => {\r\n if (!checkOsraMessageKey(message, key)) return\r\n if (remoteName && message.name !== remoteName) return\r\n listener(message, { port, sender })\r\n }\r\n onMessage.addListener(_listener)\r\n if (unregisterSignal) {\r\n unregisterSignal.addEventListener('abort', () =>\r\n onMessage.removeListener(_listener)\r\n )\r\n }\r\n }\r\n\r\n // WebExtOnConnect\r\n if (isWebExtensionOnConnect(receiveTransport)) {\r\n const _listener = (port: WebExtPort) => {\r\n listenOnWebExtOnMessage(port.onMessage, port)\r\n }\r\n receiveTransport.addListener(_listener)\r\n if (unregisterSignal) {\r\n unregisterSignal.addEventListener('abort', () =>\r\n receiveTransport.removeListener(_listener)\r\n )\r\n }\r\n // WebExtOnMessage\r\n } else if (isWebExtensionOnMessage(receiveTransport)) {\r\n listenOnWebExtOnMessage(receiveTransport)\r\n } else { // WebExtPort\r\n listenOnWebExtOnMessage(receiveTransport.onMessage)\r\n }\r\n } else { // Window, Worker, WebSocket, ect...\r\n const _listener = (event: MessageEvent<Message>) => {\r\n if (!checkOsraMessageKey(event.data, key)) return\r\n if (remoteName && event.data.name !== remoteName) return\r\n listener(event.data, { receiveTransport, source: event.source })\r\n }\r\n receiveTransport.addEventListener('message', _listener as unknown as EventListener)\r\n if (unregisterSignal) {\r\n unregisterSignal.addEventListener('abort', () =>\r\n receiveTransport.removeEventListener('message', _listener as unknown as EventListener)\r\n )\r\n }\r\n }\r\n }\r\n if (isCustomTransport(transport)) {\r\n registerListenerOnReceiveTransport(transport.receive)\r\n } else {\r\n registerListenerOnReceiveTransport(transport)\r\n }\r\n}\r\n\r\nexport const sendOsraMessage = (\r\n transport: EmitTransport,\r\n message: Message,\r\n origin = '*',\r\n transferables: Transferable[] = []\r\n) => {\r\n const sendToEmitTransport = (emitTransport: Extract<EmitTransport, { emit: any }>['emit']) => {\r\n if (typeof emitTransport === 'function') {\r\n emitTransport(message, transferables)\r\n } else if (isWebExtensionPort(emitTransport)) {\r\n emitTransport.postMessage(message)\r\n } else if (isWindow(emitTransport)) {\r\n emitTransport.postMessage(message, origin, transferables)\r\n } else if (isWebSocket(emitTransport)) {\r\n emitTransport.send(JSON.stringify(message))\r\n } else if (isSharedWorker(emitTransport)) {\r\n emitTransport.port.postMessage(message, transferables)\r\n } else { // MessagePort | ServiceWorker | Worker\r\n emitTransport.postMessage(message, transferables)\r\n }\r\n }\r\n\r\n if (isCustomTransport(transport)) {\r\n sendToEmitTransport(transport.emit)\r\n } else {\r\n sendToEmitTransport(transport)\r\n }\r\n}\r\n","import type {\r\n CustomEmitTransport, CustomReceiveTransport,\r\n CustomTransport, EmitJsonPlatformTransport,\r\n EmitTransport, JsonPlatformTransport,\r\n Message, ReceiveJsonPlatformTransport,\r\n ReceiveTransport, Revivable, RevivableBox, RevivableToRevivableType, RevivableVariantType, TransferBox, Transport\r\n} from '../types'\r\n\r\nimport { OSRA_BOX, OSRA_KEY } from '../types'\r\nimport { getWebExtensionRuntime } from './platform'\r\n\r\nconst typedArrayConstructors = [\r\n Int8Array,\r\n Uint8Array,\r\n Uint8ClampedArray,\r\n Int16Array,\r\n Uint16Array,\r\n Int32Array,\r\n Uint32Array,\r\n Float16Array,\r\n Float32Array,\r\n Float64Array,\r\n BigInt64Array,\r\n BigUint64Array\r\n]\r\nexport type TypedArrayConstructor = typeof typedArrayConstructors[number]\r\n\r\nconst typedArrays = [\r\n new Int8Array(),\r\n new Uint8Array(),\r\n new Uint8ClampedArray(),\r\n new Int16Array(),\r\n new Uint16Array(),\r\n new Int32Array(),\r\n new Uint32Array(),\r\n new Float16Array(),\r\n new Float32Array(),\r\n new Float64Array(),\r\n new BigInt64Array(),\r\n new BigUint64Array()\r\n]\r\nexport type TypedArray = typeof typedArrays[number]\r\nexport const typedArrayToType = <T extends TypedArray>(value: T) => {\r\n const type =\r\n value instanceof Int8Array ? 'Int8Array' :\r\n value instanceof Uint8Array ? 'Uint8Array' :\r\n value instanceof Uint8ClampedArray ? 'Uint8ClampedArray' :\r\n value instanceof Int16Array ? 'Int16Array' :\r\n value instanceof Uint16Array ? 'Uint16Array' :\r\n value instanceof Int32Array ? 'Int32Array' :\r\n value instanceof Uint32Array ? 'Uint32Array' :\r\n value instanceof Float16Array ? 'Float16Array' :\r\n value instanceof Float32Array ? 'Float32Array' :\r\n value instanceof Float64Array ? 'Float64Array' :\r\n value instanceof BigInt64Array ? 'BigInt64Array' :\r\n value instanceof BigUint64Array ? 'BigUint64Array' :\r\n undefined\r\n if (type === undefined) throw new Error('Unknown typed array type')\r\n return type\r\n}\r\nexport type TypeArrayType = ReturnType<typeof typedArrayToType>\r\nexport const typedArrayTypeToTypedArrayConstructor = (value: TypeArrayType): TypedArrayConstructor => {\r\n const typedArray =\r\n value === 'Int8Array' ? Int8Array :\r\n value === 'Uint8Array' ? Uint8Array :\r\n value === 'Uint8ClampedArray' ? Uint8ClampedArray :\r\n value === 'Int16Array' ? Int16Array :\r\n value === 'Uint16Array' ? Uint16Array :\r\n value === 'Int32Array' ? Int32Array :\r\n value === 'Uint32Array' ? Uint32Array :\r\n value === 'Float16Array' ? Float16Array :\r\n value === 'Float32Array' ? Float32Array :\r\n value === 'Float64Array' ? Float64Array :\r\n value === 'BigInt64Array' ? BigInt64Array :\r\n value === 'BigUint64Array' ? BigUint64Array :\r\n undefined\r\n if (typedArray === undefined) throw new Error('Unknown typed array type')\r\n return typedArray\r\n}\r\n\r\nexport const isTypedArray = (value: any): value is TypedArray => typedArrayConstructors.some(typedArray => value instanceof typedArray)\r\nexport const isWebSocket = (value: any) => value instanceof WebSocket\r\nexport const isServiceWorkerContainer = (value: any): value is ServiceWorkerContainer => globalThis.ServiceWorkerContainer && value instanceof ServiceWorkerContainer\r\nexport const isWorker = (value: any): value is Worker => globalThis.Worker && value instanceof Worker\r\n// @ts-expect-error\r\nexport const isDedicatedWorker = (value: any): value is DedicatedWorkerGlobalScope => globalThis.DedicatedWorkerGlobalScope && value instanceof DedicatedWorkerGlobalScope\r\nexport const isSharedWorker = (value: any): value is SharedWorker => globalThis.SharedWorker && value instanceof SharedWorker\r\nexport const isMessagePort = (value: any) => value instanceof MessagePort\r\nexport const isPromise = (value: any) => value instanceof Promise\r\nexport const isFunction = (value: any): value is Function => typeof value === 'function'\r\nexport const isArrayBuffer = (value: any) => value instanceof ArrayBuffer\r\nexport const isReadableStream = (value: any) => value instanceof ReadableStream\r\nexport const isDate = (value: any) => value instanceof Date\r\nexport const isError = (value: any) => value instanceof Error\r\n\r\nexport const isAlwaysBox = (value: any): value is Function | Promise<any> | Date | Error =>\r\n isFunction(value)\r\n || isPromise(value)\r\n || isTypedArray(value)\r\n || isDate(value)\r\n || isError(value)\r\n\r\nexport const isOsraMessage = (value: any): value is Message =>\r\n Boolean(\r\n value\r\n && typeof value === 'object'\r\n && (value as Message)[OSRA_KEY]\r\n )\r\n\r\nexport const isClonable = (value: any) =>\r\n globalThis.SharedArrayBuffer && value instanceof globalThis.SharedArrayBuffer ? true\r\n : false\r\n\r\nexport const isTransferable = (value: any): value is Transferable =>\r\n globalThis.ArrayBuffer && value instanceof globalThis.ArrayBuffer ? true\r\n : globalThis.MessagePort && value instanceof globalThis.MessagePort ? true\r\n : globalThis.ReadableStream && value instanceof globalThis.ReadableStream ? true\r\n : globalThis.WritableStream && value instanceof globalThis.WritableStream ? true\r\n : globalThis.TransformStream && value instanceof globalThis.TransformStream ? true\r\n : globalThis.ImageBitmap && value instanceof globalThis.ImageBitmap ? true\r\n : false\r\n\r\nexport const isTransferBox = (value: any): value is TransferBox<any> =>\r\n Boolean(\r\n value\r\n && typeof value === 'object'\r\n && (value as TransferBox<Transferable>)[OSRA_BOX] === 'transferable'\r\n )\r\n\r\nexport type WebExtRuntime = typeof browser.runtime\r\nexport const isWebExtensionRuntime = (value: any): value is WebExtRuntime => {\r\n const runtime = getWebExtensionRuntime()\r\n return Boolean(\r\n value\r\n && typeof value === 'object'\r\n && isWebExtensionOnConnect(runtime.onConnect)\r\n && runtime.id\r\n )\r\n}\r\n\r\nexport type WebExtPort = ReturnType<WebExtRuntime['connect']>\r\nexport const isWebExtensionPort = (value: any, connectPort: boolean = false): value is WebExtPort => {\r\n return Boolean(\r\n value\r\n && typeof value === 'object'\r\n && (value as WebExtPort).name\r\n && (value as WebExtPort).disconnect\r\n && (value as WebExtPort).postMessage\r\n && (\r\n connectPort\r\n // these properties are only present on WebExtPort that were created through runtime.connect()\r\n ? (\r\n (value as WebExtPort).sender\r\n && (value as WebExtPort).onMessage\r\n && (value as WebExtPort).onDisconnect\r\n )\r\n : true\r\n )\r\n )\r\n}\r\n\r\nexport type WebExtSender = NonNullable<WebExtPort['sender']>\r\n\r\nexport type WebExtOnConnect = WebExtRuntime['onConnect']\r\nexport const isWebExtensionOnConnect = (value: any): value is WebExtOnConnect =>\r\n Boolean(\r\n value\r\n && typeof value === 'object'\r\n && (value as WebExtOnConnect).addListener\r\n && (value as WebExtOnConnect).hasListener\r\n && (value as WebExtOnConnect).removeListener\r\n )\r\n\r\nexport type WebExtOnMessage = WebExtRuntime['onMessage']\r\nexport const isWebExtensionOnMessage = (value: any): value is WebExtOnMessage =>\r\n Boolean(\r\n value\r\n && typeof value === 'object'\r\n && (value as WebExtOnMessage).addListener\r\n && (value as WebExtOnMessage).hasListener\r\n && (value as WebExtOnMessage).removeListener\r\n )\r\n\r\nexport const isWindow = (value: any): value is Window => {\r\n return Boolean(\r\n value\r\n && typeof value === 'object'\r\n && (value as Window).document\r\n && (value as Window).location\r\n && (value as Window).navigator\r\n && (value as Window).screen\r\n && (value as Window).history\r\n )\r\n}\r\n\r\nexport type IsEmitJsonOnlyTransport<T extends Transport> = T extends EmitJsonPlatformTransport ? true : false\r\nexport const isEmitJsonOnlyTransport = (value: any): value is EmitJsonPlatformTransport =>\r\n isWebSocket(value)\r\n || isWebExtensionPort(value)\r\n\r\nexport type IsReceiveJsonOnlyTransport<T extends Transport> = T extends ReceiveJsonPlatformTransport ? true : false\r\nexport const isReceiveJsonOnlyTransport = (value: any): value is ReceiveJsonPlatformTransport =>\r\n isWebSocket(value)\r\n || isWebExtensionPort(value)\r\n || isWebExtensionOnConnect(value)\r\n || isWebExtensionOnMessage(value)\r\n\r\nexport type IsJsonOnlyTransport<T extends Transport> = T extends JsonPlatformTransport ? true : false\r\nexport const isJsonOnlyTransport = (value: any): value is JsonPlatformTransport =>\r\n isEmitJsonOnlyTransport(value)\r\n || isReceiveJsonOnlyTransport(value)\r\n\r\nexport type IsEmitTransport<T extends Transport> = T extends EmitTransport ? true : false\r\nexport const isEmitTransport = (value: any): value is EmitTransport =>\r\n isEmitJsonOnlyTransport(value)\r\n || isWindow(value)\r\n || isServiceWorkerContainer(value)\r\n || isWorker(value)\r\n || isDedicatedWorker(value)\r\n || isSharedWorker(value)\r\n || isMessagePort(value)\r\n || isCustomEmitTransport(value)\r\n\r\nexport function assertEmitTransport (transport: Transport): asserts transport is EmitTransport {\r\n if (!isEmitTransport(transport)) throw new Error('Transport is not emitable')\r\n}\r\n\r\n\r\nexport type IsReceiveTransport<T extends Transport> = T extends ReceiveTransport ? true : false\r\nexport const isReceiveTransport = (value: any): value is ReceiveTransport =>\r\n isReceiveJsonOnlyTransport(value)\r\n || isWindow(value)\r\n || isServiceWorkerContainer(value)\r\n || isWorker(value)\r\n || isDedicatedWorker(value)\r\n || isSharedWorker(value)\r\n || isMessagePort(value)\r\n || isCustomReceiveTransport(value)\r\n\r\nexport function assertReceiveTransport (transport: Transport): asserts transport is ReceiveTransport {\r\n if (!isReceiveTransport(transport)) throw new Error('Transport is not receiveable')\r\n}\r\n\r\nexport const isCustomEmitTransport = (value: any): value is CustomEmitTransport =>\r\n Boolean(\r\n value\r\n && typeof value === 'object'\r\n && (\r\n 'emit' in value\r\n && (\r\n isEmitTransport(value.emit)\r\n || typeof value.emit === 'function'\r\n )\r\n )\r\n )\r\n\r\nexport const isCustomReceiveTransport = (value: any): value is CustomReceiveTransport =>\r\n Boolean(\r\n value\r\n && typeof value === 'object'\r\n && (\r\n 'receive' in value\r\n && (\r\n isReceiveTransport(value.receive)\r\n || typeof value.receive === 'function'\r\n )\r\n )\r\n )\r\n\r\nexport type IsCustomTransport<T extends Transport> = T extends CustomTransport ? true : false\r\nexport const isCustomTransport = (value: any): value is CustomTransport =>\r\n isCustomEmitTransport(value)\r\n || isCustomReceiveTransport(value)\r\n\r\nexport const isTransport = (value: any): value is Transport =>\r\n isJsonOnlyTransport(value)\r\n || isEmitTransport(value)\r\n || isReceiveTransport(value)\r\n || isCustomTransport(value)\r\n\r\nexport const isRevivable = (value: any): value is Revivable =>\r\n isMessagePort(value)\r\n || isFunction(value)\r\n || isPromise(value)\r\n || isTypedArray(value)\r\n || isArrayBuffer(value)\r\n || isReadableStream(value)\r\n || isDate(value)\r\n || isError(value)\r\n\r\nexport const isRevivableBox = (value: any): value is RevivableBox =>\r\n value\r\n && typeof value === 'object'\r\n && OSRA_BOX in value\r\n && value[OSRA_BOX] === 'revivable'\r\n\r\nexport const isRevivableMessagePortBox = (value: any): value is RevivableBox & { type: 'messagePort' } =>\r\n isRevivableBox(value) && value.type === 'messagePort'\r\n\r\nexport const isRevivablePromiseBox = (value: any): value is RevivableBox & { type: 'promise' } =>\r\n isRevivableBox(value) && value.type === 'promise'\r\n\r\nexport const isRevivableFunctionBox = (value: any): value is RevivableBox & { type: 'function' } =>\r\n isRevivableBox(value) && value.type === 'function'\r\n\r\nexport const isRevivableTypedArrayBox = (value: any): value is RevivableBox & { type: 'typedArray' } =>\r\n isRevivableBox(value) && value.type === 'typedArray'\r\n\r\nexport const isRevivableArrayBufferBox = (value: any): value is RevivableBox & { type: 'arrayBuffer' } =>\r\n isRevivableBox(value) && value.type === 'arrayBuffer'\r\n\r\nexport const isRevivableReadableStreamBox = (value: any): value is RevivableBox & { type: 'readableStream' } =>\r\n isRevivableBox(value) && value.type === 'readableStream'\r\n\r\nexport const isRevivableErrorBox = (value: any): value is RevivableBox & { type: 'error' } =>\r\n isRevivableBox(value) && value.type === 'error'\r\n\r\nexport const isRevivableDateBox = (value: any): value is RevivableBox & { type: 'date' } =>\r\n isRevivableBox(value) && value.type === 'date'\r\n\r\nexport const revivableBoxToType = (value: RevivableBox) => value.type\r\n\r\nexport const revivableToType = <T extends Revivable>(value: T): RevivableToRevivableType<T> => {\r\n if (isMessagePort(value)) return 'messagePort' as RevivableToRevivableType<T>\r\n if (isFunction(value)) return 'function' as RevivableToRevivableType<T>\r\n if (isPromise(value)) return 'promise' as RevivableToRevivableType<T>\r\n if (isTypedArray(value)) return 'typedArray' as RevivableToRevivableType<T>\r\n if (isArrayBuffer(value)) return 'arrayBuffer' as RevivableToRevivableType<T>\r\n if (isReadableStream(value)) return 'readableStream' as RevivableToRevivableType<T>\r\n if (isDate(value)) return 'date' as RevivableToRevivableType<T>\r\n if (isError(value)) return 'error' as RevivableToRevivableType<T>\r\n throw new Error('Unknown revivable type')\r\n}\r\n","import type { Capable, TransferBox } from '../types'\r\n\r\nimport { OSRA_BOX } from '../types'\r\nimport { deepReplace } from './replace'\r\nimport { isClonable, isTransferable, isTransferBox } from './type-guards'\r\n\r\nexport const getTransferableObjects = (value: any): Transferable[] => {\r\n const transferables: Transferable[] = []\r\n const recurse = (value: any): any =>\r\n isClonable(value) ? undefined\r\n : isTransferable(value) ? transferables.push(value)\r\n : Array.isArray(value) ? value.map(recurse)\r\n : value && typeof value === 'object' ? Object.values(value).map(recurse)\r\n : undefined\r\n\r\n recurse(value)\r\n return transferables\r\n}\r\n\r\nexport const getTransferBoxes = (value: any): TransferBox<Transferable>[] => {\r\n const transferBoxes: TransferBox<any>[] = []\r\n const recurse = (value: any): any =>\r\n isTransferBox(value) ? transferBoxes.push(value)\r\n : Array.isArray(value) ? value.map(recurse)\r\n : value && typeof value === 'object' ? Object.values(value).map(recurse)\r\n : undefined\r\n\r\n recurse(value)\r\n return transferBoxes\r\n}\r\n\r\n/** This box tells the protocol that the value should be copied instead of transfered */\r\nexport const transfer = <T extends Transferable>(value: T) => ({\r\n [OSRA_BOX]: 'transferable',\r\n value\r\n}) as TransferBox<T>\r\n\r\nexport const recursiveTransfer = <T extends Capable>(value: T) =>\r\n deepReplace(\r\n value,\r\n isTransferable,\r\n (value) => transfer(value)\r\n )\r\n","import { getTransferableObjects } from './transferable'\r\n\r\nexport type PlatformCapabilities = {\r\n jsonOnly: boolean\r\n messagePort: boolean\r\n arrayBuffer: boolean\r\n transferable: boolean\r\n transferableStream: boolean\r\n}\r\n\r\nconst probePlatformCapabilityUtil = <T>(value: T, transfer = false): Promise<T> => {\r\n const { port1, port2 } = new MessageChannel()\r\n const result = new Promise<T>(resolve =>\r\n port1.addEventListener('message', message =>\r\n resolve(message.data)\r\n )\r\n )\r\n port1.start()\r\n port2.postMessage(value, transfer ? getTransferableObjects(value) : [])\r\n return result\r\n}\r\n\r\nconst probeMessagePortTransfer = async () => {\r\n const { port1 } = new MessageChannel()\r\n const port = await probePlatformCapabilityUtil(port1, true)\r\n return port instanceof MessagePort\r\n}\r\n\r\nconst probeArrayBufferClone = async () => {\r\n const buffer = new ArrayBuffer(1)\r\n const arrayBuffer = await probePlatformCapabilityUtil(buffer)\r\n return arrayBuffer instanceof ArrayBuffer\r\n}\r\n\r\nconst probeArrayBufferTransfer = async () => {\r\n const buffer = new ArrayBuffer(1)\r\n const arrayBuffer = await probePlatformCapabilityUtil(buffer, true)\r\n return arrayBuffer instanceof ArrayBuffer\r\n}\r\n\r\nconst probeTransferableStream = async () => {\r\n const stream = new ReadableStream({\r\n start(controller) {\r\n controller.enqueue(new Uint8Array(1))\r\n controller.close()\r\n }\r\n })\r\n const transferableStream = await probePlatformCapabilityUtil(stream, true)\r\n return transferableStream instanceof ReadableStream\r\n}\r\n\r\nexport const probePlatformCapabilities = async (): Promise<PlatformCapabilities> => {\r\n const [\r\n messagePort,\r\n arrayBuffer,\r\n transferable,\r\n transferableStream,\r\n ] = await Promise.all([\r\n probeMessagePortTransfer().catch(() => false),\r\n probeArrayBufferClone().catch(() => false),\r\n probeArrayBufferTransfer().catch(() => false),\r\n probeTransferableStream().catch(() => false)\r\n ])\r\n return {\r\n jsonOnly:\r\n !messagePort\r\n && !arrayBuffer\r\n && !transferable\r\n && !transferableStream,\r\n messagePort,\r\n arrayBuffer,\r\n transferable,\r\n transferableStream,\r\n }\r\n}\r\n","import type {\r\n Capable,\r\n Message,\r\n Revivable,\r\n RevivableBox,\r\n RevivableDate,\r\n RevivableError,\r\n RevivableFunction,\r\n RevivableFunctionCallContext,\r\n RevivableMessagePort,\r\n RevivablePromise,\r\n RevivablePromiseContext,\r\n RevivableReadableStream,\r\n RevivableVariant,\r\n RevivableToRevivableType,\r\n ReviveBoxBase,\r\n Uuid,\r\n RevivableArrayBuffer,\r\n RevivableReadableStreamPullContext,\r\n RevivableTypedArray\r\n} from '../types'\r\nimport type { ConnectionRevivableContext } from './connection'\r\nimport type { DeepReplace } from './replace'\r\nimport type { StrictMessagePort } from './message-channel'\r\n\r\nimport { OSRA_BOX } from '../types'\r\nimport {\r\n isAlwaysBox,\r\n isArrayBuffer,\r\n isClonable,\r\n isDate, isError, isFunction,\r\n isMessagePort, isPromise, isReadableStream,\r\n isRevivable, isRevivableArrayBufferBox, isRevivableBox, isRevivableDateBox, isRevivableErrorBox,\r\n isRevivableFunctionBox, isRevivableMessagePortBox, isRevivablePromiseBox,\r\n isRevivableReadableStreamBox, isRevivableTypedArrayBox, isTransferable, isTypedArray, revivableToType,\r\n TypedArray,\r\n typedArrayToType,\r\n typedArrayTypeToTypedArrayConstructor\r\n} from './type-guards'\r\nimport { getTransferableObjects } from './transferable'\r\n\r\nexport const boxMessagePort = (\r\n value: MessagePort,\r\n context: ConnectionRevivableContext\r\n): RevivableVariant & { type: 'messagePort' } => {\r\n const messagePort = value as StrictMessagePort<Capable>\r\n const { uuid: portId } = context.messageChannels.alloc(undefined, { port1: messagePort })\r\n // Since we are in a boxed MessagePort, we want to send a message to the other side through the EmitTransport\r\n messagePort.addEventListener('message', ({ data }) => {\r\n context.sendMessage({\r\n type: 'message',\r\n remoteUuid: context.remoteUuid,\r\n data: isRevivableBox(data) ? data : recursiveBox(data, context),\r\n portId\r\n })\r\n })\r\n messagePort.start()\r\n\r\n // The ReceiveTransport received a message from the other side so we call it on our own side's MessagePort after reviving it\r\n context.eventTarget.addEventListener('message', function listener ({ detail: message }) {\r\n if (message.type === 'message-port-close') {\r\n if (message.portId !== portId) return\r\n context.eventTarget.removeEventListener('message', listener)\r\n messagePort.close()\r\n context.messageChannels.free(portId)\r\n return\r\n }\r\n if (message.type !== 'message' || message.portId !== portId) return\r\n messagePort.postMessage(message.data, getTransferableObjects(message.data))\r\n })\r\n\r\n return {\r\n type: 'messagePort',\r\n portId\r\n }\r\n}\r\n\r\nexport const reviveMessagePort = (value: RevivableMessagePort, context: ConnectionRevivableContext): StrictMessagePort<Capable> => {\r\n const { port1: userPort, port2: internalPort } = new MessageChannel()\r\n // Since we are in a boxed MessagePort, we want to send a message to the other side through the EmitTransport\r\n internalPort.addEventListener('message', ({ data }: MessageEvent<Message & { type: 'message' }>) => {\r\n context.sendMessage({\r\n type: 'message',\r\n remoteUuid: context.remoteUuid,\r\n data: isRevivableBox(data) ? data : recursiveBox(data, context),\r\n portId: value.portId as Uuid\r\n })\r\n })\r\n internalPort.start()\r\n\r\n const existingChannel = context.messageChannels.get(value.portId)\r\n const { port1 } =\r\n existingChannel\r\n ? existingChannel\r\n : context.messageChannels.alloc(value.portId as Uuid)\r\n // The ReceiveTransport received a message from the other side so we call it on our own side's MessagePort after reviving it\r\n port1.addEventListener('message', function listener ({ data: message }) {\r\n if (message.type === 'message-port-close') {\r\n if (message.portId !== value.portId) return\r\n port1.removeEventListener('message', listener)\r\n internalPort.close()\r\n context.messageChannels.free(value.portId)\r\n return\r\n }\r\n if (message.type !== 'message' || message.portId !== value.portId) return\r\n // if the returned messagePort has been registered as internal message port, then we proxy the data without reviving it\r\n if (context.messagePorts.has(userPort)) {\r\n internalPort.postMessage(message.data)\r\n } else { // In this case, userPort is actually passed by the user of osra and we should revive all the message data\r\n const revivedData = recursiveRevive(message.data, context)\r\n internalPort.postMessage(revivedData, getTransferableObjects(revivedData))\r\n }\r\n })\r\n port1.start()\r\n return userPort\r\n}\r\n\r\nexport const boxPromise = (value: Promise<any>, context: ConnectionRevivableContext): RevivableVariant & { type: 'promise' } => {\r\n const { port1: localPort, port2: remotePort } = new MessageChannel()\r\n context.messagePorts.add(remotePort)\r\n\r\n const sendResult = (result: { type: 'resolve', data: Capable } | { type: 'reject', error: string }) => {\r\n const boxedResult = recursiveBox(result, context)\r\n localPort.postMessage(boxedResult, getTransferableObjects(boxedResult))\r\n localPort.close()\r\n }\r\n\r\n value\r\n .then(data => sendResult({ type: 'resolve', data }))\r\n .catch(error => sendResult({ type: 'reject', error: error.stack }))\r\n\r\n return {\r\n type: 'promise',\r\n port: remotePort\r\n }\r\n}\r\n\r\nexport const revivePromise = (value: RevivablePromise, context: ConnectionRevivableContext): Promise<any> => {\r\n context.messagePorts.add(value.port)\r\n return new Promise((resolve, reject) => {\r\n value.port.addEventListener('message', ({ data }: MessageEvent<RevivablePromiseContext>) => {\r\n const result = recursiveRevive(data, context)\r\n if (result.type === 'resolve') {\r\n resolve(result.data)\r\n } else { // result.type === 'reject'\r\n reject(result.error)\r\n }\r\n value.port.close()\r\n }, { once: true })\r\n value.port.start()\r\n })\r\n}\r\n\r\nexport const boxFunction = (value: Function, context: ConnectionRevivableContext): RevivableVariant & { type: 'function' } => {\r\n const { port1: localPort, port2: remotePort } = new MessageChannel()\r\n context.messagePorts.add(remotePort)\r\n localPort.addEventListener('message', ({ data }: MessageEvent<RevivableFunctionCallContext>) => {\r\n const [returnValuePort, args] = recursiveRevive(data, context) as RevivableFunctionCallContext\r\n const result = (async () => value(...args))()\r\n const boxedResult = recursiveBox(result, context)\r\n returnValuePort.postMessage(boxedResult, getTransferableObjects(boxedResult))\r\n })\r\n localPort.start()\r\n\r\n return {\r\n type: 'function',\r\n port: remotePort\r\n }\r\n}\r\n\r\nexport const reviveFunction = (value: RevivableFunction, context: ConnectionRevivableContext): Function => {\r\n const func = (...args: Capable[]) =>\r\n new Promise((resolve, reject) => {\r\n const { port1: returnValueLocalPort, port2: returnValueRemotePort } = new MessageChannel()\r\n context.messagePorts.add(returnValueRemotePort)\r\n const callContext = recursiveBox([returnValueRemotePort, args] as const, context)\r\n value.port.postMessage(callContext, getTransferableObjects(callContext))\r\n\r\n returnValueLocalPort.addEventListener('message', ({ data }: MessageEvent<Capable>) => {\r\n if (!isRevivablePromiseBox(data)) throw new Error(`Proxied function did not return a promise`)\r\n const result = recursiveRevive(data, context) as Promise<Capable>\r\n result\r\n .then(resolve)\r\n .catch(reject)\r\n .finally(() => returnValueLocalPort.close())\r\n })\r\n returnValueLocalPort.start()\r\n })\r\n\r\n return func\r\n}\r\n\r\nexport const boxTypedArray = (value: TypedArray, context: ConnectionRevivableContext): RevivableVariant & { type: 'typedArray' } => {\r\n return {\r\n type: 'typedArray',\r\n typedArrayType: typedArrayToType(value),\r\n arrayBuffer: value.buffer\r\n }\r\n}\r\n\r\nexport const reviveTypedArray = (value: RevivableTypedArray, context: ConnectionRevivableContext): TypedArray => {\r\n const TypedArrayConstructor = typedArrayTypeToTypedArrayConstructor(value.typedArrayType)\r\n const result = new TypedArrayConstructor(value.arrayBuffer)\r\n return result\r\n}\r\n\r\nexport const boxArrayBuffer = (value: ArrayBuffer, context: ConnectionRevivableContext): RevivableVariant & { type: 'arrayBuffer' } => {\r\n return {\r\n type: 'arrayBuffer',\r\n base64Buffer: new Uint8Array(value).toBase64() as string\r\n }\r\n}\r\n\r\nexport const reviveArrayBuffer = (value: RevivableArrayBuffer, context: ConnectionRevivableContext): ArrayBuffer => {\r\n return (Uint8Array.fromBase64(value.base64Buffer) as Uint8Array).buffer as ArrayBuffer\r\n}\r\n\r\nexport const boxError = (value: Error, context: ConnectionRevivableContext): RevivableVariant & { type: 'error' } => {\r\n return {\r\n type: 'error',\r\n message: value.message,\r\n stack: value.stack || value.toString()\r\n }\r\n}\r\n\r\nexport const reviveError = (value: RevivableError, context: ConnectionRevivableContext): Error => {\r\n return new Error(value.message, { cause: value.stack })\r\n}\r\n\r\nexport const boxReadableStream = (value: ReadableStream, context: ConnectionRevivableContext): RevivableVariant & { type: 'readableStream' } => {\r\n const { port1: localPort, port2: remotePort } = new MessageChannel()\r\n context.messagePorts.add(remotePort)\r\n \r\n const reader = value.getReader()\r\n \r\n localPort.addEventListener('message', async ({ data }: MessageEvent<RevivableReadableStreamPullContext>) => {\r\n const { type } = recursiveRevive(data, context) as RevivableReadableStreamPullContext\r\n if (type === 'pull') {\r\n const pullResult = reader.read()\r\n const boxedResult = recursiveBox(pullResult, context)\r\n localPort.postMessage(boxedResult, getTransferableObjects(boxedResult))\r\n } else {\r\n reader.cancel()\r\n localPort.close()\r\n }\r\n })\r\n localPort.start()\r\n\r\n return {\r\n type: 'readableStream',\r\n port: remotePort\r\n }\r\n}\r\n\r\nexport const reviveReadableStream = (value: RevivableReadableStream, context: ConnectionRevivableContext): ReadableStream => {\r\n context.messagePorts.add(value.port)\r\n value.port.start()\r\n return new ReadableStream({\r\n start(controller) {},\r\n pull(controller) {\r\n return new Promise((resolve, reject) => {\r\n value.port.addEventListener('message', async ({ data }: MessageEvent<Capable>) => {\r\n if (!isRevivablePromiseBox(data)) throw new Error(`Proxied function did not return a promise`)\r\n const result = recursiveRevive(data, context) as Promise<ReadableStreamReadResult<any>>\r\n result\r\n .then(result => {\r\n if (result.done) controller.close()\r\n else controller.enqueue(result.value)\r\n resolve()\r\n })\r\n .catch(reject)\r\n }, { once: true })\r\n value.port.postMessage(recursiveBox({ type: 'pull' }, context))\r\n })\r\n },\r\n cancel() {\r\n value.port.postMessage(recursiveBox({ type: 'cancel' }, context))\r\n value.port.close()\r\n }\r\n })\r\n}\r\n\r\nexport const boxDate = (value: Date, context: ConnectionRevivableContext): RevivableVariant & { type: 'date' } => {\r\n return {\r\n type: 'date',\r\n ISOString: value.toISOString()\r\n }\r\n}\r\n\r\nexport const reviveDate = (value: RevivableDate, context: ConnectionRevivableContext): Date => {\r\n return new Date(value.ISOString)\r\n}\r\n\r\nexport const box = (value: Revivable, context: ConnectionRevivableContext) => {\r\n\r\n if (\r\n isAlwaysBox(value)\r\n // WebKit doesn't support transferable streams so we force box them\r\n || isReadableStream(value) && !context.platformCapabilities.transferableStream\r\n ) {\r\n return {\r\n [OSRA_BOX]: 'revivable',\r\n ...(\r\n isFunction(value) ? boxFunction(value, context)\r\n : isPromise(value) ? boxPromise(value, context)\r\n : isTypedArray(value) ? boxTypedArray(value, context)\r\n : isReadableStream(value) ? boxReadableStream(value, context)\r\n : isDate(value) ? boxDate(value, context)\r\n : isError(value) ? boxError(value, context)\r\n : value\r\n ),\r\n } satisfies RevivableBox\r\n }\r\n\r\n return {\r\n [OSRA_BOX]: 'revivable',\r\n ...'isJson' in context.transport && context.transport.isJson\r\n ? (\r\n isMessagePort(value) ? boxMessagePort(value, context)\r\n : isArrayBuffer(value) ? boxArrayBuffer(value, context)\r\n : isReadableStream(value) ? boxReadableStream(value, context)\r\n : { type: 'unknown', value }\r\n )\r\n : {\r\n type:\r\n isMessagePort(value) ? 'messagePort'\r\n : isArrayBuffer(value) ? 'arrayBuffer'\r\n : isReadableStream(value) ? 'readableStream'\r\n : 'unknown',\r\n value\r\n }\r\n } as ReviveBoxBase<RevivableToRevivableType<typeof value>>\r\n}\r\n\r\nexport const recursiveBox = <T extends Capable>(value: T, context: ConnectionRevivableContext): DeepReplace<T, Revivable, RevivableBox> => {\r\n const boxedValue = isRevivable(value) ? box(value, context) : value\r\n return (\r\n Array.isArray(boxedValue) ? boxedValue.map(value => recursiveBox(value, context)) as DeepReplace<T, Revivable, RevivableBox>\r\n : boxedValue && typeof boxedValue === 'object' && Object.getPrototypeOf(boxedValue) === Object.prototype ? (\r\n Object.fromEntries(\r\n Object\r\n .entries(boxedValue)\r\n .map(([key, value]: [string, Capable]) => [\r\n key,\r\n isRevivableBox(boxedValue) && boxedValue.type === 'messagePort' && boxedValue.value instanceof MessagePort\r\n || isRevivableBox(boxedValue) && boxedValue.type === 'arrayBuffer' && boxedValue.value instanceof ArrayBuffer\r\n || isRevivableBox(boxedValue) && boxedValue.type === 'readableStream' && boxedValue.value instanceof ReadableStream\r\n ? value\r\n : recursiveBox(value, context)\r\n ])\r\n )\r\n ) as DeepReplace<T, Revivable, RevivableBox>\r\n : boxedValue as DeepReplace<T, Revivable, RevivableBox>\r\n )\r\n}\r\n\r\nexport const revive = (box: RevivableBox, context: ConnectionRevivableContext) => {\r\n // If the value got properly sent through the protocol as is, we don't need to revive it\r\n if (isRevivable(box.value)) return box.value\r\n\r\n return (\r\n isRevivableMessagePortBox(box) ? reviveMessagePort(box, context)\r\n : isRevivableFunctionBox(box) ? reviveFunction(box, context)\r\n : isRevivablePromiseBox(box) ? revivePromise(box, context)\r\n : isRevivableErrorBox(box) ? reviveError(box, context)\r\n : isRevivableTypedArrayBox(box) ? reviveTypedArray(box, context)\r\n : isRevivableArrayBufferBox(box) ? reviveArrayBuffer(box, context)\r\n : isRevivableReadableStreamBox(box) ? reviveReadableStream(box, context)\r\n : isRevivableDateBox(box) ? reviveDate(box, context)\r\n : box\r\n ) as DeepReplace<RevivableBox, RevivableBox, Revivable>\r\n}\r\n\r\nexport const recursiveRevive = <T extends Capable>(value: T, context: ConnectionRevivableContext): DeepReplace<T, RevivableBox, Revivable> => {\r\n const recursedValue = (\r\n isTransferable(value) ? value\r\n : Array.isArray(value) ? value.map(value => recursiveRevive(value, context)) as DeepReplace<T, RevivableBox, Revivable>\r\n : value && typeof value === 'object' ? (\r\n Object.fromEntries(\r\n Object\r\n .entries(value)\r\n .map(([key, value]: [string, Capable]) => [\r\n key,\r\n recursiveRevive(value, context)\r\n ])\r\n )\r\n ) as DeepReplace<T, RevivableBox, Revivable>\r\n : value as DeepReplace<T, RevivableBox, Revivable>\r\n )\r\n return (isRevivableBox(recursedValue) ? revive(recursedValue, context) : recursedValue) as DeepReplace<T, RevivableBox, Revivable>\r\n}\r\n","import type {\r\n Capable, ConnectionMessage,\r\n Message,\r\n MessageEventTarget,\r\n Transport,\r\n Uuid\r\n} from '../types'\r\nimport type { MessageChannelAllocator } from './allocator'\r\nimport type { PlatformCapabilities } from './capabilities'\r\nimport type { StrictMessagePort } from './message-channel'\r\n\r\nimport { recursiveBox, recursiveRevive } from './revivable'\r\nimport { makeMessageChannelAllocator } from './allocator'\r\n\r\nexport type BidirectionalConnectionContext = {\r\n type: 'bidirectional'\r\n eventTarget: MessageEventTarget\r\n connection: BidirectionalConnection\r\n}\r\nexport type UnidirectionalEmittingConnectionContext = {\r\n type: 'unidirectional-emitting'\r\n connection: UnidirectionalEmittingConnection\r\n}\r\nexport type UnidirectionalReceivingConnectionContext = {\r\n type: 'unidirectional-receiving'\r\n eventTarget: MessageEventTarget\r\n connection: UnidirectionalReceivingConnection\r\n}\r\n\r\nexport type ConnectionContext =\r\n | BidirectionalConnectionContext\r\n | UnidirectionalEmittingConnectionContext\r\n | UnidirectionalReceivingConnectionContext\r\n\r\nexport type ConnectionRevivableContext = {\r\n platformCapabilities: PlatformCapabilities\r\n transport: Transport\r\n remoteUuid: Uuid\r\n messagePorts: Set<MessagePort>\r\n messageChannels: MessageChannelAllocator\r\n sendMessage: (message: ConnectionMessage) => void\r\n eventTarget: MessageEventTarget\r\n}\r\n\r\nexport type BidirectionalConnection<T extends Capable = Capable> = {\r\n revivableContext: ConnectionRevivableContext\r\n close: () => void\r\n remoteValue: Promise<T>\r\n}\r\n\r\nexport const startBidirectionalConnection = <T extends Capable>(\r\n { transport, value, uuid, remoteUuid, platformCapabilities, eventTarget, send, close }:\r\n {\r\n transport: Transport\r\n value: Capable\r\n uuid: Uuid\r\n remoteUuid: Uuid\r\n platformCapabilities: PlatformCapabilities\r\n eventTarget: MessageEventTarget\r\n send: (message: ConnectionMessage) => void\r\n close: () => void\r\n }\r\n) => {\r\n const revivableContext = {\r\n platformCapabilities,\r\n transport,\r\n remoteUuid,\r\n messagePorts: new Set(),\r\n messageChannels: makeMessageChannelAllocator(),\r\n sendMessage: send,\r\n eventTarget\r\n } satisfies ConnectionRevivableContext\r\n let initResolve: ((message: ConnectionMessage & { type: 'init' }) => void)\r\n const initMessage = new Promise<ConnectionMessage & { type: 'init' }>((resolve, reject) => {\r\n initResolve = resolve\r\n })\r\n\r\n eventTarget.addEventListener('message', ({ detail }) => {\r\n if (detail.type === 'init') {\r\n initResolve(detail)\r\n return\r\n } else if (detail.type === 'message') {\r\n const messageChannel = revivableContext.messageChannels.getOrAlloc(detail.portId)\r\n messageChannel.port2?.postMessage(detail)\r\n }\r\n })\r\n\r\n send({\r\n type: 'init',\r\n remoteUuid,\r\n data: recursiveBox(value, revivableContext)\r\n })\r\n\r\n return {\r\n revivableContext,\r\n close: () => {\r\n },\r\n remoteValue:\r\n initMessage\r\n .then(initMessage => recursiveRevive(initMessage.data, revivableContext)) as Promise<T>\r\n } satisfies BidirectionalConnection<T>\r\n}\r\n\r\nexport type UnidirectionalEmittingConnection<T extends Capable = Capable> = {\r\n close: () => void\r\n remoteValueProxy: T\r\n}\r\n\r\nexport const startUnidirectionalEmittingConnection = <T extends Capable>(\r\n { value, uuid, platformCapabilities, send, close }:\r\n {\r\n value: Capable\r\n uuid: Uuid\r\n platformCapabilities: PlatformCapabilities\r\n send: (message: Message) => void\r\n close: () => void\r\n }\r\n) => {\r\n\r\n return {\r\n close: () => {\r\n },\r\n remoteValueProxy: new Proxy(\r\n new Function(),\r\n {\r\n apply: (target, thisArg, args) => {\r\n },\r\n get: (target, prop) => {\r\n }\r\n }\r\n ) as T\r\n }\r\n}\r\n\r\nexport type UnidirectionalReceivingConnection = {\r\n close: () => void\r\n}\r\n\r\nexport const startUnidirectionalReceivingConnection = (\r\n { uuid, remoteUuid, platformCapabilities, close }:\r\n {\r\n uuid: Uuid\r\n remoteUuid?: Uuid\r\n platformCapabilities: PlatformCapabilities\r\n eventTarget: StrictMessagePort<Message>\r\n close: () => void\r\n }\r\n) => {\r\n\r\n return {\r\n close: () => {\r\n }\r\n }\r\n}\r\n","var e=class extends EventTarget{dispatchTypedEvent(s,t){return super.dispatchEvent(t)}};export{e as TypedEventTarget};\n","import type {\r\n EmitTransport, Message,\r\n MessageContext, MessageVariant,\r\n Capable, Transport,\r\n MessageEventTarget,\r\n MessageEventMap\r\n} from './types'\r\nimport type {\r\n PlatformCapabilities, ConnectionContext,\r\n BidirectionalConnectionContext\r\n} from './utils'\r\n\r\nimport { OSRA_DEFAULT_KEY, OSRA_KEY } from './types'\r\nimport {\r\n probePlatformCapabilities,\r\n registerOsraMessageListener,\r\n sendOsraMessage,\r\n startBidirectionalConnection,\r\n isReceiveTransport,\r\n isEmitTransport,\r\n startUnidirectionalEmittingConnection,\r\n getTransferableObjects,\r\n isJsonOnlyTransport,\r\n isCustomTransport\r\n} from './utils'\r\nimport { TypedEventTarget } from 'typescript-event-target'\r\n\r\n/**\r\n * Protocol mode:\r\n * - Bidirectional mode\r\n * - Unidirectional mode\r\n *\r\n * Transport modes:\r\n * - Capable mode\r\n * - Jsonable mode\r\n */\r\nexport const expose = async <T extends Capable>(\r\n value: Capable,\r\n {\r\n transport: _transport,\r\n name,\r\n remoteName,\r\n key = OSRA_DEFAULT_KEY,\r\n origin = '*',\r\n unregisterSignal,\r\n platformCapabilities: _platformCapabilities,\r\n transferAll,\r\n logger\r\n }: {\r\n transport: Transport\r\n name?: string\r\n remoteName?: string\r\n key?: string\r\n origin?: string\r\n unregisterSignal?: AbortSignal\r\n platformCapabilities?: PlatformCapabilities\r\n transferAll?: boolean\r\n logger?: {}\r\n }\r\n): Promise<T> => {\r\n const transport = {\r\n isJson:\r\n 'isJson' in _transport && _transport.isJson !== undefined\r\n ? _transport.isJson\r\n : isJsonOnlyTransport(_transport),\r\n ...(\r\n isCustomTransport(_transport)\r\n ? _transport\r\n : {\r\n emit: _transport,\r\n receive: _transport\r\n }\r\n )\r\n } satisfies Transport\r\n const platformCapabilities = _platformCapabilities ?? await probePlatformCapabilities()\r\n const connectionContexts = new Map<string, ConnectionContext>()\r\n\r\n let resolveRemoteValue: (connection: T) => void\r\n const remoteValuePromise = new Promise<T>((resolve) => {\r\n resolveRemoteValue = resolve\r\n })\r\n\r\n let uuid = globalThis.crypto.randomUUID()\r\n\r\n const sendMessage = (transport: EmitTransport, message: MessageVariant) => {\r\n const transferables = getTransferableObjects(message)\r\n sendOsraMessage(\r\n transport,\r\n {\r\n [OSRA_KEY]: key,\r\n name,\r\n uuid,\r\n ...message\r\n },\r\n origin,\r\n transferables\r\n )\r\n }\r\n\r\n const listener = async (message: Message, messageContext: MessageContext) => {\r\n // means that our own message looped back on the channel\r\n if (message.uuid === uuid) return\r\n // Unidirectional receiving mode\r\n if (!isEmitTransport(transport)) {\r\n // Handle non bidirectional based messages here\r\n throw new Error('Unidirectional receiving mode not implemented')\r\n }\r\n // Bidirectional mode\r\n if (message.type === 'announce') {\r\n if (!message.remoteUuid) {\r\n sendMessage(transport, { type: 'announce', remoteUuid: message.uuid })\r\n return\r\n }\r\n if (message.remoteUuid !== uuid) return\r\n if (connectionContexts.has(message.uuid)) {\r\n sendMessage(\r\n transport,\r\n { type: 'reject-uuid-taken', remoteUuid: message.uuid }\r\n )\r\n return\r\n }\r\n const eventTarget = new TypedEventTarget<MessageEventMap>()\r\n const connectionContext = {\r\n type: 'bidirectional',\r\n eventTarget,\r\n connection:\r\n startBidirectionalConnection({\r\n transport,\r\n value,\r\n uuid,\r\n remoteUuid: message.uuid,\r\n platformCapabilities,\r\n eventTarget,\r\n send: (message: MessageVariant) => sendMessage(transport, message),\r\n close: () => void connectionContexts.delete(message.uuid)\r\n })\r\n } satisfies BidirectionalConnectionContext\r\n connectionContexts.set(message.uuid, connectionContext)\r\n connectionContext.connection.remoteValue.then((remoteValue) =>\r\n resolveRemoteValue(remoteValue as T)\r\n )\r\n } else if (message.type === 'reject-uuid-taken') {\r\n if (message.remoteUuid !== uuid) return\r\n uuid = globalThis.crypto.randomUUID()\r\n sendMessage(transport, { type: 'announce' })\r\n } else if (message.type === 'close') {\r\n if (message.remoteUuid !== uuid) return\r\n const connectionContext = connectionContexts.get(message.uuid)\r\n // We just drop the message if the remote uuid hasn't announced itself\r\n if (!connectionContext) {\r\n console.warn(`Connection not found for remoteUuid: ${message.uuid}`)\r\n return\r\n }\r\n connectionContext.connection.close()\r\n connectionContexts.delete(message.uuid)\r\n } else { // \"init\" | \"message\" | \"message-port-close\"\r\n if (message.remoteUuid !== uuid) return\r\n const connection = connectionContexts.get(message.uuid)\r\n // We just drop the message if the remote uuid hasn't announced itself\r\n if (!connection) {\r\n console.warn(`Connection not found for remoteUuid: ${message.uuid}`)\r\n return\r\n }\r\n if (connection.type !== 'unidirectional-emitting') {\r\n connection.eventTarget.dispatchTypedEvent(\r\n 'message',\r\n new CustomEvent('message', { detail: message })\r\n )\r\n }\r\n }\r\n }\r\n\r\n if (isReceiveTransport(transport)) {\r\n registerOsraMessageListener({\r\n listener,\r\n transport,\r\n remoteName,\r\n key,\r\n unregisterSignal\r\n })\r\n }\r\n\r\n if (isEmitTransport(transport)) {\r\n sendMessage(transport, { type: 'announce' })\r\n }\r\n\r\n // Unidirectional emitting mode\r\n if (isEmitTransport(transport) && !isReceiveTransport(transport)) {\r\n const { remoteValueProxy } = startUnidirectionalEmittingConnection<T>({\r\n value,\r\n uuid,\r\n platformCapabilities,\r\n send: (message: MessageVariant) => sendMessage(transport, message),\r\n close: () => connectionContexts.delete(uuid)\r\n })\r\n return remoteValueProxy\r\n }\r\n\r\n return remoteValuePromise\r\n}\r\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// lib/chai/utils/index.js\nvar utils_exports = {};\n__export(utils_exports, {\n addChainableMethod: () => addChainableMethod,\n addLengthGuard: () => addLengthGuard,\n addMethod: () => addMethod,\n addProperty: () => addProperty,\n checkError: () => check_error_exports,\n compareByInspect: () => compareByInspect,\n eql: () => deep_eql_default,\n expectTypes: () => expectTypes,\n flag: () => flag,\n getActual: () => getActual,\n getMessage: () => getMessage2,\n getName: () => getName,\n getOperator: () => getOperator,\n getOwnEnumerableProperties: () => getOwnEnumerableProperties,\n getOwnEnumerablePropertySymbols: () => getOwnEnumerablePropertySymbols,\n getPathInfo: () => getPathInfo,\n hasProperty: () => hasProperty,\n inspect: () => inspect2,\n isNaN: () => isNaN2,\n isNumeric: () => isNumeric,\n isProxyEnabled: () => isProxyEnabled,\n isRegExp: () => isRegExp2,\n objDisplay: () => objDisplay,\n overwriteChainableMethod: () => overwriteChainableMethod,\n overwriteMethod: () => overwriteMethod,\n overwriteProperty: () => overwriteProperty,\n proxify: () => proxify,\n test: () => test,\n transferFlags: () => transferFlags,\n type: () => type\n});\n\n// node_modules/check-error/index.js\nvar check_error_exports = {};\n__export(check_error_exports, {\n compatibleConstructor: () => compatibleConstructor,\n compatibleInstance: () => compatibleInstance,\n compatibleMessage: () => compatibleMessage,\n getConstructorName: () => getConstructorName,\n getMessage: () => getMessage\n});\nfunction isErrorInstance(obj) {\n return obj instanceof Error || Object.prototype.toString.call(obj) === \"[object Error]\";\n}\n__name(isErrorInstance, \"isErrorInstance\");\nfunction isRegExp(obj) {\n return Object.prototype.toString.call(obj) === \"[object RegExp]\";\n}\n__name(isRegExp, \"isRegExp\");\nfunction compatibleInstance(thrown, errorLike) {\n return isErrorInstance(errorLike) && thrown === errorLike;\n}\n__name(compatibleInstance, \"compatibleInstance\");\nfunction compatibleConstructor(thrown, errorLike) {\n if (isErrorInstance(errorLike)) {\n return thrown.constructor === errorLike.constructor || thrown instanceof errorLike.constructor;\n } else if ((typeof errorLike === \"object\" || typeof errorLike === \"function\") && errorLike.prototype) {\n return thrown.constructor === errorLike || thrown instanceof errorLike;\n }\n return false;\n}\n__name(compatibleConstructor, \"compatibleConstructor\");\nfunction compatibleMessage(thrown, errMatcher) {\n const comparisonString = typeof thrown === \"string\" ? thrown : thrown.message;\n if (isRegExp(errMatcher)) {\n return errMatcher.test(comparisonString);\n } else if (typeof errMatcher === \"string\") {\n return comparisonString.indexOf(errMatcher) !== -1;\n }\n return false;\n}\n__name(compatibleMessage, \"compatibleMessage\");\nfunction getConstructorName(errorLike) {\n let constructorName = errorLike;\n if (isErrorInstance(errorLike)) {\n constructorName = errorLike.constructor.name;\n } else if (typeof errorLike === \"function\") {\n constructorName = errorLike.name;\n if (constructorName === \"\") {\n const newConstructorName = new errorLike().name;\n constructorName = newConstructorName || constructorName;\n }\n }\n return constructorName;\n}\n__name(getConstructorName, \"getConstructorName\");\nfunction getMessage(errorLike) {\n let msg = \"\";\n if (errorLike && errorLike.message) {\n msg = errorLike.message;\n } else if (typeof errorLike === \"string\") {\n msg = errorLike;\n }\n return msg;\n}\n__name(getMessage, \"getMessage\");\n\n// lib/chai/utils/flag.js\nfunction flag(obj, key, value) {\n let flags = obj.__flags || (obj.__flags = /* @__PURE__ */ Object.create(null));\n if (arguments.length === 3) {\n flags[key] = value;\n } else {\n return flags[key];\n }\n}\n__name(flag, \"flag\");\n\n// lib/chai/utils/test.js\nfunction test(obj, args) {\n let negate = flag(obj, \"negate\"), expr = args[0];\n return negate ? !expr : expr;\n}\n__name(test, \"test\");\n\n// lib/chai/utils/type-detect.js\nfunction type(obj) {\n if (typeof obj === \"undefined\") {\n return \"undefined\";\n }\n if (obj === null) {\n return \"null\";\n }\n const stringTag = obj[Symbol.toStringTag];\n if (typeof stringTag === \"string\") {\n return stringTag;\n }\n const type3 = Object.prototype.toString.call(obj).slice(8, -1);\n return type3;\n}\n__name(type, \"type\");\n\n// node_modules/assertion-error/index.js\nvar canElideFrames = \"captureStackTrace\" in Error;\nvar AssertionError = class _AssertionError extends Error {\n static {\n __name(this, \"AssertionError\");\n }\n message;\n get name() {\n return \"AssertionError\";\n }\n get ok() {\n return false;\n }\n constructor(message = \"Unspecified AssertionError\", props, ssf) {\n super(message);\n this.message = message;\n if (canElideFrames) {\n Error.captureStackTrace(this, ssf || _AssertionError);\n }\n for (const key in props) {\n if (!(key in this)) {\n this[key] = props[key];\n }\n }\n }\n toJSON(stack) {\n return {\n ...this,\n name: this.name,\n message: this.message,\n ok: false,\n stack: stack !== false ? this.stack : void 0\n };\n }\n};\n\n// lib/chai/utils/expectTypes.js\nfunction expectTypes(obj, types) {\n let flagMsg = flag(obj, \"message\");\n let ssfi = flag(obj, \"ssfi\");\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n obj = flag(obj, \"object\");\n types = types.map(function(t) {\n return t.toLowerCase();\n });\n types.sort();\n let str = types.map(function(t, index) {\n let art = ~[\"a\", \"e\", \"i\", \"o\", \"u\"].indexOf(t.charAt(0)) ? \"an\" : \"a\";\n let or = types.length > 1 && index === types.length - 1 ? \"or \" : \"\";\n return or + art + \" \" + t;\n }).join(\", \");\n let objType = type(obj).toLowerCase();\n if (!types.some(function(expected) {\n return objType === expected;\n })) {\n throw new AssertionError(\n flagMsg + \"object tested must be \" + str + \", but \" + objType + \" given\",\n void 0,\n ssfi\n );\n }\n}\n__name(expectTypes, \"expectTypes\");\n\n// lib/chai/utils/getActual.js\nfunction getActual(obj, args) {\n return args.length > 4 ? args[4] : obj._obj;\n}\n__name(getActual, \"getActual\");\n\n// node_modules/loupe/lib/helpers.js\nvar ansiColors = {\n bold: [\"1\", \"22\"],\n dim: [\"2\", \"22\"],\n italic: [\"3\", \"23\"],\n underline: [\"4\", \"24\"],\n // 5 & 6 are blinking\n inverse: [\"7\", \"27\"],\n hidden: [\"8\", \"28\"],\n strike: [\"9\", \"29\"],\n // 10-20 are fonts\n // 21-29 are resets for 1-9\n black: [\"30\", \"39\"],\n red: [\"31\", \"39\"],\n green: [\"32\", \"39\"],\n yellow: [\"33\", \"39\"],\n blue: [\"34\", \"39\"],\n magenta: [\"35\", \"39\"],\n cyan: [\"36\", \"39\"],\n white: [\"37\", \"39\"],\n brightblack: [\"30;1\", \"39\"],\n brightred: [\"31;1\", \"39\"],\n brightgreen: [\"32;1\", \"39\"],\n brightyellow: [\"33;1\", \"39\"],\n brightblue: [\"34;1\", \"39\"],\n brightmagenta: [\"35;1\", \"39\"],\n brightcyan: [\"36;1\", \"39\"],\n brightwhite: [\"37;1\", \"39\"],\n grey: [\"90\", \"39\"]\n};\nvar styles = {\n special: \"cyan\",\n number: \"yellow\",\n bigint: \"yellow\",\n boolean: \"yellow\",\n undefined: \"grey\",\n null: \"bold\",\n string: \"green\",\n symbol: \"green\",\n date: \"magenta\",\n regexp: \"red\"\n};\nvar truncator = \"\\u2026\";\nfunction colorise(value, styleType) {\n const color = ansiColors[styles[styleType]] || ansiColors[styleType] || \"\";\n if (!color) {\n return String(value);\n }\n return `\\x1B[${color[0]}m${String(value)}\\x1B[${color[1]}m`;\n}\n__name(colorise, \"colorise\");\nfunction normaliseOptions({\n showHidden = false,\n depth = 2,\n colors = false,\n customInspect = true,\n showProxy = false,\n maxArrayLength = Infinity,\n breakLength = Infinity,\n seen = [],\n // eslint-disable-next-line no-shadow\n truncate: truncate2 = Infinity,\n stylize = String\n} = {}, inspect3) {\n const options = {\n showHidden: Boolean(showHidden),\n depth: Number(depth),\n colors: Boolean(colors),\n customInspect: Boolean(customInspect),\n showProxy: Boolean(showProxy),\n maxArrayLength: Number(maxArrayLength),\n breakLength: Number(breakLength),\n truncate: Number(truncate2),\n seen,\n inspect: inspect3,\n stylize\n };\n if (options.colors) {\n options.stylize = colorise;\n }\n return options;\n}\n__name(normaliseOptions, \"normaliseOptions\");\nfunction isHighSurrogate(char) {\n return char >= \"\\uD800\" && char <= \"\\uDBFF\";\n}\n__name(isHighSurrogate, \"isHighSurrogate\");\nfunction truncate(string, length, tail = truncator) {\n string = String(string);\n const tailLength = tail.length;\n const stringLength = string.length;\n if (tailLength > length && stringLength > tailLength) {\n return tail;\n }\n if (stringLength > length && stringLength > tailLength) {\n let end = length - tailLength;\n if (end > 0 && isHighSurrogate(string[end - 1])) {\n end = end - 1;\n }\n return `${string.slice(0, end)}${tail}`;\n }\n return string;\n}\n__name(truncate, \"truncate\");\nfunction inspectList(list, options, inspectItem, separator = \", \") {\n inspectItem = inspectItem || options.inspect;\n const size = list.length;\n if (size === 0)\n return \"\";\n const originalLength = options.truncate;\n let output = \"\";\n let peek = \"\";\n let truncated = \"\";\n for (let i = 0; i < size; i += 1) {\n const last = i + 1 === list.length;\n const secondToLast = i + 2 === list.length;\n truncated = `${truncator}(${list.length - i})`;\n const value = list[i];\n options.truncate = originalLength - output.length - (last ? 0 : separator.length);\n const string = peek || inspectItem(value, options) + (last ? \"\" : separator);\n const nextLength = output.length + string.length;\n const truncatedLength = nextLength + truncated.length;\n if (last && nextLength > originalLength && output.length + truncated.length <= originalLength) {\n break;\n }\n if (!last && !secondToLast && truncatedLength > originalLength) {\n break;\n }\n peek = last ? \"\" : inspectItem(list[i + 1], options) + (secondToLast ? \"\" : separator);\n if (!last && secondToLast && truncatedLength > originalLength && nextLength + peek.length > originalLength) {\n break;\n }\n output += string;\n if (!last && !secondToLast && nextLength + peek.length >= originalLength) {\n truncated = `${truncator}(${list.length - i - 1})`;\n break;\n }\n truncated = \"\";\n }\n return `${output}${truncated}`;\n}\n__name(inspectList, \"inspectList\");\nfunction quoteComplexKey(key) {\n if (key.match(/^[a-zA-Z_][a-zA-Z_0-9]*$/)) {\n return key;\n }\n return JSON.stringify(key).replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\");\n}\n__name(quoteComplexKey, \"quoteComplexKey\");\nfunction inspectProperty([key, value], options) {\n options.truncate -= 2;\n if (typeof key === \"string\") {\n key = quoteComplexKey(key);\n } else if (typeof key !== \"number\") {\n key = `[${options.inspect(key, options)}]`;\n }\n options.truncate -= key.length;\n value = options.inspect(value, options);\n return `${key}: ${value}`;\n}\n__name(inspectProperty, \"inspectProperty\");\n\n// node_modules/loupe/lib/array.js\nfunction inspectArray(array, options) {\n const nonIndexProperties = Object.keys(array).slice(array.length);\n if (!array.length && !nonIndexProperties.length)\n return \"[]\";\n options.truncate -= 4;\n const listContents = inspectList(array, options);\n options.truncate -= listContents.length;\n let propertyContents = \"\";\n if (nonIndexProperties.length) {\n propertyContents = inspectList(nonIndexProperties.map((key) => [key, array[key]]), options, inspectProperty);\n }\n return `[ ${listContents}${propertyContents ? `, ${propertyContents}` : \"\"} ]`;\n}\n__name(inspectArray, \"inspectArray\");\n\n// node_modules/loupe/lib/typedarray.js\nvar getArrayName = /* @__PURE__ */ __name((array) => {\n if (typeof Buffer === \"function\" && array instanceof Buffer) {\n return \"Buffer\";\n }\n if (array[Symbol.toStringTag]) {\n return array[Symbol.toStringTag];\n }\n return array.constructor.name;\n}, \"getArrayName\");\nfunction inspectTypedArray(array, options) {\n const name = getArrayName(array);\n options.truncate -= name.length + 4;\n const nonIndexProperties = Object.keys(array).slice(array.length);\n if (!array.length && !nonIndexProperties.length)\n return `${name}[]`;\n let output = \"\";\n for (let i = 0; i < array.length; i++) {\n const string = `${options.stylize(truncate(array[i], options.truncate), \"number\")}${i === array.length - 1 ? \"\" : \", \"}`;\n options.truncate -= string.length;\n if (array[i] !== array.length && options.truncate <= 3) {\n output += `${truncator}(${array.length - array[i] + 1})`;\n break;\n }\n output += string;\n }\n let propertyContents = \"\";\n if (nonIndexProperties.length) {\n propertyContents = inspectList(nonIndexProperties.map((key) => [key, array[key]]), options, inspectProperty);\n }\n return `${name}[ ${output}${propertyContents ? `, ${propertyContents}` : \"\"} ]`;\n}\n__name(inspectTypedArray, \"inspectTypedArray\");\n\n// node_modules/loupe/lib/date.js\nfunction inspectDate(dateObject, options) {\n const stringRepresentation = dateObject.toJSON();\n if (stringRepresentation === null) {\n return \"Invalid Date\";\n }\n const split = stringRepresentation.split(\"T\");\n const date = split[0];\n return options.stylize(`${date}T${truncate(split[1], options.truncate - date.length - 1)}`, \"date\");\n}\n__name(inspectDate, \"inspectDate\");\n\n// node_modules/loupe/lib/function.js\nfunction inspectFunction(func, options) {\n const functionType = func[Symbol.toStringTag] || \"Function\";\n const name = func.name;\n if (!name) {\n return options.stylize(`[${functionType}]`, \"special\");\n }\n return options.stylize(`[${functionType} ${truncate(name, options.truncate - 11)}]`, \"special\");\n}\n__name(inspectFunction, \"inspectFunction\");\n\n// node_modules/loupe/lib/map.js\nfunction inspectMapEntry([key, value], options) {\n options.truncate -= 4;\n key = options.inspect(key, options);\n options.truncate -= key.length;\n value = options.inspect(value, options);\n return `${key} => ${value}`;\n}\n__name(inspectMapEntry, \"inspectMapEntry\");\nfunction mapToEntries(map) {\n const entries = [];\n map.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n}\n__name(mapToEntries, \"mapToEntries\");\nfunction inspectMap(map, options) {\n if (map.size === 0)\n return \"Map{}\";\n options.truncate -= 7;\n return `Map{ ${inspectList(mapToEntries(map), options, inspectMapEntry)} }`;\n}\n__name(inspectMap, \"inspectMap\");\n\n// node_modules/loupe/lib/number.js\nvar isNaN = Number.isNaN || ((i) => i !== i);\nfunction inspectNumber(number, options) {\n if (isNaN(number)) {\n return options.stylize(\"NaN\", \"number\");\n }\n if (number === Infinity) {\n return options.stylize(\"Infinity\", \"number\");\n }\n if (number === -Infinity) {\n return options.stylize(\"-Infinity\", \"number\");\n }\n if (number === 0) {\n return options.stylize(1 / number === Infinity ? \"+0\" : \"-0\", \"number\");\n }\n return options.stylize(truncate(String(number), options.truncate), \"number\");\n}\n__name(inspectNumber, \"inspectNumber\");\n\n// node_modules/loupe/lib/bigint.js\nfunction inspectBigInt(number, options) {\n let nums = truncate(number.toString(), options.truncate - 1);\n if (nums !== truncator)\n nums += \"n\";\n return options.stylize(nums, \"bigint\");\n}\n__name(inspectBigInt, \"inspectBigInt\");\n\n// node_modules/loupe/lib/regexp.js\nfunction inspectRegExp(value, options) {\n const flags = value.toString().split(\"/\")[2];\n const sourceLength = options.truncate - (2 + flags.length);\n const source = value.source;\n return options.stylize(`/${truncate(source, sourceLength)}/${flags}`, \"regexp\");\n}\n__name(inspectRegExp, \"inspectRegExp\");\n\n// node_modules/loupe/lib/set.js\nfunction arrayFromSet(set2) {\n const values = [];\n set2.forEach((value) => {\n values.push(value);\n });\n return values;\n}\n__name(arrayFromSet, \"arrayFromSet\");\nfunction inspectSet(set2, options) {\n if (set2.size === 0)\n return \"Set{}\";\n options.truncate -= 7;\n return `Set{ ${inspectList(arrayFromSet(set2), options)} }`;\n}\n__name(inspectSet, \"inspectSet\");\n\n// node_modules/loupe/lib/string.js\nvar stringEscapeChars = new RegExp(\"['\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0604\\\\u070f\\\\u17b4\\\\u17b5\\\\u200c-\\\\u200f\\\\u2028-\\\\u202f\\\\u2060-\\\\u206f\\\\ufeff\\\\ufff0-\\\\uffff]\", \"g\");\nvar escapeCharacters = {\n \"\\b\": \"\\\\b\",\n \"\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n \"'\": \"\\\\'\",\n \"\\\\\": \"\\\\\\\\\"\n};\nvar hex = 16;\nvar unicodeLength = 4;\nfunction escape(char) {\n return escapeCharacters[char] || `\\\\u${`0000${char.charCodeAt(0).toString(hex)}`.slice(-unicodeLength)}`;\n}\n__name(escape, \"escape\");\nfunction inspectString(string, options) {\n if (stringEscapeChars.test(string)) {\n string = string.replace(stringEscapeChars, escape);\n }\n return options.stylize(`'${truncate(string, options.truncate - 2)}'`, \"string\");\n}\n__name(inspectString, \"inspectString\");\n\n// node_modules/loupe/lib/symbol.js\nfunction inspectSymbol(value) {\n if (\"description\" in Symbol.prototype) {\n return value.description ? `Symbol(${value.description})` : \"Symbol()\";\n }\n return value.toString();\n}\n__name(inspectSymbol, \"inspectSymbol\");\n\n// node_modules/loupe/lib/promise.js\nvar getPromiseValue = /* @__PURE__ */ __name(() => \"Promise{\\u2026}\", \"getPromiseValue\");\nvar promise_default = getPromiseValue;\n\n// node_modules/loupe/lib/object.js\nfunction inspectObject(object, options) {\n const properties = Object.getOwnPropertyNames(object);\n const symbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : [];\n if (properties.length === 0 && symbols.length === 0) {\n return \"{}\";\n }\n options.truncate -= 4;\n options.seen = options.seen || [];\n if (options.seen.includes(object)) {\n return \"[Circular]\";\n }\n options.seen.push(object);\n const propertyContents = inspectList(properties.map((key) => [key, object[key]]), options, inspectProperty);\n const symbolContents = inspectList(symbols.map((key) => [key, object[key]]), options, inspectProperty);\n options.seen.pop();\n let sep = \"\";\n if (propertyContents && symbolContents) {\n sep = \", \";\n }\n return `{ ${propertyContents}${sep}${symbolContents} }`;\n}\n__name(inspectObject, \"inspectObject\");\n\n// node_modules/loupe/lib/class.js\nvar toStringTag = typeof Symbol !== \"undefined\" && Symbol.toStringTag ? Symbol.toStringTag : false;\nfunction inspectClass(value, options) {\n let name = \"\";\n if (toStringTag && toStringTag in value) {\n name = value[toStringTag];\n }\n name = name || value.constructor.name;\n if (!name || name === \"_class\") {\n name = \"<Anonymous Class>\";\n }\n options.truncate -= name.length;\n return `${name}${inspectObject(value, options)}`;\n}\n__name(inspectClass, \"inspectClass\");\n\n// node_modules/loupe/lib/arguments.js\nfunction inspectArguments(args, options) {\n if (args.length === 0)\n return \"Arguments[]\";\n options.truncate -= 13;\n return `Arguments[ ${inspectList(args, options)} ]`;\n}\n__name(inspectArguments, \"inspectArguments\");\n\n// node_modules/loupe/lib/error.js\nvar errorKeys = [\n \"stack\",\n \"line\",\n \"column\",\n \"name\",\n \"message\",\n \"fileName\",\n \"lineNumber\",\n \"columnNumber\",\n \"number\",\n \"description\",\n \"cause\"\n];\nfunction inspectObject2(error, options) {\n const properties = Object.getOwnPropertyNames(error).filter((key) => errorKeys.indexOf(key) === -1);\n const name = error.name;\n options.truncate -= name.length;\n let message = \"\";\n if (typeof error.message === \"string\") {\n message = truncate(error.message, options.truncate);\n } else {\n properties.unshift(\"message\");\n }\n message = message ? `: ${message}` : \"\";\n options.truncate -= message.length + 5;\n options.seen = options.seen || [];\n if (options.seen.includes(error)) {\n return \"[Circular]\";\n }\n options.seen.push(error);\n const propertyContents = inspectList(properties.map((key) => [key, error[key]]), options, inspectProperty);\n return `${name}${message}${propertyContents ? ` { ${propertyContents} }` : \"\"}`;\n}\n__name(inspectObject2, \"inspectObject\");\n\n// node_modules/loupe/lib/html.js\nfunction inspectAttribute([key, value], options) {\n options.truncate -= 3;\n if (!value) {\n return `${options.stylize(String(key), \"yellow\")}`;\n }\n return `${options.stylize(String(key), \"yellow\")}=${options.stylize(`\"${value}\"`, \"string\")}`;\n}\n__name(inspectAttribute, \"inspectAttribute\");\nfunction inspectNodeCollection(collection, options) {\n return inspectList(collection, options, inspectNode, \"\\n\");\n}\n__name(inspectNodeCollection, \"inspectNodeCollection\");\nfunction inspectNode(node, options) {\n switch (node.nodeType) {\n case 1:\n return inspectHTML(node, options);\n case 3:\n return options.inspect(node.data, options);\n default:\n return options.inspect(node, options);\n }\n}\n__name(inspectNode, \"inspectNode\");\nfunction inspectHTML(element, options) {\n const properties = element.getAttributeNames();\n const name = element.tagName.toLowerCase();\n const head = options.stylize(`<${name}`, \"special\");\n const headClose = options.stylize(`>`, \"special\");\n const tail = options.stylize(`</${name}>`, \"special\");\n options.truncate -= name.length * 2 + 5;\n let propertyContents = \"\";\n if (properties.length > 0) {\n propertyContents += \" \";\n propertyContents += inspectList(properties.map((key) => [key, element.getAttribute(key)]), options, inspectAttribute, \" \");\n }\n options.truncate -= propertyContents.length;\n const truncate2 = options.truncate;\n let children = inspectNodeCollection(element.children, options);\n if (children && children.length > truncate2) {\n children = `${truncator}(${element.children.length})`;\n }\n return `${head}${propertyContents}${headClose}${children}${tail}`;\n}\n__name(inspectHTML, \"inspectHTML\");\n\n// node_modules/loupe/lib/index.js\nvar symbolsSupported = typeof Symbol === \"function\" && typeof Symbol.for === \"function\";\nvar chaiInspect = symbolsSupported ? Symbol.for(\"chai/inspect\") : \"@@chai/inspect\";\nvar nodeInspect = Symbol.for(\"nodejs.util.inspect.custom\");\nvar constructorMap = /* @__PURE__ */ new WeakMap();\nvar stringTagMap = {};\nvar baseTypesMap = {\n undefined: /* @__PURE__ */ __name((value, options) => options.stylize(\"undefined\", \"undefined\"), \"undefined\"),\n null: /* @__PURE__ */ __name((value, options) => options.stylize(\"null\", \"null\"), \"null\"),\n boolean: /* @__PURE__ */ __name((value, options) => options.stylize(String(value), \"boolean\"), \"boolean\"),\n Boolean: /* @__PURE__ */ __name((value, options) => options.stylize(String(value), \"boolean\"), \"Boolean\"),\n number: inspectNumber,\n Number: inspectNumber,\n bigint: inspectBigInt,\n BigInt: inspectBigInt,\n string: inspectString,\n String: inspectString,\n function: inspectFunction,\n Function: inspectFunction,\n symbol: inspectSymbol,\n // A Symbol polyfill will return `Symbol` not `symbol` from typedetect\n Symbol: inspectSymbol,\n Array: inspectArray,\n Date: inspectDate,\n Map: inspectMap,\n Set: inspectSet,\n RegExp: inspectRegExp,\n Promise: promise_default,\n // WeakSet, WeakMap are totally opaque to us\n WeakSet: /* @__PURE__ */ __name((value, options) => options.stylize(\"WeakSet{\\u2026}\", \"special\"), \"WeakSet\"),\n WeakMap: /* @__PURE__ */ __name((value, options) => options.stylize(\"WeakMap{\\u2026}\", \"special\"), \"WeakMap\"),\n Arguments: inspectArguments,\n Int8Array: inspectTypedArray,\n Uint8Array: inspectTypedArray,\n Uint8ClampedArray: inspectTypedArray,\n Int16Array: inspectTypedArray,\n Uint16Array: inspectTypedArray,\n Int32Array: inspectTypedArray,\n Uint32Array: inspectTypedArray,\n Float32Array: inspectTypedArray,\n Float64Array: inspectTypedArray,\n Generator: /* @__PURE__ */ __name(() => \"\", \"Generator\"),\n DataView: /* @__PURE__ */ __name(() => \"\", \"DataView\"),\n ArrayBuffer: /* @__PURE__ */ __name(() => \"\", \"ArrayBuffer\"),\n Error: inspectObject2,\n HTMLCollection: inspectNodeCollection,\n NodeList: inspectNodeCollection\n};\nvar inspectCustom = /* @__PURE__ */ __name((value, options, type3) => {\n if (chaiInspect in value && typeof value[chaiInspect] === \"function\") {\n return value[chaiInspect](options);\n }\n if (nodeInspect in value && typeof value[nodeInspect] === \"function\") {\n return value[nodeInspect](options.depth, options);\n }\n if (\"inspect\" in value && typeof value.inspect === \"function\") {\n return value.inspect(options.depth, options);\n }\n if (\"constructor\" in value && constructorMap.has(value.constructor)) {\n return constructorMap.get(value.constructor)(value, options);\n }\n if (stringTagMap[type3]) {\n return stringTagMap[type3](value, options);\n }\n return \"\";\n}, \"inspectCustom\");\nvar toString = Object.prototype.toString;\nfunction inspect(value, opts = {}) {\n const options = normaliseOptions(opts, inspect);\n const { customInspect } = options;\n let type3 = value === null ? \"null\" : typeof value;\n if (type3 === \"object\") {\n type3 = toString.call(value).slice(8, -1);\n }\n if (type3 in baseTypesMap) {\n return baseTypesMap[type3](value, options);\n }\n if (customInspect && value) {\n const output = inspectCustom(value, options, type3);\n if (output) {\n if (typeof output === \"string\")\n return output;\n return inspect(output, options);\n }\n }\n const proto = value ? Object.getPrototypeOf(value) : false;\n if (proto === Object.prototype || proto === null) {\n return inspectObject(value, options);\n }\n if (value && typeof HTMLElement === \"function\" && value instanceof HTMLElement) {\n return inspectHTML(value, options);\n }\n if (\"constructor\" in value) {\n if (value.constructor !== Object) {\n return inspectClass(value, options);\n }\n return inspectObject(value, options);\n }\n if (value === Object(value)) {\n return inspectObject(value, options);\n }\n return options.stylize(String(value), type3);\n}\n__name(inspect, \"inspect\");\n\n// lib/chai/config.js\nvar config = {\n /**\n * ### config.includeStack\n *\n * User configurable property, influences whether stack trace\n * is included in Assertion error message. Default of false\n * suppresses stack trace in the error message.\n *\n * chai.config.includeStack = true; // enable stack on error\n *\n * @param {boolean}\n * @public\n */\n includeStack: false,\n /**\n * ### config.showDiff\n *\n * User configurable property, influences whether or not\n * the `showDiff` flag should be included in the thrown\n * AssertionErrors. `false` will always be `false`; `true`\n * will be true when the assertion has requested a diff\n * be shown.\n *\n * @param {boolean}\n * @public\n */\n showDiff: true,\n /**\n * ### config.truncateThreshold\n *\n * User configurable property, sets length threshold for actual and\n * expected values in assertion errors. If this threshold is exceeded, for\n * example for large data structures, the value is replaced with something\n * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`.\n *\n * Set it to zero if you want to disable truncating altogether.\n *\n * This is especially userful when doing assertions on arrays: having this\n * set to a reasonable large value makes the failure messages readily\n * inspectable.\n *\n * chai.config.truncateThreshold = 0; // disable truncating\n *\n * @param {number}\n * @public\n */\n truncateThreshold: 40,\n /**\n * ### config.useProxy\n *\n * User configurable property, defines if chai will use a Proxy to throw\n * an error when a non-existent property is read, which protects users\n * from typos when using property-based assertions.\n *\n * Set it to false if you want to disable this feature.\n *\n * chai.config.useProxy = false; // disable use of Proxy\n *\n * This feature is automatically disabled regardless of this config value\n * in environments that don't support proxies.\n *\n * @param {boolean}\n * @public\n */\n useProxy: true,\n /**\n * ### config.proxyExcludedKeys\n *\n * User configurable property, defines which properties should be ignored\n * instead of throwing an error if they do not exist on the assertion.\n * This is only applied if the environment Chai is running in supports proxies and\n * if the `useProxy` configuration setting is enabled.\n * By default, `then` and `inspect` will not throw an error if they do not exist on the\n * assertion object because the `.inspect` property is read by `util.inspect` (for example, when\n * using `console.log` on the assertion object) and `.then` is necessary for promise type-checking.\n *\n * // By default these keys will not throw an error if they do not exist on the assertion object\n * chai.config.proxyExcludedKeys = ['then', 'inspect'];\n *\n * @param {Array}\n * @public\n */\n proxyExcludedKeys: [\"then\", \"catch\", \"inspect\", \"toJSON\"],\n /**\n * ### config.deepEqual\n *\n * User configurable property, defines which a custom function to use for deepEqual\n * comparisons.\n * By default, the function used is the one from the `deep-eql` package without custom comparator.\n *\n * // use a custom comparator\n * chai.config.deepEqual = (expected, actual) => {\n * return chai.util.eql(expected, actual, {\n * comparator: (expected, actual) => {\n * // for non number comparison, use the default behavior\n * if(typeof expected !== 'number') return null;\n * // allow a difference of 10 between compared numbers\n * return typeof actual === 'number' && Math.abs(actual - expected) < 10\n * }\n * })\n * };\n *\n * @param {Function}\n * @public\n */\n deepEqual: null\n};\n\n// lib/chai/utils/inspect.js\nfunction inspect2(obj, showHidden, depth, colors) {\n let options = {\n colors,\n depth: typeof depth === \"undefined\" ? 2 : depth,\n showHidden,\n truncate: config.truncateThreshold ? config.truncateThreshold : Infinity\n };\n return inspect(obj, options);\n}\n__name(inspect2, \"inspect\");\n\n// lib/chai/utils/objDisplay.js\nfunction objDisplay(obj) {\n let str = inspect2(obj), type3 = Object.prototype.toString.call(obj);\n if (config.truncateThreshold && str.length >= config.truncateThreshold) {\n if (type3 === \"[object Function]\") {\n return !obj.name || obj.name === \"\" ? \"[Function]\" : \"[Function: \" + obj.name + \"]\";\n } else if (type3 === \"[object Array]\") {\n return \"[ Array(\" + obj.length + \") ]\";\n } else if (type3 === \"[object Object]\") {\n let keys = Object.keys(obj), kstr = keys.length > 2 ? keys.splice(0, 2).join(\", \") + \", ...\" : keys.join(\", \");\n return \"{ Object (\" + kstr + \") }\";\n } else {\n return str;\n }\n } else {\n return str;\n }\n}\n__name(objDisplay, \"objDisplay\");\n\n// lib/chai/utils/getMessage.js\nfunction getMessage2(obj, args) {\n let negate = flag(obj, \"negate\");\n let val = flag(obj, \"object\");\n let expected = args[3];\n let actual = getActual(obj, args);\n let msg = negate ? args[2] : args[1];\n let flagMsg = flag(obj, \"message\");\n if (typeof msg === \"function\") msg = msg();\n msg = msg || \"\";\n msg = msg.replace(/#\\{this\\}/g, function() {\n return objDisplay(val);\n }).replace(/#\\{act\\}/g, function() {\n return objDisplay(actual);\n }).replace(/#\\{exp\\}/g, function() {\n return objDisplay(expected);\n });\n return flagMsg ? flagMsg + \": \" + msg : msg;\n}\n__name(getMessage2, \"getMessage\");\n\n// lib/chai/utils/transferFlags.js\nfunction transferFlags(assertion, object, includeAll) {\n let flags = assertion.__flags || (assertion.__flags = /* @__PURE__ */ Object.create(null));\n if (!object.__flags) {\n object.__flags = /* @__PURE__ */ Object.create(null);\n }\n includeAll = arguments.length === 3 ? includeAll : true;\n for (let flag3 in flags) {\n if (includeAll || flag3 !== \"object\" && flag3 !== \"ssfi\" && flag3 !== \"lockSsfi\" && flag3 != \"message\") {\n object.__flags[flag3] = flags[flag3];\n }\n }\n}\n__name(transferFlags, \"transferFlags\");\n\n// node_modules/deep-eql/index.js\nfunction type2(obj) {\n if (typeof obj === \"undefined\") {\n return \"undefined\";\n }\n if (obj === null) {\n return \"null\";\n }\n const stringTag = obj[Symbol.toStringTag];\n if (typeof stringTag === \"string\") {\n return stringTag;\n }\n const sliceStart = 8;\n const sliceEnd = -1;\n return Object.prototype.toString.call(obj).slice(sliceStart, sliceEnd);\n}\n__name(type2, \"type\");\nfunction FakeMap() {\n this._key = \"chai/deep-eql__\" + Math.random() + Date.now();\n}\n__name(FakeMap, \"FakeMap\");\nFakeMap.prototype = {\n get: /* @__PURE__ */ __name(function get(key) {\n return key[this._key];\n }, \"get\"),\n set: /* @__PURE__ */ __name(function set(key, value) {\n if (Object.isExtensible(key)) {\n Object.defineProperty(key, this._key, {\n value,\n configurable: true\n });\n }\n }, \"set\")\n};\nvar MemoizeMap = typeof WeakMap === \"function\" ? WeakMap : FakeMap;\nfunction memoizeCompare(leftHandOperand, rightHandOperand, memoizeMap) {\n if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n return null;\n }\n var leftHandMap = memoizeMap.get(leftHandOperand);\n if (leftHandMap) {\n var result = leftHandMap.get(rightHandOperand);\n if (typeof result === \"boolean\") {\n return result;\n }\n }\n return null;\n}\n__name(memoizeCompare, \"memoizeCompare\");\nfunction memoizeSet(leftHandOperand, rightHandOperand, memoizeMap, result) {\n if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n return;\n }\n var leftHandMap = memoizeMap.get(leftHandOperand);\n if (leftHandMap) {\n leftHandMap.set(rightHandOperand, result);\n } else {\n leftHandMap = new MemoizeMap();\n leftHandMap.set(rightHandOperand, result);\n memoizeMap.set(leftHandOperand, leftHandMap);\n }\n}\n__name(memoizeSet, \"memoizeSet\");\nvar deep_eql_default = deepEqual;\nfunction deepEqual(leftHandOperand, rightHandOperand, options) {\n if (options && options.comparator) {\n return extensiveDeepEqual(leftHandOperand, rightHandOperand, options);\n }\n var simpleResult = simpleEqual(leftHandOperand, rightHandOperand);\n if (simpleResult !== null) {\n return simpleResult;\n }\n return extensiveDeepEqual(leftHandOperand, rightHandOperand, options);\n}\n__name(deepEqual, \"deepEqual\");\nfunction simpleEqual(leftHandOperand, rightHandOperand) {\n if (leftHandOperand === rightHandOperand) {\n return leftHandOperand !== 0 || 1 / leftHandOperand === 1 / rightHandOperand;\n }\n if (leftHandOperand !== leftHandOperand && // eslint-disable-line no-self-compare\n rightHandOperand !== rightHandOperand) {\n return true;\n }\n if (isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n return false;\n }\n return null;\n}\n__name(simpleEqual, \"simpleEqual\");\nfunction extensiveDeepEqual(leftHandOperand, rightHandOperand, options) {\n options = options || {};\n options.memoize = options.memoize === false ? false : options.memoize || new MemoizeMap();\n var comparator = options && options.comparator;\n var memoizeResultLeft = memoizeCompare(leftHandOperand, rightHandOperand, options.memoize);\n if (memoizeResultLeft !== null) {\n return memoizeResultLeft;\n }\n var memoizeResultRight = memoizeCompare(rightHandOperand, leftHandOperand, options.memoize);\n if (memoizeResultRight !== null) {\n return memoizeResultRight;\n }\n if (comparator) {\n var comparatorResult = comparator(leftHandOperand, rightHandOperand);\n if (comparatorResult === false || comparatorResult === true) {\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, comparatorResult);\n return comparatorResult;\n }\n var simpleResult = simpleEqual(leftHandOperand, rightHandOperand);\n if (simpleResult !== null) {\n return simpleResult;\n }\n }\n var leftHandType = type2(leftHandOperand);\n if (leftHandType !== type2(rightHandOperand)) {\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, false);\n return false;\n }\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, true);\n var result = extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options);\n memoizeSet(leftHandOperand, rightHandOperand, options.memoize, result);\n return result;\n}\n__name(extensiveDeepEqual, \"extensiveDeepEqual\");\nfunction extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options) {\n switch (leftHandType) {\n case \"String\":\n case \"Number\":\n case \"Boolean\":\n case \"Date\":\n return deepEqual(leftHandOperand.valueOf(), rightHandOperand.valueOf());\n case \"Promise\":\n case \"Symbol\":\n case \"function\":\n case \"WeakMap\":\n case \"WeakSet\":\n return leftHandOperand === rightHandOperand;\n case \"Error\":\n return keysEqual(leftHandOperand, rightHandOperand, [\"name\", \"message\", \"code\"], options);\n case \"Arguments\":\n case \"Int8Array\":\n case \"Uint8Array\":\n case \"Uint8ClampedArray\":\n case \"Int16Array\":\n case \"Uint16Array\":\n case \"Int32Array\":\n case \"Uint32Array\":\n case \"Float32Array\":\n case \"Float64Array\":\n case \"Array\":\n return iterableEqual(leftHandOperand, rightHandOperand, options);\n case \"RegExp\":\n return regexpEqual(leftHandOperand, rightHandOperand);\n case \"Generator\":\n return generatorEqual(leftHandOperand, rightHandOperand, options);\n case \"DataView\":\n return iterableEqual(new Uint8Array(leftHandOperand.buffer), new Uint8Array(rightHandOperand.buffer), options);\n case \"ArrayBuffer\":\n return iterableEqual(new Uint8Array(leftHandOperand), new Uint8Array(rightHandOperand), options);\n case \"Set\":\n return entriesEqual(leftHandOperand, rightHandOperand, options);\n case \"Map\":\n return entriesEqual(leftHandOperand, rightHandOperand, options);\n case \"Temporal.PlainDate\":\n case \"Temporal.PlainTime\":\n case \"Temporal.PlainDateTime\":\n case \"Temporal.Instant\":\n case \"Temporal.ZonedDateTime\":\n case \"Temporal.PlainYearMonth\":\n case \"Temporal.PlainMonthDay\":\n return leftHandOperand.equals(rightHandOperand);\n case \"Temporal.Duration\":\n return leftHandOperand.total(\"nanoseconds\") === rightHandOperand.total(\"nanoseconds\");\n case \"Temporal.TimeZone\":\n case \"Temporal.Calendar\":\n return leftHandOperand.toString() === rightHandOperand.toString();\n default:\n return objectEqual(leftHandOperand, rightHandOperand, options);\n }\n}\n__name(extensiveDeepEqualByType, \"extensiveDeepEqualByType\");\nfunction regexpEqual(leftHandOperand, rightHandOperand) {\n return leftHandOperand.toString() === rightHandOperand.toString();\n}\n__name(regexpEqual, \"regexpEqual\");\nfunction entriesEqual(leftHandOperand, rightHandOperand, options) {\n try {\n if (leftHandOperand.size !== rightHandOperand.size) {\n return false;\n }\n if (leftHandOperand.size === 0) {\n return true;\n }\n } catch (sizeError) {\n return false;\n }\n var leftHandItems = [];\n var rightHandItems = [];\n leftHandOperand.forEach(/* @__PURE__ */ __name(function gatherEntries(key, value) {\n leftHandItems.push([key, value]);\n }, \"gatherEntries\"));\n rightHandOperand.forEach(/* @__PURE__ */ __name(function gatherEntries(key, value) {\n rightHandItems.push([key, value]);\n }, \"gatherEntries\"));\n return iterableEqual(leftHandItems.sort(), rightHandItems.sort(), options);\n}\n__name(entriesEqual, \"entriesEqual\");\nfunction iterableEqual(leftHandOperand, rightHandOperand, options) {\n var length = leftHandOperand.length;\n if (length !== rightHandOperand.length) {\n return false;\n }\n if (length === 0) {\n return true;\n }\n var index = -1;\n while (++index < length) {\n if (deepEqual(leftHandOperand[index], rightHandOperand[index], options) === false) {\n return false;\n }\n }\n return true;\n}\n__name(iterableEqual, \"iterableEqual\");\nfunction generatorEqual(leftHandOperand, rightHandOperand, options) {\n return iterableEqual(getGeneratorEntries(leftHandOperand), getGeneratorEntries(rightHandOperand), options);\n}\n__name(generatorEqual, \"generatorEqual\");\nfunction hasIteratorFunction(target) {\n return typeof Symbol !== \"undefined\" && typeof target === \"object\" && typeof Symbol.iterator !== \"undefined\" && typeof target[Symbol.iterator] === \"function\";\n}\n__name(hasIteratorFunction, \"hasIteratorFunction\");\nfunction getIteratorEntries(target) {\n if (hasIteratorFunction(target)) {\n try {\n return getGeneratorEntries(target[Symbol.iterator]());\n } catch (iteratorError) {\n return [];\n }\n }\n return [];\n}\n__name(getIteratorEntries, \"getIteratorEntries\");\nfunction getGeneratorEntries(generator) {\n var generatorResult = generator.next();\n var accumulator = [generatorResult.value];\n while (generatorResult.done === false) {\n generatorResult = generator.next();\n accumulator.push(generatorResult.value);\n }\n return accumulator;\n}\n__name(getGeneratorEntries, \"getGeneratorEntries\");\nfunction getEnumerableKeys(target) {\n var keys = [];\n for (var key in target) {\n keys.push(key);\n }\n return keys;\n}\n__name(getEnumerableKeys, \"getEnumerableKeys\");\nfunction getEnumerableSymbols(target) {\n var keys = [];\n var allKeys = Object.getOwnPropertySymbols(target);\n for (var i = 0; i < allKeys.length; i += 1) {\n var key = allKeys[i];\n if (Object.getOwnPropertyDescriptor(target, key).enumerable) {\n keys.push(key);\n }\n }\n return keys;\n}\n__name(getEnumerableSymbols, \"getEnumerableSymbols\");\nfunction keysEqual(leftHandOperand, rightHandOperand, keys, options) {\n var length = keys.length;\n if (length === 0) {\n return true;\n }\n for (var i = 0; i < length; i += 1) {\n if (deepEqual(leftHandOperand[keys[i]], rightHandOperand[keys[i]], options) === false) {\n return false;\n }\n }\n return true;\n}\n__name(keysEqual, \"keysEqual\");\nfunction objectEqual(leftHandOperand, rightHandOperand, options) {\n var leftHandKeys = getEnumerableKeys(leftHandOperand);\n var rightHandKeys = getEnumerableKeys(rightHandOperand);\n var leftHandSymbols = getEnumerableSymbols(leftHandOperand);\n var rightHandSymbols = getEnumerableSymbols(rightHandOperand);\n leftHandKeys = leftHandKeys.concat(leftHandSymbols);\n rightHandKeys = rightHandKeys.concat(rightHandSymbols);\n if (leftHandKeys.length && leftHandKeys.length === rightHandKeys.length) {\n if (iterableEqual(mapSymbols(leftHandKeys).sort(), mapSymbols(rightHandKeys).sort()) === false) {\n return false;\n }\n return keysEqual(leftHandOperand, rightHandOperand, leftHandKeys, options);\n }\n var leftHandEntries = getIteratorEntries(leftHandOperand);\n var rightHandEntries = getIteratorEntries(rightHandOperand);\n if (leftHandEntries.length && leftHandEntries.length === rightHandEntries.length) {\n leftHandEntries.sort();\n rightHandEntries.sort();\n return iterableEqual(leftHandEntries, rightHandEntries, options);\n }\n if (leftHandKeys.length === 0 && leftHandEntries.length === 0 && rightHandKeys.length === 0 && rightHandEntries.length === 0) {\n return true;\n }\n return false;\n}\n__name(objectEqual, \"objectEqual\");\nfunction isPrimitive(value) {\n return value === null || typeof value !== \"object\";\n}\n__name(isPrimitive, \"isPrimitive\");\nfunction mapSymbols(arr) {\n return arr.map(/* @__PURE__ */ __name(function mapSymbol(entry) {\n if (typeof entry === \"symbol\") {\n return entry.toString();\n }\n return entry;\n }, \"mapSymbol\"));\n}\n__name(mapSymbols, \"mapSymbols\");\n\n// node_modules/pathval/index.js\nfunction hasProperty(obj, name) {\n if (typeof obj === \"undefined\" || obj === null) {\n return false;\n }\n return name in Object(obj);\n}\n__name(hasProperty, \"hasProperty\");\nfunction parsePath(path) {\n const str = path.replace(/([^\\\\])\\[/g, \"$1.[\");\n const parts = str.match(/(\\\\\\.|[^.]+?)+/g);\n return parts.map((value) => {\n if (value === \"constructor\" || value === \"__proto__\" || value === \"prototype\") {\n return {};\n }\n const regexp = /^\\[(\\d+)\\]$/;\n const mArr = regexp.exec(value);\n let parsed = null;\n if (mArr) {\n parsed = { i: parseFloat(mArr[1]) };\n } else {\n parsed = { p: value.replace(/\\\\([.[\\]])/g, \"$1\") };\n }\n return parsed;\n });\n}\n__name(parsePath, \"parsePath\");\nfunction internalGetPathValue(obj, parsed, pathDepth) {\n let temporaryValue = obj;\n let res = null;\n pathDepth = typeof pathDepth === \"undefined\" ? parsed.length : pathDepth;\n for (let i = 0; i < pathDepth; i++) {\n const part = parsed[i];\n if (temporaryValue) {\n if (typeof part.p === \"undefined\") {\n temporaryValue = temporaryValue[part.i];\n } else {\n temporaryValue = temporaryValue[part.p];\n }\n if (i === pathDepth - 1) {\n res = temporaryValue;\n }\n }\n }\n return res;\n}\n__name(internalGetPathValue, \"internalGetPathValue\");\nfunction getPathInfo(obj, path) {\n const parsed = parsePath(path);\n const last = parsed[parsed.length - 1];\n const info = {\n parent: parsed.length > 1 ? internalGetPathValue(obj, parsed, parsed.length - 1) : obj,\n name: last.p || last.i,\n value: internalGetPathValue(obj, parsed)\n };\n info.exists = hasProperty(info.parent, info.name);\n return info;\n}\n__name(getPathInfo, \"getPathInfo\");\n\n// lib/chai/assertion.js\nvar Assertion = class _Assertion {\n static {\n __name(this, \"Assertion\");\n }\n /** @type {{}} */\n __flags = {};\n /**\n * Creates object for chaining.\n * `Assertion` objects contain metadata in the form of flags. Three flags can\n * be assigned during instantiation by passing arguments to this constructor:\n *\n * - `object`: This flag contains the target of the assertion. For example, in\n * the assertion `expect(numKittens).to.equal(7);`, the `object` flag will\n * contain `numKittens` so that the `equal` assertion can reference it when\n * needed.\n *\n * - `message`: This flag contains an optional custom error message to be\n * prepended to the error message that's generated by the assertion when it\n * fails.\n *\n * - `ssfi`: This flag stands for \"start stack function indicator\". It\n * contains a function reference that serves as the starting point for\n * removing frames from the stack trace of the error that's created by the\n * assertion when it fails. The goal is to provide a cleaner stack trace to\n * end users by removing Chai's internal functions. Note that it only works\n * in environments that support `Error.captureStackTrace`, and only when\n * `Chai.config.includeStack` hasn't been set to `false`.\n *\n * - `lockSsfi`: This flag controls whether or not the given `ssfi` flag\n * should retain its current value, even as assertions are chained off of\n * this object. This is usually set to `true` when creating a new assertion\n * from within another assertion. It's also temporarily set to `true` before\n * an overwritten assertion gets called by the overwriting assertion.\n *\n * - `eql`: This flag contains the deepEqual function to be used by the assertion.\n *\n * @param {unknown} obj target of the assertion\n * @param {string} [msg] (optional) custom error message\n * @param {Function} [ssfi] (optional) starting point for removing stack frames\n * @param {boolean} [lockSsfi] (optional) whether or not the ssfi flag is locked\n */\n constructor(obj, msg, ssfi, lockSsfi) {\n flag(this, \"ssfi\", ssfi || _Assertion);\n flag(this, \"lockSsfi\", lockSsfi);\n flag(this, \"object\", obj);\n flag(this, \"message\", msg);\n flag(this, \"eql\", config.deepEqual || deep_eql_default);\n return proxify(this);\n }\n /** @returns {boolean} */\n static get includeStack() {\n console.warn(\n \"Assertion.includeStack is deprecated, use chai.config.includeStack instead.\"\n );\n return config.includeStack;\n }\n /** @param {boolean} value */\n static set includeStack(value) {\n console.warn(\n \"Assertion.includeStack is deprecated, use chai.config.includeStack instead.\"\n );\n config.includeStack = value;\n }\n /** @returns {boolean} */\n static get showDiff() {\n console.warn(\n \"Assertion.showDiff is deprecated, use chai.config.showDiff instead.\"\n );\n return config.showDiff;\n }\n /** @param {boolean} value */\n static set showDiff(value) {\n console.warn(\n \"Assertion.showDiff is deprecated, use chai.config.showDiff instead.\"\n );\n config.showDiff = value;\n }\n /**\n * @param {string} name\n * @param {Function} fn\n */\n static addProperty(name, fn) {\n addProperty(this.prototype, name, fn);\n }\n /**\n * @param {string} name\n * @param {Function} fn\n */\n static addMethod(name, fn) {\n addMethod(this.prototype, name, fn);\n }\n /**\n * @param {string} name\n * @param {Function} fn\n * @param {Function} chainingBehavior\n */\n static addChainableMethod(name, fn, chainingBehavior) {\n addChainableMethod(this.prototype, name, fn, chainingBehavior);\n }\n /**\n * @param {string} name\n * @param {Function} fn\n */\n static overwriteProperty(name, fn) {\n overwriteProperty(this.prototype, name, fn);\n }\n /**\n * @param {string} name\n * @param {Function} fn\n */\n static overwriteMethod(name, fn) {\n overwriteMethod(this.prototype, name, fn);\n }\n /**\n * @param {string} name\n * @param {Function} fn\n * @param {Function} chainingBehavior\n */\n static overwriteChainableMethod(name, fn, chainingBehavior) {\n overwriteChainableMethod(this.prototype, name, fn, chainingBehavior);\n }\n /**\n * ### .assert(expression, message, negateMessage, expected, actual, showDiff)\n *\n * Executes an expression and check expectations. Throws AssertionError for reporting if test doesn't pass.\n *\n * @name assert\n * @param {unknown} _expr to be tested\n * @param {string | Function} msg or function that returns message to display if expression fails\n * @param {string | Function} _negateMsg or function that returns negatedMessage to display if negated expression fails\n * @param {unknown} expected value (remember to check for negation)\n * @param {unknown} _actual (optional) will default to `this.obj`\n * @param {boolean} showDiff (optional) when set to `true`, assert will display a diff in addition to the message if expression fails\n * @returns {void}\n */\n assert(_expr, msg, _negateMsg, expected, _actual, showDiff) {\n const ok = test(this, arguments);\n if (false !== showDiff) showDiff = true;\n if (void 0 === expected && void 0 === _actual) showDiff = false;\n if (true !== config.showDiff) showDiff = false;\n if (!ok) {\n msg = getMessage2(this, arguments);\n const actual = getActual(this, arguments);\n const assertionErrorObjectProperties = {\n actual,\n expected,\n showDiff\n };\n const operator = getOperator(this, arguments);\n if (operator) {\n assertionErrorObjectProperties.operator = operator;\n }\n throw new AssertionError(\n msg,\n assertionErrorObjectProperties,\n // @ts-expect-error Not sure what to do about these types yet\n config.includeStack ? this.assert : flag(this, \"ssfi\")\n );\n }\n }\n /**\n * Quick reference to stored `actual` value for plugin developers.\n *\n * @returns {unknown}\n */\n get _obj() {\n return flag(this, \"object\");\n }\n /**\n * Quick reference to stored `actual` value for plugin developers.\n *\n * @param {unknown} val\n */\n set _obj(val) {\n flag(this, \"object\", val);\n }\n};\n\n// lib/chai/utils/isProxyEnabled.js\nfunction isProxyEnabled() {\n return config.useProxy && typeof Proxy !== \"undefined\" && typeof Reflect !== \"undefined\";\n}\n__name(isProxyEnabled, \"isProxyEnabled\");\n\n// lib/chai/utils/addProperty.js\nfunction addProperty(ctx, name, getter) {\n getter = getter === void 0 ? function() {\n } : getter;\n Object.defineProperty(ctx, name, {\n get: /* @__PURE__ */ __name(function propertyGetter() {\n if (!isProxyEnabled() && !flag(this, \"lockSsfi\")) {\n flag(this, \"ssfi\", propertyGetter);\n }\n let result = getter.call(this);\n if (result !== void 0) return result;\n let newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"propertyGetter\"),\n configurable: true\n });\n}\n__name(addProperty, \"addProperty\");\n\n// lib/chai/utils/addLengthGuard.js\nvar fnLengthDesc = Object.getOwnPropertyDescriptor(function() {\n}, \"length\");\nfunction addLengthGuard(fn, assertionName, isChainable) {\n if (!fnLengthDesc.configurable) return fn;\n Object.defineProperty(fn, \"length\", {\n get: /* @__PURE__ */ __name(function() {\n if (isChainable) {\n throw Error(\n \"Invalid Chai property: \" + assertionName + '.length. Due to a compatibility issue, \"length\" cannot directly follow \"' + assertionName + '\". Use \"' + assertionName + '.lengthOf\" instead.'\n );\n }\n throw Error(\n \"Invalid Chai property: \" + assertionName + '.length. See docs for proper usage of \"' + assertionName + '\".'\n );\n }, \"get\")\n });\n return fn;\n}\n__name(addLengthGuard, \"addLengthGuard\");\n\n// lib/chai/utils/getProperties.js\nfunction getProperties(object) {\n let result = Object.getOwnPropertyNames(object);\n function addProperty2(property) {\n if (result.indexOf(property) === -1) {\n result.push(property);\n }\n }\n __name(addProperty2, \"addProperty\");\n let proto = Object.getPrototypeOf(object);\n while (proto !== null) {\n Object.getOwnPropertyNames(proto).forEach(addProperty2);\n proto = Object.getPrototypeOf(proto);\n }\n return result;\n}\n__name(getProperties, \"getProperties\");\n\n// lib/chai/utils/proxify.js\nvar builtins = [\"__flags\", \"__methods\", \"_obj\", \"assert\"];\nfunction proxify(obj, nonChainableMethodName) {\n if (!isProxyEnabled()) return obj;\n return new Proxy(obj, {\n get: /* @__PURE__ */ __name(function proxyGetter(target, property) {\n if (typeof property === \"string\" && config.proxyExcludedKeys.indexOf(property) === -1 && !Reflect.has(target, property)) {\n if (nonChainableMethodName) {\n throw Error(\n \"Invalid Chai property: \" + nonChainableMethodName + \".\" + property + '. See docs for proper usage of \"' + nonChainableMethodName + '\".'\n );\n }\n let suggestion = null;\n let suggestionDistance = 4;\n getProperties(target).forEach(function(prop) {\n if (\n // we actually mean to check `Object.prototype` here\n // eslint-disable-next-line no-prototype-builtins\n !Object.prototype.hasOwnProperty(prop) && builtins.indexOf(prop) === -1\n ) {\n let dist = stringDistanceCapped(property, prop, suggestionDistance);\n if (dist < suggestionDistance) {\n suggestion = prop;\n suggestionDistance = dist;\n }\n }\n });\n if (suggestion !== null) {\n throw Error(\n \"Invalid Chai property: \" + property + '. Did you mean \"' + suggestion + '\"?'\n );\n } else {\n throw Error(\"Invalid Chai property: \" + property);\n }\n }\n if (builtins.indexOf(property) === -1 && !flag(target, \"lockSsfi\")) {\n flag(target, \"ssfi\", proxyGetter);\n }\n return Reflect.get(target, property);\n }, \"proxyGetter\")\n });\n}\n__name(proxify, \"proxify\");\nfunction stringDistanceCapped(strA, strB, cap) {\n if (Math.abs(strA.length - strB.length) >= cap) {\n return cap;\n }\n let memo = [];\n for (let i = 0; i <= strA.length; i++) {\n memo[i] = Array(strB.length + 1).fill(0);\n memo[i][0] = i;\n }\n for (let j = 0; j < strB.length; j++) {\n memo[0][j] = j;\n }\n for (let i = 1; i <= strA.length; i++) {\n let ch = strA.charCodeAt(i - 1);\n for (let j = 1; j <= strB.length; j++) {\n if (Math.abs(i - j) >= cap) {\n memo[i][j] = cap;\n continue;\n }\n memo[i][j] = Math.min(\n memo[i - 1][j] + 1,\n memo[i][j - 1] + 1,\n memo[i - 1][j - 1] + (ch === strB.charCodeAt(j - 1) ? 0 : 1)\n );\n }\n }\n return memo[strA.length][strB.length];\n}\n__name(stringDistanceCapped, \"stringDistanceCapped\");\n\n// lib/chai/utils/addMethod.js\nfunction addMethod(ctx, name, method) {\n let methodWrapper = /* @__PURE__ */ __name(function() {\n if (!flag(this, \"lockSsfi\")) {\n flag(this, \"ssfi\", methodWrapper);\n }\n let result = method.apply(this, arguments);\n if (result !== void 0) return result;\n let newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"methodWrapper\");\n addLengthGuard(methodWrapper, name, false);\n ctx[name] = proxify(methodWrapper, name);\n}\n__name(addMethod, \"addMethod\");\n\n// lib/chai/utils/overwriteProperty.js\nfunction overwriteProperty(ctx, name, getter) {\n let _get = Object.getOwnPropertyDescriptor(ctx, name), _super = /* @__PURE__ */ __name(function() {\n }, \"_super\");\n if (_get && \"function\" === typeof _get.get) _super = _get.get;\n Object.defineProperty(ctx, name, {\n get: /* @__PURE__ */ __name(function overwritingPropertyGetter() {\n if (!isProxyEnabled() && !flag(this, \"lockSsfi\")) {\n flag(this, \"ssfi\", overwritingPropertyGetter);\n }\n let origLockSsfi = flag(this, \"lockSsfi\");\n flag(this, \"lockSsfi\", true);\n let result = getter(_super).call(this);\n flag(this, \"lockSsfi\", origLockSsfi);\n if (result !== void 0) {\n return result;\n }\n let newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"overwritingPropertyGetter\"),\n configurable: true\n });\n}\n__name(overwriteProperty, \"overwriteProperty\");\n\n// lib/chai/utils/overwriteMethod.js\nfunction overwriteMethod(ctx, name, method) {\n let _method = ctx[name], _super = /* @__PURE__ */ __name(function() {\n throw new Error(name + \" is not a function\");\n }, \"_super\");\n if (_method && \"function\" === typeof _method) _super = _method;\n let overwritingMethodWrapper = /* @__PURE__ */ __name(function() {\n if (!flag(this, \"lockSsfi\")) {\n flag(this, \"ssfi\", overwritingMethodWrapper);\n }\n let origLockSsfi = flag(this, \"lockSsfi\");\n flag(this, \"lockSsfi\", true);\n let result = method(_super).apply(this, arguments);\n flag(this, \"lockSsfi\", origLockSsfi);\n if (result !== void 0) {\n return result;\n }\n let newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"overwritingMethodWrapper\");\n addLengthGuard(overwritingMethodWrapper, name, false);\n ctx[name] = proxify(overwritingMethodWrapper, name);\n}\n__name(overwriteMethod, \"overwriteMethod\");\n\n// lib/chai/utils/addChainableMethod.js\nvar canSetPrototype = typeof Object.setPrototypeOf === \"function\";\nvar testFn = /* @__PURE__ */ __name(function() {\n}, \"testFn\");\nvar excludeNames = Object.getOwnPropertyNames(testFn).filter(function(name) {\n let propDesc = Object.getOwnPropertyDescriptor(testFn, name);\n if (typeof propDesc !== \"object\") return true;\n return !propDesc.configurable;\n});\nvar call = Function.prototype.call;\nvar apply = Function.prototype.apply;\nfunction addChainableMethod(ctx, name, method, chainingBehavior) {\n if (typeof chainingBehavior !== \"function\") {\n chainingBehavior = /* @__PURE__ */ __name(function() {\n }, \"chainingBehavior\");\n }\n let chainableBehavior = {\n method,\n chainingBehavior\n };\n if (!ctx.__methods) {\n ctx.__methods = {};\n }\n ctx.__methods[name] = chainableBehavior;\n Object.defineProperty(ctx, name, {\n get: /* @__PURE__ */ __name(function chainableMethodGetter() {\n chainableBehavior.chainingBehavior.call(this);\n let chainableMethodWrapper = /* @__PURE__ */ __name(function() {\n if (!flag(this, \"lockSsfi\")) {\n flag(this, \"ssfi\", chainableMethodWrapper);\n }\n let result = chainableBehavior.method.apply(this, arguments);\n if (result !== void 0) {\n return result;\n }\n let newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"chainableMethodWrapper\");\n addLengthGuard(chainableMethodWrapper, name, true);\n if (canSetPrototype) {\n let prototype = Object.create(this);\n prototype.call = call;\n prototype.apply = apply;\n Object.setPrototypeOf(chainableMethodWrapper, prototype);\n } else {\n let asserterNames = Object.getOwnPropertyNames(ctx);\n asserterNames.forEach(function(asserterName) {\n if (excludeNames.indexOf(asserterName) !== -1) {\n return;\n }\n let pd = Object.getOwnPropertyDescriptor(ctx, asserterName);\n Object.defineProperty(chainableMethodWrapper, asserterName, pd);\n });\n }\n transferFlags(this, chainableMethodWrapper);\n return proxify(chainableMethodWrapper);\n }, \"chainableMethodGetter\"),\n configurable: true\n });\n}\n__name(addChainableMethod, \"addChainableMethod\");\n\n// lib/chai/utils/overwriteChainableMethod.js\nfunction overwriteChainableMethod(ctx, name, method, chainingBehavior) {\n let chainableBehavior = ctx.__methods[name];\n let _chainingBehavior = chainableBehavior.chainingBehavior;\n chainableBehavior.chainingBehavior = /* @__PURE__ */ __name(function overwritingChainableMethodGetter() {\n let result = chainingBehavior(_chainingBehavior).call(this);\n if (result !== void 0) {\n return result;\n }\n let newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"overwritingChainableMethodGetter\");\n let _method = chainableBehavior.method;\n chainableBehavior.method = /* @__PURE__ */ __name(function overwritingChainableMethodWrapper() {\n let result = method(_method).apply(this, arguments);\n if (result !== void 0) {\n return result;\n }\n let newAssertion = new Assertion();\n transferFlags(this, newAssertion);\n return newAssertion;\n }, \"overwritingChainableMethodWrapper\");\n}\n__name(overwriteChainableMethod, \"overwriteChainableMethod\");\n\n// lib/chai/utils/compareByInspect.js\nfunction compareByInspect(a, b) {\n return inspect2(a) < inspect2(b) ? -1 : 1;\n}\n__name(compareByInspect, \"compareByInspect\");\n\n// lib/chai/utils/getOwnEnumerablePropertySymbols.js\nfunction getOwnEnumerablePropertySymbols(obj) {\n if (typeof Object.getOwnPropertySymbols !== \"function\") return [];\n return Object.getOwnPropertySymbols(obj).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(obj, sym).enumerable;\n });\n}\n__name(getOwnEnumerablePropertySymbols, \"getOwnEnumerablePropertySymbols\");\n\n// lib/chai/utils/getOwnEnumerableProperties.js\nfunction getOwnEnumerableProperties(obj) {\n return Object.keys(obj).concat(getOwnEnumerablePropertySymbols(obj));\n}\n__name(getOwnEnumerableProperties, \"getOwnEnumerableProperties\");\n\n// lib/chai/utils/isNaN.js\nvar isNaN2 = Number.isNaN;\n\n// lib/chai/utils/getOperator.js\nfunction isObjectType(obj) {\n let objectType = type(obj);\n let objectTypes = [\"Array\", \"Object\", \"Function\"];\n return objectTypes.indexOf(objectType) !== -1;\n}\n__name(isObjectType, \"isObjectType\");\nfunction getOperator(obj, args) {\n let operator = flag(obj, \"operator\");\n let negate = flag(obj, \"negate\");\n let expected = args[3];\n let msg = negate ? args[2] : args[1];\n if (operator) {\n return operator;\n }\n if (typeof msg === \"function\") msg = msg();\n msg = msg || \"\";\n if (!msg) {\n return void 0;\n }\n if (/\\shave\\s/.test(msg)) {\n return void 0;\n }\n let isObject = isObjectType(expected);\n if (/\\snot\\s/.test(msg)) {\n return isObject ? \"notDeepStrictEqual\" : \"notStrictEqual\";\n }\n return isObject ? \"deepStrictEqual\" : \"strictEqual\";\n}\n__name(getOperator, \"getOperator\");\n\n// lib/chai/utils/index.js\nfunction getName(fn) {\n return fn.name;\n}\n__name(getName, \"getName\");\nfunction isRegExp2(obj) {\n return Object.prototype.toString.call(obj) === \"[object RegExp]\";\n}\n__name(isRegExp2, \"isRegExp\");\nfunction isNumeric(obj) {\n return [\"Number\", \"BigInt\"].includes(type(obj));\n}\n__name(isNumeric, \"isNumeric\");\n\n// lib/chai/core/assertions.js\nvar { flag: flag2 } = utils_exports;\n[\n \"to\",\n \"be\",\n \"been\",\n \"is\",\n \"and\",\n \"has\",\n \"have\",\n \"with\",\n \"that\",\n \"which\",\n \"at\",\n \"of\",\n \"same\",\n \"but\",\n \"does\",\n \"still\",\n \"also\"\n].forEach(function(chain) {\n Assertion.addProperty(chain);\n});\nAssertion.addProperty(\"not\", function() {\n flag2(this, \"negate\", true);\n});\nAssertion.addProperty(\"deep\", function() {\n flag2(this, \"deep\", true);\n});\nAssertion.addProperty(\"nested\", function() {\n flag2(this, \"nested\", true);\n});\nAssertion.addProperty(\"own\", function() {\n flag2(this, \"own\", true);\n});\nAssertion.addProperty(\"ordered\", function() {\n flag2(this, \"ordered\", true);\n});\nAssertion.addProperty(\"any\", function() {\n flag2(this, \"any\", true);\n flag2(this, \"all\", false);\n});\nAssertion.addProperty(\"all\", function() {\n flag2(this, \"all\", true);\n flag2(this, \"any\", false);\n});\nvar functionTypes = {\n function: [\n \"function\",\n \"asyncfunction\",\n \"generatorfunction\",\n \"asyncgeneratorfunction\"\n ],\n asyncfunction: [\"asyncfunction\", \"asyncgeneratorfunction\"],\n generatorfunction: [\"generatorfunction\", \"asyncgeneratorfunction\"],\n asyncgeneratorfunction: [\"asyncgeneratorfunction\"]\n};\nfunction an(type3, msg) {\n if (msg) flag2(this, \"message\", msg);\n type3 = type3.toLowerCase();\n let obj = flag2(this, \"object\"), article = ~[\"a\", \"e\", \"i\", \"o\", \"u\"].indexOf(type3.charAt(0)) ? \"an \" : \"a \";\n const detectedType = type(obj).toLowerCase();\n if (functionTypes[\"function\"].includes(type3)) {\n this.assert(\n functionTypes[type3].includes(detectedType),\n \"expected #{this} to be \" + article + type3,\n \"expected #{this} not to be \" + article + type3\n );\n } else {\n this.assert(\n type3 === detectedType,\n \"expected #{this} to be \" + article + type3,\n \"expected #{this} not to be \" + article + type3\n );\n }\n}\n__name(an, \"an\");\nAssertion.addChainableMethod(\"an\", an);\nAssertion.addChainableMethod(\"a\", an);\nfunction SameValueZero(a, b) {\n return isNaN2(a) && isNaN2(b) || a === b;\n}\n__name(SameValueZero, \"SameValueZero\");\nfunction includeChainingBehavior() {\n flag2(this, \"contains\", true);\n}\n__name(includeChainingBehavior, \"includeChainingBehavior\");\nfunction include(val, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), objType = type(obj).toLowerCase(), flagMsg = flag2(this, \"message\"), negate = flag2(this, \"negate\"), ssfi = flag2(this, \"ssfi\"), isDeep = flag2(this, \"deep\"), descriptor = isDeep ? \"deep \" : \"\", isEql = isDeep ? flag2(this, \"eql\") : SameValueZero;\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n let included = false;\n switch (objType) {\n case \"string\":\n included = obj.indexOf(val) !== -1;\n break;\n case \"weakset\":\n if (isDeep) {\n throw new AssertionError(\n flagMsg + \"unable to use .deep.include with WeakSet\",\n void 0,\n ssfi\n );\n }\n included = obj.has(val);\n break;\n case \"map\":\n obj.forEach(function(item) {\n included = included || isEql(item, val);\n });\n break;\n case \"set\":\n if (isDeep) {\n obj.forEach(function(item) {\n included = included || isEql(item, val);\n });\n } else {\n included = obj.has(val);\n }\n break;\n case \"array\":\n if (isDeep) {\n included = obj.some(function(item) {\n return isEql(item, val);\n });\n } else {\n included = obj.indexOf(val) !== -1;\n }\n break;\n default: {\n if (val !== Object(val)) {\n throw new AssertionError(\n flagMsg + \"the given combination of arguments (\" + objType + \" and \" + type(val).toLowerCase() + \") is invalid for this assertion. You can use an array, a map, an object, a set, a string, or a weakset instead of a \" + type(val).toLowerCase(),\n void 0,\n ssfi\n );\n }\n let props = Object.keys(val);\n let firstErr = null;\n let numErrs = 0;\n props.forEach(function(prop) {\n let propAssertion = new Assertion(obj);\n transferFlags(this, propAssertion, true);\n flag2(propAssertion, \"lockSsfi\", true);\n if (!negate || props.length === 1) {\n propAssertion.property(prop, val[prop]);\n return;\n }\n try {\n propAssertion.property(prop, val[prop]);\n } catch (err) {\n if (!check_error_exports.compatibleConstructor(err, AssertionError)) {\n throw err;\n }\n if (firstErr === null) firstErr = err;\n numErrs++;\n }\n }, this);\n if (negate && props.length > 1 && numErrs === props.length) {\n throw firstErr;\n }\n return;\n }\n }\n this.assert(\n included,\n \"expected #{this} to \" + descriptor + \"include \" + inspect2(val),\n \"expected #{this} to not \" + descriptor + \"include \" + inspect2(val)\n );\n}\n__name(include, \"include\");\nAssertion.addChainableMethod(\"include\", include, includeChainingBehavior);\nAssertion.addChainableMethod(\"contain\", include, includeChainingBehavior);\nAssertion.addChainableMethod(\"contains\", include, includeChainingBehavior);\nAssertion.addChainableMethod(\"includes\", include, includeChainingBehavior);\nAssertion.addProperty(\"ok\", function() {\n this.assert(\n flag2(this, \"object\"),\n \"expected #{this} to be truthy\",\n \"expected #{this} to be falsy\"\n );\n});\nAssertion.addProperty(\"true\", function() {\n this.assert(\n true === flag2(this, \"object\"),\n \"expected #{this} to be true\",\n \"expected #{this} to be false\",\n flag2(this, \"negate\") ? false : true\n );\n});\nAssertion.addProperty(\"numeric\", function() {\n const object = flag2(this, \"object\");\n this.assert(\n [\"Number\", \"BigInt\"].includes(type(object)),\n \"expected #{this} to be numeric\",\n \"expected #{this} to not be numeric\",\n flag2(this, \"negate\") ? false : true\n );\n});\nAssertion.addProperty(\"callable\", function() {\n const val = flag2(this, \"object\");\n const ssfi = flag2(this, \"ssfi\");\n const message = flag2(this, \"message\");\n const msg = message ? `${message}: ` : \"\";\n const negate = flag2(this, \"negate\");\n const assertionMessage = negate ? `${msg}expected ${inspect2(val)} not to be a callable function` : `${msg}expected ${inspect2(val)} to be a callable function`;\n const isCallable = [\n \"Function\",\n \"AsyncFunction\",\n \"GeneratorFunction\",\n \"AsyncGeneratorFunction\"\n ].includes(type(val));\n if (isCallable && negate || !isCallable && !negate) {\n throw new AssertionError(assertionMessage, void 0, ssfi);\n }\n});\nAssertion.addProperty(\"false\", function() {\n this.assert(\n false === flag2(this, \"object\"),\n \"expected #{this} to be false\",\n \"expected #{this} to be true\",\n flag2(this, \"negate\") ? true : false\n );\n});\nAssertion.addProperty(\"null\", function() {\n this.assert(\n null === flag2(this, \"object\"),\n \"expected #{this} to be null\",\n \"expected #{this} not to be null\"\n );\n});\nAssertion.addProperty(\"undefined\", function() {\n this.assert(\n void 0 === flag2(this, \"object\"),\n \"expected #{this} to be undefined\",\n \"expected #{this} not to be undefined\"\n );\n});\nAssertion.addProperty(\"NaN\", function() {\n this.assert(\n isNaN2(flag2(this, \"object\")),\n \"expected #{this} to be NaN\",\n \"expected #{this} not to be NaN\"\n );\n});\nfunction assertExist() {\n let val = flag2(this, \"object\");\n this.assert(\n val !== null && val !== void 0,\n \"expected #{this} to exist\",\n \"expected #{this} to not exist\"\n );\n}\n__name(assertExist, \"assertExist\");\nAssertion.addProperty(\"exist\", assertExist);\nAssertion.addProperty(\"exists\", assertExist);\nAssertion.addProperty(\"empty\", function() {\n let val = flag2(this, \"object\"), ssfi = flag2(this, \"ssfi\"), flagMsg = flag2(this, \"message\"), itemsCount;\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n switch (type(val).toLowerCase()) {\n case \"array\":\n case \"string\":\n itemsCount = val.length;\n break;\n case \"map\":\n case \"set\":\n itemsCount = val.size;\n break;\n case \"weakmap\":\n case \"weakset\":\n throw new AssertionError(\n flagMsg + \".empty was passed a weak collection\",\n void 0,\n ssfi\n );\n case \"function\": {\n const msg = flagMsg + \".empty was passed a function \" + getName(val);\n throw new AssertionError(msg.trim(), void 0, ssfi);\n }\n default:\n if (val !== Object(val)) {\n throw new AssertionError(\n flagMsg + \".empty was passed non-string primitive \" + inspect2(val),\n void 0,\n ssfi\n );\n }\n itemsCount = Object.keys(val).length;\n }\n this.assert(\n 0 === itemsCount,\n \"expected #{this} to be empty\",\n \"expected #{this} not to be empty\"\n );\n});\nfunction checkArguments() {\n let obj = flag2(this, \"object\"), type3 = type(obj);\n this.assert(\n \"Arguments\" === type3,\n \"expected #{this} to be arguments but got \" + type3,\n \"expected #{this} to not be arguments\"\n );\n}\n__name(checkArguments, \"checkArguments\");\nAssertion.addProperty(\"arguments\", checkArguments);\nAssertion.addProperty(\"Arguments\", checkArguments);\nfunction assertEqual(val, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\");\n if (flag2(this, \"deep\")) {\n let prevLockSsfi = flag2(this, \"lockSsfi\");\n flag2(this, \"lockSsfi\", true);\n this.eql(val);\n flag2(this, \"lockSsfi\", prevLockSsfi);\n } else {\n this.assert(\n val === obj,\n \"expected #{this} to equal #{exp}\",\n \"expected #{this} to not equal #{exp}\",\n val,\n this._obj,\n true\n );\n }\n}\n__name(assertEqual, \"assertEqual\");\nAssertion.addMethod(\"equal\", assertEqual);\nAssertion.addMethod(\"equals\", assertEqual);\nAssertion.addMethod(\"eq\", assertEqual);\nfunction assertEql(obj, msg) {\n if (msg) flag2(this, \"message\", msg);\n let eql = flag2(this, \"eql\");\n this.assert(\n eql(obj, flag2(this, \"object\")),\n \"expected #{this} to deeply equal #{exp}\",\n \"expected #{this} to not deeply equal #{exp}\",\n obj,\n this._obj,\n true\n );\n}\n__name(assertEql, \"assertEql\");\nAssertion.addMethod(\"eql\", assertEql);\nAssertion.addMethod(\"eqls\", assertEql);\nfunction assertAbove(n, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase();\n if (doLength && objType !== \"map\" && objType !== \"set\") {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n }\n if (!doLength && objType === \"date\" && nType !== \"date\") {\n throw new AssertionError(\n msgPrefix + \"the argument to above must be a date\",\n void 0,\n ssfi\n );\n } else if (!isNumeric(n) && (doLength || isNumeric(obj))) {\n throw new AssertionError(\n msgPrefix + \"the argument to above must be a number\",\n void 0,\n ssfi\n );\n } else if (!doLength && objType !== \"date\" && !isNumeric(obj)) {\n let printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n throw new AssertionError(\n msgPrefix + \"expected \" + printObj + \" to be a number or a date\",\n void 0,\n ssfi\n );\n }\n if (doLength) {\n let descriptor = \"length\", itemsCount;\n if (objType === \"map\" || objType === \"set\") {\n descriptor = \"size\";\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount > n,\n \"expected #{this} to have a \" + descriptor + \" above #{exp} but got #{act}\",\n \"expected #{this} to not have a \" + descriptor + \" above #{exp}\",\n n,\n itemsCount\n );\n } else {\n this.assert(\n obj > n,\n \"expected #{this} to be above #{exp}\",\n \"expected #{this} to be at most #{exp}\",\n n\n );\n }\n}\n__name(assertAbove, \"assertAbove\");\nAssertion.addMethod(\"above\", assertAbove);\nAssertion.addMethod(\"gt\", assertAbove);\nAssertion.addMethod(\"greaterThan\", assertAbove);\nfunction assertLeast(n, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true;\n if (doLength && objType !== \"map\" && objType !== \"set\") {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n }\n if (!doLength && objType === \"date\" && nType !== \"date\") {\n errorMessage = msgPrefix + \"the argument to least must be a date\";\n } else if (!isNumeric(n) && (doLength || isNumeric(obj))) {\n errorMessage = msgPrefix + \"the argument to least must be a number\";\n } else if (!doLength && objType !== \"date\" && !isNumeric(obj)) {\n let printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n } else {\n shouldThrow = false;\n }\n if (shouldThrow) {\n throw new AssertionError(errorMessage, void 0, ssfi);\n }\n if (doLength) {\n let descriptor = \"length\", itemsCount;\n if (objType === \"map\" || objType === \"set\") {\n descriptor = \"size\";\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount >= n,\n \"expected #{this} to have a \" + descriptor + \" at least #{exp} but got #{act}\",\n \"expected #{this} to have a \" + descriptor + \" below #{exp}\",\n n,\n itemsCount\n );\n } else {\n this.assert(\n obj >= n,\n \"expected #{this} to be at least #{exp}\",\n \"expected #{this} to be below #{exp}\",\n n\n );\n }\n}\n__name(assertLeast, \"assertLeast\");\nAssertion.addMethod(\"least\", assertLeast);\nAssertion.addMethod(\"gte\", assertLeast);\nAssertion.addMethod(\"greaterThanOrEqual\", assertLeast);\nfunction assertBelow(n, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true;\n if (doLength && objType !== \"map\" && objType !== \"set\") {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n }\n if (!doLength && objType === \"date\" && nType !== \"date\") {\n errorMessage = msgPrefix + \"the argument to below must be a date\";\n } else if (!isNumeric(n) && (doLength || isNumeric(obj))) {\n errorMessage = msgPrefix + \"the argument to below must be a number\";\n } else if (!doLength && objType !== \"date\" && !isNumeric(obj)) {\n let printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n } else {\n shouldThrow = false;\n }\n if (shouldThrow) {\n throw new AssertionError(errorMessage, void 0, ssfi);\n }\n if (doLength) {\n let descriptor = \"length\", itemsCount;\n if (objType === \"map\" || objType === \"set\") {\n descriptor = \"size\";\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount < n,\n \"expected #{this} to have a \" + descriptor + \" below #{exp} but got #{act}\",\n \"expected #{this} to not have a \" + descriptor + \" below #{exp}\",\n n,\n itemsCount\n );\n } else {\n this.assert(\n obj < n,\n \"expected #{this} to be below #{exp}\",\n \"expected #{this} to be at least #{exp}\",\n n\n );\n }\n}\n__name(assertBelow, \"assertBelow\");\nAssertion.addMethod(\"below\", assertBelow);\nAssertion.addMethod(\"lt\", assertBelow);\nAssertion.addMethod(\"lessThan\", assertBelow);\nfunction assertMost(n, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true;\n if (doLength && objType !== \"map\" && objType !== \"set\") {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n }\n if (!doLength && objType === \"date\" && nType !== \"date\") {\n errorMessage = msgPrefix + \"the argument to most must be a date\";\n } else if (!isNumeric(n) && (doLength || isNumeric(obj))) {\n errorMessage = msgPrefix + \"the argument to most must be a number\";\n } else if (!doLength && objType !== \"date\" && !isNumeric(obj)) {\n let printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n } else {\n shouldThrow = false;\n }\n if (shouldThrow) {\n throw new AssertionError(errorMessage, void 0, ssfi);\n }\n if (doLength) {\n let descriptor = \"length\", itemsCount;\n if (objType === \"map\" || objType === \"set\") {\n descriptor = \"size\";\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount <= n,\n \"expected #{this} to have a \" + descriptor + \" at most #{exp} but got #{act}\",\n \"expected #{this} to have a \" + descriptor + \" above #{exp}\",\n n,\n itemsCount\n );\n } else {\n this.assert(\n obj <= n,\n \"expected #{this} to be at most #{exp}\",\n \"expected #{this} to be above #{exp}\",\n n\n );\n }\n}\n__name(assertMost, \"assertMost\");\nAssertion.addMethod(\"most\", assertMost);\nAssertion.addMethod(\"lte\", assertMost);\nAssertion.addMethod(\"lessThanOrEqual\", assertMost);\nAssertion.addMethod(\"within\", function(start, finish, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), startType = type(start).toLowerCase(), finishType = type(finish).toLowerCase(), errorMessage, shouldThrow = true, range = startType === \"date\" && finishType === \"date\" ? start.toISOString() + \"..\" + finish.toISOString() : start + \"..\" + finish;\n if (doLength && objType !== \"map\" && objType !== \"set\") {\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n }\n if (!doLength && objType === \"date\" && (startType !== \"date\" || finishType !== \"date\")) {\n errorMessage = msgPrefix + \"the arguments to within must be dates\";\n } else if ((!isNumeric(start) || !isNumeric(finish)) && (doLength || isNumeric(obj))) {\n errorMessage = msgPrefix + \"the arguments to within must be numbers\";\n } else if (!doLength && objType !== \"date\" && !isNumeric(obj)) {\n let printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n } else {\n shouldThrow = false;\n }\n if (shouldThrow) {\n throw new AssertionError(errorMessage, void 0, ssfi);\n }\n if (doLength) {\n let descriptor = \"length\", itemsCount;\n if (objType === \"map\" || objType === \"set\") {\n descriptor = \"size\";\n itemsCount = obj.size;\n } else {\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount >= start && itemsCount <= finish,\n \"expected #{this} to have a \" + descriptor + \" within \" + range,\n \"expected #{this} to not have a \" + descriptor + \" within \" + range\n );\n } else {\n this.assert(\n obj >= start && obj <= finish,\n \"expected #{this} to be within \" + range,\n \"expected #{this} to not be within \" + range\n );\n }\n});\nfunction assertInstanceOf(constructor, msg) {\n if (msg) flag2(this, \"message\", msg);\n let target = flag2(this, \"object\");\n let ssfi = flag2(this, \"ssfi\");\n let flagMsg = flag2(this, \"message\");\n let isInstanceOf;\n try {\n isInstanceOf = target instanceof constructor;\n } catch (err) {\n if (err instanceof TypeError) {\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n throw new AssertionError(\n flagMsg + \"The instanceof assertion needs a constructor but \" + type(constructor) + \" was given.\",\n void 0,\n ssfi\n );\n }\n throw err;\n }\n let name = getName(constructor);\n if (name == null) {\n name = \"an unnamed constructor\";\n }\n this.assert(\n isInstanceOf,\n \"expected #{this} to be an instance of \" + name,\n \"expected #{this} to not be an instance of \" + name\n );\n}\n__name(assertInstanceOf, \"assertInstanceOf\");\nAssertion.addMethod(\"instanceof\", assertInstanceOf);\nAssertion.addMethod(\"instanceOf\", assertInstanceOf);\nfunction assertProperty(name, val, msg) {\n if (msg) flag2(this, \"message\", msg);\n let isNested = flag2(this, \"nested\"), isOwn = flag2(this, \"own\"), flagMsg = flag2(this, \"message\"), obj = flag2(this, \"object\"), ssfi = flag2(this, \"ssfi\"), nameType = typeof name;\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n if (isNested) {\n if (nameType !== \"string\") {\n throw new AssertionError(\n flagMsg + \"the argument to property must be a string when using nested syntax\",\n void 0,\n ssfi\n );\n }\n } else {\n if (nameType !== \"string\" && nameType !== \"number\" && nameType !== \"symbol\") {\n throw new AssertionError(\n flagMsg + \"the argument to property must be a string, number, or symbol\",\n void 0,\n ssfi\n );\n }\n }\n if (isNested && isOwn) {\n throw new AssertionError(\n flagMsg + 'The \"nested\" and \"own\" flags cannot be combined.',\n void 0,\n ssfi\n );\n }\n if (obj === null || obj === void 0) {\n throw new AssertionError(\n flagMsg + \"Target cannot be null or undefined.\",\n void 0,\n ssfi\n );\n }\n let isDeep = flag2(this, \"deep\"), negate = flag2(this, \"negate\"), pathInfo = isNested ? getPathInfo(obj, name) : null, value = isNested ? pathInfo.value : obj[name], isEql = isDeep ? flag2(this, \"eql\") : (val1, val2) => val1 === val2;\n let descriptor = \"\";\n if (isDeep) descriptor += \"deep \";\n if (isOwn) descriptor += \"own \";\n if (isNested) descriptor += \"nested \";\n descriptor += \"property \";\n let hasProperty2;\n if (isOwn) hasProperty2 = Object.prototype.hasOwnProperty.call(obj, name);\n else if (isNested) hasProperty2 = pathInfo.exists;\n else hasProperty2 = hasProperty(obj, name);\n if (!negate || arguments.length === 1) {\n this.assert(\n hasProperty2,\n \"expected #{this} to have \" + descriptor + inspect2(name),\n \"expected #{this} to not have \" + descriptor + inspect2(name)\n );\n }\n if (arguments.length > 1) {\n this.assert(\n hasProperty2 && isEql(val, value),\n \"expected #{this} to have \" + descriptor + inspect2(name) + \" of #{exp}, but got #{act}\",\n \"expected #{this} to not have \" + descriptor + inspect2(name) + \" of #{act}\",\n val,\n value\n );\n }\n flag2(this, \"object\", value);\n}\n__name(assertProperty, \"assertProperty\");\nAssertion.addMethod(\"property\", assertProperty);\nfunction assertOwnProperty(_name, _value, _msg) {\n flag2(this, \"own\", true);\n assertProperty.apply(this, arguments);\n}\n__name(assertOwnProperty, \"assertOwnProperty\");\nAssertion.addMethod(\"ownProperty\", assertOwnProperty);\nAssertion.addMethod(\"haveOwnProperty\", assertOwnProperty);\nfunction assertOwnPropertyDescriptor(name, descriptor, msg) {\n if (typeof descriptor === \"string\") {\n msg = descriptor;\n descriptor = null;\n }\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\");\n let actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name);\n let eql = flag2(this, \"eql\");\n if (actualDescriptor && descriptor) {\n this.assert(\n eql(descriptor, actualDescriptor),\n \"expected the own property descriptor for \" + inspect2(name) + \" on #{this} to match \" + inspect2(descriptor) + \", got \" + inspect2(actualDescriptor),\n \"expected the own property descriptor for \" + inspect2(name) + \" on #{this} to not match \" + inspect2(descriptor),\n descriptor,\n actualDescriptor,\n true\n );\n } else {\n this.assert(\n actualDescriptor,\n \"expected #{this} to have an own property descriptor for \" + inspect2(name),\n \"expected #{this} to not have an own property descriptor for \" + inspect2(name)\n );\n }\n flag2(this, \"object\", actualDescriptor);\n}\n__name(assertOwnPropertyDescriptor, \"assertOwnPropertyDescriptor\");\nAssertion.addMethod(\"ownPropertyDescriptor\", assertOwnPropertyDescriptor);\nAssertion.addMethod(\"haveOwnPropertyDescriptor\", assertOwnPropertyDescriptor);\nfunction assertLengthChain() {\n flag2(this, \"doLength\", true);\n}\n__name(assertLengthChain, \"assertLengthChain\");\nfunction assertLength(n, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), objType = type(obj).toLowerCase(), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\"), descriptor = \"length\", itemsCount;\n switch (objType) {\n case \"map\":\n case \"set\":\n descriptor = \"size\";\n itemsCount = obj.size;\n break;\n default:\n new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n itemsCount = obj.length;\n }\n this.assert(\n itemsCount == n,\n \"expected #{this} to have a \" + descriptor + \" of #{exp} but got #{act}\",\n \"expected #{this} to not have a \" + descriptor + \" of #{act}\",\n n,\n itemsCount\n );\n}\n__name(assertLength, \"assertLength\");\nAssertion.addChainableMethod(\"length\", assertLength, assertLengthChain);\nAssertion.addChainableMethod(\"lengthOf\", assertLength, assertLengthChain);\nfunction assertMatch(re, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\");\n this.assert(\n re.exec(obj),\n \"expected #{this} to match \" + re,\n \"expected #{this} not to match \" + re\n );\n}\n__name(assertMatch, \"assertMatch\");\nAssertion.addMethod(\"match\", assertMatch);\nAssertion.addMethod(\"matches\", assertMatch);\nAssertion.addMethod(\"string\", function(str, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(obj, flagMsg, ssfi, true).is.a(\"string\");\n this.assert(\n ~obj.indexOf(str),\n \"expected #{this} to contain \" + inspect2(str),\n \"expected #{this} to not contain \" + inspect2(str)\n );\n});\nfunction assertKeys(keys) {\n let obj = flag2(this, \"object\"), objType = type(obj), keysType = type(keys), ssfi = flag2(this, \"ssfi\"), isDeep = flag2(this, \"deep\"), str, deepStr = \"\", actual, ok = true, flagMsg = flag2(this, \"message\");\n flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n let mixedArgsMsg = flagMsg + \"when testing keys against an object or an array you must give a single Array|Object|String argument or multiple String arguments\";\n if (objType === \"Map\" || objType === \"Set\") {\n deepStr = isDeep ? \"deeply \" : \"\";\n actual = [];\n obj.forEach(function(val, key) {\n actual.push(key);\n });\n if (keysType !== \"Array\") {\n keys = Array.prototype.slice.call(arguments);\n }\n } else {\n actual = getOwnEnumerableProperties(obj);\n switch (keysType) {\n case \"Array\":\n if (arguments.length > 1) {\n throw new AssertionError(mixedArgsMsg, void 0, ssfi);\n }\n break;\n case \"Object\":\n if (arguments.length > 1) {\n throw new AssertionError(mixedArgsMsg, void 0, ssfi);\n }\n keys = Object.keys(keys);\n break;\n default:\n keys = Array.prototype.slice.call(arguments);\n }\n keys = keys.map(function(val) {\n return typeof val === \"symbol\" ? val : String(val);\n });\n }\n if (!keys.length) {\n throw new AssertionError(flagMsg + \"keys required\", void 0, ssfi);\n }\n let len = keys.length, any = flag2(this, \"any\"), all = flag2(this, \"all\"), expected = keys, isEql = isDeep ? flag2(this, \"eql\") : (val1, val2) => val1 === val2;\n if (!any && !all) {\n all = true;\n }\n if (any) {\n ok = expected.some(function(expectedKey) {\n return actual.some(function(actualKey) {\n return isEql(expectedKey, actualKey);\n });\n });\n }\n if (all) {\n ok = expected.every(function(expectedKey) {\n return actual.some(function(actualKey) {\n return isEql(expectedKey, actualKey);\n });\n });\n if (!flag2(this, \"contains\")) {\n ok = ok && keys.length == actual.length;\n }\n }\n if (len > 1) {\n keys = keys.map(function(key) {\n return inspect2(key);\n });\n let last = keys.pop();\n if (all) {\n str = keys.join(\", \") + \", and \" + last;\n }\n if (any) {\n str = keys.join(\", \") + \", or \" + last;\n }\n } else {\n str = inspect2(keys[0]);\n }\n str = (len > 1 ? \"keys \" : \"key \") + str;\n str = (flag2(this, \"contains\") ? \"contain \" : \"have \") + str;\n this.assert(\n ok,\n \"expected #{this} to \" + deepStr + str,\n \"expected #{this} to not \" + deepStr + str,\n expected.slice(0).sort(compareByInspect),\n actual.sort(compareByInspect),\n true\n );\n}\n__name(assertKeys, \"assertKeys\");\nAssertion.addMethod(\"keys\", assertKeys);\nAssertion.addMethod(\"key\", assertKeys);\nfunction assertThrows(errorLike, errMsgMatcher, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), ssfi = flag2(this, \"ssfi\"), flagMsg = flag2(this, \"message\"), negate = flag2(this, \"negate\") || false;\n new Assertion(obj, flagMsg, ssfi, true).is.a(\"function\");\n if (isRegExp2(errorLike) || typeof errorLike === \"string\") {\n errMsgMatcher = errorLike;\n errorLike = null;\n }\n let caughtErr;\n let errorWasThrown = false;\n try {\n obj();\n } catch (err) {\n errorWasThrown = true;\n caughtErr = err;\n }\n let everyArgIsUndefined = errorLike === void 0 && errMsgMatcher === void 0;\n let everyArgIsDefined = Boolean(errorLike && errMsgMatcher);\n let errorLikeFail = false;\n let errMsgMatcherFail = false;\n if (everyArgIsUndefined || !everyArgIsUndefined && !negate) {\n let errorLikeString = \"an error\";\n if (errorLike instanceof Error) {\n errorLikeString = \"#{exp}\";\n } else if (errorLike) {\n errorLikeString = check_error_exports.getConstructorName(errorLike);\n }\n let actual = caughtErr;\n if (caughtErr instanceof Error) {\n actual = caughtErr.toString();\n } else if (typeof caughtErr === \"string\") {\n actual = caughtErr;\n } else if (caughtErr && (typeof caughtErr === \"object\" || typeof caughtErr === \"function\")) {\n try {\n actual = check_error_exports.getConstructorName(caughtErr);\n } catch (_err) {\n }\n }\n this.assert(\n errorWasThrown,\n \"expected #{this} to throw \" + errorLikeString,\n \"expected #{this} to not throw an error but #{act} was thrown\",\n errorLike && errorLike.toString(),\n actual\n );\n }\n if (errorLike && caughtErr) {\n if (errorLike instanceof Error) {\n let isCompatibleInstance = check_error_exports.compatibleInstance(\n caughtErr,\n errorLike\n );\n if (isCompatibleInstance === negate) {\n if (everyArgIsDefined && negate) {\n errorLikeFail = true;\n } else {\n this.assert(\n negate,\n \"expected #{this} to throw #{exp} but #{act} was thrown\",\n \"expected #{this} to not throw #{exp}\" + (caughtErr && !negate ? \" but #{act} was thrown\" : \"\"),\n errorLike.toString(),\n caughtErr.toString()\n );\n }\n }\n }\n let isCompatibleConstructor = check_error_exports.compatibleConstructor(\n caughtErr,\n errorLike\n );\n if (isCompatibleConstructor === negate) {\n if (everyArgIsDefined && negate) {\n errorLikeFail = true;\n } else {\n this.assert(\n negate,\n \"expected #{this} to throw #{exp} but #{act} was thrown\",\n \"expected #{this} to not throw #{exp}\" + (caughtErr ? \" but #{act} was thrown\" : \"\"),\n errorLike instanceof Error ? errorLike.toString() : errorLike && check_error_exports.getConstructorName(errorLike),\n caughtErr instanceof Error ? caughtErr.toString() : caughtErr && check_error_exports.getConstructorName(caughtErr)\n );\n }\n }\n }\n if (caughtErr && errMsgMatcher !== void 0 && errMsgMatcher !== null) {\n let placeholder = \"including\";\n if (isRegExp2(errMsgMatcher)) {\n placeholder = \"matching\";\n }\n let isCompatibleMessage = check_error_exports.compatibleMessage(\n caughtErr,\n errMsgMatcher\n );\n if (isCompatibleMessage === negate) {\n if (everyArgIsDefined && negate) {\n errMsgMatcherFail = true;\n } else {\n this.assert(\n negate,\n \"expected #{this} to throw error \" + placeholder + \" #{exp} but got #{act}\",\n \"expected #{this} to throw error not \" + placeholder + \" #{exp}\",\n errMsgMatcher,\n check_error_exports.getMessage(caughtErr)\n );\n }\n }\n }\n if (errorLikeFail && errMsgMatcherFail) {\n this.assert(\n negate,\n \"expected #{this} to throw #{exp} but #{act} was thrown\",\n \"expected #{this} to not throw #{exp}\" + (caughtErr ? \" but #{act} was thrown\" : \"\"),\n errorLike instanceof Error ? errorLike.toString() : errorLike && check_error_exports.getConstructorName(errorLike),\n caughtErr instanceof Error ? caughtErr.toString() : caughtErr && check_error_exports.getConstructorName(caughtErr)\n );\n }\n flag2(this, \"object\", caughtErr);\n}\n__name(assertThrows, \"assertThrows\");\nAssertion.addMethod(\"throw\", assertThrows);\nAssertion.addMethod(\"throws\", assertThrows);\nAssertion.addMethod(\"Throw\", assertThrows);\nfunction respondTo(method, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), itself = flag2(this, \"itself\"), context = \"function\" === typeof obj && !itself ? obj.prototype[method] : obj[method];\n this.assert(\n \"function\" === typeof context,\n \"expected #{this} to respond to \" + inspect2(method),\n \"expected #{this} to not respond to \" + inspect2(method)\n );\n}\n__name(respondTo, \"respondTo\");\nAssertion.addMethod(\"respondTo\", respondTo);\nAssertion.addMethod(\"respondsTo\", respondTo);\nAssertion.addProperty(\"itself\", function() {\n flag2(this, \"itself\", true);\n});\nfunction satisfy(matcher, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\");\n let result = matcher(obj);\n this.assert(\n result,\n \"expected #{this} to satisfy \" + objDisplay(matcher),\n \"expected #{this} to not satisfy\" + objDisplay(matcher),\n flag2(this, \"negate\") ? false : true,\n result\n );\n}\n__name(satisfy, \"satisfy\");\nAssertion.addMethod(\"satisfy\", satisfy);\nAssertion.addMethod(\"satisfies\", satisfy);\nfunction closeTo(expected, delta, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(obj, flagMsg, ssfi, true).is.numeric;\n let message = \"A `delta` value is required for `closeTo`\";\n if (delta == void 0) {\n throw new AssertionError(\n flagMsg ? `${flagMsg}: ${message}` : message,\n void 0,\n ssfi\n );\n }\n new Assertion(delta, flagMsg, ssfi, true).is.numeric;\n message = \"A `expected` value is required for `closeTo`\";\n if (expected == void 0) {\n throw new AssertionError(\n flagMsg ? `${flagMsg}: ${message}` : message,\n void 0,\n ssfi\n );\n }\n new Assertion(expected, flagMsg, ssfi, true).is.numeric;\n const abs = /* @__PURE__ */ __name((x) => x < 0n ? -x : x, \"abs\");\n const strip = /* @__PURE__ */ __name((number) => parseFloat(parseFloat(number).toPrecision(12)), \"strip\");\n this.assert(\n strip(abs(obj - expected)) <= delta,\n \"expected #{this} to be close to \" + expected + \" +/- \" + delta,\n \"expected #{this} not to be close to \" + expected + \" +/- \" + delta\n );\n}\n__name(closeTo, \"closeTo\");\nAssertion.addMethod(\"closeTo\", closeTo);\nAssertion.addMethod(\"approximately\", closeTo);\nfunction isSubsetOf(_subset, _superset, cmp, contains, ordered) {\n let superset = Array.from(_superset);\n let subset = Array.from(_subset);\n if (!contains) {\n if (subset.length !== superset.length) return false;\n superset = superset.slice();\n }\n return subset.every(function(elem, idx) {\n if (ordered) return cmp ? cmp(elem, superset[idx]) : elem === superset[idx];\n if (!cmp) {\n let matchIdx = superset.indexOf(elem);\n if (matchIdx === -1) return false;\n if (!contains) superset.splice(matchIdx, 1);\n return true;\n }\n return superset.some(function(elem2, matchIdx) {\n if (!cmp(elem, elem2)) return false;\n if (!contains) superset.splice(matchIdx, 1);\n return true;\n });\n });\n}\n__name(isSubsetOf, \"isSubsetOf\");\nAssertion.addMethod(\"members\", function(subset, msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(obj, flagMsg, ssfi, true).to.be.iterable;\n new Assertion(subset, flagMsg, ssfi, true).to.be.iterable;\n let contains = flag2(this, \"contains\");\n let ordered = flag2(this, \"ordered\");\n let subject, failMsg, failNegateMsg;\n if (contains) {\n subject = ordered ? \"an ordered superset\" : \"a superset\";\n failMsg = \"expected #{this} to be \" + subject + \" of #{exp}\";\n failNegateMsg = \"expected #{this} to not be \" + subject + \" of #{exp}\";\n } else {\n subject = ordered ? \"ordered members\" : \"members\";\n failMsg = \"expected #{this} to have the same \" + subject + \" as #{exp}\";\n failNegateMsg = \"expected #{this} to not have the same \" + subject + \" as #{exp}\";\n }\n let cmp = flag2(this, \"deep\") ? flag2(this, \"eql\") : void 0;\n this.assert(\n isSubsetOf(subset, obj, cmp, contains, ordered),\n failMsg,\n failNegateMsg,\n subset,\n obj,\n true\n );\n});\nAssertion.addProperty(\"iterable\", function(msg) {\n if (msg) flag2(this, \"message\", msg);\n let obj = flag2(this, \"object\");\n this.assert(\n obj != void 0 && obj[Symbol.iterator],\n \"expected #{this} to be an iterable\",\n \"expected #{this} to not be an iterable\",\n obj\n );\n});\nfunction oneOf(list, msg) {\n if (msg) flag2(this, \"message\", msg);\n let expected = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\"), contains = flag2(this, \"contains\"), isDeep = flag2(this, \"deep\"), eql = flag2(this, \"eql\");\n new Assertion(list, flagMsg, ssfi, true).to.be.an(\"array\");\n if (contains) {\n this.assert(\n list.some(function(possibility) {\n return expected.indexOf(possibility) > -1;\n }),\n \"expected #{this} to contain one of #{exp}\",\n \"expected #{this} to not contain one of #{exp}\",\n list,\n expected\n );\n } else {\n if (isDeep) {\n this.assert(\n list.some(function(possibility) {\n return eql(expected, possibility);\n }),\n \"expected #{this} to deeply equal one of #{exp}\",\n \"expected #{this} to deeply equal one of #{exp}\",\n list,\n expected\n );\n } else {\n this.assert(\n list.indexOf(expected) > -1,\n \"expected #{this} to be one of #{exp}\",\n \"expected #{this} to not be one of #{exp}\",\n list,\n expected\n );\n }\n }\n}\n__name(oneOf, \"oneOf\");\nAssertion.addMethod(\"oneOf\", oneOf);\nfunction assertChanges(subject, prop, msg) {\n if (msg) flag2(this, \"message\", msg);\n let fn = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(fn, flagMsg, ssfi, true).is.a(\"function\");\n let initial;\n if (!prop) {\n new Assertion(subject, flagMsg, ssfi, true).is.a(\"function\");\n initial = subject();\n } else {\n new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n initial = subject[prop];\n }\n fn();\n let final = prop === void 0 || prop === null ? subject() : subject[prop];\n let msgObj = prop === void 0 || prop === null ? initial : \".\" + prop;\n flag2(this, \"deltaMsgObj\", msgObj);\n flag2(this, \"initialDeltaValue\", initial);\n flag2(this, \"finalDeltaValue\", final);\n flag2(this, \"deltaBehavior\", \"change\");\n flag2(this, \"realDelta\", final !== initial);\n this.assert(\n initial !== final,\n \"expected \" + msgObj + \" to change\",\n \"expected \" + msgObj + \" to not change\"\n );\n}\n__name(assertChanges, \"assertChanges\");\nAssertion.addMethod(\"change\", assertChanges);\nAssertion.addMethod(\"changes\", assertChanges);\nfunction assertIncreases(subject, prop, msg) {\n if (msg) flag2(this, \"message\", msg);\n let fn = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(fn, flagMsg, ssfi, true).is.a(\"function\");\n let initial;\n if (!prop) {\n new Assertion(subject, flagMsg, ssfi, true).is.a(\"function\");\n initial = subject();\n } else {\n new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n initial = subject[prop];\n }\n new Assertion(initial, flagMsg, ssfi, true).is.a(\"number\");\n fn();\n let final = prop === void 0 || prop === null ? subject() : subject[prop];\n let msgObj = prop === void 0 || prop === null ? initial : \".\" + prop;\n flag2(this, \"deltaMsgObj\", msgObj);\n flag2(this, \"initialDeltaValue\", initial);\n flag2(this, \"finalDeltaValue\", final);\n flag2(this, \"deltaBehavior\", \"increase\");\n flag2(this, \"realDelta\", final - initial);\n this.assert(\n final - initial > 0,\n \"expected \" + msgObj + \" to increase\",\n \"expected \" + msgObj + \" to not increase\"\n );\n}\n__name(assertIncreases, \"assertIncreases\");\nAssertion.addMethod(\"increase\", assertIncreases);\nAssertion.addMethod(\"increases\", assertIncreases);\nfunction assertDecreases(subject, prop, msg) {\n if (msg) flag2(this, \"message\", msg);\n let fn = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n new Assertion(fn, flagMsg, ssfi, true).is.a(\"function\");\n let initial;\n if (!prop) {\n new Assertion(subject, flagMsg, ssfi, true).is.a(\"function\");\n initial = subject();\n } else {\n new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n initial = subject[prop];\n }\n new Assertion(initial, flagMsg, ssfi, true).is.a(\"number\");\n fn();\n let final = prop === void 0 || prop === null ? subject() : subject[prop];\n let msgObj = prop === void 0 || prop === null ? initial : \".\" + prop;\n flag2(this, \"deltaMsgObj\", msgObj);\n flag2(this, \"initialDeltaValue\", initial);\n flag2(this, \"finalDeltaValue\", final);\n flag2(this, \"deltaBehavior\", \"decrease\");\n flag2(this, \"realDelta\", initial - final);\n this.assert(\n final - initial < 0,\n \"expected \" + msgObj + \" to decrease\",\n \"expected \" + msgObj + \" to not decrease\"\n );\n}\n__name(assertDecreases, \"assertDecreases\");\nAssertion.addMethod(\"decrease\", assertDecreases);\nAssertion.addMethod(\"decreases\", assertDecreases);\nfunction assertDelta(delta, msg) {\n if (msg) flag2(this, \"message\", msg);\n let msgObj = flag2(this, \"deltaMsgObj\");\n let initial = flag2(this, \"initialDeltaValue\");\n let final = flag2(this, \"finalDeltaValue\");\n let behavior = flag2(this, \"deltaBehavior\");\n let realDelta = flag2(this, \"realDelta\");\n let expression;\n if (behavior === \"change\") {\n expression = Math.abs(final - initial) === Math.abs(delta);\n } else {\n expression = realDelta === Math.abs(delta);\n }\n this.assert(\n expression,\n \"expected \" + msgObj + \" to \" + behavior + \" by \" + delta,\n \"expected \" + msgObj + \" to not \" + behavior + \" by \" + delta\n );\n}\n__name(assertDelta, \"assertDelta\");\nAssertion.addMethod(\"by\", assertDelta);\nAssertion.addProperty(\"extensible\", function() {\n let obj = flag2(this, \"object\");\n let isExtensible = obj === Object(obj) && Object.isExtensible(obj);\n this.assert(\n isExtensible,\n \"expected #{this} to be extensible\",\n \"expected #{this} to not be extensible\"\n );\n});\nAssertion.addProperty(\"sealed\", function() {\n let obj = flag2(this, \"object\");\n let isSealed = obj === Object(obj) ? Object.isSealed(obj) : true;\n this.assert(\n isSealed,\n \"expected #{this} to be sealed\",\n \"expected #{this} to not be sealed\"\n );\n});\nAssertion.addProperty(\"frozen\", function() {\n let obj = flag2(this, \"object\");\n let isFrozen = obj === Object(obj) ? Object.isFrozen(obj) : true;\n this.assert(\n isFrozen,\n \"expected #{this} to be frozen\",\n \"expected #{this} to not be frozen\"\n );\n});\nAssertion.addProperty(\"finite\", function(_msg) {\n let obj = flag2(this, \"object\");\n this.assert(\n typeof obj === \"number\" && isFinite(obj),\n \"expected #{this} to be a finite number\",\n \"expected #{this} to not be a finite number\"\n );\n});\nfunction compareSubset(expected, actual) {\n if (expected === actual) {\n return true;\n }\n if (typeof actual !== typeof expected) {\n return false;\n }\n if (typeof expected !== \"object\" || expected === null) {\n return expected === actual;\n }\n if (!actual) {\n return false;\n }\n if (Array.isArray(expected)) {\n if (!Array.isArray(actual)) {\n return false;\n }\n return expected.every(function(exp) {\n return actual.some(function(act) {\n return compareSubset(exp, act);\n });\n });\n }\n if (expected instanceof Date) {\n if (actual instanceof Date) {\n return expected.getTime() === actual.getTime();\n } else {\n return false;\n }\n }\n return Object.keys(expected).every(function(key) {\n let expectedValue = expected[key];\n let actualValue = actual[key];\n if (typeof expectedValue === \"object\" && expectedValue !== null && actualValue !== null) {\n return compareSubset(expectedValue, actualValue);\n }\n if (typeof expectedValue === \"function\") {\n return expectedValue(actualValue);\n }\n return actualValue === expectedValue;\n });\n}\n__name(compareSubset, \"compareSubset\");\nAssertion.addMethod(\"containSubset\", function(expected) {\n const actual = flag(this, \"object\");\n const showDiff = config.showDiff;\n this.assert(\n compareSubset(expected, actual),\n \"expected #{act} to contain subset #{exp}\",\n \"expected #{act} to not contain subset #{exp}\",\n expected,\n actual,\n showDiff\n );\n});\n\n// lib/chai/interface/expect.js\nfunction expect(val, message) {\n return new Assertion(val, message);\n}\n__name(expect, \"expect\");\nexpect.fail = function(actual, expected, message, operator) {\n if (arguments.length < 2) {\n message = actual;\n actual = void 0;\n }\n message = message || \"expect.fail()\";\n throw new AssertionError(\n message,\n {\n actual,\n expected,\n operator\n },\n expect.fail\n );\n};\n\n// lib/chai/interface/should.js\nvar should_exports = {};\n__export(should_exports, {\n Should: () => Should,\n should: () => should\n});\nfunction loadShould() {\n function shouldGetter() {\n if (this instanceof String || this instanceof Number || this instanceof Boolean || typeof Symbol === \"function\" && this instanceof Symbol || typeof BigInt === \"function\" && this instanceof BigInt) {\n return new Assertion(this.valueOf(), null, shouldGetter);\n }\n return new Assertion(this, null, shouldGetter);\n }\n __name(shouldGetter, \"shouldGetter\");\n function shouldSetter(value) {\n Object.defineProperty(this, \"should\", {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n __name(shouldSetter, \"shouldSetter\");\n Object.defineProperty(Object.prototype, \"should\", {\n set: shouldSetter,\n get: shouldGetter,\n configurable: true\n });\n let should2 = {};\n should2.fail = function(actual, expected, message, operator) {\n if (arguments.length < 2) {\n message = actual;\n actual = void 0;\n }\n message = message || \"should.fail()\";\n throw new AssertionError(\n message,\n {\n actual,\n expected,\n operator\n },\n should2.fail\n );\n };\n should2.equal = function(actual, expected, message) {\n new Assertion(actual, message).to.equal(expected);\n };\n should2.Throw = function(fn, errt, errs, msg) {\n new Assertion(fn, msg).to.Throw(errt, errs);\n };\n should2.exist = function(val, msg) {\n new Assertion(val, msg).to.exist;\n };\n should2.not = {};\n should2.not.equal = function(actual, expected, msg) {\n new Assertion(actual, msg).to.not.equal(expected);\n };\n should2.not.Throw = function(fn, errt, errs, msg) {\n new Assertion(fn, msg).to.not.Throw(errt, errs);\n };\n should2.not.exist = function(val, msg) {\n new Assertion(val, msg).to.not.exist;\n };\n should2[\"throw\"] = should2[\"Throw\"];\n should2.not[\"throw\"] = should2.not[\"Throw\"];\n return should2;\n}\n__name(loadShould, \"loadShould\");\nvar should = loadShould;\nvar Should = loadShould;\n\n// lib/chai/interface/assert.js\nfunction assert(express, errmsg) {\n let test2 = new Assertion(null, null, assert, true);\n test2.assert(express, errmsg, \"[ negation message unavailable ]\");\n}\n__name(assert, \"assert\");\nassert.fail = function(actual, expected, message, operator) {\n if (arguments.length < 2) {\n message = actual;\n actual = void 0;\n }\n message = message || \"assert.fail()\";\n throw new AssertionError(\n message,\n {\n actual,\n expected,\n operator\n },\n assert.fail\n );\n};\nassert.isOk = function(val, msg) {\n new Assertion(val, msg, assert.isOk, true).is.ok;\n};\nassert.isNotOk = function(val, msg) {\n new Assertion(val, msg, assert.isNotOk, true).is.not.ok;\n};\nassert.equal = function(act, exp, msg) {\n let test2 = new Assertion(act, msg, assert.equal, true);\n test2.assert(\n exp == flag(test2, \"object\"),\n \"expected #{this} to equal #{exp}\",\n \"expected #{this} to not equal #{act}\",\n exp,\n act,\n true\n );\n};\nassert.notEqual = function(act, exp, msg) {\n let test2 = new Assertion(act, msg, assert.notEqual, true);\n test2.assert(\n exp != flag(test2, \"object\"),\n \"expected #{this} to not equal #{exp}\",\n \"expected #{this} to equal #{act}\",\n exp,\n act,\n true\n );\n};\nassert.strictEqual = function(act, exp, msg) {\n new Assertion(act, msg, assert.strictEqual, true).to.equal(exp);\n};\nassert.notStrictEqual = function(act, exp, msg) {\n new Assertion(act, msg, assert.notStrictEqual, true).to.not.equal(exp);\n};\nassert.deepEqual = assert.deepStrictEqual = function(act, exp, msg) {\n new Assertion(act, msg, assert.deepEqual, true).to.eql(exp);\n};\nassert.notDeepEqual = function(act, exp, msg) {\n new Assertion(act, msg, assert.notDeepEqual, true).to.not.eql(exp);\n};\nassert.isAbove = function(val, abv, msg) {\n new Assertion(val, msg, assert.isAbove, true).to.be.above(abv);\n};\nassert.isAtLeast = function(val, atlst, msg) {\n new Assertion(val, msg, assert.isAtLeast, true).to.be.least(atlst);\n};\nassert.isBelow = function(val, blw, msg) {\n new Assertion(val, msg, assert.isBelow, true).to.be.below(blw);\n};\nassert.isAtMost = function(val, atmst, msg) {\n new Assertion(val, msg, assert.isAtMost, true).to.be.most(atmst);\n};\nassert.isTrue = function(val, msg) {\n new Assertion(val, msg, assert.isTrue, true).is[\"true\"];\n};\nassert.isNotTrue = function(val, msg) {\n new Assertion(val, msg, assert.isNotTrue, true).to.not.equal(true);\n};\nassert.isFalse = function(val, msg) {\n new Assertion(val, msg, assert.isFalse, true).is[\"false\"];\n};\nassert.isNotFalse = function(val, msg) {\n new Assertion(val, msg, assert.isNotFalse, true).to.not.equal(false);\n};\nassert.isNull = function(val, msg) {\n new Assertion(val, msg, assert.isNull, true).to.equal(null);\n};\nassert.isNotNull = function(val, msg) {\n new Assertion(val, msg, assert.isNotNull, true).to.not.equal(null);\n};\nassert.isNaN = function(val, msg) {\n new Assertion(val, msg, assert.isNaN, true).to.be.NaN;\n};\nassert.isNotNaN = function(value, message) {\n new Assertion(value, message, assert.isNotNaN, true).not.to.be.NaN;\n};\nassert.exists = function(val, msg) {\n new Assertion(val, msg, assert.exists, true).to.exist;\n};\nassert.notExists = function(val, msg) {\n new Assertion(val, msg, assert.notExists, true).to.not.exist;\n};\nassert.isUndefined = function(val, msg) {\n new Assertion(val, msg, assert.isUndefined, true).to.equal(void 0);\n};\nassert.isDefined = function(val, msg) {\n new Assertion(val, msg, assert.isDefined, true).to.not.equal(void 0);\n};\nassert.isCallable = function(value, message) {\n new Assertion(value, message, assert.isCallable, true).is.callable;\n};\nassert.isNotCallable = function(value, message) {\n new Assertion(value, message, assert.isNotCallable, true).is.not.callable;\n};\nassert.isObject = function(val, msg) {\n new Assertion(val, msg, assert.isObject, true).to.be.a(\"object\");\n};\nassert.isNotObject = function(val, msg) {\n new Assertion(val, msg, assert.isNotObject, true).to.not.be.a(\"object\");\n};\nassert.isArray = function(val, msg) {\n new Assertion(val, msg, assert.isArray, true).to.be.an(\"array\");\n};\nassert.isNotArray = function(val, msg) {\n new Assertion(val, msg, assert.isNotArray, true).to.not.be.an(\"array\");\n};\nassert.isString = function(val, msg) {\n new Assertion(val, msg, assert.isString, true).to.be.a(\"string\");\n};\nassert.isNotString = function(val, msg) {\n new Assertion(val, msg, assert.isNotString, true).to.not.be.a(\"string\");\n};\nassert.isNumber = function(val, msg) {\n new Assertion(val, msg, assert.isNumber, true).to.be.a(\"number\");\n};\nassert.isNotNumber = function(val, msg) {\n new Assertion(val, msg, assert.isNotNumber, true).to.not.be.a(\"number\");\n};\nassert.isNumeric = function(val, msg) {\n new Assertion(val, msg, assert.isNumeric, true).is.numeric;\n};\nassert.isNotNumeric = function(val, msg) {\n new Assertion(val, msg, assert.isNotNumeric, true).is.not.numeric;\n};\nassert.isFinite = function(val, msg) {\n new Assertion(val, msg, assert.isFinite, true).to.be.finite;\n};\nassert.isBoolean = function(val, msg) {\n new Assertion(val, msg, assert.isBoolean, true).to.be.a(\"boolean\");\n};\nassert.isNotBoolean = function(val, msg) {\n new Assertion(val, msg, assert.isNotBoolean, true).to.not.be.a(\"boolean\");\n};\nassert.typeOf = function(val, type3, msg) {\n new Assertion(val, msg, assert.typeOf, true).to.be.a(type3);\n};\nassert.notTypeOf = function(value, type3, message) {\n new Assertion(value, message, assert.notTypeOf, true).to.not.be.a(type3);\n};\nassert.instanceOf = function(val, type3, msg) {\n new Assertion(val, msg, assert.instanceOf, true).to.be.instanceOf(type3);\n};\nassert.notInstanceOf = function(val, type3, msg) {\n new Assertion(val, msg, assert.notInstanceOf, true).to.not.be.instanceOf(\n type3\n );\n};\nassert.include = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.include, true).include(inc);\n};\nassert.notInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notInclude, true).not.include(inc);\n};\nassert.deepInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.deepInclude, true).deep.include(inc);\n};\nassert.notDeepInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notDeepInclude, true).not.deep.include(inc);\n};\nassert.nestedInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.nestedInclude, true).nested.include(inc);\n};\nassert.notNestedInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notNestedInclude, true).not.nested.include(\n inc\n );\n};\nassert.deepNestedInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.deepNestedInclude, true).deep.nested.include(\n inc\n );\n};\nassert.notDeepNestedInclude = function(exp, inc, msg) {\n new Assertion(\n exp,\n msg,\n assert.notDeepNestedInclude,\n true\n ).not.deep.nested.include(inc);\n};\nassert.ownInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.ownInclude, true).own.include(inc);\n};\nassert.notOwnInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notOwnInclude, true).not.own.include(inc);\n};\nassert.deepOwnInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.deepOwnInclude, true).deep.own.include(inc);\n};\nassert.notDeepOwnInclude = function(exp, inc, msg) {\n new Assertion(exp, msg, assert.notDeepOwnInclude, true).not.deep.own.include(\n inc\n );\n};\nassert.match = function(exp, re, msg) {\n new Assertion(exp, msg, assert.match, true).to.match(re);\n};\nassert.notMatch = function(exp, re, msg) {\n new Assertion(exp, msg, assert.notMatch, true).to.not.match(re);\n};\nassert.property = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.property, true).to.have.property(prop);\n};\nassert.notProperty = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.notProperty, true).to.not.have.property(prop);\n};\nassert.propertyVal = function(obj, prop, val, msg) {\n new Assertion(obj, msg, assert.propertyVal, true).to.have.property(prop, val);\n};\nassert.notPropertyVal = function(obj, prop, val, msg) {\n new Assertion(obj, msg, assert.notPropertyVal, true).to.not.have.property(\n prop,\n val\n );\n};\nassert.deepPropertyVal = function(obj, prop, val, msg) {\n new Assertion(obj, msg, assert.deepPropertyVal, true).to.have.deep.property(\n prop,\n val\n );\n};\nassert.notDeepPropertyVal = function(obj, prop, val, msg) {\n new Assertion(\n obj,\n msg,\n assert.notDeepPropertyVal,\n true\n ).to.not.have.deep.property(prop, val);\n};\nassert.ownProperty = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.ownProperty, true).to.have.own.property(prop);\n};\nassert.notOwnProperty = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.notOwnProperty, true).to.not.have.own.property(\n prop\n );\n};\nassert.ownPropertyVal = function(obj, prop, value, msg) {\n new Assertion(obj, msg, assert.ownPropertyVal, true).to.have.own.property(\n prop,\n value\n );\n};\nassert.notOwnPropertyVal = function(obj, prop, value, msg) {\n new Assertion(\n obj,\n msg,\n assert.notOwnPropertyVal,\n true\n ).to.not.have.own.property(prop, value);\n};\nassert.deepOwnPropertyVal = function(obj, prop, value, msg) {\n new Assertion(\n obj,\n msg,\n assert.deepOwnPropertyVal,\n true\n ).to.have.deep.own.property(prop, value);\n};\nassert.notDeepOwnPropertyVal = function(obj, prop, value, msg) {\n new Assertion(\n obj,\n msg,\n assert.notDeepOwnPropertyVal,\n true\n ).to.not.have.deep.own.property(prop, value);\n};\nassert.nestedProperty = function(obj, prop, msg) {\n new Assertion(obj, msg, assert.nestedProperty, true).to.have.nested.property(\n prop\n );\n};\nassert.notNestedProperty = function(obj, prop, msg) {\n new Assertion(\n obj,\n msg,\n assert.notNestedProperty,\n true\n ).to.not.have.nested.property(prop);\n};\nassert.nestedPropertyVal = function(obj, prop, val, msg) {\n new Assertion(\n obj,\n msg,\n assert.nestedPropertyVal,\n true\n ).to.have.nested.property(prop, val);\n};\nassert.notNestedPropertyVal = function(obj, prop, val, msg) {\n new Assertion(\n obj,\n msg,\n assert.notNestedPropertyVal,\n true\n ).to.not.have.nested.property(prop, val);\n};\nassert.deepNestedPropertyVal = function(obj, prop, val, msg) {\n new Assertion(\n obj,\n msg,\n assert.deepNestedPropertyVal,\n true\n ).to.have.deep.nested.property(prop, val);\n};\nassert.notDeepNestedPropertyVal = function(obj, prop, val, msg) {\n new Assertion(\n obj,\n msg,\n assert.notDeepNestedPropertyVal,\n true\n ).to.not.have.deep.nested.property(prop, val);\n};\nassert.lengthOf = function(exp, len, msg) {\n new Assertion(exp, msg, assert.lengthOf, true).to.have.lengthOf(len);\n};\nassert.hasAnyKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAnyKeys, true).to.have.any.keys(keys);\n};\nassert.hasAllKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAllKeys, true).to.have.all.keys(keys);\n};\nassert.containsAllKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.containsAllKeys, true).to.contain.all.keys(\n keys\n );\n};\nassert.doesNotHaveAnyKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAnyKeys, true).to.not.have.any.keys(\n keys\n );\n};\nassert.doesNotHaveAllKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.doesNotHaveAllKeys, true).to.not.have.all.keys(\n keys\n );\n};\nassert.hasAnyDeepKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAnyDeepKeys, true).to.have.any.deep.keys(\n keys\n );\n};\nassert.hasAllDeepKeys = function(obj, keys, msg) {\n new Assertion(obj, msg, assert.hasAllDeepKeys, true).to.have.all.deep.keys(\n keys\n );\n};\nassert.containsAllDeepKeys = function(obj, keys, msg) {\n new Assertion(\n obj,\n msg,\n assert.containsAllDeepKeys,\n true\n ).to.contain.all.deep.keys(keys);\n};\nassert.doesNotHaveAnyDeepKeys = function(obj, keys, msg) {\n new Assertion(\n obj,\n msg,\n assert.doesNotHaveAnyDeepKeys,\n true\n ).to.not.have.any.deep.keys(keys);\n};\nassert.doesNotHaveAllDeepKeys = function(obj, keys, msg) {\n new Assertion(\n obj,\n msg,\n assert.doesNotHaveAllDeepKeys,\n true\n ).to.not.have.all.deep.keys(keys);\n};\nassert.throws = function(fn, errorLike, errMsgMatcher, msg) {\n if (\"string\" === typeof errorLike || errorLike instanceof RegExp) {\n errMsgMatcher = errorLike;\n errorLike = null;\n }\n let assertErr = new Assertion(fn, msg, assert.throws, true).to.throw(\n errorLike,\n errMsgMatcher\n );\n return flag(assertErr, \"object\");\n};\nassert.doesNotThrow = function(fn, errorLike, errMsgMatcher, message) {\n if (\"string\" === typeof errorLike || errorLike instanceof RegExp) {\n errMsgMatcher = errorLike;\n errorLike = null;\n }\n new Assertion(fn, message, assert.doesNotThrow, true).to.not.throw(\n errorLike,\n errMsgMatcher\n );\n};\nassert.operator = function(val, operator, val2, msg) {\n let ok;\n switch (operator) {\n case \"==\":\n ok = val == val2;\n break;\n case \"===\":\n ok = val === val2;\n break;\n case \">\":\n ok = val > val2;\n break;\n case \">=\":\n ok = val >= val2;\n break;\n case \"<\":\n ok = val < val2;\n break;\n case \"<=\":\n ok = val <= val2;\n break;\n case \"!=\":\n ok = val != val2;\n break;\n case \"!==\":\n ok = val !== val2;\n break;\n default:\n msg = msg ? msg + \": \" : msg;\n throw new AssertionError(\n msg + 'Invalid operator \"' + operator + '\"',\n void 0,\n assert.operator\n );\n }\n let test2 = new Assertion(ok, msg, assert.operator, true);\n test2.assert(\n true === flag(test2, \"object\"),\n \"expected \" + inspect2(val) + \" to be \" + operator + \" \" + inspect2(val2),\n \"expected \" + inspect2(val) + \" to not be \" + operator + \" \" + inspect2(val2)\n );\n};\nassert.closeTo = function(act, exp, delta, msg) {\n new Assertion(act, msg, assert.closeTo, true).to.be.closeTo(exp, delta);\n};\nassert.approximately = function(act, exp, delta, msg) {\n new Assertion(act, msg, assert.approximately, true).to.be.approximately(\n exp,\n delta\n );\n};\nassert.sameMembers = function(set1, set2, msg) {\n new Assertion(set1, msg, assert.sameMembers, true).to.have.same.members(set2);\n};\nassert.notSameMembers = function(set1, set2, msg) {\n new Assertion(\n set1,\n msg,\n assert.notSameMembers,\n true\n ).to.not.have.same.members(set2);\n};\nassert.sameDeepMembers = function(set1, set2, msg) {\n new Assertion(\n set1,\n msg,\n assert.sameDeepMembers,\n true\n ).to.have.same.deep.members(set2);\n};\nassert.notSameDeepMembers = function(set1, set2, msg) {\n new Assertion(\n set1,\n msg,\n assert.notSameDeepMembers,\n true\n ).to.not.have.same.deep.members(set2);\n};\nassert.sameOrderedMembers = function(set1, set2, msg) {\n new Assertion(\n set1,\n msg,\n assert.sameOrderedMembers,\n true\n ).to.have.same.ordered.members(set2);\n};\nassert.notSameOrderedMembers = function(set1, set2, msg) {\n new Assertion(\n set1,\n msg,\n assert.notSameOrderedMembers,\n true\n ).to.not.have.same.ordered.members(set2);\n};\nassert.sameDeepOrderedMembers = function(set1, set2, msg) {\n new Assertion(\n set1,\n msg,\n assert.sameDeepOrderedMembers,\n true\n ).to.have.same.deep.ordered.members(set2);\n};\nassert.notSameDeepOrderedMembers = function(set1, set2, msg) {\n new Assertion(\n set1,\n msg,\n assert.notSameDeepOrderedMembers,\n true\n ).to.not.have.same.deep.ordered.members(set2);\n};\nassert.includeMembers = function(superset, subset, msg) {\n new Assertion(superset, msg, assert.includeMembers, true).to.include.members(\n subset\n );\n};\nassert.notIncludeMembers = function(superset, subset, msg) {\n new Assertion(\n superset,\n msg,\n assert.notIncludeMembers,\n true\n ).to.not.include.members(subset);\n};\nassert.includeDeepMembers = function(superset, subset, msg) {\n new Assertion(\n superset,\n msg,\n assert.includeDeepMembers,\n true\n ).to.include.deep.members(subset);\n};\nassert.notIncludeDeepMembers = function(superset, subset, msg) {\n new Assertion(\n superset,\n msg,\n assert.notIncludeDeepMembers,\n true\n ).to.not.include.deep.members(subset);\n};\nassert.includeOrderedMembers = function(superset, subset, msg) {\n new Assertion(\n superset,\n msg,\n assert.includeOrderedMembers,\n true\n ).to.include.ordered.members(subset);\n};\nassert.notIncludeOrderedMembers = function(superset, subset, msg) {\n new Assertion(\n superset,\n msg,\n assert.notIncludeOrderedMembers,\n true\n ).to.not.include.ordered.members(subset);\n};\nassert.includeDeepOrderedMembers = function(superset, subset, msg) {\n new Assertion(\n superset,\n msg,\n assert.includeDeepOrderedMembers,\n true\n ).to.include.deep.ordered.members(subset);\n};\nassert.notIncludeDeepOrderedMembers = function(superset, subset, msg) {\n new Assertion(\n superset,\n msg,\n assert.notIncludeDeepOrderedMembers,\n true\n ).to.not.include.deep.ordered.members(subset);\n};\nassert.oneOf = function(inList, list, msg) {\n new Assertion(inList, msg, assert.oneOf, true).to.be.oneOf(list);\n};\nassert.isIterable = function(obj, msg) {\n if (obj == void 0 || !obj[Symbol.iterator]) {\n msg = msg ? `${msg} expected ${inspect2(obj)} to be an iterable` : `expected ${inspect2(obj)} to be an iterable`;\n throw new AssertionError(msg, void 0, assert.isIterable);\n }\n};\nassert.changes = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.changes, true).to.change(obj, prop);\n};\nassert.changesBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n let tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.changesBy, true).to.change(obj, prop).by(delta);\n};\nassert.doesNotChange = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.doesNotChange, true).to.not.change(\n obj,\n prop\n );\n};\nassert.changesButNotBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n let tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.changesButNotBy, true).to.change(obj, prop).but.not.by(delta);\n};\nassert.increases = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.increases, true).to.increase(obj, prop);\n};\nassert.increasesBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n let tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.increasesBy, true).to.increase(obj, prop).by(delta);\n};\nassert.doesNotIncrease = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.doesNotIncrease, true).to.not.increase(\n obj,\n prop\n );\n};\nassert.increasesButNotBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n let tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.increasesButNotBy, true).to.increase(obj, prop).but.not.by(delta);\n};\nassert.decreases = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.decreases, true).to.decrease(obj, prop);\n};\nassert.decreasesBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n let tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.decreasesBy, true).to.decrease(obj, prop).by(delta);\n};\nassert.doesNotDecrease = function(fn, obj, prop, msg) {\n if (arguments.length === 3 && typeof obj === \"function\") {\n msg = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.doesNotDecrease, true).to.not.decrease(\n obj,\n prop\n );\n};\nassert.doesNotDecreaseBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n let tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n return new Assertion(fn, msg, assert.doesNotDecreaseBy, true).to.not.decrease(obj, prop).by(delta);\n};\nassert.decreasesButNotBy = function(fn, obj, prop, delta, msg) {\n if (arguments.length === 4 && typeof obj === \"function\") {\n let tmpMsg = delta;\n delta = prop;\n msg = tmpMsg;\n } else if (arguments.length === 3) {\n delta = prop;\n prop = null;\n }\n new Assertion(fn, msg, assert.decreasesButNotBy, true).to.decrease(obj, prop).but.not.by(delta);\n};\nassert.ifError = function(val) {\n if (val) {\n throw val;\n }\n};\nassert.isExtensible = function(obj, msg) {\n new Assertion(obj, msg, assert.isExtensible, true).to.be.extensible;\n};\nassert.isNotExtensible = function(obj, msg) {\n new Assertion(obj, msg, assert.isNotExtensible, true).to.not.be.extensible;\n};\nassert.isSealed = function(obj, msg) {\n new Assertion(obj, msg, assert.isSealed, true).to.be.sealed;\n};\nassert.isNotSealed = function(obj, msg) {\n new Assertion(obj, msg, assert.isNotSealed, true).to.not.be.sealed;\n};\nassert.isFrozen = function(obj, msg) {\n new Assertion(obj, msg, assert.isFrozen, true).to.be.frozen;\n};\nassert.isNotFrozen = function(obj, msg) {\n new Assertion(obj, msg, assert.isNotFrozen, true).to.not.be.frozen;\n};\nassert.isEmpty = function(val, msg) {\n new Assertion(val, msg, assert.isEmpty, true).to.be.empty;\n};\nassert.isNotEmpty = function(val, msg) {\n new Assertion(val, msg, assert.isNotEmpty, true).to.not.be.empty;\n};\nassert.containsSubset = function(val, exp, msg) {\n new Assertion(val, msg).to.containSubset(exp);\n};\nassert.doesNotContainSubset = function(val, exp, msg) {\n new Assertion(val, msg).to.not.containSubset(exp);\n};\nvar aliases = [\n [\"isOk\", \"ok\"],\n [\"isNotOk\", \"notOk\"],\n [\"throws\", \"throw\"],\n [\"throws\", \"Throw\"],\n [\"isExtensible\", \"extensible\"],\n [\"isNotExtensible\", \"notExtensible\"],\n [\"isSealed\", \"sealed\"],\n [\"isNotSealed\", \"notSealed\"],\n [\"isFrozen\", \"frozen\"],\n [\"isNotFrozen\", \"notFrozen\"],\n [\"isEmpty\", \"empty\"],\n [\"isNotEmpty\", \"notEmpty\"],\n [\"isCallable\", \"isFunction\"],\n [\"isNotCallable\", \"isNotFunction\"],\n [\"containsSubset\", \"containSubset\"]\n];\nfor (const [name, as] of aliases) {\n assert[as] = assert[name];\n}\n\n// lib/chai.js\nvar used = [];\nfunction use(fn) {\n const exports = {\n use,\n AssertionError,\n util: utils_exports,\n config,\n expect,\n assert,\n Assertion,\n ...should_exports\n };\n if (!~used.indexOf(fn)) {\n fn(exports, utils_exports);\n used.push(fn);\n }\n return exports;\n}\n__name(use, \"use\");\nexport {\n Assertion,\n AssertionError,\n Should,\n assert,\n config,\n expect,\n should,\n use,\n utils_exports as util\n};\n/*!\n * Chai - flag utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - test utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - expectTypes utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - getActual utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - message composition utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - transferFlags utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * chai\n * http://chaijs.com\n * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - isProxyEnabled helper\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - addProperty utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - addLengthGuard utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - getProperties utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - proxify utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - addMethod utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - overwriteProperty utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - overwriteMethod utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - addChainingMethod utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - overwriteChainableMethod utility\n * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - compareByInspect utility\n * Copyright(c) 2011-2016 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - getOwnEnumerablePropertySymbols utility\n * Copyright(c) 2011-2016 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - getOwnEnumerableProperties utility\n * Copyright(c) 2011-2016 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * Chai - isNaN utility\n * Copyright(c) 2012-2015 Sakthipriyan Vairamani <thechargingvolcano@gmail.com>\n * MIT Licensed\n */\n/*!\n * chai\n * Copyright(c) 2011 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*!\n * chai\n * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n */\n/*! Bundled license information:\n\ndeep-eql/index.js:\n (*!\n * deep-eql\n * Copyright(c) 2013 Jake Luer <jake@alogicalparadox.com>\n * MIT Licensed\n *)\n (*!\n * Check to see if the MemoizeMap has recorded a result of the two operands\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {MemoizeMap} memoizeMap\n * @returns {Boolean|null} result\n *)\n (*!\n * Set the result of the equality into the MemoizeMap\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {MemoizeMap} memoizeMap\n * @param {Boolean} result\n *)\n (*!\n * Primary Export\n *)\n (*!\n * The main logic of the `deepEqual` function.\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {Object} [options] (optional) Additional options\n * @param {Array} [options.comparator] (optional) Override default algorithm, determining custom equality.\n * @param {Array} [options.memoize] (optional) Provide a custom memoization object which will cache the results of\n complex objects for a speed boost. By passing `false` you can disable memoization, but this will cause circular\n references to blow the stack.\n * @return {Boolean} equal match\n *)\n (*!\n * Compare two Regular Expressions for equality.\n *\n * @param {RegExp} leftHandOperand\n * @param {RegExp} rightHandOperand\n * @return {Boolean} result\n *)\n (*!\n * Compare two Sets/Maps for equality. Faster than other equality functions.\n *\n * @param {Set} leftHandOperand\n * @param {Set} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n *)\n (*!\n * Simple equality for flat iterable objects such as Arrays, TypedArrays or Node.js buffers.\n *\n * @param {Iterable} leftHandOperand\n * @param {Iterable} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n *)\n (*!\n * Simple equality for generator objects such as those returned by generator functions.\n *\n * @param {Iterable} leftHandOperand\n * @param {Iterable} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n *)\n (*!\n * Determine if the given object has an @@iterator function.\n *\n * @param {Object} target\n * @return {Boolean} `true` if the object has an @@iterator function.\n *)\n (*!\n * Gets all iterator entries from the given Object. If the Object has no @@iterator function, returns an empty array.\n * This will consume the iterator - which could have side effects depending on the @@iterator implementation.\n *\n * @param {Object} target\n * @returns {Array} an array of entries from the @@iterator function\n *)\n (*!\n * Gets all entries from a Generator. This will consume the generator - which could have side effects.\n *\n * @param {Generator} target\n * @returns {Array} an array of entries from the Generator.\n *)\n (*!\n * Gets all own and inherited enumerable keys from a target.\n *\n * @param {Object} target\n * @returns {Array} an array of own and inherited enumerable keys from the target.\n *)\n (*!\n * Determines if two objects have matching values, given a set of keys. Defers to deepEqual for the equality check of\n * each key. If any value of the given key is not equal, the function will return false (early).\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {Array} keys An array of keys to compare the values of leftHandOperand and rightHandOperand against\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n *)\n (*!\n * Recursively check the equality of two Objects. Once basic sameness has been established it will defer to `deepEqual`\n * for each enumerable key in the object.\n *\n * @param {Mixed} leftHandOperand\n * @param {Mixed} rightHandOperand\n * @param {Object} [options] (Optional)\n * @return {Boolean} result\n *)\n (*!\n * Returns true if the argument is a primitive.\n *\n * This intentionally returns true for all objects that can be compared by reference,\n * including functions and symbols.\n *\n * @param {Mixed} value\n * @return {Boolean} result\n *)\n*/\n","function isErrorInstance(obj) {\n // eslint-disable-next-line prefer-reflect\n return obj instanceof Error || Object.prototype.toString.call(obj) === '[object Error]';\n}\n\nfunction isRegExp(obj) {\n // eslint-disable-next-line prefer-reflect\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\n\n/**\n * ### .compatibleInstance(thrown, errorLike)\n *\n * Checks if two instances are compatible (strict equal).\n * Returns false if errorLike is not an instance of Error, because instances\n * can only be compatible if they're both error instances.\n *\n * @name compatibleInstance\n * @param {Error} thrown error\n * @param {Error|ErrorConstructor} errorLike object to compare against\n * @namespace Utils\n * @api public\n */\n\nfunction compatibleInstance(thrown, errorLike) {\n return isErrorInstance(errorLike) && thrown === errorLike;\n}\n\n/**\n * ### .compatibleConstructor(thrown, errorLike)\n *\n * Checks if two constructors are compatible.\n * This function can receive either an error constructor or\n * an error instance as the `errorLike` argument.\n * Constructors are compatible if they're the same or if one is\n * an instance of another.\n *\n * @name compatibleConstructor\n * @param {Error} thrown error\n * @param {Error|ErrorConstructor} errorLike object to compare against\n * @namespace Utils\n * @api public\n */\n\nfunction compatibleConstructor(thrown, errorLike) {\n if (isErrorInstance(errorLike)) {\n // If `errorLike` is an instance of any error we compare their constructors\n return thrown.constructor === errorLike.constructor || thrown instanceof errorLike.constructor;\n } else if ((typeof errorLike === 'object' || typeof errorLike === 'function') && errorLike.prototype) {\n // If `errorLike` is a constructor that inherits from Error, we compare `thrown` to `errorLike` directly\n return thrown.constructor === errorLike || thrown instanceof errorLike;\n }\n\n return false;\n}\n\n/**\n * ### .compatibleMessage(thrown, errMatcher)\n *\n * Checks if an error's message is compatible with a matcher (String or RegExp).\n * If the message contains the String or passes the RegExp test,\n * it is considered compatible.\n *\n * @name compatibleMessage\n * @param {Error} thrown error\n * @param {String|RegExp} errMatcher to look for into the message\n * @namespace Utils\n * @api public\n */\n\nfunction compatibleMessage(thrown, errMatcher) {\n const comparisonString = typeof thrown === 'string' ? thrown : thrown.message;\n if (isRegExp(errMatcher)) {\n return errMatcher.test(comparisonString);\n } else if (typeof errMatcher === 'string') {\n return comparisonString.indexOf(errMatcher) !== -1; // eslint-disable-line no-magic-numbers\n }\n\n return false;\n}\n\n/**\n * ### .getConstructorName(errorLike)\n *\n * Gets the constructor name for an Error instance or constructor itself.\n *\n * @name getConstructorName\n * @param {Error|ErrorConstructor} errorLike\n * @namespace Utils\n * @api public\n */\n\nfunction getConstructorName(errorLike) {\n let constructorName = errorLike;\n if (isErrorInstance(errorLike)) {\n constructorName = errorLike.constructor.name;\n } else if (typeof errorLike === 'function') {\n // If `err` is not an instance of Error it is an error constructor itself or another function.\n // If we've got a common function we get its name, otherwise we may need to create a new instance\n // of the error just in case it's a poorly-constructed error. Please see chaijs/chai/issues/45 to know more.\n constructorName = errorLike.name;\n if (constructorName === '') {\n const newConstructorName = (new errorLike().name); // eslint-disable-line new-cap\n constructorName = newConstructorName || constructorName;\n }\n }\n\n return constructorName;\n}\n\n/**\n * ### .getMessage(errorLike)\n *\n * Gets the error message from an error.\n * If `err` is a String itself, we return it.\n * If the error has no message, we return an empty string.\n *\n * @name getMessage\n * @param {Error|String} errorLike\n * @namespace Utils\n * @api public\n */\n\nfunction getMessage(errorLike) {\n let msg = '';\n if (errorLike && errorLike.message) {\n msg = errorLike.message;\n } else if (typeof errorLike === 'string') {\n msg = errorLike;\n }\n\n return msg;\n}\n\nexport { compatibleInstance, compatibleConstructor, compatibleMessage, getMessage, getConstructorName };\n","import * as checkErrorDefault from 'check-error';\n\nlet checkError = checkErrorDefault;\n\nexport default function (chai, utils) {\n const Assertion = chai.Assertion;\n const assert = chai.assert;\n const proxify = utils.proxify;\n\n // If we are using a version of Chai that has checkError on it,\n // we want to use that version to be consistent. Otherwise, we use\n // what was passed to the factory.\n if (utils.checkError) {\n checkError = utils.checkError;\n }\n\n function isLegacyJQueryPromise(thenable) {\n // jQuery promises are Promises/A+-compatible since 3.0.0. jQuery 3.0.0 is also the first version\n // to define the catch method.\n return (\n typeof thenable.catch !== 'function' &&\n typeof thenable.always === 'function' &&\n typeof thenable.done === 'function' &&\n typeof thenable.fail === 'function' &&\n typeof thenable.pipe === 'function' &&\n typeof thenable.progress === 'function' &&\n typeof thenable.state === 'function'\n );\n }\n\n function assertIsAboutPromise(assertion) {\n if (typeof assertion._obj.then !== 'function') {\n throw new TypeError(\n utils.inspect(assertion._obj) + ' is not a thenable.'\n );\n }\n if (isLegacyJQueryPromise(assertion._obj)) {\n throw new TypeError(\n 'Chai as Promised is incompatible with thenables of jQuery<3.0.0, sorry! Please ' +\n 'upgrade jQuery or use another Promises/A+ compatible library (see ' +\n 'http://promisesaplus.com/).'\n );\n }\n }\n\n function proxifyIfSupported(assertion) {\n return proxify === undefined ? assertion : proxify(assertion);\n }\n\n function method(name, asserter) {\n utils.addMethod(Assertion.prototype, name, function () {\n assertIsAboutPromise(this);\n return asserter.apply(this, arguments);\n });\n }\n\n function property(name, asserter) {\n utils.addProperty(Assertion.prototype, name, function () {\n assertIsAboutPromise(this);\n return proxifyIfSupported(asserter.apply(this, arguments));\n });\n }\n\n function doNotify(promise, done) {\n promise.then(() => done(), done);\n }\n\n // These are for clarity and to bypass Chai refusing to allow `undefined` as actual when used with `assert`.\n function assertIfNegated(assertion, message, extra) {\n assertion.assert(true, null, message, extra.expected, extra.actual);\n }\n\n function assertIfNotNegated(assertion, message, extra) {\n assertion.assert(false, message, null, extra.expected, extra.actual);\n }\n\n function getBasePromise(assertion) {\n // We need to chain subsequent asserters on top of ones in the chain already (consider\n // `eventually.have.property(\"foo\").that.equals(\"bar\")`), only running them after the existing ones pass.\n // So the first base-promise is `assertion._obj`, but after that we use the assertions themselves, i.e.\n // previously derived promises, to chain off of.\n return typeof assertion.then === 'function' ? assertion : assertion._obj;\n }\n\n function getReasonName(reason) {\n return reason instanceof Error\n ? reason.toString()\n : checkError.getConstructorName(reason);\n }\n\n // Grab these first, before we modify `Assertion.prototype`.\n\n const propertyNames = Object.getOwnPropertyNames(Assertion.prototype);\n\n const propertyDescs = {};\n for (const name of propertyNames) {\n propertyDescs[name] = Object.getOwnPropertyDescriptor(\n Assertion.prototype,\n name\n );\n }\n\n property('fulfilled', function () {\n const derivedPromise = getBasePromise(this).then(\n (value) => {\n assertIfNegated(\n this,\n 'expected promise not to be fulfilled but it was fulfilled with #{act}',\n {actual: value}\n );\n return value;\n },\n (reason) => {\n assertIfNotNegated(\n this,\n 'expected promise to be fulfilled but it was rejected with #{act}',\n {actual: getReasonName(reason)}\n );\n return reason;\n }\n );\n\n transferPromiseness(this, derivedPromise);\n return this;\n });\n\n property('rejected', function () {\n const derivedPromise = getBasePromise(this).then(\n (value) => {\n assertIfNotNegated(\n this,\n 'expected promise to be rejected but it was fulfilled with #{act}',\n {actual: value}\n );\n return value;\n },\n (reason) => {\n assertIfNegated(\n this,\n 'expected promise not to be rejected but it was rejected with #{act}',\n {actual: getReasonName(reason)}\n );\n\n // Return the reason, transforming this into a fulfillment, to allow further assertions, e.g.\n // `promise.should.be.rejected.and.eventually.equal(\"reason\")`.\n return reason;\n }\n );\n\n transferPromiseness(this, derivedPromise);\n return this;\n });\n\n method('rejectedWith', function (errorLike, errMsgMatcher, message) {\n let errorLikeName = null;\n const negate = utils.flag(this, 'negate') || false;\n\n // rejectedWith with that is called without arguments is\n // the same as a plain \".rejected\" use.\n if (\n errorLike === undefined &&\n errMsgMatcher === undefined &&\n message === undefined\n ) {\n /* eslint-disable no-unused-expressions */\n return this.rejected;\n /* eslint-enable no-unused-expressions */\n }\n\n if (message !== undefined) {\n utils.flag(this, 'message', message);\n }\n\n if (errorLike instanceof RegExp || typeof errorLike === 'string') {\n errMsgMatcher = errorLike;\n errorLike = null;\n } else if (errorLike && errorLike instanceof Error) {\n errorLikeName = errorLike.toString();\n } else if (typeof errorLike === 'function') {\n errorLikeName = checkError.getConstructorName(errorLike);\n } else {\n errorLike = null;\n }\n const everyArgIsDefined = Boolean(errorLike && errMsgMatcher);\n\n let matcherRelation = 'including';\n if (errMsgMatcher instanceof RegExp) {\n matcherRelation = 'matching';\n }\n\n const derivedPromise = getBasePromise(this).then(\n (value) => {\n let assertionMessage = null;\n let expected = null;\n\n if (errorLike) {\n assertionMessage =\n 'expected promise to be rejected with #{exp} but it was fulfilled with #{act}';\n expected = errorLikeName;\n } else if (errMsgMatcher) {\n assertionMessage =\n `expected promise to be rejected with an error ${matcherRelation} #{exp} but ` +\n `it was fulfilled with #{act}`;\n expected = errMsgMatcher;\n }\n\n assertIfNotNegated(this, assertionMessage, {expected, actual: value});\n return value;\n },\n (reason) => {\n const errorLikeCompatible =\n errorLike &&\n (errorLike instanceof Error\n ? checkError.compatibleInstance(reason, errorLike)\n : checkError.compatibleConstructor(reason, errorLike));\n\n const errMsgMatcherCompatible =\n errMsgMatcher === reason ||\n (errMsgMatcher &&\n reason &&\n checkError.compatibleMessage(reason, errMsgMatcher));\n\n const reasonName = getReasonName(reason);\n\n if (negate && everyArgIsDefined) {\n if (errorLikeCompatible && errMsgMatcherCompatible) {\n this.assert(\n true,\n null,\n 'expected promise not to be rejected with #{exp} but it was rejected ' +\n 'with #{act}',\n errorLikeName,\n reasonName\n );\n }\n } else {\n if (errorLike) {\n this.assert(\n errorLikeCompatible,\n 'expected promise to be rejected with #{exp} but it was rejected with #{act}',\n 'expected promise not to be rejected with #{exp} but it was rejected ' +\n 'with #{act}',\n errorLikeName,\n reasonName\n );\n }\n\n if (errMsgMatcher) {\n this.assert(\n errMsgMatcherCompatible,\n `expected promise to be rejected with an error ${matcherRelation} #{exp} but got ` +\n `#{act}`,\n `expected promise not to be rejected with an error ${matcherRelation} #{exp}`,\n errMsgMatcher,\n checkError.getMessage(reason)\n );\n }\n }\n\n return reason;\n }\n );\n\n transferPromiseness(this, derivedPromise);\n return this;\n });\n\n property('eventually', function () {\n utils.flag(this, 'eventually', true);\n return this;\n });\n\n method('notify', function (done) {\n doNotify(getBasePromise(this), done);\n return this;\n });\n\n method('become', function (value, message) {\n return this.eventually.deep.equal(value, message);\n });\n\n // ### `eventually`\n\n // We need to be careful not to trigger any getters, thus `Object.getOwnPropertyDescriptor` usage.\n const methodNames = propertyNames.filter((name) => {\n return name !== 'assert' && typeof propertyDescs[name].value === 'function';\n });\n\n methodNames.forEach((methodName) => {\n Assertion.overwriteMethod(\n methodName,\n (originalMethod) =>\n function () {\n return doAsserterAsyncAndAddThen(originalMethod, this, arguments);\n }\n );\n });\n\n const getterNames = propertyNames.filter((name) => {\n return name !== '_obj' && typeof propertyDescs[name].get === 'function';\n });\n\n getterNames.forEach((getterName) => {\n // Chainable methods are things like `an`, which can work both for `.should.be.an.instanceOf` and as\n // `should.be.an(\"object\")`. We need to handle those specially.\n const isChainableMethod = Object.prototype.hasOwnProperty.call(\n Assertion.prototype.__methods,\n getterName\n );\n\n if (isChainableMethod) {\n Assertion.overwriteChainableMethod(\n getterName,\n (originalMethod) =>\n function () {\n return doAsserterAsyncAndAddThen(originalMethod, this, arguments);\n },\n (originalGetter) =>\n function () {\n return doAsserterAsyncAndAddThen(originalGetter, this);\n }\n );\n } else {\n Assertion.overwriteProperty(\n getterName,\n (originalGetter) =>\n function () {\n return proxifyIfSupported(\n doAsserterAsyncAndAddThen(originalGetter, this)\n );\n }\n );\n }\n });\n\n function doAsserterAsyncAndAddThen(asserter, assertion, args) {\n // Since we're intercepting all methods/properties, we need to just pass through if they don't want\n // `eventually`, or if we've already fulfilled the promise (see below).\n if (!utils.flag(assertion, 'eventually')) {\n asserter.apply(assertion, args);\n return assertion;\n }\n\n const derivedPromise = getBasePromise(assertion)\n .then((value) => {\n // Set up the environment for the asserter to actually run: `_obj` should be the fulfillment value, and\n // now that we have the value, we're no longer in \"eventually\" mode, so we won't run any of this code,\n // just the base Chai code that we get to via the short-circuit above.\n assertion._obj = value;\n utils.flag(assertion, 'eventually', false);\n\n return args ? transformAsserterArgs(args) : args;\n })\n .then((newArgs) => {\n asserter.apply(assertion, newArgs);\n\n // Because asserters, for example `property`, can change the value of `_obj` (i.e. change the \"object\"\n // flag), we need to communicate this value change to subsequent chained asserters. Since we build a\n // promise chain paralleling the asserter chain, we can use it to communicate such changes.\n return assertion._obj;\n });\n\n transferPromiseness(assertion, derivedPromise);\n return assertion;\n }\n\n // ### Now use the `Assertion` framework to build an `assert` interface.\n const originalAssertMethods = Object.getOwnPropertyNames(assert).filter(\n (propName) => {\n return typeof assert[propName] === 'function';\n }\n );\n\n assert.isFulfilled = (promise, message) =>\n new Assertion(promise, message).to.be.fulfilled;\n\n assert.isRejected = (promise, errorLike, errMsgMatcher, message) => {\n const assertion = new Assertion(promise, message);\n return assertion.to.be.rejectedWith(errorLike, errMsgMatcher, message);\n };\n\n assert.becomes = (promise, value, message) =>\n assert.eventually.deepEqual(promise, value, message);\n\n assert.doesNotBecome = (promise, value, message) =>\n assert.eventually.notDeepEqual(promise, value, message);\n\n assert.eventually = {};\n originalAssertMethods.forEach((assertMethodName) => {\n assert.eventually[assertMethodName] = function (promise) {\n const otherArgs = Array.prototype.slice.call(arguments, 1);\n\n let customRejectionHandler;\n const message = arguments[assert[assertMethodName].length - 1];\n if (typeof message === 'string') {\n customRejectionHandler = (reason) => {\n throw new chai.AssertionError(\n `${message}\\n\\nOriginal reason: ${utils.inspect(reason)}`\n );\n };\n }\n\n const returnedPromise = promise.then(\n (fulfillmentValue) =>\n assert[assertMethodName].apply(\n assert,\n [fulfillmentValue].concat(otherArgs)\n ),\n customRejectionHandler\n );\n\n returnedPromise.notify = (done) => {\n doNotify(returnedPromise, done);\n };\n\n return returnedPromise;\n };\n });\n}\n\nfunction defaultTransferPromiseness(assertion, promise) {\n assertion.then = promise.then.bind(promise);\n}\n\nfunction defaultTransformAsserterArgs(values) {\n return values;\n}\n\nlet customTransferPromiseness;\nlet customTransformAsserterArgs;\n\nexport function setTransferPromiseness(fn) {\n customTransferPromiseness = fn || defaultTransferPromiseness;\n}\n\nexport function setTransformAsserterArgs(fn) {\n customTransformAsserterArgs = fn || defaultTransformAsserterArgs;\n}\n\nexport function transferPromiseness(assertion, promise) {\n if (customTransferPromiseness) {\n customTransferPromiseness(assertion, promise);\n } else {\n defaultTransferPromiseness(assertion, promise);\n }\n}\n\nexport function transformAsserterArgs(values) {\n if (customTransformAsserterArgs) {\n return customTransformAsserterArgs(values);\n }\n return defaultTransformAsserterArgs(values);\n}\n","import type { TestAPI } from './background'\r\nimport { expect } from 'chai'\r\n\r\nexport const echo = async (api: TestAPI) => {\r\n expect(await api.echo({ foo: 'bar' })).to.deep.equal({ foo: 'bar' })\r\n}\r\n\r\nexport const add = async (api: TestAPI) => {\r\n expect(await api.add(5, 3)).to.equal(8)\r\n}\r\n\r\nexport const mathMultiply = async (api: TestAPI) => {\r\n expect(await api.math.multiply(6, 7)).to.equal(42)\r\n}\r\n\r\nexport const mathDivide = async (api: TestAPI) => {\r\n expect(await api.math.divide(100, 4)).to.equal(25)\r\n}\r\n\r\nexport const createCallback = async (api: TestAPI) => {\r\n const callback = await api.createCallback()\r\n expect(await callback()).to.equal(42)\r\n}\r\n\r\nexport const callWithCallback = async (api: TestAPI) => {\r\n expect(await api.callWithCallback(() => 123)).to.equal(123)\r\n}\r\n\r\nexport const getDate = async (api: TestAPI) => {\r\n const date = await api.getDate()\r\n expect(date).to.be.instanceOf(Date)\r\n expect(Date.now() - date.getTime()).to.be.lessThan(60000)\r\n}\r\n\r\nexport const getError = async (api: TestAPI) => {\r\n const error = await api.getError()\r\n expect(error).to.be.instanceOf(Error)\r\n expect(error.message).to.equal('Test error')\r\n}\r\n\r\nexport const throwError = async (api: TestAPI) => {\r\n await expect(api.throwError()).to.be.rejected\r\n}\r\n\r\nexport const processBuffer = async (api: TestAPI) => {\r\n const result = await api.processBuffer(new Uint8Array([1, 2, 3, 4]))\r\n expect(result).to.be.instanceOf(Uint8Array)\r\n expect(Array.from(result)).to.deep.equal([2, 4, 6, 8])\r\n}\r\n\r\nexport const getBuffer = async (api: TestAPI) => {\r\n const buffer = await api.getBuffer()\r\n expect(buffer).to.be.instanceOf(ArrayBuffer)\r\n expect(buffer.byteLength).to.equal(16)\r\n}\r\n\r\nexport const getPromise = async (api: TestAPI) => {\r\n const result = await api.getPromise()\r\n expect(result instanceof Promise ? await result : result).to.equal(123)\r\n}\r\n\r\nexport const getStream = async (api: TestAPI) => {\r\n const stream = await api.getStream()\r\n expect(stream).to.be.instanceOf(ReadableStream)\r\n const reader = stream.getReader()\r\n const chunks: Uint8Array[] = []\r\n while (true) {\r\n const { done, value } = await reader.read()\r\n if (done) break\r\n chunks.push(value)\r\n }\r\n expect(chunks.length).to.equal(2)\r\n expect(Array.from(chunks[0])).to.deep.equal([1, 2, 3])\r\n expect(Array.from(chunks[1])).to.deep.equal([4, 5, 6])\r\n}\r\n\r\nexport const base = {\r\n echo,\r\n add,\r\n mathMultiply,\r\n mathDivide,\r\n createCallback,\r\n callWithCallback,\r\n getDate,\r\n getError,\r\n throwError,\r\n processBuffer,\r\n getBuffer,\r\n getPromise,\r\n getStream\r\n}\r\n","import { use } from 'chai'\r\nimport chaiAsPromised from 'chai-as-promised'\r\nimport { base } from './base-tests'\r\nimport type { TestAPI } from './background'\r\n\r\nuse(chaiAsPromised)\r\n\r\nlet api: TestAPI\r\n\r\nexport const setApi = (newApi: TestAPI) => {\r\n api = newApi\r\n}\r\n\r\nexport const echo = () => base.echo(api)\r\nexport const add = () => base.add(api)\r\nexport const mathMultiply = () => base.mathMultiply(api)\r\nexport const mathDivide = () => base.mathDivide(api)\r\nexport const createCallback = () => base.createCallback(api)\r\nexport const callWithCallback = () => base.callWithCallback(api)\r\nexport const getDate = () => base.getDate(api)\r\nexport const getError = () => base.getError(api)\r\nexport const throwError = () => base.throwError(api)\r\nexport const processBuffer = () => base.processBuffer(api)\r\nexport const getBuffer = () => base.getBuffer(api)\r\nexport const getPromise = () => base.getPromise(api)\r\nexport const getStream = () => base.getStream(api)\r\n","import { expose } from '../../src/index'\r\nimport type { TestAPI } from './background'\r\nimport * as contentTests from './content-tests'\r\nimport { setApi } from './content-tests'\r\n\r\nconst jsonOnlyCapabilities = {\r\n jsonOnly: true,\r\n messagePort: false,\r\n arrayBuffer: false,\r\n transferable: false,\r\n transferableStream: false\r\n}\r\n\r\nconst port = chrome.runtime.connect({ name: `content-${Date.now()}` })\r\nconst api = await expose<TestAPI>({}, {\r\n transport: { isJson: true, emit: port, receive: port },\r\n platformCapabilities: jsonOnlyCapabilities\r\n})\r\n\r\nsetApi(api)\r\n\r\nconst tests = { Content: contentTests }\r\nglobalThis.tests = tests\r\n\r\ntype TestObject = {\r\n [key: string]: TestObject | ((...args: any[]) => any)\r\n}\r\n\r\nconst findTest = (path: string[], key: string): (() => Promise<void>) | undefined => {\r\n const obj = path.reduce((obj, k) => (obj as TestObject)?.[k], tests as TestObject)\r\n return (obj as TestObject)?.[key] as (() => Promise<void>) | undefined\r\n}\r\n\r\nwindow.addEventListener('message', async (event) => {\r\n if (event.source !== window) return\r\n\r\n if (event.data?.type === 'OSRA_RUN_TEST') {\r\n const { key, path, id } = event.data as { key: string; path: string[]; id: string }\r\n try {\r\n const test = findTest(path, key)\r\n if (!test) {\r\n throw new Error(`Test not found: ${[...path, key].join('.')}`)\r\n }\r\n await test()\r\n window.postMessage({ type: 'OSRA_TEST_RESULT', id, success: true }, '*')\r\n } catch (error) {\r\n window.postMessage({\r\n type: 'OSRA_TEST_RESULT',\r\n id,\r\n success: false,\r\n error: error instanceof Error ? error.message : String(error)\r\n }, '*')\r\n }\r\n }\r\n\r\n if (event.data?.type === 'OSRA_PING') {\r\n window.postMessage({ type: 'OSRA_PONG' }, '*')\r\n }\r\n})\r\n\r\nwindow.postMessage({ type: 'OSRA_CONTENT_READY' }, '*')\r\n\r\nconsole.log('content script')\r\n"],"names":["value","result","box","initMessage","transport","TypedEventTarget","message","compatibleConstructor","compatibleInstance","compatibleMessage","getConstructorName","getMessage","isErrorInstance","isRegExp","exports","echo","add","mathMultiply","mathDivide","createCallback","callWithCallback","getDate","getError","throwError","processBuffer","getBuffer","getPromise","getStream","api","obj"],"mappings":"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AAE,CAAC,eAAe,EAAE,eAAe,CAAC;AACpC,EAAE,CAAC,gBAAgB,EAAE,eAAe;AACpC,CAAC;AACD,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,OAAO,EAAE;AAClC,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AAC3B;;AAEA;AACA,IAAI,IAAI,GAAG,EAAE;AACb,SAAS,GAAG,CAAC,EAAE,EAAE;AACjB,EAAE,MAAMG,SAAO,GAAG;AAClB,IAAI,GAAG;AACP,IAAI,cAAc;AAClB,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,GAAG;AACP,GAAG;AACH,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AAC1B,IAAI,EAAE,CAACA,SAAO,EAAE,aAAa,CAAC;AAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACjB,EAAE;AACF,EAAE,OAAOA,SAAO;AAChB;AACA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;AAYlB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5xIA,SAAS,eAAe,CAAC,GAAG,EAAE;AAC9B;AACA,EAAE,OAAO,GAAG,YAAY,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,gBAAgB;AACzF;;AAEA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB;AACA,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,iBAAiB;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE;AAC/C,EAAE,OAAO,eAAe,CAAC,SAAS,CAAC,IAAI,MAAM,KAAK,SAAS;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE;AAClD,EAAE,IAA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","x_google_ignoreList":[8,10,11,12]}
|