@computekit/core 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.ts","../src/pool.ts","../src/wasm.ts","../src/index.ts"],"names":["module","logger"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * ComputeKit Utilities\n * Helper functions for the WASM + Worker toolkit\n */\n\n/**\n * Generate a unique ID\n */\nexport function generateId(): string {\n return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 11)}`;\n}\n\n/**\n * Check if running in a Web Worker context\n */\nexport function isWorkerContext(): boolean {\n return (\n typeof self !== 'undefined' &&\n typeof Window === 'undefined' &&\n typeof self.postMessage === 'function'\n );\n}\n\n/**\n * Check if running in a browser context\n */\nexport function isBrowserContext(): boolean {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * Check if SharedArrayBuffer is available\n */\nexport function isSharedArrayBufferAvailable(): boolean {\n try {\n return typeof SharedArrayBuffer !== 'undefined';\n } catch {\n return false;\n }\n}\n\n/**\n * Check if WASM is supported\n */\nexport function isWasmSupported(): boolean {\n try {\n if (typeof WebAssembly === 'object') {\n const module = new WebAssembly.Module(\n Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00)\n );\n return module instanceof WebAssembly.Module;\n }\n } catch {\n // WASM not supported\n }\n return false;\n}\n\n/**\n * Get the number of logical processors\n */\nexport function getHardwareConcurrency(): number {\n if (typeof navigator !== 'undefined' && navigator.hardwareConcurrency) {\n return navigator.hardwareConcurrency;\n }\n return 4; // Reasonable default\n}\n\n/**\n * Create a deferred promise\n */\nexport interface Deferred<T> {\n promise: Promise<T>;\n resolve: (value: T | PromiseLike<T>) => void;\n reject: (reason?: unknown) => void;\n}\n\nexport function createDeferred<T>(): Deferred<T> {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason?: unknown) => void;\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return { promise, resolve, reject };\n}\n\n/**\n * Create a timeout promise\n */\nexport function createTimeout(ms: number, message?: string): Promise<never> {\n return new Promise((_, reject) => {\n setTimeout(() => {\n reject(new Error(message || `Operation timed out after ${ms}ms`));\n }, ms);\n });\n}\n\n/**\n * Race a promise against a timeout\n */\nexport async function withTimeout<T>(\n promise: Promise<T>,\n ms: number,\n message?: string\n): Promise<T> {\n return Promise.race([promise, createTimeout(ms, message)]);\n}\n\n/**\n * Detect transferable objects in data\n */\nexport function findTransferables(data: unknown): Transferable[] {\n const transferables: Transferable[] = [];\n const seen = new WeakSet();\n\n function traverse(obj: unknown): void {\n if (obj === null || typeof obj !== 'object') return;\n if (seen.has(obj as object)) return;\n seen.add(obj as object);\n\n if (obj instanceof ArrayBuffer) {\n transferables.push(obj);\n return;\n }\n\n if (ArrayBuffer.isView(obj)) {\n transferables.push(obj.buffer);\n return;\n }\n\n if (obj instanceof MessagePort) {\n transferables.push(obj);\n return;\n }\n\n if (typeof ImageBitmap !== 'undefined' && obj instanceof ImageBitmap) {\n transferables.push(obj);\n return;\n }\n\n if (typeof OffscreenCanvas !== 'undefined' && obj instanceof OffscreenCanvas) {\n transferables.push(obj);\n return;\n }\n\n if (Array.isArray(obj)) {\n obj.forEach(traverse);\n return;\n }\n\n if (obj instanceof Map) {\n obj.forEach((value, key) => {\n traverse(key);\n traverse(value);\n });\n return;\n }\n\n if (obj instanceof Set) {\n obj.forEach(traverse);\n return;\n }\n\n Object.values(obj).forEach(traverse);\n }\n\n traverse(data);\n return transferables;\n}\n\n/**\n * Clone data, detaching transferables\n */\nexport function cloneForTransfer<T>(data: T): { data: T; transfer: Transferable[] } {\n const transfer = findTransferables(data);\n return { data, transfer };\n}\n\n/**\n * Create a typed event emitter\n */\nexport type EventHandler<T = unknown> = (data: T) => void;\n\nexport class EventEmitter<TEvents extends Record<string, unknown>> {\n private handlers = new Map<keyof TEvents, Set<EventHandler>>();\n\n on<K extends keyof TEvents>(event: K, handler: EventHandler<TEvents[K]>): () => void {\n if (!this.handlers.has(event)) {\n this.handlers.set(event, new Set());\n }\n this.handlers.get(event)!.add(handler as EventHandler);\n\n // Return unsubscribe function\n return () => this.off(event, handler);\n }\n\n off<K extends keyof TEvents>(event: K, handler: EventHandler<TEvents[K]>): void {\n this.handlers.get(event)?.delete(handler as EventHandler);\n }\n\n emit<K extends keyof TEvents>(event: K, data: TEvents[K]): void {\n this.handlers.get(event)?.forEach((handler) => {\n try {\n handler(data);\n } catch (err) {\n console.error(`Error in event handler for ${String(event)}:`, err);\n }\n });\n }\n\n removeAllListeners(event?: keyof TEvents): void {\n if (event) {\n this.handlers.delete(event);\n } else {\n this.handlers.clear();\n }\n }\n}\n\n/**\n * Simple LRU cache\n */\nexport class LRUCache<K, V> {\n private cache = new Map<K, V>();\n private maxSize: number;\n\n constructor(maxSize: number = 100) {\n this.maxSize = maxSize;\n }\n\n get(key: K): V | undefined {\n const value = this.cache.get(key);\n if (value !== undefined) {\n // Move to end (most recently used)\n this.cache.delete(key);\n this.cache.set(key, value);\n }\n return value;\n }\n\n set(key: K, value: V): void {\n if (this.cache.has(key)) {\n this.cache.delete(key);\n } else if (this.cache.size >= this.maxSize) {\n // Delete oldest (first) entry\n const firstKey = this.cache.keys().next().value;\n if (firstKey !== undefined) {\n this.cache.delete(firstKey);\n }\n }\n this.cache.set(key, value);\n }\n\n has(key: K): boolean {\n return this.cache.has(key);\n }\n\n delete(key: K): boolean {\n return this.cache.delete(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n get size(): number {\n return this.cache.size;\n }\n}\n\n/**\n * Serialize function to string for worker\n */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function serializeFunction(fn: Function): string {\n return fn.toString();\n}\n\n/**\n * Logger utility\n */\nexport interface Logger {\n debug(...args: unknown[]): void;\n info(...args: unknown[]): void;\n warn(...args: unknown[]): void;\n error(...args: unknown[]): void;\n}\n\nexport function createLogger(prefix: string, enabled: boolean = false): Logger {\n const noop = () => {};\n const log = (level: string) =>\n enabled ? (...args: unknown[]) => console.log(`[${prefix}:${level}]`, ...args) : noop;\n\n return {\n debug: log('debug'),\n info: log('info'),\n warn: enabled\n ? (...args: unknown[]) => console.warn(`[${prefix}:warn]`, ...args)\n : noop,\n error: (...args: unknown[]) => console.error(`[${prefix}:error]`, ...args),\n };\n}\n","/**\n * ComputeKit Worker Pool\n * Manages a pool of Web Workers for parallel computation\n */\n\nimport type {\n ComputeKitOptions,\n ComputeOptions,\n ComputeProgress,\n WorkerInfo,\n WorkerState,\n PoolStats,\n WorkerMessage,\n ExecutePayload,\n ResultPayload,\n ErrorPayload,\n ProgressPayload,\n} from './types';\n\nimport {\n generateId,\n createDeferred,\n withTimeout,\n findTransferables,\n getHardwareConcurrency,\n createLogger,\n type Deferred,\n type Logger,\n} from './utils';\n\n/** Task in the queue */\ninterface QueuedTask<T = unknown> {\n id: string;\n functionName: string;\n input: unknown;\n options?: ComputeOptions;\n deferred: Deferred<T>;\n priority: number;\n createdAt: number;\n onProgress?: (progress: ComputeProgress) => void;\n}\n\n/** Worker wrapper */\ninterface PoolWorker {\n id: string;\n worker: Worker;\n state: WorkerState;\n currentTask?: string;\n tasksCompleted: number;\n errors: number;\n createdAt: number;\n lastActiveAt: number;\n ready: boolean;\n readyPromise: Promise<void>;\n}\n\n/** Registry entry for compute functions */\ninterface RegisteredFunction {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n fn: Function;\n serialized: string;\n}\n\n/**\n * Worker Pool - manages Web Workers for parallel computation\n */\nexport class WorkerPool {\n private workers: Map<string, PoolWorker> = new Map();\n private taskQueue: QueuedTask[] = [];\n private pendingTasks: Map<string, QueuedTask> = new Map();\n private functions: Map<string, RegisteredFunction> = new Map();\n private workerUrl: string | null = null;\n private options: Required<ComputeKitOptions>;\n private logger: Logger;\n private initialized = false;\n private stats = {\n tasksCompleted: 0,\n tasksFailed: 0,\n totalDuration: 0,\n };\n\n constructor(options: ComputeKitOptions = {}) {\n this.options = {\n maxWorkers: options.maxWorkers ?? getHardwareConcurrency(),\n timeout: options.timeout ?? 30000,\n debug: options.debug ?? false,\n workerPath: options.workerPath ?? '',\n useSharedMemory: options.useSharedMemory ?? true,\n };\n\n this.logger = createLogger('ComputeKit:Pool', this.options.debug);\n this.logger.info('WorkerPool created with options:', this.options);\n }\n\n /**\n * Initialize the worker pool\n */\n async initialize(): Promise<void> {\n if (this.initialized) return;\n\n this.logger.info('Initializing worker pool...');\n this.logger.info('Registered functions:', Array.from(this.functions.keys()));\n this.workerUrl = this.createWorkerBlob();\n\n // Create initial workers\n const workerCount = Math.min(2, this.options.maxWorkers);\n for (let i = 0; i < workerCount; i++) {\n await this.createWorker();\n }\n\n this.initialized = true;\n this.logger.info(`Worker pool initialized with ${workerCount} workers`);\n }\n\n private pendingRecreate: Promise<void> | null = null;\n\n /**\n * Register a compute function\n */\n register<TInput, TOutput>(\n name: string,\n fn: (input: TInput) => TOutput | Promise<TOutput>\n ): void {\n this.logger.debug(`Registering function: ${name}`);\n this.functions.set(name, {\n fn,\n serialized: fn.toString(),\n });\n\n // If already initialized, we need to recreate workers with updated functions\n if (this.initialized) {\n this.pendingRecreate = this.recreateWorkers();\n } else {\n // If not initialized yet but workerUrl exists, revoke it so it gets recreated\n if (this.workerUrl) {\n URL.revokeObjectURL(this.workerUrl);\n this.workerUrl = null;\n }\n }\n }\n\n /**\n * Recreate workers with updated function registry\n */\n private async recreateWorkers(): Promise<void> {\n this.logger.debug('Recreating workers with updated functions...');\n\n // Revoke old blob URL\n if (this.workerUrl) {\n URL.revokeObjectURL(this.workerUrl);\n }\n\n // Create new worker blob with all functions\n this.workerUrl = this.createWorkerBlob();\n\n // Terminate existing idle workers and create new ones\n const idleWorkers = Array.from(this.workers.entries()).filter(\n ([_, w]) => w.state === 'idle'\n );\n\n for (const [id, poolWorker] of idleWorkers) {\n poolWorker.worker.terminate();\n this.workers.delete(id);\n }\n\n // Create new workers\n const workerCount = Math.max(\n 1,\n Math.min(2, this.options.maxWorkers) - this.workers.size\n );\n for (let i = 0; i < workerCount; i++) {\n await this.createWorker();\n }\n }\n\n /**\n * Execute a compute function\n */\n async execute<TInput, TOutput>(\n name: string,\n input: TInput,\n options?: ComputeOptions\n ): Promise<TOutput> {\n // Wait for any pending worker recreation\n if (this.pendingRecreate) {\n await this.pendingRecreate;\n this.pendingRecreate = null;\n }\n\n if (!this.initialized) {\n await this.initialize();\n }\n\n const fn = this.functions.get(name);\n if (!fn) {\n throw new Error(`Function \"${name}\" not registered`);\n }\n\n const taskId = generateId();\n const timeout = options?.timeout ?? this.options.timeout;\n\n this.logger.debug(`Executing task ${taskId} for function \"${name}\"`);\n\n // Check for abort signal\n if (options?.signal?.aborted) {\n throw new Error('Operation aborted');\n }\n\n const deferred = createDeferred<TOutput>();\n const task: QueuedTask<TOutput> = {\n id: taskId,\n functionName: name,\n input,\n options,\n deferred,\n priority: options?.priority ?? 5,\n createdAt: Date.now(),\n onProgress: options?.onProgress,\n };\n\n // Handle abort signal\n if (options?.signal) {\n options.signal.addEventListener('abort', () => {\n this.cancelTask(taskId);\n deferred.reject(new Error('Operation aborted'));\n });\n }\n\n // Add to queue\n this.enqueue(task);\n this.processQueue();\n\n return withTimeout(deferred.promise, timeout, `Task \"${name}\" timed out`);\n }\n\n /**\n * Get pool statistics\n */\n getStats(): PoolStats {\n const workers = Array.from(this.workers.values()).map(\n (w): WorkerInfo => ({\n id: w.id,\n state: w.state,\n currentTask: w.currentTask,\n tasksCompleted: w.tasksCompleted,\n errors: w.errors,\n createdAt: w.createdAt,\n lastActiveAt: w.lastActiveAt,\n })\n );\n\n return {\n workers,\n totalWorkers: this.workers.size,\n activeWorkers: workers.filter((w) => w.state === 'busy').length,\n idleWorkers: workers.filter((w) => w.state === 'idle').length,\n queueLength: this.taskQueue.length,\n tasksCompleted: this.stats.tasksCompleted,\n tasksFailed: this.stats.tasksFailed,\n averageTaskDuration:\n this.stats.tasksCompleted > 0\n ? this.stats.totalDuration / this.stats.tasksCompleted\n : 0,\n };\n }\n\n /**\n * Terminate all workers and clean up\n */\n async terminate(): Promise<void> {\n this.logger.info('Terminating worker pool...');\n\n // Reject all pending tasks\n for (const task of this.pendingTasks.values()) {\n task.deferred.reject(new Error('Worker pool terminated'));\n }\n this.pendingTasks.clear();\n this.taskQueue = [];\n\n // Terminate all workers\n for (const poolWorker of this.workers.values()) {\n poolWorker.worker.terminate();\n poolWorker.state = 'terminated';\n }\n this.workers.clear();\n\n // Revoke blob URL\n if (this.workerUrl) {\n URL.revokeObjectURL(this.workerUrl);\n this.workerUrl = null;\n }\n\n this.initialized = false;\n this.logger.info('Worker pool terminated');\n }\n\n /**\n * Create the worker blob URL\n */\n private createWorkerBlob(): string {\n // Serialize all registered functions\n const functionsCode = Array.from(this.functions.entries())\n .map(([name, { serialized }]) => `\"${name}\": ${serialized}`)\n .join(',\\n');\n\n this.logger.debug(\n 'Creating worker blob with functions:',\n Array.from(this.functions.keys())\n );\n\n const workerCode = `\nconst functions = {\n${functionsCode}\n};\n\nself.onmessage = function(e) {\n const msg = e.data;\n if (msg.type === 'execute') {\n const fn = functions[msg.payload.functionName];\n if (!fn) {\n self.postMessage({ id: msg.id, type: 'error', payload: { message: 'Function not found: ' + msg.payload.functionName } });\n return;\n }\n try {\n const start = performance.now();\n Promise.resolve(fn(msg.payload.input)).then(function(result) {\n self.postMessage({ id: msg.id, type: 'result', payload: { data: result, duration: performance.now() - start } });\n }).catch(function(err) {\n self.postMessage({ id: msg.id, type: 'error', payload: { message: err.message || String(err) } });\n });\n } catch (err) {\n self.postMessage({ id: msg.id, type: 'error', payload: { message: err.message || String(err) } });\n }\n }\n};\nself.postMessage({ type: 'ready' });\n`;\n\n const blob = new Blob([workerCode], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n }\n\n /**\n * Create a new worker\n */\n private async createWorker(): Promise<PoolWorker> {\n if (!this.workerUrl) {\n this.workerUrl = this.createWorkerBlob();\n }\n\n const id = generateId();\n const worker = new Worker(this.workerUrl);\n\n // Create ready promise\n let resolveReady: () => void;\n const readyPromise = new Promise<void>((resolve) => {\n resolveReady = resolve;\n });\n\n const poolWorker: PoolWorker = {\n id,\n worker,\n state: 'idle',\n tasksCompleted: 0,\n errors: 0,\n createdAt: Date.now(),\n lastActiveAt: Date.now(),\n ready: false,\n readyPromise,\n };\n\n // Set up message handler\n worker.onmessage = (e: MessageEvent<WorkerMessage>) => {\n if (e.data.type === 'ready') {\n poolWorker.ready = true;\n resolveReady!();\n }\n this.handleWorkerMessage(poolWorker, e.data);\n };\n\n worker.onerror = (e: ErrorEvent) => {\n this.handleWorkerError(poolWorker, e);\n };\n\n this.workers.set(id, poolWorker);\n this.logger.debug(`Created worker ${id}`);\n\n // Wait for worker to be ready\n await readyPromise;\n this.logger.debug(`Worker ${id} is ready`);\n\n return poolWorker;\n }\n\n /**\n * Handle messages from workers\n */\n private handleWorkerMessage(poolWorker: PoolWorker, message: WorkerMessage): void {\n this.logger.debug('Received message from worker:', message);\n const { id, type, payload } = message;\n\n switch (type) {\n case 'ready':\n this.logger.debug(`Worker ${poolWorker.id} ready`);\n break;\n\n case 'result': {\n const task = this.pendingTasks.get(id);\n if (task) {\n const resultPayload = payload as ResultPayload;\n this.pendingTasks.delete(id);\n poolWorker.state = 'idle';\n poolWorker.currentTask = undefined;\n poolWorker.tasksCompleted++;\n poolWorker.lastActiveAt = Date.now();\n\n this.stats.tasksCompleted++;\n this.stats.totalDuration += resultPayload.duration;\n\n this.logger.debug(\n `Task ${id} completed in ${resultPayload.duration.toFixed(2)}ms`\n );\n task.deferred.resolve(resultPayload.data);\n\n // Process next task\n this.processQueue();\n }\n break;\n }\n\n case 'error': {\n const task = this.pendingTasks.get(id);\n if (task) {\n const errorPayload = payload as ErrorPayload;\n this.pendingTasks.delete(id);\n poolWorker.state = 'idle';\n poolWorker.currentTask = undefined;\n poolWorker.errors++;\n poolWorker.lastActiveAt = Date.now();\n\n this.stats.tasksFailed++;\n\n const error = new Error(errorPayload.message);\n if (errorPayload.stack) {\n error.stack = errorPayload.stack;\n }\n\n this.logger.error(`Task ${id} failed:`, errorPayload.message);\n task.deferred.reject(error);\n\n // Process next task\n this.processQueue();\n }\n break;\n }\n\n case 'progress': {\n const progressPayload = payload as ProgressPayload;\n const task = this.pendingTasks.get(progressPayload.taskId);\n if (task?.onProgress) {\n task.onProgress(progressPayload.progress);\n }\n break;\n }\n }\n }\n\n /**\n * Handle worker errors\n */\n private handleWorkerError(poolWorker: PoolWorker, error: ErrorEvent): void {\n this.logger.error(`Worker ${poolWorker.id} error:`, error.message);\n poolWorker.state = 'error';\n poolWorker.errors++;\n\n // Reject current task if any\n if (poolWorker.currentTask) {\n const task = this.pendingTasks.get(poolWorker.currentTask);\n if (task) {\n this.pendingTasks.delete(poolWorker.currentTask);\n task.deferred.reject(new Error(`Worker error: ${error.message}`));\n }\n }\n\n // Terminate and recreate the worker\n poolWorker.worker.terminate();\n this.workers.delete(poolWorker.id);\n\n // Create a new worker to replace it\n this.createWorker().then(() => this.processQueue());\n }\n\n /**\n * Add task to queue (priority-based)\n */\n private enqueue<T>(task: QueuedTask<T>): void {\n // Insert based on priority (higher priority first)\n let inserted = false;\n for (let i = 0; i < this.taskQueue.length; i++) {\n if (task.priority > this.taskQueue[i].priority) {\n this.taskQueue.splice(i, 0, task as QueuedTask);\n inserted = true;\n break;\n }\n }\n if (!inserted) {\n this.taskQueue.push(task as QueuedTask);\n }\n }\n\n /**\n * Process queued tasks\n */\n private async processQueue(): Promise<void> {\n if (this.taskQueue.length === 0) return;\n\n // Find an idle worker\n let idleWorker: PoolWorker | undefined;\n for (const worker of this.workers.values()) {\n if (worker.state === 'idle') {\n idleWorker = worker;\n break;\n }\n }\n\n // Create new worker if needed and under limit\n if (!idleWorker && this.workers.size < this.options.maxWorkers) {\n idleWorker = await this.createWorker();\n }\n\n if (!idleWorker) return;\n\n // Get next task\n const task = this.taskQueue.shift();\n if (!task) return;\n\n // Execute task\n this.executeOnWorker(idleWorker, task);\n\n // Continue processing if more tasks\n if (this.taskQueue.length > 0) {\n this.processQueue();\n }\n }\n\n /**\n * Execute task on a specific worker\n */\n private executeOnWorker(poolWorker: PoolWorker, task: QueuedTask): void {\n this.logger.debug(\n `executeOnWorker: Starting task ${task.id} (${task.functionName}) on worker ${poolWorker.id}`\n );\n poolWorker.state = 'busy';\n poolWorker.currentTask = task.id;\n poolWorker.lastActiveAt = Date.now();\n\n this.pendingTasks.set(task.id, task);\n\n const message: WorkerMessage<ExecutePayload> = {\n id: task.id,\n type: 'execute',\n payload: {\n functionName: task.functionName,\n input: task.input,\n // Don't send options - they may contain non-cloneable objects like AbortSignal\n },\n timestamp: Date.now(),\n };\n\n // Find transferables in input\n const transfer = findTransferables(task.input);\n\n this.logger.debug(`Posting message to worker:`, message);\n poolWorker.worker.postMessage(message, transfer);\n this.logger.debug(`Message posted to worker ${poolWorker.id}`);\n }\n\n /**\n * Cancel a pending task\n */\n private cancelTask(taskId: string): void {\n // Remove from queue\n const queueIndex = this.taskQueue.findIndex((t) => t.id === taskId);\n if (queueIndex !== -1) {\n this.taskQueue.splice(queueIndex, 1);\n }\n\n // Remove from pending (worker will complete but result ignored)\n this.pendingTasks.delete(taskId);\n }\n}\n","/**\n * ComputeKit WASM Loader\n * Utilities for loading and managing WebAssembly modules\n */\n\nimport type { WasmModuleConfig } from './types';\nimport { createLogger, LRUCache } from './utils';\n\nconst logger = createLogger('ComputeKit:WASM');\n\n/** Cached WASM modules */\nconst moduleCache = new LRUCache<string, WebAssembly.Module>(10);\n\n/** Cached WASM instances */\nconst instanceCache = new LRUCache<string, WebAssembly.Instance>(10);\n\n/**\n * Load a WASM module from various sources\n */\nexport async function loadWasmModule(\n source: string | ArrayBuffer | Uint8Array\n): Promise<WebAssembly.Module> {\n // Check cache for string sources\n if (typeof source === 'string') {\n const cached = moduleCache.get(source);\n if (cached) {\n logger.debug('Using cached WASM module:', source);\n return cached;\n }\n }\n\n let bytes: ArrayBuffer | Uint8Array;\n\n if (typeof source === 'string') {\n if (source.startsWith('data:')) {\n // Base64 encoded WASM\n const base64 = source.split(',')[1];\n bytes = Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));\n } else {\n // URL to WASM file\n logger.debug('Fetching WASM from:', source);\n const response = await fetch(source);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch WASM: ${response.statusText}`);\n }\n\n // Use streaming compilation if available\n if (WebAssembly.compileStreaming) {\n const module = await WebAssembly.compileStreaming(response);\n moduleCache.set(source, module);\n return module;\n }\n\n bytes = await response.arrayBuffer();\n }\n } else {\n bytes = source;\n }\n\n // Compile the module\n const module = await WebAssembly.compile(bytes as BufferSource);\n\n if (typeof source === 'string') {\n moduleCache.set(source, module);\n }\n\n return module;\n}\n\n/**\n * Instantiate a WASM module with imports\n */\nexport async function instantiateWasm(\n module: WebAssembly.Module,\n imports: WebAssembly.Imports = {}\n): Promise<WebAssembly.Instance> {\n return WebAssembly.instantiate(module, imports);\n}\n\n/**\n * Load and instantiate a WASM module in one step\n */\nexport async function loadAndInstantiate(\n config: WasmModuleConfig\n): Promise<{ module: WebAssembly.Module; instance: WebAssembly.Instance }> {\n const { source, imports = {}, memory } = config;\n\n // Create memory if specified\n const wasmImports: WebAssembly.Imports = { ...imports };\n if (memory) {\n wasmImports.env = {\n ...wasmImports.env,\n memory: new WebAssembly.Memory({\n initial: memory.initial,\n maximum: memory.maximum,\n shared: memory.shared,\n }),\n };\n }\n\n const module = await loadWasmModule(source);\n const instance = await instantiateWasm(module, wasmImports);\n\n return { module, instance };\n}\n\n/**\n * Create a WASM module from AssemblyScript-compiled bytes\n */\nexport async function loadAssemblyScript(\n source: string | ArrayBuffer,\n imports: WebAssembly.Imports = {}\n): Promise<{\n module: WebAssembly.Module;\n instance: WebAssembly.Instance;\n exports: Record<string, unknown>;\n}> {\n // Default AssemblyScript imports\n const defaultImports: WebAssembly.Imports = {\n env: {\n abort: (_message: number, fileName: number, line: number, column: number) => {\n console.error(`AssemblyScript abort at ${fileName}:${line}:${column}`);\n },\n seed: () => Date.now(),\n ...((imports.env as object) || {}),\n },\n ...imports,\n };\n\n const { module, instance } = await loadAndInstantiate({\n source,\n imports: defaultImports,\n });\n\n return {\n module,\n instance,\n exports: instance.exports as Record<string, unknown>,\n };\n}\n\n/**\n * Helper to wrap WASM exports for easier use\n */\nexport function wrapWasmExports<T extends Record<string, unknown>>(\n instance: WebAssembly.Instance\n): T {\n return instance.exports as T;\n}\n\n/**\n * Create a typed array view into WASM memory\n */\nexport function getMemoryView<T extends ArrayBufferView>(\n memory: WebAssembly.Memory,\n ArrayType: new (buffer: ArrayBuffer, byteOffset?: number, length?: number) => T,\n offset: number = 0,\n length?: number\n): T {\n return new ArrayType(memory.buffer, offset, length);\n}\n\n/**\n * Copy data to WASM memory\n */\nexport function copyToWasmMemory(\n memory: WebAssembly.Memory,\n data: ArrayBufferView,\n offset: number\n): void {\n const view = new Uint8Array(memory.buffer);\n const source = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n view.set(source, offset);\n}\n\n/**\n * Copy data from WASM memory\n */\nexport function copyFromWasmMemory(\n memory: WebAssembly.Memory,\n offset: number,\n length: number\n): Uint8Array {\n const view = new Uint8Array(memory.buffer, offset, length);\n return new Uint8Array(view); // Copy to detach from WASM memory\n}\n\n/**\n * Clear module caches\n */\nexport function clearWasmCache(): void {\n moduleCache.clear();\n instanceCache.clear();\n}\n\n/**\n * Get cache statistics\n */\nexport function getWasmCacheStats(): { modules: number; instances: number } {\n return {\n modules: moduleCache.size,\n instances: instanceCache.size,\n };\n}\n","/**\n * ComputeKit - Main Entry Point\n * WASM + Worker toolkit for React & Web apps\n */\n\nimport type {\n ComputeKitOptions,\n ComputeOptions,\n ComputeResult,\n PoolStats,\n ComputeKitEvents,\n} from './types';\n\nimport { WorkerPool } from './pool';\nimport { EventEmitter, isWasmSupported, createLogger } from './utils';\n\nconst logger = createLogger('ComputeKit');\n\n/**\n * ComputeKit - The main class for managing compute operations\n *\n * @example\n * ```ts\n * import { ComputeKit } from '@computekit/core';\n *\n * const kit = new ComputeKit();\n *\n * // Register a compute function\n * kit.register('fibonacci', (n: number) => {\n * if (n <= 1) return n;\n * let a = 0, b = 1;\n * for (let i = 2; i <= n; i++) {\n * [a, b] = [b, a + b];\n * }\n * return b;\n * });\n *\n * // Execute the function\n * const result = await kit.run('fibonacci', 50);\n * console.log(result); // 12586269025\n * ```\n */\nexport class ComputeKit extends EventEmitter<ComputeKitEvents> {\n private pool: WorkerPool;\n\n constructor(options: ComputeKitOptions = {}) {\n super();\n this.pool = new WorkerPool(options);\n logger.debug('ComputeKit initialized', options);\n }\n\n /**\n * Initialize ComputeKit\n * Called automatically on first run, but can be called manually for eager initialization\n */\n async initialize(): Promise<void> {\n await this.pool.initialize();\n }\n\n /**\n * Register a compute function\n *\n * @param name - Unique name for the function\n * @param fn - The function to execute (will run in a Web Worker)\n *\n * @example\n * ```ts\n * kit.register('sum', (arr: number[]) => arr.reduce((a, b) => a + b, 0));\n * ```\n */\n register<TInput, TOutput>(\n name: string,\n fn: (input: TInput) => TOutput | Promise<TOutput>\n ): this {\n this.pool.register(name, fn);\n return this;\n }\n\n /**\n * Execute a registered compute function\n *\n * @param name - Name of the registered function\n * @param input - Input data for the function\n * @param options - Execution options\n * @returns Promise resolving to the function result\n *\n * @example\n * ```ts\n * const sum = await kit.run('sum', [1, 2, 3, 4, 5]);\n * ```\n */\n async run<TInput, TOutput>(\n name: string,\n input: TInput,\n options?: ComputeOptions\n ): Promise<TOutput> {\n return this.pool.execute<TInput, TOutput>(name, input, options);\n }\n\n /**\n * Execute a registered compute function with full result metadata\n *\n * @param name - Name of the registered function\n * @param input - Input data for the function\n * @param options - Execution options\n * @returns Promise resolving to ComputeResult with metadata\n *\n * @example\n * ```ts\n * const result = await kit.runWithMetadata('sum', data);\n * console.log(`Took ${result.duration}ms`);\n * ```\n */\n async runWithMetadata<TInput, TOutput>(\n name: string,\n input: TInput,\n options?: ComputeOptions\n ): Promise<ComputeResult<TOutput>> {\n const startTime = performance.now();\n const data = await this.pool.execute<TInput, TOutput>(name, input, options);\n const duration = performance.now() - startTime;\n\n return {\n data,\n duration,\n cached: false,\n workerId: 'unknown', // Would need pool changes to track this\n };\n }\n\n /**\n * Get pool statistics\n */\n getStats(): PoolStats {\n return this.pool.getStats();\n }\n\n /**\n * Check if WebAssembly is supported\n */\n isWasmSupported(): boolean {\n return isWasmSupported();\n }\n\n /**\n * Terminate the worker pool and clean up resources\n */\n async terminate(): Promise<void> {\n await this.pool.terminate();\n this.removeAllListeners();\n }\n}\n\n/**\n * Create a pre-configured ComputeKit instance\n */\nexport function createComputeKit(options?: ComputeKitOptions): ComputeKit {\n return new ComputeKit(options);\n}\n\n/**\n * Default shared instance\n */\nlet defaultInstance: ComputeKit | null = null;\n\n/**\n * Get the default shared ComputeKit instance\n */\nexport function getDefaultInstance(): ComputeKit {\n if (!defaultInstance) {\n defaultInstance = new ComputeKit();\n }\n return defaultInstance;\n}\n\n/**\n * Register a function on the default instance\n */\nexport function register<TInput, TOutput>(\n name: string,\n fn: (input: TInput) => TOutput | Promise<TOutput>\n): void {\n getDefaultInstance().register(name, fn);\n}\n\n/**\n * Run a function on the default instance\n */\nexport async function run<TInput, TOutput>(\n name: string,\n input: TInput,\n options?: ComputeOptions\n): Promise<TOutput> {\n return getDefaultInstance().run<TInput, TOutput>(name, input, options);\n}\n\n// Re-export types\nexport type {\n ComputeKitOptions,\n ComputeOptions,\n ComputeProgress,\n ComputeResult,\n ComputeFunction,\n PoolStats,\n WorkerInfo,\n WasmModuleConfig,\n ComputeKitEvents,\n} from './types';\n\n// Re-export utilities\nexport {\n isWasmSupported,\n isSharedArrayBufferAvailable,\n getHardwareConcurrency,\n findTransferables,\n} from './utils';\n\n// Re-export WASM utilities\nexport {\n loadWasmModule,\n loadAndInstantiate,\n loadAssemblyScript,\n wrapWasmExports,\n getMemoryView,\n copyToWasmMemory,\n copyFromWasmMemory,\n clearWasmCache,\n getWasmCacheStats,\n} from './wasm';\n\n// Re-export pool\nexport { WorkerPool } from './pool';\n"]}
@@ -0,0 +1,270 @@
1
+ import { W as WasmModuleConfig, C as ComputeKitOptions, a as ComputeOptions, P as PoolStats, b as ComputeKitEvents, c as ComputeResult } from './types-AaH5nWxG.cjs';
2
+ export { e as ComputeFunction, d as ComputeProgress, f as WorkerInfo } from './types-AaH5nWxG.cjs';
3
+
4
+ /**
5
+ * Check if SharedArrayBuffer is available
6
+ */
7
+ declare function isSharedArrayBufferAvailable(): boolean;
8
+ /**
9
+ * Check if WASM is supported
10
+ */
11
+ declare function isWasmSupported(): boolean;
12
+ /**
13
+ * Get the number of logical processors
14
+ */
15
+ declare function getHardwareConcurrency(): number;
16
+ /**
17
+ * Detect transferable objects in data
18
+ */
19
+ declare function findTransferables(data: unknown): Transferable[];
20
+ /**
21
+ * Create a typed event emitter
22
+ */
23
+ type EventHandler<T = unknown> = (data: T) => void;
24
+ declare class EventEmitter<TEvents extends Record<string, unknown>> {
25
+ private handlers;
26
+ on<K extends keyof TEvents>(event: K, handler: EventHandler<TEvents[K]>): () => void;
27
+ off<K extends keyof TEvents>(event: K, handler: EventHandler<TEvents[K]>): void;
28
+ emit<K extends keyof TEvents>(event: K, data: TEvents[K]): void;
29
+ removeAllListeners(event?: keyof TEvents): void;
30
+ }
31
+
32
+ /**
33
+ * ComputeKit WASM Loader
34
+ * Utilities for loading and managing WebAssembly modules
35
+ */
36
+
37
+ /**
38
+ * Load a WASM module from various sources
39
+ */
40
+ declare function loadWasmModule(source: string | ArrayBuffer | Uint8Array): Promise<WebAssembly.Module>;
41
+ /**
42
+ * Load and instantiate a WASM module in one step
43
+ */
44
+ declare function loadAndInstantiate(config: WasmModuleConfig): Promise<{
45
+ module: WebAssembly.Module;
46
+ instance: WebAssembly.Instance;
47
+ }>;
48
+ /**
49
+ * Create a WASM module from AssemblyScript-compiled bytes
50
+ */
51
+ declare function loadAssemblyScript(source: string | ArrayBuffer, imports?: WebAssembly.Imports): Promise<{
52
+ module: WebAssembly.Module;
53
+ instance: WebAssembly.Instance;
54
+ exports: Record<string, unknown>;
55
+ }>;
56
+ /**
57
+ * Helper to wrap WASM exports for easier use
58
+ */
59
+ declare function wrapWasmExports<T extends Record<string, unknown>>(instance: WebAssembly.Instance): T;
60
+ /**
61
+ * Create a typed array view into WASM memory
62
+ */
63
+ declare function getMemoryView<T extends ArrayBufferView>(memory: WebAssembly.Memory, ArrayType: new (buffer: ArrayBuffer, byteOffset?: number, length?: number) => T, offset?: number, length?: number): T;
64
+ /**
65
+ * Copy data to WASM memory
66
+ */
67
+ declare function copyToWasmMemory(memory: WebAssembly.Memory, data: ArrayBufferView, offset: number): void;
68
+ /**
69
+ * Copy data from WASM memory
70
+ */
71
+ declare function copyFromWasmMemory(memory: WebAssembly.Memory, offset: number, length: number): Uint8Array;
72
+ /**
73
+ * Clear module caches
74
+ */
75
+ declare function clearWasmCache(): void;
76
+ /**
77
+ * Get cache statistics
78
+ */
79
+ declare function getWasmCacheStats(): {
80
+ modules: number;
81
+ instances: number;
82
+ };
83
+
84
+ /**
85
+ * ComputeKit Worker Pool
86
+ * Manages a pool of Web Workers for parallel computation
87
+ */
88
+
89
+ /**
90
+ * Worker Pool - manages Web Workers for parallel computation
91
+ */
92
+ declare class WorkerPool {
93
+ private workers;
94
+ private taskQueue;
95
+ private pendingTasks;
96
+ private functions;
97
+ private workerUrl;
98
+ private options;
99
+ private logger;
100
+ private initialized;
101
+ private stats;
102
+ constructor(options?: ComputeKitOptions);
103
+ /**
104
+ * Initialize the worker pool
105
+ */
106
+ initialize(): Promise<void>;
107
+ private pendingRecreate;
108
+ /**
109
+ * Register a compute function
110
+ */
111
+ register<TInput, TOutput>(name: string, fn: (input: TInput) => TOutput | Promise<TOutput>): void;
112
+ /**
113
+ * Recreate workers with updated function registry
114
+ */
115
+ private recreateWorkers;
116
+ /**
117
+ * Execute a compute function
118
+ */
119
+ execute<TInput, TOutput>(name: string, input: TInput, options?: ComputeOptions): Promise<TOutput>;
120
+ /**
121
+ * Get pool statistics
122
+ */
123
+ getStats(): PoolStats;
124
+ /**
125
+ * Terminate all workers and clean up
126
+ */
127
+ terminate(): Promise<void>;
128
+ /**
129
+ * Create the worker blob URL
130
+ */
131
+ private createWorkerBlob;
132
+ /**
133
+ * Create a new worker
134
+ */
135
+ private createWorker;
136
+ /**
137
+ * Handle messages from workers
138
+ */
139
+ private handleWorkerMessage;
140
+ /**
141
+ * Handle worker errors
142
+ */
143
+ private handleWorkerError;
144
+ /**
145
+ * Add task to queue (priority-based)
146
+ */
147
+ private enqueue;
148
+ /**
149
+ * Process queued tasks
150
+ */
151
+ private processQueue;
152
+ /**
153
+ * Execute task on a specific worker
154
+ */
155
+ private executeOnWorker;
156
+ /**
157
+ * Cancel a pending task
158
+ */
159
+ private cancelTask;
160
+ }
161
+
162
+ /**
163
+ * ComputeKit - Main Entry Point
164
+ * WASM + Worker toolkit for React & Web apps
165
+ */
166
+
167
+ /**
168
+ * ComputeKit - The main class for managing compute operations
169
+ *
170
+ * @example
171
+ * ```ts
172
+ * import { ComputeKit } from '@computekit/core';
173
+ *
174
+ * const kit = new ComputeKit();
175
+ *
176
+ * // Register a compute function
177
+ * kit.register('fibonacci', (n: number) => {
178
+ * if (n <= 1) return n;
179
+ * let a = 0, b = 1;
180
+ * for (let i = 2; i <= n; i++) {
181
+ * [a, b] = [b, a + b];
182
+ * }
183
+ * return b;
184
+ * });
185
+ *
186
+ * // Execute the function
187
+ * const result = await kit.run('fibonacci', 50);
188
+ * console.log(result); // 12586269025
189
+ * ```
190
+ */
191
+ declare class ComputeKit extends EventEmitter<ComputeKitEvents> {
192
+ private pool;
193
+ constructor(options?: ComputeKitOptions);
194
+ /**
195
+ * Initialize ComputeKit
196
+ * Called automatically on first run, but can be called manually for eager initialization
197
+ */
198
+ initialize(): Promise<void>;
199
+ /**
200
+ * Register a compute function
201
+ *
202
+ * @param name - Unique name for the function
203
+ * @param fn - The function to execute (will run in a Web Worker)
204
+ *
205
+ * @example
206
+ * ```ts
207
+ * kit.register('sum', (arr: number[]) => arr.reduce((a, b) => a + b, 0));
208
+ * ```
209
+ */
210
+ register<TInput, TOutput>(name: string, fn: (input: TInput) => TOutput | Promise<TOutput>): this;
211
+ /**
212
+ * Execute a registered compute function
213
+ *
214
+ * @param name - Name of the registered function
215
+ * @param input - Input data for the function
216
+ * @param options - Execution options
217
+ * @returns Promise resolving to the function result
218
+ *
219
+ * @example
220
+ * ```ts
221
+ * const sum = await kit.run('sum', [1, 2, 3, 4, 5]);
222
+ * ```
223
+ */
224
+ run<TInput, TOutput>(name: string, input: TInput, options?: ComputeOptions): Promise<TOutput>;
225
+ /**
226
+ * Execute a registered compute function with full result metadata
227
+ *
228
+ * @param name - Name of the registered function
229
+ * @param input - Input data for the function
230
+ * @param options - Execution options
231
+ * @returns Promise resolving to ComputeResult with metadata
232
+ *
233
+ * @example
234
+ * ```ts
235
+ * const result = await kit.runWithMetadata('sum', data);
236
+ * console.log(`Took ${result.duration}ms`);
237
+ * ```
238
+ */
239
+ runWithMetadata<TInput, TOutput>(name: string, input: TInput, options?: ComputeOptions): Promise<ComputeResult<TOutput>>;
240
+ /**
241
+ * Get pool statistics
242
+ */
243
+ getStats(): PoolStats;
244
+ /**
245
+ * Check if WebAssembly is supported
246
+ */
247
+ isWasmSupported(): boolean;
248
+ /**
249
+ * Terminate the worker pool and clean up resources
250
+ */
251
+ terminate(): Promise<void>;
252
+ }
253
+ /**
254
+ * Create a pre-configured ComputeKit instance
255
+ */
256
+ declare function createComputeKit(options?: ComputeKitOptions): ComputeKit;
257
+ /**
258
+ * Get the default shared ComputeKit instance
259
+ */
260
+ declare function getDefaultInstance(): ComputeKit;
261
+ /**
262
+ * Register a function on the default instance
263
+ */
264
+ declare function register<TInput, TOutput>(name: string, fn: (input: TInput) => TOutput | Promise<TOutput>): void;
265
+ /**
266
+ * Run a function on the default instance
267
+ */
268
+ declare function run<TInput, TOutput>(name: string, input: TInput, options?: ComputeOptions): Promise<TOutput>;
269
+
270
+ export { ComputeKit, ComputeKitEvents, ComputeKitOptions, ComputeOptions, ComputeResult, PoolStats, WasmModuleConfig, WorkerPool, clearWasmCache, copyFromWasmMemory, copyToWasmMemory, createComputeKit, findTransferables, getDefaultInstance, getHardwareConcurrency, getMemoryView, getWasmCacheStats, isSharedArrayBufferAvailable, isWasmSupported, loadAndInstantiate, loadAssemblyScript, loadWasmModule, register, run, wrapWasmExports };
@@ -0,0 +1,270 @@
1
+ import { W as WasmModuleConfig, C as ComputeKitOptions, a as ComputeOptions, P as PoolStats, b as ComputeKitEvents, c as ComputeResult } from './types-AaH5nWxG.js';
2
+ export { e as ComputeFunction, d as ComputeProgress, f as WorkerInfo } from './types-AaH5nWxG.js';
3
+
4
+ /**
5
+ * Check if SharedArrayBuffer is available
6
+ */
7
+ declare function isSharedArrayBufferAvailable(): boolean;
8
+ /**
9
+ * Check if WASM is supported
10
+ */
11
+ declare function isWasmSupported(): boolean;
12
+ /**
13
+ * Get the number of logical processors
14
+ */
15
+ declare function getHardwareConcurrency(): number;
16
+ /**
17
+ * Detect transferable objects in data
18
+ */
19
+ declare function findTransferables(data: unknown): Transferable[];
20
+ /**
21
+ * Create a typed event emitter
22
+ */
23
+ type EventHandler<T = unknown> = (data: T) => void;
24
+ declare class EventEmitter<TEvents extends Record<string, unknown>> {
25
+ private handlers;
26
+ on<K extends keyof TEvents>(event: K, handler: EventHandler<TEvents[K]>): () => void;
27
+ off<K extends keyof TEvents>(event: K, handler: EventHandler<TEvents[K]>): void;
28
+ emit<K extends keyof TEvents>(event: K, data: TEvents[K]): void;
29
+ removeAllListeners(event?: keyof TEvents): void;
30
+ }
31
+
32
+ /**
33
+ * ComputeKit WASM Loader
34
+ * Utilities for loading and managing WebAssembly modules
35
+ */
36
+
37
+ /**
38
+ * Load a WASM module from various sources
39
+ */
40
+ declare function loadWasmModule(source: string | ArrayBuffer | Uint8Array): Promise<WebAssembly.Module>;
41
+ /**
42
+ * Load and instantiate a WASM module in one step
43
+ */
44
+ declare function loadAndInstantiate(config: WasmModuleConfig): Promise<{
45
+ module: WebAssembly.Module;
46
+ instance: WebAssembly.Instance;
47
+ }>;
48
+ /**
49
+ * Create a WASM module from AssemblyScript-compiled bytes
50
+ */
51
+ declare function loadAssemblyScript(source: string | ArrayBuffer, imports?: WebAssembly.Imports): Promise<{
52
+ module: WebAssembly.Module;
53
+ instance: WebAssembly.Instance;
54
+ exports: Record<string, unknown>;
55
+ }>;
56
+ /**
57
+ * Helper to wrap WASM exports for easier use
58
+ */
59
+ declare function wrapWasmExports<T extends Record<string, unknown>>(instance: WebAssembly.Instance): T;
60
+ /**
61
+ * Create a typed array view into WASM memory
62
+ */
63
+ declare function getMemoryView<T extends ArrayBufferView>(memory: WebAssembly.Memory, ArrayType: new (buffer: ArrayBuffer, byteOffset?: number, length?: number) => T, offset?: number, length?: number): T;
64
+ /**
65
+ * Copy data to WASM memory
66
+ */
67
+ declare function copyToWasmMemory(memory: WebAssembly.Memory, data: ArrayBufferView, offset: number): void;
68
+ /**
69
+ * Copy data from WASM memory
70
+ */
71
+ declare function copyFromWasmMemory(memory: WebAssembly.Memory, offset: number, length: number): Uint8Array;
72
+ /**
73
+ * Clear module caches
74
+ */
75
+ declare function clearWasmCache(): void;
76
+ /**
77
+ * Get cache statistics
78
+ */
79
+ declare function getWasmCacheStats(): {
80
+ modules: number;
81
+ instances: number;
82
+ };
83
+
84
+ /**
85
+ * ComputeKit Worker Pool
86
+ * Manages a pool of Web Workers for parallel computation
87
+ */
88
+
89
+ /**
90
+ * Worker Pool - manages Web Workers for parallel computation
91
+ */
92
+ declare class WorkerPool {
93
+ private workers;
94
+ private taskQueue;
95
+ private pendingTasks;
96
+ private functions;
97
+ private workerUrl;
98
+ private options;
99
+ private logger;
100
+ private initialized;
101
+ private stats;
102
+ constructor(options?: ComputeKitOptions);
103
+ /**
104
+ * Initialize the worker pool
105
+ */
106
+ initialize(): Promise<void>;
107
+ private pendingRecreate;
108
+ /**
109
+ * Register a compute function
110
+ */
111
+ register<TInput, TOutput>(name: string, fn: (input: TInput) => TOutput | Promise<TOutput>): void;
112
+ /**
113
+ * Recreate workers with updated function registry
114
+ */
115
+ private recreateWorkers;
116
+ /**
117
+ * Execute a compute function
118
+ */
119
+ execute<TInput, TOutput>(name: string, input: TInput, options?: ComputeOptions): Promise<TOutput>;
120
+ /**
121
+ * Get pool statistics
122
+ */
123
+ getStats(): PoolStats;
124
+ /**
125
+ * Terminate all workers and clean up
126
+ */
127
+ terminate(): Promise<void>;
128
+ /**
129
+ * Create the worker blob URL
130
+ */
131
+ private createWorkerBlob;
132
+ /**
133
+ * Create a new worker
134
+ */
135
+ private createWorker;
136
+ /**
137
+ * Handle messages from workers
138
+ */
139
+ private handleWorkerMessage;
140
+ /**
141
+ * Handle worker errors
142
+ */
143
+ private handleWorkerError;
144
+ /**
145
+ * Add task to queue (priority-based)
146
+ */
147
+ private enqueue;
148
+ /**
149
+ * Process queued tasks
150
+ */
151
+ private processQueue;
152
+ /**
153
+ * Execute task on a specific worker
154
+ */
155
+ private executeOnWorker;
156
+ /**
157
+ * Cancel a pending task
158
+ */
159
+ private cancelTask;
160
+ }
161
+
162
+ /**
163
+ * ComputeKit - Main Entry Point
164
+ * WASM + Worker toolkit for React & Web apps
165
+ */
166
+
167
+ /**
168
+ * ComputeKit - The main class for managing compute operations
169
+ *
170
+ * @example
171
+ * ```ts
172
+ * import { ComputeKit } from '@computekit/core';
173
+ *
174
+ * const kit = new ComputeKit();
175
+ *
176
+ * // Register a compute function
177
+ * kit.register('fibonacci', (n: number) => {
178
+ * if (n <= 1) return n;
179
+ * let a = 0, b = 1;
180
+ * for (let i = 2; i <= n; i++) {
181
+ * [a, b] = [b, a + b];
182
+ * }
183
+ * return b;
184
+ * });
185
+ *
186
+ * // Execute the function
187
+ * const result = await kit.run('fibonacci', 50);
188
+ * console.log(result); // 12586269025
189
+ * ```
190
+ */
191
+ declare class ComputeKit extends EventEmitter<ComputeKitEvents> {
192
+ private pool;
193
+ constructor(options?: ComputeKitOptions);
194
+ /**
195
+ * Initialize ComputeKit
196
+ * Called automatically on first run, but can be called manually for eager initialization
197
+ */
198
+ initialize(): Promise<void>;
199
+ /**
200
+ * Register a compute function
201
+ *
202
+ * @param name - Unique name for the function
203
+ * @param fn - The function to execute (will run in a Web Worker)
204
+ *
205
+ * @example
206
+ * ```ts
207
+ * kit.register('sum', (arr: number[]) => arr.reduce((a, b) => a + b, 0));
208
+ * ```
209
+ */
210
+ register<TInput, TOutput>(name: string, fn: (input: TInput) => TOutput | Promise<TOutput>): this;
211
+ /**
212
+ * Execute a registered compute function
213
+ *
214
+ * @param name - Name of the registered function
215
+ * @param input - Input data for the function
216
+ * @param options - Execution options
217
+ * @returns Promise resolving to the function result
218
+ *
219
+ * @example
220
+ * ```ts
221
+ * const sum = await kit.run('sum', [1, 2, 3, 4, 5]);
222
+ * ```
223
+ */
224
+ run<TInput, TOutput>(name: string, input: TInput, options?: ComputeOptions): Promise<TOutput>;
225
+ /**
226
+ * Execute a registered compute function with full result metadata
227
+ *
228
+ * @param name - Name of the registered function
229
+ * @param input - Input data for the function
230
+ * @param options - Execution options
231
+ * @returns Promise resolving to ComputeResult with metadata
232
+ *
233
+ * @example
234
+ * ```ts
235
+ * const result = await kit.runWithMetadata('sum', data);
236
+ * console.log(`Took ${result.duration}ms`);
237
+ * ```
238
+ */
239
+ runWithMetadata<TInput, TOutput>(name: string, input: TInput, options?: ComputeOptions): Promise<ComputeResult<TOutput>>;
240
+ /**
241
+ * Get pool statistics
242
+ */
243
+ getStats(): PoolStats;
244
+ /**
245
+ * Check if WebAssembly is supported
246
+ */
247
+ isWasmSupported(): boolean;
248
+ /**
249
+ * Terminate the worker pool and clean up resources
250
+ */
251
+ terminate(): Promise<void>;
252
+ }
253
+ /**
254
+ * Create a pre-configured ComputeKit instance
255
+ */
256
+ declare function createComputeKit(options?: ComputeKitOptions): ComputeKit;
257
+ /**
258
+ * Get the default shared ComputeKit instance
259
+ */
260
+ declare function getDefaultInstance(): ComputeKit;
261
+ /**
262
+ * Register a function on the default instance
263
+ */
264
+ declare function register<TInput, TOutput>(name: string, fn: (input: TInput) => TOutput | Promise<TOutput>): void;
265
+ /**
266
+ * Run a function on the default instance
267
+ */
268
+ declare function run<TInput, TOutput>(name: string, input: TInput, options?: ComputeOptions): Promise<TOutput>;
269
+
270
+ export { ComputeKit, ComputeKitEvents, ComputeKitOptions, ComputeOptions, ComputeResult, PoolStats, WasmModuleConfig, WorkerPool, clearWasmCache, copyFromWasmMemory, copyToWasmMemory, createComputeKit, findTransferables, getDefaultInstance, getHardwareConcurrency, getMemoryView, getWasmCacheStats, isSharedArrayBufferAvailable, isWasmSupported, loadAndInstantiate, loadAssemblyScript, loadWasmModule, register, run, wrapWasmExports };