@squoosh-kit/resize 0.0.40 → 0.0.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -467,40 +467,6 @@ All options map directly to the Squoosh WASM resize function:
467
467
  - **Browsers** - Web Worker support for responsive user interfaces
468
468
  - **TypeScript** - Complete type safety and IntelliSense support
469
469
 
470
- ## Vite Configuration
471
-
472
- If you're using Vite and encounter worker loading errors in production (e.g., "Worker failed to start: Unknown error"), you need to configure Vite to handle this package correctly.
473
-
474
- ### Required Vite Configuration
475
-
476
- Add this to your `vite.config.ts`:
477
-
478
- ```typescript
479
- import { defineConfig } from 'vite';
480
- import react from '@vitejs/plugin-react'; // or your framework plugin
481
-
482
- export default defineConfig({
483
- plugins: [react()],
484
- ssr: {
485
- // Prevent squoosh-kit packages from being treated as external in SSR builds
486
- noExternal: ['@squoosh-kit/resize', '@squoosh-kit/runtime'],
487
- },
488
- optimizeDeps: {
489
- // Include squoosh-kit packages in pre-bundling
490
- include: ['@squoosh-kit/resize', '@squoosh-kit/runtime'],
491
- },
492
- });
493
- ```
494
-
495
- ### Troubleshooting
496
-
497
- If you still see worker loading errors:
498
-
499
- 1. **Clear your build cache**: Delete `dist/` and `.vite/` directories, then rebuild
500
- 2. **Check network tab**: Verify the worker files are being found in the browser DevTools Network tab
501
- 3. **Verify installation**: Ensure the package is installed: `bun install` (or `npm install`)
502
- 4. **Verify files exist**: Confirm worker file exists at `node_modules/@squoosh-kit/resize/dist/resize.worker.browser.mjs`
503
-
504
470
  ## License
505
471
 
506
472
  MIT - resize with confidence
@@ -1,4 +1,4 @@
1
- import{b as S}from"./chunk-szbj3b6y.js";import{d as R,e as T}from"./chunk-bhj61bkd.js";function U(){return typeof Bun<"u"}var W=0;async function A(H,L,Z,K,J){return new Promise((G,Y)=>{let Q=++W;if(K?.aborted){Y(new DOMException("Aborted","AbortError"));return}let V=(O)=>{let D=O.data;if(D.id!==Q)return;if($(),D.ok&&D.data!==void 0)G(D.data);else Y(Error(D.error||"Unknown worker error"))},X=(O)=>{$(),Y(Error(`Worker error: ${O.message}`))},x=()=>{$(),Y(new DOMException("Aborted","AbortError"))},$=()=>{H.removeEventListener("message",V),H.removeEventListener("error",X),K?.removeEventListener("abort",x)};H.addEventListener("message",V),H.addEventListener("error",X),K?.addEventListener("abort",x);let _={type:L,id:Q,payload:Z};if(J&&J.length>0)H.postMessage(_,J);else H.postMessage(_)})}function q(H){let L=H.endsWith(".js")?H:`${H}.js`,Z={"resize.worker.js":{package:"@squoosh-kit/resize",specifier:"resize.worker.js"},"webp.worker.js":{package:"@squoosh-kit/webp",specifier:"webp.worker.js"}},K=Z[L];if(!K)throw Error(`Unknown worker: ${L}. Supported workers: ${Object.keys(Z).join(", ")}`);try{if(typeof window<"u"){let Q=K.package.split("/")[1],V=L.replace(".js",".browser.mjs"),X=null,x=[`../../../node_modules/@squoosh-kit/${Q}/dist/${V}`,`../../../${Q}/dist/${V}`,`../../${Q}/dist/${V}`];for(let $ of x)try{let _=new URL($,import.meta.url);return new Worker(_,{type:"module"})}catch(_){X=_ instanceof Error?_:Error(String(_))}try{let $=[`/node_modules/@squoosh-kit/${Q}/dist/${V}`,`/@squoosh-kit/${Q}/dist/${V}`];for(let _ of $)try{return new Worker(_,{type:"module"})}catch{}}catch{}if(X)throw X;throw Error(`Could not resolve worker ${L} using any available path strategy`)}let J=U()?".bun.js":".node.mjs",G=L.replace(".js",""),Y=K.package.includes("resize")?`../../resize/src/${G}.ts`:`../../webp/src/${G}.ts`;try{return new Worker(new URL(Y,import.meta.url),{type:"module"})}catch{let Q=K.package.includes("resize")?`../../resize/dist/${G}.${J.slice(1)}`:`../../webp/dist/${G}.${J.slice(1)}`;try{return new Worker(new URL(Q,import.meta.url),{type:"module"})}catch{if(typeof import.meta.resolve==="function")try{let V=import.meta.resolve(`${K.package}/${K.specifier}`);return new Worker(V,{type:"module"})}catch{}}}throw Error(`Failed to create worker from ${L}. Tried TypeScript source, dist output, and import.meta.resolve. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`)}catch(J){let G=J instanceof Error?J.message:String(J);throw Error(`Failed to create worker from ${L}: ${G}. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed and properly configured in your bundler. If you're using Vite, add this to your vite.config.ts: { ssr: { noExternal: ['@squoosh-kit/resize', '@squoosh-kit/webp'] } }`)}}function I(H,L=1e4){return new Promise((Z,K)=>{let J=setTimeout(()=>{K(Error(`Worker initialization timeout after ${L}ms. Worker file: ${H}`))},L),G;try{G=q(H)}catch(X){clearTimeout(J),K(X);return}let Y=(X)=>{if(X.data?.type==="worker:ready")clearTimeout(J),G.removeEventListener("message",Y),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),Z(G)},Q=(X)=>{clearTimeout(J),G.removeEventListener("message",Y),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker failed to start: ${X?.message||"Unknown error"}. Worker file: ${H}`))},V=()=>{clearTimeout(J),G.removeEventListener("message",Y),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker message error during initialization. Worker file: ${H}`))};G.addEventListener("message",Y),G.addEventListener("error",Q),G.addEventListener("messageerror",V),G.postMessage({type:"worker:ping"})})}class B{async resize(H,L,Z){let J=(await import("./resize.worker.browser.mjs")).resizeClient;return J(H,L,Z)}async terminate(){}}class P{worker=null;workerReady=null;async getWorker(){if(!this.worker){if(!this.workerReady)this.workerReady=this.createWorker();this.worker=await this.workerReady}return this.worker}async createWorker(){return I("resize.worker")}async resize(H,L,Z){let K=await this.getWorker();S(H);try{return await A(K,"resize:run",{image:H,options:L},Z)}catch(J){throw console.error("Resize error:",J),J}}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function j(H){return H==="client"?new B:new P}export{j as createBridge};
1
+ import{b as S}from"./chunk-szbj3b6y.js";import{d as R,e as T}from"./chunk-bhj61bkd.js";function U(){return typeof Bun<"u"}var W=0;async function A(H,L,Y,K,J){return new Promise((G,X)=>{let Q=++W;if(K?.aborted){X(new DOMException("Aborted","AbortError"));return}let V=(O)=>{let x=O.data;if(x.id!==Q)return;if(D(),x.ok&&x.data!==void 0)G(x.data);else X(Error(x.error||"Unknown worker error"))},Z=(O)=>{D(),X(Error(`Worker error: ${O.message}`))},$=()=>{D(),X(new DOMException("Aborted","AbortError"))},D=()=>{H.removeEventListener("message",V),H.removeEventListener("error",Z),K?.removeEventListener("abort",$)};H.addEventListener("message",V),H.addEventListener("error",Z),K?.addEventListener("abort",$);let _={type:L,id:Q,payload:Y};if(J&&J.length>0)H.postMessage(_,J);else H.postMessage(_)})}function q(H){let L=H.endsWith(".js")?H:`${H}.js`,Y={"resize.worker.js":{package:"@squoosh-kit/resize",specifier:"resize.worker.js"},"webp.worker.js":{package:"@squoosh-kit/webp",specifier:"webp.worker.js"}},K=Y[L];if(!K)throw Error(`Unknown worker: ${L}. Supported workers: ${Object.keys(Y).join(", ")}`);try{if(typeof window<"u"){let Q=K.package.split("/")[1],V=L.replace(".js",".browser.mjs"),Z=[`../../${Q}/dist/${V}`,`../../../node_modules/@squoosh-kit/${Q}/dist/${V}`,`../../../${Q}/dist/${V}`],$=null;for(let D of Z)try{let _=new URL(D,import.meta.url);return new Worker(_,{type:"module"})}catch(_){$=_ instanceof Error?_:Error(String(_))}if($)throw $;throw Error(`Could not resolve worker ${L} using any available path strategy`)}let J=U()?".bun.js":".node.mjs",G=L.replace(".js",""),X=K.package.includes("resize")?`../../resize/src/${G}.ts`:`../../webp/src/${G}.ts`;try{return new Worker(new URL(X,import.meta.url),{type:"module"})}catch{let Q=K.package.includes("resize")?`../../resize/dist/${G}.${J.slice(1)}`:`../../webp/dist/${G}.${J.slice(1)}`;try{return new Worker(new URL(Q,import.meta.url),{type:"module"})}catch{if(typeof import.meta.resolve==="function")try{let V=import.meta.resolve(`${K.package}/${K.specifier}`);return new Worker(V,{type:"module"})}catch{}}}throw Error(`Failed to create worker from ${L}. Tried TypeScript source, dist output, and import.meta.resolve. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`)}catch(J){let G=J instanceof Error?J.message:String(J);throw Error(`Failed to create worker from ${L}: ${G}. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed. If you're using Vite, ensure the worker files are not being optimized as dependencies.`)}}function I(H,L=1e4){return new Promise((Y,K)=>{let J=setTimeout(()=>{K(Error(`Worker initialization timeout after ${L}ms. Worker file: ${H}`))},L),G;try{G=q(H)}catch(Z){clearTimeout(J),K(Z);return}let X=(Z)=>{if(Z.data?.type==="worker:ready")clearTimeout(J),G.removeEventListener("message",X),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),Y(G)},Q=(Z)=>{clearTimeout(J),G.removeEventListener("message",X),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker failed to start: ${Z?.message||"Unknown error"}. Worker file: ${H}`))},V=()=>{clearTimeout(J),G.removeEventListener("message",X),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker message error during initialization. Worker file: ${H}`))};G.addEventListener("message",X),G.addEventListener("error",Q),G.addEventListener("messageerror",V),G.postMessage({type:"worker:ping"})})}class B{async resize(H,L,Y){let J=(await import("./resize.worker.browser.mjs")).resizeClient;return J(H,L,Y)}async terminate(){}}class P{worker=null;workerReady=null;async getWorker(){if(!this.worker){if(!this.workerReady)this.workerReady=this.createWorker();this.worker=await this.workerReady}return this.worker}async createWorker(){return I("resize.worker")}async resize(H,L,Y){let K=await this.getWorker();S(H);try{return await A(K,"resize:run",{image:H,options:L},Y)}catch(J){throw console.error("Resize error:",J),J}}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function j(H){return H==="client"?new B:new P}export{j as createBridge};
2
2
  export{j as a};
3
3
 
4
- //# debugId=C9A94145FCFFFCD664756E2164756E21
4
+ //# debugId=F69F5BE7F3D6B26464756E2164756E21
@@ -4,10 +4,10 @@
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
- "/**\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\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, constructs absolute URLs using the package.json exports field\n * and import.meta.url to ensure compatibility with Vite and deployed environments.\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(workerFilename: string): 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, construct the URL carefully\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 // When in a browser, we're running bundled code where import.meta.url is the bundle URL\n // We need to construct a path that works with the npm package structure\n // The key insight is that after Vite bundling, the actual resolved paths may vary\n\n let lastError: Error | null = null;\n\n // Strategy 1: Use import.meta.url-relative paths\n // This is the most reliable approach and works in both dev and production\n const pathStrategies = [\n // Deployed npm structure (most common for production Vite apps)\n `../../../node_modules/@squoosh-kit/${packageName}/dist/${workerFile}`,\n // Alternative deployed structure (flattened node_modules)\n `../../../${packageName}/dist/${workerFile}`,\n // Monorepo development structure\n `../../${packageName}/dist/${workerFile}`,\n ];\n\n for (const relPath of pathStrategies) {\n try {\n const workerUrl = new URL(relPath, import.meta.url);\n return new Worker(workerUrl, {\n type: 'module',\n });\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n // Continue to next strategy\n }\n }\n\n // Strategy 2: Try absolute paths that might work in some Vite configurations\n try {\n const absolutePaths = [\n `/node_modules/@squoosh-kit/${packageName}/dist/${workerFile}`,\n `/@squoosh-kit/${packageName}/dist/${workerFile}`,\n ];\n\n for (const path of absolutePaths) {\n try {\n const worker = new Worker(path, { type: 'module' });\n return worker;\n } catch {\n // Continue to next path\n }\n }\n } catch {\n // Continue to next strategy\n }\n\n // If all strategies failed, provide helpful error\n if (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 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 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 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 and properly configured in your bundler. ` +\n `If you're using Vite, add this to your vite.config.ts: ` +\n `{ ssr: { noExternal: ['@squoosh-kit/resize', '@squoosh-kit/webp'] } }`\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 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);\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",
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\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(workerFilename: string): 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 // 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 try {\n const workerUrl = new URL(relPath, import.meta.url);\n return new Worker(workerUrl, {\n type: 'module',\n });\n } catch (error) {\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 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 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 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 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 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);\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
8
  "/**\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\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\n private async getWorker(): Promise<Worker> {\n if (!this.worker) {\n if (!this.workerReady) {\n this.workerReady = this.createWorker();\n }\n this.worker = await this.workerReady;\n }\n return this.worker;\n }\n\n private async createWorker(): Promise<Worker> {\n // Use the centralized worker helper for robust path resolution\n return createReadyWorker('resize.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(mode: 'worker' | 'client'): ResizeBridge {\n return mode === 'client'\n ? new ResizeClientBridge()\n : new ResizeWorkerBridge();\n}\n"
9
9
  ],
10
- "mappings": "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",
11
- "debugId": "C9A94145FCFFFCD664756E2164756E21",
10
+ "mappings": "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",
11
+ "debugId": "F69F5BE7F3D6B26464756E2164756E21",
12
12
  "names": []
13
13
  }
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{b as S}from"./chunk-q0apy7nk.js";import{d as R,e as T}from"./chunk-8y42hv65.js";function U(){return typeof Bun<"u"}var W=0;async function A(H,L,Z,K,J){return new Promise((G,Y)=>{let Q=++W;if(K?.aborted){Y(new DOMException("Aborted","AbortError"));return}let V=(O)=>{let D=O.data;if(D.id!==Q)return;if($(),D.ok&&D.data!==void 0)G(D.data);else Y(Error(D.error||"Unknown worker error"))},X=(O)=>{$(),Y(Error(`Worker error: ${O.message}`))},x=()=>{$(),Y(new DOMException("Aborted","AbortError"))},$=()=>{H.removeEventListener("message",V),H.removeEventListener("error",X),K?.removeEventListener("abort",x)};H.addEventListener("message",V),H.addEventListener("error",X),K?.addEventListener("abort",x);let _={type:L,id:Q,payload:Z};if(J&&J.length>0)H.postMessage(_,J);else H.postMessage(_)})}function q(H){let L=H.endsWith(".js")?H:`${H}.js`,Z={"resize.worker.js":{package:"@squoosh-kit/resize",specifier:"resize.worker.js"},"webp.worker.js":{package:"@squoosh-kit/webp",specifier:"webp.worker.js"}},K=Z[L];if(!K)throw Error(`Unknown worker: ${L}. Supported workers: ${Object.keys(Z).join(", ")}`);try{if(typeof window<"u"){let Q=K.package.split("/")[1],V=L.replace(".js",".browser.mjs"),X=null,x=[`../../../node_modules/@squoosh-kit/${Q}/dist/${V}`,`../../../${Q}/dist/${V}`,`../../${Q}/dist/${V}`];for(let $ of x)try{let _=new URL($,import.meta.url);return new Worker(_,{type:"module"})}catch(_){X=_ instanceof Error?_:Error(String(_))}try{let $=[`/node_modules/@squoosh-kit/${Q}/dist/${V}`,`/@squoosh-kit/${Q}/dist/${V}`];for(let _ of $)try{return new Worker(_,{type:"module"})}catch{}}catch{}if(X)throw X;throw Error(`Could not resolve worker ${L} using any available path strategy`)}let J=U()?".bun.js":".node.mjs",G=L.replace(".js",""),Y=K.package.includes("resize")?`../../resize/src/${G}.ts`:`../../webp/src/${G}.ts`;try{return new Worker(new URL(Y,import.meta.url),{type:"module"})}catch{let Q=K.package.includes("resize")?`../../resize/dist/${G}.${J.slice(1)}`:`../../webp/dist/${G}.${J.slice(1)}`;try{return new Worker(new URL(Q,import.meta.url),{type:"module"})}catch{if(typeof import.meta.resolve==="function")try{let V=import.meta.resolve(`${K.package}/${K.specifier}`);return new Worker(V,{type:"module"})}catch{}}}throw Error(`Failed to create worker from ${L}. Tried TypeScript source, dist output, and import.meta.resolve. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`)}catch(J){let G=J instanceof Error?J.message:String(J);throw Error(`Failed to create worker from ${L}: ${G}. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed and properly configured in your bundler. If you're using Vite, add this to your vite.config.ts: { ssr: { noExternal: ['@squoosh-kit/resize', '@squoosh-kit/webp'] } }`)}}function I(H,L=1e4){return new Promise((Z,K)=>{let J=setTimeout(()=>{K(Error(`Worker initialization timeout after ${L}ms. Worker file: ${H}`))},L),G;try{G=q(H)}catch(X){clearTimeout(J),K(X);return}let Y=(X)=>{if(X.data?.type==="worker:ready")clearTimeout(J),G.removeEventListener("message",Y),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),Z(G)},Q=(X)=>{clearTimeout(J),G.removeEventListener("message",Y),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker failed to start: ${X?.message||"Unknown error"}. Worker file: ${H}`))},V=()=>{clearTimeout(J),G.removeEventListener("message",Y),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker message error during initialization. Worker file: ${H}`))};G.addEventListener("message",Y),G.addEventListener("error",Q),G.addEventListener("messageerror",V),G.postMessage({type:"worker:ping"})})}class B{async resize(H,L,Z){let J=(await import("./resize.worker.bun.js")).resizeClient;return J(H,L,Z)}async terminate(){}}class P{worker=null;workerReady=null;async getWorker(){if(!this.worker){if(!this.workerReady)this.workerReady=this.createWorker();this.worker=await this.workerReady}return this.worker}async createWorker(){return I("resize.worker")}async resize(H,L,Z){let K=await this.getWorker();S(H);try{return await A(K,"resize:run",{image:H,options:L},Z)}catch(J){throw console.error("Resize error:",J),J}}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function j(H){return H==="client"?new B:new P}export{j as createBridge};
2
+ import{b as S}from"./chunk-q0apy7nk.js";import{d as R,e as T}from"./chunk-8y42hv65.js";function U(){return typeof Bun<"u"}var W=0;async function A(H,L,Y,K,J){return new Promise((G,X)=>{let Q=++W;if(K?.aborted){X(new DOMException("Aborted","AbortError"));return}let V=(O)=>{let x=O.data;if(x.id!==Q)return;if(D(),x.ok&&x.data!==void 0)G(x.data);else X(Error(x.error||"Unknown worker error"))},Z=(O)=>{D(),X(Error(`Worker error: ${O.message}`))},$=()=>{D(),X(new DOMException("Aborted","AbortError"))},D=()=>{H.removeEventListener("message",V),H.removeEventListener("error",Z),K?.removeEventListener("abort",$)};H.addEventListener("message",V),H.addEventListener("error",Z),K?.addEventListener("abort",$);let _={type:L,id:Q,payload:Y};if(J&&J.length>0)H.postMessage(_,J);else H.postMessage(_)})}function q(H){let L=H.endsWith(".js")?H:`${H}.js`,Y={"resize.worker.js":{package:"@squoosh-kit/resize",specifier:"resize.worker.js"},"webp.worker.js":{package:"@squoosh-kit/webp",specifier:"webp.worker.js"}},K=Y[L];if(!K)throw Error(`Unknown worker: ${L}. Supported workers: ${Object.keys(Y).join(", ")}`);try{if(typeof window<"u"){let Q=K.package.split("/")[1],V=L.replace(".js",".browser.mjs"),Z=[`../../${Q}/dist/${V}`,`../../../node_modules/@squoosh-kit/${Q}/dist/${V}`,`../../../${Q}/dist/${V}`],$=null;for(let D of Z)try{let _=new URL(D,import.meta.url);return new Worker(_,{type:"module"})}catch(_){$=_ instanceof Error?_:Error(String(_))}if($)throw $;throw Error(`Could not resolve worker ${L} using any available path strategy`)}let J=U()?".bun.js":".node.mjs",G=L.replace(".js",""),X=K.package.includes("resize")?`../../resize/src/${G}.ts`:`../../webp/src/${G}.ts`;try{return new Worker(new URL(X,import.meta.url),{type:"module"})}catch{let Q=K.package.includes("resize")?`../../resize/dist/${G}.${J.slice(1)}`:`../../webp/dist/${G}.${J.slice(1)}`;try{return new Worker(new URL(Q,import.meta.url),{type:"module"})}catch{if(typeof import.meta.resolve==="function")try{let V=import.meta.resolve(`${K.package}/${K.specifier}`);return new Worker(V,{type:"module"})}catch{}}}throw Error(`Failed to create worker from ${L}. Tried TypeScript source, dist output, and import.meta.resolve. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`)}catch(J){let G=J instanceof Error?J.message:String(J);throw Error(`Failed to create worker from ${L}: ${G}. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed. If you're using Vite, ensure the worker files are not being optimized as dependencies.`)}}function I(H,L=1e4){return new Promise((Y,K)=>{let J=setTimeout(()=>{K(Error(`Worker initialization timeout after ${L}ms. Worker file: ${H}`))},L),G;try{G=q(H)}catch(Z){clearTimeout(J),K(Z);return}let X=(Z)=>{if(Z.data?.type==="worker:ready")clearTimeout(J),G.removeEventListener("message",X),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),Y(G)},Q=(Z)=>{clearTimeout(J),G.removeEventListener("message",X),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker failed to start: ${Z?.message||"Unknown error"}. Worker file: ${H}`))},V=()=>{clearTimeout(J),G.removeEventListener("message",X),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker message error during initialization. Worker file: ${H}`))};G.addEventListener("message",X),G.addEventListener("error",Q),G.addEventListener("messageerror",V),G.postMessage({type:"worker:ping"})})}class B{async resize(H,L,Y){let J=(await import("./resize.worker.bun.js")).resizeClient;return J(H,L,Y)}async terminate(){}}class P{worker=null;workerReady=null;async getWorker(){if(!this.worker){if(!this.workerReady)this.workerReady=this.createWorker();this.worker=await this.workerReady}return this.worker}async createWorker(){return I("resize.worker")}async resize(H,L,Y){let K=await this.getWorker();S(H);try{return await A(K,"resize:run",{image:H,options:L},Y)}catch(J){throw console.error("Resize error:",J),J}}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function j(H){return H==="client"?new B:new P}export{j as createBridge};
3
3
  export{j as a};
4
4
 
5
- //# debugId=4EE0E4729C7F07B564756E2164756E21
5
+ //# debugId=89CE101D993751AD64756E2164756E21
@@ -4,10 +4,10 @@
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
- "/**\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\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, constructs absolute URLs using the package.json exports field\n * and import.meta.url to ensure compatibility with Vite and deployed environments.\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(workerFilename: string): 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, construct the URL carefully\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 // When in a browser, we're running bundled code where import.meta.url is the bundle URL\n // We need to construct a path that works with the npm package structure\n // The key insight is that after Vite bundling, the actual resolved paths may vary\n\n let lastError: Error | null = null;\n\n // Strategy 1: Use import.meta.url-relative paths\n // This is the most reliable approach and works in both dev and production\n const pathStrategies = [\n // Deployed npm structure (most common for production Vite apps)\n `../../../node_modules/@squoosh-kit/${packageName}/dist/${workerFile}`,\n // Alternative deployed structure (flattened node_modules)\n `../../../${packageName}/dist/${workerFile}`,\n // Monorepo development structure\n `../../${packageName}/dist/${workerFile}`,\n ];\n\n for (const relPath of pathStrategies) {\n try {\n const workerUrl = new URL(relPath, import.meta.url);\n return new Worker(workerUrl, {\n type: 'module',\n });\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n // Continue to next strategy\n }\n }\n\n // Strategy 2: Try absolute paths that might work in some Vite configurations\n try {\n const absolutePaths = [\n `/node_modules/@squoosh-kit/${packageName}/dist/${workerFile}`,\n `/@squoosh-kit/${packageName}/dist/${workerFile}`,\n ];\n\n for (const path of absolutePaths) {\n try {\n const worker = new Worker(path, { type: 'module' });\n return worker;\n } catch {\n // Continue to next path\n }\n }\n } catch {\n // Continue to next strategy\n }\n\n // If all strategies failed, provide helpful error\n if (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 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 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 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 and properly configured in your bundler. ` +\n `If you're using Vite, add this to your vite.config.ts: ` +\n `{ ssr: { noExternal: ['@squoosh-kit/resize', '@squoosh-kit/webp'] } }`\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 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);\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",
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\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(workerFilename: string): 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 // 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 try {\n const workerUrl = new URL(relPath, import.meta.url);\n return new Worker(workerUrl, {\n type: 'module',\n });\n } catch (error) {\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 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 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 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 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 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);\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
8
  "/**\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\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\n private async getWorker(): Promise<Worker> {\n if (!this.worker) {\n if (!this.workerReady) {\n this.workerReady = this.createWorker();\n }\n this.worker = await this.workerReady;\n }\n return this.worker;\n }\n\n private async createWorker(): Promise<Worker> {\n // Use the centralized worker helper for robust path resolution\n return createReadyWorker('resize.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(mode: 'worker' | 'client'): ResizeBridge {\n return mode === 'client'\n ? new ResizeClientBridge()\n : new ResizeWorkerBridge();\n}\n"
9
9
  ],
10
- "mappings": "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",
11
- "debugId": "4EE0E4729C7F07B564756E2164756E21",
10
+ "mappings": "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",
11
+ "debugId": "89CE101D993751AD64756E2164756E21",
12
12
  "names": []
13
13
  }
@@ -1,3 +1,3 @@
1
- var C={};b(C,{createBridge:()=>y});module.exports=T(C);function U(){return typeof Bun<"u"}var W=0;async function A(H,L,Z,K,J){return new Promise((G,Y)=>{let Q=++W;if(K?.aborted){Y(new DOMException("Aborted","AbortError"));return}let V=(O)=>{let D=O.data;if(D.id!==Q)return;if($(),D.ok&&D.data!==void 0)G(D.data);else Y(Error(D.error||"Unknown worker error"))},X=(O)=>{$(),Y(Error(`Worker error: ${O.message}`))},x=()=>{$(),Y(new DOMException("Aborted","AbortError"))},$=()=>{H.removeEventListener("message",V),H.removeEventListener("error",X),K?.removeEventListener("abort",x)};H.addEventListener("message",V),H.addEventListener("error",X),K?.addEventListener("abort",x);let _={type:L,id:Q,payload:Z};if(J&&J.length>0)H.postMessage(_,J);else H.postMessage(_)})}function q(H){let L=H.endsWith(".js")?H:`${H}.js`,Z={"resize.worker.js":{package:"@squoosh-kit/resize",specifier:"resize.worker.js"},"webp.worker.js":{package:"@squoosh-kit/webp",specifier:"webp.worker.js"}},K=Z[L];if(!K)throw Error(`Unknown worker: ${L}. Supported workers: ${Object.keys(Z).join(", ")}`);try{if(typeof window<"u"){let Q=K.package.split("/")[1],V=L.replace(".js",".browser.mjs"),X=null,x=[`../../../node_modules/@squoosh-kit/${Q}/dist/${V}`,`../../../${Q}/dist/${V}`,`../../${Q}/dist/${V}`];for(let $ of x)try{let _=new URL($,"file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts");return new Worker(_,{type:"module"})}catch(_){X=_ instanceof Error?_:Error(String(_))}try{let $=[`/node_modules/@squoosh-kit/${Q}/dist/${V}`,`/@squoosh-kit/${Q}/dist/${V}`];for(let _ of $)try{return new Worker(_,{type:"module"})}catch{}}catch{}if(X)throw X;throw Error(`Could not resolve worker ${L} using any available path strategy`)}let J=U()?".bun.js":".node.mjs",G=L.replace(".js",""),Y=K.package.includes("resize")?`../../resize/src/${G}.ts`:`../../webp/src/${G}.ts`;try{return new Worker(new URL(Y,"file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts"),{type:"module"})}catch{let Q=K.package.includes("resize")?`../../resize/dist/${G}.${J.slice(1)}`:`../../webp/dist/${G}.${J.slice(1)}`;try{return new Worker(new URL(Q,"file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts"),{type:"module"})}catch{if(typeof import.meta.resolve==="function")try{let V=import.meta.resolve(`${K.package}/${K.specifier}`);return new Worker(V,{type:"module"})}catch{}}}throw Error(`Failed to create worker from ${L}. Tried TypeScript source, dist output, and import.meta.resolve. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`)}catch(J){let G=J instanceof Error?J.message:String(J);throw Error(`Failed to create worker from ${L}: ${G}. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed and properly configured in your bundler. If you're using Vite, add this to your vite.config.ts: { ssr: { noExternal: ['@squoosh-kit/resize', '@squoosh-kit/webp'] } }`)}}function I(H,L=1e4){return new Promise((Z,K)=>{let J=setTimeout(()=>{K(Error(`Worker initialization timeout after ${L}ms. Worker file: ${H}`))},L),G;try{G=q(H)}catch(X){clearTimeout(J),K(X);return}let Y=(X)=>{if(X.data?.type==="worker:ready")clearTimeout(J),G.removeEventListener("message",Y),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),Z(G)},Q=(X)=>{clearTimeout(J),G.removeEventListener("message",Y),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker failed to start: ${X?.message||"Unknown error"}. Worker file: ${H}`))},V=()=>{clearTimeout(J),G.removeEventListener("message",Y),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker message error during initialization. Worker file: ${H}`))};G.addEventListener("message",Y),G.addEventListener("error",Q),G.addEventListener("messageerror",V),G.postMessage({type:"worker:ping"})})}class B{async resize(H,L,Z){let J=(await import("./resize.worker.node.cjs")).resizeClient;return J(H,L,Z)}async terminate(){}}class P{worker=null;workerReady=null;async getWorker(){if(!this.worker){if(!this.workerReady)this.workerReady=this.createWorker();this.worker=await this.workerReady}return this.worker}async createWorker(){return I("resize.worker")}async resize(H,L,Z){let K=await this.getWorker();S(H);try{return await A(K,"resize:run",{image:H,options:L},Z)}catch(J){throw console.error("Resize error:",J),J}}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function y(H){return H==="client"?new B:new P}
1
+ var C={};b(C,{createBridge:()=>y});module.exports=T(C);function U(){return typeof Bun<"u"}var W=0;async function A(H,L,Y,K,J){return new Promise((G,X)=>{let Q=++W;if(K?.aborted){X(new DOMException("Aborted","AbortError"));return}let V=(O)=>{let x=O.data;if(x.id!==Q)return;if(D(),x.ok&&x.data!==void 0)G(x.data);else X(Error(x.error||"Unknown worker error"))},Z=(O)=>{D(),X(Error(`Worker error: ${O.message}`))},$=()=>{D(),X(new DOMException("Aborted","AbortError"))},D=()=>{H.removeEventListener("message",V),H.removeEventListener("error",Z),K?.removeEventListener("abort",$)};H.addEventListener("message",V),H.addEventListener("error",Z),K?.addEventListener("abort",$);let _={type:L,id:Q,payload:Y};if(J&&J.length>0)H.postMessage(_,J);else H.postMessage(_)})}function q(H){let L=H.endsWith(".js")?H:`${H}.js`,Y={"resize.worker.js":{package:"@squoosh-kit/resize",specifier:"resize.worker.js"},"webp.worker.js":{package:"@squoosh-kit/webp",specifier:"webp.worker.js"}},K=Y[L];if(!K)throw Error(`Unknown worker: ${L}. Supported workers: ${Object.keys(Y).join(", ")}`);try{if(typeof window<"u"){let Q=K.package.split("/")[1],V=L.replace(".js",".browser.mjs"),Z=[`../../${Q}/dist/${V}`,`../../../node_modules/@squoosh-kit/${Q}/dist/${V}`,`../../../${Q}/dist/${V}`],$=null;for(let D of Z)try{let _=new URL(D,"file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts");return new Worker(_,{type:"module"})}catch(_){$=_ instanceof Error?_:Error(String(_))}if($)throw $;throw Error(`Could not resolve worker ${L} using any available path strategy`)}let J=U()?".bun.js":".node.mjs",G=L.replace(".js",""),X=K.package.includes("resize")?`../../resize/src/${G}.ts`:`../../webp/src/${G}.ts`;try{return new Worker(new URL(X,"file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts"),{type:"module"})}catch{let Q=K.package.includes("resize")?`../../resize/dist/${G}.${J.slice(1)}`:`../../webp/dist/${G}.${J.slice(1)}`;try{return new Worker(new URL(Q,"file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts"),{type:"module"})}catch{if(typeof import.meta.resolve==="function")try{let V=import.meta.resolve(`${K.package}/${K.specifier}`);return new Worker(V,{type:"module"})}catch{}}}throw Error(`Failed to create worker from ${L}. Tried TypeScript source, dist output, and import.meta.resolve. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`)}catch(J){let G=J instanceof Error?J.message:String(J);throw Error(`Failed to create worker from ${L}: ${G}. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed. If you're using Vite, ensure the worker files are not being optimized as dependencies.`)}}function I(H,L=1e4){return new Promise((Y,K)=>{let J=setTimeout(()=>{K(Error(`Worker initialization timeout after ${L}ms. Worker file: ${H}`))},L),G;try{G=q(H)}catch(Z){clearTimeout(J),K(Z);return}let X=(Z)=>{if(Z.data?.type==="worker:ready")clearTimeout(J),G.removeEventListener("message",X),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),Y(G)},Q=(Z)=>{clearTimeout(J),G.removeEventListener("message",X),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker failed to start: ${Z?.message||"Unknown error"}. Worker file: ${H}`))},V=()=>{clearTimeout(J),G.removeEventListener("message",X),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker message error during initialization. Worker file: ${H}`))};G.addEventListener("message",X),G.addEventListener("error",Q),G.addEventListener("messageerror",V),G.postMessage({type:"worker:ping"})})}class B{async resize(H,L,Y){let J=(await import("./resize.worker.node.cjs")).resizeClient;return J(H,L,Y)}async terminate(){}}class P{worker=null;workerReady=null;async getWorker(){if(!this.worker){if(!this.workerReady)this.workerReady=this.createWorker();this.worker=await this.workerReady}return this.worker}async createWorker(){return I("resize.worker")}async resize(H,L,Y){let K=await this.getWorker();S(H);try{return await A(K,"resize:run",{image:H,options:L},Y)}catch(J){throw console.error("Resize error:",J),J}}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function y(H){return H==="client"?new B:new P}
2
2
 
3
- //# debugId=6C9957CC1B9216F964756E2164756E21
3
+ //# debugId=5EAE7AC08564EFED64756E2164756E21
@@ -4,10 +4,10 @@
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
- "/**\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\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, constructs absolute URLs using the package.json exports field\n * and import.meta.url to ensure compatibility with Vite and deployed environments.\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(workerFilename: string): 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, construct the URL carefully\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 // When in a browser, we're running bundled code where import.meta.url is the bundle URL\n // We need to construct a path that works with the npm package structure\n // The key insight is that after Vite bundling, the actual resolved paths may vary\n\n let lastError: Error | null = null;\n\n // Strategy 1: Use import.meta.url-relative paths\n // This is the most reliable approach and works in both dev and production\n const pathStrategies = [\n // Deployed npm structure (most common for production Vite apps)\n `../../../node_modules/@squoosh-kit/${packageName}/dist/${workerFile}`,\n // Alternative deployed structure (flattened node_modules)\n `../../../${packageName}/dist/${workerFile}`,\n // Monorepo development structure\n `../../${packageName}/dist/${workerFile}`,\n ];\n\n for (const relPath of pathStrategies) {\n try {\n const workerUrl = new URL(relPath, import.meta.url);\n return new Worker(workerUrl, {\n type: 'module',\n });\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n // Continue to next strategy\n }\n }\n\n // Strategy 2: Try absolute paths that might work in some Vite configurations\n try {\n const absolutePaths = [\n `/node_modules/@squoosh-kit/${packageName}/dist/${workerFile}`,\n `/@squoosh-kit/${packageName}/dist/${workerFile}`,\n ];\n\n for (const path of absolutePaths) {\n try {\n const worker = new Worker(path, { type: 'module' });\n return worker;\n } catch {\n // Continue to next path\n }\n }\n } catch {\n // Continue to next strategy\n }\n\n // If all strategies failed, provide helpful error\n if (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 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 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 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 and properly configured in your bundler. ` +\n `If you're using Vite, add this to your vite.config.ts: ` +\n `{ ssr: { noExternal: ['@squoosh-kit/resize', '@squoosh-kit/webp'] } }`\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 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);\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",
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\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(workerFilename: string): 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 // 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 try {\n const workerUrl = new URL(relPath, import.meta.url);\n return new Worker(workerUrl, {\n type: 'module',\n });\n } catch (error) {\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 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 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 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 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 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);\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
8
  "/**\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\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\n private async getWorker(): Promise<Worker> {\n if (!this.worker) {\n if (!this.workerReady) {\n this.workerReady = this.createWorker();\n }\n this.worker = await this.workerReady;\n }\n return this.worker;\n }\n\n private async createWorker(): Promise<Worker> {\n // Use the centralized worker helper for robust path resolution\n return createReadyWorker('resize.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(mode: 'worker' | 'client'): ResizeBridge {\n return mode === 'client'\n ? new ResizeClientBridge()\n : new ResizeWorkerBridge();\n}\n"
9
9
  ],
10
- "mappings": "uDAyBO,SAAS,CAAK,EAAY,CAC/B,OAAO,OAAO,IAAQ,ICTxB,IAAI,EAAY,EAYhB,eAAsB,CAA+B,CACnD,EACA,EACA,EACA,EACA,EACoB,CACpB,OAAO,IAAI,QAAmB,CAAC,EAAS,IAAW,CACjD,IAAM,EAAK,EAAE,EAGb,GAAI,GAAQ,QAAS,CACnB,EAAO,IAAI,aAAa,UAAW,YAAY,CAAC,EAChD,OAGF,IAAM,EAAgB,CAAC,IAAwB,CAC7C,IAAM,EAAW,EAAM,KACvB,GAAI,EAAS,KAAO,EAAI,OAIxB,GAFA,EAAQ,EAEJ,EAAS,IAAM,EAAS,OAAS,OACnC,EAAQ,EAAS,IAAI,EAErB,OAAW,MAAM,EAAS,OAAS,sBAAsB,CAAC,GAIxD,EAAc,CAAC,IAAsB,CACzC,EAAQ,EACR,EAAW,MAAM,iBAAiB,EAAM,SAAS,CAAC,GAG9C,EAAc,IAAM,CACxB,EAAQ,EACR,EAAO,IAAI,aAAa,UAAW,YAAY,CAAC,GAG5C,EAAU,IAAM,CACpB,EAAO,oBAAoB,UAAW,CAAa,EACnD,EAAO,oBAAoB,QAAS,CAAW,EAC/C,GAAQ,oBAAoB,QAAS,CAAW,GAIlD,EAAO,iBAAiB,UAAW,CAAa,EAChD,EAAO,iBAAiB,QAAS,CAAW,EAC5C,GAAQ,iBAAiB,QAAS,CAAW,EAG7C,IAAM,EAAmC,CAAE,OAAM,KAAI,SAAQ,EAE7D,GAAI,GAAY,EAAS,OAAS,EAChC,EAAO,YAAY,EAAS,CAAQ,EAEpC,OAAO,YAAY,CAAO,EAE7B,EClEI,SAAS,CAAiB,CAAC,EAAgC,CAEhE,IAAM,EAAiB,EAAe,SAAS,KAAK,EAChD,EACA,GAAG,OAGD,EAAoE,CACxE,mBAAoB,CAClB,QAAS,sBACT,UAAW,kBACb,EACA,iBAAkB,CAChB,QAAS,oBACT,UAAW,gBACb,CACF,EAEM,EAAe,EAAU,GAC/B,GAAI,CAAC,EACH,MAAU,MACR,mBAAmB,yBACK,OAAO,KAAK,CAAS,EAAE,KAAK,IAAI,GAC1D,EAGF,GAAI,CAEF,GAAI,OAAO,OAAW,IAAa,CACjC,IAAM,EAAc,EAAa,QAAQ,MAAM,GAAG,EAAE,GAC9C,EAAa,EAAe,QAAQ,MAAO,cAAc,EAM3D,EAA0B,KAIxB,EAAiB,CAErB,sCAAsC,UAAoB,IAE1D,YAAY,UAAoB,IAEhC,SAAS,UAAoB,GAC/B,EAEA,QAAW,KAAW,EACpB,GAAI,CACF,IAAM,EAAY,IAAI,IAAI,EAAqB,6EAAG,EAClD,OAAO,IAAI,OAAO,EAAW,CAC3B,KAAM,QACR,CAAC,EACD,MAAO,EAAO,CACd,EAAY,aAAiB,MAAQ,EAAY,MAAM,OAAO,CAAK,CAAC,EAMxE,GAAI,CACF,IAAM,EAAgB,CACpB,8BAA8B,UAAoB,IAClD,iBAAiB,UAAoB,GACvC,EAEA,QAAW,KAAQ,EACjB,GAAI,CAEF,OADe,IAAI,OAAO,EAAM,CAAE,KAAM,QAAS,CAAC,EAElD,KAAM,GAIV,KAAM,EAKR,GAAI,EACF,MAAM,EAER,MAAU,MACR,4BAA4B,qCAC9B,EAIF,IAAM,EAAc,EAAM,EAAI,UAAY,YACpC,EAAW,EAAe,QAAQ,MAAO,EAAE,EAG3C,EAAa,EAAa,QAAQ,SAAS,QAAQ,EACrD,oBAAoB,OACpB,kBAAkB,OACtB,GAAI,CACF,OAAO,IAAI,OAAO,IAAI,IAAI,EAAwB,6EAAG,EAAG,CACtD,KAAM,QACR,CAAC,EACD,KAAM,CAEN,IAAM,EAAc,EAAa,QAAQ,SAAS,QAAQ,EACtD,qBAAqB,KAAY,EAAY,MAAM,CAAC,IACpD,mBAAmB,KAAY,EAAY,MAAM,CAAC,IACtD,GAAI,CACF,OAAO,IAAI,OAAO,IAAI,IAAI,EAAyB,6EAAG,EAAG,CACvD,KAAM,QACR,CAAC,EACD,KAAM,CAEN,GAAI,OAAO,YAAY,UAAY,WACjC,GAAI,CACF,IAAM,EAAW,YAAY,QAC3B,GAAG,EAAa,WAAW,EAAa,WAC1C,EACA,OAAO,IAAI,OAAO,EAAU,CAAE,KAAM,QAAS,CAAC,EAC9C,KAAM,IAQd,MAAU,MACR,gCAAgC,gJAGlC,EACA,MAAO,EAAO,CACd,IAAM,EAAe,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,EAC1E,MAAU,MACR,gCAAgC,MAAmB,sPAIrD,GAeG,SAAS,CAAiB,CAC/B,EACA,EAAoB,IACH,CACjB,OAAO,IAAI,QAAQ,CAAC,EAAS,IAAW,CACtC,IAAM,EAAU,WAAW,IAAM,CAC/B,EACM,MACF,uCAAuC,qBAA6B,GACtE,CACF,GACC,CAAS,EAER,EACJ,GAAI,CACF,EAAS,EAAkB,CAAc,EACzC,MAAO,EAAO,CACd,aAAa,CAAO,EACpB,EAAO,CAAK,EACZ,OAGF,IAAM,EAAgB,CAAC,IAAwB,CAC7C,GAAI,EAAM,MAAM,OAAS,eACvB,aAAa,CAAO,EACpB,EAAO,oBAAoB,UAAW,CAAa,EACnD,EAAO,oBAAoB,QAAS,CAAW,EAC/C,EAAO,oBAAoB,eAAgB,CAAkB,EAC7D,EAAQ,CAAM,GAIZ,EAAc,CAAC,IAAsB,CACzC,aAAa,CAAO,EACpB,EAAO,oBAAoB,UAAW,CAAa,EACnD,EAAO,oBAAoB,QAAS,CAAW,EAC/C,EAAO,oBAAoB,eAAgB,CAAkB,EAC7D,EACM,MACF,2BAA2B,GAAO,SAAW,iCAAiC,GAChF,CACF,GAGI,EAAqB,IAAM,CAC/B,aAAa,CAAO,EACpB,EAAO,oBAAoB,UAAW,CAAa,EACnD,EAAO,oBAAoB,QAAS,CAAW,EAC/C,EAAO,oBAAoB,eAAgB,CAAkB,EAC7D,EACM,MACF,4DAA4D,GAC9D,CACF,GAGF,EAAO,iBAAiB,UAAW,CAAa,EAChD,EAAO,iBAAiB,QAAS,CAAW,EAC5C,EAAO,iBAAiB,eAAgB,CAAkB,EAC1D,EAAO,YAAY,CAAE,KAAM,aAAc,CAAC,EAC3C,ECrNH,MAAM,CAA2C,MACzC,OAAM,CACV,EACA,EACA,EACqB,CAGrB,IAAM,GADS,KAAa,qCACA,aAK5B,OAAO,EAAa,EAAO,EAAS,CAAM,OAGtC,UAAS,EAAkB,EAGnC,CAEA,MAAM,CAA2C,CACvC,OAAwB,KACxB,YAAsC,UAEhC,UAAS,EAAoB,CACzC,GAAI,CAAC,KAAK,OAAQ,CAChB,GAAI,CAAC,KAAK,YACR,KAAK,YAAc,KAAK,aAAa,EAEvC,KAAK,OAAS,MAAM,KAAK,YAE3B,OAAO,KAAK,YAGA,aAAY,EAAoB,CAE5C,OAAO,EAAkB,eAAe,OAGpC,OAAM,CACV,EACA,EACA,EACqB,CACrB,IAAM,EAAS,MAAM,KAAK,UAAU,EAEpC,EAAmB,CAAK,EAExB,GAAI,CAMF,OALe,MAAM,EAGnB,EAAQ,aAAc,CAAE,QAAO,SAAQ,EAAG,CAAM,EAGlD,MAAO,EAAO,CAEd,MADA,QAAQ,MAAM,gBAAiB,CAAK,EAC9B,QAIJ,UAAS,EAAkB,CAC/B,GAAI,KAAK,OACP,KAAK,OAAO,UAAU,EACtB,KAAK,OAAS,KACd,KAAK,YAAc,KAGzB,CAEO,SAAS,CAAY,CAAC,EAAyC,CACpE,OAAO,IAAS,SACZ,IAAI,EACJ,IAAI",
11
- "debugId": "6C9957CC1B9216F964756E2164756E21",
10
+ "mappings": "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",
11
+ "debugId": "5EAE7AC08564EFED64756E2164756E21",
12
12
  "names": []
13
13
  }
@@ -1,4 +1,4 @@
1
- import{b as S}from"./chunk-szbj3b6y.js";import{d as R,e as T}from"./chunk-c6cx0d7q.js";function U(){return typeof Bun<"u"}var W=0;async function A(H,L,Z,K,J){return new Promise((G,Y)=>{let Q=++W;if(K?.aborted){Y(new DOMException("Aborted","AbortError"));return}let V=(O)=>{let D=O.data;if(D.id!==Q)return;if($(),D.ok&&D.data!==void 0)G(D.data);else Y(Error(D.error||"Unknown worker error"))},X=(O)=>{$(),Y(Error(`Worker error: ${O.message}`))},x=()=>{$(),Y(new DOMException("Aborted","AbortError"))},$=()=>{H.removeEventListener("message",V),H.removeEventListener("error",X),K?.removeEventListener("abort",x)};H.addEventListener("message",V),H.addEventListener("error",X),K?.addEventListener("abort",x);let _={type:L,id:Q,payload:Z};if(J&&J.length>0)H.postMessage(_,J);else H.postMessage(_)})}function q(H){let L=H.endsWith(".js")?H:`${H}.js`,Z={"resize.worker.js":{package:"@squoosh-kit/resize",specifier:"resize.worker.js"},"webp.worker.js":{package:"@squoosh-kit/webp",specifier:"webp.worker.js"}},K=Z[L];if(!K)throw Error(`Unknown worker: ${L}. Supported workers: ${Object.keys(Z).join(", ")}`);try{if(typeof window<"u"){let Q=K.package.split("/")[1],V=L.replace(".js",".browser.mjs"),X=null,x=[`../../../node_modules/@squoosh-kit/${Q}/dist/${V}`,`../../../${Q}/dist/${V}`,`../../${Q}/dist/${V}`];for(let $ of x)try{let _=new URL($,import.meta.url);return new Worker(_,{type:"module"})}catch(_){X=_ instanceof Error?_:Error(String(_))}try{let $=[`/node_modules/@squoosh-kit/${Q}/dist/${V}`,`/@squoosh-kit/${Q}/dist/${V}`];for(let _ of $)try{return new Worker(_,{type:"module"})}catch{}}catch{}if(X)throw X;throw Error(`Could not resolve worker ${L} using any available path strategy`)}let J=U()?".bun.js":".node.mjs",G=L.replace(".js",""),Y=K.package.includes("resize")?`../../resize/src/${G}.ts`:`../../webp/src/${G}.ts`;try{return new Worker(new URL(Y,import.meta.url),{type:"module"})}catch{let Q=K.package.includes("resize")?`../../resize/dist/${G}.${J.slice(1)}`:`../../webp/dist/${G}.${J.slice(1)}`;try{return new Worker(new URL(Q,import.meta.url),{type:"module"})}catch{if(typeof import.meta.resolve==="function")try{let V=import.meta.resolve(`${K.package}/${K.specifier}`);return new Worker(V,{type:"module"})}catch{}}}throw Error(`Failed to create worker from ${L}. Tried TypeScript source, dist output, and import.meta.resolve. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`)}catch(J){let G=J instanceof Error?J.message:String(J);throw Error(`Failed to create worker from ${L}: ${G}. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed and properly configured in your bundler. If you're using Vite, add this to your vite.config.ts: { ssr: { noExternal: ['@squoosh-kit/resize', '@squoosh-kit/webp'] } }`)}}function I(H,L=1e4){return new Promise((Z,K)=>{let J=setTimeout(()=>{K(Error(`Worker initialization timeout after ${L}ms. Worker file: ${H}`))},L),G;try{G=q(H)}catch(X){clearTimeout(J),K(X);return}let Y=(X)=>{if(X.data?.type==="worker:ready")clearTimeout(J),G.removeEventListener("message",Y),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),Z(G)},Q=(X)=>{clearTimeout(J),G.removeEventListener("message",Y),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker failed to start: ${X?.message||"Unknown error"}. Worker file: ${H}`))},V=()=>{clearTimeout(J),G.removeEventListener("message",Y),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker message error during initialization. Worker file: ${H}`))};G.addEventListener("message",Y),G.addEventListener("error",Q),G.addEventListener("messageerror",V),G.postMessage({type:"worker:ping"})})}class B{async resize(H,L,Z){let J=(await import("./resize.worker.node.mjs")).resizeClient;return J(H,L,Z)}async terminate(){}}class P{worker=null;workerReady=null;async getWorker(){if(!this.worker){if(!this.workerReady)this.workerReady=this.createWorker();this.worker=await this.workerReady}return this.worker}async createWorker(){return I("resize.worker")}async resize(H,L,Z){let K=await this.getWorker();S(H);try{return await A(K,"resize:run",{image:H,options:L},Z)}catch(J){throw console.error("Resize error:",J),J}}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function j(H){return H==="client"?new B:new P}export{j as createBridge};
1
+ import{b as S}from"./chunk-szbj3b6y.js";import{d as R,e as T}from"./chunk-c6cx0d7q.js";function U(){return typeof Bun<"u"}var W=0;async function A(H,L,Y,K,J){return new Promise((G,X)=>{let Q=++W;if(K?.aborted){X(new DOMException("Aborted","AbortError"));return}let V=(O)=>{let x=O.data;if(x.id!==Q)return;if(D(),x.ok&&x.data!==void 0)G(x.data);else X(Error(x.error||"Unknown worker error"))},Z=(O)=>{D(),X(Error(`Worker error: ${O.message}`))},$=()=>{D(),X(new DOMException("Aborted","AbortError"))},D=()=>{H.removeEventListener("message",V),H.removeEventListener("error",Z),K?.removeEventListener("abort",$)};H.addEventListener("message",V),H.addEventListener("error",Z),K?.addEventListener("abort",$);let _={type:L,id:Q,payload:Y};if(J&&J.length>0)H.postMessage(_,J);else H.postMessage(_)})}function q(H){let L=H.endsWith(".js")?H:`${H}.js`,Y={"resize.worker.js":{package:"@squoosh-kit/resize",specifier:"resize.worker.js"},"webp.worker.js":{package:"@squoosh-kit/webp",specifier:"webp.worker.js"}},K=Y[L];if(!K)throw Error(`Unknown worker: ${L}. Supported workers: ${Object.keys(Y).join(", ")}`);try{if(typeof window<"u"){let Q=K.package.split("/")[1],V=L.replace(".js",".browser.mjs"),Z=[`../../${Q}/dist/${V}`,`../../../node_modules/@squoosh-kit/${Q}/dist/${V}`,`../../../${Q}/dist/${V}`],$=null;for(let D of Z)try{let _=new URL(D,import.meta.url);return new Worker(_,{type:"module"})}catch(_){$=_ instanceof Error?_:Error(String(_))}if($)throw $;throw Error(`Could not resolve worker ${L} using any available path strategy`)}let J=U()?".bun.js":".node.mjs",G=L.replace(".js",""),X=K.package.includes("resize")?`../../resize/src/${G}.ts`:`../../webp/src/${G}.ts`;try{return new Worker(new URL(X,import.meta.url),{type:"module"})}catch{let Q=K.package.includes("resize")?`../../resize/dist/${G}.${J.slice(1)}`:`../../webp/dist/${G}.${J.slice(1)}`;try{return new Worker(new URL(Q,import.meta.url),{type:"module"})}catch{if(typeof import.meta.resolve==="function")try{let V=import.meta.resolve(`${K.package}/${K.specifier}`);return new Worker(V,{type:"module"})}catch{}}}throw Error(`Failed to create worker from ${L}. Tried TypeScript source, dist output, and import.meta.resolve. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`)}catch(J){let G=J instanceof Error?J.message:String(J);throw Error(`Failed to create worker from ${L}: ${G}. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed. If you're using Vite, ensure the worker files are not being optimized as dependencies.`)}}function I(H,L=1e4){return new Promise((Y,K)=>{let J=setTimeout(()=>{K(Error(`Worker initialization timeout after ${L}ms. Worker file: ${H}`))},L),G;try{G=q(H)}catch(Z){clearTimeout(J),K(Z);return}let X=(Z)=>{if(Z.data?.type==="worker:ready")clearTimeout(J),G.removeEventListener("message",X),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),Y(G)},Q=(Z)=>{clearTimeout(J),G.removeEventListener("message",X),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker failed to start: ${Z?.message||"Unknown error"}. Worker file: ${H}`))},V=()=>{clearTimeout(J),G.removeEventListener("message",X),G.removeEventListener("error",Q),G.removeEventListener("messageerror",V),K(Error(`Worker message error during initialization. Worker file: ${H}`))};G.addEventListener("message",X),G.addEventListener("error",Q),G.addEventListener("messageerror",V),G.postMessage({type:"worker:ping"})})}class B{async resize(H,L,Y){let J=(await import("./resize.worker.node.mjs")).resizeClient;return J(H,L,Y)}async terminate(){}}class P{worker=null;workerReady=null;async getWorker(){if(!this.worker){if(!this.workerReady)this.workerReady=this.createWorker();this.worker=await this.workerReady}return this.worker}async createWorker(){return I("resize.worker")}async resize(H,L,Y){let K=await this.getWorker();S(H);try{return await A(K,"resize:run",{image:H,options:L},Y)}catch(J){throw console.error("Resize error:",J),J}}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function j(H){return H==="client"?new B:new P}export{j as createBridge};
2
2
  export{j as a};
3
3
 
4
- //# debugId=A27C279AE8EACE4864756E2164756E21
4
+ //# debugId=60401A60185D2B1764756E2164756E21
@@ -4,10 +4,10 @@
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
- "/**\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\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, constructs absolute URLs using the package.json exports field\n * and import.meta.url to ensure compatibility with Vite and deployed environments.\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(workerFilename: string): 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, construct the URL carefully\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 // When in a browser, we're running bundled code where import.meta.url is the bundle URL\n // We need to construct a path that works with the npm package structure\n // The key insight is that after Vite bundling, the actual resolved paths may vary\n\n let lastError: Error | null = null;\n\n // Strategy 1: Use import.meta.url-relative paths\n // This is the most reliable approach and works in both dev and production\n const pathStrategies = [\n // Deployed npm structure (most common for production Vite apps)\n `../../../node_modules/@squoosh-kit/${packageName}/dist/${workerFile}`,\n // Alternative deployed structure (flattened node_modules)\n `../../../${packageName}/dist/${workerFile}`,\n // Monorepo development structure\n `../../${packageName}/dist/${workerFile}`,\n ];\n\n for (const relPath of pathStrategies) {\n try {\n const workerUrl = new URL(relPath, import.meta.url);\n return new Worker(workerUrl, {\n type: 'module',\n });\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n // Continue to next strategy\n }\n }\n\n // Strategy 2: Try absolute paths that might work in some Vite configurations\n try {\n const absolutePaths = [\n `/node_modules/@squoosh-kit/${packageName}/dist/${workerFile}`,\n `/@squoosh-kit/${packageName}/dist/${workerFile}`,\n ];\n\n for (const path of absolutePaths) {\n try {\n const worker = new Worker(path, { type: 'module' });\n return worker;\n } catch {\n // Continue to next path\n }\n }\n } catch {\n // Continue to next strategy\n }\n\n // If all strategies failed, provide helpful error\n if (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 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 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 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 and properly configured in your bundler. ` +\n `If you're using Vite, add this to your vite.config.ts: ` +\n `{ ssr: { noExternal: ['@squoosh-kit/resize', '@squoosh-kit/webp'] } }`\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 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);\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",
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\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(workerFilename: string): 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 // 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 try {\n const workerUrl = new URL(relPath, import.meta.url);\n return new Worker(workerUrl, {\n type: 'module',\n });\n } catch (error) {\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 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 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 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 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 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);\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
8
  "/**\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\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\n private async getWorker(): Promise<Worker> {\n if (!this.worker) {\n if (!this.workerReady) {\n this.workerReady = this.createWorker();\n }\n this.worker = await this.workerReady;\n }\n return this.worker;\n }\n\n private async createWorker(): Promise<Worker> {\n // Use the centralized worker helper for robust path resolution\n return createReadyWorker('resize.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(mode: 'worker' | 'client'): ResizeBridge {\n return mode === 'client'\n ? new ResizeClientBridge()\n : new ResizeWorkerBridge();\n}\n"
9
9
  ],
10
- "mappings": "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",
11
- "debugId": "A27C279AE8EACE4864756E2164756E21",
10
+ "mappings": "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",
11
+ "debugId": "60401A60185D2B1764756E2164756E21",
12
12
  "names": []
13
13
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@squoosh-kit/resize",
3
- "version": "0.0.40",
3
+ "version": "0.0.42",
4
4
  "type": "module",
5
5
  "description": "Image resize module for squoosh-kit.",
6
6
  "author": "Bartosz Nowak <bnowak008@gmail.com>",
@@ -45,6 +45,6 @@
45
45
  "test": "bun test"
46
46
  },
47
47
  "dependencies": {
48
- "@squoosh-kit/runtime": "0.0.39"
48
+ "@squoosh-kit/runtime": "0.0.41"
49
49
  }
50
50
  }