agent-web-os 0.4.0-beta.0 → 0.4.0
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/dist/chunk-L7KW6Y27.js +2750 -0
- package/dist/chunk-L7KW6Y27.js.map +1 -0
- package/dist/chunk-QV36H6BY.js +5325 -0
- package/dist/chunk-QV36H6BY.js.map +1 -0
- package/dist/{chunk-JTZ3QUCT.js → chunk-ZZTRZYH2.js} +1021 -3
- package/dist/chunk-ZZTRZYH2.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -6
- package/dist/index.js.map +1 -1
- package/dist/node.cjs +57005 -72356
- package/dist/node.cjs.map +1 -1
- package/dist/node.js +14655 -106
- package/dist/node.js.map +1 -1
- package/dist/npm-C6N7BGOG.js +14 -0
- package/dist/server-bridge-DZUJDQIT.js +329 -0
- package/dist/server-bridge-DZUJDQIT.js.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-JTZ3QUCT.js.map +0 -1
- package/dist/chunk-THD7G37K.js +0 -1028
- package/dist/chunk-THD7G37K.js.map +0 -1
- package/dist/chunk-YMOX2CWB.js +0 -38704
- package/dist/chunk-YMOX2CWB.js.map +0 -1
- package/dist/dist-2XQJWZPX.js +0 -98
- /package/dist/{dist-2XQJWZPX.js.map → npm-C6N7BGOG.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/almostnode/src/utils/binary-encoding.ts","../node_modules/almostnode/src/shims/events.ts","../node_modules/almostnode/src/shims/stream.ts","../node_modules/almostnode/src/shims/http.ts","../node_modules/almostnode/src/shims/net.ts","../node_modules/almostnode/src/shims/crypto.ts"],"sourcesContent":["/**\n * Shared binary encoding utilities.\n * Replaces O(n²) string concatenation patterns used throughout the codebase.\n */\n\nconst CHUNK = 8192;\n\n/** Convert Uint8Array to base64 string */\nexport function uint8ToBase64(bytes: Uint8Array): string {\n const parts: string[] = [];\n for (let i = 0; i < bytes.length; i += CHUNK) {\n parts.push(String.fromCharCode.apply(null, Array.from(bytes.subarray(i, i + CHUNK))));\n }\n return btoa(parts.join(''));\n}\n\n/** Convert base64 string to Uint8Array */\nexport function base64ToUint8(base64: string): Uint8Array {\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\n\n/** Convert Uint8Array to hex string */\nexport function uint8ToHex(bytes: Uint8Array): string {\n const hex = new Array(bytes.length);\n for (let i = 0; i < bytes.length; i++) {\n hex[i] = bytes[i].toString(16).padStart(2, '0');\n }\n return hex.join('');\n}\n\n/** Convert Uint8Array to binary (latin1) string */\nexport function uint8ToBinaryString(bytes: Uint8Array): string {\n const parts: string[] = [];\n for (let i = 0; i < bytes.length; i += CHUNK) {\n parts.push(String.fromCharCode.apply(null, Array.from(bytes.subarray(i, i + CHUNK))));\n }\n return parts.join('');\n}\n","/**\n * Node.js EventEmitter shim\n * Basic event emitter implementation for browser environment\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type EventListener = (...args: any[]) => void;\n\n// Symbol for storing events on arbitrary objects (like Express app function)\nconst kEvents = Symbol('events');\nconst kMaxListeners = Symbol('maxListeners');\n\ninterface EventStorage {\n [kEvents]?: Map<string, EventListener[]>;\n [kMaxListeners]?: number;\n}\n\nexport class EventEmitter {\n [kEvents]?: Map<string, EventListener[]>;\n [kMaxListeners]?: number;\n\n // Helper to get events map, creating it if needed\n private _getEvents(): Map<string, EventListener[]> {\n const self = this as EventStorage;\n if (!self[kEvents]) {\n self[kEvents] = new Map();\n }\n return self[kEvents]!;\n }\n\n on(event: string, listener: EventListener): this {\n return this.addListener(event, listener);\n }\n\n addListener(event: string, listener: EventListener): this {\n const events = this._getEvents();\n if (!events.has(event)) {\n events.set(event, []);\n }\n events.get(event)!.push(listener);\n return this;\n }\n\n once(event: string, listener: EventListener): this {\n const onceWrapper = (...args: unknown[]) => {\n this.removeListener(event, onceWrapper);\n listener.apply(this, args);\n };\n return this.addListener(event, onceWrapper);\n }\n\n off(event: string, listener: EventListener): this {\n return this.removeListener(event, listener);\n }\n\n removeListener(event: string, listener: EventListener): this {\n const events = this._getEvents();\n const listeners = events.get(event);\n if (listeners) {\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n }\n return this;\n }\n\n removeAllListeners(event?: string): this {\n const events = this._getEvents();\n if (event) {\n events.delete(event);\n } else {\n events.clear();\n }\n return this;\n }\n\n emit(event: string, ...args: unknown[]): boolean {\n const events = this._getEvents();\n const listeners = events.get(event);\n if (!listeners || listeners.length === 0) {\n // Special handling for 'error' event\n if (event === 'error') {\n const err = args[0];\n if (err instanceof Error) {\n throw err;\n }\n throw new Error('Unhandled error event');\n }\n return false;\n }\n\n for (const listener of [...listeners]) {\n try {\n listener.apply(this, args);\n } catch (err) {\n console.error('Error in event listener:', err);\n }\n }\n return true;\n }\n\n listeners(event: string): EventListener[] {\n const events = this._getEvents();\n return [...(events.get(event) || [])];\n }\n\n rawListeners(event: string): EventListener[] {\n return this.listeners(event);\n }\n\n listenerCount(event: string): number {\n const events = this._getEvents();\n return events.get(event)?.length || 0;\n }\n\n eventNames(): string[] {\n const events = this._getEvents();\n return [...events.keys()];\n }\n\n setMaxListeners(n: number): this {\n (this as EventStorage)[kMaxListeners] = n;\n return this;\n }\n\n getMaxListeners(): number {\n return (this as EventStorage)[kMaxListeners] || 10;\n }\n\n prependListener(event: string, listener: EventListener): this {\n const events = this._getEvents();\n if (!events.has(event)) {\n events.set(event, []);\n }\n events.get(event)!.unshift(listener);\n return this;\n }\n\n prependOnceListener(event: string, listener: EventListener): this {\n const onceWrapper = (...args: unknown[]) => {\n this.removeListener(event, onceWrapper);\n listener.apply(this, args);\n };\n return this.prependListener(event, onceWrapper);\n }\n\n // Static methods for compatibility\n static listenerCount(emitter: EventEmitter, event: string): number {\n return emitter.listenerCount(event);\n }\n}\n\n// For Node.js compatibility, the module itself should be the EventEmitter class\n// but also have EventEmitter as a property\n// This allows both: `const EE = require('events')` and `const { EventEmitter } = require('events')`\nconst events = EventEmitter as typeof EventEmitter & {\n EventEmitter: typeof EventEmitter;\n once: (emitter: EventEmitter, event: string) => Promise<unknown[]>;\n on: (emitter: EventEmitter, event: string) => AsyncIterable<unknown[]>;\n getEventListeners: (emitter: EventEmitter, event: string) => EventListener[];\n listenerCount: (emitter: EventEmitter, event: string) => number;\n};\n\nevents.EventEmitter = EventEmitter;\nevents.once = async (emitter: EventEmitter, event: string): Promise<unknown[]> => {\n return new Promise((resolve, reject) => {\n const onEvent: EventListener = (...args: unknown[]) => {\n emitter.removeListener('error', onError);\n resolve(args);\n };\n const onError: EventListener = (...args: unknown[]) => {\n emitter.removeListener(event, onEvent);\n reject(args[0] as Error);\n };\n emitter.once(event, onEvent);\n emitter.once('error', onError);\n });\n};\nevents.on = (emitter: EventEmitter, event: string) => {\n const iterator = {\n async next() {\n return new Promise<{ value: unknown[]; done: boolean }>((resolve) => {\n emitter.once(event, (...args) => resolve({ value: args, done: false }));\n });\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n return iterator as AsyncIterable<unknown[]>;\n};\nevents.getEventListeners = (emitter: EventEmitter, event: string) => emitter.listeners(event);\nevents.listenerCount = (emitter: EventEmitter, event: string) => emitter.listenerCount(event);\n\nexport default events;\n","/**\n * Node.js Stream shim\n * Basic Readable and Writable stream implementations\n */\n\nimport { EventEmitter } from './events';\nimport { uint8ToBase64, uint8ToHex, uint8ToBinaryString } from '../utils/binary-encoding';\n\nconst _encoder = new TextEncoder();\nconst _decoder = new TextDecoder('utf-8');\n\nexport class Readable extends EventEmitter {\n private _buffer: Uint8Array[] = [];\n private _ended: boolean = false;\n private _flowing: boolean = false;\n private _endEmitted: boolean = false;\n readable: boolean = true;\n readableEnded: boolean = false;\n readableFlowing: boolean | null = null;\n\n constructor() {\n super();\n }\n\n // Internal method to add listener without triggering auto-flow\n private _addListenerInternal(event: string | symbol, listener: (...args: unknown[]) => void): this {\n // Call base EventEmitter's addListener directly\n EventEmitter.prototype.addListener.call(this, event as string, listener);\n return this;\n }\n\n // Override on() to auto-flow when 'data' listener is added\n on(event: string | symbol, listener: (...args: unknown[]) => void): this {\n this._addListenerInternal(event, listener);\n\n // In Node.js, adding a 'data' listener puts the stream into flowing mode\n // We need to resume even if ended, because we need to flush buffered data\n if (event === 'data' && !this._flowing) {\n // Use queueMicrotask to allow all listeners to be added first\n queueMicrotask(() => {\n if (this.listenerCount('data') > 0 && !this._flowing) {\n this.resume();\n }\n });\n }\n\n return this;\n }\n\n // Also handle addListener (alias for on)\n addListener(event: string | symbol, listener: (...args: unknown[]) => void): this {\n return this.on(event, listener);\n }\n\n push(chunk: Uint8Array | string | null): boolean {\n if (chunk === null) {\n this._ended = true;\n this.readableEnded = true;\n this.readable = false;\n // Only emit 'end' immediately if already flowing and buffer is empty\n // Otherwise, 'end' will be emitted when resume() flushes the buffer\n if (this._flowing && this._buffer.length === 0 && !this._endEmitted) {\n this._endEmitted = true;\n queueMicrotask(() => this.emit('end'));\n }\n return false;\n }\n\n const buffer = typeof chunk === 'string' ? Buffer.from(chunk) : chunk;\n this._buffer.push(buffer);\n\n if (this._flowing) {\n queueMicrotask(() => {\n this._flushBuffer();\n });\n }\n\n return true;\n }\n\n private _flushBuffer(): void {\n while (this._buffer.length > 0 && this._flowing) {\n const data = this._buffer.shift();\n this.emit('data', data);\n }\n // Emit 'end' after buffer is flushed if stream has ended\n if (this._ended && this._buffer.length === 0 && !this._endEmitted) {\n this._endEmitted = true;\n this.emit('end');\n }\n }\n\n read(size?: number): Buffer | null {\n if (this._buffer.length === 0) {\n return null;\n }\n\n if (size === undefined) {\n const result = Buffer.concat(this._buffer);\n this._buffer = [];\n return result;\n }\n\n // Read specific size\n const chunks: Uint8Array[] = [];\n let remaining = size;\n\n while (remaining > 0 && this._buffer.length > 0) {\n const chunk = this._buffer[0];\n if (chunk.length <= remaining) {\n chunks.push(this._buffer.shift()!);\n remaining -= chunk.length;\n } else {\n chunks.push(chunk.slice(0, remaining));\n this._buffer[0] = chunk.slice(remaining);\n remaining = 0;\n }\n }\n\n return chunks.length > 0 ? Buffer.concat(chunks as BufferPolyfill[]) : null;\n }\n\n resume(): this {\n this._flowing = true;\n this.readableFlowing = true;\n\n // Flush buffer and emit 'end' if needed\n this._flushBuffer();\n\n return this;\n }\n\n pause(): this {\n this._flowing = false;\n this.readableFlowing = false;\n return this;\n }\n\n pipe<T extends Writable | Duplex>(destination: T): T {\n this.on('data', (chunk: unknown) => {\n (destination as Writable).write(chunk as Uint8Array | string);\n });\n\n this.on('end', () => {\n (destination as Writable).end();\n });\n\n this.resume();\n return destination;\n }\n\n unpipe(destination?: Writable): this {\n this.removeAllListeners('data');\n this.removeAllListeners('end');\n return this;\n }\n\n setEncoding(encoding: string): this {\n // Simplified - just store encoding for reference\n return this;\n }\n\n destroy(error?: Error): this {\n this._buffer = [];\n this._ended = true;\n this.readable = false;\n if (error) {\n this.emit('error', error);\n }\n this.emit('close');\n return this;\n }\n\n /**\n * Creates a Readable stream from an iterable or async iterable\n * @param iterable - An iterable or async iterable to create the stream from\n * @param options - Optional stream options\n */\n static from(\n iterable: Iterable<unknown> | AsyncIterable<unknown>,\n options?: { objectMode?: boolean; highWaterMark?: number }\n ): Readable {\n const readable = new Readable();\n\n // Handle async iteration\n (async () => {\n try {\n // Use for-await-of which works with both sync and async iterables\n for await (const chunk of iterable as AsyncIterable<unknown>) {\n if (chunk !== null && chunk !== undefined) {\n // Convert to Buffer if it's a string\n const data = typeof chunk === 'string' ? Buffer.from(chunk) : chunk;\n readable.push(data as Buffer);\n }\n }\n readable.push(null); // Signal end of stream\n } catch (err) {\n readable.destroy(err as Error);\n }\n })();\n\n return readable;\n }\n}\n\nexport class Writable extends EventEmitter {\n private _chunks: Uint8Array[] = [];\n private _ended: boolean = false;\n writable: boolean = true;\n writableEnded: boolean = false;\n writableFinished: boolean = false;\n\n constructor() {\n super();\n }\n\n write(\n chunk: Uint8Array | string,\n encodingOrCallback?: string | ((error?: Error | null) => void),\n callback?: (error?: Error | null) => void\n ): boolean {\n if (this._ended) {\n const error = new Error('write after end');\n if (typeof encodingOrCallback === 'function') {\n encodingOrCallback(error);\n } else if (callback) {\n callback(error);\n }\n return false;\n }\n\n const buffer = typeof chunk === 'string' ? Buffer.from(chunk) : chunk;\n this._chunks.push(buffer);\n\n const cb = typeof encodingOrCallback === 'function' ? encodingOrCallback : callback;\n if (cb) {\n queueMicrotask(() => cb(null));\n }\n\n return true;\n }\n\n end(\n chunkOrCallback?: Uint8Array | string | (() => void),\n encodingOrCallback?: string | (() => void),\n callback?: () => void\n ): this {\n if (typeof chunkOrCallback === 'function') {\n callback = chunkOrCallback;\n } else if (chunkOrCallback !== undefined) {\n this.write(chunkOrCallback as Uint8Array | string);\n }\n\n if (typeof encodingOrCallback === 'function') {\n callback = encodingOrCallback;\n }\n\n this._ended = true;\n this.writable = false;\n this.writableEnded = true;\n\n queueMicrotask(() => {\n this.writableFinished = true;\n this.emit('finish');\n if (callback) {\n callback();\n }\n });\n\n return this;\n }\n\n getBuffer(): Buffer {\n return Buffer.concat(this._chunks);\n }\n\n getBufferAsString(encoding: BufferEncoding = 'utf8'): string {\n return this.getBuffer().toString(encoding);\n }\n\n destroy(error?: Error): this {\n this._chunks = [];\n this._ended = true;\n this.writable = false;\n if (error) {\n this.emit('error', error);\n }\n this.emit('close');\n return this;\n }\n\n cork(): void {\n // No-op in this implementation\n }\n\n uncork(): void {\n // No-op in this implementation\n }\n\n setDefaultEncoding(encoding: string): this {\n return this;\n }\n}\n\nexport class Duplex extends Readable {\n private _writeChunks: Buffer[] = [];\n private _writeEnded: boolean = false;\n writable: boolean = true;\n writableEnded: boolean = false;\n writableFinished: boolean = false;\n\n write(\n chunk: Buffer | string,\n encodingOrCallback?: string | ((error?: Error | null) => void),\n callback?: (error?: Error | null) => void\n ): boolean {\n if (this._writeEnded) {\n return false;\n }\n\n const buffer = typeof chunk === 'string' ? Buffer.from(chunk) : chunk;\n this._writeChunks.push(buffer);\n\n const cb = typeof encodingOrCallback === 'function' ? encodingOrCallback : callback;\n if (cb) {\n queueMicrotask(() => cb(null));\n }\n\n return true;\n }\n\n end(\n chunkOrCallback?: Buffer | string | (() => void),\n encodingOrCallback?: string | (() => void),\n callback?: () => void\n ): this {\n if (typeof chunkOrCallback === 'function') {\n callback = chunkOrCallback;\n } else if (chunkOrCallback !== undefined) {\n this.write(chunkOrCallback as Buffer | string);\n }\n\n this._writeEnded = true;\n this.writable = false;\n this.writableEnded = true;\n\n queueMicrotask(() => {\n this.writableFinished = true;\n this.emit('finish');\n if (callback) {\n callback();\n }\n });\n\n return this;\n }\n}\n\nexport class PassThrough extends Duplex {\n constructor() {\n super();\n }\n\n write(\n chunk: Buffer | string,\n encodingOrCallback?: string | ((error?: Error | null) => void),\n callback?: (error?: Error | null) => void\n ): boolean {\n // Pass through to readable side\n const buffer = typeof chunk === 'string' ? Buffer.from(chunk) : chunk;\n this.push(buffer);\n\n const cb = typeof encodingOrCallback === 'function' ? encodingOrCallback : callback;\n if (cb) {\n queueMicrotask(() => cb(null));\n }\n\n return true;\n }\n}\n\nexport class Transform extends Duplex {\n constructor() {\n super();\n }\n\n _transform(\n chunk: Buffer | Uint8Array,\n encoding: string,\n callback: (error?: Error | null, data?: Buffer | Uint8Array) => void\n ): void {\n // Default: pass through\n callback(null, chunk);\n }\n\n _flush(callback: (error?: Error | null, data?: Buffer) => void): void {\n callback(null);\n }\n\n write(\n chunk: Buffer | string,\n encodingOrCallback?: string | ((error?: Error | null) => void),\n callback?: (error?: Error | null) => void\n ): boolean {\n const buffer = typeof chunk === 'string' ? Buffer.from(chunk) : chunk;\n const encoding = typeof encodingOrCallback === 'string' ? encodingOrCallback : 'utf8';\n const cb = typeof encodingOrCallback === 'function' ? encodingOrCallback : callback;\n\n this._transform(buffer, encoding, (error, data) => {\n if (error) {\n if (cb) cb(error);\n return;\n }\n if (data) {\n this.push(data);\n }\n if (cb) cb(null);\n });\n\n return true;\n }\n\n end(\n chunkOrCallback?: Buffer | string | (() => void),\n encodingOrCallback?: string | (() => void),\n callback?: () => void\n ): this {\n // Flush before ending\n this._flush((error, data) => {\n if (data) {\n this.push(data);\n }\n });\n\n return super.end(chunkOrCallback, encodingOrCallback, callback);\n }\n}\n\n// Base Stream class that some code extends\nexport class Stream extends EventEmitter {\n pipe<T extends Writable>(destination: T): T {\n return destination;\n }\n}\n\n// Make Stream also have static references to all stream types\n// This allows: const Stream = require('stream'); class X extends Stream {}\n// And also: const { Readable } = require('stream');\n(Stream as unknown as Record<string, unknown>).Readable = Readable;\n(Stream as unknown as Record<string, unknown>).Writable = Writable;\n(Stream as unknown as Record<string, unknown>).Duplex = Duplex;\n(Stream as unknown as Record<string, unknown>).Transform = Transform;\n(Stream as unknown as Record<string, unknown>).PassThrough = PassThrough;\n(Stream as unknown as Record<string, unknown>).Stream = Stream;\n// Also expose Readable.from on Stream for compatibility\n(Stream as unknown as Record<string, unknown>).from = Readable.from;\n\n// Promises API\nexport const promises = {\n pipeline: async (...streams: unknown[]): Promise<void> => {\n // Simplified pipeline\n return Promise.resolve();\n },\n finished: async (stream: unknown): Promise<void> => {\n return Promise.resolve();\n },\n};\n\nexport function pipeline(...args: unknown[]): unknown {\n const callback = args[args.length - 1];\n if (typeof callback === 'function') {\n setTimeout(() => (callback as () => void)(), 0);\n }\n return args[args.length - 2] || args[0];\n}\n\nexport function finished(stream: unknown, callback: (err?: Error) => void): () => void {\n setTimeout(() => callback(), 0);\n return () => {};\n}\n\n// Simple Buffer polyfill for browser\ndeclare global {\n interface Window {\n Buffer: typeof Buffer;\n }\n}\n\nclass BufferPolyfill extends Uint8Array {\n // BYTES_PER_ELEMENT for TypedArray compatibility\n static readonly BYTES_PER_ELEMENT = 1;\n\n // Overloads for Buffer.from compatibility\n static from(arrayLike: ArrayLike<number>): BufferPolyfill;\n static from<T>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => number, thisArg?: unknown): BufferPolyfill;\n static from(data: string, encoding?: string): BufferPolyfill;\n static from(data: ArrayBuffer | Uint8Array): BufferPolyfill;\n static from(data: Iterable<number>): BufferPolyfill;\n static from(\n value: string | ArrayBuffer | Uint8Array | number[] | ArrayLike<number> | Iterable<number>,\n encodingOrMapfn?: string | ((v: unknown, k: number) => number),\n thisArg?: unknown\n ): BufferPolyfill {\n // Handle Uint8Array.from signature (mapfn, thisArg)\n if (typeof encodingOrMapfn === 'function') {\n const arrayLike = value as ArrayLike<number>;\n const mapped = Array.from(arrayLike, encodingOrMapfn as (v: number, k: number) => number, thisArg);\n return new BufferPolyfill(mapped);\n }\n\n const data = value as string | ArrayBuffer | Uint8Array | number[];\n const encoding = encodingOrMapfn as string | undefined;\n if (Array.isArray(data)) {\n return new BufferPolyfill(data);\n }\n if (typeof data === 'string') {\n const enc = (encoding || 'utf8').toLowerCase();\n\n if (enc === 'base64' || enc === 'base64url') {\n // Convert base64url to base64 if needed\n let base64 = data;\n if (enc === 'base64url') {\n base64 = data.replace(/-/g, '+').replace(/_/g, '/');\n // Add padding if needed\n while (base64.length % 4 !== 0) {\n base64 += '=';\n }\n }\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return new BufferPolyfill(bytes);\n }\n\n if (enc === 'hex') {\n const bytes = new Uint8Array(data.length / 2);\n for (let i = 0; i < data.length; i += 2) {\n bytes[i / 2] = parseInt(data.slice(i, i + 2), 16);\n }\n return new BufferPolyfill(bytes);\n }\n\n if (enc === 'latin1' || enc === 'binary') {\n const bytes = new Uint8Array(data.length);\n for (let i = 0; i < data.length; i++) {\n bytes[i] = data.charCodeAt(i) & 0xff;\n }\n return new BufferPolyfill(bytes);\n }\n\n // Default: utf8\n const bytes = _encoder.encode(data);\n return new BufferPolyfill(bytes);\n }\n if (data instanceof ArrayBuffer) {\n return new BufferPolyfill(data);\n }\n return new BufferPolyfill(data);\n }\n\n static alloc(size: number, fill?: number): BufferPolyfill {\n const buffer = new BufferPolyfill(size);\n if (fill !== undefined) {\n buffer.fill(fill);\n }\n return buffer;\n }\n\n static allocUnsafe(size: number): BufferPolyfill {\n return new BufferPolyfill(size);\n }\n\n static allocUnsafeSlow(size: number): BufferPolyfill {\n return new BufferPolyfill(size);\n }\n\n static concat(buffers: (Uint8Array | BufferPolyfill)[]): BufferPolyfill {\n const totalLength = buffers.reduce((sum, buf) => sum + buf.length, 0);\n const result = new BufferPolyfill(totalLength);\n let offset = 0;\n for (const buf of buffers) {\n result.set(buf, offset);\n offset += buf.length;\n }\n return result;\n }\n\n static isBuffer(obj: unknown): obj is BufferPolyfill {\n return obj instanceof BufferPolyfill || obj instanceof Uint8Array;\n }\n\n static isEncoding(encoding: string): boolean {\n return ['utf8', 'utf-8', 'ascii', 'latin1', 'binary', 'base64', 'base64url', 'hex'].includes(encoding.toLowerCase());\n }\n\n static byteLength(string: string, encoding?: string): number {\n const enc = (encoding || 'utf8').toLowerCase();\n if (enc === 'base64' || enc === 'base64url') {\n // Remove padding and calculate\n const base64 = string.replace(/[=]/g, '');\n return Math.floor(base64.length * 3 / 4);\n }\n if (enc === 'hex') {\n return string.length / 2;\n }\n return _encoder.encode(string).length;\n }\n\n toString(encoding: BufferEncoding = 'utf8'): string {\n const enc = (encoding || 'utf8').toLowerCase();\n\n if (enc === 'base64') {\n return uint8ToBase64(this);\n }\n\n if (enc === 'base64url') {\n return uint8ToBase64(this).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n }\n\n if (enc === 'hex') {\n return uint8ToHex(this);\n }\n\n if (enc === 'latin1' || enc === 'binary') {\n return uint8ToBinaryString(this);\n }\n\n // Default: utf8\n return _decoder.decode(this);\n }\n\n slice(start?: number, end?: number): BufferPolyfill {\n return new BufferPolyfill(super.slice(start, end));\n }\n\n subarray(start?: number, end?: number): BufferPolyfill {\n return new BufferPolyfill(super.subarray(start, end));\n }\n\n write(string: string, offset?: number): number {\n const bytes = _encoder.encode(string);\n this.set(bytes, offset || 0);\n return bytes.length;\n }\n\n copy(target: BufferPolyfill, targetStart?: number, sourceStart?: number, sourceEnd?: number): number {\n const src = this.subarray(sourceStart || 0, sourceEnd);\n target.set(src, targetStart || 0);\n return src.length;\n }\n\n compare(otherBuffer: Uint8Array): number {\n const len = Math.min(this.length, otherBuffer.length);\n for (let i = 0; i < len; i++) {\n if (this[i] < otherBuffer[i]) return -1;\n if (this[i] > otherBuffer[i]) return 1;\n }\n if (this.length < otherBuffer.length) return -1;\n if (this.length > otherBuffer.length) return 1;\n return 0;\n }\n\n equals(otherBuffer: Uint8Array): boolean {\n return this.compare(otherBuffer) === 0;\n }\n\n toJSON(): { type: string; data: number[] } {\n return {\n type: 'Buffer',\n data: Array.from(this)\n };\n }\n\n // Add Object prototype methods that TypedArrays don't have directly\n hasOwnProperty(prop: PropertyKey): boolean {\n return Object.prototype.hasOwnProperty.call(this, prop);\n }\n\n readUInt8(offset: number): number {\n return this[offset];\n }\n\n readUInt16BE(offset: number): number {\n return (this[offset] << 8) | this[offset + 1];\n }\n\n readUInt16LE(offset: number): number {\n return this[offset] | (this[offset + 1] << 8);\n }\n\n readUInt32BE(offset: number): number {\n return (this[offset] << 24) | (this[offset + 1] << 16) | (this[offset + 2] << 8) | this[offset + 3];\n }\n\n readUInt32LE(offset: number): number {\n return this[offset] | (this[offset + 1] << 8) | (this[offset + 2] << 16) | (this[offset + 3] << 24);\n }\n\n writeUInt8(value: number, offset: number): number {\n this[offset] = value & 0xff;\n return offset + 1;\n }\n\n writeUInt16BE(value: number, offset: number): number {\n this[offset] = (value >> 8) & 0xff;\n this[offset + 1] = value & 0xff;\n return offset + 2;\n }\n\n writeUInt16LE(value: number, offset: number): number {\n this[offset] = value & 0xff;\n this[offset + 1] = (value >> 8) & 0xff;\n return offset + 2;\n }\n\n writeUInt32BE(value: number, offset: number): number {\n this[offset] = (value >> 24) & 0xff;\n this[offset + 1] = (value >> 16) & 0xff;\n this[offset + 2] = (value >> 8) & 0xff;\n this[offset + 3] = value & 0xff;\n return offset + 4;\n }\n\n writeUInt32LE(value: number, offset: number): number {\n this[offset] = value & 0xff;\n this[offset + 1] = (value >> 8) & 0xff;\n this[offset + 2] = (value >> 16) & 0xff;\n this[offset + 3] = (value >> 24) & 0xff;\n return offset + 4;\n }\n\n // Lowercase aliases for UInt methods (Node.js Buffer API compatibility)\n readUint8(offset: number): number {\n return this.readUInt8(offset);\n }\n\n readUint16BE(offset: number): number {\n return this.readUInt16BE(offset);\n }\n\n readUint16LE(offset: number): number {\n return this.readUInt16LE(offset);\n }\n\n readUint32BE(offset: number): number {\n return this.readUInt32BE(offset);\n }\n\n readUint32LE(offset: number): number {\n return this.readUInt32LE(offset);\n }\n\n writeUint8(value: number, offset: number): number {\n return this.writeUInt8(value, offset);\n }\n\n writeUint16BE(value: number, offset: number): number {\n return this.writeUInt16BE(value, offset);\n }\n\n writeUint16LE(value: number, offset: number): number {\n return this.writeUInt16LE(value, offset);\n }\n\n writeUint32BE(value: number, offset: number): number {\n return this.writeUInt32BE(value, offset);\n }\n\n writeUint32LE(value: number, offset: number): number {\n return this.writeUInt32LE(value, offset);\n }\n\n // Signed integer methods\n readInt8(offset: number): number {\n const val = this[offset];\n return val & 0x80 ? val - 0x100 : val;\n }\n\n readInt16BE(offset: number): number {\n const val = this.readUInt16BE(offset);\n return val & 0x8000 ? val - 0x10000 : val;\n }\n\n readInt16LE(offset: number): number {\n const val = this.readUInt16LE(offset);\n return val & 0x8000 ? val - 0x10000 : val;\n }\n\n readInt32BE(offset: number): number {\n const val = this.readUInt32BE(offset);\n return val | 0; // Convert to signed 32-bit\n }\n\n readInt32LE(offset: number): number {\n const val = this.readUInt32LE(offset);\n return val | 0; // Convert to signed 32-bit\n }\n\n writeInt8(value: number, offset: number): number {\n this[offset] = value & 0xff;\n return offset + 1;\n }\n\n writeInt16BE(value: number, offset: number): number {\n return this.writeUInt16BE(value & 0xffff, offset);\n }\n\n writeInt16LE(value: number, offset: number): number {\n return this.writeUInt16LE(value & 0xffff, offset);\n }\n\n writeInt32BE(value: number, offset: number): number {\n return this.writeUInt32BE(value >>> 0, offset);\n }\n\n writeInt32LE(value: number, offset: number): number {\n return this.writeUInt32LE(value >>> 0, offset);\n }\n\n // BigInt methods (64-bit)\n readBigUInt64LE(offset: number): bigint {\n const lo = BigInt(this[offset] | (this[offset + 1] << 8) | (this[offset + 2] << 16) | (this[offset + 3] << 24)) & 0xffffffffn;\n const hi = BigInt(this[offset + 4] | (this[offset + 5] << 8) | (this[offset + 6] << 16) | (this[offset + 7] << 24)) & 0xffffffffn;\n return lo | (hi << 32n);\n }\n\n readBigUInt64BE(offset: number): bigint {\n const hi = BigInt(this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]) & 0xffffffffn;\n const lo = BigInt(this[offset + 4] << 24 | this[offset + 5] << 16 | this[offset + 6] << 8 | this[offset + 7]) & 0xffffffffn;\n return lo | (hi << 32n);\n }\n\n readBigInt64LE(offset: number): bigint {\n const val = this.readBigUInt64LE(offset);\n // If high bit is set, it's negative\n if (val >= 0x8000000000000000n) {\n return val - 0x10000000000000000n;\n }\n return val;\n }\n\n readBigInt64BE(offset: number): bigint {\n const val = this.readBigUInt64BE(offset);\n // If high bit is set, it's negative\n if (val >= 0x8000000000000000n) {\n return val - 0x10000000000000000n;\n }\n return val;\n }\n\n writeBigUInt64LE(value: bigint, offset: number): number {\n const lo = value & 0xffffffffn;\n const hi = (value >> 32n) & 0xffffffffn;\n this[offset] = Number(lo & 0xffn);\n this[offset + 1] = Number((lo >> 8n) & 0xffn);\n this[offset + 2] = Number((lo >> 16n) & 0xffn);\n this[offset + 3] = Number((lo >> 24n) & 0xffn);\n this[offset + 4] = Number(hi & 0xffn);\n this[offset + 5] = Number((hi >> 8n) & 0xffn);\n this[offset + 6] = Number((hi >> 16n) & 0xffn);\n this[offset + 7] = Number((hi >> 24n) & 0xffn);\n return offset + 8;\n }\n\n writeBigUInt64BE(value: bigint, offset: number): number {\n const lo = value & 0xffffffffn;\n const hi = (value >> 32n) & 0xffffffffn;\n this[offset] = Number((hi >> 24n) & 0xffn);\n this[offset + 1] = Number((hi >> 16n) & 0xffn);\n this[offset + 2] = Number((hi >> 8n) & 0xffn);\n this[offset + 3] = Number(hi & 0xffn);\n this[offset + 4] = Number((lo >> 24n) & 0xffn);\n this[offset + 5] = Number((lo >> 16n) & 0xffn);\n this[offset + 6] = Number((lo >> 8n) & 0xffn);\n this[offset + 7] = Number(lo & 0xffn);\n return offset + 8;\n }\n\n writeBigInt64LE(value: bigint, offset: number): number {\n // Convert signed to unsigned representation\n const unsigned = value < 0n ? value + 0x10000000000000000n : value;\n return this.writeBigUInt64LE(unsigned, offset);\n }\n\n writeBigInt64BE(value: bigint, offset: number): number {\n // Convert signed to unsigned representation\n const unsigned = value < 0n ? value + 0x10000000000000000n : value;\n return this.writeBigUInt64BE(unsigned, offset);\n }\n\n // Lowercase aliases for BigInt methods (Node.js Buffer API compatibility)\n readBigUint64LE(offset: number): bigint {\n return this.readBigUInt64LE(offset);\n }\n\n readBigUint64BE(offset: number): bigint {\n return this.readBigUInt64BE(offset);\n }\n\n writeBigUint64LE(value: bigint, offset: number): number {\n return this.writeBigUInt64LE(value, offset);\n }\n\n writeBigUint64BE(value: bigint, offset: number): number {\n return this.writeBigUInt64BE(value, offset);\n }\n\n // Float methods\n readFloatLE(offset: number): number {\n const view = new DataView(this.buffer, this.byteOffset + offset, 4);\n return view.getFloat32(0, true);\n }\n\n readFloatBE(offset: number): number {\n const view = new DataView(this.buffer, this.byteOffset + offset, 4);\n return view.getFloat32(0, false);\n }\n\n readDoubleLE(offset: number): number {\n const view = new DataView(this.buffer, this.byteOffset + offset, 8);\n return view.getFloat64(0, true);\n }\n\n readDoubleBE(offset: number): number {\n const view = new DataView(this.buffer, this.byteOffset + offset, 8);\n return view.getFloat64(0, false);\n }\n\n writeFloatLE(value: number, offset: number): number {\n const view = new DataView(this.buffer, this.byteOffset + offset, 4);\n view.setFloat32(0, value, true);\n return offset + 4;\n }\n\n writeFloatBE(value: number, offset: number): number {\n const view = new DataView(this.buffer, this.byteOffset + offset, 4);\n view.setFloat32(0, value, false);\n return offset + 4;\n }\n\n writeDoubleLE(value: number, offset: number): number {\n const view = new DataView(this.buffer, this.byteOffset + offset, 8);\n view.setFloat64(0, value, true);\n return offset + 8;\n }\n\n writeDoubleBE(value: number, offset: number): number {\n const view = new DataView(this.buffer, this.byteOffset + offset, 8);\n view.setFloat64(0, value, false);\n return offset + 8;\n }\n\n // Variable-length unsigned integer methods\n readUIntLE(offset: number, byteLength: number): number {\n let val = 0;\n let mul = 1;\n for (let i = 0; i < byteLength; i++) {\n val += this[offset + i] * mul;\n mul *= 0x100;\n }\n return val;\n }\n\n readUintLE(offset: number, byteLength: number): number {\n return this.readUIntLE(offset, byteLength);\n }\n\n readUIntBE(offset: number, byteLength: number): number {\n let val = 0;\n let mul = 1;\n for (let i = byteLength - 1; i >= 0; i--) {\n val += this[offset + i] * mul;\n mul *= 0x100;\n }\n return val;\n }\n\n readUintBE(offset: number, byteLength: number): number {\n return this.readUIntBE(offset, byteLength);\n }\n\n readIntLE(offset: number, byteLength: number): number {\n let val = this.readUIntLE(offset, byteLength);\n const limit = Math.pow(2, (byteLength * 8) - 1);\n if (val >= limit) {\n val -= Math.pow(2, byteLength * 8);\n }\n return val;\n }\n\n readIntBE(offset: number, byteLength: number): number {\n let val = this.readUIntBE(offset, byteLength);\n const limit = Math.pow(2, (byteLength * 8) - 1);\n if (val >= limit) {\n val -= Math.pow(2, byteLength * 8);\n }\n return val;\n }\n\n writeUIntLE(value: number, offset: number, byteLength: number): number {\n let val = value;\n for (let i = 0; i < byteLength; i++) {\n this[offset + i] = val & 0xff;\n val = Math.floor(val / 0x100);\n }\n return offset + byteLength;\n }\n\n writeUintLE(value: number, offset: number, byteLength: number): number {\n return this.writeUIntLE(value, offset, byteLength);\n }\n\n writeUIntBE(value: number, offset: number, byteLength: number): number {\n let val = value;\n for (let i = byteLength - 1; i >= 0; i--) {\n this[offset + i] = val & 0xff;\n val = Math.floor(val / 0x100);\n }\n return offset + byteLength;\n }\n\n writeUintBE(value: number, offset: number, byteLength: number): number {\n return this.writeUIntBE(value, offset, byteLength);\n }\n\n writeIntLE(value: number, offset: number, byteLength: number): number {\n let val = value;\n if (val < 0) {\n val += Math.pow(2, byteLength * 8);\n }\n return this.writeUIntLE(val, offset, byteLength);\n }\n\n writeIntBE(value: number, offset: number, byteLength: number): number {\n let val = value;\n if (val < 0) {\n val += Math.pow(2, byteLength * 8);\n }\n return this.writeUIntBE(val, offset, byteLength);\n }\n\n // Swap methods\n swap16(): this {\n const len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n for (let i = 0; i < len; i += 2) {\n const a = this[i];\n this[i] = this[i + 1];\n this[i + 1] = a;\n }\n return this;\n }\n\n swap32(): this {\n const len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n for (let i = 0; i < len; i += 4) {\n const a = this[i];\n const b = this[i + 1];\n this[i] = this[i + 3];\n this[i + 1] = this[i + 2];\n this[i + 2] = b;\n this[i + 3] = a;\n }\n return this;\n }\n\n swap64(): this {\n const len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n for (let i = 0; i < len; i += 8) {\n const a = this[i];\n const b = this[i + 1];\n const c = this[i + 2];\n const d = this[i + 3];\n this[i] = this[i + 7];\n this[i + 1] = this[i + 6];\n this[i + 2] = this[i + 5];\n this[i + 3] = this[i + 4];\n this[i + 4] = d;\n this[i + 5] = c;\n this[i + 6] = b;\n this[i + 7] = a;\n }\n return this;\n }\n}\n\n// Set global Buffer if not defined\nif (typeof globalThis.Buffer === 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (globalThis as any).Buffer = BufferPolyfill;\n}\n\nexport { BufferPolyfill as Buffer };\n\n// Add remaining properties to Stream for require('stream') compatibility\n(Stream as unknown as Record<string, unknown>).pipeline = pipeline;\n(Stream as unknown as Record<string, unknown>).finished = finished;\n(Stream as unknown as Record<string, unknown>).promises = promises;\n\n// Export Stream as default so `require('stream')` returns Stream class\n// which can be extended and also has all stream types as properties\nexport default Stream;\n","/**\n * Node.js http module shim\n * Provides IncomingMessage, ServerResponse, and Server for virtual HTTP handling\n */\n\nimport { EventEmitter, type EventListener } from './events';\nimport { Readable, Writable, Buffer } from './stream';\nimport { Socket, Server as NetServer, AddressInfo } from './net';\nimport { createHash } from './crypto';\n\n// Save the browser's native WebSocket at module load time, BEFORE any CLI bundle\n// can overwrite it (e.g. Convex CLI does `globalThis.WebSocket = bundledWs`).\n// This ensures our WebSocket bridge always uses the real browser implementation.\n// Only capture in a real browser — Node.js 21+ has native WebSocket but it connects\n// to real servers, which isn't what the shim needs.\nconst _isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nconst _BrowserWebSocket: typeof globalThis.WebSocket | null =\n _isBrowser && typeof globalThis.WebSocket === 'function' ? globalThis.WebSocket : null;\n\nexport type RequestListener = (req: IncomingMessage, res: ServerResponse) => void;\n\nexport interface RequestOptions {\n method?: string;\n path?: string;\n headers?: Record<string, string | string[]>;\n hostname?: string;\n host?: string;\n port?: number;\n}\n\n/**\n * Incoming HTTP request (Node.js compatible)\n */\nexport class IncomingMessage extends Readable {\n httpVersion: string = '1.1';\n httpVersionMajor: number = 1;\n httpVersionMinor: number = 1;\n complete: boolean = false;\n headers: Record<string, string | string[] | undefined> = {};\n rawHeaders: string[] = [];\n trailers: Record<string, string | undefined> = {};\n rawTrailers: string[] = [];\n method?: string;\n url?: string;\n statusCode?: number;\n statusMessage?: string;\n socket: Socket;\n\n private _body: Buffer | null = null;\n\n constructor(socket?: Socket) {\n super();\n this.socket = socket || new Socket();\n }\n\n setTimeout(msecs: number, callback?: () => void): this {\n if (callback) {\n this.once('timeout', callback);\n }\n return this;\n }\n\n destroy(error?: Error): this {\n super.destroy(error);\n return this;\n }\n\n // Internal: set body data\n _setBody(body: Buffer | string | null): void {\n if (body === null) {\n this._body = null;\n } else {\n this._body = typeof body === 'string' ? Buffer.from(body) : body;\n }\n\n if (this._body) {\n this.push(this._body);\n }\n this.push(null);\n this.complete = true;\n }\n\n // Internal: initialize from raw request\n static fromRequest(\n method: string,\n url: string,\n headers: Record<string, string>,\n body?: Buffer | string\n ): IncomingMessage {\n const msg = new IncomingMessage();\n msg.method = method;\n msg.url = url;\n msg.headers = { ...headers };\n\n // Build raw headers\n for (const [key, value] of Object.entries(headers)) {\n msg.rawHeaders.push(key, value);\n }\n\n if (body) {\n msg._setBody(body);\n } else {\n msg.push(null);\n msg.complete = true;\n }\n\n return msg;\n }\n}\n\n/**\n * Outgoing HTTP response (Node.js compatible)\n */\nexport class ServerResponse extends Writable {\n statusCode: number = 200;\n statusMessage: string = 'OK';\n headersSent: boolean = false;\n finished: boolean = false;\n sendDate: boolean = true;\n socket: Socket | null;\n\n private _headers: Map<string, string | string[]> = new Map();\n private _body: Uint8Array[] = [];\n private _resolve?: (response: ResponseData) => void;\n\n constructor(req: IncomingMessage) {\n super();\n this.socket = req.socket;\n }\n\n // Internal: set resolver for async response handling\n _setResolver(resolve: (response: ResponseData) => void): void {\n this._resolve = resolve;\n }\n\n setHeader(name: string, value: string | string[] | number): this {\n if (this.headersSent) {\n throw new Error('Cannot set headers after they are sent');\n }\n this._headers.set(name.toLowerCase(), String(value));\n return this;\n }\n\n getHeader(name: string): string | string[] | undefined {\n return this._headers.get(name.toLowerCase());\n }\n\n getHeaders(): Record<string, string | string[]> {\n const headers: Record<string, string | string[]> = {};\n for (const [key, value] of this._headers) {\n headers[key] = value;\n }\n return headers;\n }\n\n getHeaderNames(): string[] {\n return [...this._headers.keys()];\n }\n\n hasHeader(name: string): boolean {\n return this._headers.has(name.toLowerCase());\n }\n\n removeHeader(name: string): void {\n if (this.headersSent) {\n throw new Error('Cannot remove headers after they are sent');\n }\n this._headers.delete(name.toLowerCase());\n }\n\n writeHead(\n statusCode: number,\n statusMessageOrHeaders?: string | Record<string, string | string[] | number>,\n headers?: Record<string, string | string[] | number>\n ): this {\n this.statusCode = statusCode;\n\n if (typeof statusMessageOrHeaders === 'string') {\n this.statusMessage = statusMessageOrHeaders;\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n this.setHeader(key, value);\n }\n }\n } else if (statusMessageOrHeaders) {\n for (const [key, value] of Object.entries(statusMessageOrHeaders)) {\n this.setHeader(key, value);\n }\n }\n\n return this;\n }\n\n write(\n chunk: Uint8Array | string,\n encodingOrCallback?: BufferEncoding | ((error?: Error | null) => void),\n callback?: (error?: Error | null) => void\n ): boolean {\n this.headersSent = true;\n const buffer = typeof chunk === 'string' ? Buffer.from(chunk) : chunk;\n this._body.push(buffer);\n\n const cb = typeof encodingOrCallback === 'function' ? encodingOrCallback : callback;\n if (cb) {\n queueMicrotask(() => cb(null));\n }\n\n return true;\n }\n\n end(\n chunkOrCallback?: Uint8Array | string | (() => void),\n encodingOrCallback?: BufferEncoding | (() => void),\n callback?: () => void\n ): this {\n if (typeof chunkOrCallback === 'function') {\n callback = chunkOrCallback;\n } else if (chunkOrCallback !== undefined) {\n this.write(chunkOrCallback as Uint8Array | string);\n }\n\n if (typeof encodingOrCallback === 'function') {\n callback = encodingOrCallback;\n }\n\n this.headersSent = true;\n this.finished = true;\n\n // Resolve with response data\n if (this._resolve) {\n const headers: Record<string, string> = {};\n for (const [key, value] of this._headers) {\n headers[key] = Array.isArray(value) ? value.join(', ') : value;\n }\n\n this._resolve({\n statusCode: this.statusCode,\n statusMessage: this.statusMessage,\n headers,\n body: Buffer.concat(this._body),\n });\n }\n\n queueMicrotask(() => {\n this.emit('finish');\n if (callback) callback();\n });\n\n return this;\n }\n\n // Convenience method for simple responses\n send(data: string | Buffer | object): this {\n if (typeof data === 'object' && !Buffer.isBuffer(data)) {\n this.setHeader('Content-Type', 'application/json');\n data = JSON.stringify(data);\n }\n\n if (!this.hasHeader('Content-Type')) {\n this.setHeader('Content-Type', 'text/html');\n }\n\n this.write(typeof data === 'string' ? data : data);\n return this.end();\n }\n\n // Express compatibility\n json(data: unknown): this {\n this.setHeader('Content-Type', 'application/json');\n return this.end(JSON.stringify(data));\n }\n\n status(code: number): this {\n this.statusCode = code;\n return this;\n }\n\n redirect(urlOrStatus: string | number, url?: string): void {\n if (typeof urlOrStatus === 'number') {\n this.statusCode = urlOrStatus;\n this.setHeader('Location', url!);\n } else {\n this.statusCode = 302;\n this.setHeader('Location', urlOrStatus);\n }\n this.end();\n }\n\n // Get body for testing/debugging\n _getBody(): Buffer {\n return Buffer.concat(this._body);\n }\n\n _getBodyAsString(): string {\n return this._getBody().toString('utf8');\n }\n}\n\nexport interface ResponseData {\n statusCode: number;\n statusMessage: string;\n headers: Record<string, string>;\n body: Buffer;\n}\n\n/**\n * HTTP Server (Node.js compatible)\n */\nexport class Server extends EventEmitter {\n private _netServer: NetServer;\n private _requestListener?: RequestListener;\n private _pendingRequests: Map<string, {\n resolve: (response: ResponseData) => void;\n reject: (error: Error) => void;\n }> = new Map();\n\n listening: boolean = false;\n maxHeadersCount: number | null = null;\n timeout: number = 0;\n keepAliveTimeout: number = 5000;\n headersTimeout: number = 60000;\n requestTimeout: number = 0;\n\n constructor(requestListener?: RequestListener) {\n super();\n this._requestListener = requestListener;\n this._netServer = new NetServer();\n\n this._netServer.on('listening', () => {\n this.listening = true;\n this.emit('listening');\n });\n\n this._netServer.on('close', () => {\n this.listening = false;\n this.emit('close');\n });\n\n this._netServer.on('error', (err) => {\n this.emit('error', err);\n });\n }\n\n listen(\n portOrOptions?: number | { port?: number; host?: string },\n hostOrCallback?: string | (() => void),\n callback?: () => void\n ): this {\n let port: number | undefined;\n let host: string | undefined;\n let cb: (() => void) | undefined;\n\n if (typeof portOrOptions === 'number') {\n port = portOrOptions;\n if (typeof hostOrCallback === 'string') {\n host = hostOrCallback;\n cb = callback;\n } else {\n cb = hostOrCallback;\n }\n } else if (portOrOptions) {\n port = portOrOptions.port;\n host = portOrOptions.host;\n cb = typeof hostOrCallback === 'function' ? hostOrCallback : callback;\n }\n\n // Wrap callback to register server after listening\n const originalCb = cb;\n const self = this;\n cb = function() {\n const addr = self._netServer.address();\n if (addr) {\n _registerServer(addr.port, self);\n }\n if (originalCb) originalCb();\n };\n\n this._netServer.listen(port, host, cb);\n\n return this;\n }\n\n close(callback?: (err?: Error) => void): this {\n const addr = this._netServer.address();\n if (addr) {\n _unregisterServer(addr.port);\n }\n this._netServer.close(callback);\n return this;\n }\n\n address(): AddressInfo | null {\n return this._netServer.address();\n }\n\n setTimeout(msecs?: number, callback?: () => void): this {\n this.timeout = msecs || 0;\n if (callback) {\n this.on('timeout', callback);\n }\n return this;\n }\n\n ref(): this {\n this._netServer.ref();\n return this;\n }\n\n unref(): this {\n this._netServer.unref();\n return this;\n }\n\n /**\n * Handle an incoming request (used by server bridge)\n */\n async handleRequest(\n method: string,\n url: string,\n headers: Record<string, string>,\n body?: Buffer | string\n ): Promise<ResponseData> {\n return new Promise((resolve, reject) => {\n const req = IncomingMessage.fromRequest(method, url, headers, body);\n const res = new ServerResponse(req);\n\n res._setResolver(resolve);\n\n // Set timeout\n const timeoutId = this.timeout\n ? setTimeout(() => {\n reject(new Error('Request timeout'));\n }, this.timeout)\n : null;\n\n res.on('finish', () => {\n if (timeoutId) clearTimeout(timeoutId);\n });\n\n try {\n this.emit('request', req, res);\n\n if (this._requestListener) {\n this._requestListener(req, res);\n }\n } catch (error) {\n if (timeoutId) clearTimeout(timeoutId);\n reject(error);\n }\n });\n }\n}\n\n/**\n * Create an HTTP server\n */\nexport function createServer(requestListener?: RequestListener): Server {\n return new Server(requestListener);\n}\n\n/**\n * HTTP status codes\n */\nexport const STATUS_CODES: Record<number, string> = {\n 100: 'Continue',\n 101: 'Switching Protocols',\n 200: 'OK',\n 201: 'Created',\n 202: 'Accepted',\n 204: 'No Content',\n 301: 'Moved Permanently',\n 302: 'Found',\n 304: 'Not Modified',\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 405: 'Method Not Allowed',\n 408: 'Request Timeout',\n 500: 'Internal Server Error',\n 501: 'Not Implemented',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n};\n\n/**\n * HTTP methods\n */\nexport const METHODS = [\n 'GET',\n 'POST',\n 'PUT',\n 'DELETE',\n 'PATCH',\n 'HEAD',\n 'OPTIONS',\n 'CONNECT',\n 'TRACE',\n];\n\n// CORS proxy getter - checks localStorage for configured proxy\nfunction getCorsProxy(): string | null {\n if (typeof localStorage !== 'undefined') {\n return localStorage.getItem('__corsProxyUrl') || null;\n }\n return null;\n}\n\n/**\n * HTTP Client Request - makes real HTTP requests using fetch()\n */\nexport class ClientRequest extends Writable {\n method: string;\n path: string;\n headers: Record<string, string>;\n\n private _options: RequestOptions;\n private _protocol: 'http' | 'https';\n private _bodyChunks: Uint8Array[] = [];\n private _aborted: boolean = false;\n private _timeout: number | null = null;\n private _timeoutId: ReturnType<typeof setTimeout> | null = null;\n private _requestEnded: boolean = false;\n\n constructor(options: RequestOptions, protocol: 'http' | 'https' = 'http') {\n super();\n this._options = options;\n this._protocol = protocol;\n this.method = options.method || 'GET';\n this.path = options.path || '/';\n this.headers = {};\n\n if (options.headers) {\n for (const [key, value] of Object.entries(options.headers)) {\n this.headers[key.toLowerCase()] = Array.isArray(value) ? value.join(', ') : value;\n }\n }\n }\n\n setHeader(name: string, value: string): void {\n this.headers[name.toLowerCase()] = value;\n }\n\n getHeader(name: string): string | undefined {\n return this.headers[name.toLowerCase()];\n }\n\n removeHeader(name: string): void {\n delete this.headers[name.toLowerCase()];\n }\n\n write(\n chunk: Uint8Array | string,\n encodingOrCallback?: BufferEncoding | ((error?: Error | null) => void),\n callback?: (error?: Error | null) => void\n ): boolean {\n const buffer = typeof chunk === 'string' ? Buffer.from(chunk) : chunk;\n this._bodyChunks.push(buffer);\n\n const cb = typeof encodingOrCallback === 'function' ? encodingOrCallback : callback;\n if (cb) {\n queueMicrotask(() => cb(null));\n }\n\n return true;\n }\n\n end(\n dataOrCallback?: Uint8Array | string | (() => void),\n encodingOrCallback?: BufferEncoding | (() => void),\n callback?: () => void\n ): this {\n if (this._requestEnded) return this;\n this._requestEnded = true;\n\n // Handle overloaded arguments\n let finalCallback = callback;\n if (typeof dataOrCallback === 'function') {\n finalCallback = dataOrCallback;\n } else if (dataOrCallback !== undefined) {\n this.write(dataOrCallback as Uint8Array | string);\n }\n\n if (typeof encodingOrCallback === 'function') {\n finalCallback = encodingOrCallback;\n }\n\n // Perform the actual request\n this._performRequest().then(() => {\n if (finalCallback) finalCallback();\n }).catch((error) => {\n this.emit('error', error);\n });\n\n return this;\n }\n\n abort(): void {\n this._aborted = true;\n if (this._timeoutId) {\n clearTimeout(this._timeoutId);\n }\n this.emit('abort');\n }\n\n setTimeout(ms: number, callback?: () => void): this {\n this._timeout = ms;\n if (callback) {\n this.once('timeout', callback);\n }\n return this;\n }\n\n private async _performRequest(): Promise<void> {\n if (this._aborted) return;\n\n try {\n // Build URL — Node.js supports both `hostname` and `host` (host may include port)\n const protocol = this._protocol === 'https' ? 'https:' : 'http:';\n let hostname = this._options.hostname || '';\n let port = this._options.port ? `:${this._options.port}` : '';\n if (!hostname && this._options.host) {\n // host can be \"domain.com\" or \"domain.com:8080\"\n const hostParts = this._options.host.split(':');\n hostname = hostParts[0];\n if (!port && hostParts[1]) {\n port = `:${hostParts[1]}`;\n }\n }\n if (!hostname) hostname = 'localhost';\n const path = this._options.path || '/';\n const url = `${protocol}//${hostname}${port}${path}`;\n\n // WebSocket upgrade requests can't use fetch() — browsers strip\n // Connection/Upgrade headers. Bridge to the browser's native WebSocket.\n if (this.headers['upgrade']?.toLowerCase() === 'websocket') {\n this._handleWebSocketUpgrade(url);\n return;\n }\n\n // Use CORS proxy if configured\n const corsProxy = getCorsProxy();\n const fetchUrl = corsProxy\n ? corsProxy + encodeURIComponent(url)\n : url;\n\n // Build fetch options\n const fetchOptions: RequestInit = {\n method: this.method,\n headers: this.headers,\n };\n\n // Add body if we have one (not for GET/HEAD)\n if (this._bodyChunks.length > 0 && this.method !== 'GET' && this.method !== 'HEAD') {\n fetchOptions.body = Buffer.concat(this._bodyChunks);\n }\n\n // Set up timeout with AbortController\n const controller = new AbortController();\n fetchOptions.signal = controller.signal;\n\n if (this._timeout) {\n this._timeoutId = setTimeout(() => {\n controller.abort();\n this.emit('timeout');\n }, this._timeout);\n }\n\n // Make the request\n const response = await fetch(fetchUrl, fetchOptions);\n\n // Clear timeout\n if (this._timeoutId) {\n clearTimeout(this._timeoutId);\n this._timeoutId = null;\n }\n\n if (this._aborted) return;\n\n // Convert response to IncomingMessage\n const incomingMessage = await this._responseToIncomingMessage(response);\n\n // Emit response event\n this.emit('response', incomingMessage);\n\n } catch (error) {\n if (this._timeoutId) {\n clearTimeout(this._timeoutId);\n }\n if (this._aborted) return;\n\n // Wrap abort errors\n if (error instanceof Error && error.name === 'AbortError') {\n // Already emitted timeout event\n return;\n }\n\n this.emit('error', error);\n }\n }\n\n private async _responseToIncomingMessage(response: Response): Promise<IncomingMessage> {\n const msg = new IncomingMessage();\n\n // Set status\n msg.statusCode = response.status;\n msg.statusMessage = response.statusText || STATUS_CODES[response.status] || '';\n\n // Copy headers\n response.headers.forEach((value, key) => {\n msg.headers[key.toLowerCase()] = value;\n msg.rawHeaders.push(key, value);\n });\n\n // Read body and push to stream\n const body = await response.arrayBuffer();\n msg._setBody(Buffer.from(body));\n\n return msg;\n }\n\n /**\n * Bridge a WebSocket upgrade request to the browser's native WebSocket.\n *\n * The bundled ws library (inside the Convex CLI) creates WebSocket connections\n * via http.request() with Upgrade headers. It expects frame-level I/O on the\n * socket from the 'upgrade' event. This method bridges between:\n * - ws library ↔ frame-level I/O on a mock Socket\n * - browser native WebSocket ↔ message-level I/O\n */\n private _handleWebSocketUpgrade(url: string): void {\n // Convert http(s):// to ws(s)://\n const wsUrl = url.replace(/^https:/, 'wss:').replace(/^http:/, 'ws:');\n\n // Get Sec-WebSocket-Key from request headers (sent by ws library)\n const wsKey = this.headers['sec-websocket-key'] || '';\n\n // Use the saved browser WebSocket (captured at module load time before CLI overrides)\n const NativeWS = _BrowserWebSocket;\n\n if (!NativeWS) {\n // No native WebSocket (test env / Node.js) — emit TypeError like fetch would\n setTimeout(() => {\n this.emit('error', new TypeError('Failed to fetch'));\n }, 0);\n return;\n }\n\n // Compute Sec-WebSocket-Accept using the same hash as the ws library.\n // The ws library (bundled in the Convex CLI) uses require(\"crypto\") which\n // resolves to our crypto shim's createHash (syncHash). We must use the same\n // GUID as the bundled ws@8.18.0 (which differs from the standard RFC 6455 GUID).\n const GUID = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11';\n const acceptValue = createHash('sha1')\n .update(wsKey + GUID)\n .digest('base64') as string;\n\n let nativeWs: globalThis.WebSocket;\n try {\n nativeWs = new NativeWS(wsUrl);\n nativeWs.binaryType = 'arraybuffer';\n } catch (e) {\n setTimeout(() => {\n this.emit('error', e instanceof Error ? e : new Error(String(e)));\n }, 0);\n return;\n }\n\n // Create mock socket for the ws library's frame-level I/O\n const socket = new Socket();\n // ws library calls cork/uncork for batching — add as no-ops if missing\n if (typeof (socket as any).cork !== 'function') (socket as any).cork = () => {};\n if (typeof (socket as any).uncork !== 'function') (socket as any).uncork = () => {};\n // ws library checks _readableState and _writableState on socket close\n (socket as any)._readableState = { endEmitted: false };\n (socket as any)._writableState = { finished: false, errorEmitted: false };\n\n // Buffer for partial frame writes from ws library\n let writeBuffer = new Uint8Array(0);\n\n // Override socket.write to intercept outgoing frames from ws library\n socket.write = ((\n chunk: Uint8Array | string,\n encodingOrCallback?: BufferEncoding | ((error?: Error | null) => void),\n callback?: (error?: Error | null) => void\n ): boolean => {\n const data = typeof chunk === 'string' ? Buffer.from(chunk) : new Uint8Array(chunk);\n const cb = typeof encodingOrCallback === 'function' ? encodingOrCallback : callback;\n\n // Append to write buffer\n const newBuf = new Uint8Array(writeBuffer.length + data.length);\n newBuf.set(writeBuffer, 0);\n newBuf.set(data, writeBuffer.length);\n writeBuffer = newBuf;\n\n // Parse and forward complete frames\n while (writeBuffer.length >= 2) {\n const parsed = _parseWsFrame(writeBuffer);\n if (!parsed) break; // incomplete frame — wait for more data\n\n const { opcode, payload, totalLength } = parsed;\n writeBuffer = writeBuffer.slice(totalLength);\n\n if (nativeWs.readyState !== NativeWS.OPEN) continue;\n\n if (opcode === 0x08) {\n // Close frame\n nativeWs.close();\n } else if (opcode === 0x09) {\n // Ping — respond with pong (shouldn't happen from client but handle it)\n nativeWs.send(payload);\n } else if (opcode === 0x0A) {\n // Pong — ignore\n } else if (opcode === 0x01) {\n // Text frame\n const text = new TextDecoder().decode(payload);\n nativeWs.send(text);\n } else if (opcode === 0x02) {\n // Binary frame\n nativeWs.send(payload);\n }\n }\n\n if (cb) queueMicrotask(() => cb(null));\n return true;\n }) as any;\n\n nativeWs.onopen = () => {\n // Create HTTP 101 response\n const response = new IncomingMessage(socket);\n response.statusCode = 101;\n response.statusMessage = 'Switching Protocols';\n response.headers = {\n 'upgrade': 'websocket',\n 'connection': 'Upgrade',\n 'sec-websocket-accept': acceptValue,\n };\n // Mark as complete so ws library doesn't wait for body\n response.complete = true;\n response.push(null);\n\n // Emit upgrade event — ws library listens for this\n this.emit('upgrade', response, socket, Buffer.alloc(0));\n };\n\n nativeWs.onmessage = (event: MessageEvent) => {\n // Create unmasked WebSocket frame and push to mock socket\n let payload: Uint8Array;\n let opcode: number;\n\n if (typeof event.data === 'string') {\n payload = new TextEncoder().encode(event.data);\n opcode = 0x01; // text\n } else if (event.data instanceof ArrayBuffer) {\n payload = new Uint8Array(event.data);\n opcode = 0x02; // binary\n } else {\n return;\n }\n\n const frame = _createWsFrame(opcode, payload, false); // unmasked (server → client)\n socket._receiveData(Buffer.from(frame));\n };\n\n nativeWs.onclose = (event: CloseEvent) => {\n // Send close frame to ws library\n const code = event.code || 1000;\n const closePayload = new Uint8Array(2);\n closePayload[0] = (code >> 8) & 0xFF;\n closePayload[1] = code & 0xFF;\n const frame = _createWsFrame(0x08, closePayload, false);\n socket._receiveData(Buffer.from(frame));\n\n setTimeout(() => {\n (socket as any)._readableState.endEmitted = true;\n socket._receiveEnd();\n socket.emit('close', false);\n }, 10);\n };\n\n nativeWs.onerror = () => {\n socket.emit('error', new Error('WebSocket connection error'));\n socket.destroy();\n };\n\n // Clean up native WS when socket is destroyed\n const origDestroy = socket.destroy.bind(socket);\n socket.destroy = ((error?: Error): Socket => {\n if (nativeWs.readyState === NativeWS.OPEN || nativeWs.readyState === NativeWS.CONNECTING) {\n nativeWs.close();\n }\n return origDestroy(error);\n }) as any;\n }\n\n}\n\n/**\n * Helper to parse URL/options arguments for request()\n */\nfunction parseRequestArgs(\n urlOrOptions: string | URL | RequestOptions,\n optionsOrCallback?: RequestOptions | ((res: IncomingMessage) => void),\n callback?: (res: IncomingMessage) => void\n): { options: RequestOptions; callback?: (res: IncomingMessage) => void } {\n let options: RequestOptions;\n let cb = callback;\n\n if (typeof urlOrOptions === 'string' || urlOrOptions instanceof URL) {\n const parsed = new URL(urlOrOptions.toString());\n options = {\n hostname: parsed.hostname,\n port: parsed.port ? parseInt(parsed.port) : undefined,\n path: parsed.pathname + parsed.search,\n method: 'GET',\n };\n if (typeof optionsOrCallback === 'function') {\n cb = optionsOrCallback;\n } else if (optionsOrCallback) {\n options = { ...options, ...optionsOrCallback };\n }\n } else {\n options = urlOrOptions;\n if (typeof optionsOrCallback === 'function') {\n cb = optionsOrCallback;\n }\n }\n\n return { options, callback: cb };\n}\n\n/**\n * Create an HTTP client request\n */\nexport function request(\n urlOrOptions: string | URL | RequestOptions,\n optionsOrCallback?: RequestOptions | ((res: IncomingMessage) => void),\n callback?: (res: IncomingMessage) => void\n): ClientRequest {\n const { options, callback: cb } = parseRequestArgs(urlOrOptions, optionsOrCallback, callback);\n const req = new ClientRequest(options, 'http');\n if (cb) {\n req.once('response', cb as unknown as EventListener);\n }\n return req;\n}\n\n/**\n * Make an HTTP GET request\n */\nexport function get(\n urlOrOptions: string | URL | RequestOptions,\n optionsOrCallback?: RequestOptions | ((res: IncomingMessage) => void),\n callback?: (res: IncomingMessage) => void\n): ClientRequest {\n const { options, callback: cb } = parseRequestArgs(urlOrOptions, optionsOrCallback, callback);\n const req = new ClientRequest({ ...options, method: 'GET' }, 'http');\n if (cb) {\n req.once('response', cb as unknown as EventListener);\n }\n req.end();\n return req;\n}\n\n/**\n * Internal: create client request with specified protocol\n * Used by https module\n */\nexport function _createClientRequest(\n urlOrOptions: string | URL | RequestOptions,\n optionsOrCallback: RequestOptions | ((res: IncomingMessage) => void) | undefined,\n callback: ((res: IncomingMessage) => void) | undefined,\n protocol: 'http' | 'https'\n): ClientRequest {\n const { options, callback: cb } = parseRequestArgs(urlOrOptions, optionsOrCallback, callback);\n const req = new ClientRequest(options, protocol);\n if (cb) {\n req.once('response', cb as unknown as EventListener);\n }\n return req;\n}\n\n/**\n * Server registry for tracking listening servers\n * Used by server bridge to route requests\n */\nexport type ServerRegistryCallback = (port: number, server: Server) => void;\n\nconst serverRegistry = new Map<number, Server>();\nlet onServerListenCallback: ServerRegistryCallback | null = null;\nlet onServerCloseCallback: ((port: number) => void) | null = null;\n\nexport function _registerServer(port: number, server: Server): void {\n serverRegistry.set(port, server);\n if (onServerListenCallback) {\n onServerListenCallback(port, server);\n }\n}\n\nexport function _unregisterServer(port: number): void {\n serverRegistry.delete(port);\n if (onServerCloseCallback) {\n onServerCloseCallback(port);\n }\n}\n\nexport function getServer(port: number): Server | undefined {\n return serverRegistry.get(port);\n}\n\nexport function getAllServers(): Map<number, Server> {\n return new Map(serverRegistry);\n}\n\nexport function setServerListenCallback(callback: ServerRegistryCallback | null): void {\n onServerListenCallback = callback;\n}\n\nexport function setServerCloseCallback(callback: ((port: number) => void) | null): void {\n onServerCloseCallback = callback;\n}\n\n/**\n * HTTP Agent - manages connection persistence and reuse\n * This is a stub implementation for browser environment\n */\nexport interface AgentOptions {\n keepAlive?: boolean;\n keepAliveMsecs?: number;\n maxSockets?: number;\n maxTotalSockets?: number;\n maxFreeSockets?: number;\n scheduling?: 'fifo' | 'lifo';\n timeout?: number;\n}\n\nexport class Agent extends EventEmitter {\n maxSockets: number;\n maxFreeSockets: number;\n maxTotalSockets: number;\n sockets: Record<string, Socket[]>;\n freeSockets: Record<string, Socket[]>;\n requests: Record<string, IncomingMessage[]>;\n options: AgentOptions;\n\n constructor(opts?: AgentOptions) {\n super();\n this.options = opts || {};\n this.maxSockets = opts?.maxSockets ?? Infinity;\n this.maxFreeSockets = opts?.maxFreeSockets ?? 256;\n this.maxTotalSockets = opts?.maxTotalSockets ?? Infinity;\n this.sockets = {};\n this.freeSockets = {};\n this.requests = {};\n }\n\n createConnection(\n _options: Record<string, unknown>,\n callback?: (err: Error | null, socket: Socket) => void\n ): Socket {\n const socket = new Socket();\n if (callback) {\n callback(null, socket);\n }\n return socket;\n }\n\n getName(options: { host?: string; port?: number; localAddress?: string }): string {\n const host = options.host || 'localhost';\n const port = options.port || 80;\n return `${host}:${port}:${options.localAddress || ''}`;\n }\n\n addRequest(_req: ClientRequest, _options: Record<string, unknown>): void {\n // Stub - in browser we use fetch instead\n }\n\n destroy(): void {\n // Clean up - stub\n this.sockets = {};\n this.freeSockets = {};\n this.requests = {};\n }\n}\n\n// Global agent instance\nexport const globalAgent = new Agent();\n\n/**\n * Parse a WebSocket frame from raw bytes.\n * Returns null if the buffer doesn't contain a complete frame.\n */\nexport function _parseWsFrame(data: Uint8Array): {\n opcode: number;\n payload: Uint8Array;\n totalLength: number;\n} | null {\n if (data.length < 2) return null;\n\n const opcode = data[0] & 0x0F;\n const masked = (data[1] & 0x80) !== 0;\n let payloadLength = data[1] & 0x7F;\n let offset = 2;\n\n if (payloadLength === 126) {\n if (data.length < 4) return null;\n payloadLength = (data[2] << 8) | data[3];\n offset = 4;\n } else if (payloadLength === 127) {\n if (data.length < 10) return null;\n // Use lower 32 bits (sufficient for WebSocket messages)\n payloadLength = (data[6] << 24) | (data[7] << 16) | (data[8] << 8) | data[9];\n offset = 10;\n }\n\n if (masked) {\n if (data.length < offset + 4 + payloadLength) return null;\n const maskKey = data.slice(offset, offset + 4);\n offset += 4;\n\n const payload = new Uint8Array(payloadLength);\n for (let i = 0; i < payloadLength; i++) {\n payload[i] = data[offset + i] ^ maskKey[i % 4];\n }\n\n return { opcode, payload, totalLength: offset + payloadLength };\n } else {\n if (data.length < offset + payloadLength) return null;\n const payload = data.slice(offset, offset + payloadLength);\n return { opcode, payload, totalLength: offset + payloadLength };\n }\n}\n\n/**\n * Create a WebSocket frame.\n * @param opcode - Frame opcode (0x01=text, 0x02=binary, 0x08=close, 0x09=ping, 0x0A=pong)\n * @param payload - Frame payload\n * @param masked - Whether to mask the payload (client→server frames are masked)\n */\nexport function _createWsFrame(opcode: number, payload: Uint8Array, masked: boolean): Uint8Array {\n const length = payload.length;\n let headerSize = 2;\n\n if (length > 125 && length <= 65535) {\n headerSize += 2;\n } else if (length > 65535) {\n headerSize += 8;\n }\n\n if (masked) {\n headerSize += 4;\n }\n\n const frame = new Uint8Array(headerSize + length);\n frame[0] = 0x80 | opcode; // FIN + opcode\n\n let offset = 2;\n if (length <= 125) {\n frame[1] = (masked ? 0x80 : 0) | length;\n } else if (length <= 65535) {\n frame[1] = (masked ? 0x80 : 0) | 126;\n frame[2] = (length >> 8) & 0xFF;\n frame[3] = length & 0xFF;\n offset = 4;\n } else {\n frame[1] = (masked ? 0x80 : 0) | 127;\n frame[2] = 0; frame[3] = 0; frame[4] = 0; frame[5] = 0;\n frame[6] = (length >> 24) & 0xFF;\n frame[7] = (length >> 16) & 0xFF;\n frame[8] = (length >> 8) & 0xFF;\n frame[9] = length & 0xFF;\n offset = 10;\n }\n\n if (masked) {\n const maskKey = new Uint8Array(4);\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n crypto.getRandomValues(maskKey);\n } else {\n for (let i = 0; i < 4; i++) maskKey[i] = Math.floor(Math.random() * 256);\n }\n frame.set(maskKey, offset);\n offset += 4;\n for (let i = 0; i < length; i++) {\n frame[offset + i] = payload[i] ^ maskKey[i % 4];\n }\n } else {\n frame.set(payload, offset);\n }\n\n return frame;\n}\n\nexport default {\n Server,\n IncomingMessage,\n ServerResponse,\n ClientRequest,\n createServer,\n request,\n get,\n STATUS_CODES,\n METHODS,\n getServer,\n getAllServers,\n setServerListenCallback,\n setServerCloseCallback,\n _createClientRequest,\n Agent,\n globalAgent,\n _parseWsFrame,\n _createWsFrame,\n};\n","/**\n * Node.js net module shim\n * Basic Socket and Server classes for virtual networking\n */\n\nimport { EventEmitter, EventListener } from './events';\nimport { Duplex, Buffer } from './stream';\n\nexport interface AddressInfo {\n address: string;\n family: string;\n port: number;\n}\n\nexport interface SocketOptions {\n allowHalfOpen?: boolean;\n readable?: boolean;\n writable?: boolean;\n}\n\nexport interface ServerOptions {\n allowHalfOpen?: boolean;\n pauseOnConnect?: boolean;\n}\n\nexport interface ListenOptions {\n port?: number;\n host?: string;\n backlog?: number;\n}\n\n/**\n * Virtual Socket implementation\n */\nexport class Socket extends Duplex {\n private _connecting: boolean = false;\n private _connected: boolean = false;\n private _destroyed: boolean = false;\n private _remoteAddress: string = '';\n private _remotePort: number = 0;\n private _localAddress: string = '127.0.0.1';\n private _localPort: number = 0;\n\n localAddress: string = '127.0.0.1';\n localPort: number = 0;\n remoteAddress?: string;\n remotePort?: number;\n remoteFamily?: string;\n connecting: boolean = false;\n destroyed: boolean = false;\n readyState: string = 'closed';\n\n constructor(options?: SocketOptions) {\n super();\n }\n\n connect(\n portOrOptions: number | { port: number; host?: string },\n hostOrCallback?: string | (() => void),\n callback?: () => void\n ): this {\n let port: number;\n let host: string = '127.0.0.1';\n let cb: (() => void) | undefined;\n\n if (typeof portOrOptions === 'number') {\n port = portOrOptions;\n if (typeof hostOrCallback === 'string') {\n host = hostOrCallback;\n cb = callback;\n } else {\n cb = hostOrCallback;\n }\n } else {\n port = portOrOptions.port;\n host = portOrOptions.host || '127.0.0.1';\n cb = typeof hostOrCallback === 'function' ? hostOrCallback : callback;\n }\n\n this._connecting = true;\n this.connecting = true;\n this._remoteAddress = host;\n this._remotePort = port;\n this.remoteAddress = host;\n this.remotePort = port;\n this.remoteFamily = 'IPv4';\n this.readyState = 'opening';\n\n // Simulate async connection\n queueMicrotask(() => {\n this._connecting = false;\n this._connected = true;\n this.connecting = false;\n this.readyState = 'open';\n this.emit('connect');\n if (cb) cb();\n });\n\n return this;\n }\n\n address(): AddressInfo | null {\n if (!this._connected) return null;\n return {\n address: this._localAddress,\n family: 'IPv4',\n port: this._localPort,\n };\n }\n\n setEncoding(encoding: BufferEncoding): this {\n return this;\n }\n\n setTimeout(timeout: number, callback?: () => void): this {\n if (callback) {\n this.once('timeout', callback);\n }\n return this;\n }\n\n setNoDelay(noDelay?: boolean): this {\n return this;\n }\n\n setKeepAlive(enable?: boolean, initialDelay?: number): this {\n return this;\n }\n\n ref(): this {\n return this;\n }\n\n unref(): this {\n return this;\n }\n\n destroy(error?: Error): this {\n if (this._destroyed) return this;\n\n this._destroyed = true;\n this._connected = false;\n this.destroyed = true;\n this.readyState = 'closed';\n\n if (error) {\n this.emit('error', error);\n }\n\n queueMicrotask(() => {\n this.emit('close', !!error);\n });\n\n return this;\n }\n\n // Internal: simulate receiving data from remote\n _receiveData(data: Buffer | string): void {\n const buffer = typeof data === 'string' ? Buffer.from(data) : data;\n this.push(buffer);\n }\n\n // Internal: signal end of remote data\n _receiveEnd(): void {\n this.push(null);\n }\n}\n\n/**\n * Virtual Server implementation\n */\nexport class Server extends EventEmitter {\n private _listening: boolean = false;\n private _address: AddressInfo | null = null;\n private _connections: Set<Socket> = new Set();\n private _maxConnections: number = Infinity;\n\n listening: boolean = false;\n maxConnections?: number;\n\n constructor(\n optionsOrConnectionListener?: ServerOptions | ((socket: Socket) => void),\n connectionListener?: (socket: Socket) => void\n ) {\n super();\n\n let listener: ((socket: Socket) => void) | undefined;\n\n if (typeof optionsOrConnectionListener === 'function') {\n listener = optionsOrConnectionListener;\n } else {\n listener = connectionListener;\n }\n\n if (listener) {\n this.on('connection', listener as EventListener);\n }\n }\n\n listen(\n portOrOptions?: number | ListenOptions,\n hostOrCallback?: string | number | (() => void),\n backlogOrCallback?: number | (() => void),\n callback?: () => void\n ): this {\n let port: number = 0;\n let host: string = '0.0.0.0';\n let cb: (() => void) | undefined;\n\n if (typeof portOrOptions === 'number') {\n port = portOrOptions;\n\n if (typeof hostOrCallback === 'string') {\n host = hostOrCallback;\n if (typeof backlogOrCallback === 'function') {\n cb = backlogOrCallback;\n } else {\n cb = callback;\n }\n } else if (typeof hostOrCallback === 'function') {\n cb = hostOrCallback;\n } else if (typeof hostOrCallback === 'number') {\n // backlog\n cb = typeof backlogOrCallback === 'function' ? backlogOrCallback : callback;\n } else {\n // hostOrCallback is undefined, check if callback is in third position\n if (typeof backlogOrCallback === 'function') {\n cb = backlogOrCallback;\n } else if (typeof callback === 'function') {\n cb = callback;\n }\n }\n } else if (portOrOptions) {\n port = portOrOptions.port || 0;\n host = portOrOptions.host || '0.0.0.0';\n cb = typeof hostOrCallback === 'function' ? hostOrCallback : callback;\n }\n\n // Assign random port if 0\n if (port === 0) {\n port = 3000 + Math.floor(Math.random() * 1000);\n }\n\n this._address = {\n address: host,\n family: 'IPv4',\n port,\n };\n\n this._listening = true;\n this.listening = true;\n\n queueMicrotask(() => {\n this.emit('listening');\n if (cb) cb();\n });\n\n return this;\n }\n\n address(): AddressInfo | null {\n return this._address;\n }\n\n close(callback?: (err?: Error) => void): this {\n this._listening = false;\n this.listening = false;\n\n // Close all connections\n for (const socket of this._connections) {\n socket.destroy();\n }\n this._connections.clear();\n\n queueMicrotask(() => {\n this.emit('close');\n if (callback) callback();\n });\n\n return this;\n }\n\n getConnections(callback: (err: Error | null, count: number) => void): void {\n callback(null, this._connections.size);\n }\n\n ref(): this {\n return this;\n }\n\n unref(): this {\n return this;\n }\n\n // Internal: handle incoming connection\n _handleConnection(socket: Socket): void {\n if (!this._listening) {\n socket.destroy();\n return;\n }\n\n this._connections.add(socket);\n\n socket.on('close', () => {\n this._connections.delete(socket);\n });\n\n this.emit('connection', socket);\n }\n}\n\nexport function createServer(\n optionsOrConnectionListener?: ServerOptions | ((socket: Socket) => void),\n connectionListener?: (socket: Socket) => void\n): Server {\n return new Server(optionsOrConnectionListener, connectionListener);\n}\n\nexport function createConnection(\n portOrOptions: number | { port: number; host?: string },\n hostOrCallback?: string | (() => void),\n callback?: () => void\n): Socket {\n const socket = new Socket();\n return socket.connect(portOrOptions, hostOrCallback as string, callback);\n}\n\nexport const connect = createConnection;\n\nexport function isIP(input: string): number {\n // Simple IPv4 check\n if (/^(\\d{1,3}\\.){3}\\d{1,3}$/.test(input)) {\n return 4;\n }\n // Simple IPv6 check\n if (/^([0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4}$/.test(input)) {\n return 6;\n }\n return 0;\n}\n\nexport function isIPv4(input: string): boolean {\n return isIP(input) === 4;\n}\n\nexport function isIPv6(input: string): boolean {\n return isIP(input) === 6;\n}\n\nexport default {\n Socket,\n Server,\n createServer,\n createConnection,\n connect,\n isIP,\n isIPv4,\n isIPv6,\n};\n","/**\n * Node.js crypto module shim\n * Provides cryptographic utilities using Web Crypto API\n */\n\nimport { Buffer } from './stream';\nimport { EventEmitter } from './events';\n\n// ============================================================================\n// Random functions\n// ============================================================================\n\nexport function randomBytes(size: number): Buffer {\n const array = new Uint8Array(size);\n crypto.getRandomValues(array);\n return Buffer.from(array);\n}\n\nexport function randomFillSync(\n buffer: Uint8Array | Buffer,\n offset?: number,\n size?: number\n): Uint8Array | Buffer {\n const start = offset || 0;\n const len = size !== undefined ? size : (buffer.length - start);\n const view = new Uint8Array(buffer.buffer, buffer.byteOffset + start, len);\n crypto.getRandomValues(view);\n return buffer;\n}\n\nexport function randomUUID(): string {\n return crypto.randomUUID();\n}\n\nexport function randomInt(min: number, max?: number): number {\n if (max === undefined) {\n max = min;\n min = 0;\n }\n const range = max - min;\n const array = new Uint32Array(1);\n crypto.getRandomValues(array);\n return min + (array[0] % range);\n}\n\nexport function getRandomValues<T extends ArrayBufferView>(array: T): T {\n return crypto.getRandomValues(array);\n}\n\n// ============================================================================\n// Hash functions\n// ============================================================================\n\nexport function createHash(algorithm: string): Hash {\n return new Hash(algorithm);\n}\n\nclass Hash {\n private algorithm: string;\n private data: Uint8Array[] = [];\n\n constructor(algorithm: string) {\n this.algorithm = normalizeHashAlgorithm(algorithm);\n }\n\n update(data: string | Buffer | Uint8Array, encoding?: string): this {\n let buffer: Buffer;\n if (typeof data === 'string') {\n if (encoding === 'base64') {\n buffer = Buffer.from(atob(data));\n } else {\n buffer = Buffer.from(data);\n }\n } else {\n buffer = Buffer.from(data);\n }\n this.data.push(buffer);\n return this;\n }\n\n async digestAsync(encoding?: string): Promise<string | Buffer> {\n const combined = concatBuffers(this.data);\n const dataBuffer = new Uint8Array(combined).buffer as ArrayBuffer;\n const hashBuffer = await crypto.subtle.digest(this.algorithm, dataBuffer);\n return encodeResult(new Uint8Array(hashBuffer), encoding);\n }\n\n digest(encoding?: string): string | Buffer {\n // WebCrypto is async-only, so we store a pending promise and return a placeholder\n // This is a limitation - for sync usage, packages should use the async version\n // For now, we compute synchronously using a fallback\n const combined = concatBuffers(this.data);\n\n // Use synchronous hash implementation\n const hash = syncHash(combined, this.algorithm);\n return encodeResult(hash, encoding);\n }\n}\n\n// ============================================================================\n// HMAC functions\n// ============================================================================\n\nexport function createHmac(algorithm: string, key: string | Buffer): Hmac {\n return new Hmac(algorithm, key);\n}\n\nclass Hmac {\n private algorithm: string;\n private key: Buffer;\n private data: Uint8Array[] = [];\n\n constructor(algorithm: string, key: string | Buffer) {\n this.algorithm = normalizeHashAlgorithm(algorithm);\n this.key = typeof key === 'string' ? Buffer.from(key) : key;\n }\n\n update(data: string | Buffer | Uint8Array, encoding?: string): this {\n const buffer = typeof data === 'string' ? Buffer.from(data) : data;\n this.data.push(buffer);\n return this;\n }\n\n async digestAsync(encoding?: string): Promise<string | Buffer> {\n const combined = concatBuffers(this.data);\n const keyBuffer = new Uint8Array(this.key).buffer as ArrayBuffer;\n const dataBuffer = new Uint8Array(combined).buffer as ArrayBuffer;\n\n const cryptoKey = await crypto.subtle.importKey(\n 'raw',\n keyBuffer,\n { name: 'HMAC', hash: this.algorithm },\n false,\n ['sign']\n );\n\n const signature = await crypto.subtle.sign('HMAC', cryptoKey, dataBuffer);\n return encodeResult(new Uint8Array(signature), encoding);\n }\n\n digest(encoding?: string): string | Buffer {\n // Synchronous fallback - uses simple HMAC approximation\n const combined = concatBuffers(this.data);\n const hash = syncHmac(combined, this.key, this.algorithm);\n return encodeResult(hash, encoding);\n }\n}\n\n// ============================================================================\n// PBKDF2 (Password-Based Key Derivation Function 2)\n// ============================================================================\n\ntype BinaryLike = string | Buffer | Uint8Array;\n\n/**\n * Async PBKDF2 implementation using WebCrypto\n */\nasync function pbkdf2Async(\n password: BinaryLike,\n salt: BinaryLike,\n iterations: number,\n keylen: number,\n digest: string\n): Promise<Buffer> {\n const passwordBuffer = typeof password === 'string' ? Buffer.from(password) : (password instanceof Uint8Array ? password : Buffer.from(password));\n const saltBuffer = typeof salt === 'string' ? Buffer.from(salt) : (salt instanceof Uint8Array ? salt : Buffer.from(salt));\n\n // Convert to ArrayBuffer for WebCrypto compatibility\n const passwordArrayBuffer = new Uint8Array(passwordBuffer).buffer as ArrayBuffer;\n const saltArrayBuffer = new Uint8Array(saltBuffer).buffer as ArrayBuffer;\n\n const key = await crypto.subtle.importKey(\n 'raw',\n passwordArrayBuffer,\n 'PBKDF2',\n false,\n ['deriveBits']\n );\n\n const derivedBits = await crypto.subtle.deriveBits(\n {\n name: 'PBKDF2',\n salt: saltArrayBuffer,\n iterations,\n hash: normalizeHashAlgorithm(digest),\n },\n key,\n keylen * 8 // Convert bytes to bits\n );\n\n return Buffer.from(derivedBits);\n}\n\n/**\n * PBKDF2 with callback (Node.js compatible API)\n */\nexport function pbkdf2(\n password: BinaryLike,\n salt: BinaryLike,\n iterations: number,\n keylen: number,\n digest: string,\n callback: (err: Error | null, derivedKey: Buffer) => void\n): void {\n pbkdf2Async(password, salt, iterations, keylen, digest)\n .then(key => callback(null, key))\n .catch(err => callback(err, Buffer.alloc(0)));\n}\n\n/**\n * Synchronous PBKDF2 - Note: Uses a pure JS implementation since WebCrypto is async-only\n * For better performance, use the async pbkdf2() function instead\n */\nexport function pbkdf2Sync(\n password: BinaryLike,\n salt: BinaryLike,\n iterations: number,\n keylen: number,\n digest: string\n): Buffer {\n const passwordBuffer = typeof password === 'string' ? Buffer.from(password) : password;\n const saltBuffer = typeof salt === 'string' ? Buffer.from(salt) : salt;\n const hashAlg = normalizeHashAlgorithm(digest);\n\n // Determine hash output size\n let hashLen: number;\n if (hashAlg.includes('512')) {\n hashLen = 64;\n } else if (hashAlg.includes('384')) {\n hashLen = 48;\n } else if (hashAlg.includes('1') || hashAlg === 'SHA-1') {\n hashLen = 20;\n } else {\n hashLen = 32; // SHA-256 default\n }\n\n // Pure JS PBKDF2 implementation\n const numBlocks = Math.ceil(keylen / hashLen);\n const derivedKey = new Uint8Array(numBlocks * hashLen);\n\n for (let blockNum = 1; blockNum <= numBlocks; blockNum++) {\n // U1 = PRF(Password, Salt || INT(blockNum))\n const blockNumBuf = new Uint8Array(4);\n blockNumBuf[0] = (blockNum >>> 24) & 0xff;\n blockNumBuf[1] = (blockNum >>> 16) & 0xff;\n blockNumBuf[2] = (blockNum >>> 8) & 0xff;\n blockNumBuf[3] = blockNum & 0xff;\n\n const saltWithBlock = new Uint8Array(saltBuffer.length + 4);\n saltWithBlock.set(saltBuffer);\n saltWithBlock.set(blockNumBuf, saltBuffer.length);\n\n let u = syncHmac(saltWithBlock, passwordBuffer, hashAlg);\n const block = new Uint8Array(u);\n\n // U2, U3, ... Ui\n for (let i = 1; i < iterations; i++) {\n u = syncHmac(u, passwordBuffer, hashAlg);\n // XOR with accumulated block\n for (let j = 0; j < block.length; j++) {\n block[j] ^= u[j];\n }\n }\n\n derivedKey.set(block, (blockNum - 1) * hashLen);\n }\n\n return Buffer.from(derivedKey.slice(0, keylen));\n}\n\n// ============================================================================\n// Sign and Verify (main functions jose uses)\n// ============================================================================\n\n/**\n * Calculates and returns a signature for data using the given private key\n * This is the one-shot API that jose uses\n */\nexport function sign(\n algorithm: string | null | undefined,\n data: Buffer | Uint8Array,\n key: KeyLike,\n callback?: (error: Error | null, signature: Buffer) => void\n): Buffer | void {\n // Get the actual key material and algorithm\n const keyInfo = extractKeyInfo(key);\n const alg = algorithm || keyInfo.algorithm;\n\n if (!alg) {\n const error = new Error('Algorithm must be specified');\n if (callback) {\n callback(error, null as unknown as Buffer);\n return;\n }\n throw error;\n }\n\n // For async operation with callback\n if (callback) {\n signAsync(alg, data, keyInfo)\n .then(sig => callback(null, sig))\n .catch(err => callback(err, null as unknown as Buffer));\n return;\n }\n\n // Synchronous operation - we need to use a workaround\n // Store the promise result for later retrieval\n const result = signSync(alg, data, keyInfo);\n return result;\n}\n\n/**\n * Verifies the given signature for data using the given key\n */\nexport function verify(\n algorithm: string | null | undefined,\n data: Buffer | Uint8Array,\n key: KeyLike,\n signature: Buffer | Uint8Array,\n callback?: (error: Error | null, result: boolean) => void\n): boolean | void {\n const keyInfo = extractKeyInfo(key);\n const alg = algorithm || keyInfo.algorithm;\n\n if (!alg) {\n const error = new Error('Algorithm must be specified');\n if (callback) {\n callback(error, false);\n return;\n }\n throw error;\n }\n\n if (callback) {\n verifyAsync(alg, data, keyInfo, signature)\n .then(result => callback(null, result))\n .catch(err => callback(err, false));\n return;\n }\n\n return verifySync(alg, data, keyInfo, signature);\n}\n\n// ============================================================================\n// createSign / createVerify (streaming API)\n// ============================================================================\n\nexport function createSign(algorithm: string): Sign {\n return new Sign(algorithm);\n}\n\nexport function createVerify(algorithm: string): Verify {\n return new Verify(algorithm);\n}\n\nclass Sign extends EventEmitter {\n private algorithm: string;\n private data: Uint8Array[] = [];\n\n constructor(algorithm: string) {\n super();\n this.algorithm = algorithm;\n }\n\n update(data: string | Buffer | Uint8Array, encoding?: string): this {\n const buffer = typeof data === 'string' ? Buffer.from(data) : data;\n this.data.push(buffer);\n return this;\n }\n\n sign(privateKey: KeyLike, outputEncoding?: string): Buffer | string {\n const combined = concatBuffers(this.data);\n const keyInfo = extractKeyInfo(privateKey);\n const signature = signSync(this.algorithm, combined, keyInfo);\n\n if (outputEncoding === 'base64') {\n return btoa(String.fromCharCode(...signature));\n }\n if (outputEncoding === 'hex') {\n return Array.from(signature).map(b => b.toString(16).padStart(2, '0')).join('');\n }\n return signature;\n }\n}\n\nclass Verify extends EventEmitter {\n private algorithm: string;\n private data: Uint8Array[] = [];\n\n constructor(algorithm: string) {\n super();\n this.algorithm = algorithm;\n }\n\n update(data: string | Buffer | Uint8Array, encoding?: string): this {\n const buffer = typeof data === 'string' ? Buffer.from(data) : data;\n this.data.push(buffer);\n return this;\n }\n\n verify(publicKey: KeyLike, signature: Buffer | string, signatureEncoding?: string): boolean {\n const combined = concatBuffers(this.data);\n const keyInfo = extractKeyInfo(publicKey);\n\n let sig: Buffer;\n if (typeof signature === 'string') {\n if (signatureEncoding === 'base64') {\n sig = Buffer.from(atob(signature));\n } else if (signatureEncoding === 'hex') {\n sig = Buffer.from(signature.match(/.{2}/g)!.map(byte => parseInt(byte, 16)));\n } else {\n sig = Buffer.from(signature);\n }\n } else {\n sig = signature;\n }\n\n return verifySync(this.algorithm, combined, keyInfo, sig);\n }\n}\n\n// ============================================================================\n// KeyObject class (for key management)\n// ============================================================================\n\nexport class KeyObject {\n private _keyData: CryptoKey | Uint8Array;\n private _type: 'public' | 'private' | 'secret';\n private _algorithm?: string;\n\n constructor(type: 'public' | 'private' | 'secret', keyData: CryptoKey | Uint8Array, algorithm?: string) {\n this._type = type;\n this._keyData = keyData;\n this._algorithm = algorithm;\n }\n\n get type(): string {\n return this._type;\n }\n\n get asymmetricKeyType(): string | undefined {\n if (this._type === 'secret') return undefined;\n // Infer from algorithm\n if (this._algorithm?.includes('RSA')) return 'rsa';\n if (this._algorithm?.includes('EC') || this._algorithm?.includes('ES')) return 'ec';\n if (this._algorithm?.includes('Ed')) return 'ed25519';\n return undefined;\n }\n\n get symmetricKeySize(): number | undefined {\n if (this._type !== 'secret') return undefined;\n if (this._keyData instanceof Uint8Array) {\n return this._keyData.length * 8;\n }\n return undefined;\n }\n\n export(options?: { type?: string; format?: string }): Buffer | string {\n // Simplified export - returns the key data\n if (this._keyData instanceof Uint8Array) {\n return Buffer.from(this._keyData);\n }\n throw new Error('Cannot export CryptoKey synchronously');\n }\n}\n\nexport function createSecretKey(key: Buffer | string, encoding?: string): KeyObject {\n const keyBuffer = typeof key === 'string'\n ? Buffer.from(key, encoding as BufferEncoding)\n : key;\n return new KeyObject('secret', keyBuffer);\n}\n\nexport function createPublicKey(key: KeyLike): KeyObject {\n const keyInfo = extractKeyInfo(key);\n return new KeyObject('public', keyInfo.keyData as Uint8Array, keyInfo.algorithm);\n}\n\nexport function createPrivateKey(key: KeyLike): KeyObject {\n const keyInfo = extractKeyInfo(key);\n return new KeyObject('private', keyInfo.keyData as Uint8Array, keyInfo.algorithm);\n}\n\n// ============================================================================\n// Utility functions\n// ============================================================================\n\nexport function timingSafeEqual(a: Buffer | Uint8Array, b: Buffer | Uint8Array): boolean {\n if (a.length !== b.length) {\n return false;\n }\n let result = 0;\n for (let i = 0; i < a.length; i++) {\n result |= a[i] ^ b[i];\n }\n return result === 0;\n}\n\nexport function getCiphers(): string[] {\n return ['aes-128-cbc', 'aes-256-cbc', 'aes-128-gcm', 'aes-256-gcm'];\n}\n\nexport function getHashes(): string[] {\n return ['sha1', 'sha256', 'sha384', 'sha512'];\n}\n\nexport const constants = {\n SSL_OP_ALL: 0,\n RSA_PKCS1_PADDING: 1,\n RSA_PKCS1_OAEP_PADDING: 4,\n RSA_PKCS1_PSS_PADDING: 6,\n};\n\n// ============================================================================\n// Internal helpers\n// ============================================================================\n\ntype KeyLike = string | Buffer | KeyObject | { key: string | Buffer; passphrase?: string };\n\ninterface KeyInfo {\n keyData: Uint8Array | CryptoKey;\n algorithm?: string;\n type: 'public' | 'private' | 'secret';\n format: 'pem' | 'der' | 'jwk' | 'raw';\n}\n\nfunction normalizeHashAlgorithm(alg: string): string {\n const normalized = alg.toUpperCase().replace(/[^A-Z0-9]/g, '');\n switch (normalized) {\n case 'SHA1': return 'SHA-1';\n case 'SHA256': return 'SHA-256';\n case 'SHA384': return 'SHA-384';\n case 'SHA512': return 'SHA-512';\n case 'MD5': return 'MD5'; // Not supported by WebCrypto\n default: return alg;\n }\n}\n\nfunction getWebCryptoAlgorithm(nodeAlgorithm: string): { name: string; hash?: string } {\n const alg = nodeAlgorithm.toUpperCase().replace(/[^A-Z0-9]/g, '');\n\n // RSA algorithms\n if (alg.includes('RSA')) {\n if (alg.includes('PSS')) {\n const hash = alg.match(/SHA(\\d+)/)?.[0] || 'SHA-256';\n return { name: 'RSA-PSS', hash: `SHA-${hash.replace('SHA', '')}` };\n }\n const hash = alg.match(/SHA(\\d+)/)?.[0] || 'SHA-256';\n return { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${hash.replace('SHA', '')}` };\n }\n\n // ECDSA algorithms (ES256, ES384, ES512)\n if (alg.startsWith('ES') || alg.includes('ECDSA')) {\n const bits = alg.match(/\\d+/)?.[0] || '256';\n const hash = bits === '512' ? 'SHA-512' : bits === '384' ? 'SHA-384' : 'SHA-256';\n return { name: 'ECDSA', hash };\n }\n\n // EdDSA (Ed25519)\n if (alg.includes('ED25519') || alg === 'EDDSA') {\n return { name: 'Ed25519' };\n }\n\n // HMAC\n if (alg.includes('HS') || alg.includes('HMAC')) {\n const bits = alg.match(/\\d+/)?.[0] || '256';\n return { name: 'HMAC', hash: `SHA-${bits}` };\n }\n\n // Default to RSA with SHA-256\n return { name: 'RSASSA-PKCS1-v1_5', hash: 'SHA-256' };\n}\n\nfunction extractKeyInfo(key: KeyLike): KeyInfo {\n if (key instanceof KeyObject) {\n return {\n keyData: (key as any)._keyData,\n algorithm: (key as any)._algorithm,\n type: (key as any)._type,\n format: 'raw',\n };\n }\n\n if (typeof key === 'object' && 'key' in key) {\n return extractKeyInfo(key.key);\n }\n\n const keyStr = typeof key === 'string' ? key : key.toString();\n\n // Detect PEM format\n if (keyStr.includes('-----BEGIN')) {\n const isPrivate = keyStr.includes('PRIVATE');\n const isPublic = keyStr.includes('PUBLIC');\n\n // Extract the base64 content\n const base64 = keyStr\n .replace(/-----BEGIN [^-]+-----/, '')\n .replace(/-----END [^-]+-----/, '')\n .replace(/\\s/g, '');\n\n const keyData = Buffer.from(atob(base64));\n\n // Try to detect algorithm from key header\n let algorithm: string | undefined;\n if (keyStr.includes('RSA')) algorithm = 'RSA-SHA256';\n else if (keyStr.includes('EC')) algorithm = 'ES256';\n else if (keyStr.includes('ED25519')) algorithm = 'Ed25519';\n\n return {\n keyData,\n algorithm,\n type: isPrivate ? 'private' : isPublic ? 'public' : 'secret',\n format: 'pem',\n };\n }\n\n // Raw key data\n const keyData = typeof key === 'string' ? Buffer.from(key) : key;\n return {\n keyData,\n type: 'secret',\n format: 'raw',\n };\n}\n\nfunction concatBuffers(buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((acc, arr) => acc + arr.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n for (const buf of buffers) {\n result.set(buf, offset);\n offset += buf.length;\n }\n return result;\n}\n\nfunction encodeResult(data: Uint8Array, encoding?: string): string | Buffer {\n if (encoding === 'hex') {\n return Array.from(data).map(b => b.toString(16).padStart(2, '0')).join('');\n }\n if (encoding === 'base64') {\n return btoa(String.fromCharCode(...data));\n }\n return Buffer.from(data);\n}\n\n// Synchronous hash fallback using a simple but consistent algorithm\nfunction syncHash(data: Uint8Array, algorithm: string): Uint8Array {\n // Use a deterministic hash that produces consistent output\n // This is NOT cryptographically secure but provides consistent behavior\n let size: number;\n if (algorithm.includes('512')) {\n size = 64; // SHA-512 = 64 bytes\n } else if (algorithm.includes('384')) {\n size = 48; // SHA-384 = 48 bytes\n } else if (algorithm.includes('1') || algorithm === 'SHA-1') {\n size = 20; // SHA-1 = 20 bytes\n } else {\n size = 32; // SHA-256 = 32 bytes (default)\n }\n const result = new Uint8Array(size);\n\n // Simple but deterministic mixing function\n let h1 = 0xdeadbeef;\n let h2 = 0x41c6ce57;\n\n for (let i = 0; i < data.length; i++) {\n h1 = Math.imul(h1 ^ data[i], 2654435761);\n h2 = Math.imul(h2 ^ data[i], 1597334677);\n }\n\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n\n // Fill result buffer\n for (let i = 0; i < size; i++) {\n const mix = i < size / 2 ? h1 : h2;\n result[i] = (mix >>> ((i % 4) * 8)) & 0xff;\n h1 = Math.imul(h1, 1103515245) + 12345;\n h2 = Math.imul(h2, 1103515245) + 12345;\n }\n\n return result;\n}\n\nfunction syncHmac(data: Uint8Array, key: Uint8Array, algorithm: string): Uint8Array {\n // Combine key and data for HMAC-like behavior\n const combined = new Uint8Array(key.length + data.length);\n combined.set(key, 0);\n combined.set(data, key.length);\n return syncHash(combined, algorithm);\n}\n\n// Async implementations using WebCrypto\nasync function signAsync(algorithm: string, data: Uint8Array, keyInfo: KeyInfo): Promise<Buffer> {\n const webCryptoAlg = getWebCryptoAlgorithm(algorithm);\n\n try {\n // Import the key\n const cryptoKey = await importKey(keyInfo, webCryptoAlg, ['sign']);\n\n // Sign the data - convert to ArrayBuffer for WebCrypto compatibility\n const signatureAlg = webCryptoAlg.hash\n ? { name: webCryptoAlg.name, hash: webCryptoAlg.hash }\n : { name: webCryptoAlg.name };\n\n const dataBuffer = new Uint8Array(data).buffer as ArrayBuffer;\n const signature = await crypto.subtle.sign(signatureAlg, cryptoKey, dataBuffer);\n return Buffer.from(signature);\n } catch (error) {\n // Fallback to sync implementation\n console.warn('WebCrypto sign failed, using fallback:', error);\n return signSync(algorithm, data, keyInfo);\n }\n}\n\nasync function verifyAsync(\n algorithm: string,\n data: Uint8Array,\n keyInfo: KeyInfo,\n signature: Uint8Array\n): Promise<boolean> {\n const webCryptoAlg = getWebCryptoAlgorithm(algorithm);\n\n try {\n const cryptoKey = await importKey(keyInfo, webCryptoAlg, ['verify']);\n\n const verifyAlg = webCryptoAlg.hash\n ? { name: webCryptoAlg.name, hash: webCryptoAlg.hash }\n : { name: webCryptoAlg.name };\n\n // Convert to ArrayBuffer for WebCrypto compatibility\n const sigBuffer = new Uint8Array(signature).buffer as ArrayBuffer;\n const dataBuffer = new Uint8Array(data).buffer as ArrayBuffer;\n return await crypto.subtle.verify(verifyAlg, cryptoKey, sigBuffer, dataBuffer);\n } catch (error) {\n console.warn('WebCrypto verify failed, using fallback:', error);\n return verifySync(algorithm, data, keyInfo, signature);\n }\n}\n\n// Synchronous fallback implementations\nfunction signSync(algorithm: string, data: Uint8Array, keyInfo: KeyInfo): Buffer {\n // Create a deterministic signature based on key and data\n // This is NOT cryptographically secure but allows code to run\n const keyData = keyInfo.keyData instanceof Uint8Array\n ? keyInfo.keyData\n : new Uint8Array(0);\n\n const combined = new Uint8Array(keyData.length + data.length);\n combined.set(keyData, 0);\n combined.set(data, keyData.length);\n\n const hash = syncHash(combined, algorithm);\n return Buffer.from(hash);\n}\n\nfunction verifySync(\n algorithm: string,\n data: Uint8Array,\n keyInfo: KeyInfo,\n signature: Uint8Array\n): boolean {\n // For sync verify, we generate the expected signature and compare\n const expectedSig = signSync(algorithm, data, keyInfo);\n return timingSafeEqual(Buffer.from(signature), expectedSig);\n}\n\nasync function importKey(\n keyInfo: KeyInfo,\n algorithm: { name: string; hash?: string },\n usages: KeyUsage[]\n): Promise<CryptoKey> {\n if (keyInfo.keyData instanceof CryptoKey) {\n return keyInfo.keyData;\n }\n\n const keyData = keyInfo.keyData;\n // Convert Uint8Array to ArrayBuffer for WebCrypto compatibility\n const keyBuffer = new Uint8Array(keyData).buffer as ArrayBuffer;\n\n // Determine import format\n if (keyInfo.format === 'pem') {\n // For PEM, we need to use SPKI (public) or PKCS8 (private)\n const format = keyInfo.type === 'private' ? 'pkcs8' : 'spki';\n\n const importAlg: RsaHashedImportParams | EcKeyImportParams | Algorithm =\n algorithm.name === 'ECDSA'\n ? { name: 'ECDSA', namedCurve: 'P-256' }\n : algorithm.name === 'Ed25519'\n ? { name: 'Ed25519' }\n : { name: algorithm.name, hash: algorithm.hash || 'SHA-256' };\n\n return await crypto.subtle.importKey(\n format,\n keyBuffer,\n importAlg,\n true,\n usages\n );\n }\n\n // For raw/secret keys, use raw import\n if (keyInfo.type === 'secret') {\n return await crypto.subtle.importKey(\n 'raw',\n keyBuffer,\n { name: algorithm.name, hash: algorithm.hash },\n true,\n usages\n );\n }\n\n throw new Error(`Unsupported key format: ${keyInfo.format}`);\n}\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport default {\n randomBytes,\n randomFillSync,\n randomUUID,\n randomInt,\n getRandomValues,\n createHash,\n createHmac,\n createSign,\n createVerify,\n sign,\n verify,\n pbkdf2,\n pbkdf2Sync,\n timingSafeEqual,\n getCiphers,\n getHashes,\n constants,\n KeyObject,\n createSecretKey,\n createPublicKey,\n createPrivateKey,\n};\n"],"mappings":"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","names":["events","bytes","Server","createServer","hash","keyData","Server","createServer"]}
|