@squoosh-kit/jxl 0.2.8 → 0.2.9

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.
@@ -1,20 +1,21 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../runtime/src/env.ts", "../../runtime/src/worker-call.ts", "../../runtime/src/worker-helper.ts", "../../runtime/src/wasm-loader.ts", "../../runtime/src/validators.ts", "../../runtime/src/image-data-polyfill.ts", "../../runtime/src/index.ts", "../src/validators.ts", "../src/jxl.worker.ts", "../src/bridge.ts", "../src/index.ts"],
3
+ "sources": ["../../runtime/src/env.ts", "../../runtime/src/bridge-mode.ts", "../../runtime/src/worker-call.ts", "../../runtime/src/worker-helper.ts", "../../runtime/src/wasm-loader.ts", "../../runtime/src/validators.ts", "../../runtime/src/image-data-polyfill.ts", "../../runtime/src/index.ts", "../src/validators.ts", "../src/jxl.worker.ts", "../src/bridge.ts", "../src/index.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * Runtime environment detection utilities\n */\n\n/**\n * Detect if running in a Web Worker context\n */\nexport function isWorker(): boolean {\n return (\n typeof self !== 'undefined' &&\n typeof (globalThis as unknown as { DedicatedWorkerGlobalScope?: unknown })\n .DedicatedWorkerGlobalScope !== 'undefined'\n );\n}\n\n/**\n * Detect if running in a browser context\n */\nexport function isBrowser(): boolean {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * Detect if running in Bun\n */\nexport function isBun(): boolean {\n return typeof Bun !== 'undefined';\n}\n\n/**\n * Detect if running in Node.js\n */\nexport function isNode(): boolean {\n return (\n typeof process !== 'undefined' &&\n process.versions != null &&\n process.versions.node != null\n );\n}\n\n/**\n * Check if ImageData is available in the current environment\n */\nexport function hasImageData(): boolean {\n return typeof ImageData !== 'undefined';\n}\n",
6
+ "import { isBrowser, isWorker } from './env';\n\nexport type BridgeMode = 'worker' | 'client' | 'auto';\n\nexport type ResolvedBridgeMode = 'worker' | 'client';\n\nexport function resolveBridgeMode(\n mode: BridgeMode = 'auto'\n): ResolvedBridgeMode {\n if (mode === 'worker' || mode === 'client') {\n return mode;\n }\n\n if (isBrowser() && !isWorker()) {\n return 'worker';\n }\n\n return 'client';\n}\n",
6
7
  "/**\n * Generic worker communication helper with support for transferables and AbortSignal\n */\n\nexport interface WorkerRequest<T = unknown> {\n type: string;\n id: number;\n payload: T;\n}\n\nexport interface WorkerResponse<T = unknown> {\n id: number;\n ok: boolean;\n data?: T;\n error?: string;\n}\n\nlet requestId = 0;\n\n/**\n * Call a worker with a typed request and wait for response\n *\n * @param worker - The worker instance to call\n * @param type - The message type\n * @param payload - The payload to send\n * @param signal - Optional AbortSignal to cancel the operation\n * @param transfer - Optional list of Transferable objects to transfer\n * @returns Promise that resolves with the worker's response data\n */\nexport async function callWorker<TPayload, TResponse>(\n worker: Worker,\n type: string,\n payload: TPayload,\n signal?: AbortSignal,\n transfer?: Transferable[]\n): Promise<TResponse> {\n return new Promise<TResponse>((resolve, reject) => {\n const id = ++requestId;\n\n // Check if already aborted\n if (signal?.aborted) {\n reject(new DOMException('Aborted', 'AbortError'));\n return;\n }\n\n const handleMessage = (event: MessageEvent) => {\n const response = event.data as WorkerResponse<TResponse>;\n if (response.id !== id) return;\n\n cleanup();\n\n if (response.ok && response.data !== undefined) {\n resolve(response.data);\n } else {\n reject(new Error(response.error || 'Unknown worker error'));\n }\n };\n\n const handleError = (error: ErrorEvent) => {\n cleanup();\n reject(new Error(`Worker error: ${error.message}`));\n };\n\n const handleAbort = () => {\n cleanup();\n reject(new DOMException('Aborted', 'AbortError'));\n };\n\n const cleanup = () => {\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n signal?.removeEventListener('abort', handleAbort);\n };\n\n // Set up listeners\n worker.addEventListener('message', handleMessage);\n worker.addEventListener('error', handleError);\n signal?.addEventListener('abort', handleAbort);\n\n // Send the request\n const request: WorkerRequest<TPayload> = { type, id, payload };\n\n if (transfer && transfer.length > 0) {\n worker.postMessage(request, transfer);\n } else {\n worker.postMessage(request);\n }\n });\n}\n",
7
8
  "/**\n * Worker helper utilities for creating and managing Web Workers\n *\n * This module provides centralized logic for creating worker instances\n * in different environments (browser, Node.js, Bun) using import.meta.resolve\n * for server-side and package-relative paths for browsers.\n */\n\nimport { isBun } from './env';\n\nexport const DEFAULT_BROWSER_ASSET_PATH = '/squoosh-kit';\n\ntype WorkerPackageConfig = {\n package: string;\n specifier: string;\n};\n\nfunction scriptUrlToPath(scriptUrl: string | URL): string {\n const href = typeof scriptUrl === 'string' ? scriptUrl : scriptUrl.href;\n if (href.startsWith('file://')) {\n return decodeURIComponent(\n href.startsWith('file:///') ? href.slice(7) : href.slice(5)\n );\n }\n return href;\n}\n\nfunction workerScriptExists(scriptUrl: string | URL): boolean {\n if (typeof window !== 'undefined') {\n return false;\n }\n\n const path = scriptUrlToPath(scriptUrl);\n\n if (typeof Bun !== 'undefined') {\n return (\n Bun.spawnSync(['test', '-f', path], {\n stdout: 'ignore',\n stderr: 'ignore',\n }).exitCode === 0\n );\n }\n\n try {\n const existsSync = Function('return require(\"node:fs\").existsSync')() as (\n filePath: string\n ) => boolean;\n return existsSync(path);\n } catch {\n return false;\n }\n}\n\nexport function resolveServerWorkerScript(\n workerConfig: WorkerPackageConfig,\n normalizedName: string\n): string | URL {\n const platformExt = isBun() ? 'bun.js' : 'node.mjs';\n const baseName = normalizedName.replace('.js', '');\n const pkgName = workerConfig.package.split('/')[1];\n\n if (typeof import.meta.resolve === 'function') {\n try {\n const resolved = import.meta.resolve(\n `${workerConfig.package}/${workerConfig.specifier}`\n );\n if (workerScriptExists(resolved)) {\n return resolved;\n }\n } catch {\n // Continue to monorepo fallbacks\n }\n }\n\n const candidates = [\n new URL(\n `../../${pkgName}/dist/${baseName}.${platformExt}`,\n import.meta.url\n ),\n new URL(`../../${pkgName}/src/${baseName}.ts`, import.meta.url),\n ];\n\n for (const candidate of candidates) {\n if (workerScriptExists(candidate)) {\n return candidate;\n }\n }\n\n throw new Error(\n `Failed to resolve worker script for ${normalizedName}. ` +\n `Tried import.meta.resolve, dist output, and TypeScript source. ` +\n `Ensure ${workerConfig.package} is installed.`\n );\n}\n\nexport type CreateWorkerOptions = {\n /**\n * Public URL prefix for worker and WASM files.\n * Defaults to `/squoosh-kit` in the browser (the path used by\n * `@squoosh-kit/vite-plugin`). Pass an empty string to resolve workers\n * relative to the installed package instead.\n */\n assetPath?: string;\n};\n\n/**\n * Create a Web Worker for a specific codec\n *\n * In Node.js/Bun environments, uses import.meta.resolve to locate worker files.\n * In browsers, workers load from `/squoosh-kit/{package}/` by default.\n *\n * @param workerFilename - The name of the worker file (e.g., 'resize.worker' or 'webp.worker')\n * @returns Worker instance\n * @throws Error if worker creation fails with detailed error message\n */\nexport function createCodecWorker(\n workerFilename: string,\n options?: CreateWorkerOptions\n): Worker {\n // Ensure filename has correct format\n const normalizedName = workerFilename.endsWith('.js')\n ? workerFilename\n : `${workerFilename}.js`;\n\n // Map worker filenames to their package and export\n const workerMap: Record<string, { package: string; specifier: string }> = {\n 'resize.worker.js': {\n package: '@squoosh-kit/resize',\n specifier: 'resize.worker.js',\n },\n 'webp.worker.js': {\n package: '@squoosh-kit/webp',\n specifier: 'webp.worker.js',\n },\n 'avif.worker.js': {\n package: '@squoosh-kit/avif',\n specifier: 'avif.worker.js',\n },\n 'mozjpeg.worker.js': {\n package: '@squoosh-kit/mozjpeg',\n specifier: 'mozjpeg.worker.js',\n },\n 'jxl.worker.js': {\n package: '@squoosh-kit/jxl',\n specifier: 'jxl.worker.js',\n },\n 'oxipng.worker.js': {\n package: '@squoosh-kit/oxipng',\n specifier: 'oxipng.worker.js',\n },\n 'png.worker.js': {\n package: '@squoosh-kit/png',\n specifier: 'png.worker.js',\n },\n 'imagequant.worker.js': {\n package: '@squoosh-kit/imagequant',\n specifier: 'imagequant.worker.js',\n },\n 'qoi.worker.js': {\n package: '@squoosh-kit/qoi',\n specifier: 'qoi.worker.js',\n },\n 'wp2.worker.js': {\n package: '@squoosh-kit/wp2',\n specifier: 'wp2.worker.js',\n },\n 'hqx.worker.js': {\n package: '@squoosh-kit/hqx',\n specifier: 'hqx.worker.js',\n },\n 'rotate.worker.js': {\n package: '@squoosh-kit/rotate',\n specifier: 'rotate.worker.js',\n },\n 'visdif.worker.js': {\n package: '@squoosh-kit/visdif',\n specifier: 'visdif.worker.js',\n },\n };\n\n const workerConfig = workerMap[normalizedName];\n if (!workerConfig) {\n throw new Error(\n `Unknown worker: ${normalizedName}. ` +\n `Supported workers: ${Object.keys(workerMap).join(', ')}`\n );\n }\n\n try {\n // In browsers, workers load from /squoosh-kit by default\n if (typeof window !== 'undefined') {\n const packageName = workerConfig.package.split('/')[1]; // Extract 'resize' or 'webp'\n const workerFile = normalizedName.replace('.js', '.browser.mjs');\n\n console.log(\n `[worker-helper] In browser environment. Trying to create worker:`\n );\n console.log(`[worker-helper] - Package Name: ${packageName}`);\n console.log(`[worker-helper] - Worker File: ${workerFile}`);\n\n const assetPath =\n options?.assetPath === undefined\n ? DEFAULT_BROWSER_ASSET_PATH\n : options.assetPath;\n\n if (assetPath) {\n let normalizedAssetPath = assetPath;\n if (!normalizedAssetPath.startsWith('/')) {\n normalizedAssetPath = '/' + normalizedAssetPath;\n }\n if (normalizedAssetPath.endsWith('/')) {\n normalizedAssetPath = normalizedAssetPath.slice(0, -1);\n }\n\n // Construct absolute URL: {origin}{assetPath}/{package}/{workerFile}\n const workerPath = `${normalizedAssetPath}/${packageName}/${workerFile}`;\n const workerUrl = new URL(workerPath, window.location.origin).href;\n\n console.log(\n `[worker-helper] Using assetPath. Full Worker URL: ${workerUrl}`\n );\n try {\n const worker = new Worker(workerUrl, { type: 'module' });\n console.log(\n `[worker-helper] Successfully created worker with assetPath: ${workerUrl}`\n );\n return worker;\n } catch (e) {\n console.error(\n `[worker-helper] Failed to load worker from assetPath URL: ${workerUrl}`,\n e\n );\n throw new Error(\n `Worker failed to load from ${workerUrl}: ${e instanceof Error ? e.message : String(e)}`,\n { cause: e }\n );\n }\n }\n\n // Try multiple path strategies to support both:\n // 1. Monorepo development structure: ../../{package}/dist/{workerFile}\n // 2. npm installed structure: ../../../{package}/dist/{workerFile}\n const pathStrategies = [\n // First try monorepo structure (when runtime is at packages/runtime/src)\n `../../${packageName}/dist/${workerFile}`,\n // Then try npm structure (when runtime is at node_modules/@squoosh-kit/runtime)\n `../../../node_modules/@squoosh-kit/${packageName}/dist/${workerFile}`,\n // Alternative npm structure for cases where packages are flattened\n `../../../${packageName}/dist/${workerFile}`,\n ];\n\n let lastError: Error | null = null;\n\n for (const relPath of pathStrategies) {\n console.log('relPath:', relPath);\n console.log('import.meta.url:', import.meta.url);\n try {\n const workerUrl = new URL(relPath, import.meta.url);\n console.log(\n `[worker-helper] Trying path strategy. Full Worker URL: ${workerUrl.href}`\n );\n const worker = new Worker(workerUrl, {\n type: 'module',\n });\n console.log(\n `[worker-helper] Successfully created worker with URL: ${workerUrl.href}`\n );\n return worker;\n } catch (error) {\n console.warn(\n `[worker-helper] Path strategy failed for ${relPath}:`,\n error\n );\n lastError = error instanceof Error ? error : new Error(String(error));\n // Continue to next strategy\n }\n }\n\n // If all strategies failed, throw the last error\n if (lastError) {\n console.error('[worker-helper] All path strategies failed.', lastError);\n throw lastError;\n }\n throw new Error(\n `Could not resolve worker ${normalizedName} using any available path strategy`\n );\n }\n\n const workerScript = resolveServerWorkerScript(\n workerConfig,\n normalizedName\n );\n return new Worker(workerScript, { type: 'module' });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n throw new Error(\n `Failed to create worker from ${normalizedName}: ${errorMessage}. ` +\n `Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed. ` +\n `If you're using Vite, ensure the worker files are not being optimized as dependencies.`,\n { cause: error }\n );\n }\n}\n\n/**\n * Create a worker with initialization timeout and ready signal handling\n *\n * This is a higher-level function that creates a worker and waits for it\n * to signal that it's ready to receive messages.\n *\n * @param workerFilename - The name of the worker file\n * @param timeoutMs - Timeout in milliseconds (default: 10000)\n * @returns Promise that resolves to a ready Worker instance\n * @throws Error if worker creation fails or times out\n */\nexport function createReadyWorker(\n workerFilename: string,\n options?: CreateWorkerOptions,\n timeoutMs: number = 10000\n): Promise<Worker> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(\n new Error(\n `Worker initialization timeout after ${timeoutMs}ms. Worker file: ${workerFilename}`\n )\n );\n }, timeoutMs);\n\n let worker: Worker;\n try {\n worker = createCodecWorker(workerFilename, options);\n } catch (error) {\n clearTimeout(timeout);\n reject(error);\n return;\n }\n\n const handleMessage = (event: MessageEvent) => {\n if (event.data?.type === 'worker:ready') {\n clearTimeout(timeout);\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n worker.removeEventListener('messageerror', handleMessageError);\n resolve(worker);\n }\n };\n\n const handleError = (event: ErrorEvent) => {\n clearTimeout(timeout);\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n worker.removeEventListener('messageerror', handleMessageError);\n reject(\n new Error(\n `Worker failed to start: ${event?.message || 'Unknown error'}. Worker file: ${workerFilename}`\n )\n );\n };\n\n const handleMessageError = () => {\n clearTimeout(timeout);\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n worker.removeEventListener('messageerror', handleMessageError);\n reject(\n new Error(\n `Worker message error during initialization. Worker file: ${workerFilename}`\n )\n );\n };\n\n worker.addEventListener('message', handleMessage);\n worker.addEventListener('error', handleError);\n worker.addEventListener('messageerror', handleMessageError);\n worker.postMessage({ type: 'worker:ping' });\n });\n}\n",
8
9
  "/**\n * Load WASM binary from various sources with fallback strategies\n *\n * Supports:\n * - Node.js (fs/promises)\n * - Browsers (fetch)\n * - Workers (fetch)\n */\nexport async function loadWasmBinary(\n relativePath: string,\n baseUrlOverride?: string | URL\n): Promise<ArrayBuffer> {\n // Get the base URL depending on the environment (worker or main thread)\n // If a base URL is provided, use it; otherwise use import.meta.url from this module\n // In a worker, import.meta.url is the worker's own URL.\n // In the main thread, it's the URL of the current module.\n const baseUrl = baseUrlOverride\n ? typeof baseUrlOverride === 'string'\n ? new URL('.', baseUrlOverride)\n : new URL('.', baseUrlOverride.href)\n : new URL('.', import.meta.url);\n const fullUrl = new URL(relativePath, baseUrl);\n\n console.log(`[WasmLoader] Loading WASM from relative path: ${relativePath}`);\n console.log(`[WasmLoader] Base URL (import.meta.url): ${baseUrl.href}`);\n console.log(`[WasmLoader] Constructed full URL: ${fullUrl.href}`);\n\n try {\n const response = await fetch(fullUrl.href);\n\n console.log(\n `[WasmLoader] Fetch response status for ${fullUrl.href}: ${response.status}`\n );\n\n if (!response.ok) {\n const responseText = await response.text();\n console.error(\n `[WasmLoader] Fetch response text (first 500 chars):`,\n responseText.substring(0, 500)\n );\n throw new Error(\n `Failed to fetch WASM module at ${fullUrl.href}: ${response.status} ${response.statusText}`\n );\n }\n\n const contentType = response.headers.get('content-type');\n console.log(`[WasmLoader] Response Content-Type: ${contentType}`);\n if (!contentType || !contentType.includes('application/wasm')) {\n console.warn(\n `[WasmLoader] Warning: WASM module at ${fullUrl.href} served with incorrect MIME type: \"${contentType}\". Should be \"application/wasm\".`\n );\n }\n\n return await response.arrayBuffer();\n } catch (error) {\n console.error(\n `[WasmLoader] CRITICAL: Fetching WASM binary from ${fullUrl.href} failed.`,\n error\n );\n throw error;\n }\n}\n\n/**\n * Load WASM JavaScript module with fallback strategies\n *\n * Strategy 1: Static relative import (works everywhere)\n * Strategy 2: import.meta.resolve (Node.js 22+)\n * Strategy 3: URL-based import (browsers/workers)\n */\nexport async function loadWasmModule(\n modulePath: string\n): Promise<WebAssembly.Module> {\n // Strategy 1: Try direct static import\n try {\n return await import(/* @vite-ignore */ modulePath);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e1) {\n // Continue to next strategy\n }\n\n // Strategy 2: Try import.meta.resolve (Node.js 22+)\n try {\n const resolvedPath = await import.meta.resolve(modulePath);\n\n return await import(/* @vite-ignore */ resolvedPath);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e2) {\n // Continue to next strategy\n }\n\n // Strategy 3: Try URL-based import\n try {\n const url = new URL(/* @vite-ignore */ modulePath, import.meta.url);\n\n return await import(/* @vite-ignore */ url.href);\n } catch (e3) {\n throw new Error(\n `Failed to load WASM module from \"${modulePath}\". ` +\n `Ensure WASM files are in the expected location and the module can be resolved.`,\n { cause: e3 }\n );\n }\n}\n",
9
10
  "import type { ImageInput } from './types.js';\n\nexport function validateArrayBuffer(\n buffer: unknown\n): asserts buffer is ArrayBuffer {\n // Check if SharedArrayBuffer is defined in the current environment before using it\n if (\n typeof SharedArrayBuffer !== 'undefined' &&\n buffer instanceof SharedArrayBuffer\n ) {\n throw new Error(\n 'SharedArrayBuffer is not supported. ' +\n 'Use regular ArrayBuffer or Uint8Array instead.'\n );\n }\n\n if (!(buffer instanceof ArrayBuffer)) {\n throw new TypeError('image.data.buffer must be an ArrayBuffer');\n }\n}\n\nexport function validateImageInput(\n image: unknown\n): asserts image is ImageInput {\n if (!image || typeof image !== 'object') {\n throw new TypeError('image must be an object');\n }\n\n const imageObj = image as Record<string, unknown>;\n\n if (!('data' in imageObj)) {\n throw new TypeError('image.data is required');\n }\n\n const { data } = imageObj;\n if (!(data instanceof Uint8Array || data instanceof Uint8ClampedArray)) {\n throw new TypeError('image.data must be Uint8Array or Uint8ClampedArray');\n }\n\n if (!('width' in imageObj) || !('height' in imageObj)) {\n throw new TypeError('image.width and image.height are required');\n }\n\n const { width, height } = imageObj;\n\n if (typeof width !== 'number' || !Number.isInteger(width) || width <= 0) {\n throw new RangeError(\n `image.width must be a positive integer, got ${width}`\n );\n }\n\n if (typeof height !== 'number' || !Number.isInteger(height) || height <= 0) {\n throw new RangeError(\n `image.height must be a positive integer, got ${height}`\n );\n }\n\n const expectedSize = width * height * 4;\n if (data.length < expectedSize) {\n throw new RangeError(\n `image.data too small: ${data.length} bytes, expected at least ${expectedSize} bytes for ${width}x${height} RGBA image`\n );\n }\n}\n",
10
11
  "/**\n * Polyfill for ImageData in Node/Bun environments where it's not available.\n * Must be called before any WASM decode operation that returns ImageData.\n */\nexport function polyfillImageData(): void {\n if (typeof ImageData === 'undefined') {\n (\n globalThis as {\n ImageData?: new (\n data: Uint8ClampedArray,\n width: number,\n height: number\n ) => ImageData;\n }\n ).ImageData = class {\n data: Uint8ClampedArray;\n width: number;\n height: number;\n colorSpace: PredefinedColorSpace = 'srgb';\n constructor(data: Uint8ClampedArray, width: number, height: number) {\n this.data = data;\n this.width = width;\n this.height = height;\n }\n } as unknown as typeof ImageData;\n }\n}\n",
11
- "/**\n * @squoosh-kit/runtime\n *\n * Core runtime logic for squoosh-kit, including environment utilities\n * and worker communication helpers.\n */\n\nexport * from './env.js';\nexport * from './worker-call.js';\nexport * from './types.js';\nexport * from './worker-helper.js';\nexport * from './wasm-loader.js';\nexport * from './validators.js';\nexport * from './simd-detector.js';\nexport * from './image-data-polyfill.js';\n",
12
+ "/**\n * @squoosh-kit/runtime\n *\n * Core runtime logic for squoosh-kit, including environment utilities\n * and worker communication helpers.\n */\n\nexport * from './bridge-mode.js';\nexport * from './env.js';\nexport * from './worker-call.js';\nexport * from './types.js';\nexport * from './worker-helper.js';\nexport * from './wasm-loader.js';\nexport * from './validators.js';\nexport * from './simd-detector.js';\nexport * from './image-data-polyfill.js';\n",
12
13
  "export function validateJxlOptions(\n options: unknown\n): asserts options is Record<string, unknown> | undefined {\n if (options === undefined) {\n return;\n }\n\n if (typeof options !== 'object' || options === null) {\n throw new TypeError('options must be an object or undefined');\n }\n\n const opts = options as Record<string, unknown>;\n\n if ('quality' in opts && opts.quality !== undefined) {\n const quality = opts.quality;\n\n if (Number.isNaN(quality)) {\n throw new RangeError(\n 'quality must be a valid number in the range 0-100, got NaN'\n );\n }\n\n if (typeof quality !== 'number') {\n throw new TypeError('quality must be a number');\n }\n\n if (!Number.isFinite(quality) || !Number.isInteger(quality)) {\n throw new RangeError(\n 'quality must be an integer in the range 0-100, got floating point'\n );\n }\n\n if (quality < 0 || quality > 100) {\n throw new RangeError(\n `quality must be in the range 0-100, got ${quality}`\n );\n }\n }\n\n if ('effort' in opts && opts.effort !== undefined) {\n const effort = opts.effort;\n\n if (typeof effort !== 'number') {\n throw new TypeError('effort must be a number');\n }\n\n if (!Number.isFinite(effort) || !Number.isInteger(effort)) {\n throw new RangeError('effort must be an integer in the range 1-9');\n }\n\n if (effort < 1 || effort > 9) {\n throw new RangeError(`effort must be in the range 1-9, got ${effort}`);\n }\n }\n\n if ('epf' in opts && opts.epf !== undefined) {\n const epf = opts.epf;\n\n if (typeof epf !== 'number') {\n throw new TypeError('epf must be a number');\n }\n\n if (!Number.isFinite(epf) || !Number.isInteger(epf)) {\n throw new RangeError('epf must be an integer in the range -1 to 3');\n }\n\n if (epf < -1 || epf > 3) {\n throw new RangeError(`epf must be in the range -1 to 3, got ${epf}`);\n }\n }\n\n if ('decodingSpeedTier' in opts && opts.decodingSpeedTier !== undefined) {\n const decodingSpeedTier = opts.decodingSpeedTier;\n\n if (typeof decodingSpeedTier !== 'number') {\n throw new TypeError('decodingSpeedTier must be a number');\n }\n\n if (\n !Number.isFinite(decodingSpeedTier) ||\n !Number.isInteger(decodingSpeedTier)\n ) {\n throw new RangeError(\n 'decodingSpeedTier must be an integer in the range 0-4'\n );\n }\n\n if (decodingSpeedTier < 0 || decodingSpeedTier > 4) {\n throw new RangeError(\n `decodingSpeedTier must be in the range 0-4, got ${decodingSpeedTier}`\n );\n }\n }\n}\n",
13
14
  "/**\n * JXL encoder/decoder - single-source worker/client implementation\n */\n\nimport {\n type WorkerRequest,\n type WorkerResponse,\n type ImageInput,\n loadWasmBinary,\n validateImageInput,\n polyfillImageData,\n} from '@squoosh-kit/runtime';\nimport { validateJxlOptions } from './validators';\nimport type { JXLModule, EncodeOptions } from './types';\nimport type { JXLModule as JXLDecModule } from '../wasm/jxl-dec/jxl_dec';\n\nlet cachedEncModule: JXLModule | null = null;\nlet cachedDecModule: JXLDecModule | null = null;\nlet loadEncModulePromise: Promise<JXLModule> | null = null;\nlet loadDecModulePromise: Promise<JXLDecModule> | null = null;\n\n/**\n * Determine if we are running in a Node/Bun environment\n */\nfunction isNodeOrBun(): boolean {\n return (\n typeof process !== 'undefined' &&\n (process.versions?.bun !== undefined ||\n process.versions?.node !== undefined)\n );\n}\n\nasync function loadJxlEncModule(): Promise<JXLModule> {\n if (cachedEncModule) return cachedEncModule;\n if (loadEncModulePromise) return loadEncModulePromise;\n loadEncModulePromise = (async () => {\n // Emscripten polyfills\n const globalSelf = typeof self !== 'undefined' ? self : globalThis;\n if (!globalSelf.location) {\n (globalSelf as { location?: { href: string } }).location = {\n href: import.meta.url,\n };\n }\n if (typeof self === 'undefined' && typeof globalThis !== 'undefined') {\n (globalThis as { self?: typeof globalThis }).self = globalThis;\n }\n\n const useNode = isNodeOrBun();\n // Node/Bun: use jxl_node_enc.js; Browser: use jxl_enc.js (single-threaded)\n const modulePath = useNode\n ? 'jxl-enc/jxl_node_enc.js'\n : 'jxl-enc/jxl_enc.js';\n\n try {\n console.log('[JXL Worker] Initializing encoder. Node/Bun:', useNode);\n console.log(\n `[JXL Worker] Attempting to import encoder module from path: ${modulePath}`\n );\n\n let moduleFactory;\n const isSource = import.meta.url.includes('/src/');\n const pathsToTry = isSource\n ? ['../wasm/' + modulePath, './wasm/' + modulePath]\n : ['./wasm/' + modulePath, '../wasm/' + modulePath];\n\n let lastError: Error | null = null;\n for (const importPath of pathsToTry) {\n try {\n moduleFactory = (await import(/* @vite-ignore */ importPath)).default;\n console.log(\n `[JXL Worker] Successfully loaded encoder module from: ${importPath}`\n );\n break;\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n console.warn(\n `[JXL Worker] Failed to load encoder from ${importPath}, trying next path...`\n );\n }\n }\n\n if (!moduleFactory) {\n throw (\n lastError ||\n new Error('Could not load JXL encoder module from any path')\n );\n }\n\n console.log('[JXL Worker] Encoder module factory loaded successfully.');\n\n const wasmFile = useNode ? 'jxl_node_enc.wasm' : 'jxl_enc.wasm';\n const wasmPathsToTry = isSource\n ? [`../wasm/jxl-enc/${wasmFile}`, `./wasm/jxl-enc/${wasmFile}`]\n : [`./wasm/jxl-enc/${wasmFile}`, `../wasm/jxl-enc/${wasmFile}`];\n\n console.log(\n `[JXL Worker] Preparing to load encoder WASM binary. Will try paths: ${wasmPathsToTry.join(', ')}`\n );\n\n const initModuleWithBinary = async (\n factory: (config: {\n noInitialRun: boolean;\n wasmBinary?: ArrayBuffer;\n }) => Promise<JXLModule>,\n wasmPaths: string[]\n ): Promise<JXLModule> => {\n const workerBaseUrl = new URL('.', import.meta.url);\n let lastError: Error | null = null;\n for (const wasmPath of wasmPaths) {\n try {\n console.log(\n `[JXL Worker] Calling loadWasmBinary with path: ${wasmPath}`\n );\n const wasmBinary = await loadWasmBinary(wasmPath, workerBaseUrl);\n console.log(\n `[JXL Worker] Successfully fetched encoder WASM binary from ${wasmPath}. Size: ${wasmBinary.byteLength} bytes.`\n );\n\n const globalSelf = typeof self !== 'undefined' ? self : globalThis;\n if (!globalSelf.location) {\n (globalSelf as { location?: { href: string } }).location = {\n href: import.meta.url,\n };\n }\n if (\n typeof self === 'undefined' &&\n typeof globalThis !== 'undefined'\n ) {\n (globalThis as { self?: typeof globalThis }).self = globalThis;\n }\n\n return await factory({\n noInitialRun: true,\n wasmBinary,\n });\n } catch (err) {\n lastError = err instanceof Error ? err : new Error(String(err));\n console.warn(\n `[JXL Worker] Failed to load encoder WASM from ${wasmPath}, trying next path...`\n );\n }\n }\n throw (\n lastError ||\n new Error(\n 'Could not load encoder WASM binary from any of the attempted paths'\n )\n );\n };\n\n cachedEncModule = await initModuleWithBinary(\n moduleFactory,\n wasmPathsToTry\n );\n console.log('[JXL Worker] JXL encoder module initialized successfully.');\n return cachedEncModule;\n } catch (err) {\n console.error(\n `[JXL Worker] CRITICAL: Failed to load JXL encoder module from path: ${modulePath}`,\n err\n );\n throw err;\n }\n })().catch((err: unknown) => {\n loadEncModulePromise = null;\n throw err;\n });\n return loadEncModulePromise;\n}\n\nasync function loadJxlDecModule(): Promise<JXLDecModule> {\n if (cachedDecModule) return cachedDecModule;\n if (loadDecModulePromise) return loadDecModulePromise;\n loadDecModulePromise = (async () => {\n // Emscripten polyfills\n const globalSelf = typeof self !== 'undefined' ? self : globalThis;\n if (!globalSelf.location) {\n (globalSelf as { location?: { href: string } }).location = {\n href: import.meta.url,\n };\n }\n if (typeof self === 'undefined' && typeof globalThis !== 'undefined') {\n (globalThis as { self?: typeof globalThis }).self = globalThis;\n }\n\n // Polyfill ImageData for Node/Bun environments\n polyfillImageData();\n\n const useNode = isNodeOrBun();\n // Node/Bun: use jxl_node_dec.js; Browser: use jxl_dec.js\n const modulePath = useNode\n ? 'jxl-dec/jxl_node_dec.js'\n : 'jxl-dec/jxl_dec.js';\n\n try {\n console.log('[JXL Worker] Initializing decoder. Node/Bun:', useNode);\n console.log(\n `[JXL Worker] Attempting to import decoder module from path: ${modulePath}`\n );\n\n let moduleFactory;\n const isSource = import.meta.url.includes('/src/');\n const pathsToTry = isSource\n ? ['../wasm/' + modulePath, './wasm/' + modulePath]\n : ['./wasm/' + modulePath, '../wasm/' + modulePath];\n\n let lastError: Error | null = null;\n for (const importPath of pathsToTry) {\n try {\n moduleFactory = (await import(/* @vite-ignore */ importPath)).default;\n console.log(\n `[JXL Worker] Successfully loaded decoder module from: ${importPath}`\n );\n break;\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n console.warn(\n `[JXL Worker] Failed to load decoder from ${importPath}, trying next path...`\n );\n }\n }\n\n if (!moduleFactory) {\n throw (\n lastError ||\n new Error('Could not load JXL decoder module from any path')\n );\n }\n\n console.log('[JXL Worker] Decoder module factory loaded successfully.');\n\n const wasmFile = useNode ? 'jxl_node_dec.wasm' : 'jxl_dec.wasm';\n const wasmPathsToTry = isSource\n ? [`../wasm/jxl-dec/${wasmFile}`, `./wasm/jxl-dec/${wasmFile}`]\n : [`./wasm/jxl-dec/${wasmFile}`, `../wasm/jxl-dec/${wasmFile}`];\n\n console.log(\n `[JXL Worker] Preparing to load decoder WASM binary. Will try paths: ${wasmPathsToTry.join(', ')}`\n );\n\n const initModuleWithBinary = async (\n factory: (config: {\n noInitialRun: boolean;\n wasmBinary?: ArrayBuffer;\n }) => Promise<JXLDecModule>,\n wasmPaths: string[]\n ): Promise<JXLDecModule> => {\n const workerBaseUrl = new URL('.', import.meta.url);\n let lastError: Error | null = null;\n for (const wasmPath of wasmPaths) {\n try {\n console.log(\n `[JXL Worker] Calling loadWasmBinary with path: ${wasmPath}`\n );\n const wasmBinary = await loadWasmBinary(wasmPath, workerBaseUrl);\n console.log(\n `[JXL Worker] Successfully fetched decoder WASM binary from ${wasmPath}. Size: ${wasmBinary.byteLength} bytes.`\n );\n\n const globalSelf = typeof self !== 'undefined' ? self : globalThis;\n if (!globalSelf.location) {\n (globalSelf as { location?: { href: string } }).location = {\n href: import.meta.url,\n };\n }\n if (\n typeof self === 'undefined' &&\n typeof globalThis !== 'undefined'\n ) {\n (globalThis as { self?: typeof globalThis }).self = globalThis;\n }\n\n return await factory({\n noInitialRun: true,\n wasmBinary,\n });\n } catch (err) {\n lastError = err instanceof Error ? err : new Error(String(err));\n console.warn(\n `[JXL Worker] Failed to load decoder WASM from ${wasmPath}, trying next path...`\n );\n }\n }\n throw (\n lastError ||\n new Error(\n 'Could not load decoder WASM binary from any of the attempted paths'\n )\n );\n };\n\n cachedDecModule = await initModuleWithBinary(\n moduleFactory,\n wasmPathsToTry\n );\n console.log('[JXL Worker] JXL decoder module initialized successfully.');\n return cachedDecModule;\n } catch (err) {\n console.error(\n `[JXL Worker] CRITICAL: Failed to load JXL decoder module from path: ${modulePath}`,\n err\n );\n throw err;\n }\n })().catch((err: unknown) => {\n loadDecModulePromise = null;\n throw err;\n });\n return loadDecModulePromise;\n}\n\n/**\n * Build full EncodeOptions from partial user options using Squoosh defaults\n */\nfunction createEncodeOptions(options?: Partial<EncodeOptions>): EncodeOptions {\n return {\n effort: options?.effort ?? 7,\n quality: options?.quality ?? 75,\n progressive: options?.progressive ?? false,\n epf: options?.epf ?? -1,\n lossyPalette: options?.lossyPalette ?? false,\n decodingSpeedTier: options?.decodingSpeedTier ?? 0,\n photonNoiseIso: options?.photonNoiseIso ?? 0,\n lossyModular: options?.lossyModular ?? false,\n };\n}\n\n/**\n * Client-mode JXL encoder (exported for direct use)\n */\nexport async function jxlEncodeClient(\n image: ImageInput,\n options?: Partial<EncodeOptions>,\n signal?: AbortSignal\n): Promise<Uint8Array> {\n validateImageInput(image);\n validateJxlOptions(options);\n\n if (signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n\n const width = image.width;\n const height = image.height;\n const data = image.data;\n\n if (!(data instanceof Uint8Array) && !(data instanceof Uint8ClampedArray)) {\n throw new Error('Image data must be Uint8Array or Uint8ClampedArray');\n }\n\n const module = await loadJxlEncModule();\n\n if (signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n\n const encodeOptions = createEncodeOptions(options);\n\n const dataArray =\n data instanceof Uint8ClampedArray\n ? new Uint8Array(data.buffer as ArrayBuffer, data.byteOffset, data.length)\n : new Uint8Array(\n data.buffer as ArrayBuffer,\n data.byteOffset,\n data.length\n );\n\n const result = module.encode(dataArray, width, height, encodeOptions);\n\n if (signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n\n if (!result) {\n throw new Error('JXL encoding failed');\n }\n\n return result;\n}\n\n/**\n * Client-mode JXL decoder (exported for direct use)\n */\nexport async function jxlDecodeClient(\n data: Uint8Array,\n signal?: AbortSignal\n): Promise<ImageData> {\n if (signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n\n const module = await loadJxlDecModule();\n\n if (signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n\n const result = module.decode(data as unknown as BufferSource);\n\n if (signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n\n if (!result) {\n throw new Error('JXL decoding failed');\n }\n\n return result;\n}\n\n/**\n * Worker message handler\n * Register the handler regardless of environment (for both worker context and tests)\n */\nif (typeof self !== 'undefined') {\n self.onmessage = async (event: MessageEvent) => {\n const data = event.data;\n\n // Handle worker ping for initialization\n if (data?.type === 'worker:ping') {\n await loadJxlEncModule();\n self.postMessage({ type: 'worker:ready' });\n return;\n }\n\n if (data?.type === 'jxl:encode') {\n const request = data as WorkerRequest<{\n image: ImageInput;\n options?: Partial<EncodeOptions>;\n }>;\n\n const response: WorkerResponse<Uint8Array> = {\n id: request.id,\n ok: false,\n };\n\n try {\n const { image, options } = request.payload;\n const result = await jxlEncodeClient(image, options);\n response.ok = true;\n response.data = result;\n self.postMessage(response, {\n transfer: [result.buffer as ArrayBuffer],\n });\n } catch (error) {\n response.error = error instanceof Error ? error.message : String(error);\n self.postMessage(response);\n }\n } else if (data?.type === 'jxl:decode') {\n const request = data as WorkerRequest<{ data: Uint8Array }>;\n\n const response: WorkerResponse<ImageData> = {\n id: request.id,\n ok: false,\n };\n\n try {\n const result = await jxlDecodeClient(request.payload.data);\n response.ok = true;\n response.data = result;\n self.postMessage(response, {\n transfer: [result.data.buffer as ArrayBuffer],\n });\n } catch (error) {\n response.error = error instanceof Error ? error.message : String(error);\n self.postMessage(response);\n }\n } else {\n const request = data as WorkerRequest<unknown>;\n const response: WorkerResponse<never> = {\n id: request.id,\n ok: false,\n error: `Unknown message type: ${data?.type}`,\n };\n self.postMessage(response);\n }\n };\n}\n",
14
- "/**\n * Bridge implementation for the JXL package, handling worker and client modes.\n */\n\nimport {\n callWorker,\n createReadyWorker,\n type ImageInput,\n} from '@squoosh-kit/runtime';\nimport { validateImageInput } from '@squoosh-kit/runtime';\nimport type { JxlEncodeOptions } from './types';\n\nexport type BridgeOptions = {\n /**\n * Public URL prefix for worker and WASM files.\n * Defaults to `/squoosh-kit` in the browser.\n */\n assetPath?: string;\n};\n\ninterface JxlBridge {\n encode(\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array>;\n decode(data: Uint8Array, signal?: AbortSignal): Promise<ImageData>;\n terminate(): Promise<void>;\n}\n\nclass JxlClientBridge implements JxlBridge {\n async encode(\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array> {\n const module = await import('./jxl.worker.js');\n const jxlEncodeClient = module.jxlEncodeClient as (\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ) => Promise<Uint8Array>;\n return jxlEncodeClient(image, options, signal);\n }\n\n async decode(data: Uint8Array, signal?: AbortSignal): Promise<ImageData> {\n const module = await import('./jxl.worker.js');\n const jxlDecodeClient = module.jxlDecodeClient as (\n data: Uint8Array,\n signal?: AbortSignal\n ) => Promise<ImageData>;\n return jxlDecodeClient(data, signal);\n }\n\n async terminate(): Promise<void> {\n // Client mode has nothing to terminate\n }\n}\n\nclass JxlWorkerBridge implements JxlBridge {\n private worker: Worker | null = null;\n private workerReady: Promise<Worker> | null = null;\n private options?: BridgeOptions;\n\n constructor(options?: BridgeOptions) {\n console.log(\n '[jxl/bridge] JxlWorkerBridge constructor called with options:',\n options\n );\n this.options = options;\n }\n\n private async getWorker(): Promise<Worker> {\n if (!this.workerReady) {\n this.workerReady = this.createWorker();\n }\n return this.workerReady;\n }\n\n private async createWorker(): Promise<Worker> {\n console.log('[jxl/bridge] createWorker called. Creating ready worker...');\n this.worker = await createReadyWorker('jxl.worker.js', this.options);\n console.log(\n '[jxl/bridge] createWorker: Ready worker created successfully.'\n );\n return this.worker;\n }\n\n async encode(\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array> {\n const worker = await this.getWorker();\n validateImageInput(image);\n return callWorker(worker, 'jxl:encode', { image, options }, signal);\n }\n\n async decode(data: Uint8Array, signal?: AbortSignal): Promise<ImageData> {\n const worker = await this.getWorker();\n return callWorker(worker, 'jxl:decode', { data }, signal);\n }\n\n async terminate(): Promise<void> {\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n this.workerReady = null;\n }\n }\n}\n\nexport function createBridge(\n mode: 'worker' | 'client',\n options?: BridgeOptions\n): JxlBridge {\n console.log(`[jxl/bridge] createBridge called with mode: ${mode}`);\n if (mode === 'worker') {\n return new JxlWorkerBridge(options);\n }\n return new JxlClientBridge();\n}\n",
15
- "/**\n * @squoosh-kit/jxl public API\n */\n\nimport type { ImageInput } from '@squoosh-kit/runtime';\nimport { createBridge, type BridgeOptions } from './bridge';\nimport type { JxlEncodeOptions } from './types';\n\nexport type { ImageInput, JxlEncodeOptions };\n\n// Global bridge instance for reuse\nlet globalClientBridge: ReturnType<typeof createBridge> | null = null;\n\n/**\n * A JXL image encoder that can be reused for multiple operations.\n * Can be terminated to clean up associated resources (especially workers).\n */\nexport type JxlEncoderFactory = ((\n imageData: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n) => Promise<Uint8Array>) & {\n /**\n * Terminates the encoder and cleans up resources.\n * Important for worker mode to prevent memory leaks.\n *\n * @example\n * const encoder = createJxlEncoder('worker');\n * try {\n * const result = await encoder(imageData, options);\n * } finally {\n * await encoder.terminate();\n * }\n */\n terminate(): Promise<void>;\n};\n\n/**\n * A JXL image decoder that can be reused for multiple operations.\n * Can be terminated to clean up associated resources (especially workers).\n */\nexport type JxlDecoderFactory = ((\n data: Uint8Array,\n signal?: AbortSignal\n) => Promise<ImageData>) & {\n /**\n * Terminates the decoder and cleans up resources.\n * Important for worker mode to prevent memory leaks.\n */\n terminate(): Promise<void>;\n};\n\n/**\n * Encodes an image to JPEG XL format. Uses worker mode for UI responsiveness.\n *\n * @param imageData - The image data to encode.\n * @param options - JXL encoding options.\n * @param signal - (Optional) AbortSignal to cancel the encoding operation.\n * @returns A Promise resolving to the encoded JXL data as a Uint8Array.\n *\n * @example\n * const controller = new AbortController();\n * const result = await encode(imageData, { quality: 85 }, controller.signal);\n */\nexport async function encode(\n imageData: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n): Promise<Uint8Array> {\n if (!globalClientBridge) {\n globalClientBridge = createBridge('worker');\n }\n return globalClientBridge.encode(imageData, options, signal);\n}\n\n/**\n * Decodes a JPEG XL image. Uses worker mode for UI responsiveness.\n *\n * @param data - The JXL-encoded data to decode.\n * @param signal - (Optional) AbortSignal to cancel the decoding operation.\n * @returns A Promise resolving to an ImageData-like object.\n *\n * @example\n * const imageData = await decode(jxlBuffer);\n */\nexport async function decode(\n data: Uint8Array,\n signal?: AbortSignal\n): Promise<ImageData> {\n if (!globalClientBridge) {\n globalClientBridge = createBridge('worker');\n }\n return globalClientBridge.decode(data, signal);\n}\n\n/**\n * Creates a reusable JXL encoder function for a specific execution mode.\n *\n * @param mode - The execution mode, either 'worker' or 'client'.\n * @param options - Optional bridge options.\n * @returns A function that encodes an image to JXL format with optional AbortSignal.\n */\nexport function createJxlEncoder(\n mode: 'worker' | 'client' = 'worker',\n options?: BridgeOptions\n): JxlEncoderFactory {\n const bridge = createBridge(mode, options);\n\n return Object.assign(\n (\n imageData: ImageInput,\n encodeOptions?: JxlEncodeOptions,\n signal?: AbortSignal\n ) => {\n return bridge.encode(imageData, encodeOptions, signal);\n },\n {\n terminate: async () => {\n await bridge.terminate();\n },\n }\n );\n}\n\n/**\n * Creates a reusable JXL decoder function for a specific execution mode.\n *\n * @param mode - The execution mode, either 'worker' or 'client'.\n * @param options - Optional bridge options.\n * @returns A function that decodes JXL data with optional AbortSignal.\n */\nexport function createJxlDecoder(\n mode: 'worker' | 'client' = 'worker',\n options?: BridgeOptions\n): JxlDecoderFactory {\n const bridge = createBridge(mode, options);\n\n return Object.assign(\n (data: Uint8Array, signal?: AbortSignal) => {\n return bridge.decode(data, signal);\n },\n {\n terminate: async () => {\n await bridge.terminate();\n },\n }\n );\n}\n"
15
+ "/**\n * Bridge implementation for the JXL package, handling worker and client modes.\n */\n\nimport {\n callWorker,\n createReadyWorker,\n type ImageInput,\n resolveBridgeMode,\n type BridgeMode,\n} from '@squoosh-kit/runtime';\nimport { validateImageInput } from '@squoosh-kit/runtime';\nimport type { JxlEncodeOptions } from './types';\n\nexport type BridgeOptions = {\n /**\n * Public URL prefix for worker and WASM files.\n * Defaults to `/squoosh-kit` in the browser.\n */\n assetPath?: string;\n};\n\ninterface JxlBridge {\n encode(\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array>;\n decode(data: Uint8Array, signal?: AbortSignal): Promise<ImageData>;\n terminate(): Promise<void>;\n}\n\nclass JxlClientBridge implements JxlBridge {\n async encode(\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array> {\n const module = await import('./jxl.worker.js');\n const jxlEncodeClient = module.jxlEncodeClient as (\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ) => Promise<Uint8Array>;\n return jxlEncodeClient(image, options, signal);\n }\n\n async decode(data: Uint8Array, signal?: AbortSignal): Promise<ImageData> {\n const module = await import('./jxl.worker.js');\n const jxlDecodeClient = module.jxlDecodeClient as (\n data: Uint8Array,\n signal?: AbortSignal\n ) => Promise<ImageData>;\n return jxlDecodeClient(data, signal);\n }\n\n async terminate(): Promise<void> {\n // Client mode has nothing to terminate\n }\n}\n\nclass JxlWorkerBridge implements JxlBridge {\n private worker: Worker | null = null;\n private workerReady: Promise<Worker> | null = null;\n private options?: BridgeOptions;\n\n constructor(options?: BridgeOptions) {\n console.log(\n '[jxl/bridge] JxlWorkerBridge constructor called with options:',\n options\n );\n this.options = options;\n }\n\n private async getWorker(): Promise<Worker> {\n if (!this.workerReady) {\n this.workerReady = this.createWorker();\n }\n return this.workerReady;\n }\n\n private async createWorker(): Promise<Worker> {\n console.log('[jxl/bridge] createWorker called. Creating ready worker...');\n this.worker = await createReadyWorker('jxl.worker.js', this.options);\n console.log(\n '[jxl/bridge] createWorker: Ready worker created successfully.'\n );\n return this.worker;\n }\n\n async encode(\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array> {\n const worker = await this.getWorker();\n validateImageInput(image);\n return callWorker(worker, 'jxl:encode', { image, options }, signal);\n }\n\n async decode(data: Uint8Array, signal?: AbortSignal): Promise<ImageData> {\n const worker = await this.getWorker();\n return callWorker(worker, 'jxl:decode', { data }, signal);\n }\n\n async terminate(): Promise<void> {\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n this.workerReady = null;\n }\n }\n}\n\nexport function createBridge(\n mode: BridgeMode = 'auto',\n options?: BridgeOptions\n): JxlBridge {\n const resolvedMode = resolveBridgeMode(mode);\n console.log(`[jxl/bridge] createBridge called with mode: ${resolvedMode}`);\n if (resolvedMode === 'worker') {\n return new JxlWorkerBridge(options);\n }\n return new JxlClientBridge();\n}\n",
16
+ "/**\n * @squoosh-kit/jxl public API\n */\n\nimport type { BridgeMode, ImageInput } from '@squoosh-kit/runtime';\nimport { createBridge, type BridgeOptions } from './bridge';\nimport type { JxlEncodeOptions } from './types';\n\nexport type { ImageInput, JxlEncodeOptions };\n\n// Global bridge instance for reuse\nlet globalClientBridge: ReturnType<typeof createBridge> | null = null;\n\n/**\n * A JXL image encoder that can be reused for multiple operations.\n * Can be terminated to clean up associated resources (especially workers).\n */\nexport type JxlEncoderFactory = ((\n imageData: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n) => Promise<Uint8Array>) & {\n /**\n * Terminates the encoder and cleans up resources.\n * Important for worker mode to prevent memory leaks.\n *\n * @example\n * const encoder = createJxlEncoder('worker');\n * try {\n * const result = await encoder(imageData, options);\n * } finally {\n * await encoder.terminate();\n * }\n */\n terminate(): Promise<void>;\n};\n\n/**\n * A JXL image decoder that can be reused for multiple operations.\n * Can be terminated to clean up associated resources (especially workers).\n */\nexport type JxlDecoderFactory = ((\n data: Uint8Array,\n signal?: AbortSignal\n) => Promise<ImageData>) & {\n /**\n * Terminates the decoder and cleans up resources.\n * Important for worker mode to prevent memory leaks.\n */\n terminate(): Promise<void>;\n};\n\n/**\n * Encodes an image to JPEG XL format. Uses worker mode for UI responsiveness.\n *\n * @param imageData - The image data to encode.\n * @param options - JXL encoding options.\n * @param signal - (Optional) AbortSignal to cancel the encoding operation.\n * @returns A Promise resolving to the encoded JXL data as a Uint8Array.\n *\n * @example\n * const controller = new AbortController();\n * const result = await encode(imageData, { quality: 85 }, controller.signal);\n */\nexport async function encode(\n imageData: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n): Promise<Uint8Array> {\n if (!globalClientBridge) {\n globalClientBridge = createBridge('auto');\n }\n return globalClientBridge.encode(imageData, options, signal);\n}\n\n/**\n * Decodes a JPEG XL image. Uses worker mode for UI responsiveness.\n *\n * @param data - The JXL-encoded data to decode.\n * @param signal - (Optional) AbortSignal to cancel the decoding operation.\n * @returns A Promise resolving to an ImageData-like object.\n *\n * @example\n * const imageData = await decode(jxlBuffer);\n */\nexport async function decode(\n data: Uint8Array,\n signal?: AbortSignal\n): Promise<ImageData> {\n if (!globalClientBridge) {\n globalClientBridge = createBridge('auto');\n }\n return globalClientBridge.decode(data, signal);\n}\n\n/**\n * Creates a reusable JXL encoder function for a specific execution mode.\n *\n * @param mode - The execution mode, either 'worker' or 'client'.\n * @param options - Optional bridge options.\n * @returns A function that encodes an image to JXL format with optional AbortSignal.\n */\nexport function createJxlEncoder(\n mode: BridgeMode = 'auto',\n options?: BridgeOptions\n): JxlEncoderFactory {\n const bridge = createBridge(mode, options);\n\n return Object.assign(\n (\n imageData: ImageInput,\n encodeOptions?: JxlEncodeOptions,\n signal?: AbortSignal\n ) => {\n return bridge.encode(imageData, encodeOptions, signal);\n },\n {\n terminate: async () => {\n await bridge.terminate();\n },\n }\n );\n}\n\n/**\n * Creates a reusable JXL decoder function for a specific execution mode.\n *\n * @param mode - The execution mode, either 'worker' or 'client'.\n * @param options - Optional bridge options.\n * @returns A function that decodes JXL data with optional AbortSignal.\n */\nexport function createJxlDecoder(\n mode: BridgeMode = 'auto',\n options?: BridgeOptions\n): JxlDecoderFactory {\n const bridge = createBridge(mode, options);\n\n return Object.assign(\n (data: Uint8Array, signal?: AbortSignal) => {\n return bridge.decode(data, signal);\n },\n {\n terminate: async () => {\n await bridge.terminate();\n },\n }\n );\n}\n"
16
17
  ],
17
- "mappings": "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",
18
- "debugId": "EE6613D45FD010CF64756E2164756E21",
18
+ "mappings": "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",
19
+ "debugId": "B04E06E00735C5C464756E2164756E21",
19
20
  "names": []
20
21
  }
@@ -15,10 +15,28 @@ var __export = (target, all) => {
15
15
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
16
16
 
17
17
  // ../runtime/src/env.ts
18
+ function isWorker() {
19
+ return typeof self !== "undefined" && typeof globalThis.DedicatedWorkerGlobalScope !== "undefined";
20
+ }
21
+ function isBrowser() {
22
+ return typeof window !== "undefined" && typeof document !== "undefined";
23
+ }
18
24
  function isBun() {
19
25
  return typeof Bun !== "undefined";
20
26
  }
21
27
 
28
+ // ../runtime/src/bridge-mode.ts
29
+ function resolveBridgeMode(mode = "auto") {
30
+ if (mode === "worker" || mode === "client") {
31
+ return mode;
32
+ }
33
+ if (isBrowser() && !isWorker()) {
34
+ return "worker";
35
+ }
36
+ return "client";
37
+ }
38
+ var init_bridge_mode = () => {};
39
+
22
40
  // ../runtime/src/worker-call.ts
23
41
  async function callWorker(worker, type, payload, signal, transfer) {
24
42
  return new Promise((resolve, reject) => {
@@ -358,6 +376,7 @@ function polyfillImageData() {
358
376
 
359
377
  // ../runtime/src/index.ts
360
378
  var init_src = __esm(() => {
379
+ init_bridge_mode();
361
380
  init_worker_helper();
362
381
  init_simd_detector();
363
382
  });
@@ -768,9 +787,10 @@ class JxlWorkerBridge {
768
787
  }
769
788
  }
770
789
  }
771
- function createBridge(mode, options) {
772
- console.log(`[jxl/bridge] createBridge called with mode: ${mode}`);
773
- if (mode === "worker") {
790
+ function createBridge(mode = "auto", options) {
791
+ const resolvedMode = resolveBridgeMode(mode);
792
+ console.log(`[jxl/bridge] createBridge called with mode: ${resolvedMode}`);
793
+ if (resolvedMode === "worker") {
774
794
  return new JxlWorkerBridge(options);
775
795
  }
776
796
  return new JxlClientBridge;
@@ -780,17 +800,17 @@ function createBridge(mode, options) {
780
800
  var globalClientBridge = null;
781
801
  async function encode(imageData, options, signal) {
782
802
  if (!globalClientBridge) {
783
- globalClientBridge = createBridge("worker");
803
+ globalClientBridge = createBridge("auto");
784
804
  }
785
805
  return globalClientBridge.encode(imageData, options, signal);
786
806
  }
787
807
  async function decode(data, signal) {
788
808
  if (!globalClientBridge) {
789
- globalClientBridge = createBridge("worker");
809
+ globalClientBridge = createBridge("auto");
790
810
  }
791
811
  return globalClientBridge.decode(data, signal);
792
812
  }
793
- function createJxlEncoder(mode = "worker", options) {
813
+ function createJxlEncoder(mode = "auto", options) {
794
814
  const bridge = createBridge(mode, options);
795
815
  return Object.assign((imageData, encodeOptions, signal) => {
796
816
  return bridge.encode(imageData, encodeOptions, signal);
@@ -800,7 +820,7 @@ function createJxlEncoder(mode = "worker", options) {
800
820
  }
801
821
  });
802
822
  }
803
- function createJxlDecoder(mode = "worker", options) {
823
+ function createJxlDecoder(mode = "auto", options) {
804
824
  const bridge = createBridge(mode, options);
805
825
  return Object.assign((data, signal) => {
806
826
  return bridge.decode(data, signal);
@@ -817,4 +837,4 @@ export {
817
837
  createJxlDecoder
818
838
  };
819
839
 
820
- //# debugId=0F614136D42FD90864756E2164756E21
840
+ //# debugId=9E9B4B55662C15EF64756E2164756E21
@@ -1,20 +1,21 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../runtime/src/env.ts", "../../runtime/src/worker-call.ts", "../../runtime/src/worker-helper.ts", "../../runtime/src/wasm-loader.ts", "../../runtime/src/validators.ts", "../../runtime/src/image-data-polyfill.ts", "../../runtime/src/index.ts", "../src/validators.ts", "../src/jxl.worker.ts", "../src/bridge.ts", "../src/index.ts"],
3
+ "sources": ["../../runtime/src/env.ts", "../../runtime/src/bridge-mode.ts", "../../runtime/src/worker-call.ts", "../../runtime/src/worker-helper.ts", "../../runtime/src/wasm-loader.ts", "../../runtime/src/validators.ts", "../../runtime/src/image-data-polyfill.ts", "../../runtime/src/index.ts", "../src/validators.ts", "../src/jxl.worker.ts", "../src/bridge.ts", "../src/index.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * Runtime environment detection utilities\n */\n\n/**\n * Detect if running in a Web Worker context\n */\nexport function isWorker(): boolean {\n return (\n typeof self !== 'undefined' &&\n typeof (globalThis as unknown as { DedicatedWorkerGlobalScope?: unknown })\n .DedicatedWorkerGlobalScope !== 'undefined'\n );\n}\n\n/**\n * Detect if running in a browser context\n */\nexport function isBrowser(): boolean {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * Detect if running in Bun\n */\nexport function isBun(): boolean {\n return typeof Bun !== 'undefined';\n}\n\n/**\n * Detect if running in Node.js\n */\nexport function isNode(): boolean {\n return (\n typeof process !== 'undefined' &&\n process.versions != null &&\n process.versions.node != null\n );\n}\n\n/**\n * Check if ImageData is available in the current environment\n */\nexport function hasImageData(): boolean {\n return typeof ImageData !== 'undefined';\n}\n",
6
+ "import { isBrowser, isWorker } from './env';\n\nexport type BridgeMode = 'worker' | 'client' | 'auto';\n\nexport type ResolvedBridgeMode = 'worker' | 'client';\n\nexport function resolveBridgeMode(\n mode: BridgeMode = 'auto'\n): ResolvedBridgeMode {\n if (mode === 'worker' || mode === 'client') {\n return mode;\n }\n\n if (isBrowser() && !isWorker()) {\n return 'worker';\n }\n\n return 'client';\n}\n",
6
7
  "/**\n * Generic worker communication helper with support for transferables and AbortSignal\n */\n\nexport interface WorkerRequest<T = unknown> {\n type: string;\n id: number;\n payload: T;\n}\n\nexport interface WorkerResponse<T = unknown> {\n id: number;\n ok: boolean;\n data?: T;\n error?: string;\n}\n\nlet requestId = 0;\n\n/**\n * Call a worker with a typed request and wait for response\n *\n * @param worker - The worker instance to call\n * @param type - The message type\n * @param payload - The payload to send\n * @param signal - Optional AbortSignal to cancel the operation\n * @param transfer - Optional list of Transferable objects to transfer\n * @returns Promise that resolves with the worker's response data\n */\nexport async function callWorker<TPayload, TResponse>(\n worker: Worker,\n type: string,\n payload: TPayload,\n signal?: AbortSignal,\n transfer?: Transferable[]\n): Promise<TResponse> {\n return new Promise<TResponse>((resolve, reject) => {\n const id = ++requestId;\n\n // Check if already aborted\n if (signal?.aborted) {\n reject(new DOMException('Aborted', 'AbortError'));\n return;\n }\n\n const handleMessage = (event: MessageEvent) => {\n const response = event.data as WorkerResponse<TResponse>;\n if (response.id !== id) return;\n\n cleanup();\n\n if (response.ok && response.data !== undefined) {\n resolve(response.data);\n } else {\n reject(new Error(response.error || 'Unknown worker error'));\n }\n };\n\n const handleError = (error: ErrorEvent) => {\n cleanup();\n reject(new Error(`Worker error: ${error.message}`));\n };\n\n const handleAbort = () => {\n cleanup();\n reject(new DOMException('Aborted', 'AbortError'));\n };\n\n const cleanup = () => {\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n signal?.removeEventListener('abort', handleAbort);\n };\n\n // Set up listeners\n worker.addEventListener('message', handleMessage);\n worker.addEventListener('error', handleError);\n signal?.addEventListener('abort', handleAbort);\n\n // Send the request\n const request: WorkerRequest<TPayload> = { type, id, payload };\n\n if (transfer && transfer.length > 0) {\n worker.postMessage(request, transfer);\n } else {\n worker.postMessage(request);\n }\n });\n}\n",
7
8
  "/**\n * Worker helper utilities for creating and managing Web Workers\n *\n * This module provides centralized logic for creating worker instances\n * in different environments (browser, Node.js, Bun) using import.meta.resolve\n * for server-side and package-relative paths for browsers.\n */\n\nimport { isBun } from './env';\n\nexport const DEFAULT_BROWSER_ASSET_PATH = '/squoosh-kit';\n\ntype WorkerPackageConfig = {\n package: string;\n specifier: string;\n};\n\nfunction scriptUrlToPath(scriptUrl: string | URL): string {\n const href = typeof scriptUrl === 'string' ? scriptUrl : scriptUrl.href;\n if (href.startsWith('file://')) {\n return decodeURIComponent(\n href.startsWith('file:///') ? href.slice(7) : href.slice(5)\n );\n }\n return href;\n}\n\nfunction workerScriptExists(scriptUrl: string | URL): boolean {\n if (typeof window !== 'undefined') {\n return false;\n }\n\n const path = scriptUrlToPath(scriptUrl);\n\n if (typeof Bun !== 'undefined') {\n return (\n Bun.spawnSync(['test', '-f', path], {\n stdout: 'ignore',\n stderr: 'ignore',\n }).exitCode === 0\n );\n }\n\n try {\n const existsSync = Function('return require(\"node:fs\").existsSync')() as (\n filePath: string\n ) => boolean;\n return existsSync(path);\n } catch {\n return false;\n }\n}\n\nexport function resolveServerWorkerScript(\n workerConfig: WorkerPackageConfig,\n normalizedName: string\n): string | URL {\n const platformExt = isBun() ? 'bun.js' : 'node.mjs';\n const baseName = normalizedName.replace('.js', '');\n const pkgName = workerConfig.package.split('/')[1];\n\n if (typeof import.meta.resolve === 'function') {\n try {\n const resolved = import.meta.resolve(\n `${workerConfig.package}/${workerConfig.specifier}`\n );\n if (workerScriptExists(resolved)) {\n return resolved;\n }\n } catch {\n // Continue to monorepo fallbacks\n }\n }\n\n const candidates = [\n new URL(\n `../../${pkgName}/dist/${baseName}.${platformExt}`,\n import.meta.url\n ),\n new URL(`../../${pkgName}/src/${baseName}.ts`, import.meta.url),\n ];\n\n for (const candidate of candidates) {\n if (workerScriptExists(candidate)) {\n return candidate;\n }\n }\n\n throw new Error(\n `Failed to resolve worker script for ${normalizedName}. ` +\n `Tried import.meta.resolve, dist output, and TypeScript source. ` +\n `Ensure ${workerConfig.package} is installed.`\n );\n}\n\nexport type CreateWorkerOptions = {\n /**\n * Public URL prefix for worker and WASM files.\n * Defaults to `/squoosh-kit` in the browser (the path used by\n * `@squoosh-kit/vite-plugin`). Pass an empty string to resolve workers\n * relative to the installed package instead.\n */\n assetPath?: string;\n};\n\n/**\n * Create a Web Worker for a specific codec\n *\n * In Node.js/Bun environments, uses import.meta.resolve to locate worker files.\n * In browsers, workers load from `/squoosh-kit/{package}/` by default.\n *\n * @param workerFilename - The name of the worker file (e.g., 'resize.worker' or 'webp.worker')\n * @returns Worker instance\n * @throws Error if worker creation fails with detailed error message\n */\nexport function createCodecWorker(\n workerFilename: string,\n options?: CreateWorkerOptions\n): Worker {\n // Ensure filename has correct format\n const normalizedName = workerFilename.endsWith('.js')\n ? workerFilename\n : `${workerFilename}.js`;\n\n // Map worker filenames to their package and export\n const workerMap: Record<string, { package: string; specifier: string }> = {\n 'resize.worker.js': {\n package: '@squoosh-kit/resize',\n specifier: 'resize.worker.js',\n },\n 'webp.worker.js': {\n package: '@squoosh-kit/webp',\n specifier: 'webp.worker.js',\n },\n 'avif.worker.js': {\n package: '@squoosh-kit/avif',\n specifier: 'avif.worker.js',\n },\n 'mozjpeg.worker.js': {\n package: '@squoosh-kit/mozjpeg',\n specifier: 'mozjpeg.worker.js',\n },\n 'jxl.worker.js': {\n package: '@squoosh-kit/jxl',\n specifier: 'jxl.worker.js',\n },\n 'oxipng.worker.js': {\n package: '@squoosh-kit/oxipng',\n specifier: 'oxipng.worker.js',\n },\n 'png.worker.js': {\n package: '@squoosh-kit/png',\n specifier: 'png.worker.js',\n },\n 'imagequant.worker.js': {\n package: '@squoosh-kit/imagequant',\n specifier: 'imagequant.worker.js',\n },\n 'qoi.worker.js': {\n package: '@squoosh-kit/qoi',\n specifier: 'qoi.worker.js',\n },\n 'wp2.worker.js': {\n package: '@squoosh-kit/wp2',\n specifier: 'wp2.worker.js',\n },\n 'hqx.worker.js': {\n package: '@squoosh-kit/hqx',\n specifier: 'hqx.worker.js',\n },\n 'rotate.worker.js': {\n package: '@squoosh-kit/rotate',\n specifier: 'rotate.worker.js',\n },\n 'visdif.worker.js': {\n package: '@squoosh-kit/visdif',\n specifier: 'visdif.worker.js',\n },\n };\n\n const workerConfig = workerMap[normalizedName];\n if (!workerConfig) {\n throw new Error(\n `Unknown worker: ${normalizedName}. ` +\n `Supported workers: ${Object.keys(workerMap).join(', ')}`\n );\n }\n\n try {\n // In browsers, workers load from /squoosh-kit by default\n if (typeof window !== 'undefined') {\n const packageName = workerConfig.package.split('/')[1]; // Extract 'resize' or 'webp'\n const workerFile = normalizedName.replace('.js', '.browser.mjs');\n\n console.log(\n `[worker-helper] In browser environment. Trying to create worker:`\n );\n console.log(`[worker-helper] - Package Name: ${packageName}`);\n console.log(`[worker-helper] - Worker File: ${workerFile}`);\n\n const assetPath =\n options?.assetPath === undefined\n ? DEFAULT_BROWSER_ASSET_PATH\n : options.assetPath;\n\n if (assetPath) {\n let normalizedAssetPath = assetPath;\n if (!normalizedAssetPath.startsWith('/')) {\n normalizedAssetPath = '/' + normalizedAssetPath;\n }\n if (normalizedAssetPath.endsWith('/')) {\n normalizedAssetPath = normalizedAssetPath.slice(0, -1);\n }\n\n // Construct absolute URL: {origin}{assetPath}/{package}/{workerFile}\n const workerPath = `${normalizedAssetPath}/${packageName}/${workerFile}`;\n const workerUrl = new URL(workerPath, window.location.origin).href;\n\n console.log(\n `[worker-helper] Using assetPath. Full Worker URL: ${workerUrl}`\n );\n try {\n const worker = new Worker(workerUrl, { type: 'module' });\n console.log(\n `[worker-helper] Successfully created worker with assetPath: ${workerUrl}`\n );\n return worker;\n } catch (e) {\n console.error(\n `[worker-helper] Failed to load worker from assetPath URL: ${workerUrl}`,\n e\n );\n throw new Error(\n `Worker failed to load from ${workerUrl}: ${e instanceof Error ? e.message : String(e)}`,\n { cause: e }\n );\n }\n }\n\n // Try multiple path strategies to support both:\n // 1. Monorepo development structure: ../../{package}/dist/{workerFile}\n // 2. npm installed structure: ../../../{package}/dist/{workerFile}\n const pathStrategies = [\n // First try monorepo structure (when runtime is at packages/runtime/src)\n `../../${packageName}/dist/${workerFile}`,\n // Then try npm structure (when runtime is at node_modules/@squoosh-kit/runtime)\n `../../../node_modules/@squoosh-kit/${packageName}/dist/${workerFile}`,\n // Alternative npm structure for cases where packages are flattened\n `../../../${packageName}/dist/${workerFile}`,\n ];\n\n let lastError: Error | null = null;\n\n for (const relPath of pathStrategies) {\n console.log('relPath:', relPath);\n console.log('import.meta.url:', import.meta.url);\n try {\n const workerUrl = new URL(relPath, import.meta.url);\n console.log(\n `[worker-helper] Trying path strategy. Full Worker URL: ${workerUrl.href}`\n );\n const worker = new Worker(workerUrl, {\n type: 'module',\n });\n console.log(\n `[worker-helper] Successfully created worker with URL: ${workerUrl.href}`\n );\n return worker;\n } catch (error) {\n console.warn(\n `[worker-helper] Path strategy failed for ${relPath}:`,\n error\n );\n lastError = error instanceof Error ? error : new Error(String(error));\n // Continue to next strategy\n }\n }\n\n // If all strategies failed, throw the last error\n if (lastError) {\n console.error('[worker-helper] All path strategies failed.', lastError);\n throw lastError;\n }\n throw new Error(\n `Could not resolve worker ${normalizedName} using any available path strategy`\n );\n }\n\n const workerScript = resolveServerWorkerScript(\n workerConfig,\n normalizedName\n );\n return new Worker(workerScript, { type: 'module' });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n throw new Error(\n `Failed to create worker from ${normalizedName}: ${errorMessage}. ` +\n `Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed. ` +\n `If you're using Vite, ensure the worker files are not being optimized as dependencies.`,\n { cause: error }\n );\n }\n}\n\n/**\n * Create a worker with initialization timeout and ready signal handling\n *\n * This is a higher-level function that creates a worker and waits for it\n * to signal that it's ready to receive messages.\n *\n * @param workerFilename - The name of the worker file\n * @param timeoutMs - Timeout in milliseconds (default: 10000)\n * @returns Promise that resolves to a ready Worker instance\n * @throws Error if worker creation fails or times out\n */\nexport function createReadyWorker(\n workerFilename: string,\n options?: CreateWorkerOptions,\n timeoutMs: number = 10000\n): Promise<Worker> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(\n new Error(\n `Worker initialization timeout after ${timeoutMs}ms. Worker file: ${workerFilename}`\n )\n );\n }, timeoutMs);\n\n let worker: Worker;\n try {\n worker = createCodecWorker(workerFilename, options);\n } catch (error) {\n clearTimeout(timeout);\n reject(error);\n return;\n }\n\n const handleMessage = (event: MessageEvent) => {\n if (event.data?.type === 'worker:ready') {\n clearTimeout(timeout);\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n worker.removeEventListener('messageerror', handleMessageError);\n resolve(worker);\n }\n };\n\n const handleError = (event: ErrorEvent) => {\n clearTimeout(timeout);\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n worker.removeEventListener('messageerror', handleMessageError);\n reject(\n new Error(\n `Worker failed to start: ${event?.message || 'Unknown error'}. Worker file: ${workerFilename}`\n )\n );\n };\n\n const handleMessageError = () => {\n clearTimeout(timeout);\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n worker.removeEventListener('messageerror', handleMessageError);\n reject(\n new Error(\n `Worker message error during initialization. Worker file: ${workerFilename}`\n )\n );\n };\n\n worker.addEventListener('message', handleMessage);\n worker.addEventListener('error', handleError);\n worker.addEventListener('messageerror', handleMessageError);\n worker.postMessage({ type: 'worker:ping' });\n });\n}\n",
8
9
  "/**\n * Load WASM binary from various sources with fallback strategies\n *\n * Supports:\n * - Node.js (fs/promises)\n * - Browsers (fetch)\n * - Workers (fetch)\n */\nexport async function loadWasmBinary(\n relativePath: string,\n baseUrlOverride?: string | URL\n): Promise<ArrayBuffer> {\n // Get the base URL depending on the environment (worker or main thread)\n // If a base URL is provided, use it; otherwise use import.meta.url from this module\n // In a worker, import.meta.url is the worker's own URL.\n // In the main thread, it's the URL of the current module.\n const baseUrl = baseUrlOverride\n ? typeof baseUrlOverride === 'string'\n ? new URL('.', baseUrlOverride)\n : new URL('.', baseUrlOverride.href)\n : new URL('.', import.meta.url);\n const fullUrl = new URL(relativePath, baseUrl);\n\n console.log(`[WasmLoader] Loading WASM from relative path: ${relativePath}`);\n console.log(`[WasmLoader] Base URL (import.meta.url): ${baseUrl.href}`);\n console.log(`[WasmLoader] Constructed full URL: ${fullUrl.href}`);\n\n try {\n const response = await fetch(fullUrl.href);\n\n console.log(\n `[WasmLoader] Fetch response status for ${fullUrl.href}: ${response.status}`\n );\n\n if (!response.ok) {\n const responseText = await response.text();\n console.error(\n `[WasmLoader] Fetch response text (first 500 chars):`,\n responseText.substring(0, 500)\n );\n throw new Error(\n `Failed to fetch WASM module at ${fullUrl.href}: ${response.status} ${response.statusText}`\n );\n }\n\n const contentType = response.headers.get('content-type');\n console.log(`[WasmLoader] Response Content-Type: ${contentType}`);\n if (!contentType || !contentType.includes('application/wasm')) {\n console.warn(\n `[WasmLoader] Warning: WASM module at ${fullUrl.href} served with incorrect MIME type: \"${contentType}\". Should be \"application/wasm\".`\n );\n }\n\n return await response.arrayBuffer();\n } catch (error) {\n console.error(\n `[WasmLoader] CRITICAL: Fetching WASM binary from ${fullUrl.href} failed.`,\n error\n );\n throw error;\n }\n}\n\n/**\n * Load WASM JavaScript module with fallback strategies\n *\n * Strategy 1: Static relative import (works everywhere)\n * Strategy 2: import.meta.resolve (Node.js 22+)\n * Strategy 3: URL-based import (browsers/workers)\n */\nexport async function loadWasmModule(\n modulePath: string\n): Promise<WebAssembly.Module> {\n // Strategy 1: Try direct static import\n try {\n return await import(/* @vite-ignore */ modulePath);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e1) {\n // Continue to next strategy\n }\n\n // Strategy 2: Try import.meta.resolve (Node.js 22+)\n try {\n const resolvedPath = await import.meta.resolve(modulePath);\n\n return await import(/* @vite-ignore */ resolvedPath);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e2) {\n // Continue to next strategy\n }\n\n // Strategy 3: Try URL-based import\n try {\n const url = new URL(/* @vite-ignore */ modulePath, import.meta.url);\n\n return await import(/* @vite-ignore */ url.href);\n } catch (e3) {\n throw new Error(\n `Failed to load WASM module from \"${modulePath}\". ` +\n `Ensure WASM files are in the expected location and the module can be resolved.`,\n { cause: e3 }\n );\n }\n}\n",
9
10
  "import type { ImageInput } from './types.js';\n\nexport function validateArrayBuffer(\n buffer: unknown\n): asserts buffer is ArrayBuffer {\n // Check if SharedArrayBuffer is defined in the current environment before using it\n if (\n typeof SharedArrayBuffer !== 'undefined' &&\n buffer instanceof SharedArrayBuffer\n ) {\n throw new Error(\n 'SharedArrayBuffer is not supported. ' +\n 'Use regular ArrayBuffer or Uint8Array instead.'\n );\n }\n\n if (!(buffer instanceof ArrayBuffer)) {\n throw new TypeError('image.data.buffer must be an ArrayBuffer');\n }\n}\n\nexport function validateImageInput(\n image: unknown\n): asserts image is ImageInput {\n if (!image || typeof image !== 'object') {\n throw new TypeError('image must be an object');\n }\n\n const imageObj = image as Record<string, unknown>;\n\n if (!('data' in imageObj)) {\n throw new TypeError('image.data is required');\n }\n\n const { data } = imageObj;\n if (!(data instanceof Uint8Array || data instanceof Uint8ClampedArray)) {\n throw new TypeError('image.data must be Uint8Array or Uint8ClampedArray');\n }\n\n if (!('width' in imageObj) || !('height' in imageObj)) {\n throw new TypeError('image.width and image.height are required');\n }\n\n const { width, height } = imageObj;\n\n if (typeof width !== 'number' || !Number.isInteger(width) || width <= 0) {\n throw new RangeError(\n `image.width must be a positive integer, got ${width}`\n );\n }\n\n if (typeof height !== 'number' || !Number.isInteger(height) || height <= 0) {\n throw new RangeError(\n `image.height must be a positive integer, got ${height}`\n );\n }\n\n const expectedSize = width * height * 4;\n if (data.length < expectedSize) {\n throw new RangeError(\n `image.data too small: ${data.length} bytes, expected at least ${expectedSize} bytes for ${width}x${height} RGBA image`\n );\n }\n}\n",
10
11
  "/**\n * Polyfill for ImageData in Node/Bun environments where it's not available.\n * Must be called before any WASM decode operation that returns ImageData.\n */\nexport function polyfillImageData(): void {\n if (typeof ImageData === 'undefined') {\n (\n globalThis as {\n ImageData?: new (\n data: Uint8ClampedArray,\n width: number,\n height: number\n ) => ImageData;\n }\n ).ImageData = class {\n data: Uint8ClampedArray;\n width: number;\n height: number;\n colorSpace: PredefinedColorSpace = 'srgb';\n constructor(data: Uint8ClampedArray, width: number, height: number) {\n this.data = data;\n this.width = width;\n this.height = height;\n }\n } as unknown as typeof ImageData;\n }\n}\n",
11
- "/**\n * @squoosh-kit/runtime\n *\n * Core runtime logic for squoosh-kit, including environment utilities\n * and worker communication helpers.\n */\n\nexport * from './env.js';\nexport * from './worker-call.js';\nexport * from './types.js';\nexport * from './worker-helper.js';\nexport * from './wasm-loader.js';\nexport * from './validators.js';\nexport * from './simd-detector.js';\nexport * from './image-data-polyfill.js';\n",
12
+ "/**\n * @squoosh-kit/runtime\n *\n * Core runtime logic for squoosh-kit, including environment utilities\n * and worker communication helpers.\n */\n\nexport * from './bridge-mode.js';\nexport * from './env.js';\nexport * from './worker-call.js';\nexport * from './types.js';\nexport * from './worker-helper.js';\nexport * from './wasm-loader.js';\nexport * from './validators.js';\nexport * from './simd-detector.js';\nexport * from './image-data-polyfill.js';\n",
12
13
  "export function validateJxlOptions(\n options: unknown\n): asserts options is Record<string, unknown> | undefined {\n if (options === undefined) {\n return;\n }\n\n if (typeof options !== 'object' || options === null) {\n throw new TypeError('options must be an object or undefined');\n }\n\n const opts = options as Record<string, unknown>;\n\n if ('quality' in opts && opts.quality !== undefined) {\n const quality = opts.quality;\n\n if (Number.isNaN(quality)) {\n throw new RangeError(\n 'quality must be a valid number in the range 0-100, got NaN'\n );\n }\n\n if (typeof quality !== 'number') {\n throw new TypeError('quality must be a number');\n }\n\n if (!Number.isFinite(quality) || !Number.isInteger(quality)) {\n throw new RangeError(\n 'quality must be an integer in the range 0-100, got floating point'\n );\n }\n\n if (quality < 0 || quality > 100) {\n throw new RangeError(\n `quality must be in the range 0-100, got ${quality}`\n );\n }\n }\n\n if ('effort' in opts && opts.effort !== undefined) {\n const effort = opts.effort;\n\n if (typeof effort !== 'number') {\n throw new TypeError('effort must be a number');\n }\n\n if (!Number.isFinite(effort) || !Number.isInteger(effort)) {\n throw new RangeError('effort must be an integer in the range 1-9');\n }\n\n if (effort < 1 || effort > 9) {\n throw new RangeError(`effort must be in the range 1-9, got ${effort}`);\n }\n }\n\n if ('epf' in opts && opts.epf !== undefined) {\n const epf = opts.epf;\n\n if (typeof epf !== 'number') {\n throw new TypeError('epf must be a number');\n }\n\n if (!Number.isFinite(epf) || !Number.isInteger(epf)) {\n throw new RangeError('epf must be an integer in the range -1 to 3');\n }\n\n if (epf < -1 || epf > 3) {\n throw new RangeError(`epf must be in the range -1 to 3, got ${epf}`);\n }\n }\n\n if ('decodingSpeedTier' in opts && opts.decodingSpeedTier !== undefined) {\n const decodingSpeedTier = opts.decodingSpeedTier;\n\n if (typeof decodingSpeedTier !== 'number') {\n throw new TypeError('decodingSpeedTier must be a number');\n }\n\n if (\n !Number.isFinite(decodingSpeedTier) ||\n !Number.isInteger(decodingSpeedTier)\n ) {\n throw new RangeError(\n 'decodingSpeedTier must be an integer in the range 0-4'\n );\n }\n\n if (decodingSpeedTier < 0 || decodingSpeedTier > 4) {\n throw new RangeError(\n `decodingSpeedTier must be in the range 0-4, got ${decodingSpeedTier}`\n );\n }\n }\n}\n",
13
14
  "/**\n * JXL encoder/decoder - single-source worker/client implementation\n */\n\nimport {\n type WorkerRequest,\n type WorkerResponse,\n type ImageInput,\n loadWasmBinary,\n validateImageInput,\n polyfillImageData,\n} from '@squoosh-kit/runtime';\nimport { validateJxlOptions } from './validators';\nimport type { JXLModule, EncodeOptions } from './types';\nimport type { JXLModule as JXLDecModule } from '../wasm/jxl-dec/jxl_dec';\n\nlet cachedEncModule: JXLModule | null = null;\nlet cachedDecModule: JXLDecModule | null = null;\nlet loadEncModulePromise: Promise<JXLModule> | null = null;\nlet loadDecModulePromise: Promise<JXLDecModule> | null = null;\n\n/**\n * Determine if we are running in a Node/Bun environment\n */\nfunction isNodeOrBun(): boolean {\n return (\n typeof process !== 'undefined' &&\n (process.versions?.bun !== undefined ||\n process.versions?.node !== undefined)\n );\n}\n\nasync function loadJxlEncModule(): Promise<JXLModule> {\n if (cachedEncModule) return cachedEncModule;\n if (loadEncModulePromise) return loadEncModulePromise;\n loadEncModulePromise = (async () => {\n // Emscripten polyfills\n const globalSelf = typeof self !== 'undefined' ? self : globalThis;\n if (!globalSelf.location) {\n (globalSelf as { location?: { href: string } }).location = {\n href: import.meta.url,\n };\n }\n if (typeof self === 'undefined' && typeof globalThis !== 'undefined') {\n (globalThis as { self?: typeof globalThis }).self = globalThis;\n }\n\n const useNode = isNodeOrBun();\n // Node/Bun: use jxl_node_enc.js; Browser: use jxl_enc.js (single-threaded)\n const modulePath = useNode\n ? 'jxl-enc/jxl_node_enc.js'\n : 'jxl-enc/jxl_enc.js';\n\n try {\n console.log('[JXL Worker] Initializing encoder. Node/Bun:', useNode);\n console.log(\n `[JXL Worker] Attempting to import encoder module from path: ${modulePath}`\n );\n\n let moduleFactory;\n const isSource = import.meta.url.includes('/src/');\n const pathsToTry = isSource\n ? ['../wasm/' + modulePath, './wasm/' + modulePath]\n : ['./wasm/' + modulePath, '../wasm/' + modulePath];\n\n let lastError: Error | null = null;\n for (const importPath of pathsToTry) {\n try {\n moduleFactory = (await import(/* @vite-ignore */ importPath)).default;\n console.log(\n `[JXL Worker] Successfully loaded encoder module from: ${importPath}`\n );\n break;\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n console.warn(\n `[JXL Worker] Failed to load encoder from ${importPath}, trying next path...`\n );\n }\n }\n\n if (!moduleFactory) {\n throw (\n lastError ||\n new Error('Could not load JXL encoder module from any path')\n );\n }\n\n console.log('[JXL Worker] Encoder module factory loaded successfully.');\n\n const wasmFile = useNode ? 'jxl_node_enc.wasm' : 'jxl_enc.wasm';\n const wasmPathsToTry = isSource\n ? [`../wasm/jxl-enc/${wasmFile}`, `./wasm/jxl-enc/${wasmFile}`]\n : [`./wasm/jxl-enc/${wasmFile}`, `../wasm/jxl-enc/${wasmFile}`];\n\n console.log(\n `[JXL Worker] Preparing to load encoder WASM binary. Will try paths: ${wasmPathsToTry.join(', ')}`\n );\n\n const initModuleWithBinary = async (\n factory: (config: {\n noInitialRun: boolean;\n wasmBinary?: ArrayBuffer;\n }) => Promise<JXLModule>,\n wasmPaths: string[]\n ): Promise<JXLModule> => {\n const workerBaseUrl = new URL('.', import.meta.url);\n let lastError: Error | null = null;\n for (const wasmPath of wasmPaths) {\n try {\n console.log(\n `[JXL Worker] Calling loadWasmBinary with path: ${wasmPath}`\n );\n const wasmBinary = await loadWasmBinary(wasmPath, workerBaseUrl);\n console.log(\n `[JXL Worker] Successfully fetched encoder WASM binary from ${wasmPath}. Size: ${wasmBinary.byteLength} bytes.`\n );\n\n const globalSelf = typeof self !== 'undefined' ? self : globalThis;\n if (!globalSelf.location) {\n (globalSelf as { location?: { href: string } }).location = {\n href: import.meta.url,\n };\n }\n if (\n typeof self === 'undefined' &&\n typeof globalThis !== 'undefined'\n ) {\n (globalThis as { self?: typeof globalThis }).self = globalThis;\n }\n\n return await factory({\n noInitialRun: true,\n wasmBinary,\n });\n } catch (err) {\n lastError = err instanceof Error ? err : new Error(String(err));\n console.warn(\n `[JXL Worker] Failed to load encoder WASM from ${wasmPath}, trying next path...`\n );\n }\n }\n throw (\n lastError ||\n new Error(\n 'Could not load encoder WASM binary from any of the attempted paths'\n )\n );\n };\n\n cachedEncModule = await initModuleWithBinary(\n moduleFactory,\n wasmPathsToTry\n );\n console.log('[JXL Worker] JXL encoder module initialized successfully.');\n return cachedEncModule;\n } catch (err) {\n console.error(\n `[JXL Worker] CRITICAL: Failed to load JXL encoder module from path: ${modulePath}`,\n err\n );\n throw err;\n }\n })().catch((err: unknown) => {\n loadEncModulePromise = null;\n throw err;\n });\n return loadEncModulePromise;\n}\n\nasync function loadJxlDecModule(): Promise<JXLDecModule> {\n if (cachedDecModule) return cachedDecModule;\n if (loadDecModulePromise) return loadDecModulePromise;\n loadDecModulePromise = (async () => {\n // Emscripten polyfills\n const globalSelf = typeof self !== 'undefined' ? self : globalThis;\n if (!globalSelf.location) {\n (globalSelf as { location?: { href: string } }).location = {\n href: import.meta.url,\n };\n }\n if (typeof self === 'undefined' && typeof globalThis !== 'undefined') {\n (globalThis as { self?: typeof globalThis }).self = globalThis;\n }\n\n // Polyfill ImageData for Node/Bun environments\n polyfillImageData();\n\n const useNode = isNodeOrBun();\n // Node/Bun: use jxl_node_dec.js; Browser: use jxl_dec.js\n const modulePath = useNode\n ? 'jxl-dec/jxl_node_dec.js'\n : 'jxl-dec/jxl_dec.js';\n\n try {\n console.log('[JXL Worker] Initializing decoder. Node/Bun:', useNode);\n console.log(\n `[JXL Worker] Attempting to import decoder module from path: ${modulePath}`\n );\n\n let moduleFactory;\n const isSource = import.meta.url.includes('/src/');\n const pathsToTry = isSource\n ? ['../wasm/' + modulePath, './wasm/' + modulePath]\n : ['./wasm/' + modulePath, '../wasm/' + modulePath];\n\n let lastError: Error | null = null;\n for (const importPath of pathsToTry) {\n try {\n moduleFactory = (await import(/* @vite-ignore */ importPath)).default;\n console.log(\n `[JXL Worker] Successfully loaded decoder module from: ${importPath}`\n );\n break;\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n console.warn(\n `[JXL Worker] Failed to load decoder from ${importPath}, trying next path...`\n );\n }\n }\n\n if (!moduleFactory) {\n throw (\n lastError ||\n new Error('Could not load JXL decoder module from any path')\n );\n }\n\n console.log('[JXL Worker] Decoder module factory loaded successfully.');\n\n const wasmFile = useNode ? 'jxl_node_dec.wasm' : 'jxl_dec.wasm';\n const wasmPathsToTry = isSource\n ? [`../wasm/jxl-dec/${wasmFile}`, `./wasm/jxl-dec/${wasmFile}`]\n : [`./wasm/jxl-dec/${wasmFile}`, `../wasm/jxl-dec/${wasmFile}`];\n\n console.log(\n `[JXL Worker] Preparing to load decoder WASM binary. Will try paths: ${wasmPathsToTry.join(', ')}`\n );\n\n const initModuleWithBinary = async (\n factory: (config: {\n noInitialRun: boolean;\n wasmBinary?: ArrayBuffer;\n }) => Promise<JXLDecModule>,\n wasmPaths: string[]\n ): Promise<JXLDecModule> => {\n const workerBaseUrl = new URL('.', import.meta.url);\n let lastError: Error | null = null;\n for (const wasmPath of wasmPaths) {\n try {\n console.log(\n `[JXL Worker] Calling loadWasmBinary with path: ${wasmPath}`\n );\n const wasmBinary = await loadWasmBinary(wasmPath, workerBaseUrl);\n console.log(\n `[JXL Worker] Successfully fetched decoder WASM binary from ${wasmPath}. Size: ${wasmBinary.byteLength} bytes.`\n );\n\n const globalSelf = typeof self !== 'undefined' ? self : globalThis;\n if (!globalSelf.location) {\n (globalSelf as { location?: { href: string } }).location = {\n href: import.meta.url,\n };\n }\n if (\n typeof self === 'undefined' &&\n typeof globalThis !== 'undefined'\n ) {\n (globalThis as { self?: typeof globalThis }).self = globalThis;\n }\n\n return await factory({\n noInitialRun: true,\n wasmBinary,\n });\n } catch (err) {\n lastError = err instanceof Error ? err : new Error(String(err));\n console.warn(\n `[JXL Worker] Failed to load decoder WASM from ${wasmPath}, trying next path...`\n );\n }\n }\n throw (\n lastError ||\n new Error(\n 'Could not load decoder WASM binary from any of the attempted paths'\n )\n );\n };\n\n cachedDecModule = await initModuleWithBinary(\n moduleFactory,\n wasmPathsToTry\n );\n console.log('[JXL Worker] JXL decoder module initialized successfully.');\n return cachedDecModule;\n } catch (err) {\n console.error(\n `[JXL Worker] CRITICAL: Failed to load JXL decoder module from path: ${modulePath}`,\n err\n );\n throw err;\n }\n })().catch((err: unknown) => {\n loadDecModulePromise = null;\n throw err;\n });\n return loadDecModulePromise;\n}\n\n/**\n * Build full EncodeOptions from partial user options using Squoosh defaults\n */\nfunction createEncodeOptions(options?: Partial<EncodeOptions>): EncodeOptions {\n return {\n effort: options?.effort ?? 7,\n quality: options?.quality ?? 75,\n progressive: options?.progressive ?? false,\n epf: options?.epf ?? -1,\n lossyPalette: options?.lossyPalette ?? false,\n decodingSpeedTier: options?.decodingSpeedTier ?? 0,\n photonNoiseIso: options?.photonNoiseIso ?? 0,\n lossyModular: options?.lossyModular ?? false,\n };\n}\n\n/**\n * Client-mode JXL encoder (exported for direct use)\n */\nexport async function jxlEncodeClient(\n image: ImageInput,\n options?: Partial<EncodeOptions>,\n signal?: AbortSignal\n): Promise<Uint8Array> {\n validateImageInput(image);\n validateJxlOptions(options);\n\n if (signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n\n const width = image.width;\n const height = image.height;\n const data = image.data;\n\n if (!(data instanceof Uint8Array) && !(data instanceof Uint8ClampedArray)) {\n throw new Error('Image data must be Uint8Array or Uint8ClampedArray');\n }\n\n const module = await loadJxlEncModule();\n\n if (signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n\n const encodeOptions = createEncodeOptions(options);\n\n const dataArray =\n data instanceof Uint8ClampedArray\n ? new Uint8Array(data.buffer as ArrayBuffer, data.byteOffset, data.length)\n : new Uint8Array(\n data.buffer as ArrayBuffer,\n data.byteOffset,\n data.length\n );\n\n const result = module.encode(dataArray, width, height, encodeOptions);\n\n if (signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n\n if (!result) {\n throw new Error('JXL encoding failed');\n }\n\n return result;\n}\n\n/**\n * Client-mode JXL decoder (exported for direct use)\n */\nexport async function jxlDecodeClient(\n data: Uint8Array,\n signal?: AbortSignal\n): Promise<ImageData> {\n if (signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n\n const module = await loadJxlDecModule();\n\n if (signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n\n const result = module.decode(data as unknown as BufferSource);\n\n if (signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n\n if (!result) {\n throw new Error('JXL decoding failed');\n }\n\n return result;\n}\n\n/**\n * Worker message handler\n * Register the handler regardless of environment (for both worker context and tests)\n */\nif (typeof self !== 'undefined') {\n self.onmessage = async (event: MessageEvent) => {\n const data = event.data;\n\n // Handle worker ping for initialization\n if (data?.type === 'worker:ping') {\n await loadJxlEncModule();\n self.postMessage({ type: 'worker:ready' });\n return;\n }\n\n if (data?.type === 'jxl:encode') {\n const request = data as WorkerRequest<{\n image: ImageInput;\n options?: Partial<EncodeOptions>;\n }>;\n\n const response: WorkerResponse<Uint8Array> = {\n id: request.id,\n ok: false,\n };\n\n try {\n const { image, options } = request.payload;\n const result = await jxlEncodeClient(image, options);\n response.ok = true;\n response.data = result;\n self.postMessage(response, {\n transfer: [result.buffer as ArrayBuffer],\n });\n } catch (error) {\n response.error = error instanceof Error ? error.message : String(error);\n self.postMessage(response);\n }\n } else if (data?.type === 'jxl:decode') {\n const request = data as WorkerRequest<{ data: Uint8Array }>;\n\n const response: WorkerResponse<ImageData> = {\n id: request.id,\n ok: false,\n };\n\n try {\n const result = await jxlDecodeClient(request.payload.data);\n response.ok = true;\n response.data = result;\n self.postMessage(response, {\n transfer: [result.data.buffer as ArrayBuffer],\n });\n } catch (error) {\n response.error = error instanceof Error ? error.message : String(error);\n self.postMessage(response);\n }\n } else {\n const request = data as WorkerRequest<unknown>;\n const response: WorkerResponse<never> = {\n id: request.id,\n ok: false,\n error: `Unknown message type: ${data?.type}`,\n };\n self.postMessage(response);\n }\n };\n}\n",
14
- "/**\n * Bridge implementation for the JXL package, handling worker and client modes.\n */\n\nimport {\n callWorker,\n createReadyWorker,\n type ImageInput,\n} from '@squoosh-kit/runtime';\nimport { validateImageInput } from '@squoosh-kit/runtime';\nimport type { JxlEncodeOptions } from './types';\n\nexport type BridgeOptions = {\n /**\n * Public URL prefix for worker and WASM files.\n * Defaults to `/squoosh-kit` in the browser.\n */\n assetPath?: string;\n};\n\ninterface JxlBridge {\n encode(\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array>;\n decode(data: Uint8Array, signal?: AbortSignal): Promise<ImageData>;\n terminate(): Promise<void>;\n}\n\nclass JxlClientBridge implements JxlBridge {\n async encode(\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array> {\n const module = await import('./jxl.worker.js');\n const jxlEncodeClient = module.jxlEncodeClient as (\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ) => Promise<Uint8Array>;\n return jxlEncodeClient(image, options, signal);\n }\n\n async decode(data: Uint8Array, signal?: AbortSignal): Promise<ImageData> {\n const module = await import('./jxl.worker.js');\n const jxlDecodeClient = module.jxlDecodeClient as (\n data: Uint8Array,\n signal?: AbortSignal\n ) => Promise<ImageData>;\n return jxlDecodeClient(data, signal);\n }\n\n async terminate(): Promise<void> {\n // Client mode has nothing to terminate\n }\n}\n\nclass JxlWorkerBridge implements JxlBridge {\n private worker: Worker | null = null;\n private workerReady: Promise<Worker> | null = null;\n private options?: BridgeOptions;\n\n constructor(options?: BridgeOptions) {\n console.log(\n '[jxl/bridge] JxlWorkerBridge constructor called with options:',\n options\n );\n this.options = options;\n }\n\n private async getWorker(): Promise<Worker> {\n if (!this.workerReady) {\n this.workerReady = this.createWorker();\n }\n return this.workerReady;\n }\n\n private async createWorker(): Promise<Worker> {\n console.log('[jxl/bridge] createWorker called. Creating ready worker...');\n this.worker = await createReadyWorker('jxl.worker.js', this.options);\n console.log(\n '[jxl/bridge] createWorker: Ready worker created successfully.'\n );\n return this.worker;\n }\n\n async encode(\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array> {\n const worker = await this.getWorker();\n validateImageInput(image);\n return callWorker(worker, 'jxl:encode', { image, options }, signal);\n }\n\n async decode(data: Uint8Array, signal?: AbortSignal): Promise<ImageData> {\n const worker = await this.getWorker();\n return callWorker(worker, 'jxl:decode', { data }, signal);\n }\n\n async terminate(): Promise<void> {\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n this.workerReady = null;\n }\n }\n}\n\nexport function createBridge(\n mode: 'worker' | 'client',\n options?: BridgeOptions\n): JxlBridge {\n console.log(`[jxl/bridge] createBridge called with mode: ${mode}`);\n if (mode === 'worker') {\n return new JxlWorkerBridge(options);\n }\n return new JxlClientBridge();\n}\n",
15
- "/**\n * @squoosh-kit/jxl public API\n */\n\nimport type { ImageInput } from '@squoosh-kit/runtime';\nimport { createBridge, type BridgeOptions } from './bridge';\nimport type { JxlEncodeOptions } from './types';\n\nexport type { ImageInput, JxlEncodeOptions };\n\n// Global bridge instance for reuse\nlet globalClientBridge: ReturnType<typeof createBridge> | null = null;\n\n/**\n * A JXL image encoder that can be reused for multiple operations.\n * Can be terminated to clean up associated resources (especially workers).\n */\nexport type JxlEncoderFactory = ((\n imageData: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n) => Promise<Uint8Array>) & {\n /**\n * Terminates the encoder and cleans up resources.\n * Important for worker mode to prevent memory leaks.\n *\n * @example\n * const encoder = createJxlEncoder('worker');\n * try {\n * const result = await encoder(imageData, options);\n * } finally {\n * await encoder.terminate();\n * }\n */\n terminate(): Promise<void>;\n};\n\n/**\n * A JXL image decoder that can be reused for multiple operations.\n * Can be terminated to clean up associated resources (especially workers).\n */\nexport type JxlDecoderFactory = ((\n data: Uint8Array,\n signal?: AbortSignal\n) => Promise<ImageData>) & {\n /**\n * Terminates the decoder and cleans up resources.\n * Important for worker mode to prevent memory leaks.\n */\n terminate(): Promise<void>;\n};\n\n/**\n * Encodes an image to JPEG XL format. Uses worker mode for UI responsiveness.\n *\n * @param imageData - The image data to encode.\n * @param options - JXL encoding options.\n * @param signal - (Optional) AbortSignal to cancel the encoding operation.\n * @returns A Promise resolving to the encoded JXL data as a Uint8Array.\n *\n * @example\n * const controller = new AbortController();\n * const result = await encode(imageData, { quality: 85 }, controller.signal);\n */\nexport async function encode(\n imageData: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n): Promise<Uint8Array> {\n if (!globalClientBridge) {\n globalClientBridge = createBridge('worker');\n }\n return globalClientBridge.encode(imageData, options, signal);\n}\n\n/**\n * Decodes a JPEG XL image. Uses worker mode for UI responsiveness.\n *\n * @param data - The JXL-encoded data to decode.\n * @param signal - (Optional) AbortSignal to cancel the decoding operation.\n * @returns A Promise resolving to an ImageData-like object.\n *\n * @example\n * const imageData = await decode(jxlBuffer);\n */\nexport async function decode(\n data: Uint8Array,\n signal?: AbortSignal\n): Promise<ImageData> {\n if (!globalClientBridge) {\n globalClientBridge = createBridge('worker');\n }\n return globalClientBridge.decode(data, signal);\n}\n\n/**\n * Creates a reusable JXL encoder function for a specific execution mode.\n *\n * @param mode - The execution mode, either 'worker' or 'client'.\n * @param options - Optional bridge options.\n * @returns A function that encodes an image to JXL format with optional AbortSignal.\n */\nexport function createJxlEncoder(\n mode: 'worker' | 'client' = 'worker',\n options?: BridgeOptions\n): JxlEncoderFactory {\n const bridge = createBridge(mode, options);\n\n return Object.assign(\n (\n imageData: ImageInput,\n encodeOptions?: JxlEncodeOptions,\n signal?: AbortSignal\n ) => {\n return bridge.encode(imageData, encodeOptions, signal);\n },\n {\n terminate: async () => {\n await bridge.terminate();\n },\n }\n );\n}\n\n/**\n * Creates a reusable JXL decoder function for a specific execution mode.\n *\n * @param mode - The execution mode, either 'worker' or 'client'.\n * @param options - Optional bridge options.\n * @returns A function that decodes JXL data with optional AbortSignal.\n */\nexport function createJxlDecoder(\n mode: 'worker' | 'client' = 'worker',\n options?: BridgeOptions\n): JxlDecoderFactory {\n const bridge = createBridge(mode, options);\n\n return Object.assign(\n (data: Uint8Array, signal?: AbortSignal) => {\n return bridge.decode(data, signal);\n },\n {\n terminate: async () => {\n await bridge.terminate();\n },\n }\n );\n}\n"
15
+ "/**\n * Bridge implementation for the JXL package, handling worker and client modes.\n */\n\nimport {\n callWorker,\n createReadyWorker,\n type ImageInput,\n resolveBridgeMode,\n type BridgeMode,\n} from '@squoosh-kit/runtime';\nimport { validateImageInput } from '@squoosh-kit/runtime';\nimport type { JxlEncodeOptions } from './types';\n\nexport type BridgeOptions = {\n /**\n * Public URL prefix for worker and WASM files.\n * Defaults to `/squoosh-kit` in the browser.\n */\n assetPath?: string;\n};\n\ninterface JxlBridge {\n encode(\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array>;\n decode(data: Uint8Array, signal?: AbortSignal): Promise<ImageData>;\n terminate(): Promise<void>;\n}\n\nclass JxlClientBridge implements JxlBridge {\n async encode(\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array> {\n const module = await import('./jxl.worker.js');\n const jxlEncodeClient = module.jxlEncodeClient as (\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ) => Promise<Uint8Array>;\n return jxlEncodeClient(image, options, signal);\n }\n\n async decode(data: Uint8Array, signal?: AbortSignal): Promise<ImageData> {\n const module = await import('./jxl.worker.js');\n const jxlDecodeClient = module.jxlDecodeClient as (\n data: Uint8Array,\n signal?: AbortSignal\n ) => Promise<ImageData>;\n return jxlDecodeClient(data, signal);\n }\n\n async terminate(): Promise<void> {\n // Client mode has nothing to terminate\n }\n}\n\nclass JxlWorkerBridge implements JxlBridge {\n private worker: Worker | null = null;\n private workerReady: Promise<Worker> | null = null;\n private options?: BridgeOptions;\n\n constructor(options?: BridgeOptions) {\n console.log(\n '[jxl/bridge] JxlWorkerBridge constructor called with options:',\n options\n );\n this.options = options;\n }\n\n private async getWorker(): Promise<Worker> {\n if (!this.workerReady) {\n this.workerReady = this.createWorker();\n }\n return this.workerReady;\n }\n\n private async createWorker(): Promise<Worker> {\n console.log('[jxl/bridge] createWorker called. Creating ready worker...');\n this.worker = await createReadyWorker('jxl.worker.js', this.options);\n console.log(\n '[jxl/bridge] createWorker: Ready worker created successfully.'\n );\n return this.worker;\n }\n\n async encode(\n image: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array> {\n const worker = await this.getWorker();\n validateImageInput(image);\n return callWorker(worker, 'jxl:encode', { image, options }, signal);\n }\n\n async decode(data: Uint8Array, signal?: AbortSignal): Promise<ImageData> {\n const worker = await this.getWorker();\n return callWorker(worker, 'jxl:decode', { data }, signal);\n }\n\n async terminate(): Promise<void> {\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n this.workerReady = null;\n }\n }\n}\n\nexport function createBridge(\n mode: BridgeMode = 'auto',\n options?: BridgeOptions\n): JxlBridge {\n const resolvedMode = resolveBridgeMode(mode);\n console.log(`[jxl/bridge] createBridge called with mode: ${resolvedMode}`);\n if (resolvedMode === 'worker') {\n return new JxlWorkerBridge(options);\n }\n return new JxlClientBridge();\n}\n",
16
+ "/**\n * @squoosh-kit/jxl public API\n */\n\nimport type { BridgeMode, ImageInput } from '@squoosh-kit/runtime';\nimport { createBridge, type BridgeOptions } from './bridge';\nimport type { JxlEncodeOptions } from './types';\n\nexport type { ImageInput, JxlEncodeOptions };\n\n// Global bridge instance for reuse\nlet globalClientBridge: ReturnType<typeof createBridge> | null = null;\n\n/**\n * A JXL image encoder that can be reused for multiple operations.\n * Can be terminated to clean up associated resources (especially workers).\n */\nexport type JxlEncoderFactory = ((\n imageData: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n) => Promise<Uint8Array>) & {\n /**\n * Terminates the encoder and cleans up resources.\n * Important for worker mode to prevent memory leaks.\n *\n * @example\n * const encoder = createJxlEncoder('worker');\n * try {\n * const result = await encoder(imageData, options);\n * } finally {\n * await encoder.terminate();\n * }\n */\n terminate(): Promise<void>;\n};\n\n/**\n * A JXL image decoder that can be reused for multiple operations.\n * Can be terminated to clean up associated resources (especially workers).\n */\nexport type JxlDecoderFactory = ((\n data: Uint8Array,\n signal?: AbortSignal\n) => Promise<ImageData>) & {\n /**\n * Terminates the decoder and cleans up resources.\n * Important for worker mode to prevent memory leaks.\n */\n terminate(): Promise<void>;\n};\n\n/**\n * Encodes an image to JPEG XL format. Uses worker mode for UI responsiveness.\n *\n * @param imageData - The image data to encode.\n * @param options - JXL encoding options.\n * @param signal - (Optional) AbortSignal to cancel the encoding operation.\n * @returns A Promise resolving to the encoded JXL data as a Uint8Array.\n *\n * @example\n * const controller = new AbortController();\n * const result = await encode(imageData, { quality: 85 }, controller.signal);\n */\nexport async function encode(\n imageData: ImageInput,\n options?: JxlEncodeOptions,\n signal?: AbortSignal\n): Promise<Uint8Array> {\n if (!globalClientBridge) {\n globalClientBridge = createBridge('auto');\n }\n return globalClientBridge.encode(imageData, options, signal);\n}\n\n/**\n * Decodes a JPEG XL image. Uses worker mode for UI responsiveness.\n *\n * @param data - The JXL-encoded data to decode.\n * @param signal - (Optional) AbortSignal to cancel the decoding operation.\n * @returns A Promise resolving to an ImageData-like object.\n *\n * @example\n * const imageData = await decode(jxlBuffer);\n */\nexport async function decode(\n data: Uint8Array,\n signal?: AbortSignal\n): Promise<ImageData> {\n if (!globalClientBridge) {\n globalClientBridge = createBridge('auto');\n }\n return globalClientBridge.decode(data, signal);\n}\n\n/**\n * Creates a reusable JXL encoder function for a specific execution mode.\n *\n * @param mode - The execution mode, either 'worker' or 'client'.\n * @param options - Optional bridge options.\n * @returns A function that encodes an image to JXL format with optional AbortSignal.\n */\nexport function createJxlEncoder(\n mode: BridgeMode = 'auto',\n options?: BridgeOptions\n): JxlEncoderFactory {\n const bridge = createBridge(mode, options);\n\n return Object.assign(\n (\n imageData: ImageInput,\n encodeOptions?: JxlEncodeOptions,\n signal?: AbortSignal\n ) => {\n return bridge.encode(imageData, encodeOptions, signal);\n },\n {\n terminate: async () => {\n await bridge.terminate();\n },\n }\n );\n}\n\n/**\n * Creates a reusable JXL decoder function for a specific execution mode.\n *\n * @param mode - The execution mode, either 'worker' or 'client'.\n * @param options - Optional bridge options.\n * @returns A function that decodes JXL data with optional AbortSignal.\n */\nexport function createJxlDecoder(\n mode: BridgeMode = 'auto',\n options?: BridgeOptions\n): JxlDecoderFactory {\n const bridge = createBridge(mode, options);\n\n return Object.assign(\n (data: Uint8Array, signal?: AbortSignal) => {\n return bridge.decode(data, signal);\n },\n {\n terminate: async () => {\n await bridge.terminate();\n },\n }\n );\n}\n"
16
17
  ],
17
- "mappings": "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",
18
- "debugId": "0F614136D42FD90864756E2164756E21",
18
+ "mappings": ";;;;;;;;;;;;;;;;;AAOO,SAAS,QAAQ,GAAY;AAAA,EAClC,OACE,OAAO,SAAS,eAChB,OAAQ,WACL,+BAA+B;AAAA;AAO/B,SAAS,SAAS,GAAY;AAAA,EACnC,OAAO,OAAO,WAAW,eAAe,OAAO,aAAa;AAAA;AAMvD,SAAS,KAAK,GAAY;AAAA,EAC/B,OAAO,OAAO,QAAQ;AAAA;;;ACpBjB,SAAS,iBAAiB,CAC/B,OAAmB,QACC;AAAA,EACpB,IAAI,SAAS,YAAY,SAAS,UAAU;AAAA,IAC1C,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,UAAU,KAAK,CAAC,SAAS,GAAG;AAAA,IAC9B,OAAO;AAAA,EACT;AAAA,EAEA,OAAO;AAAA;AAAA;;;ACYT,eAAsB,UAA+B,CACnD,QACA,MACA,SACA,QACA,UACoB;AAAA,EACpB,OAAO,IAAI,QAAmB,CAAC,SAAS,WAAW;AAAA,IACjD,MAAM,KAAK,EAAE;AAAA,IAGb,IAAI,QAAQ,SAAS;AAAA,MACnB,OAAO,IAAI,aAAa,WAAW,YAAY,CAAC;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,MAAM,gBAAgB,CAAC,UAAwB;AAAA,MAC7C,MAAM,WAAW,MAAM;AAAA,MACvB,IAAI,SAAS,OAAO;AAAA,QAAI;AAAA,MAExB,QAAQ;AAAA,MAER,IAAI,SAAS,MAAM,SAAS,SAAS,WAAW;AAAA,QAC9C,QAAQ,SAAS,IAAI;AAAA,MACvB,EAAO;AAAA,QACL,OAAO,IAAI,MAAM,SAAS,SAAS,sBAAsB,CAAC;AAAA;AAAA;AAAA,IAI9D,MAAM,cAAc,CAAC,UAAsB;AAAA,MACzC,QAAQ;AAAA,MACR,OAAO,IAAI,MAAM,iBAAiB,MAAM,SAAS,CAAC;AAAA;AAAA,IAGpD,MAAM,cAAc,MAAM;AAAA,MACxB,QAAQ;AAAA,MACR,OAAO,IAAI,aAAa,WAAW,YAAY,CAAC;AAAA;AAAA,IAGlD,MAAM,UAAU,MAAM;AAAA,MACpB,OAAO,oBAAoB,WAAW,aAAa;AAAA,MACnD,OAAO,oBAAoB,SAAS,WAAW;AAAA,MAC/C,QAAQ,oBAAoB,SAAS,WAAW;AAAA;AAAA,IAIlD,OAAO,iBAAiB,WAAW,aAAa;AAAA,IAChD,OAAO,iBAAiB,SAAS,WAAW;AAAA,IAC5C,QAAQ,iBAAiB,SAAS,WAAW;AAAA,IAG7C,MAAM,UAAmC,EAAE,MAAM,IAAI,QAAQ;AAAA,IAE7D,IAAI,YAAY,SAAS,SAAS,GAAG;AAAA,MACnC,OAAO,YAAY,SAAS,QAAQ;AAAA,IACtC,EAAO;AAAA,MACL,OAAO,YAAY,OAAO;AAAA;AAAA,GAE7B;AAAA;AAAA,IAtEC,YAAY;;;ACAhB,SAAS,eAAe,CAAC,WAAiC;AAAA,EACxD,MAAM,OAAO,OAAO,cAAc,WAAW,YAAY,UAAU;AAAA,EACnE,IAAI,KAAK,WAAW,SAAS,GAAG;AAAA,IAC9B,OAAO,mBACL,KAAK,WAAW,UAAU,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAC5D;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,kBAAkB,CAAC,WAAkC;AAAA,EAC5D,IAAI,OAAO,WAAW,aAAa;AAAA,IACjC,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,gBAAgB,SAAS;AAAA,EAEtC,IAAI,OAAO,QAAQ,aAAa;AAAA,IAC9B,OACE,IAAI,UAAU,CAAC,QAAQ,MAAM,IAAI,GAAG;AAAA,MAClC,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV,CAAC,EAAE,aAAa;AAAA,EAEpB;AAAA,EAEA,IAAI;AAAA,IACF,MAAM,aAAa,SAAS,sCAAsC,EAAE;AAAA,IAGpE,OAAO,WAAW,IAAI;AAAA,IACtB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIJ,SAAS,yBAAyB,CACvC,cACA,gBACc;AAAA,EACd,MAAM,cAAc,MAAM,IAAI,WAAW;AAAA,EACzC,MAAM,WAAW,eAAe,QAAQ,OAAO,EAAE;AAAA,EACjD,MAAM,UAAU,aAAa,QAAQ,MAAM,GAAG,EAAE;AAAA,EAEhD,IAAI,OAAO,YAAY,YAAY,YAAY;AAAA,IAC7C,IAAI;AAAA,MACF,MAAM,WAAW,YAAY,QAC3B,GAAG,aAAa,WAAW,aAAa,WAC1C;AAAA,MACA,IAAI,mBAAmB,QAAQ,GAAG;AAAA,QAChC,OAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,EAGV;AAAA,EAEA,MAAM,aAAa;AAAA,IACjB,IAAI,IACF,SAAS,gBAAgB,YAAY,eACrC,YAAY,GACd;AAAA,IACA,IAAI,IAAI,SAAS,eAAe,eAAe,YAAY,GAAG;AAAA,EAChE;AAAA,EAEA,WAAW,aAAa,YAAY;AAAA,IAClC,IAAI,mBAAmB,SAAS,GAAG;AAAA,MACjC,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM,IAAI,MACR,uCAAuC,qBACrC,oEACA,UAAU,aAAa,uBAC3B;AAAA;AAuBK,SAAS,iBAAiB,CAC/B,gBACA,SACQ;AAAA,EAER,MAAM,iBAAiB,eAAe,SAAS,KAAK,IAChD,iBACA,GAAG;AAAA,EAGP,MAAM,YAAoE;AAAA,IACxE,oBAAoB;AAAA,MAClB,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,kBAAkB;AAAA,MAChB,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,kBAAkB;AAAA,MAChB,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,qBAAqB;AAAA,MACnB,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,oBAAoB;AAAA,MAClB,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,wBAAwB;AAAA,MACtB,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,oBAAoB;AAAA,MAClB,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,oBAAoB;AAAA,MAClB,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EAEA,MAAM,eAAe,UAAU;AAAA,EAC/B,IAAI,CAAC,cAAc;AAAA,IACjB,MAAM,IAAI,MACR,mBAAmB,qBACjB,sBAAsB,OAAO,KAAK,SAAS,EAAE,KAAK,IAAI,GAC1D;AAAA,EACF;AAAA,EAEA,IAAI;AAAA,IAEF,IAAI,OAAO,WAAW,aAAa;AAAA,MACjC,MAAM,cAAc,aAAa,QAAQ,MAAM,GAAG,EAAE;AAAA,MACpD,MAAM,aAAa,eAAe,QAAQ,OAAO,cAAc;AAAA,MAE/D,QAAQ,IACN,kEACF;AAAA,MACA,QAAQ,IAAI,qCAAqC,aAAa;AAAA,MAC9D,QAAQ,IAAI,oCAAoC,YAAY;AAAA,MAE5D,MAAM,YACJ,SAAS,cAAc,YACnB,6BACA,QAAQ;AAAA,MAEd,IAAI,WAAW;AAAA,QACb,IAAI,sBAAsB;AAAA,QAC1B,IAAI,CAAC,oBAAoB,WAAW,GAAG,GAAG;AAAA,UACxC,sBAAsB,MAAM;AAAA,QAC9B;AAAA,QACA,IAAI,oBAAoB,SAAS,GAAG,GAAG;AAAA,UACrC,sBAAsB,oBAAoB,MAAM,GAAG,EAAE;AAAA,QACvD;AAAA,QAGA,MAAM,aAAa,GAAG,uBAAuB,eAAe;AAAA,QAC5D,MAAM,YAAY,IAAI,IAAI,YAAY,OAAO,SAAS,MAAM,EAAE;AAAA,QAE9D,QAAQ,IACN,qDAAqD,WACvD;AAAA,QACA,IAAI;AAAA,UACF,MAAM,SAAS,IAAI,OAAO,WAAW,EAAE,MAAM,SAAS,CAAC;AAAA,UACvD,QAAQ,IACN,+DAA+D,WACjE;AAAA,UACA,OAAO;AAAA,UACP,OAAO,GAAG;AAAA,UACV,QAAQ,MACN,6DAA6D,aAC7D,CACF;AAAA,UACA,MAAM,IAAI,MACR,8BAA8B,cAAc,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,KACrF,EAAE,OAAO,EAAE,CACb;AAAA;AAAA,MAEJ;AAAA,MAKA,MAAM,iBAAiB;AAAA,QAErB,SAAS,oBAAoB;AAAA,QAE7B,sCAAsC,oBAAoB;AAAA,QAE1D,YAAY,oBAAoB;AAAA,MAClC;AAAA,MAEA,IAAI,YAA0B;AAAA,MAE9B,WAAW,WAAW,gBAAgB;AAAA,QACpC,QAAQ,IAAI,YAAY,OAAO;AAAA,QAC/B,QAAQ,IAAI,oBAAoB,YAAY,GAAG;AAAA,QAC/C,IAAI;AAAA,UACF,MAAM,YAAY,IAAI,IAAI,SAAS,YAAY,GAAG;AAAA,UAClD,QAAQ,IACN,0DAA0D,UAAU,MACtE;AAAA,UACA,MAAM,SAAS,IAAI,OAAO,WAAW;AAAA,YACnC,MAAM;AAAA,UACR,CAAC;AAAA,UACD,QAAQ,IACN,yDAAyD,UAAU,MACrE;AAAA,UACA,OAAO;AAAA,UACP,OAAO,OAAO;AAAA,UACd,QAAQ,KACN,4CAA4C,YAC5C,KACF;AAAA,UACA,YAAY,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA;AAAA,MAGxE;AAAA,MAGA,IAAI,WAAW;AAAA,QACb,QAAQ,MAAM,+CAA+C,SAAS;AAAA,QACtE,MAAM;AAAA,MACR;AAAA,MACA,MAAM,IAAI,MACR,4BAA4B,kDAC9B;AAAA,IACF;AAAA,IAEA,MAAM,eAAe,0BACnB,cACA,cACF;AAAA,IACA,OAAO,IAAI,OAAO,cAAc,EAAE,MAAM,SAAS,CAAC;AAAA,IAClD,OAAO,OAAO;AAAA,IACd,MAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IAC1E,MAAM,IAAI,MACR,gCAAgC,mBAAmB,mBACjD,kFACA,0FACF,EAAE,OAAO,MAAM,CACjB;AAAA;AAAA;AAeG,SAAS,iBAAiB,CAC/B,gBACA,SACA,YAAoB,KACH;AAAA,EACjB,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,IACtC,MAAM,UAAU,WAAW,MAAM;AAAA,MAC/B,OACE,IAAI,MACF,uCAAuC,6BAA6B,gBACtE,CACF;AAAA,OACC,SAAS;AAAA,IAEZ,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,SAAS,kBAAkB,gBAAgB,OAAO;AAAA,MAClD,OAAO,OAAO;AAAA,MACd,aAAa,OAAO;AAAA,MACpB,OAAO,KAAK;AAAA,MACZ;AAAA;AAAA,IAGF,MAAM,gBAAgB,CAAC,UAAwB;AAAA,MAC7C,IAAI,MAAM,MAAM,SAAS,gBAAgB;AAAA,QACvC,aAAa,OAAO;AAAA,QACpB,OAAO,oBAAoB,WAAW,aAAa;AAAA,QACnD,OAAO,oBAAoB,SAAS,WAAW;AAAA,QAC/C,OAAO,oBAAoB,gBAAgB,kBAAkB;AAAA,QAC7D,QAAQ,MAAM;AAAA,MAChB;AAAA;AAAA,IAGF,MAAM,cAAc,CAAC,UAAsB;AAAA,MACzC,aAAa,OAAO;AAAA,MACpB,OAAO,oBAAoB,WAAW,aAAa;AAAA,MACnD,OAAO,oBAAoB,SAAS,WAAW;AAAA,MAC/C,OAAO,oBAAoB,gBAAgB,kBAAkB;AAAA,MAC7D,OACE,IAAI,MACF,2BAA2B,OAAO,WAAW,iCAAiC,gBAChF,CACF;AAAA;AAAA,IAGF,MAAM,qBAAqB,MAAM;AAAA,MAC/B,aAAa,OAAO;AAAA,MACpB,OAAO,oBAAoB,WAAW,aAAa;AAAA,MACnD,OAAO,oBAAoB,SAAS,WAAW;AAAA,MAC/C,OAAO,oBAAoB,gBAAgB,kBAAkB;AAAA,MAC7D,OACE,IAAI,MACF,4DAA4D,gBAC9D,CACF;AAAA;AAAA,IAGF,OAAO,iBAAiB,WAAW,aAAa;AAAA,IAChD,OAAO,iBAAiB,SAAS,WAAW;AAAA,IAC5C,OAAO,iBAAiB,gBAAgB,kBAAkB;AAAA,IAC1D,OAAO,YAAY,EAAE,MAAM,cAAc,CAAC;AAAA,GAC3C;AAAA;AAAA,IA9WU,6BAA6B;AAAA;;;ACF1C,eAAsB,cAAc,CAClC,cACA,iBACsB;AAAA,EAKtB,MAAM,UAAU,kBACZ,OAAO,oBAAoB,WACzB,IAAI,IAAI,KAAK,eAAe,IAC5B,IAAI,IAAI,KAAK,gBAAgB,IAAI,IACnC,IAAI,IAAI,KAAK,YAAY,GAAG;AAAA,EAChC,MAAM,UAAU,IAAI,IAAI,cAAc,OAAO;AAAA,EAE7C,QAAQ,IAAI,iDAAiD,cAAc;AAAA,EAC3E,QAAQ,IAAI,4CAA4C,QAAQ,MAAM;AAAA,EACtE,QAAQ,IAAI,sCAAsC,QAAQ,MAAM;AAAA,EAEhE,IAAI;AAAA,IACF,MAAM,WAAW,MAAM,MAAM,QAAQ,IAAI;AAAA,IAEzC,QAAQ,IACN,0CAA0C,QAAQ,SAAS,SAAS,QACtE;AAAA,IAEA,IAAI,CAAC,SAAS,IAAI;AAAA,MAChB,MAAM,eAAe,MAAM,SAAS,KAAK;AAAA,MACzC,QAAQ,MACN,uDACA,aAAa,UAAU,GAAG,GAAG,CAC/B;AAAA,MACA,MAAM,IAAI,MACR,kCAAkC,QAAQ,SAAS,SAAS,UAAU,SAAS,YACjF;AAAA,IACF;AAAA,IAEA,MAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AAAA,IACvD,QAAQ,IAAI,uCAAuC,aAAa;AAAA,IAChE,IAAI,CAAC,eAAe,CAAC,YAAY,SAAS,kBAAkB,GAAG;AAAA,MAC7D,QAAQ,KACN,wCAAwC,QAAQ,0CAA0C,6CAC5F;AAAA,IACF;AAAA,IAEA,OAAO,MAAM,SAAS,YAAY;AAAA,IAClC,OAAO,OAAO;AAAA,IACd,QAAQ,MACN,oDAAoD,QAAQ,gBAC5D,KACF;AAAA,IACA,MAAM;AAAA;AAAA;;;ACtCH,SAAS,kBAAkB,CAChC,OAC6B;AAAA,EAC7B,IAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AAAA,IACvC,MAAM,IAAI,UAAU,yBAAyB;AAAA,EAC/C;AAAA,EAEA,MAAM,WAAW;AAAA,EAEjB,IAAI,EAAE,UAAU,WAAW;AAAA,IACzB,MAAM,IAAI,UAAU,wBAAwB;AAAA,EAC9C;AAAA,EAEA,QAAQ,SAAS;AAAA,EACjB,IAAI,EAAE,gBAAgB,cAAc,gBAAgB,oBAAoB;AAAA,IACtE,MAAM,IAAI,UAAU,oDAAoD;AAAA,EAC1E;AAAA,EAEA,IAAI,EAAE,WAAW,aAAa,EAAE,YAAY,WAAW;AAAA,IACrD,MAAM,IAAI,UAAU,2CAA2C;AAAA,EACjE;AAAA,EAEA,QAAQ,OAAO,WAAW;AAAA,EAE1B,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,KAAK,KAAK,SAAS,GAAG;AAAA,IACvE,MAAM,IAAI,WACR,+CAA+C,OACjD;AAAA,EACF;AAAA,EAEA,IAAI,OAAO,WAAW,YAAY,CAAC,OAAO,UAAU,MAAM,KAAK,UAAU,GAAG;AAAA,IAC1E,MAAM,IAAI,WACR,gDAAgD,QAClD;AAAA,EACF;AAAA,EAEA,MAAM,eAAe,QAAQ,SAAS;AAAA,EACtC,IAAI,KAAK,SAAS,cAAc;AAAA,IAC9B,MAAM,IAAI,WACR,yBAAyB,KAAK,mCAAmC,0BAA0B,SAAS,mBACtG;AAAA,EACF;AAAA;;;;;AC1DK,SAAS,iBAAiB,GAAS;AAAA,EACxC,IAAI,OAAO,cAAc,aAAa;AAAA,IAElC,WAOA,YAAY,MAAM;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAmC;AAAA,MACnC,WAAW,CAAC,MAAyB,OAAe,QAAgB;AAAA,QAClE,KAAK,OAAO;AAAA,QACZ,KAAK,QAAQ;AAAA,QACb,KAAK,SAAS;AAAA;AAAA,IAElB;AAAA,EACF;AAAA;;;;EClBF;AAAA,EAIA;AAAA,EAGA;AAAA;;;ACdO,SAAS,kBAAkB,CAChC,SACwD;AAAA,EACxD,IAAI,YAAY,WAAW;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,IAAI,OAAO,YAAY,YAAY,YAAY,MAAM;AAAA,IACnD,MAAM,IAAI,UAAU,wCAAwC;AAAA,EAC9D;AAAA,EAEA,MAAM,OAAO;AAAA,EAEb,IAAI,aAAa,QAAQ,KAAK,YAAY,WAAW;AAAA,IACnD,MAAM,UAAU,KAAK;AAAA,IAErB,IAAI,OAAO,MAAM,OAAO,GAAG;AAAA,MACzB,MAAM,IAAI,WACR,4DACF;AAAA,IACF;AAAA,IAEA,IAAI,OAAO,YAAY,UAAU;AAAA,MAC/B,MAAM,IAAI,UAAU,0BAA0B;AAAA,IAChD;AAAA,IAEA,IAAI,CAAC,OAAO,SAAS,OAAO,KAAK,CAAC,OAAO,UAAU,OAAO,GAAG;AAAA,MAC3D,MAAM,IAAI,WACR,mEACF;AAAA,IACF;AAAA,IAEA,IAAI,UAAU,KAAK,UAAU,KAAK;AAAA,MAChC,MAAM,IAAI,WACR,2CAA2C,SAC7C;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,YAAY,QAAQ,KAAK,WAAW,WAAW;AAAA,IACjD,MAAM,SAAS,KAAK;AAAA,IAEpB,IAAI,OAAO,WAAW,UAAU;AAAA,MAC9B,MAAM,IAAI,UAAU,yBAAyB;AAAA,IAC/C;AAAA,IAEA,IAAI,CAAC,OAAO,SAAS,MAAM,KAAK,CAAC,OAAO,UAAU,MAAM,GAAG;AAAA,MACzD,MAAM,IAAI,WAAW,4CAA4C;AAAA,IACnE;AAAA,IAEA,IAAI,SAAS,KAAK,SAAS,GAAG;AAAA,MAC5B,MAAM,IAAI,WAAW,wCAAwC,QAAQ;AAAA,IACvE;AAAA,EACF;AAAA,EAEA,IAAI,SAAS,QAAQ,KAAK,QAAQ,WAAW;AAAA,IAC3C,MAAM,MAAM,KAAK;AAAA,IAEjB,IAAI,OAAO,QAAQ,UAAU;AAAA,MAC3B,MAAM,IAAI,UAAU,sBAAsB;AAAA,IAC5C;AAAA,IAEA,IAAI,CAAC,OAAO,SAAS,GAAG,KAAK,CAAC,OAAO,UAAU,GAAG,GAAG;AAAA,MACnD,MAAM,IAAI,WAAW,6CAA6C;AAAA,IACpE;AAAA,IAEA,IAAI,MAAM,MAAM,MAAM,GAAG;AAAA,MACvB,MAAM,IAAI,WAAW,yCAAyC,KAAK;AAAA,IACrE;AAAA,EACF;AAAA,EAEA,IAAI,uBAAuB,QAAQ,KAAK,sBAAsB,WAAW;AAAA,IACvE,MAAM,oBAAoB,KAAK;AAAA,IAE/B,IAAI,OAAO,sBAAsB,UAAU;AAAA,MACzC,MAAM,IAAI,UAAU,oCAAoC;AAAA,IAC1D;AAAA,IAEA,IACE,CAAC,OAAO,SAAS,iBAAiB,KAClC,CAAC,OAAO,UAAU,iBAAiB,GACnC;AAAA,MACA,MAAM,IAAI,WACR,uDACF;AAAA,IACF;AAAA,IAEA,IAAI,oBAAoB,KAAK,oBAAoB,GAAG;AAAA,MAClD,MAAM,IAAI,WACR,mDAAmD,mBACrD;AAAA,IACF;AAAA,EACF;AAAA;;;;;;;;ACpEF,SAAS,WAAW,GAAY;AAAA,EAC9B,OACE,OAAO,YAAY,gBAClB,QAAQ,UAAU,QAAQ,aACzB,QAAQ,UAAU,SAAS;AAAA;AAIjC,eAAe,gBAAgB,GAAuB;AAAA,EACpD,IAAI;AAAA,IAAiB,OAAO;AAAA,EAC5B,IAAI;AAAA,IAAsB,OAAO;AAAA,EACjC,wBAAwB,YAAY;AAAA,IAElC,MAAM,aAAa,OAAO,SAAS,cAAc,OAAO;AAAA,IACxD,IAAI,CAAC,WAAW,UAAU;AAAA,MACvB,WAA+C,WAAW;AAAA,QACzD,MAAM,YAAY;AAAA,MACpB;AAAA,IACF;AAAA,IACA,IAAI,OAAO,SAAS,eAAe,OAAO,eAAe,aAAa;AAAA,MACnE,WAA4C,OAAO;AAAA,IACtD;AAAA,IAEA,MAAM,UAAU,YAAY;AAAA,IAE5B,MAAM,aAAa,UACf,4BACA;AAAA,IAEJ,IAAI;AAAA,MACF,QAAQ,IAAI,gDAAgD,OAAO;AAAA,MACnE,QAAQ,IACN,+DAA+D,YACjE;AAAA,MAEA,IAAI;AAAA,MACJ,MAAM,WAAW,YAAY,IAAI,SAAS,OAAO;AAAA,MACjD,MAAM,aAAa,WACf,CAAC,aAAa,YAAY,YAAY,UAAU,IAChD,CAAC,YAAY,YAAY,aAAa,UAAU;AAAA,MAEpD,IAAI,YAA0B;AAAA,MAC9B,WAAW,cAAc,YAAY;AAAA,QACnC,IAAI;AAAA,UACF,iBAAiB,MAAgC,oBAAa;AAAA,UAC9D,QAAQ,IACN,yDAAyD,YAC3D;AAAA,UACA;AAAA,UACA,OAAO,OAAO;AAAA,UACd,YAAY,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,UACpE,QAAQ,KACN,4CAA4C,iCAC9C;AAAA;AAAA,MAEJ;AAAA,MAEA,IAAI,CAAC,eAAe;AAAA,QAClB,MACE,aACA,IAAI,MAAM,iDAAiD;AAAA,MAE/D;AAAA,MAEA,QAAQ,IAAI,0DAA0D;AAAA,MAEtE,MAAM,WAAW,UAAU,sBAAsB;AAAA,MACjD,MAAM,iBAAiB,WACnB,CAAC,mBAAmB,YAAY,kBAAkB,UAAU,IAC5D,CAAC,kBAAkB,YAAY,mBAAmB,UAAU;AAAA,MAEhE,QAAQ,IACN,uEAAuE,eAAe,KAAK,IAAI,GACjG;AAAA,MAEA,MAAM,uBAAuB,OAC3B,SAIA,cACuB;AAAA,QACvB,MAAM,gBAAgB,IAAI,IAAI,KAAK,YAAY,GAAG;AAAA,QAClD,IAAI,aAA0B;AAAA,QAC9B,WAAW,YAAY,WAAW;AAAA,UAChC,IAAI;AAAA,YACF,QAAQ,IACN,kDAAkD,UACpD;AAAA,YACA,MAAM,aAAa,MAAM,eAAe,UAAU,aAAa;AAAA,YAC/D,QAAQ,IACN,8DAA8D,mBAAmB,WAAW,mBAC9F;AAAA,YAEA,MAAM,cAAa,OAAO,SAAS,cAAc,OAAO;AAAA,YACxD,IAAI,CAAC,YAAW,UAAU;AAAA,cACvB,YAA+C,WAAW;AAAA,gBACzD,MAAM,YAAY;AAAA,cACpB;AAAA,YACF;AAAA,YACA,IACE,OAAO,SAAS,eAChB,OAAO,eAAe,aACtB;AAAA,cACC,WAA4C,OAAO;AAAA,YACtD;AAAA,YAEA,OAAO,MAAM,QAAQ;AAAA,cACnB,cAAc;AAAA,cACd;AAAA,YACF,CAAC;AAAA,YACD,OAAO,KAAK;AAAA,YACZ,aAAY,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC;AAAA,YAC9D,QAAQ,KACN,iDAAiD,+BACnD;AAAA;AAAA,QAEJ;AAAA,QACA,MACE,cACA,IAAI,MACF,oEACF;AAAA;AAAA,MAIJ,kBAAkB,MAAM,qBACtB,eACA,cACF;AAAA,MACA,QAAQ,IAAI,2DAA2D;AAAA,MACvE,OAAO;AAAA,MACP,OAAO,KAAK;AAAA,MACZ,QAAQ,MACN,uEAAuE,cACvE,GACF;AAAA,MACA,MAAM;AAAA;AAAA,KAEP,EAAE,MAAM,CAAC,QAAiB;AAAA,IAC3B,uBAAuB;AAAA,IACvB,MAAM;AAAA,GACP;AAAA,EACD,OAAO;AAAA;AAGT,eAAe,gBAAgB,GAA0B;AAAA,EACvD,IAAI;AAAA,IAAiB,OAAO;AAAA,EAC5B,IAAI;AAAA,IAAsB,OAAO;AAAA,EACjC,wBAAwB,YAAY;AAAA,IAElC,MAAM,aAAa,OAAO,SAAS,cAAc,OAAO;AAAA,IACxD,IAAI,CAAC,WAAW,UAAU;AAAA,MACvB,WAA+C,WAAW;AAAA,QACzD,MAAM,YAAY;AAAA,MACpB;AAAA,IACF;AAAA,IACA,IAAI,OAAO,SAAS,eAAe,OAAO,eAAe,aAAa;AAAA,MACnE,WAA4C,OAAO;AAAA,IACtD;AAAA,IAGA,kBAAkB;AAAA,IAElB,MAAM,UAAU,YAAY;AAAA,IAE5B,MAAM,aAAa,UACf,4BACA;AAAA,IAEJ,IAAI;AAAA,MACF,QAAQ,IAAI,gDAAgD,OAAO;AAAA,MACnE,QAAQ,IACN,+DAA+D,YACjE;AAAA,MAEA,IAAI;AAAA,MACJ,MAAM,WAAW,YAAY,IAAI,SAAS,OAAO;AAAA,MACjD,MAAM,aAAa,WACf,CAAC,aAAa,YAAY,YAAY,UAAU,IAChD,CAAC,YAAY,YAAY,aAAa,UAAU;AAAA,MAEpD,IAAI,YAA0B;AAAA,MAC9B,WAAW,cAAc,YAAY;AAAA,QACnC,IAAI;AAAA,UACF,iBAAiB,MAAgC,oBAAa;AAAA,UAC9D,QAAQ,IACN,yDAAyD,YAC3D;AAAA,UACA;AAAA,UACA,OAAO,OAAO;AAAA,UACd,YAAY,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,UACpE,QAAQ,KACN,4CAA4C,iCAC9C;AAAA;AAAA,MAEJ;AAAA,MAEA,IAAI,CAAC,eAAe;AAAA,QAClB,MACE,aACA,IAAI,MAAM,iDAAiD;AAAA,MAE/D;AAAA,MAEA,QAAQ,IAAI,0DAA0D;AAAA,MAEtE,MAAM,WAAW,UAAU,sBAAsB;AAAA,MACjD,MAAM,iBAAiB,WACnB,CAAC,mBAAmB,YAAY,kBAAkB,UAAU,IAC5D,CAAC,kBAAkB,YAAY,mBAAmB,UAAU;AAAA,MAEhE,QAAQ,IACN,uEAAuE,eAAe,KAAK,IAAI,GACjG;AAAA,MAEA,MAAM,uBAAuB,OAC3B,SAIA,cAC0B;AAAA,QAC1B,MAAM,gBAAgB,IAAI,IAAI,KAAK,YAAY,GAAG;AAAA,QAClD,IAAI,aAA0B;AAAA,QAC9B,WAAW,YAAY,WAAW;AAAA,UAChC,IAAI;AAAA,YACF,QAAQ,IACN,kDAAkD,UACpD;AAAA,YACA,MAAM,aAAa,MAAM,eAAe,UAAU,aAAa;AAAA,YAC/D,QAAQ,IACN,8DAA8D,mBAAmB,WAAW,mBAC9F;AAAA,YAEA,MAAM,cAAa,OAAO,SAAS,cAAc,OAAO;AAAA,YACxD,IAAI,CAAC,YAAW,UAAU;AAAA,cACvB,YAA+C,WAAW;AAAA,gBACzD,MAAM,YAAY;AAAA,cACpB;AAAA,YACF;AAAA,YACA,IACE,OAAO,SAAS,eAChB,OAAO,eAAe,aACtB;AAAA,cACC,WAA4C,OAAO;AAAA,YACtD;AAAA,YAEA,OAAO,MAAM,QAAQ;AAAA,cACnB,cAAc;AAAA,cACd;AAAA,YACF,CAAC;AAAA,YACD,OAAO,KAAK;AAAA,YACZ,aAAY,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC;AAAA,YAC9D,QAAQ,KACN,iDAAiD,+BACnD;AAAA;AAAA,QAEJ;AAAA,QACA,MACE,cACA,IAAI,MACF,oEACF;AAAA;AAAA,MAIJ,kBAAkB,MAAM,qBACtB,eACA,cACF;AAAA,MACA,QAAQ,IAAI,2DAA2D;AAAA,MACvE,OAAO;AAAA,MACP,OAAO,KAAK;AAAA,MACZ,QAAQ,MACN,uEAAuE,cACvE,GACF;AAAA,MACA,MAAM;AAAA;AAAA,KAEP,EAAE,MAAM,CAAC,QAAiB;AAAA,IAC3B,uBAAuB;AAAA,IACvB,MAAM;AAAA,GACP;AAAA,EACD,OAAO;AAAA;AAMT,SAAS,mBAAmB,CAAC,SAAiD;AAAA,EAC5E,OAAO;AAAA,IACL,QAAQ,SAAS,UAAU;AAAA,IAC3B,SAAS,SAAS,WAAW;AAAA,IAC7B,aAAa,SAAS,eAAe;AAAA,IACrC,KAAK,SAAS,OAAO;AAAA,IACrB,cAAc,SAAS,gBAAgB;AAAA,IACvC,mBAAmB,SAAS,qBAAqB;AAAA,IACjD,gBAAgB,SAAS,kBAAkB;AAAA,IAC3C,cAAc,SAAS,gBAAgB;AAAA,EACzC;AAAA;AAMF,eAAsB,eAAe,CACnC,OACA,SACA,QACqB;AAAA,EACrB,mBAAmB,KAAK;AAAA,EACxB,mBAAmB,OAAO;AAAA,EAE1B,IAAI,QAAQ,SAAS;AAAA,IACnB,MAAM,IAAI,aAAa,WAAW,YAAY;AAAA,EAChD;AAAA,EAEA,MAAM,QAAQ,MAAM;AAAA,EACpB,MAAM,SAAS,MAAM;AAAA,EACrB,MAAM,OAAO,MAAM;AAAA,EAEnB,IAAI,EAAE,gBAAgB,eAAe,EAAE,gBAAgB,oBAAoB;AAAA,IACzE,MAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AAAA,EAEA,MAAM,SAAS,MAAM,iBAAiB;AAAA,EAEtC,IAAI,QAAQ,SAAS;AAAA,IACnB,MAAM,IAAI,aAAa,WAAW,YAAY;AAAA,EAChD;AAAA,EAEA,MAAM,gBAAgB,oBAAoB,OAAO;AAAA,EAEjD,MAAM,YACJ,gBAAgB,oBACZ,IAAI,WAAW,KAAK,QAAuB,KAAK,YAAY,KAAK,MAAM,IACvE,IAAI,WACF,KAAK,QACL,KAAK,YACL,KAAK,MACP;AAAA,EAEN,MAAM,SAAS,OAAO,OAAO,WAAW,OAAO,QAAQ,aAAa;AAAA,EAEpE,IAAI,QAAQ,SAAS;AAAA,IACnB,MAAM,IAAI,aAAa,WAAW,YAAY;AAAA,EAChD;AAAA,EAEA,IAAI,CAAC,QAAQ;AAAA,IACX,MAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AAAA,EAEA,OAAO;AAAA;AAMT,eAAsB,eAAe,CACnC,MACA,QACoB;AAAA,EACpB,IAAI,QAAQ,SAAS;AAAA,IACnB,MAAM,IAAI,aAAa,WAAW,YAAY;AAAA,EAChD;AAAA,EAEA,MAAM,SAAS,MAAM,iBAAiB;AAAA,EAEtC,IAAI,QAAQ,SAAS;AAAA,IACnB,MAAM,IAAI,aAAa,WAAW,YAAY;AAAA,EAChD;AAAA,EAEA,MAAM,SAAS,OAAO,OAAO,IAA+B;AAAA,EAE5D,IAAI,QAAQ,SAAS;AAAA,IACnB,MAAM,IAAI,aAAa,WAAW,YAAY;AAAA,EAChD;AAAA,EAEA,IAAI,CAAC,QAAQ;AAAA,IACX,MAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AAAA,EAEA,OAAO;AAAA;AAAA,IAvYL,kBAAoC,MACpC,kBAAuC,MACvC,uBAAkD,MAClD,uBAAqD;AAAA;AAAA,EAfzD;AAAA,EA0ZA,IAAI,OAAO,SAAS,aAAa;AAAA,IAC/B,KAAK,YAAY,OAAO,UAAwB;AAAA,MAC9C,MAAM,OAAO,MAAM;AAAA,MAGnB,IAAI,MAAM,SAAS,eAAe;AAAA,QAChC,MAAM,iBAAiB;AAAA,QACvB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAAA,QACzC;AAAA,MACF;AAAA,MAEA,IAAI,MAAM,SAAS,cAAc;AAAA,QAC/B,MAAM,UAAU;AAAA,QAKhB,MAAM,WAAuC;AAAA,UAC3C,IAAI,QAAQ;AAAA,UACZ,IAAI;AAAA,QACN;AAAA,QAEA,IAAI;AAAA,UACF,QAAQ,OAAO,YAAY,QAAQ;AAAA,UACnC,MAAM,SAAS,MAAM,gBAAgB,OAAO,OAAO;AAAA,UACnD,SAAS,KAAK;AAAA,UACd,SAAS,OAAO;AAAA,UAChB,KAAK,YAAY,UAAU;AAAA,YACzB,UAAU,CAAC,OAAO,MAAqB;AAAA,UACzC,CAAC;AAAA,UACD,OAAO,OAAO;AAAA,UACd,SAAS,QAAQ,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,UACtE,KAAK,YAAY,QAAQ;AAAA;AAAA,MAE7B,EAAO,SAAI,MAAM,SAAS,cAAc;AAAA,QACtC,MAAM,UAAU;AAAA,QAEhB,MAAM,WAAsC;AAAA,UAC1C,IAAI,QAAQ;AAAA,UACZ,IAAI;AAAA,QACN;AAAA,QAEA,IAAI;AAAA,UACF,MAAM,SAAS,MAAM,gBAAgB,QAAQ,QAAQ,IAAI;AAAA,UACzD,SAAS,KAAK;AAAA,UACd,SAAS,OAAO;AAAA,UAChB,KAAK,YAAY,UAAU;AAAA,YACzB,UAAU,CAAC,OAAO,KAAK,MAAqB;AAAA,UAC9C,CAAC;AAAA,UACD,OAAO,OAAO;AAAA,UACd,SAAS,QAAQ,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,UACtE,KAAK,YAAY,QAAQ;AAAA;AAAA,MAE7B,EAAO;AAAA,QACL,MAAM,UAAU;AAAA,QAChB,MAAM,WAAkC;AAAA,UACtC,IAAI,QAAQ;AAAA,UACZ,IAAI;AAAA,UACJ,OAAO,yBAAyB,MAAM;AAAA,QACxC;AAAA,QACA,KAAK,YAAY,QAAQ;AAAA;AAAA;AAAA,EAG/B;AAAA;;;ACzdA;AAOA;AAAA;AAqBA,MAAM,gBAAqC;AAAA,OACnC,OAAM,CACV,OACA,SACA,QACqB;AAAA,IACrB,MAAM,SAAS;AAAA,IACf,MAAM,mBAAkB,OAAO;AAAA,IAK/B,OAAO,iBAAgB,OAAO,SAAS,MAAM;AAAA;AAAA,OAGzC,OAAM,CAAC,MAAkB,QAA0C;AAAA,IACvE,MAAM,SAAS;AAAA,IACf,MAAM,mBAAkB,OAAO;AAAA,IAI/B,OAAO,iBAAgB,MAAM,MAAM;AAAA;AAAA,OAG/B,UAAS,GAAkB;AAGnC;AAAA;AAEA,MAAM,gBAAqC;AAAA,EACjC,SAAwB;AAAA,EACxB,cAAsC;AAAA,EACtC;AAAA,EAER,WAAW,CAAC,SAAyB;AAAA,IACnC,QAAQ,IACN,iEACA,OACF;AAAA,IACA,KAAK,UAAU;AAAA;AAAA,OAGH,UAAS,GAAoB;AAAA,IACzC,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,KAAK,cAAc,KAAK,aAAa;AAAA,IACvC;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,OAGA,aAAY,GAAoB;AAAA,IAC5C,QAAQ,IAAI,4DAA4D;AAAA,IACxE,KAAK,SAAS,MAAM,kBAAkB,iBAAiB,KAAK,OAAO;AAAA,IACnE,QAAQ,IACN,+DACF;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,OAGR,OAAM,CACV,OACA,SACA,QACqB;AAAA,IACrB,MAAM,SAAS,MAAM,KAAK,UAAU;AAAA,IACpC,mBAAmB,KAAK;AAAA,IACxB,OAAO,WAAW,QAAQ,cAAc,EAAE,OAAO,QAAQ,GAAG,MAAM;AAAA;AAAA,OAG9D,OAAM,CAAC,MAAkB,QAA0C;AAAA,IACvE,MAAM,SAAS,MAAM,KAAK,UAAU;AAAA,IACpC,OAAO,WAAW,QAAQ,cAAc,EAAE,KAAK,GAAG,MAAM;AAAA;AAAA,OAGpD,UAAS,GAAkB;AAAA,IAC/B,IAAI,KAAK,QAAQ;AAAA,MACf,KAAK,OAAO,UAAU;AAAA,MACtB,KAAK,SAAS;AAAA,MACd,KAAK,cAAc;AAAA,IACrB;AAAA;AAEJ;AAEO,SAAS,YAAY,CAC1B,OAAmB,QACnB,SACW;AAAA,EACX,MAAM,eAAe,kBAAkB,IAAI;AAAA,EAC3C,QAAQ,IAAI,+CAA+C,cAAc;AAAA,EACzE,IAAI,iBAAiB,UAAU;AAAA,IAC7B,OAAO,IAAI,gBAAgB,OAAO;AAAA,EACpC;AAAA,EACA,OAAO,IAAI;AAAA;;;AChHb,IAAI,qBAA6D;AAqDjE,eAAsB,MAAM,CAC1B,WACA,SACA,QACqB;AAAA,EACrB,IAAI,CAAC,oBAAoB;AAAA,IACvB,qBAAqB,aAAa,MAAM;AAAA,EAC1C;AAAA,EACA,OAAO,mBAAmB,OAAO,WAAW,SAAS,MAAM;AAAA;AAa7D,eAAsB,MAAM,CAC1B,MACA,QACoB;AAAA,EACpB,IAAI,CAAC,oBAAoB;AAAA,IACvB,qBAAqB,aAAa,MAAM;AAAA,EAC1C;AAAA,EACA,OAAO,mBAAmB,OAAO,MAAM,MAAM;AAAA;AAUxC,SAAS,gBAAgB,CAC9B,OAAmB,QACnB,SACmB;AAAA,EACnB,MAAM,SAAS,aAAa,MAAM,OAAO;AAAA,EAEzC,OAAO,OAAO,OACZ,CACE,WACA,eACA,WACG;AAAA,IACH,OAAO,OAAO,OAAO,WAAW,eAAe,MAAM;AAAA,KAEvD;AAAA,IACE,WAAW,YAAY;AAAA,MACrB,MAAM,OAAO,UAAU;AAAA;AAAA,EAE3B,CACF;AAAA;AAUK,SAAS,gBAAgB,CAC9B,OAAmB,QACnB,SACmB;AAAA,EACnB,MAAM,SAAS,aAAa,MAAM,OAAO;AAAA,EAEzC,OAAO,OAAO,OACZ,CAAC,MAAkB,WAAyB;AAAA,IAC1C,OAAO,OAAO,OAAO,MAAM,MAAM;AAAA,KAEnC;AAAA,IACE,WAAW,YAAY;AAAA,MACrB,MAAM,OAAO,UAAU;AAAA;AAAA,EAE3B,CACF;AAAA;",
19
+ "debugId": "9E9B4B55662C15EF64756E2164756E21",
19
20
  "names": []
20
21
  }