{
  "version": 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/avif.worker.ts"],
  "sourcesContent": [
    "/**\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",
    "/**\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",
    "/**\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 type CreateWorkerOptions = {\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 browser environments, uses relative paths within node_modules that Vite can resolve.\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 browser contexts, use relative paths within the installed packages\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      // If a custom asset path is provided, use it directly\n      if (options?.assetPath) {\n        // Normalize the asset path - ensure it starts with / and ends without /\n        let normalizedAssetPath = options.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 provided 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    // Fallbacks for monorepo/dev without build artifacts\n    const platformExt = isBun() ? '.bun.js' : '.node.mjs';\n    const baseName = normalizedName.replace('.js', '');\n    const pkgName = workerConfig.package.split('/')[1]; // e.g. 'avif', 'webp', 'resize'\n\n    // 1) Try TypeScript source first (Bun can transpile TS, works in dev)\n    const srcRelPath = `../../${pkgName}/src/${baseName}.ts`;\n\n    console.log('srcRelPath:', srcRelPath);\n    console.log('import.meta.url:', import.meta.url);\n    try {\n      return new Worker(new URL(srcRelPath, import.meta.url), {\n        type: 'module',\n      });\n    } catch {\n      // 2) Try dist output (if already built)\n      const distRelPath = `../../${pkgName}/dist/${baseName}.${platformExt.slice(1)}`;\n\n      console.log('distRelPath:', distRelPath);\n      console.log('import.meta.url:', import.meta.url);\n      try {\n        return new Worker(new URL(distRelPath, import.meta.url), {\n          type: 'module',\n        });\n      } catch {\n        // 3) Try import.meta.resolve as last resort\n        if (typeof import.meta.resolve === 'function') {\n          try {\n            const resolved = import.meta.resolve(\n              `${workerConfig.package}/${workerConfig.specifier}`\n            );\n            console.log('resolved:', resolved);\n            return new Worker(resolved, { type: 'module' });\n          } catch {\n            // Continue to error below\n          }\n        }\n      }\n    }\n\n    // If we get here, all fallbacks failed\n    throw new Error(\n      `Failed to create worker from ${normalizedName}. ` +\n        `Tried TypeScript source, dist output, and import.meta.resolve. ` +\n        `Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`\n    );\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",
    "/**\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",
    "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",
    "/**\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",
    "/**\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",
    "export function validateAvifOptions(\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 ('qualityAlpha' in opts && opts.qualityAlpha !== undefined) {\n    const qualityAlpha = opts.qualityAlpha;\n\n    if (typeof qualityAlpha !== 'number') {\n      throw new TypeError('qualityAlpha must be a number');\n    }\n\n    if (Number.isNaN(qualityAlpha)) {\n      throw new RangeError('qualityAlpha must be a valid number');\n    }\n\n    // qualityAlpha can be -1 (use quality) or 0-100\n    if (Number.isFinite(qualityAlpha) && qualityAlpha !== -1) {\n      if (!Number.isInteger(qualityAlpha)) {\n        throw new RangeError(\n          'qualityAlpha must be an integer in the range 0-100 or -1'\n        );\n      }\n\n      if (qualityAlpha < 0 || qualityAlpha > 100) {\n        throw new RangeError(\n          `qualityAlpha must be in the range 0-100 or -1, got ${qualityAlpha}`\n        );\n      }\n    }\n  }\n\n  if ('speed' in opts && opts.speed !== undefined) {\n    const speed = opts.speed;\n\n    if (typeof speed !== 'number') {\n      throw new TypeError('speed must be a number');\n    }\n\n    if (Number.isNaN(speed)) {\n      throw new RangeError('speed must be a valid number');\n    }\n\n    if (!Number.isFinite(speed) || !Number.isInteger(speed)) {\n      throw new RangeError('speed must be an integer in the range 0-10');\n    }\n\n    if (speed < 0 || speed > 10) {\n      throw new RangeError(`speed must be in the range 0-10, got ${speed}`);\n    }\n  }\n\n  if ('denoiseLevel' in opts && opts.denoiseLevel !== undefined) {\n    const denoiseLevel = opts.denoiseLevel;\n\n    if (typeof denoiseLevel !== 'number') {\n      throw new TypeError('denoiseLevel must be a number');\n    }\n\n    if (Number.isNaN(denoiseLevel)) {\n      throw new RangeError('denoiseLevel must be a valid number');\n    }\n\n    if (!Number.isFinite(denoiseLevel) || !Number.isInteger(denoiseLevel)) {\n      throw new RangeError('denoiseLevel must be an integer in the range 0-50');\n    }\n\n    if (denoiseLevel < 0 || denoiseLevel > 50) {\n      throw new RangeError(\n        `denoiseLevel must be in the range 0-50, got ${denoiseLevel}`\n      );\n    }\n  }\n}\n",
    "/**\n * AVIF 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  isBun,\n  isNode,\n} from '@squoosh-kit/runtime';\nimport { validateAvifOptions } from './validators';\nimport type { AVIFModule } from '../wasm/avif-enc/avif_enc';\n\n// AVIFTune is a const enum — define values manually to avoid runtime import issues\nconst AVIFTune = { auto: 0, psnr: 1, ssim: 2 } as const;\nimport type { AVIFModule as AVIFDecModule } from '../wasm/avif-dec/avif_dec';\nimport type { AvifEncodeOptions, EncodeOptions } from './types';\n\nlet cachedEncModule: AVIFModule | null = null;\nlet cachedDecModule: AVIFDecModule | null = null;\nlet loadEncModulePromise: Promise<AVIFModule> | null = null;\nlet loadDecModulePromise: Promise<AVIFDecModule> | null = null;\n\nasync function loadAvifEncModule(): Promise<AVIFModule> {\n  if (cachedEncModule) return cachedEncModule;\n  if (loadEncModulePromise) return loadEncModulePromise;\n  loadEncModulePromise = (async () => {\n    // Emscripten polyfills - required before any module loading\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 = isBun() || isNode();\n    // Node/Bun: use node-specific encoder; Browser: use standard single-threaded encoder\n    const modulePath = useNode\n      ? 'avif-enc/avif_node_enc.js'\n      : 'avif-enc/avif_enc.js';\n\n    try {\n      console.log('[AVIF Worker] Initializing encoder. Node/Bun:', useNode);\n      console.log(\n        `[AVIF 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            `[AVIF 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            `[AVIF 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 AVIF encoder module from any path')\n        );\n      }\n\n      console.log('[AVIF Worker] Encoder module factory loaded successfully.');\n\n      const wasmFileName = useNode ? 'avif_node_enc.wasm' : 'avif_enc.wasm';\n      const wasmPathsToTry = isSource\n        ? [\n            `../wasm/avif-enc/${wasmFileName}`,\n            `./wasm/avif-enc/${wasmFileName}`,\n          ]\n        : [\n            `./wasm/avif-enc/${wasmFileName}`,\n            `../wasm/avif-enc/${wasmFileName}`,\n          ];\n\n      console.log(\n        `[AVIF 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<AVIFModule>,\n        wasmPaths: string[]\n      ): Promise<AVIFModule> => {\n        const workerBaseUrl = new URL('.', import.meta.url);\n        let lastErr: Error | null = null;\n        for (const wasmPath of wasmPaths) {\n          try {\n            console.log(\n              `[AVIF Worker] Calling loadWasmBinary with path: ${wasmPath}`\n            );\n            const wasmBinary = await loadWasmBinary(wasmPath, workerBaseUrl);\n            console.log(\n              `[AVIF Worker] Successfully fetched encoder WASM binary from ${wasmPath}. Size: ${wasmBinary.byteLength} bytes.`\n            );\n\n            // Ensure self.location exists right before calling moduleFactory\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            lastErr = err instanceof Error ? err : new Error(String(err));\n            console.warn(\n              `[AVIF Worker] Failed to load encoder WASM from ${wasmPath}, trying next path...`\n            );\n          }\n        }\n        throw (\n          lastErr ||\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(\n        '[AVIF Worker] AVIF encoder module initialized successfully.'\n      );\n      return cachedEncModule;\n    } catch (err) {\n      console.error(\n        `[AVIF Worker] CRITICAL: Failed to load AVIF 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 loadAvifDecModule(): Promise<AVIFDecModule> {\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 = isBun() || isNode();\n    const modulePath = useNode\n      ? 'avif-dec/avif_node_dec.js'\n      : 'avif-dec/avif_dec.js';\n\n    try {\n      console.log('[AVIF Worker] Initializing decoder. Node/Bun:', useNode);\n      console.log(\n        `[AVIF 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            `[AVIF 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            `[AVIF 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 AVIF decoder module from any path')\n        );\n      }\n\n      console.log('[AVIF Worker] Decoder module factory loaded successfully.');\n\n      const wasmFileName = useNode ? 'avif_node_dec.wasm' : 'avif_dec.wasm';\n      const wasmPathsToTry = isSource\n        ? [\n            `../wasm/avif-dec/${wasmFileName}`,\n            `./wasm/avif-dec/${wasmFileName}`,\n          ]\n        : [\n            `./wasm/avif-dec/${wasmFileName}`,\n            `../wasm/avif-dec/${wasmFileName}`,\n          ];\n\n      console.log(\n        `[AVIF 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<AVIFDecModule>,\n        wasmPaths: string[]\n      ): Promise<AVIFDecModule> => {\n        const workerBaseUrl = new URL('.', import.meta.url);\n        let lastErr: Error | null = null;\n        for (const wasmPath of wasmPaths) {\n          try {\n            console.log(\n              `[AVIF Worker] Calling loadWasmBinary with path: ${wasmPath}`\n            );\n            const wasmBinary = await loadWasmBinary(wasmPath, workerBaseUrl);\n            console.log(\n              `[AVIF Worker] Successfully fetched decoder WASM binary from ${wasmPath}. Size: ${wasmBinary.byteLength} bytes.`\n            );\n\n            // Ensure self.location exists right before calling moduleFactory\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            lastErr = err instanceof Error ? err : new Error(String(err));\n            console.warn(\n              `[AVIF Worker] Failed to load decoder WASM from ${wasmPath}, trying next path...`\n            );\n          }\n        }\n        throw (\n          lastErr ||\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(\n        '[AVIF Worker] AVIF decoder module initialized successfully.'\n      );\n      return cachedDecModule;\n    } catch (err) {\n      console.error(\n        `[AVIF Worker] CRITICAL: Failed to load AVIF 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 * Convert partial options to full EncodeOptions with Squoosh defaults\n */\nfunction createEncodeOptions(\n  options?: AvifEncodeOptions\n): EncodeOptions & { enableSharpDownsampling?: boolean } {\n  return {\n    quality: options?.quality ?? 50,\n    qualityAlpha: options?.qualityAlpha ?? -1,\n    denoiseLevel: options?.denoiseLevel ?? 0,\n    tileRowsLog2: options?.tileRowsLog2 ?? 0,\n    tileColsLog2: options?.tileColsLog2 ?? 0,\n    speed: options?.speed ?? 6,\n    subsample: options?.subsample ?? 1,\n    chromaDeltaQ: options?.chromaDeltaQ ?? false,\n    sharpness: options?.sharpness ?? 0,\n    enableSharpYUV: options?.enableSharpYUV ?? false,\n    // enableSharpDownsampling is present in the WASM binary but not in the d.ts\n    enableSharpDownsampling: false,\n    tune: options?.tune ?? AVIFTune.auto,\n  };\n}\n\n/**\n * Client-mode AVIF encoder (exported for direct use)\n */\nexport async function avifEncodeClient(\n  image: ImageInput,\n  options?: AvifEncodeOptions,\n  signal?: AbortSignal\n): Promise<Uint8Array> {\n  // Validate inputs before starting\n  validateImageInput(image);\n  validateAvifOptions(options);\n\n  // Check abort before starting\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 loadAvifEncModule();\n\n  // Check abort after async operation\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('AVIF encoding failed');\n  }\n\n  return result;\n}\n\n/**\n * Client-mode AVIF decoder (exported for direct use)\n */\nexport async function avifDecodeClient(\n  data: BufferSource,\n  signal?: AbortSignal\n): Promise<ImageData> {\n  // Check abort before starting\n  if (signal?.aborted) {\n    throw new DOMException('Aborted', 'AbortError');\n  }\n\n  const module = await loadAvifDecModule();\n\n  // Check abort after async operation\n  if (signal?.aborted) {\n    throw new DOMException('Aborted', 'AbortError');\n  }\n\n  const result = module.decode(data);\n\n  if (signal?.aborted) {\n    throw new DOMException('Aborted', 'AbortError');\n  }\n\n  if (!result) {\n    throw new Error('AVIF 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 loadAvifEncModule();\n      self.postMessage({ type: 'worker:ready' });\n      return;\n    }\n\n    if (data?.type === 'avif:encode') {\n      const request = data as WorkerRequest<{\n        image: ImageInput;\n        options?: AvifEncodeOptions;\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 avifEncodeClient(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      return;\n    }\n\n    if (data?.type === 'avif:decode') {\n      const request = data as WorkerRequest<{\n        data: BufferSource;\n      }>;\n\n      const response: WorkerResponse<ImageData> = {\n        id: request.id,\n        ok: false,\n      };\n\n      try {\n        const result = await avifDecodeClient(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      return;\n    }\n\n    // Unknown message type\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"
  ],
  "mappings": "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",
  "debugId": "41BBBDB1A398ACE864756E2164756E21",
  "names": []
}