@squoosh-kit/resize 0.1.15 → 0.1.16

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,19 +1,4 @@
1
- var __create = Object.create;
2
- var __getProtoOf = Object.getPrototypeOf;
3
1
  var __defProp = Object.defineProperty;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __toESM = (mod, isNodeMode, target) => {
7
- target = mod != null ? __create(__getProtoOf(mod)) : {};
8
- const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
9
- for (let key of __getOwnPropNames(mod))
10
- if (!__hasOwnProp.call(to, key))
11
- __defProp(to, key, {
12
- get: () => mod[key],
13
- enumerable: true
14
- });
15
- return to;
16
- };
17
2
  var __export = (target, all) => {
18
3
  for (var name in all)
19
4
  __defProp(target, name, {
@@ -24,21 +9,11 @@ var __export = (target, all) => {
24
9
  });
25
10
  };
26
11
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
27
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
28
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
29
- }) : x)(function(x) {
30
- if (typeof require !== "undefined")
31
- return require.apply(this, arguments);
32
- throw Error('Dynamic require of "' + x + '" is not supported');
33
- });
34
12
 
35
13
  // ../runtime/src/env.ts
36
14
  function isBun() {
37
15
  return typeof Bun !== "undefined";
38
16
  }
39
- function isNode() {
40
- return typeof process !== "undefined" && process.versions != null && process.versions.node != null;
41
- }
42
17
 
43
18
  // ../runtime/src/worker-call.ts
44
19
  async function callWorker(worker, type, payload, signal, transfer) {
@@ -234,26 +209,6 @@ function createReadyWorker(workerFilename, options, timeoutMs = 1e4) {
234
209
  }
235
210
  var init_worker_helper = () => {};
236
211
 
237
- // ../runtime/src/io.ts
238
- async function readFileAsBuffer(url) {
239
- const urlStr = url.toString();
240
- if (isNode() && !isBun() && (urlStr.startsWith("file:") || !urlStr.includes("://"))) {
241
- try {
242
- const fs = await import("fs/promises");
243
- const path = url instanceof URL ? url : urlStr;
244
- const buffer = await fs.readFile(path);
245
- return buffer.buffer;
246
- } catch (e) {
247
- console.warn("[io] fs read failed, falling back to fetch", e);
248
- }
249
- }
250
- const res = await fetch(urlStr);
251
- if (!res.ok)
252
- throw new Error(`Failed to fetch ${urlStr}: ${res.statusText}`);
253
- return res.arrayBuffer();
254
- }
255
- var init_io = () => {};
256
-
257
212
  // ../runtime/src/wasm-loader.ts
258
213
  async function loadWasmBinary(relativePath, baseUrlOverride) {
259
214
  const baseUrl = baseUrlOverride ? typeof baseUrlOverride === "string" ? new URL(".", baseUrlOverride) : new URL(".", baseUrlOverride.href) : new URL(".", import.meta.url);
@@ -262,15 +217,24 @@ async function loadWasmBinary(relativePath, baseUrlOverride) {
262
217
  console.log(`[WasmLoader] Base URL (import.meta.url): ${baseUrl.href}`);
263
218
  console.log(`[WasmLoader] Constructed full URL: ${fullUrl.href}`);
264
219
  try {
265
- return await readFileAsBuffer(fullUrl);
220
+ const response = await fetch(fullUrl.href);
221
+ console.log(`[WasmLoader] Fetch response status for ${fullUrl.href}: ${response.status}`);
222
+ if (!response.ok) {
223
+ const responseText = await response.text();
224
+ console.error(`[WasmLoader] Fetch response text (first 500 chars):`, responseText.substring(0, 500));
225
+ throw new Error(`Failed to fetch WASM module at ${fullUrl.href}: ${response.status} ${response.statusText}`);
226
+ }
227
+ const contentType = response.headers.get("content-type");
228
+ console.log(`[WasmLoader] Response Content-Type: ${contentType}`);
229
+ if (!contentType || !contentType.includes("application/wasm")) {
230
+ console.warn(`[WasmLoader] Warning: WASM module at ${fullUrl.href} served with incorrect MIME type: "${contentType}". Should be "application/wasm".`);
231
+ }
232
+ return await response.arrayBuffer();
266
233
  } catch (error) {
267
234
  console.error(`[WasmLoader] CRITICAL: Fetching WASM binary from ${fullUrl.href} failed.`, error);
268
235
  throw error;
269
236
  }
270
237
  }
271
- var init_wasm_loader = __esm(() => {
272
- init_io();
273
- });
274
238
 
275
239
  // ../runtime/src/validators.ts
276
240
  function validateImageInput(image) {
@@ -303,24 +267,10 @@ function validateImageInput(image) {
303
267
  // ../runtime/src/simd-detector.ts
304
268
  var init_simd_detector = () => {};
305
269
 
306
- // ../runtime/src/worker-utils.ts
307
- function respondSuccess(id, data, transfer = []) {
308
- const response = { id, ok: true, data };
309
- const safeTransfer = transfer.filter((t) => !(t instanceof SharedArrayBuffer));
310
- self.postMessage(response, safeTransfer);
311
- }
312
- function respondError(id, error) {
313
- const msg = error instanceof Error ? error.message : String(error);
314
- const response = { id, ok: false, error: msg };
315
- self.postMessage(response);
316
- }
317
-
318
270
  // ../runtime/src/index.ts
319
271
  var init_src = __esm(() => {
320
272
  init_worker_helper();
321
- init_wasm_loader();
322
273
  init_simd_detector();
323
- init_io();
324
274
  });
325
275
 
326
276
  // src/validators.ts
@@ -547,16 +497,18 @@ var init_resize_worker = __esm(() => {
547
497
  return;
548
498
  }
549
499
  const { id, type, payload } = data;
500
+ const response = { id, ok: false };
550
501
  try {
551
502
  if (type !== "resize:run") {
552
503
  throw new Error(`Unknown message type: ${type}`);
553
504
  }
554
505
  const resultImage = await _resizeCore(payload.image, payload.options);
555
- const outputData = new Uint8ClampedArray(resultImage.data);
556
- const finalResult = { ...resultImage, data: outputData };
557
- respondSuccess(id, finalResult, [outputData.buffer]);
506
+ response.ok = true;
507
+ response.data = resultImage;
508
+ self.postMessage(response);
558
509
  } catch (error) {
559
- respondError(id, error);
510
+ response.error = error instanceof Error ? error.message : String(error);
511
+ self.postMessage(response);
560
512
  }
561
513
  };
562
514
  }
@@ -641,4 +593,4 @@ export {
641
593
  createResizer
642
594
  };
643
595
 
644
- //# debugId=3A171A31F92BBD2264756E2164756E21
596
+ //# debugId=CD27D1440895AD8564756E2164756E21
@@ -1,22 +1,20 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../runtime/src/env.ts", "../../runtime/src/worker-call.ts", "../../runtime/src/worker-helper.ts", "../../runtime/src/io.ts", "../../runtime/src/wasm-loader.ts", "../../runtime/src/validators.ts", "../../runtime/src/worker-utils.ts", "../../runtime/src/index.ts", "../src/validators.ts", "../wasm/squoosh_resize.js", "../src/resize.worker.ts", "../src/bridge.ts", "../src/index.ts"],
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/index.ts", "../src/validators.ts", "../wasm/squoosh_resize.js", "../src/resize.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
6
  "/**\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
7
  "/**\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 };\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 );\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\n // 1) Try TypeScript source first (Bun can transpile TS, works in dev)\n const srcRelPath = workerConfig.package.includes('resize')\n ? `../../resize/src/${baseName}.ts`\n : `../../webp/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 = workerConfig.package.includes('resize')\n ? `../../resize/dist/${baseName}.${platformExt.slice(1)}`\n : `../../webp/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 );\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
- "import { isNode, isBun } from './env';\n\n/**\n * Reads a file as an ArrayBuffer, handling platform differences.\n * - Node.js: Uses fs/promises for file:// URLs (prevents fetch errors)\n * - Browser/Bun: Uses standard fetch\n */\nexport async function readFileAsBuffer(\n url: URL | string\n): Promise<ArrayBuffer> {\n const urlStr = url.toString();\n\n // Node.js (non-Bun) file:// handling\n if (\n isNode() &&\n !isBun() &&\n (urlStr.startsWith('file:') || !urlStr.includes('://'))\n ) {\n try {\n // Dynamic import prevents bundling 'fs' in browser builds\n const fs = await import('fs/promises');\n const path = url instanceof URL ? url : urlStr;\n const buffer = await fs.readFile(path);\n return buffer.buffer as ArrayBuffer;\n } catch (e) {\n console.warn('[io] fs read failed, falling back to fetch', e);\n }\n }\n\n // Standard fetch (Browser, Bun, Node http)\n const res = await fetch(urlStr);\n if (!res.ok) throw new Error(`Failed to fetch ${urlStr}: ${res.statusText}`);\n return res.arrayBuffer();\n}\n",
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 */\nimport { readFileAsBuffer } from './io';\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 return await readFileAsBuffer(fullUrl);\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\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 );\n }\n}\n",
8
+ "/**\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\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 );\n }\n}\n",
10
9
  "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",
11
- "import type { WorkerResponse } from './worker-call';\n\n/**\n * Defines the subset of DedicatedWorkerGlobalScope needed for posting messages.\n * Used to cast 'self' to resolve TypeScript overload conflicts between\n * DOM types and Bun types (which define Transferable differently).\n */\ninterface WorkerScope {\n postMessage(message: unknown, transfer: Transferable[]): void;\n}\n\n/**\n * Safely sends a success response from a worker, handling Transferables automatically.\n * Filters out SharedArrayBuffers which cannot be transferred.\n */\nexport function respondSuccess<T>(\n id: number,\n data: T,\n transfer: Transferable[] = []\n) {\n const response: WorkerResponse<T> = { id, ok: true, data };\n\n // Safety check: SharedArrayBuffer cannot be in the transfer list\n const safeTransfer = transfer.filter(\n (t) => !(t instanceof SharedArrayBuffer)\n );\n\n // Cast self to WorkerScope to avoid TypeScript errors where it confuses\n // the worker global scope with the window scope (expecting targetOrigin),\n // or conflicts between DOM Transferable and Bun.Transferable types.\n (self as unknown as WorkerScope).postMessage(response, safeTransfer);\n}\n\n/**\n * Sends an error response from a worker.\n */\nexport function respondError(id: number, error: unknown) {\n const msg = error instanceof Error ? error.message : String(error);\n const response: WorkerResponse<never> = { id, ok: false, error: msg };\n self.postMessage(response);\n}\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 './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 './io.js';\nexport * from './worker-utils.js';\n",
10
+ "/**\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';\n",
13
11
  "export function validateResizeOptions(options: unknown): asserts options is {\n width?: number;\n height?: number;\n method?: 'triangular' | 'catrom' | 'mitchell' | 'lanczos3';\n premultiply?: boolean;\n linearRGB?: boolean;\n} {\n if (typeof options !== 'object' || options === null) {\n throw new TypeError('options must be an object');\n }\n\n const opts = options as Record<string, unknown>;\n\n if (opts.width !== undefined) {\n if (\n typeof opts.width !== 'number' ||\n !Number.isInteger(opts.width) ||\n opts.width <= 0\n ) {\n throw new RangeError(\n `options.width must be a positive integer, got ${opts.width}`\n );\n }\n }\n\n if (opts.height !== undefined) {\n if (\n typeof opts.height !== 'number' ||\n !Number.isInteger(opts.height) ||\n opts.height <= 0\n ) {\n throw new RangeError(\n `options.height must be a positive integer, got ${opts.height}`\n );\n }\n }\n\n if (opts.method !== undefined) {\n const validMethods = ['triangular', 'catrom', 'mitchell', 'lanczos3'];\n if (!validMethods.includes(opts.method as string)) {\n throw new TypeError(\n `options.method must be one of: ${validMethods.join(', ')}, got ${opts.method}`\n );\n }\n }\n\n if (opts.premultiply !== undefined && typeof opts.premultiply !== 'boolean') {\n throw new TypeError(\n `options.premultiply must be boolean, got ${typeof opts.premultiply}`\n );\n }\n\n if (opts.linearRGB !== undefined && typeof opts.linearRGB !== 'boolean') {\n throw new TypeError(\n `options.linearRGB must be boolean, got ${typeof opts.linearRGB}`\n );\n }\n}\n",
14
12
  "\nlet wasm;\n\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nlet cachegetInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {\n cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachegetInt32Memory0;\n}\n\nlet cachegetUint8ClampedMemory0 = null;\nfunction getUint8ClampedMemory0() {\n if (cachegetUint8ClampedMemory0 === null || cachegetUint8ClampedMemory0.buffer !== wasm.memory.buffer) {\n cachegetUint8ClampedMemory0 = new Uint8ClampedArray(wasm.memory.buffer);\n }\n return cachegetUint8ClampedMemory0;\n}\n\nfunction getClampedArrayU8FromWasm0(ptr, len) {\n return getUint8ClampedMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n* @param {Uint8Array} input_image\n* @param {number} input_width\n* @param {number} input_height\n* @param {number} output_width\n* @param {number} output_height\n* @param {number} typ_idx\n* @param {boolean} premultiply\n* @param {boolean} color_space_conversion\n* @returns {Uint8ClampedArray}\n*/\nexport function resize(input_image, input_width, input_height, output_width, output_height, typ_idx, premultiply, color_space_conversion) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n var ptr0 = passArray8ToWasm0(input_image, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.resize(retptr, ptr0, len0, input_width, input_height, output_width, output_height, typ_idx, premultiply, color_space_conversion);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v1 = getClampedArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\nasync function load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nasync function init(input) {\n if (typeof input === 'undefined') {\n input = new URL('squoosh_resize_bg.wasm', import.meta.url);\n }\n const imports = {};\n\n\n if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {\n input = fetch(input);\n }\n\n\n\n const { instance, module } = await load(await input, imports);\n\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n\n return wasm;\n}\n\nexport default init;\n\n",
15
- "/**\n * Resize processor - single-source worker/client implementation\n */\n\nimport {\n type WorkerRequest,\n type ImageInput,\n loadWasmBinary,\n validateImageInput,\n respondSuccess,\n respondError,\n} from '@squoosh-kit/runtime';\nimport { validateResizeOptions } from './validators';\nimport type { ResizeOptions } from './types';\nimport * as squoosh_resize_module from '../wasm/squoosh_resize';\n\n// Define the type locally to avoid module resolution issues with the linter\ntype SquooshWasmResize = (\n input_image: Uint8Array,\n input_width: number,\n input_height: number,\n output_width: number,\n output_height: number,\n typ_idx: number,\n premultiply: boolean,\n color_space_conversion: boolean\n) => Uint8ClampedArray;\n\nlet wasmResize: SquooshWasmResize | null = null;\nlet initPromise: Promise<void> | null = null;\n\nasync function init(): Promise<void> {\n if (wasmResize) {\n return;\n }\n\n if (initPromise) {\n return initPromise;\n }\n\n initPromise = (async () => {\n try {\n // Use the worker's own import.meta.url as the base for resolving WASM paths\n const workerBaseUrl = new URL('.', import.meta.url);\n const wasmPathsToTry = [\n './wasm/squoosh_resize_bg.wasm',\n '../wasm/squoosh_resize_bg.wasm',\n ];\n\n let wasmBuffer: ArrayBuffer | null = null;\n let lastError: Error | null = null;\n for (const path of wasmPathsToTry) {\n try {\n wasmBuffer = await loadWasmBinary(path, workerBaseUrl);\n break;\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n }\n }\n\n if (!wasmBuffer) {\n throw (\n lastError || new Error('Could not load WASM binary from any path')\n );\n }\n\n // Initialize WASM module with the binary buffer\n try {\n await squoosh_resize_module.default(wasmBuffer);\n } catch (initError: unknown) {\n // If initialization fails due to SharedArrayBuffer issues, try with polyfill\n if (\n initError instanceof Error &&\n (initError.message.includes('SharedArrayBuffer') ||\n initError.message.includes('first argument must be'))\n ) {\n // Apply polyfill and retry\n if (typeof SharedArrayBuffer === 'undefined') {\n (\n globalThis as unknown as Record<string, typeof ArrayBuffer>\n ).SharedArrayBuffer = ArrayBuffer;\n }\n // Reload the module with polyfill in place\n try {\n await squoosh_resize_module.default(wasmBuffer);\n } catch (retryError) {\n throw new Error(\n `WASM module initialization failed even with polyfill: ${retryError instanceof Error ? retryError.message : String(retryError)}`\n );\n }\n } else {\n throw initError;\n }\n }\n // After initialization, the module's exported resize function is ready to use\n wasmResize = squoosh_resize_module.resize as unknown as SquooshWasmResize;\n } catch (error) {\n initPromise = null;\n throw new Error(\n `Failed to initialize resize WASM module: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n })();\n\n return initPromise;\n}\n\nasync function _resizeCore(\n image: ImageInput,\n options: ResizeOptions\n): Promise<ImageInput> {\n validateImageInput(image);\n validateResizeOptions(options);\n\n await init();\n if (!wasmResize) {\n throw new Error('Resize module not initialized');\n }\n\n const { data, width: inputWidth, height: inputHeight } = image;\n\n let outputWidth = options.width ?? inputWidth;\n let outputHeight = options.height ?? inputHeight;\n\n if (options.width && !options.height) {\n outputHeight = Math.max(\n 1,\n Math.round((inputHeight * options.width) / inputWidth)\n );\n } else if (options.height && !options.width) {\n outputWidth = Math.max(\n 1,\n Math.round((inputWidth * options.height) / inputHeight)\n );\n }\n\n if (outputWidth < 1 || outputHeight < 1) {\n throw new RangeError(\n `Output dimensions must be at least 1x1, got ${outputWidth}x${outputHeight}`\n );\n }\n\n // Create a zero-copy Uint8Array view if needed\n // (don't copy the buffer - just create a view on the same memory)\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 = wasmResize(\n dataArray,\n inputWidth,\n inputHeight,\n outputWidth,\n outputHeight,\n getResizeMethod(options),\n options.premultiply ?? true,\n options.linearRGB ?? true\n );\n\n return {\n data: result,\n width: outputWidth,\n height: outputHeight,\n };\n}\n\nexport async function resizeClient(\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n): Promise<ImageInput> {\n if (signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n return _resizeCore(image, options);\n}\n\n/**\n * Map ResizeOptions method to WASM typ_idx parameter\n * typ_idx values (from Squoosh):\n * 0: Triangular - fastest, lowest quality\n * 1: Catrom - medium quality and speed\n * 2: Mitchell - good balance (default)\n * 3: Lanczos3 - highest quality, slowest\n */\nfunction getResizeMethod(options?: ResizeOptions): number {\n const methodMap: Record<string, number> = {\n triangular: 0,\n catrom: 1,\n mitchell: 2,\n lanczos3: 3,\n };\n return methodMap[options?.method ?? 'lanczos3'] ?? 3;\n}\n\n/**\n * Worker message handler\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 self.postMessage({ type: 'worker:ready' });\n return;\n }\n\n const { id, type, payload } = data as WorkerRequest<{\n image: ImageInput;\n options: ResizeOptions;\n }>;\n\n try {\n if (type !== 'resize:run') {\n throw new Error(`Unknown message type: ${type}`);\n }\n\n const resultImage = await _resizeCore(payload.image, payload.options);\n\n // Create clean buffer\n const outputData = new Uint8ClampedArray(resultImage.data);\n const finalResult = { ...resultImage, data: outputData };\n\n respondSuccess(id, finalResult, [outputData.buffer]);\n } catch (error) {\n respondError(id, error);\n }\n };\n}\n",
13
+ "/**\n * Resize processor - single-source worker/client implementation\n */\n\nimport {\n type WorkerRequest,\n type WorkerResponse,\n type ImageInput,\n loadWasmBinary,\n validateImageInput,\n} from '@squoosh-kit/runtime';\nimport { validateResizeOptions } from './validators';\nimport type { ResizeOptions } from './types';\nimport * as squoosh_resize_module from '../wasm/squoosh_resize';\n\n// Define the type locally to avoid module resolution issues with the linter\ntype SquooshWasmResize = (\n input_image: Uint8Array,\n input_width: number,\n input_height: number,\n output_width: number,\n output_height: number,\n typ_idx: number,\n premultiply: boolean,\n color_space_conversion: boolean\n) => Uint8ClampedArray;\n\nlet wasmResize: SquooshWasmResize | null = null;\nlet initPromise: Promise<void> | null = null;\n\nasync function init(): Promise<void> {\n if (wasmResize) {\n return;\n }\n\n if (initPromise) {\n return initPromise;\n }\n\n initPromise = (async () => {\n try {\n // Use the worker's own import.meta.url as the base for resolving WASM paths\n const workerBaseUrl = new URL('.', import.meta.url);\n const wasmPathsToTry = [\n './wasm/squoosh_resize_bg.wasm',\n '../wasm/squoosh_resize_bg.wasm',\n ];\n\n let wasmBuffer: ArrayBuffer | null = null;\n let lastError: Error | null = null;\n for (const path of wasmPathsToTry) {\n try {\n wasmBuffer = await loadWasmBinary(path, workerBaseUrl);\n break;\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n }\n }\n\n if (!wasmBuffer) {\n throw (\n lastError || new Error('Could not load WASM binary from any path')\n );\n }\n\n // Initialize WASM module with the binary buffer\n try {\n await squoosh_resize_module.default(wasmBuffer);\n } catch (initError: unknown) {\n // If initialization fails due to SharedArrayBuffer issues, try with polyfill\n if (\n initError instanceof Error &&\n (initError.message.includes('SharedArrayBuffer') ||\n initError.message.includes('first argument must be'))\n ) {\n // Apply polyfill and retry\n if (typeof SharedArrayBuffer === 'undefined') {\n (\n globalThis as unknown as Record<string, typeof ArrayBuffer>\n ).SharedArrayBuffer = ArrayBuffer;\n }\n // Reload the module with polyfill in place\n try {\n await squoosh_resize_module.default(wasmBuffer);\n } catch (retryError) {\n throw new Error(\n `WASM module initialization failed even with polyfill: ${retryError instanceof Error ? retryError.message : String(retryError)}`\n );\n }\n } else {\n throw initError;\n }\n }\n // After initialization, the module's exported resize function is ready to use\n wasmResize = squoosh_resize_module.resize as unknown as SquooshWasmResize;\n } catch (error) {\n initPromise = null;\n throw new Error(\n `Failed to initialize resize WASM module: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n })();\n\n return initPromise;\n}\n\nasync function _resizeCore(\n image: ImageInput,\n options: ResizeOptions\n): Promise<ImageInput> {\n validateImageInput(image);\n validateResizeOptions(options);\n\n await init();\n if (!wasmResize) {\n throw new Error('Resize module not initialized');\n }\n\n const { data, width: inputWidth, height: inputHeight } = image;\n\n let outputWidth = options.width ?? inputWidth;\n let outputHeight = options.height ?? inputHeight;\n\n if (options.width && !options.height) {\n outputHeight = Math.max(\n 1,\n Math.round((inputHeight * options.width) / inputWidth)\n );\n } else if (options.height && !options.width) {\n outputWidth = Math.max(\n 1,\n Math.round((inputWidth * options.height) / inputHeight)\n );\n }\n\n if (outputWidth < 1 || outputHeight < 1) {\n throw new RangeError(\n `Output dimensions must be at least 1x1, got ${outputWidth}x${outputHeight}`\n );\n }\n\n // Create a zero-copy Uint8Array view if needed\n // (don't copy the buffer - just create a view on the same memory)\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 = wasmResize(\n dataArray,\n inputWidth,\n inputHeight,\n outputWidth,\n outputHeight,\n getResizeMethod(options),\n options.premultiply ?? true,\n options.linearRGB ?? true\n );\n\n return {\n data: result,\n width: outputWidth,\n height: outputHeight,\n };\n}\n\nexport async function resizeClient(\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n): Promise<ImageInput> {\n if (signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n return _resizeCore(image, options);\n}\n\n/**\n * Map ResizeOptions method to WASM typ_idx parameter\n * typ_idx values (from Squoosh):\n * 0: Triangular - fastest, lowest quality\n * 1: Catrom - medium quality and speed\n * 2: Mitchell - good balance (default)\n * 3: Lanczos3 - highest quality, slowest\n */\nfunction getResizeMethod(options?: ResizeOptions): number {\n const methodMap: Record<string, number> = {\n triangular: 0,\n catrom: 1,\n mitchell: 2,\n lanczos3: 3,\n };\n return methodMap[options?.method ?? 'lanczos3'] ?? 3;\n}\n\n/**\n * Worker message handler\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 self.postMessage({ type: 'worker:ready' });\n return;\n }\n\n const { id, type, payload } = data as WorkerRequest<{\n image: ImageInput;\n options: ResizeOptions;\n }>;\n\n const response: WorkerResponse<ImageInput> = { id, ok: false };\n\n try {\n if (type !== 'resize:run') {\n throw new Error(`Unknown message type: ${type}`);\n }\n\n const resultImage = await _resizeCore(payload.image, payload.options);\n\n response.ok = true;\n response.data = resultImage;\n\n // Post the response without transferring - the ImageInput with data will be cloned\n // Transfer is only used for incoming requests (image.data buffer from client)\n self.postMessage(response);\n } catch (error) {\n response.error = error instanceof Error ? error.message : String(error);\n self.postMessage(response);\n }\n };\n}\n",
16
14
  "/**\n * Bridge implementation for the Resize 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 { ResizeOptions } from './types.ts';\n\nexport type BridgeOptions = {\n assetPath?: string;\n};\n\ninterface ResizeBridge {\n resize(\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ): Promise<ImageInput>;\n terminate(): Promise<void>;\n}\n\nclass ResizeClientBridge implements ResizeBridge {\n async resize(\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ): Promise<ImageInput> {\n // Dynamically import the client resizer to avoid module loading issues in Vite\n const module = await import('./resize.worker.ts');\n const resizeClient = module.resizeClient as (\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ) => Promise<ImageInput>;\n return resizeClient(image, options, signal);\n }\n\n async terminate(): Promise<void> {\n // Client mode has nothing to terminate\n }\n}\n\nclass ResizeWorkerBridge implements ResizeBridge {\n private worker: Worker | null = null;\n private workerReady: Promise<Worker> | null = null;\n private options?: BridgeOptions;\n\n constructor(options?: BridgeOptions) {\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 this.worker = await createReadyWorker('resize.worker.js', this.options);\n return this.worker;\n }\n\n async resize(\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ): Promise<ImageInput> {\n const worker = await this.getWorker();\n\n validateImageInput(image);\n\n try {\n const result = await callWorker<\n { image: ImageInput; options: ResizeOptions },\n ImageInput\n >(worker, 'resize:run', { image, options }, signal);\n\n return result;\n } catch (error) {\n console.error('Resize error:', error);\n throw error;\n }\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): ResizeBridge {\n if (mode === 'worker') {\n return new ResizeWorkerBridge(options);\n }\n return new ResizeClientBridge();\n}\n",
17
15
  "/**\n * @squoosh-kit/resize public API\n */\n\nimport type { ImageInput } from '@squoosh-kit/runtime';\nimport { createBridge, type BridgeOptions } from './bridge';\nimport type { ResizeOptions } from './types';\n\nexport type { ImageInput, ResizeOptions };\n\n// Global bridge instance for reuse\nlet globalClientBridge: ReturnType<typeof createBridge> | null = null;\n\n/**\n * A resizable image processor that can be reused for multiple operations.\n * Can be terminated to clean up associated resources (especially workers).\n */\nexport type ResizerFactory = ((\n imageData: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n) => Promise<ImageInput>) & {\n /**\n * Terminates the resizer and cleans up resources.\n * Important for worker mode to prevent memory leaks.\n *\n * @example\n * const resizer = createResizer('worker');\n * try {\n * const result = await resizer(imageData, options);\n * } finally {\n * await resizer.terminate();\n * }\n */\n terminate(): Promise<void>;\n};\n\n/**\n * Resizes an image. Uses worker mode for UI responsiveness.\n *\n * @param imageData - The image data to resize.\n * @param options - Resize options.\n * @param signal - (Optional) AbortSignal to cancel the resizing operation.\n * If provided, you can cancel the operation by calling\n * `controller.abort()` on the associated AbortController.\n * If not provided, the operation cannot be cancelled.\n * @returns A Promise resolving to the resized image data.\n *\n * @example\n * // With cancellation support\n * const controller = new AbortController();\n * const result = await resize(imageData, { width: 800 }, controller.signal);\n * setTimeout(() => controller.abort(), 5000);\n *\n * @example\n * // Without cancellation (operation cannot be stopped)\n * const result = await resize(imageData, { width: 800 });\n */\nexport async function resize(\n imageData: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n): Promise<ImageInput> {\n // Use worker mode for UI responsiveness - prevents blocking the main thread\n if (!globalClientBridge) {\n globalClientBridge = createBridge('worker');\n }\n\n return globalClientBridge.resize(imageData, options, signal);\n}\n\n/**\n * Creates a reusable resizer function for a specific execution mode.\n *\n * @param mode - The execution mode, either 'worker' or 'client'.\n * @returns A function that resizes an image with optional AbortSignal.\n */\nexport function createResizer(\n mode: 'worker' | 'client' = 'worker',\n options?: BridgeOptions\n): ResizerFactory {\n const bridge = createBridge(mode, options);\n\n return Object.assign(\n (imageData: ImageInput, options: ResizeOptions, signal?: AbortSignal) => {\n return bridge.resize(imageData, options, signal);\n },\n {\n terminate: async () => {\n await bridge.terminate();\n },\n }\n );\n}\n"
18
16
  ],
19
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,SAAS,KAAK,GAAY;AAAA,EAC/B,OAAO,OAAO,QAAQ;AAAA;AAMjB,SAAS,MAAM,GAAY;AAAA,EAChC,OACE,OAAO,YAAY,eACnB,QAAQ,YAAY,QACpB,QAAQ,SAAS,QAAQ;AAAA;;;ACP7B,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;;;ACOT,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,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,MAG5D,IAAI,SAAS,WAAW;AAAA,QAEtB,IAAI,sBAAsB,QAAQ;AAAA,QAClC,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,8DAA8D,WAChE;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,GACvF;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,IAGA,MAAM,cAAc,MAAM,IAAI,YAAY;AAAA,IAC1C,MAAM,WAAW,eAAe,QAAQ,OAAO,EAAE;AAAA,IAGjD,MAAM,aAAa,aAAa,QAAQ,SAAS,QAAQ,IACrD,oBAAoB,gBACpB,kBAAkB;AAAA,IAEtB,QAAQ,IAAI,eAAe,UAAU;AAAA,IACrC,QAAQ,IAAI,oBAAoB,YAAY,GAAG;AAAA,IAC/C,IAAI;AAAA,MACF,OAAO,IAAI,OAAO,IAAI,IAAI,YAAY,YAAY,GAAG,GAAG;AAAA,QACtD,MAAM;AAAA,MACR,CAAC;AAAA,MACD,MAAM;AAAA,MAEN,MAAM,cAAc,aAAa,QAAQ,SAAS,QAAQ,IACtD,qBAAqB,YAAY,YAAY,MAAM,CAAC,MACpD,mBAAmB,YAAY,YAAY,MAAM,CAAC;AAAA,MAEtD,QAAQ,IAAI,gBAAgB,WAAW;AAAA,MACvC,QAAQ,IAAI,oBAAoB,YAAY,GAAG;AAAA,MAC/C,IAAI;AAAA,QACF,OAAO,IAAI,OAAO,IAAI,IAAI,aAAa,YAAY,GAAG,GAAG;AAAA,UACvD,MAAM;AAAA,QACR,CAAC;AAAA,QACD,MAAM;AAAA,QAEN,IAAI,OAAO,YAAY,YAAY,YAAY;AAAA,UAC7C,IAAI;AAAA,YACF,MAAM,WAAW,YAAY,QAC3B,GAAG,aAAa,WAAW,aAAa,WAC1C;AAAA,YACA,QAAQ,IAAI,aAAa,QAAQ;AAAA,YACjC,OAAO,IAAI,OAAO,UAAU,EAAE,MAAM,SAAS,CAAC;AAAA,YAC9C,MAAM;AAAA,QAGV;AAAA;AAAA;AAAA,IAKJ,MAAM,IAAI,MACR,gCAAgC,qBAC9B,oEACA,8EACJ;AAAA,IACA,OAAO,OAAO;AAAA,IACd,MAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IAC1E,MAAM,IAAI,MACR,gCAAgC,mBAAmB,mBACjD,kFACA,wFACJ;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;;;ACjRH,eAAsB,gBAAgB,CACpC,KACsB;AAAA,EACtB,MAAM,SAAS,IAAI,SAAS;AAAA,EAG5B,IACE,OAAO,KACP,CAAC,MAAM,MACN,OAAO,WAAW,OAAO,KAAK,CAAC,OAAO,SAAS,KAAK,IACrD;AAAA,IACA,IAAI;AAAA,MAEF,MAAM,KAAK,MAAa;AAAA,MACxB,MAAM,OAAO,eAAe,MAAM,MAAM;AAAA,MACxC,MAAM,SAAS,MAAM,GAAG,SAAS,IAAI;AAAA,MACrC,OAAO,OAAO;AAAA,MACd,OAAO,GAAG;AAAA,MACV,QAAQ,KAAK,8CAA8C,CAAC;AAAA;AAAA,EAEhE;AAAA,EAGA,MAAM,MAAM,MAAM,MAAM,MAAM;AAAA,EAC9B,IAAI,CAAC,IAAI;AAAA,IAAI,MAAM,IAAI,MAAM,mBAAmB,WAAW,IAAI,YAAY;AAAA,EAC3E,OAAO,IAAI,YAAY;AAAA;AAAA;;;ACtBzB,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,OAAO,MAAM,iBAAiB,OAAO;AAAA,IACrC,OAAO,OAAO;AAAA,IACd,QAAQ,MACN,oDAAoD,QAAQ,gBAC5D,KACF;AAAA,IACA,MAAM;AAAA;AAAA;AAAA;AAAA,EA5BV;AAAA;;;ACaO,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;;;;;AC/CK,SAAS,cAAiB,CAC/B,IACA,MACA,WAA2B,CAAC,GAC5B;AAAA,EACA,MAAM,WAA8B,EAAE,IAAI,IAAI,MAAM,KAAK;AAAA,EAGzD,MAAM,eAAe,SAAS,OAC5B,CAAC,MAAM,EAAE,aAAa,kBACxB;AAAA,EAKC,KAAgC,YAAY,UAAU,YAAY;AAAA;AAM9D,SAAS,YAAY,CAAC,IAAY,OAAgB;AAAA,EACvD,MAAM,MAAM,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,EACjE,MAAM,WAAkC,EAAE,IAAI,IAAI,OAAO,OAAO,IAAI;AAAA,EACpE,KAAK,YAAY,QAAQ;AAAA;;;;EC7B3B;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA;;;ACdO,SAAS,qBAAqB,CAAC,SAMpC;AAAA,EACA,IAAI,OAAO,YAAY,YAAY,YAAY,MAAM;AAAA,IACnD,MAAM,IAAI,UAAU,2BAA2B;AAAA,EACjD;AAAA,EAEA,MAAM,OAAO;AAAA,EAEb,IAAI,KAAK,UAAU,WAAW;AAAA,IAC5B,IACE,OAAO,KAAK,UAAU,YACtB,CAAC,OAAO,UAAU,KAAK,KAAK,KAC5B,KAAK,SAAS,GACd;AAAA,MACA,MAAM,IAAI,WACR,iDAAiD,KAAK,OACxD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,KAAK,WAAW,WAAW;AAAA,IAC7B,IACE,OAAO,KAAK,WAAW,YACvB,CAAC,OAAO,UAAU,KAAK,MAAM,KAC7B,KAAK,UAAU,GACf;AAAA,MACA,MAAM,IAAI,WACR,kDAAkD,KAAK,QACzD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,KAAK,WAAW,WAAW;AAAA,IAC7B,MAAM,eAAe,CAAC,cAAc,UAAU,YAAY,UAAU;AAAA,IACpE,IAAI,CAAC,aAAa,SAAS,KAAK,MAAgB,GAAG;AAAA,MACjD,MAAM,IAAI,UACR,kCAAkC,aAAa,KAAK,IAAI,UAAU,KAAK,QACzE;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,KAAK,gBAAgB,aAAa,OAAO,KAAK,gBAAgB,WAAW;AAAA,IAC3E,MAAM,IAAI,UACR,4CAA4C,OAAO,KAAK,aAC1D;AAAA,EACF;AAAA,EAEA,IAAI,KAAK,cAAc,aAAa,OAAO,KAAK,cAAc,WAAW;AAAA,IACvE,MAAM,IAAI,UACR,0CAA0C,OAAO,KAAK,WACxD;AAAA,EACF;AAAA;;;ACpDF,SAAS,eAAe,GAAG;AAAA,EACvB,IAAI,yBAAyB,QAAQ,qBAAqB,WAAW,KAAK,OAAO,QAAQ;AAAA,IACrF,uBAAuB,IAAI,WAAW,KAAK,OAAO,MAAM;AAAA,EAC5D;AAAA,EACA,OAAO;AAAA;AAKX,SAAS,iBAAiB,CAAC,KAAK,QAAQ;AAAA,EACpC,MAAM,MAAM,OAAO,IAAI,SAAS,CAAC;AAAA,EACjC,gBAAgB,EAAE,IAAI,KAAK,MAAM,CAAC;AAAA,EAClC,kBAAkB,IAAI;AAAA,EACtB,OAAO;AAAA;AAIX,SAAS,eAAe,GAAG;AAAA,EACvB,IAAI,yBAAyB,QAAQ,qBAAqB,WAAW,KAAK,OAAO,QAAQ;AAAA,IACrF,uBAAuB,IAAI,WAAW,KAAK,OAAO,MAAM;AAAA,EAC5D;AAAA,EACA,OAAO;AAAA;AAIX,SAAS,sBAAsB,GAAG;AAAA,EAC9B,IAAI,gCAAgC,QAAQ,4BAA4B,WAAW,KAAK,OAAO,QAAQ;AAAA,IACnG,8BAA8B,IAAI,kBAAkB,KAAK,OAAO,MAAM;AAAA,EAC1E;AAAA,EACA,OAAO;AAAA;AAGX,SAAS,0BAA0B,CAAC,KAAK,KAAK;AAAA,EAC1C,OAAO,uBAAuB,EAAE,SAAS,MAAM,GAAG,MAAM,IAAI,GAAG;AAAA;AAa5D,SAAS,MAAM,CAAC,aAAa,aAAa,cAAc,cAAc,eAAe,SAAS,aAAa,wBAAwB;AAAA,EACtI,IAAI;AAAA,IACA,MAAM,SAAS,KAAK,gCAAgC,GAAG;AAAA,IACvD,IAAI,OAAO,kBAAkB,aAAa,KAAK,iBAAiB;AAAA,IAChE,IAAI,OAAO;AAAA,IACX,KAAK,OAAO,QAAQ,MAAM,MAAM,aAAa,cAAc,cAAc,eAAe,SAAS,aAAa,sBAAsB;AAAA,IACpI,IAAI,KAAK,gBAAgB,EAAE,SAAS,IAAI;AAAA,IACxC,IAAI,KAAK,gBAAgB,EAAE,SAAS,IAAI;AAAA,IACxC,IAAI,KAAK,2BAA2B,IAAI,EAAE,EAAE,MAAM;AAAA,IAClD,KAAK,gBAAgB,IAAI,KAAK,CAAC;AAAA,IAC/B,OAAO;AAAA,YACT;AAAA,IACE,KAAK,gCAAgC,EAAE;AAAA;AAAA;AAI/C,eAAe,IAAI,CAAC,QAAQ,SAAS;AAAA,EACjC,IAAI,OAAO,aAAa,cAAc,kBAAkB,UAAU;AAAA,IAC9D,IAAI,OAAO,YAAY,yBAAyB,YAAY;AAAA,MACxD,IAAI;AAAA,QACA,OAAO,MAAM,YAAY,qBAAqB,QAAQ,OAAO;AAAA,QAE/D,OAAO,GAAG;AAAA,QACR,IAAI,OAAO,QAAQ,IAAI,cAAc,KAAK,oBAAoB;AAAA,UAC1D,QAAQ,KAAK,qMAAqM,CAAC;AAAA,QAEvN,EAAO;AAAA,UACH,MAAM;AAAA;AAAA;AAAA,IAGlB;AAAA,IAEA,MAAM,QAAQ,MAAM,OAAO,YAAY;AAAA,IACvC,OAAO,MAAM,YAAY,YAAY,OAAO,OAAO;AAAA,EAEvD,EAAO;AAAA,IACH,MAAM,WAAW,MAAM,YAAY,YAAY,QAAQ,OAAO;AAAA,IAE9D,IAAI,oBAAoB,YAAY,UAAU;AAAA,MAC1C,OAAO,EAAE,UAAU,OAAO;AAAA,IAE9B,EAAO;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAKnB,eAAe,IAAI,CAAC,OAAO;AAAA,EACvB,IAAI,OAAO,UAAU,aAAa;AAAA,IAC9B,QAAQ,IAAI,IAAI,0BAA0B,YAAY,GAAG;AAAA,EAC7D;AAAA,EACA,MAAM,UAAU,CAAC;AAAA,EAGjB,IAAI,OAAO,UAAU,YAAa,OAAO,YAAY,cAAc,iBAAiB,WAAa,OAAO,QAAQ,cAAc,iBAAiB,KAAM;AAAA,IACjJ,QAAQ,MAAM,KAAK;AAAA,EACvB;AAAA,EAIA,QAAQ,UAAU,WAAW,MAAM,KAAK,MAAM,OAAO,OAAO;AAAA,EAE5D,OAAO,SAAS;AAAA,EAChB,KAAK,yBAAyB;AAAA,EAE9B,OAAO;AAAA;AAAA,IAlHP,MAEA,uBAAuB,MAQvB,kBAAkB,GASlB,uBAAuB,MAQvB,8BAA8B,MA0FnB;AAAA;AAAA;AAAA;;;;;;;ACvFf,eAAe,KAAI,GAAkB;AAAA,EACnC,IAAI,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EAEA,IAAI,aAAa;AAAA,IACf,OAAO;AAAA,EACT;AAAA,EAEA,eAAe,YAAY;AAAA,IACzB,IAAI;AAAA,MAEF,MAAM,gBAAgB,IAAI,IAAI,KAAK,YAAY,GAAG;AAAA,MAClD,MAAM,iBAAiB;AAAA,QACrB;AAAA,QACA;AAAA,MACF;AAAA,MAEA,IAAI,aAAiC;AAAA,MACrC,IAAI,YAA0B;AAAA,MAC9B,WAAW,QAAQ,gBAAgB;AAAA,QACjC,IAAI;AAAA,UACF,aAAa,MAAM,eAAe,MAAM,aAAa;AAAA,UACrD;AAAA,UACA,OAAO,OAAO;AAAA,UACd,YAAY,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA;AAAA,MAExE;AAAA,MAEA,IAAI,CAAC,YAAY;AAAA,QACf,MACE,aAAa,IAAI,MAAM,0CAA0C;AAAA,MAErE;AAAA,MAGA,IAAI;AAAA,QACF,MAA4B,uBAAQ,UAAU;AAAA,QAC9C,OAAO,WAAoB;AAAA,QAE3B,IACE,qBAAqB,UACpB,UAAU,QAAQ,SAAS,mBAAmB,KAC7C,UAAU,QAAQ,SAAS,wBAAwB,IACrD;AAAA,UAEA,IAAI,OAAO,sBAAsB,aAAa;AAAA,YAE1C,WACA,oBAAoB;AAAA,UACxB;AAAA,UAEA,IAAI;AAAA,YACF,MAA4B,uBAAQ,UAAU;AAAA,YAC9C,OAAO,YAAY;AAAA,YACnB,MAAM,IAAI,MACR,yDAAyD,sBAAsB,QAAQ,WAAW,UAAU,OAAO,UAAU,GAC/H;AAAA;AAAA,QAEJ,EAAO;AAAA,UACL,MAAM;AAAA;AAAA;AAAA,MAIV,aAAmC;AAAA,MACnC,OAAO,OAAO;AAAA,MACd,cAAc;AAAA,MACd,MAAM,IAAI,MACR,4CAA4C,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GACnG;AAAA;AAAA,KAED;AAAA,EAEH,OAAO;AAAA;AAGT,eAAe,WAAW,CACxB,OACA,SACqB;AAAA,EACrB,mBAAmB,KAAK;AAAA,EACxB,sBAAsB,OAAO;AAAA,EAE7B,MAAM,MAAK;AAAA,EACX,IAAI,CAAC,YAAY;AAAA,IACf,MAAM,IAAI,MAAM,+BAA+B;AAAA,EACjD;AAAA,EAEA,QAAQ,MAAM,OAAO,YAAY,QAAQ,gBAAgB;AAAA,EAEzD,IAAI,cAAc,QAAQ,SAAS;AAAA,EACnC,IAAI,eAAe,QAAQ,UAAU;AAAA,EAErC,IAAI,QAAQ,SAAS,CAAC,QAAQ,QAAQ;AAAA,IACpC,eAAe,KAAK,IAClB,GACA,KAAK,MAAO,cAAc,QAAQ,QAAS,UAAU,CACvD;AAAA,EACF,EAAO,SAAI,QAAQ,UAAU,CAAC,QAAQ,OAAO;AAAA,IAC3C,cAAc,KAAK,IACjB,GACA,KAAK,MAAO,aAAa,QAAQ,SAAU,WAAW,CACxD;AAAA,EACF;AAAA,EAEA,IAAI,cAAc,KAAK,eAAe,GAAG;AAAA,IACvC,MAAM,IAAI,WACR,+CAA+C,eAAe,cAChE;AAAA,EACF;AAAA,EAIA,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,WACb,WACA,YACA,aACA,aACA,cACA,gBAAgB,OAAO,GACvB,QAAQ,eAAe,MACvB,QAAQ,aAAa,IACvB;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAAA;AAGF,eAAsB,YAAY,CAChC,OACA,SACA,QACqB;AAAA,EACrB,IAAI,QAAQ,SAAS;AAAA,IACnB,MAAM,IAAI,aAAa,WAAW,YAAY;AAAA,EAChD;AAAA,EACA,OAAO,YAAY,OAAO,OAAO;AAAA;AAWnC,SAAS,eAAe,CAAC,SAAiC;AAAA,EACxD,MAAM,YAAoC;AAAA,IACxC,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AAAA,EACA,OAAO,UAAU,SAAS,UAAU,eAAe;AAAA;AAAA,IAzKjD,aAAuC,MACvC,cAAoC;AAAA;AAAA,EAzBxC;AAAA,EAUA;AAAA,EA6LA,IAAI,OAAO,SAAS,aAAa;AAAA,IAC/B,KAAK,YAAY,OAAO,UAAwB;AAAA,MAC9C,MAAM,OAAO,MAAM;AAAA,MAGnB,IAAI,MAAM,SAAS,eAAe;AAAA,QAChC,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAAA,QACzC;AAAA,MACF;AAAA,MAEA,QAAQ,IAAI,MAAM,YAAY;AAAA,MAK9B,IAAI;AAAA,QACF,IAAI,SAAS,cAAc;AAAA,UACzB,MAAM,IAAI,MAAM,yBAAyB,MAAM;AAAA,QACjD;AAAA,QAEA,MAAM,cAAc,MAAM,YAAY,QAAQ,OAAO,QAAQ,OAAO;AAAA,QAGpE,MAAM,aAAa,IAAI,kBAAkB,YAAY,IAAI;AAAA,QACzD,MAAM,cAAc,KAAK,aAAa,MAAM,WAAW;AAAA,QAEvD,eAAe,IAAI,aAAa,CAAC,WAAW,MAAM,CAAC;AAAA,QACnD,OAAO,OAAO;AAAA,QACd,aAAa,IAAI,KAAK;AAAA;AAAA;AAAA,EAG5B;AAAA;;;ACtOA;AAKA;AAAA;AAgBA,MAAM,mBAA2C;AAAA,OACzC,OAAM,CACV,OACA,SACA,QACqB;AAAA,IAErB,MAAM,SAAS;AAAA,IACf,MAAM,gBAAe,OAAO;AAAA,IAK5B,OAAO,cAAa,OAAO,SAAS,MAAM;AAAA;AAAA,OAGtC,UAAS,GAAkB;AAGnC;AAAA;AAEA,MAAM,mBAA2C;AAAA,EACvC,SAAwB;AAAA,EACxB,cAAsC;AAAA,EACtC;AAAA,EAER,WAAW,CAAC,SAAyB;AAAA,IACnC,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,KAAK,SAAS,MAAM,kBAAkB,oBAAoB,KAAK,OAAO;AAAA,IACtE,OAAO,KAAK;AAAA;AAAA,OAGR,OAAM,CACV,OACA,SACA,QACqB;AAAA,IACrB,MAAM,SAAS,MAAM,KAAK,UAAU;AAAA,IAEpC,mBAAmB,KAAK;AAAA,IAExB,IAAI;AAAA,MACF,MAAM,SAAS,MAAM,WAGnB,QAAQ,cAAc,EAAE,OAAO,QAAQ,GAAG,MAAM;AAAA,MAElD,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,QAAQ,MAAM,iBAAiB,KAAK;AAAA,MACpC,MAAM;AAAA;AAAA;AAAA,OAIJ,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,MACA,SACc;AAAA,EACd,IAAI,SAAS,UAAU;AAAA,IACrB,OAAO,IAAI,mBAAmB,OAAO;AAAA,EACvC;AAAA,EACA,OAAO,IAAI;AAAA;;;AC9Fb,IAAI,qBAA6D;AA+CjE,eAAsB,OAAM,CAC1B,WACA,SACA,QACqB;AAAA,EAErB,IAAI,CAAC,oBAAoB;AAAA,IACvB,qBAAqB,aAAa,QAAQ;AAAA,EAC5C;AAAA,EAEA,OAAO,mBAAmB,OAAO,WAAW,SAAS,MAAM;AAAA;AAStD,SAAS,aAAa,CAC3B,OAA4B,UAC5B,SACgB;AAAA,EAChB,MAAM,SAAS,aAAa,MAAM,OAAO;AAAA,EAEzC,OAAO,OAAO,OACZ,CAAC,WAAuB,UAAwB,WAAyB;AAAA,IACvE,OAAO,OAAO,OAAO,WAAW,UAAS,MAAM;AAAA,KAEjD;AAAA,IACE,WAAW,YAAY;AAAA,MACrB,MAAM,OAAO,UAAU;AAAA;AAAA,EAE3B,CACF;AAAA;",
20
- "debugId": "3A171A31F92BBD2264756E2164756E21",
17
+ "mappings": "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",
18
+ "debugId": "CD27D1440895AD8564756E2164756E21",
21
19
  "names": []
22
20
  }
package/dist/index.bun.js CHANGED
@@ -1,20 +1,5 @@
1
1
  // @bun
2
- var __create = Object.create;
3
- var __getProtoOf = Object.getPrototypeOf;
4
2
  var __defProp = Object.defineProperty;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __toESM = (mod, isNodeMode, target) => {
8
- target = mod != null ? __create(__getProtoOf(mod)) : {};
9
- const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
- for (let key of __getOwnPropNames(mod))
11
- if (!__hasOwnProp.call(to, key))
12
- __defProp(to, key, {
13
- get: () => mod[key],
14
- enumerable: true
15
- });
16
- return to;
17
- };
18
3
  var __export = (target, all) => {
19
4
  for (var name in all)
20
5
  __defProp(target, name, {
@@ -25,15 +10,11 @@ var __export = (target, all) => {
25
10
  });
26
11
  };
27
12
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
28
- var __require = import.meta.require;
29
13
 
30
14
  // ../runtime/src/env.ts
31
15
  function isBun() {
32
16
  return typeof Bun !== "undefined";
33
17
  }
34
- function isNode() {
35
- return typeof process !== "undefined" && process.versions != null && process.versions.node != null;
36
- }
37
18
 
38
19
  // ../runtime/src/worker-call.ts
39
20
  async function callWorker(worker, type, payload, signal, transfer) {
@@ -229,26 +210,6 @@ function createReadyWorker(workerFilename, options, timeoutMs = 1e4) {
229
210
  }
230
211
  var init_worker_helper = () => {};
231
212
 
232
- // ../runtime/src/io.ts
233
- async function readFileAsBuffer(url) {
234
- const urlStr = url.toString();
235
- if (isNode() && !isBun() && (urlStr.startsWith("file:") || !urlStr.includes("://"))) {
236
- try {
237
- const fs = await import("fs/promises");
238
- const path = url instanceof URL ? url : urlStr;
239
- const buffer = await fs.readFile(path);
240
- return buffer.buffer;
241
- } catch (e) {
242
- console.warn("[io] fs read failed, falling back to fetch", e);
243
- }
244
- }
245
- const res = await fetch(urlStr);
246
- if (!res.ok)
247
- throw new Error(`Failed to fetch ${urlStr}: ${res.statusText}`);
248
- return res.arrayBuffer();
249
- }
250
- var init_io = () => {};
251
-
252
213
  // ../runtime/src/wasm-loader.ts
253
214
  async function loadWasmBinary(relativePath, baseUrlOverride) {
254
215
  const baseUrl = baseUrlOverride ? typeof baseUrlOverride === "string" ? new URL(".", baseUrlOverride) : new URL(".", baseUrlOverride.href) : new URL(".", import.meta.url);
@@ -257,15 +218,24 @@ async function loadWasmBinary(relativePath, baseUrlOverride) {
257
218
  console.log(`[WasmLoader] Base URL (import.meta.url): ${baseUrl.href}`);
258
219
  console.log(`[WasmLoader] Constructed full URL: ${fullUrl.href}`);
259
220
  try {
260
- return await readFileAsBuffer(fullUrl);
221
+ const response = await fetch(fullUrl.href);
222
+ console.log(`[WasmLoader] Fetch response status for ${fullUrl.href}: ${response.status}`);
223
+ if (!response.ok) {
224
+ const responseText = await response.text();
225
+ console.error(`[WasmLoader] Fetch response text (first 500 chars):`, responseText.substring(0, 500));
226
+ throw new Error(`Failed to fetch WASM module at ${fullUrl.href}: ${response.status} ${response.statusText}`);
227
+ }
228
+ const contentType = response.headers.get("content-type");
229
+ console.log(`[WasmLoader] Response Content-Type: ${contentType}`);
230
+ if (!contentType || !contentType.includes("application/wasm")) {
231
+ console.warn(`[WasmLoader] Warning: WASM module at ${fullUrl.href} served with incorrect MIME type: "${contentType}". Should be "application/wasm".`);
232
+ }
233
+ return await response.arrayBuffer();
261
234
  } catch (error) {
262
235
  console.error(`[WasmLoader] CRITICAL: Fetching WASM binary from ${fullUrl.href} failed.`, error);
263
236
  throw error;
264
237
  }
265
238
  }
266
- var init_wasm_loader = __esm(() => {
267
- init_io();
268
- });
269
239
 
270
240
  // ../runtime/src/validators.ts
271
241
  function validateImageInput(image) {
@@ -298,24 +268,10 @@ function validateImageInput(image) {
298
268
  // ../runtime/src/simd-detector.ts
299
269
  var init_simd_detector = () => {};
300
270
 
301
- // ../runtime/src/worker-utils.ts
302
- function respondSuccess(id, data, transfer = []) {
303
- const response = { id, ok: true, data };
304
- const safeTransfer = transfer.filter((t) => !(t instanceof SharedArrayBuffer));
305
- self.postMessage(response, safeTransfer);
306
- }
307
- function respondError(id, error) {
308
- const msg = error instanceof Error ? error.message : String(error);
309
- const response = { id, ok: false, error: msg };
310
- self.postMessage(response);
311
- }
312
-
313
271
  // ../runtime/src/index.ts
314
272
  var init_src = __esm(() => {
315
273
  init_worker_helper();
316
- init_wasm_loader();
317
274
  init_simd_detector();
318
- init_io();
319
275
  });
320
276
 
321
277
  // src/validators.ts
@@ -542,16 +498,18 @@ var init_resize_worker = __esm(() => {
542
498
  return;
543
499
  }
544
500
  const { id, type, payload } = data;
501
+ const response = { id, ok: false };
545
502
  try {
546
503
  if (type !== "resize:run") {
547
504
  throw new Error(`Unknown message type: ${type}`);
548
505
  }
549
506
  const resultImage = await _resizeCore(payload.image, payload.options);
550
- const outputData = new Uint8ClampedArray(resultImage.data);
551
- const finalResult = { ...resultImage, data: outputData };
552
- respondSuccess(id, finalResult, [outputData.buffer]);
507
+ response.ok = true;
508
+ response.data = resultImage;
509
+ self.postMessage(response);
553
510
  } catch (error) {
554
- respondError(id, error);
511
+ response.error = error instanceof Error ? error.message : String(error);
512
+ self.postMessage(response);
555
513
  }
556
514
  };
557
515
  }
@@ -636,4 +594,4 @@ export {
636
594
  createResizer
637
595
  };
638
596
 
639
- //# debugId=17065D128AF35B6A64756E2164756E21
597
+ //# debugId=AF34302090A0D5F264756E2164756E21