@squoosh-kit/core 0.1.15 → 0.1.17

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.
Files changed (61) hide show
  1. package/dist/chunk-02ytt443.js +5 -0
  2. package/dist/{chunk-cfpkr9nw.js.map → chunk-02ytt443.js.map} +4 -5
  3. package/dist/chunk-14jg2dxs.js +5 -0
  4. package/dist/chunk-14jg2dxs.js.map +10 -0
  5. package/dist/{chunk-kqn499ka.js → chunk-374tq8cw.js} +2 -2
  6. package/dist/chunk-374tq8cw.js.map +13 -0
  7. package/dist/chunk-3rt7m395.js +3 -0
  8. package/dist/{chunk-245sw6kx.js.map → chunk-3rt7m395.js.map} +3 -3
  9. package/dist/chunk-5ap8cyw0.js +4 -0
  10. package/dist/chunk-5ap8cyw0.js.map +13 -0
  11. package/dist/{chunk-kjhvs4qe.js → chunk-69d55ymx.js} +2 -2
  12. package/dist/{chunk-kjhvs4qe.js.map → chunk-69d55ymx.js.map} +3 -3
  13. package/dist/chunk-6d2104pn.js +3 -0
  14. package/dist/{chunk-vk3k7qxb.js.map → chunk-6d2104pn.js.map} +4 -5
  15. package/dist/chunk-btz1s2ws.js +3 -0
  16. package/dist/chunk-btz1s2ws.js.map +10 -0
  17. package/dist/chunk-h7zpk6jq.js +4 -0
  18. package/dist/chunk-h7zpk6jq.js.map +10 -0
  19. package/dist/chunk-mm6wmg56.js +4 -0
  20. package/dist/{chunk-d3fxpzrq.js.map → chunk-mm6wmg56.js.map} +4 -5
  21. package/dist/chunk-p24n653d.js +4 -0
  22. package/dist/{chunk-rta7shf1.js.map → chunk-p24n653d.js.map} +4 -5
  23. package/dist/chunk-rht1286y.js +3 -0
  24. package/dist/chunk-rht1286y.js.map +13 -0
  25. package/dist/chunk-vt6b43b9.js +3 -0
  26. package/dist/chunk-vt6b43b9.js.map +13 -0
  27. package/dist/chunk-yd1vfk89.js +4 -0
  28. package/dist/{chunk-sycf5j9m.js.map → chunk-yd1vfk89.js.map} +3 -3
  29. package/dist/chunk-yv042k8x.js +3 -0
  30. package/dist/{chunk-5d1w8na7.js.map → chunk-yv042k8x.js.map} +3 -3
  31. package/dist/index.browser.mjs +2 -2
  32. package/dist/index.browser.mjs.map +4 -3
  33. package/dist/index.bun.js +2 -2
  34. package/dist/index.bun.js.map +4 -3
  35. package/dist/index.node.cjs +2 -2
  36. package/dist/index.node.cjs.map +4 -3
  37. package/dist/index.node.mjs +2 -2
  38. package/dist/index.node.mjs.map +4 -3
  39. package/package.json +3 -3
  40. package/dist/chunk-245sw6kx.js +0 -3
  41. package/dist/chunk-5d1w8na7.js +0 -3
  42. package/dist/chunk-6qtap428.js +0 -4
  43. package/dist/chunk-6qtap428.js.map +0 -12
  44. package/dist/chunk-74bcayvr.js +0 -3
  45. package/dist/chunk-74bcayvr.js.map +0 -13
  46. package/dist/chunk-8r69sf95.js +0 -5
  47. package/dist/chunk-8r69sf95.js.map +0 -12
  48. package/dist/chunk-cfpkr9nw.js +0 -5
  49. package/dist/chunk-d3fxpzrq.js +0 -4
  50. package/dist/chunk-f8hc5gnf.js +0 -4
  51. package/dist/chunk-f8hc5gnf.js.map +0 -12
  52. package/dist/chunk-fks9mwgb.js +0 -3
  53. package/dist/chunk-fks9mwgb.js.map +0 -13
  54. package/dist/chunk-kqn499ka.js.map +0 -13
  55. package/dist/chunk-rta7shf1.js +0 -4
  56. package/dist/chunk-sycf5j9m.js +0 -4
  57. package/dist/chunk-t4jk8xn4.js +0 -3
  58. package/dist/chunk-t4jk8xn4.js.map +0 -12
  59. package/dist/chunk-vk3k7qxb.js +0 -3
  60. package/dist/chunk-wvd3rsja.js +0 -4
  61. package/dist/chunk-wvd3rsja.js.map +0 -13
package/dist/index.bun.js CHANGED
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{d as W,e as j,f as N,h as T}from"./chunk-cfpkr9nw.js";var v=0;async function D(G,L,H,Q,J){return new Promise((V,K)=>{let O=++v;if(Q?.aborted){K(new DOMException("Aborted","AbortError"));return}let X=(_)=>{let $=_.data;if($.id!==O)return;if(S(),$.ok&&$.data!==void 0)V($.data);else K(Error($.error||"Unknown worker error"))},Y=(_)=>{S(),K(Error(`Worker error: ${_.message}`))},I=()=>{S(),K(new DOMException("Aborted","AbortError"))},S=()=>{G.removeEventListener("message",X),G.removeEventListener("error",Y),Q?.removeEventListener("abort",I)};G.addEventListener("message",X),G.addEventListener("error",Y),Q?.addEventListener("abort",I);let Z={type:L,id:O,payload:H};if(J&&J.length>0)G.postMessage(Z,J);else G.postMessage(Z)})}function F(G,L){let H=G.endsWith(".js")?G:`${G}.js`,Q={"resize.worker.js":{package:"@squoosh-kit/resize",specifier:"resize.worker.js"},"webp.worker.js":{package:"@squoosh-kit/webp",specifier:"webp.worker.js"}},J=Q[H];if(!J)throw Error(`Unknown worker: ${H}. Supported workers: ${Object.keys(Q).join(", ")}`);try{if(typeof window<"u"){let X=J.package.split("/")[1],Y=H.replace(".js",".browser.mjs");if(console.log("[worker-helper] In browser environment. Trying to create worker:"),console.log(`[worker-helper] - Package Name: ${X}`),console.log(`[worker-helper] - Worker File: ${Y}`),L?.assetPath){let Z=L.assetPath;if(!Z.startsWith("/"))Z="/"+Z;if(Z.endsWith("/"))Z=Z.slice(0,-1);let _=`${Z}/${X}/${Y}`,$=new URL(_,window.location.origin).href;console.log(`[worker-helper] Using provided assetPath. Full Worker URL: ${$}`);try{let x=new Worker($,{type:"module"});return console.log(`[worker-helper] Successfully created worker with assetPath: ${$}`),x}catch(x){throw console.error(`[worker-helper] Failed to load worker from assetPath URL: ${$}`,x),Error(`Worker failed to load from ${$}: ${x instanceof Error?x.message:String(x)}`)}}let I=[`../../${X}/dist/${Y}`,`../../../node_modules/@squoosh-kit/${X}/dist/${Y}`,`../../../${X}/dist/${Y}`],S=null;for(let Z of I){console.log("relPath:",Z),console.log("import.meta.url:",import.meta.url);try{let _=new URL(Z,import.meta.url);console.log(`[worker-helper] Trying path strategy. Full Worker URL: ${_.href}`);let $=new Worker(_,{type:"module"});return console.log(`[worker-helper] Successfully created worker with URL: ${_.href}`),$}catch(_){console.warn(`[worker-helper] Path strategy failed for ${Z}:`,_),S=_ instanceof Error?_:Error(String(_))}}if(S)throw console.error("[worker-helper] All path strategies failed.",S),S;throw Error(`Could not resolve worker ${H} using any available path strategy`)}let V=N()?".bun.js":".node.mjs",K=H.replace(".js",""),O=J.package.includes("resize")?`../../resize/src/${K}.ts`:`../../webp/src/${K}.ts`;console.log("srcRelPath:",O),console.log("import.meta.url:",import.meta.url);try{return new Worker(new URL(O,import.meta.url),{type:"module"})}catch{let X=J.package.includes("resize")?`../../resize/dist/${K}.${V.slice(1)}`:`../../webp/dist/${K}.${V.slice(1)}`;console.log("distRelPath:",X),console.log("import.meta.url:",import.meta.url);try{return new Worker(new URL(X,import.meta.url),{type:"module"})}catch{if(typeof import.meta.resolve==="function")try{let Y=import.meta.resolve(`${J.package}/${J.specifier}`);return console.log("resolved:",Y),new Worker(Y,{type:"module"})}catch{}}}throw Error(`Failed to create worker from ${H}. Tried TypeScript source, dist output, and import.meta.resolve. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`)}catch(V){let K=V instanceof Error?V.message:String(V);throw Error(`Failed to create worker from ${H}: ${K}. 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 U(G,L,H=1e4){return new Promise((Q,J)=>{let V=setTimeout(()=>{J(Error(`Worker initialization timeout after ${H}ms. Worker file: ${G}`))},H),K;try{K=F(G,L)}catch(I){clearTimeout(V),J(I);return}let O=(I)=>{if(I.data?.type==="worker:ready")clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),Q(K)},X=(I)=>{clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),J(Error(`Worker failed to start: ${I?.message||"Unknown error"}. Worker file: ${G}`))},Y=()=>{clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),J(Error(`Worker message error during initialization. Worker file: ${G}`))};K.addEventListener("message",O),K.addEventListener("error",X),K.addEventListener("messageerror",Y),K.postMessage({type:"worker:ping"})})}class E{async encode(G,L,H){let J=(await import("./chunk-wvd3rsja.js")).webpEncodeClient;return J(G,L,H)}async terminate(){}}class M{worker=null;workerReady=null;options;constructor(G){console.log("[webp/bridge] WebpWorkerBridge constructor called with options:",G),this.options=G}async getWorker(){if(!this.workerReady)this.workerReady=this.createWorker();return this.workerReady}async createWorker(){return console.log("[webp/bridge] createWorker called. Creating ready worker..."),this.worker=await U("webp.worker.js",this.options),console.log("[webp/bridge] createWorker: Ready worker created successfully."),this.worker}async encode(G,L,H){let Q=await this.getWorker();return T(G),D(Q,"webp:encode",{image:G,options:L},H)}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function q(G,L){if(console.log(`[webp/bridge] createBridge called with mode: ${G}`),G==="worker")return new M(L);return new E}var R=null;async function w(G,L,H){if(!R)R=q("worker");return R.encode(G,L,H)}function p(G="worker",L){let H=q(G,L);return Object.assign((Q,J,V)=>{return H.encode(Q,J,V)},{terminate:async()=>{await H.terminate()}})}class B{async resize(G,L,H){let J=(await import("./chunk-sycf5j9m.js")).resizeClient;return J(G,L,H)}async terminate(){}}class P{worker=null;workerReady=null;options;constructor(G){this.options=G}async getWorker(){if(!this.workerReady)this.workerReady=this.createWorker();return this.workerReady}async createWorker(){return this.worker=await U("resize.worker.js",this.options),this.worker}async resize(G,L,H){let Q=await this.getWorker();T(G);try{return await D(Q,"resize:run",{image:G,options:L},H)}catch(J){throw console.error("Resize error:",J),J}}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function A(G,L){if(G==="worker")return new P(L);return new B}var y=null;async function s(G,L,H){if(!y)y=A("worker");return y.resize(G,L,H)}function n(G="worker",L){let H=A(G,L);return Object.assign((Q,J,V)=>{return H.resize(Q,J,V)},{terminate:async()=>{await H.terminate()}})}export{s as resize,w as encode,p as createWebpEncoder,n as createResizer};
2
+ import{b as W,c as j,d as T}from"./chunk-02ytt443.js";function N(){return typeof Bun<"u"}var F=0;async function U(G,L,H,Q,J){return new Promise((V,K)=>{let O=++F;if(Q?.aborted){K(new DOMException("Aborted","AbortError"));return}let X=(_)=>{let $=_.data;if($.id!==O)return;if(S(),$.ok&&$.data!==void 0)V($.data);else K(Error($.error||"Unknown worker error"))},Y=(_)=>{S(),K(Error(`Worker error: ${_.message}`))},I=()=>{S(),K(new DOMException("Aborted","AbortError"))},S=()=>{G.removeEventListener("message",X),G.removeEventListener("error",Y),Q?.removeEventListener("abort",I)};G.addEventListener("message",X),G.addEventListener("error",Y),Q?.addEventListener("abort",I);let Z={type:L,id:O,payload:H};if(J&&J.length>0)G.postMessage(Z,J);else G.postMessage(Z)})}function v(G,L){let H=G.endsWith(".js")?G:`${G}.js`,Q={"resize.worker.js":{package:"@squoosh-kit/resize",specifier:"resize.worker.js"},"webp.worker.js":{package:"@squoosh-kit/webp",specifier:"webp.worker.js"}},J=Q[H];if(!J)throw Error(`Unknown worker: ${H}. Supported workers: ${Object.keys(Q).join(", ")}`);try{if(typeof window<"u"){let X=J.package.split("/")[1],Y=H.replace(".js",".browser.mjs");if(console.log("[worker-helper] In browser environment. Trying to create worker:"),console.log(`[worker-helper] - Package Name: ${X}`),console.log(`[worker-helper] - Worker File: ${Y}`),L?.assetPath){let Z=L.assetPath;if(!Z.startsWith("/"))Z="/"+Z;if(Z.endsWith("/"))Z=Z.slice(0,-1);let _=`${Z}/${X}/${Y}`,$=new URL(_,window.location.origin).href;console.log(`[worker-helper] Using provided assetPath. Full Worker URL: ${$}`);try{let x=new Worker($,{type:"module"});return console.log(`[worker-helper] Successfully created worker with assetPath: ${$}`),x}catch(x){throw console.error(`[worker-helper] Failed to load worker from assetPath URL: ${$}`,x),Error(`Worker failed to load from ${$}: ${x instanceof Error?x.message:String(x)}`)}}let I=[`../../${X}/dist/${Y}`,`../../../node_modules/@squoosh-kit/${X}/dist/${Y}`,`../../../${X}/dist/${Y}`],S=null;for(let Z of I){console.log("relPath:",Z),console.log("import.meta.url:",import.meta.url);try{let _=new URL(Z,import.meta.url);console.log(`[worker-helper] Trying path strategy. Full Worker URL: ${_.href}`);let $=new Worker(_,{type:"module"});return console.log(`[worker-helper] Successfully created worker with URL: ${_.href}`),$}catch(_){console.warn(`[worker-helper] Path strategy failed for ${Z}:`,_),S=_ instanceof Error?_:Error(String(_))}}if(S)throw console.error("[worker-helper] All path strategies failed.",S),S;throw Error(`Could not resolve worker ${H} using any available path strategy`)}let V=N()?".bun.js":".node.mjs",K=H.replace(".js",""),O=J.package.includes("resize")?`../../resize/src/${K}.ts`:`../../webp/src/${K}.ts`;console.log("srcRelPath:",O),console.log("import.meta.url:",import.meta.url);try{return new Worker(new URL(O,import.meta.url),{type:"module"})}catch{let X=J.package.includes("resize")?`../../resize/dist/${K}.${V.slice(1)}`:`../../webp/dist/${K}.${V.slice(1)}`;console.log("distRelPath:",X),console.log("import.meta.url:",import.meta.url);try{return new Worker(new URL(X,import.meta.url),{type:"module"})}catch{if(typeof import.meta.resolve==="function")try{let Y=import.meta.resolve(`${J.package}/${J.specifier}`);return console.log("resolved:",Y),new Worker(Y,{type:"module"})}catch{}}}throw Error(`Failed to create worker from ${H}. Tried TypeScript source, dist output, and import.meta.resolve. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`)}catch(V){let K=V instanceof Error?V.message:String(V);throw Error(`Failed to create worker from ${H}: ${K}. 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 D(G,L,H=1e4){return new Promise((Q,J)=>{let V=setTimeout(()=>{J(Error(`Worker initialization timeout after ${H}ms. Worker file: ${G}`))},H),K;try{K=v(G,L)}catch(I){clearTimeout(V),J(I);return}let O=(I)=>{if(I.data?.type==="worker:ready")clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),Q(K)},X=(I)=>{clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),J(Error(`Worker failed to start: ${I?.message||"Unknown error"}. Worker file: ${G}`))},Y=()=>{clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),J(Error(`Worker message error during initialization. Worker file: ${G}`))};K.addEventListener("message",O),K.addEventListener("error",X),K.addEventListener("messageerror",Y),K.postMessage({type:"worker:ping"})})}class E{async encode(G,L,H){let J=(await import("./chunk-5ap8cyw0.js")).webpEncodeClient;return J(G,L,H)}async terminate(){}}class M{worker=null;workerReady=null;options;constructor(G){console.log("[webp/bridge] WebpWorkerBridge constructor called with options:",G),this.options=G}async getWorker(){if(!this.workerReady)this.workerReady=this.createWorker();return this.workerReady}async createWorker(){return console.log("[webp/bridge] createWorker called. Creating ready worker..."),this.worker=await D("webp.worker.js",this.options),console.log("[webp/bridge] createWorker: Ready worker created successfully."),this.worker}async encode(G,L,H){let Q=await this.getWorker();return T(G),U(Q,"webp:encode",{image:G,options:L},H)}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function q(G,L){if(console.log(`[webp/bridge] createBridge called with mode: ${G}`),G==="worker")return new M(L);return new E}var R=null;async function p(G,L,H){if(!R)R=q("worker");return R.encode(G,L,H)}function k(G="worker",L){let H=q(G,L);return Object.assign((Q,J,V)=>{return H.encode(Q,J,V)},{terminate:async()=>{await H.terminate()}})}class B{async resize(G,L,H){let J=(await import("./chunk-yd1vfk89.js")).resizeClient;return J(G,L,H)}async terminate(){}}class P{worker=null;workerReady=null;options;constructor(G){this.options=G}async getWorker(){if(!this.workerReady)this.workerReady=this.createWorker();return this.workerReady}async createWorker(){return this.worker=await D("resize.worker.js",this.options),this.worker}async resize(G,L,H){let Q=await this.getWorker();T(G);try{return await U(Q,"resize:run",{image:G,options:L},H)}catch(J){throw console.error("Resize error:",J),J}}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function A(G,L){if(G==="worker")return new P(L);return new B}var y=null;async function n(G,L,H){if(!y)y=A("worker");return y.resize(G,L,H)}function i(G="worker",L){let H=A(G,L);return Object.assign((Q,J,V)=>{return H.resize(Q,J,V)},{terminate:async()=>{await H.terminate()}})}export{n as resize,p as encode,k as createWebpEncoder,i as createResizer};
3
3
 
4
- //# debugId=FA1EE033D287B13764756E2164756E21
4
+ //# debugId=049E0652AE307BB964756E2164756E21
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../runtime/src/worker-call.ts", "../../runtime/src/worker-helper.ts", "../../webp/src/bridge.ts", "../../webp/src/index.ts", "../../resize/src/bridge.ts", "../../resize/src/index.ts"],
3
+ "sources": ["../../runtime/src/env.ts", "../../runtime/src/worker-call.ts", "../../runtime/src/worker-helper.ts", "../../webp/src/bridge.ts", "../../webp/src/index.ts", "../../resize/src/bridge.ts", "../../resize/src/index.ts"],
4
4
  "sourcesContent": [
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",
5
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",
6
7
  "/**\n * Worker helper utilities for creating and managing Web Workers\n *\n * This module provides centralized logic for creating worker instances\n * in different environments (browser, Node.js, Bun) using import.meta.resolve\n * for server-side and package-relative paths for browsers.\n */\n\nimport { isBun } from './env';\n\nexport type CreateWorkerOptions = {\n assetPath?: string;\n};\n\n/**\n * Create a Web Worker for a specific codec\n *\n * In Node.js/Bun environments, uses import.meta.resolve to locate worker files.\n * In browser environments, uses relative paths within node_modules that Vite can resolve.\n *\n * @param workerFilename - The name of the worker file (e.g., 'resize.worker' or 'webp.worker')\n * @returns Worker instance\n * @throws Error if worker creation fails with detailed error message\n */\nexport function createCodecWorker(\n workerFilename: string,\n options?: CreateWorkerOptions\n): Worker {\n // Ensure filename has correct format\n const normalizedName = workerFilename.endsWith('.js')\n ? workerFilename\n : `${workerFilename}.js`;\n\n // Map worker filenames to their package and export\n const workerMap: Record<string, { package: string; specifier: string }> = {\n 'resize.worker.js': {\n package: '@squoosh-kit/resize',\n specifier: 'resize.worker.js',\n },\n 'webp.worker.js': {\n package: '@squoosh-kit/webp',\n specifier: 'webp.worker.js',\n },\n };\n\n const workerConfig = workerMap[normalizedName];\n if (!workerConfig) {\n throw new Error(\n `Unknown worker: ${normalizedName}. ` +\n `Supported workers: ${Object.keys(workerMap).join(', ')}`\n );\n }\n\n try {\n // In browser contexts, use relative paths within the installed packages\n if (typeof window !== 'undefined') {\n const packageName = workerConfig.package.split('/')[1]; // Extract 'resize' or 'webp'\n const workerFile = normalizedName.replace('.js', '.browser.mjs');\n\n console.log(\n `[worker-helper] In browser environment. Trying to create worker:`\n );\n console.log(`[worker-helper] - Package Name: ${packageName}`);\n console.log(`[worker-helper] - Worker File: ${workerFile}`);\n\n // If a custom asset path is provided, use it directly\n if (options?.assetPath) {\n // Normalize the asset path - ensure it starts with / and ends without /\n let normalizedAssetPath = options.assetPath;\n if (!normalizedAssetPath.startsWith('/')) {\n normalizedAssetPath = '/' + normalizedAssetPath;\n }\n if (normalizedAssetPath.endsWith('/')) {\n normalizedAssetPath = normalizedAssetPath.slice(0, -1);\n }\n\n // Construct absolute URL: {origin}{assetPath}/{package}/{workerFile}\n const workerPath = `${normalizedAssetPath}/${packageName}/${workerFile}`;\n const workerUrl = new URL(workerPath, window.location.origin).href;\n\n console.log(\n `[worker-helper] Using provided assetPath. Full Worker URL: ${workerUrl}`\n );\n try {\n const worker = new Worker(workerUrl, { type: 'module' });\n console.log(\n `[worker-helper] Successfully created worker with assetPath: ${workerUrl}`\n );\n return worker;\n } catch (e) {\n console.error(\n `[worker-helper] Failed to load worker from assetPath URL: ${workerUrl}`,\n e\n );\n throw new Error(\n `Worker failed to load from ${workerUrl}: ${e instanceof Error ? e.message : String(e)}`\n );\n }\n }\n\n // Try multiple path strategies to support both:\n // 1. Monorepo development structure: ../../{package}/dist/{workerFile}\n // 2. npm installed structure: ../../../{package}/dist/{workerFile}\n const pathStrategies = [\n // First try monorepo structure (when runtime is at packages/runtime/src)\n `../../${packageName}/dist/${workerFile}`,\n // Then try npm structure (when runtime is at node_modules/@squoosh-kit/runtime)\n `../../../node_modules/@squoosh-kit/${packageName}/dist/${workerFile}`,\n // Alternative npm structure for cases where packages are flattened\n `../../../${packageName}/dist/${workerFile}`,\n ];\n\n let lastError: Error | null = null;\n\n for (const relPath of pathStrategies) {\n console.log('relPath:', relPath);\n console.log('import.meta.url:', import.meta.url);\n try {\n const workerUrl = new URL(relPath, import.meta.url);\n console.log(\n `[worker-helper] Trying path strategy. Full Worker URL: ${workerUrl.href}`\n );\n const worker = new Worker(workerUrl, {\n type: 'module',\n });\n console.log(\n `[worker-helper] Successfully created worker with URL: ${workerUrl.href}`\n );\n return worker;\n } catch (error) {\n console.warn(\n `[worker-helper] Path strategy failed for ${relPath}:`,\n error\n );\n lastError = error instanceof Error ? error : new Error(String(error));\n // Continue to next strategy\n }\n }\n\n // If all strategies failed, throw the last error\n if (lastError) {\n console.error('[worker-helper] All path strategies failed.', lastError);\n throw lastError;\n }\n throw new Error(\n `Could not resolve worker ${normalizedName} using any available path strategy`\n );\n }\n\n // Fallbacks for monorepo/dev without build artifacts\n const platformExt = isBun() ? '.bun.js' : '.node.mjs';\n const baseName = normalizedName.replace('.js', '');\n\n // 1) Try TypeScript source first (Bun can transpile TS, works in dev)\n const srcRelPath = workerConfig.package.includes('resize')\n ? `../../resize/src/${baseName}.ts`\n : `../../webp/src/${baseName}.ts`;\n\n console.log('srcRelPath:', srcRelPath);\n console.log('import.meta.url:', import.meta.url);\n try {\n return new Worker(new URL(srcRelPath, import.meta.url), {\n type: 'module',\n });\n } catch {\n // 2) Try dist output (if already built)\n const distRelPath = workerConfig.package.includes('resize')\n ? `../../resize/dist/${baseName}.${platformExt.slice(1)}`\n : `../../webp/dist/${baseName}.${platformExt.slice(1)}`;\n\n console.log('distRelPath:', distRelPath);\n console.log('import.meta.url:', import.meta.url);\n try {\n return new Worker(new URL(distRelPath, import.meta.url), {\n type: 'module',\n });\n } catch {\n // 3) Try import.meta.resolve as last resort\n if (typeof import.meta.resolve === 'function') {\n try {\n const resolved = import.meta.resolve(\n `${workerConfig.package}/${workerConfig.specifier}`\n );\n console.log('resolved:', resolved);\n return new Worker(resolved, { type: 'module' });\n } catch {\n // Continue to error below\n }\n }\n }\n }\n\n // If we get here, all fallbacks failed\n throw new Error(\n `Failed to create worker from ${normalizedName}. ` +\n `Tried TypeScript source, dist output, and import.meta.resolve. ` +\n `Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`\n );\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n throw new Error(\n `Failed to create worker from ${normalizedName}: ${errorMessage}. ` +\n `Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed. ` +\n `If you're using Vite, ensure the worker files are not being optimized as dependencies.`\n );\n }\n}\n\n/**\n * Create a worker with initialization timeout and ready signal handling\n *\n * This is a higher-level function that creates a worker and waits for it\n * to signal that it's ready to receive messages.\n *\n * @param workerFilename - The name of the worker file\n * @param timeoutMs - Timeout in milliseconds (default: 10000)\n * @returns Promise that resolves to a ready Worker instance\n * @throws Error if worker creation fails or times out\n */\nexport function createReadyWorker(\n workerFilename: string,\n options?: CreateWorkerOptions,\n timeoutMs: number = 10000\n): Promise<Worker> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(\n new Error(\n `Worker initialization timeout after ${timeoutMs}ms. Worker file: ${workerFilename}`\n )\n );\n }, timeoutMs);\n\n let worker: Worker;\n try {\n worker = createCodecWorker(workerFilename, options);\n } catch (error) {\n clearTimeout(timeout);\n reject(error);\n return;\n }\n\n const handleMessage = (event: MessageEvent) => {\n if (event.data?.type === 'worker:ready') {\n clearTimeout(timeout);\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n worker.removeEventListener('messageerror', handleMessageError);\n resolve(worker);\n }\n };\n\n const handleError = (event: ErrorEvent) => {\n clearTimeout(timeout);\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n worker.removeEventListener('messageerror', handleMessageError);\n reject(\n new Error(\n `Worker failed to start: ${event?.message || 'Unknown error'}. Worker file: ${workerFilename}`\n )\n );\n };\n\n const handleMessageError = () => {\n clearTimeout(timeout);\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n worker.removeEventListener('messageerror', handleMessageError);\n reject(\n new Error(\n `Worker message error during initialization. Worker file: ${workerFilename}`\n )\n );\n };\n\n worker.addEventListener('message', handleMessage);\n worker.addEventListener('error', handleError);\n worker.addEventListener('messageerror', handleMessageError);\n worker.postMessage({ type: 'worker:ping' });\n });\n}\n",
7
8
  "/**\n * Bridge implementation for the WebP 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 { EncodeInputOptions } from './types';\n\nexport type BridgeOptions = {\n assetPath?: string;\n};\n\ninterface WebPBridge {\n encode(\n image: ImageInput,\n options?: EncodeInputOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array>;\n terminate(): Promise<void>;\n}\n\nclass WebpClientBridge implements WebPBridge {\n async encode(\n image: ImageInput,\n options?: EncodeInputOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array> {\n // Dynamically import the client encoder to avoid module loading issues in Vite\n const module = await import('./webp.worker.js');\n const webpEncodeClient = module.webpEncodeClient as (\n image: ImageInput,\n options?: EncodeInputOptions,\n signal?: AbortSignal\n ) => Promise<Uint8Array>;\n return webpEncodeClient(image, options, signal);\n }\n\n async terminate(): Promise<void> {\n // Client mode has nothing to terminate\n }\n}\n\nclass WebpWorkerBridge implements WebPBridge {\n private worker: Worker | null = null;\n private workerReady: Promise<Worker> | null = null;\n private options?: BridgeOptions;\n\n constructor(options?: BridgeOptions) {\n console.log(\n '[webp/bridge] WebpWorkerBridge constructor called with options:',\n options\n );\n this.options = options;\n }\n\n private async getWorker(): Promise<Worker> {\n if (!this.workerReady) {\n this.workerReady = this.createWorker();\n }\n return this.workerReady;\n }\n\n private async createWorker(): Promise<Worker> {\n console.log('[webp/bridge] createWorker called. Creating ready worker...');\n this.worker = await createReadyWorker('webp.worker.js', this.options);\n console.log(\n '[webp/bridge] createWorker: Ready worker created successfully.'\n );\n return this.worker;\n }\n\n async encode(\n image: ImageInput,\n options?: EncodeInputOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array> {\n const worker = await this.getWorker();\n\n validateImageInput(image);\n return callWorker(worker, 'webp:encode', { image, options }, signal);\n }\n\n async terminate(): Promise<void> {\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n this.workerReady = null;\n }\n }\n}\n\nexport function createBridge(\n mode: 'worker' | 'client',\n options?: BridgeOptions\n): WebPBridge {\n console.log(`[webp/bridge] createBridge called with mode: ${mode}`);\n if (mode === 'worker') {\n return new WebpWorkerBridge(options);\n }\n return new WebpClientBridge();\n}\n",
@@ -9,7 +10,7 @@
9
10
  "/**\n * Bridge implementation for the Resize package, handling worker and client modes.\n */\n\nimport {\n callWorker,\n createReadyWorker,\n type ImageInput,\n} from '@squoosh-kit/runtime';\nimport { validateImageInput } from '@squoosh-kit/runtime';\nimport type { ResizeOptions } from './types.ts';\n\nexport type BridgeOptions = {\n assetPath?: string;\n};\n\ninterface ResizeBridge {\n resize(\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ): Promise<ImageInput>;\n terminate(): Promise<void>;\n}\n\nclass ResizeClientBridge implements ResizeBridge {\n async resize(\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ): Promise<ImageInput> {\n // Dynamically import the client resizer to avoid module loading issues in Vite\n const module = await import('./resize.worker.ts');\n const resizeClient = module.resizeClient as (\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ) => Promise<ImageInput>;\n return resizeClient(image, options, signal);\n }\n\n async terminate(): Promise<void> {\n // Client mode has nothing to terminate\n }\n}\n\nclass ResizeWorkerBridge implements ResizeBridge {\n private worker: Worker | null = null;\n private workerReady: Promise<Worker> | null = null;\n private options?: BridgeOptions;\n\n constructor(options?: BridgeOptions) {\n this.options = options;\n }\n\n private async getWorker(): Promise<Worker> {\n if (!this.workerReady) {\n this.workerReady = this.createWorker();\n }\n return this.workerReady;\n }\n\n private async createWorker(): Promise<Worker> {\n this.worker = await createReadyWorker('resize.worker.js', this.options);\n return this.worker;\n }\n\n async resize(\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ): Promise<ImageInput> {\n const worker = await this.getWorker();\n\n validateImageInput(image);\n\n try {\n const result = await callWorker<\n { image: ImageInput; options: ResizeOptions },\n ImageInput\n >(worker, 'resize:run', { image, options }, signal);\n\n return result;\n } catch (error) {\n console.error('Resize error:', error);\n throw error;\n }\n }\n\n async terminate(): Promise<void> {\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n this.workerReady = null;\n }\n }\n}\n\nexport function createBridge(\n mode: 'worker' | 'client',\n options?: BridgeOptions\n): ResizeBridge {\n if (mode === 'worker') {\n return new ResizeWorkerBridge(options);\n }\n return new ResizeClientBridge();\n}\n",
10
11
  "/**\n * @squoosh-kit/resize public API\n */\n\nimport type { ImageInput } from '@squoosh-kit/runtime';\nimport { createBridge, type BridgeOptions } from './bridge';\nimport type { ResizeOptions } from './types';\n\nexport type { ImageInput, ResizeOptions };\n\n// Global bridge instance for reuse\nlet globalClientBridge: ReturnType<typeof createBridge> | null = null;\n\n/**\n * A resizable image processor that can be reused for multiple operations.\n * Can be terminated to clean up associated resources (especially workers).\n */\nexport type ResizerFactory = ((\n imageData: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n) => Promise<ImageInput>) & {\n /**\n * Terminates the resizer and cleans up resources.\n * Important for worker mode to prevent memory leaks.\n *\n * @example\n * const resizer = createResizer('worker');\n * try {\n * const result = await resizer(imageData, options);\n * } finally {\n * await resizer.terminate();\n * }\n */\n terminate(): Promise<void>;\n};\n\n/**\n * Resizes an image. Uses worker mode for UI responsiveness.\n *\n * @param imageData - The image data to resize.\n * @param options - Resize options.\n * @param signal - (Optional) AbortSignal to cancel the resizing operation.\n * If provided, you can cancel the operation by calling\n * `controller.abort()` on the associated AbortController.\n * If not provided, the operation cannot be cancelled.\n * @returns A Promise resolving to the resized image data.\n *\n * @example\n * // With cancellation support\n * const controller = new AbortController();\n * const result = await resize(imageData, { width: 800 }, controller.signal);\n * setTimeout(() => controller.abort(), 5000);\n *\n * @example\n * // Without cancellation (operation cannot be stopped)\n * const result = await resize(imageData, { width: 800 });\n */\nexport async function resize(\n imageData: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n): Promise<ImageInput> {\n // Use worker mode for UI responsiveness - prevents blocking the main thread\n if (!globalClientBridge) {\n globalClientBridge = createBridge('worker');\n }\n\n return globalClientBridge.resize(imageData, options, signal);\n}\n\n/**\n * Creates a reusable resizer function for a specific execution mode.\n *\n * @param mode - The execution mode, either 'worker' or 'client'.\n * @returns A function that resizes an image with optional AbortSignal.\n */\nexport function createResizer(\n mode: 'worker' | 'client' = 'worker',\n options?: BridgeOptions\n): ResizerFactory {\n const bridge = createBridge(mode, options);\n\n return Object.assign(\n (imageData: ImageInput, options: ResizeOptions, signal?: AbortSignal) => {\n return bridge.resize(imageData, options, signal);\n },\n {\n terminate: async () => {\n await bridge.terminate();\n },\n }\n );\n}\n"
11
12
  ],
12
- "mappings": "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",
13
- "debugId": "FA1EE033D287B13764756E2164756E21",
13
+ "mappings": "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",
14
+ "debugId": "049E0652AE307BB964756E2164756E21",
14
15
  "names": []
15
16
  }
@@ -1,3 +1,3 @@
1
- var c={};u(c,{resize:()=>C,encode:()=>F,createWebpEncoder:()=>z,createResizer:()=>b});module.exports=f(c);var P=0;async function D(G,L,H,Q,J){return new Promise((V,K)=>{let O=++P;if(Q?.aborted){K(new DOMException("Aborted","AbortError"));return}let X=(_)=>{let $=_.data;if($.id!==O)return;if(S(),$.ok&&$.data!==void 0)V($.data);else K(Error($.error||"Unknown worker error"))},Y=(_)=>{S(),K(Error(`Worker error: ${_.message}`))},I=()=>{S(),K(new DOMException("Aborted","AbortError"))},S=()=>{G.removeEventListener("message",X),G.removeEventListener("error",Y),Q?.removeEventListener("abort",I)};G.addEventListener("message",X),G.addEventListener("error",Y),Q?.addEventListener("abort",I);let Z={type:L,id:O,payload:H};if(J&&J.length>0)G.postMessage(Z,J);else G.postMessage(Z)})}function v(G,L){let H=G.endsWith(".js")?G:`${G}.js`,Q={"resize.worker.js":{package:"@squoosh-kit/resize",specifier:"resize.worker.js"},"webp.worker.js":{package:"@squoosh-kit/webp",specifier:"webp.worker.js"}},J=Q[H];if(!J)throw Error(`Unknown worker: ${H}. Supported workers: ${Object.keys(Q).join(", ")}`);try{if(typeof window<"u"){let X=J.package.split("/")[1],Y=H.replace(".js",".browser.mjs");if(console.log("[worker-helper] In browser environment. Trying to create worker:"),console.log(`[worker-helper] - Package Name: ${X}`),console.log(`[worker-helper] - Worker File: ${Y}`),L?.assetPath){let Z=L.assetPath;if(!Z.startsWith("/"))Z="/"+Z;if(Z.endsWith("/"))Z=Z.slice(0,-1);let _=`${Z}/${X}/${Y}`,$=new URL(_,window.location.origin).href;console.log(`[worker-helper] Using provided assetPath. Full Worker URL: ${$}`);try{let x=new Worker($,{type:"module"});return console.log(`[worker-helper] Successfully created worker with assetPath: ${$}`),x}catch(x){throw console.error(`[worker-helper] Failed to load worker from assetPath URL: ${$}`,x),Error(`Worker failed to load from ${$}: ${x instanceof Error?x.message:String(x)}`)}}let I=[`../../${X}/dist/${Y}`,`../../../node_modules/@squoosh-kit/${X}/dist/${Y}`,`../../../${X}/dist/${Y}`],S=null;for(let Z of I){console.log("relPath:",Z),console.log("import.meta.url:","file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts");try{let _=new URL(Z,"file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts");console.log(`[worker-helper] Trying path strategy. Full Worker URL: ${_.href}`);let $=new Worker(_,{type:"module"});return console.log(`[worker-helper] Successfully created worker with URL: ${_.href}`),$}catch(_){console.warn(`[worker-helper] Path strategy failed for ${Z}:`,_),S=_ instanceof Error?_:Error(String(_))}}if(S)throw console.error("[worker-helper] All path strategies failed.",S),S;throw Error(`Could not resolve worker ${H} using any available path strategy`)}let V=N()?".bun.js":".node.mjs",K=H.replace(".js",""),O=J.package.includes("resize")?`../../resize/src/${K}.ts`:`../../webp/src/${K}.ts`;console.log("srcRelPath:",O),console.log("import.meta.url:","file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts");try{return new Worker(new URL(O,"file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts"),{type:"module"})}catch{let X=J.package.includes("resize")?`../../resize/dist/${K}.${V.slice(1)}`:`../../webp/dist/${K}.${V.slice(1)}`;console.log("distRelPath:",X),console.log("import.meta.url:","file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts");try{return new Worker(new URL(X,"file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts"),{type:"module"})}catch{if(typeof import.meta.resolve==="function")try{let Y=import.meta.resolve(`${J.package}/${J.specifier}`);return console.log("resolved:",Y),new Worker(Y,{type:"module"})}catch{}}}throw Error(`Failed to create worker from ${H}. Tried TypeScript source, dist output, and import.meta.resolve. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`)}catch(V){let K=V instanceof Error?V.message:String(V);throw Error(`Failed to create worker from ${H}: ${K}. 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 U(G,L,H=1e4){return new Promise((Q,J)=>{let V=setTimeout(()=>{J(Error(`Worker initialization timeout after ${H}ms. Worker file: ${G}`))},H),K;try{K=v(G,L)}catch(I){clearTimeout(V),J(I);return}let O=(I)=>{if(I.data?.type==="worker:ready")clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),Q(K)},X=(I)=>{clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),J(Error(`Worker failed to start: ${I?.message||"Unknown error"}. Worker file: ${G}`))},Y=()=>{clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),J(Error(`Worker message error during initialization. Worker file: ${G}`))};K.addEventListener("message",O),K.addEventListener("error",X),K.addEventListener("messageerror",Y),K.postMessage({type:"worker:ping"})})}class j{async encode(G,L,H){let J=(await import("./chunk-kqn499ka.js")).webpEncodeClient;return J(G,L,H)}async terminate(){}}class E{worker=null;workerReady=null;options;constructor(G){console.log("[webp/bridge] WebpWorkerBridge constructor called with options:",G),this.options=G}async getWorker(){if(!this.workerReady)this.workerReady=this.createWorker();return this.workerReady}async createWorker(){return console.log("[webp/bridge] createWorker called. Creating ready worker..."),this.worker=await U("webp.worker.js",this.options),console.log("[webp/bridge] createWorker: Ready worker created successfully."),this.worker}async encode(G,L,H){let Q=await this.getWorker();return T(G),D(Q,"webp:encode",{image:G,options:L},H)}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function q(G,L){if(console.log(`[webp/bridge] createBridge called with mode: ${G}`),G==="worker")return new E(L);return new j}var R=null;async function F(G,L,H){if(!R)R=q("worker");return R.encode(G,L,H)}function z(G="worker",L){let H=q(G,L);return Object.assign((Q,J,V)=>{return H.encode(Q,J,V)},{terminate:async()=>{await H.terminate()}})}class M{async resize(G,L,H){let J=(await import("./chunk-kjhvs4qe.js")).resizeClient;return J(G,L,H)}async terminate(){}}class B{worker=null;workerReady=null;options;constructor(G){this.options=G}async getWorker(){if(!this.workerReady)this.workerReady=this.createWorker();return this.workerReady}async createWorker(){return this.worker=await U("resize.worker.js",this.options),this.worker}async resize(G,L,H){let Q=await this.getWorker();T(G);try{return await D(Q,"resize:run",{image:G,options:L},H)}catch(J){throw console.error("Resize error:",J),J}}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function A(G,L){if(G==="worker")return new B(L);return new M}var y=null;async function C(G,L,H){if(!y)y=A("worker");return y.resize(G,L,H)}function b(G="worker",L){let H=A(G,L);return Object.assign((Q,J,V)=>{return H.resize(Q,J,V)},{terminate:async()=>{await H.terminate()}})}
1
+ var c={};u(c,{resize:()=>C,encode:()=>v,createWebpEncoder:()=>z,createResizer:()=>b});module.exports=f(c);function N(){return typeof Bun<"u"}var P=0;async function U(G,L,H,Q,J){return new Promise((V,K)=>{let O=++P;if(Q?.aborted){K(new DOMException("Aborted","AbortError"));return}let X=(_)=>{let $=_.data;if($.id!==O)return;if(S(),$.ok&&$.data!==void 0)V($.data);else K(Error($.error||"Unknown worker error"))},Y=(_)=>{S(),K(Error(`Worker error: ${_.message}`))},I=()=>{S(),K(new DOMException("Aborted","AbortError"))},S=()=>{G.removeEventListener("message",X),G.removeEventListener("error",Y),Q?.removeEventListener("abort",I)};G.addEventListener("message",X),G.addEventListener("error",Y),Q?.addEventListener("abort",I);let Z={type:L,id:O,payload:H};if(J&&J.length>0)G.postMessage(Z,J);else G.postMessage(Z)})}function F(G,L){let H=G.endsWith(".js")?G:`${G}.js`,Q={"resize.worker.js":{package:"@squoosh-kit/resize",specifier:"resize.worker.js"},"webp.worker.js":{package:"@squoosh-kit/webp",specifier:"webp.worker.js"}},J=Q[H];if(!J)throw Error(`Unknown worker: ${H}. Supported workers: ${Object.keys(Q).join(", ")}`);try{if(typeof window<"u"){let X=J.package.split("/")[1],Y=H.replace(".js",".browser.mjs");if(console.log("[worker-helper] In browser environment. Trying to create worker:"),console.log(`[worker-helper] - Package Name: ${X}`),console.log(`[worker-helper] - Worker File: ${Y}`),L?.assetPath){let Z=L.assetPath;if(!Z.startsWith("/"))Z="/"+Z;if(Z.endsWith("/"))Z=Z.slice(0,-1);let _=`${Z}/${X}/${Y}`,$=new URL(_,window.location.origin).href;console.log(`[worker-helper] Using provided assetPath. Full Worker URL: ${$}`);try{let x=new Worker($,{type:"module"});return console.log(`[worker-helper] Successfully created worker with assetPath: ${$}`),x}catch(x){throw console.error(`[worker-helper] Failed to load worker from assetPath URL: ${$}`,x),Error(`Worker failed to load from ${$}: ${x instanceof Error?x.message:String(x)}`)}}let I=[`../../${X}/dist/${Y}`,`../../../node_modules/@squoosh-kit/${X}/dist/${Y}`,`../../../${X}/dist/${Y}`],S=null;for(let Z of I){console.log("relPath:",Z),console.log("import.meta.url:","file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts");try{let _=new URL(Z,"file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts");console.log(`[worker-helper] Trying path strategy. Full Worker URL: ${_.href}`);let $=new Worker(_,{type:"module"});return console.log(`[worker-helper] Successfully created worker with URL: ${_.href}`),$}catch(_){console.warn(`[worker-helper] Path strategy failed for ${Z}:`,_),S=_ instanceof Error?_:Error(String(_))}}if(S)throw console.error("[worker-helper] All path strategies failed.",S),S;throw Error(`Could not resolve worker ${H} using any available path strategy`)}let V=N()?".bun.js":".node.mjs",K=H.replace(".js",""),O=J.package.includes("resize")?`../../resize/src/${K}.ts`:`../../webp/src/${K}.ts`;console.log("srcRelPath:",O),console.log("import.meta.url:","file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts");try{return new Worker(new URL(O,"file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts"),{type:"module"})}catch{let X=J.package.includes("resize")?`../../resize/dist/${K}.${V.slice(1)}`:`../../webp/dist/${K}.${V.slice(1)}`;console.log("distRelPath:",X),console.log("import.meta.url:","file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts");try{return new Worker(new URL(X,"file:///home/bnowak/repos/squoosh-kit/packages/runtime/src/worker-helper.ts"),{type:"module"})}catch{if(typeof import.meta.resolve==="function")try{let Y=import.meta.resolve(`${J.package}/${J.specifier}`);return console.log("resolved:",Y),new Worker(Y,{type:"module"})}catch{}}}throw Error(`Failed to create worker from ${H}. Tried TypeScript source, dist output, and import.meta.resolve. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`)}catch(V){let K=V instanceof Error?V.message:String(V);throw Error(`Failed to create worker from ${H}: ${K}. 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 D(G,L,H=1e4){return new Promise((Q,J)=>{let V=setTimeout(()=>{J(Error(`Worker initialization timeout after ${H}ms. Worker file: ${G}`))},H),K;try{K=F(G,L)}catch(I){clearTimeout(V),J(I);return}let O=(I)=>{if(I.data?.type==="worker:ready")clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),Q(K)},X=(I)=>{clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),J(Error(`Worker failed to start: ${I?.message||"Unknown error"}. Worker file: ${G}`))},Y=()=>{clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),J(Error(`Worker message error during initialization. Worker file: ${G}`))};K.addEventListener("message",O),K.addEventListener("error",X),K.addEventListener("messageerror",Y),K.postMessage({type:"worker:ping"})})}class j{async encode(G,L,H){let J=(await import("./chunk-374tq8cw.js")).webpEncodeClient;return J(G,L,H)}async terminate(){}}class E{worker=null;workerReady=null;options;constructor(G){console.log("[webp/bridge] WebpWorkerBridge constructor called with options:",G),this.options=G}async getWorker(){if(!this.workerReady)this.workerReady=this.createWorker();return this.workerReady}async createWorker(){return console.log("[webp/bridge] createWorker called. Creating ready worker..."),this.worker=await D("webp.worker.js",this.options),console.log("[webp/bridge] createWorker: Ready worker created successfully."),this.worker}async encode(G,L,H){let Q=await this.getWorker();return T(G),U(Q,"webp:encode",{image:G,options:L},H)}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function q(G,L){if(console.log(`[webp/bridge] createBridge called with mode: ${G}`),G==="worker")return new E(L);return new j}var R=null;async function v(G,L,H){if(!R)R=q("worker");return R.encode(G,L,H)}function z(G="worker",L){let H=q(G,L);return Object.assign((Q,J,V)=>{return H.encode(Q,J,V)},{terminate:async()=>{await H.terminate()}})}class M{async resize(G,L,H){let J=(await import("./chunk-69d55ymx.js")).resizeClient;return J(G,L,H)}async terminate(){}}class B{worker=null;workerReady=null;options;constructor(G){this.options=G}async getWorker(){if(!this.workerReady)this.workerReady=this.createWorker();return this.workerReady}async createWorker(){return this.worker=await D("resize.worker.js",this.options),this.worker}async resize(G,L,H){let Q=await this.getWorker();T(G);try{return await U(Q,"resize:run",{image:G,options:L},H)}catch(J){throw console.error("Resize error:",J),J}}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function A(G,L){if(G==="worker")return new B(L);return new M}var y=null;async function C(G,L,H){if(!y)y=A("worker");return y.resize(G,L,H)}function b(G="worker",L){let H=A(G,L);return Object.assign((Q,J,V)=>{return H.resize(Q,J,V)},{terminate:async()=>{await H.terminate()}})}
2
2
 
3
- //# debugId=0390E3019FF0240264756E2164756E21
3
+ //# debugId=7D2DFC7D57885DF664756E2164756E21
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../runtime/src/worker-call.ts", "../../runtime/src/worker-helper.ts", "../../webp/src/bridge.ts", "../../webp/src/index.ts", "../../resize/src/bridge.ts", "../../resize/src/index.ts"],
3
+ "sources": ["../../runtime/src/env.ts", "../../runtime/src/worker-call.ts", "../../runtime/src/worker-helper.ts", "../../webp/src/bridge.ts", "../../webp/src/index.ts", "../../resize/src/bridge.ts", "../../resize/src/index.ts"],
4
4
  "sourcesContent": [
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",
5
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",
6
7
  "/**\n * Worker helper utilities for creating and managing Web Workers\n *\n * This module provides centralized logic for creating worker instances\n * in different environments (browser, Node.js, Bun) using import.meta.resolve\n * for server-side and package-relative paths for browsers.\n */\n\nimport { isBun } from './env';\n\nexport type CreateWorkerOptions = {\n assetPath?: string;\n};\n\n/**\n * Create a Web Worker for a specific codec\n *\n * In Node.js/Bun environments, uses import.meta.resolve to locate worker files.\n * In browser environments, uses relative paths within node_modules that Vite can resolve.\n *\n * @param workerFilename - The name of the worker file (e.g., 'resize.worker' or 'webp.worker')\n * @returns Worker instance\n * @throws Error if worker creation fails with detailed error message\n */\nexport function createCodecWorker(\n workerFilename: string,\n options?: CreateWorkerOptions\n): Worker {\n // Ensure filename has correct format\n const normalizedName = workerFilename.endsWith('.js')\n ? workerFilename\n : `${workerFilename}.js`;\n\n // Map worker filenames to their package and export\n const workerMap: Record<string, { package: string; specifier: string }> = {\n 'resize.worker.js': {\n package: '@squoosh-kit/resize',\n specifier: 'resize.worker.js',\n },\n 'webp.worker.js': {\n package: '@squoosh-kit/webp',\n specifier: 'webp.worker.js',\n },\n };\n\n const workerConfig = workerMap[normalizedName];\n if (!workerConfig) {\n throw new Error(\n `Unknown worker: ${normalizedName}. ` +\n `Supported workers: ${Object.keys(workerMap).join(', ')}`\n );\n }\n\n try {\n // In browser contexts, use relative paths within the installed packages\n if (typeof window !== 'undefined') {\n const packageName = workerConfig.package.split('/')[1]; // Extract 'resize' or 'webp'\n const workerFile = normalizedName.replace('.js', '.browser.mjs');\n\n console.log(\n `[worker-helper] In browser environment. Trying to create worker:`\n );\n console.log(`[worker-helper] - Package Name: ${packageName}`);\n console.log(`[worker-helper] - Worker File: ${workerFile}`);\n\n // If a custom asset path is provided, use it directly\n if (options?.assetPath) {\n // Normalize the asset path - ensure it starts with / and ends without /\n let normalizedAssetPath = options.assetPath;\n if (!normalizedAssetPath.startsWith('/')) {\n normalizedAssetPath = '/' + normalizedAssetPath;\n }\n if (normalizedAssetPath.endsWith('/')) {\n normalizedAssetPath = normalizedAssetPath.slice(0, -1);\n }\n\n // Construct absolute URL: {origin}{assetPath}/{package}/{workerFile}\n const workerPath = `${normalizedAssetPath}/${packageName}/${workerFile}`;\n const workerUrl = new URL(workerPath, window.location.origin).href;\n\n console.log(\n `[worker-helper] Using provided assetPath. Full Worker URL: ${workerUrl}`\n );\n try {\n const worker = new Worker(workerUrl, { type: 'module' });\n console.log(\n `[worker-helper] Successfully created worker with assetPath: ${workerUrl}`\n );\n return worker;\n } catch (e) {\n console.error(\n `[worker-helper] Failed to load worker from assetPath URL: ${workerUrl}`,\n e\n );\n throw new Error(\n `Worker failed to load from ${workerUrl}: ${e instanceof Error ? e.message : String(e)}`\n );\n }\n }\n\n // Try multiple path strategies to support both:\n // 1. Monorepo development structure: ../../{package}/dist/{workerFile}\n // 2. npm installed structure: ../../../{package}/dist/{workerFile}\n const pathStrategies = [\n // First try monorepo structure (when runtime is at packages/runtime/src)\n `../../${packageName}/dist/${workerFile}`,\n // Then try npm structure (when runtime is at node_modules/@squoosh-kit/runtime)\n `../../../node_modules/@squoosh-kit/${packageName}/dist/${workerFile}`,\n // Alternative npm structure for cases where packages are flattened\n `../../../${packageName}/dist/${workerFile}`,\n ];\n\n let lastError: Error | null = null;\n\n for (const relPath of pathStrategies) {\n console.log('relPath:', relPath);\n console.log('import.meta.url:', import.meta.url);\n try {\n const workerUrl = new URL(relPath, import.meta.url);\n console.log(\n `[worker-helper] Trying path strategy. Full Worker URL: ${workerUrl.href}`\n );\n const worker = new Worker(workerUrl, {\n type: 'module',\n });\n console.log(\n `[worker-helper] Successfully created worker with URL: ${workerUrl.href}`\n );\n return worker;\n } catch (error) {\n console.warn(\n `[worker-helper] Path strategy failed for ${relPath}:`,\n error\n );\n lastError = error instanceof Error ? error : new Error(String(error));\n // Continue to next strategy\n }\n }\n\n // If all strategies failed, throw the last error\n if (lastError) {\n console.error('[worker-helper] All path strategies failed.', lastError);\n throw lastError;\n }\n throw new Error(\n `Could not resolve worker ${normalizedName} using any available path strategy`\n );\n }\n\n // Fallbacks for monorepo/dev without build artifacts\n const platformExt = isBun() ? '.bun.js' : '.node.mjs';\n const baseName = normalizedName.replace('.js', '');\n\n // 1) Try TypeScript source first (Bun can transpile TS, works in dev)\n const srcRelPath = workerConfig.package.includes('resize')\n ? `../../resize/src/${baseName}.ts`\n : `../../webp/src/${baseName}.ts`;\n\n console.log('srcRelPath:', srcRelPath);\n console.log('import.meta.url:', import.meta.url);\n try {\n return new Worker(new URL(srcRelPath, import.meta.url), {\n type: 'module',\n });\n } catch {\n // 2) Try dist output (if already built)\n const distRelPath = workerConfig.package.includes('resize')\n ? `../../resize/dist/${baseName}.${platformExt.slice(1)}`\n : `../../webp/dist/${baseName}.${platformExt.slice(1)}`;\n\n console.log('distRelPath:', distRelPath);\n console.log('import.meta.url:', import.meta.url);\n try {\n return new Worker(new URL(distRelPath, import.meta.url), {\n type: 'module',\n });\n } catch {\n // 3) Try import.meta.resolve as last resort\n if (typeof import.meta.resolve === 'function') {\n try {\n const resolved = import.meta.resolve(\n `${workerConfig.package}/${workerConfig.specifier}`\n );\n console.log('resolved:', resolved);\n return new Worker(resolved, { type: 'module' });\n } catch {\n // Continue to error below\n }\n }\n }\n }\n\n // If we get here, all fallbacks failed\n throw new Error(\n `Failed to create worker from ${normalizedName}. ` +\n `Tried TypeScript source, dist output, and import.meta.resolve. ` +\n `Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`\n );\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n throw new Error(\n `Failed to create worker from ${normalizedName}: ${errorMessage}. ` +\n `Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed. ` +\n `If you're using Vite, ensure the worker files are not being optimized as dependencies.`\n );\n }\n}\n\n/**\n * Create a worker with initialization timeout and ready signal handling\n *\n * This is a higher-level function that creates a worker and waits for it\n * to signal that it's ready to receive messages.\n *\n * @param workerFilename - The name of the worker file\n * @param timeoutMs - Timeout in milliseconds (default: 10000)\n * @returns Promise that resolves to a ready Worker instance\n * @throws Error if worker creation fails or times out\n */\nexport function createReadyWorker(\n workerFilename: string,\n options?: CreateWorkerOptions,\n timeoutMs: number = 10000\n): Promise<Worker> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(\n new Error(\n `Worker initialization timeout after ${timeoutMs}ms. Worker file: ${workerFilename}`\n )\n );\n }, timeoutMs);\n\n let worker: Worker;\n try {\n worker = createCodecWorker(workerFilename, options);\n } catch (error) {\n clearTimeout(timeout);\n reject(error);\n return;\n }\n\n const handleMessage = (event: MessageEvent) => {\n if (event.data?.type === 'worker:ready') {\n clearTimeout(timeout);\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n worker.removeEventListener('messageerror', handleMessageError);\n resolve(worker);\n }\n };\n\n const handleError = (event: ErrorEvent) => {\n clearTimeout(timeout);\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n worker.removeEventListener('messageerror', handleMessageError);\n reject(\n new Error(\n `Worker failed to start: ${event?.message || 'Unknown error'}. Worker file: ${workerFilename}`\n )\n );\n };\n\n const handleMessageError = () => {\n clearTimeout(timeout);\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n worker.removeEventListener('messageerror', handleMessageError);\n reject(\n new Error(\n `Worker message error during initialization. Worker file: ${workerFilename}`\n )\n );\n };\n\n worker.addEventListener('message', handleMessage);\n worker.addEventListener('error', handleError);\n worker.addEventListener('messageerror', handleMessageError);\n worker.postMessage({ type: 'worker:ping' });\n });\n}\n",
7
8
  "/**\n * Bridge implementation for the WebP 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 { EncodeInputOptions } from './types';\n\nexport type BridgeOptions = {\n assetPath?: string;\n};\n\ninterface WebPBridge {\n encode(\n image: ImageInput,\n options?: EncodeInputOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array>;\n terminate(): Promise<void>;\n}\n\nclass WebpClientBridge implements WebPBridge {\n async encode(\n image: ImageInput,\n options?: EncodeInputOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array> {\n // Dynamically import the client encoder to avoid module loading issues in Vite\n const module = await import('./webp.worker.js');\n const webpEncodeClient = module.webpEncodeClient as (\n image: ImageInput,\n options?: EncodeInputOptions,\n signal?: AbortSignal\n ) => Promise<Uint8Array>;\n return webpEncodeClient(image, options, signal);\n }\n\n async terminate(): Promise<void> {\n // Client mode has nothing to terminate\n }\n}\n\nclass WebpWorkerBridge implements WebPBridge {\n private worker: Worker | null = null;\n private workerReady: Promise<Worker> | null = null;\n private options?: BridgeOptions;\n\n constructor(options?: BridgeOptions) {\n console.log(\n '[webp/bridge] WebpWorkerBridge constructor called with options:',\n options\n );\n this.options = options;\n }\n\n private async getWorker(): Promise<Worker> {\n if (!this.workerReady) {\n this.workerReady = this.createWorker();\n }\n return this.workerReady;\n }\n\n private async createWorker(): Promise<Worker> {\n console.log('[webp/bridge] createWorker called. Creating ready worker...');\n this.worker = await createReadyWorker('webp.worker.js', this.options);\n console.log(\n '[webp/bridge] createWorker: Ready worker created successfully.'\n );\n return this.worker;\n }\n\n async encode(\n image: ImageInput,\n options?: EncodeInputOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array> {\n const worker = await this.getWorker();\n\n validateImageInput(image);\n return callWorker(worker, 'webp:encode', { image, options }, signal);\n }\n\n async terminate(): Promise<void> {\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n this.workerReady = null;\n }\n }\n}\n\nexport function createBridge(\n mode: 'worker' | 'client',\n options?: BridgeOptions\n): WebPBridge {\n console.log(`[webp/bridge] createBridge called with mode: ${mode}`);\n if (mode === 'worker') {\n return new WebpWorkerBridge(options);\n }\n return new WebpClientBridge();\n}\n",
@@ -9,7 +10,7 @@
9
10
  "/**\n * Bridge implementation for the Resize package, handling worker and client modes.\n */\n\nimport {\n callWorker,\n createReadyWorker,\n type ImageInput,\n} from '@squoosh-kit/runtime';\nimport { validateImageInput } from '@squoosh-kit/runtime';\nimport type { ResizeOptions } from './types.ts';\n\nexport type BridgeOptions = {\n assetPath?: string;\n};\n\ninterface ResizeBridge {\n resize(\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ): Promise<ImageInput>;\n terminate(): Promise<void>;\n}\n\nclass ResizeClientBridge implements ResizeBridge {\n async resize(\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ): Promise<ImageInput> {\n // Dynamically import the client resizer to avoid module loading issues in Vite\n const module = await import('./resize.worker.ts');\n const resizeClient = module.resizeClient as (\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ) => Promise<ImageInput>;\n return resizeClient(image, options, signal);\n }\n\n async terminate(): Promise<void> {\n // Client mode has nothing to terminate\n }\n}\n\nclass ResizeWorkerBridge implements ResizeBridge {\n private worker: Worker | null = null;\n private workerReady: Promise<Worker> | null = null;\n private options?: BridgeOptions;\n\n constructor(options?: BridgeOptions) {\n this.options = options;\n }\n\n private async getWorker(): Promise<Worker> {\n if (!this.workerReady) {\n this.workerReady = this.createWorker();\n }\n return this.workerReady;\n }\n\n private async createWorker(): Promise<Worker> {\n this.worker = await createReadyWorker('resize.worker.js', this.options);\n return this.worker;\n }\n\n async resize(\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ): Promise<ImageInput> {\n const worker = await this.getWorker();\n\n validateImageInput(image);\n\n try {\n const result = await callWorker<\n { image: ImageInput; options: ResizeOptions },\n ImageInput\n >(worker, 'resize:run', { image, options }, signal);\n\n return result;\n } catch (error) {\n console.error('Resize error:', error);\n throw error;\n }\n }\n\n async terminate(): Promise<void> {\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n this.workerReady = null;\n }\n }\n}\n\nexport function createBridge(\n mode: 'worker' | 'client',\n options?: BridgeOptions\n): ResizeBridge {\n if (mode === 'worker') {\n return new ResizeWorkerBridge(options);\n }\n return new ResizeClientBridge();\n}\n",
10
11
  "/**\n * @squoosh-kit/resize public API\n */\n\nimport type { ImageInput } from '@squoosh-kit/runtime';\nimport { createBridge, type BridgeOptions } from './bridge';\nimport type { ResizeOptions } from './types';\n\nexport type { ImageInput, ResizeOptions };\n\n// Global bridge instance for reuse\nlet globalClientBridge: ReturnType<typeof createBridge> | null = null;\n\n/**\n * A resizable image processor that can be reused for multiple operations.\n * Can be terminated to clean up associated resources (especially workers).\n */\nexport type ResizerFactory = ((\n imageData: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n) => Promise<ImageInput>) & {\n /**\n * Terminates the resizer and cleans up resources.\n * Important for worker mode to prevent memory leaks.\n *\n * @example\n * const resizer = createResizer('worker');\n * try {\n * const result = await resizer(imageData, options);\n * } finally {\n * await resizer.terminate();\n * }\n */\n terminate(): Promise<void>;\n};\n\n/**\n * Resizes an image. Uses worker mode for UI responsiveness.\n *\n * @param imageData - The image data to resize.\n * @param options - Resize options.\n * @param signal - (Optional) AbortSignal to cancel the resizing operation.\n * If provided, you can cancel the operation by calling\n * `controller.abort()` on the associated AbortController.\n * If not provided, the operation cannot be cancelled.\n * @returns A Promise resolving to the resized image data.\n *\n * @example\n * // With cancellation support\n * const controller = new AbortController();\n * const result = await resize(imageData, { width: 800 }, controller.signal);\n * setTimeout(() => controller.abort(), 5000);\n *\n * @example\n * // Without cancellation (operation cannot be stopped)\n * const result = await resize(imageData, { width: 800 });\n */\nexport async function resize(\n imageData: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n): Promise<ImageInput> {\n // Use worker mode for UI responsiveness - prevents blocking the main thread\n if (!globalClientBridge) {\n globalClientBridge = createBridge('worker');\n }\n\n return globalClientBridge.resize(imageData, options, signal);\n}\n\n/**\n * Creates a reusable resizer function for a specific execution mode.\n *\n * @param mode - The execution mode, either 'worker' or 'client'.\n * @returns A function that resizes an image with optional AbortSignal.\n */\nexport function createResizer(\n mode: 'worker' | 'client' = 'worker',\n options?: BridgeOptions\n): ResizerFactory {\n const bridge = createBridge(mode, options);\n\n return Object.assign(\n (imageData: ImageInput, options: ResizeOptions, signal?: AbortSignal) => {\n return bridge.resize(imageData, options, signal);\n },\n {\n terminate: async () => {\n await bridge.terminate();\n },\n }\n );\n}\n"
11
12
  ],
12
- "mappings": "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",
13
- "debugId": "0390E3019FF0240264756E2164756E21",
13
+ "mappings": "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",
14
+ "debugId": "7D2DFC7D57885DF664756E2164756E21",
14
15
  "names": []
15
16
  }
@@ -1,3 +1,3 @@
1
- import{d as W,e as j,f as N,h as T}from"./chunk-d3fxpzrq.js";var v=0;async function D(G,L,H,Q,J){return new Promise((V,K)=>{let O=++v;if(Q?.aborted){K(new DOMException("Aborted","AbortError"));return}let X=(_)=>{let $=_.data;if($.id!==O)return;if(S(),$.ok&&$.data!==void 0)V($.data);else K(Error($.error||"Unknown worker error"))},Y=(_)=>{S(),K(Error(`Worker error: ${_.message}`))},I=()=>{S(),K(new DOMException("Aborted","AbortError"))},S=()=>{G.removeEventListener("message",X),G.removeEventListener("error",Y),Q?.removeEventListener("abort",I)};G.addEventListener("message",X),G.addEventListener("error",Y),Q?.addEventListener("abort",I);let Z={type:L,id:O,payload:H};if(J&&J.length>0)G.postMessage(Z,J);else G.postMessage(Z)})}function F(G,L){let H=G.endsWith(".js")?G:`${G}.js`,Q={"resize.worker.js":{package:"@squoosh-kit/resize",specifier:"resize.worker.js"},"webp.worker.js":{package:"@squoosh-kit/webp",specifier:"webp.worker.js"}},J=Q[H];if(!J)throw Error(`Unknown worker: ${H}. Supported workers: ${Object.keys(Q).join(", ")}`);try{if(typeof window<"u"){let X=J.package.split("/")[1],Y=H.replace(".js",".browser.mjs");if(console.log("[worker-helper] In browser environment. Trying to create worker:"),console.log(`[worker-helper] - Package Name: ${X}`),console.log(`[worker-helper] - Worker File: ${Y}`),L?.assetPath){let Z=L.assetPath;if(!Z.startsWith("/"))Z="/"+Z;if(Z.endsWith("/"))Z=Z.slice(0,-1);let _=`${Z}/${X}/${Y}`,$=new URL(_,window.location.origin).href;console.log(`[worker-helper] Using provided assetPath. Full Worker URL: ${$}`);try{let x=new Worker($,{type:"module"});return console.log(`[worker-helper] Successfully created worker with assetPath: ${$}`),x}catch(x){throw console.error(`[worker-helper] Failed to load worker from assetPath URL: ${$}`,x),Error(`Worker failed to load from ${$}: ${x instanceof Error?x.message:String(x)}`)}}let I=[`../../${X}/dist/${Y}`,`../../../node_modules/@squoosh-kit/${X}/dist/${Y}`,`../../../${X}/dist/${Y}`],S=null;for(let Z of I){console.log("relPath:",Z),console.log("import.meta.url:",import.meta.url);try{let _=new URL(Z,import.meta.url);console.log(`[worker-helper] Trying path strategy. Full Worker URL: ${_.href}`);let $=new Worker(_,{type:"module"});return console.log(`[worker-helper] Successfully created worker with URL: ${_.href}`),$}catch(_){console.warn(`[worker-helper] Path strategy failed for ${Z}:`,_),S=_ instanceof Error?_:Error(String(_))}}if(S)throw console.error("[worker-helper] All path strategies failed.",S),S;throw Error(`Could not resolve worker ${H} using any available path strategy`)}let V=N()?".bun.js":".node.mjs",K=H.replace(".js",""),O=J.package.includes("resize")?`../../resize/src/${K}.ts`:`../../webp/src/${K}.ts`;console.log("srcRelPath:",O),console.log("import.meta.url:",import.meta.url);try{return new Worker(new URL(O,import.meta.url),{type:"module"})}catch{let X=J.package.includes("resize")?`../../resize/dist/${K}.${V.slice(1)}`:`../../webp/dist/${K}.${V.slice(1)}`;console.log("distRelPath:",X),console.log("import.meta.url:",import.meta.url);try{return new Worker(new URL(X,import.meta.url),{type:"module"})}catch{if(typeof import.meta.resolve==="function")try{let Y=import.meta.resolve(`${J.package}/${J.specifier}`);return console.log("resolved:",Y),new Worker(Y,{type:"module"})}catch{}}}throw Error(`Failed to create worker from ${H}. Tried TypeScript source, dist output, and import.meta.resolve. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`)}catch(V){let K=V instanceof Error?V.message:String(V);throw Error(`Failed to create worker from ${H}: ${K}. 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 U(G,L,H=1e4){return new Promise((Q,J)=>{let V=setTimeout(()=>{J(Error(`Worker initialization timeout after ${H}ms. Worker file: ${G}`))},H),K;try{K=F(G,L)}catch(I){clearTimeout(V),J(I);return}let O=(I)=>{if(I.data?.type==="worker:ready")clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),Q(K)},X=(I)=>{clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),J(Error(`Worker failed to start: ${I?.message||"Unknown error"}. Worker file: ${G}`))},Y=()=>{clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),J(Error(`Worker message error during initialization. Worker file: ${G}`))};K.addEventListener("message",O),K.addEventListener("error",X),K.addEventListener("messageerror",Y),K.postMessage({type:"worker:ping"})})}class E{async encode(G,L,H){let J=(await import("./chunk-74bcayvr.js")).webpEncodeClient;return J(G,L,H)}async terminate(){}}class M{worker=null;workerReady=null;options;constructor(G){console.log("[webp/bridge] WebpWorkerBridge constructor called with options:",G),this.options=G}async getWorker(){if(!this.workerReady)this.workerReady=this.createWorker();return this.workerReady}async createWorker(){return console.log("[webp/bridge] createWorker called. Creating ready worker..."),this.worker=await U("webp.worker.js",this.options),console.log("[webp/bridge] createWorker: Ready worker created successfully."),this.worker}async encode(G,L,H){let Q=await this.getWorker();return T(G),D(Q,"webp:encode",{image:G,options:L},H)}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function q(G,L){if(console.log(`[webp/bridge] createBridge called with mode: ${G}`),G==="worker")return new M(L);return new E}var R=null;async function w(G,L,H){if(!R)R=q("worker");return R.encode(G,L,H)}function p(G="worker",L){let H=q(G,L);return Object.assign((Q,J,V)=>{return H.encode(Q,J,V)},{terminate:async()=>{await H.terminate()}})}class B{async resize(G,L,H){let J=(await import("./chunk-5d1w8na7.js")).resizeClient;return J(G,L,H)}async terminate(){}}class P{worker=null;workerReady=null;options;constructor(G){this.options=G}async getWorker(){if(!this.workerReady)this.workerReady=this.createWorker();return this.workerReady}async createWorker(){return this.worker=await U("resize.worker.js",this.options),this.worker}async resize(G,L,H){let Q=await this.getWorker();T(G);try{return await D(Q,"resize:run",{image:G,options:L},H)}catch(J){throw console.error("Resize error:",J),J}}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function A(G,L){if(G==="worker")return new P(L);return new B}var y=null;async function s(G,L,H){if(!y)y=A("worker");return y.resize(G,L,H)}function n(G="worker",L){let H=A(G,L);return Object.assign((Q,J,V)=>{return H.resize(Q,J,V)},{terminate:async()=>{await H.terminate()}})}export{s as resize,w as encode,p as createWebpEncoder,n as createResizer};
1
+ import{b as W,c as j,d as T}from"./chunk-mm6wmg56.js";function N(){return typeof Bun<"u"}var F=0;async function U(G,L,H,Q,J){return new Promise((V,K)=>{let O=++F;if(Q?.aborted){K(new DOMException("Aborted","AbortError"));return}let X=(_)=>{let $=_.data;if($.id!==O)return;if(S(),$.ok&&$.data!==void 0)V($.data);else K(Error($.error||"Unknown worker error"))},Y=(_)=>{S(),K(Error(`Worker error: ${_.message}`))},I=()=>{S(),K(new DOMException("Aborted","AbortError"))},S=()=>{G.removeEventListener("message",X),G.removeEventListener("error",Y),Q?.removeEventListener("abort",I)};G.addEventListener("message",X),G.addEventListener("error",Y),Q?.addEventListener("abort",I);let Z={type:L,id:O,payload:H};if(J&&J.length>0)G.postMessage(Z,J);else G.postMessage(Z)})}function v(G,L){let H=G.endsWith(".js")?G:`${G}.js`,Q={"resize.worker.js":{package:"@squoosh-kit/resize",specifier:"resize.worker.js"},"webp.worker.js":{package:"@squoosh-kit/webp",specifier:"webp.worker.js"}},J=Q[H];if(!J)throw Error(`Unknown worker: ${H}. Supported workers: ${Object.keys(Q).join(", ")}`);try{if(typeof window<"u"){let X=J.package.split("/")[1],Y=H.replace(".js",".browser.mjs");if(console.log("[worker-helper] In browser environment. Trying to create worker:"),console.log(`[worker-helper] - Package Name: ${X}`),console.log(`[worker-helper] - Worker File: ${Y}`),L?.assetPath){let Z=L.assetPath;if(!Z.startsWith("/"))Z="/"+Z;if(Z.endsWith("/"))Z=Z.slice(0,-1);let _=`${Z}/${X}/${Y}`,$=new URL(_,window.location.origin).href;console.log(`[worker-helper] Using provided assetPath. Full Worker URL: ${$}`);try{let x=new Worker($,{type:"module"});return console.log(`[worker-helper] Successfully created worker with assetPath: ${$}`),x}catch(x){throw console.error(`[worker-helper] Failed to load worker from assetPath URL: ${$}`,x),Error(`Worker failed to load from ${$}: ${x instanceof Error?x.message:String(x)}`)}}let I=[`../../${X}/dist/${Y}`,`../../../node_modules/@squoosh-kit/${X}/dist/${Y}`,`../../../${X}/dist/${Y}`],S=null;for(let Z of I){console.log("relPath:",Z),console.log("import.meta.url:",import.meta.url);try{let _=new URL(Z,import.meta.url);console.log(`[worker-helper] Trying path strategy. Full Worker URL: ${_.href}`);let $=new Worker(_,{type:"module"});return console.log(`[worker-helper] Successfully created worker with URL: ${_.href}`),$}catch(_){console.warn(`[worker-helper] Path strategy failed for ${Z}:`,_),S=_ instanceof Error?_:Error(String(_))}}if(S)throw console.error("[worker-helper] All path strategies failed.",S),S;throw Error(`Could not resolve worker ${H} using any available path strategy`)}let V=N()?".bun.js":".node.mjs",K=H.replace(".js",""),O=J.package.includes("resize")?`../../resize/src/${K}.ts`:`../../webp/src/${K}.ts`;console.log("srcRelPath:",O),console.log("import.meta.url:",import.meta.url);try{return new Worker(new URL(O,import.meta.url),{type:"module"})}catch{let X=J.package.includes("resize")?`../../resize/dist/${K}.${V.slice(1)}`:`../../webp/dist/${K}.${V.slice(1)}`;console.log("distRelPath:",X),console.log("import.meta.url:",import.meta.url);try{return new Worker(new URL(X,import.meta.url),{type:"module"})}catch{if(typeof import.meta.resolve==="function")try{let Y=import.meta.resolve(`${J.package}/${J.specifier}`);return console.log("resolved:",Y),new Worker(Y,{type:"module"})}catch{}}}throw Error(`Failed to create worker from ${H}. Tried TypeScript source, dist output, and import.meta.resolve. Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`)}catch(V){let K=V instanceof Error?V.message:String(V);throw Error(`Failed to create worker from ${H}: ${K}. 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 D(G,L,H=1e4){return new Promise((Q,J)=>{let V=setTimeout(()=>{J(Error(`Worker initialization timeout after ${H}ms. Worker file: ${G}`))},H),K;try{K=v(G,L)}catch(I){clearTimeout(V),J(I);return}let O=(I)=>{if(I.data?.type==="worker:ready")clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),Q(K)},X=(I)=>{clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),J(Error(`Worker failed to start: ${I?.message||"Unknown error"}. Worker file: ${G}`))},Y=()=>{clearTimeout(V),K.removeEventListener("message",O),K.removeEventListener("error",X),K.removeEventListener("messageerror",Y),J(Error(`Worker message error during initialization. Worker file: ${G}`))};K.addEventListener("message",O),K.addEventListener("error",X),K.addEventListener("messageerror",Y),K.postMessage({type:"worker:ping"})})}class E{async encode(G,L,H){let J=(await import("./chunk-rht1286y.js")).webpEncodeClient;return J(G,L,H)}async terminate(){}}class M{worker=null;workerReady=null;options;constructor(G){console.log("[webp/bridge] WebpWorkerBridge constructor called with options:",G),this.options=G}async getWorker(){if(!this.workerReady)this.workerReady=this.createWorker();return this.workerReady}async createWorker(){return console.log("[webp/bridge] createWorker called. Creating ready worker..."),this.worker=await D("webp.worker.js",this.options),console.log("[webp/bridge] createWorker: Ready worker created successfully."),this.worker}async encode(G,L,H){let Q=await this.getWorker();return T(G),U(Q,"webp:encode",{image:G,options:L},H)}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function q(G,L){if(console.log(`[webp/bridge] createBridge called with mode: ${G}`),G==="worker")return new M(L);return new E}var R=null;async function p(G,L,H){if(!R)R=q("worker");return R.encode(G,L,H)}function k(G="worker",L){let H=q(G,L);return Object.assign((Q,J,V)=>{return H.encode(Q,J,V)},{terminate:async()=>{await H.terminate()}})}class B{async resize(G,L,H){let J=(await import("./chunk-yv042k8x.js")).resizeClient;return J(G,L,H)}async terminate(){}}class P{worker=null;workerReady=null;options;constructor(G){this.options=G}async getWorker(){if(!this.workerReady)this.workerReady=this.createWorker();return this.workerReady}async createWorker(){return this.worker=await D("resize.worker.js",this.options),this.worker}async resize(G,L,H){let Q=await this.getWorker();T(G);try{return await U(Q,"resize:run",{image:G,options:L},H)}catch(J){throw console.error("Resize error:",J),J}}async terminate(){if(this.worker)this.worker.terminate(),this.worker=null,this.workerReady=null}}function A(G,L){if(G==="worker")return new P(L);return new B}var y=null;async function n(G,L,H){if(!y)y=A("worker");return y.resize(G,L,H)}function i(G="worker",L){let H=A(G,L);return Object.assign((Q,J,V)=>{return H.resize(Q,J,V)},{terminate:async()=>{await H.terminate()}})}export{n as resize,p as encode,k as createWebpEncoder,i as createResizer};
2
2
 
3
- //# debugId=1C1FB27EA90E895D64756E2164756E21
3
+ //# debugId=D4937290C5C83C0D64756E2164756E21
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../runtime/src/worker-call.ts", "../../runtime/src/worker-helper.ts", "../../webp/src/bridge.ts", "../../webp/src/index.ts", "../../resize/src/bridge.ts", "../../resize/src/index.ts"],
3
+ "sources": ["../../runtime/src/env.ts", "../../runtime/src/worker-call.ts", "../../runtime/src/worker-helper.ts", "../../webp/src/bridge.ts", "../../webp/src/index.ts", "../../resize/src/bridge.ts", "../../resize/src/index.ts"],
4
4
  "sourcesContent": [
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",
5
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",
6
7
  "/**\n * Worker helper utilities for creating and managing Web Workers\n *\n * This module provides centralized logic for creating worker instances\n * in different environments (browser, Node.js, Bun) using import.meta.resolve\n * for server-side and package-relative paths for browsers.\n */\n\nimport { isBun } from './env';\n\nexport type CreateWorkerOptions = {\n assetPath?: string;\n};\n\n/**\n * Create a Web Worker for a specific codec\n *\n * In Node.js/Bun environments, uses import.meta.resolve to locate worker files.\n * In browser environments, uses relative paths within node_modules that Vite can resolve.\n *\n * @param workerFilename - The name of the worker file (e.g., 'resize.worker' or 'webp.worker')\n * @returns Worker instance\n * @throws Error if worker creation fails with detailed error message\n */\nexport function createCodecWorker(\n workerFilename: string,\n options?: CreateWorkerOptions\n): Worker {\n // Ensure filename has correct format\n const normalizedName = workerFilename.endsWith('.js')\n ? workerFilename\n : `${workerFilename}.js`;\n\n // Map worker filenames to their package and export\n const workerMap: Record<string, { package: string; specifier: string }> = {\n 'resize.worker.js': {\n package: '@squoosh-kit/resize',\n specifier: 'resize.worker.js',\n },\n 'webp.worker.js': {\n package: '@squoosh-kit/webp',\n specifier: 'webp.worker.js',\n },\n };\n\n const workerConfig = workerMap[normalizedName];\n if (!workerConfig) {\n throw new Error(\n `Unknown worker: ${normalizedName}. ` +\n `Supported workers: ${Object.keys(workerMap).join(', ')}`\n );\n }\n\n try {\n // In browser contexts, use relative paths within the installed packages\n if (typeof window !== 'undefined') {\n const packageName = workerConfig.package.split('/')[1]; // Extract 'resize' or 'webp'\n const workerFile = normalizedName.replace('.js', '.browser.mjs');\n\n console.log(\n `[worker-helper] In browser environment. Trying to create worker:`\n );\n console.log(`[worker-helper] - Package Name: ${packageName}`);\n console.log(`[worker-helper] - Worker File: ${workerFile}`);\n\n // If a custom asset path is provided, use it directly\n if (options?.assetPath) {\n // Normalize the asset path - ensure it starts with / and ends without /\n let normalizedAssetPath = options.assetPath;\n if (!normalizedAssetPath.startsWith('/')) {\n normalizedAssetPath = '/' + normalizedAssetPath;\n }\n if (normalizedAssetPath.endsWith('/')) {\n normalizedAssetPath = normalizedAssetPath.slice(0, -1);\n }\n\n // Construct absolute URL: {origin}{assetPath}/{package}/{workerFile}\n const workerPath = `${normalizedAssetPath}/${packageName}/${workerFile}`;\n const workerUrl = new URL(workerPath, window.location.origin).href;\n\n console.log(\n `[worker-helper] Using provided assetPath. Full Worker URL: ${workerUrl}`\n );\n try {\n const worker = new Worker(workerUrl, { type: 'module' });\n console.log(\n `[worker-helper] Successfully created worker with assetPath: ${workerUrl}`\n );\n return worker;\n } catch (e) {\n console.error(\n `[worker-helper] Failed to load worker from assetPath URL: ${workerUrl}`,\n e\n );\n throw new Error(\n `Worker failed to load from ${workerUrl}: ${e instanceof Error ? e.message : String(e)}`\n );\n }\n }\n\n // Try multiple path strategies to support both:\n // 1. Monorepo development structure: ../../{package}/dist/{workerFile}\n // 2. npm installed structure: ../../../{package}/dist/{workerFile}\n const pathStrategies = [\n // First try monorepo structure (when runtime is at packages/runtime/src)\n `../../${packageName}/dist/${workerFile}`,\n // Then try npm structure (when runtime is at node_modules/@squoosh-kit/runtime)\n `../../../node_modules/@squoosh-kit/${packageName}/dist/${workerFile}`,\n // Alternative npm structure for cases where packages are flattened\n `../../../${packageName}/dist/${workerFile}`,\n ];\n\n let lastError: Error | null = null;\n\n for (const relPath of pathStrategies) {\n console.log('relPath:', relPath);\n console.log('import.meta.url:', import.meta.url);\n try {\n const workerUrl = new URL(relPath, import.meta.url);\n console.log(\n `[worker-helper] Trying path strategy. Full Worker URL: ${workerUrl.href}`\n );\n const worker = new Worker(workerUrl, {\n type: 'module',\n });\n console.log(\n `[worker-helper] Successfully created worker with URL: ${workerUrl.href}`\n );\n return worker;\n } catch (error) {\n console.warn(\n `[worker-helper] Path strategy failed for ${relPath}:`,\n error\n );\n lastError = error instanceof Error ? error : new Error(String(error));\n // Continue to next strategy\n }\n }\n\n // If all strategies failed, throw the last error\n if (lastError) {\n console.error('[worker-helper] All path strategies failed.', lastError);\n throw lastError;\n }\n throw new Error(\n `Could not resolve worker ${normalizedName} using any available path strategy`\n );\n }\n\n // Fallbacks for monorepo/dev without build artifacts\n const platformExt = isBun() ? '.bun.js' : '.node.mjs';\n const baseName = normalizedName.replace('.js', '');\n\n // 1) Try TypeScript source first (Bun can transpile TS, works in dev)\n const srcRelPath = workerConfig.package.includes('resize')\n ? `../../resize/src/${baseName}.ts`\n : `../../webp/src/${baseName}.ts`;\n\n console.log('srcRelPath:', srcRelPath);\n console.log('import.meta.url:', import.meta.url);\n try {\n return new Worker(new URL(srcRelPath, import.meta.url), {\n type: 'module',\n });\n } catch {\n // 2) Try dist output (if already built)\n const distRelPath = workerConfig.package.includes('resize')\n ? `../../resize/dist/${baseName}.${platformExt.slice(1)}`\n : `../../webp/dist/${baseName}.${platformExt.slice(1)}`;\n\n console.log('distRelPath:', distRelPath);\n console.log('import.meta.url:', import.meta.url);\n try {\n return new Worker(new URL(distRelPath, import.meta.url), {\n type: 'module',\n });\n } catch {\n // 3) Try import.meta.resolve as last resort\n if (typeof import.meta.resolve === 'function') {\n try {\n const resolved = import.meta.resolve(\n `${workerConfig.package}/${workerConfig.specifier}`\n );\n console.log('resolved:', resolved);\n return new Worker(resolved, { type: 'module' });\n } catch {\n // Continue to error below\n }\n }\n }\n }\n\n // If we get here, all fallbacks failed\n throw new Error(\n `Failed to create worker from ${normalizedName}. ` +\n `Tried TypeScript source, dist output, and import.meta.resolve. ` +\n `Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed.`\n );\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n throw new Error(\n `Failed to create worker from ${normalizedName}: ${errorMessage}. ` +\n `Ensure the @squoosh-kit/resize and @squoosh-kit/webp packages are installed. ` +\n `If you're using Vite, ensure the worker files are not being optimized as dependencies.`\n );\n }\n}\n\n/**\n * Create a worker with initialization timeout and ready signal handling\n *\n * This is a higher-level function that creates a worker and waits for it\n * to signal that it's ready to receive messages.\n *\n * @param workerFilename - The name of the worker file\n * @param timeoutMs - Timeout in milliseconds (default: 10000)\n * @returns Promise that resolves to a ready Worker instance\n * @throws Error if worker creation fails or times out\n */\nexport function createReadyWorker(\n workerFilename: string,\n options?: CreateWorkerOptions,\n timeoutMs: number = 10000\n): Promise<Worker> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(\n new Error(\n `Worker initialization timeout after ${timeoutMs}ms. Worker file: ${workerFilename}`\n )\n );\n }, timeoutMs);\n\n let worker: Worker;\n try {\n worker = createCodecWorker(workerFilename, options);\n } catch (error) {\n clearTimeout(timeout);\n reject(error);\n return;\n }\n\n const handleMessage = (event: MessageEvent) => {\n if (event.data?.type === 'worker:ready') {\n clearTimeout(timeout);\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n worker.removeEventListener('messageerror', handleMessageError);\n resolve(worker);\n }\n };\n\n const handleError = (event: ErrorEvent) => {\n clearTimeout(timeout);\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n worker.removeEventListener('messageerror', handleMessageError);\n reject(\n new Error(\n `Worker failed to start: ${event?.message || 'Unknown error'}. Worker file: ${workerFilename}`\n )\n );\n };\n\n const handleMessageError = () => {\n clearTimeout(timeout);\n worker.removeEventListener('message', handleMessage);\n worker.removeEventListener('error', handleError);\n worker.removeEventListener('messageerror', handleMessageError);\n reject(\n new Error(\n `Worker message error during initialization. Worker file: ${workerFilename}`\n )\n );\n };\n\n worker.addEventListener('message', handleMessage);\n worker.addEventListener('error', handleError);\n worker.addEventListener('messageerror', handleMessageError);\n worker.postMessage({ type: 'worker:ping' });\n });\n}\n",
7
8
  "/**\n * Bridge implementation for the WebP 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 { EncodeInputOptions } from './types';\n\nexport type BridgeOptions = {\n assetPath?: string;\n};\n\ninterface WebPBridge {\n encode(\n image: ImageInput,\n options?: EncodeInputOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array>;\n terminate(): Promise<void>;\n}\n\nclass WebpClientBridge implements WebPBridge {\n async encode(\n image: ImageInput,\n options?: EncodeInputOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array> {\n // Dynamically import the client encoder to avoid module loading issues in Vite\n const module = await import('./webp.worker.js');\n const webpEncodeClient = module.webpEncodeClient as (\n image: ImageInput,\n options?: EncodeInputOptions,\n signal?: AbortSignal\n ) => Promise<Uint8Array>;\n return webpEncodeClient(image, options, signal);\n }\n\n async terminate(): Promise<void> {\n // Client mode has nothing to terminate\n }\n}\n\nclass WebpWorkerBridge implements WebPBridge {\n private worker: Worker | null = null;\n private workerReady: Promise<Worker> | null = null;\n private options?: BridgeOptions;\n\n constructor(options?: BridgeOptions) {\n console.log(\n '[webp/bridge] WebpWorkerBridge constructor called with options:',\n options\n );\n this.options = options;\n }\n\n private async getWorker(): Promise<Worker> {\n if (!this.workerReady) {\n this.workerReady = this.createWorker();\n }\n return this.workerReady;\n }\n\n private async createWorker(): Promise<Worker> {\n console.log('[webp/bridge] createWorker called. Creating ready worker...');\n this.worker = await createReadyWorker('webp.worker.js', this.options);\n console.log(\n '[webp/bridge] createWorker: Ready worker created successfully.'\n );\n return this.worker;\n }\n\n async encode(\n image: ImageInput,\n options?: EncodeInputOptions,\n signal?: AbortSignal\n ): Promise<Uint8Array> {\n const worker = await this.getWorker();\n\n validateImageInput(image);\n return callWorker(worker, 'webp:encode', { image, options }, signal);\n }\n\n async terminate(): Promise<void> {\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n this.workerReady = null;\n }\n }\n}\n\nexport function createBridge(\n mode: 'worker' | 'client',\n options?: BridgeOptions\n): WebPBridge {\n console.log(`[webp/bridge] createBridge called with mode: ${mode}`);\n if (mode === 'worker') {\n return new WebpWorkerBridge(options);\n }\n return new WebpClientBridge();\n}\n",
@@ -9,7 +10,7 @@
9
10
  "/**\n * Bridge implementation for the Resize package, handling worker and client modes.\n */\n\nimport {\n callWorker,\n createReadyWorker,\n type ImageInput,\n} from '@squoosh-kit/runtime';\nimport { validateImageInput } from '@squoosh-kit/runtime';\nimport type { ResizeOptions } from './types.ts';\n\nexport type BridgeOptions = {\n assetPath?: string;\n};\n\ninterface ResizeBridge {\n resize(\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ): Promise<ImageInput>;\n terminate(): Promise<void>;\n}\n\nclass ResizeClientBridge implements ResizeBridge {\n async resize(\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ): Promise<ImageInput> {\n // Dynamically import the client resizer to avoid module loading issues in Vite\n const module = await import('./resize.worker.ts');\n const resizeClient = module.resizeClient as (\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ) => Promise<ImageInput>;\n return resizeClient(image, options, signal);\n }\n\n async terminate(): Promise<void> {\n // Client mode has nothing to terminate\n }\n}\n\nclass ResizeWorkerBridge implements ResizeBridge {\n private worker: Worker | null = null;\n private workerReady: Promise<Worker> | null = null;\n private options?: BridgeOptions;\n\n constructor(options?: BridgeOptions) {\n this.options = options;\n }\n\n private async getWorker(): Promise<Worker> {\n if (!this.workerReady) {\n this.workerReady = this.createWorker();\n }\n return this.workerReady;\n }\n\n private async createWorker(): Promise<Worker> {\n this.worker = await createReadyWorker('resize.worker.js', this.options);\n return this.worker;\n }\n\n async resize(\n image: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n ): Promise<ImageInput> {\n const worker = await this.getWorker();\n\n validateImageInput(image);\n\n try {\n const result = await callWorker<\n { image: ImageInput; options: ResizeOptions },\n ImageInput\n >(worker, 'resize:run', { image, options }, signal);\n\n return result;\n } catch (error) {\n console.error('Resize error:', error);\n throw error;\n }\n }\n\n async terminate(): Promise<void> {\n if (this.worker) {\n this.worker.terminate();\n this.worker = null;\n this.workerReady = null;\n }\n }\n}\n\nexport function createBridge(\n mode: 'worker' | 'client',\n options?: BridgeOptions\n): ResizeBridge {\n if (mode === 'worker') {\n return new ResizeWorkerBridge(options);\n }\n return new ResizeClientBridge();\n}\n",
10
11
  "/**\n * @squoosh-kit/resize public API\n */\n\nimport type { ImageInput } from '@squoosh-kit/runtime';\nimport { createBridge, type BridgeOptions } from './bridge';\nimport type { ResizeOptions } from './types';\n\nexport type { ImageInput, ResizeOptions };\n\n// Global bridge instance for reuse\nlet globalClientBridge: ReturnType<typeof createBridge> | null = null;\n\n/**\n * A resizable image processor that can be reused for multiple operations.\n * Can be terminated to clean up associated resources (especially workers).\n */\nexport type ResizerFactory = ((\n imageData: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n) => Promise<ImageInput>) & {\n /**\n * Terminates the resizer and cleans up resources.\n * Important for worker mode to prevent memory leaks.\n *\n * @example\n * const resizer = createResizer('worker');\n * try {\n * const result = await resizer(imageData, options);\n * } finally {\n * await resizer.terminate();\n * }\n */\n terminate(): Promise<void>;\n};\n\n/**\n * Resizes an image. Uses worker mode for UI responsiveness.\n *\n * @param imageData - The image data to resize.\n * @param options - Resize options.\n * @param signal - (Optional) AbortSignal to cancel the resizing operation.\n * If provided, you can cancel the operation by calling\n * `controller.abort()` on the associated AbortController.\n * If not provided, the operation cannot be cancelled.\n * @returns A Promise resolving to the resized image data.\n *\n * @example\n * // With cancellation support\n * const controller = new AbortController();\n * const result = await resize(imageData, { width: 800 }, controller.signal);\n * setTimeout(() => controller.abort(), 5000);\n *\n * @example\n * // Without cancellation (operation cannot be stopped)\n * const result = await resize(imageData, { width: 800 });\n */\nexport async function resize(\n imageData: ImageInput,\n options: ResizeOptions,\n signal?: AbortSignal\n): Promise<ImageInput> {\n // Use worker mode for UI responsiveness - prevents blocking the main thread\n if (!globalClientBridge) {\n globalClientBridge = createBridge('worker');\n }\n\n return globalClientBridge.resize(imageData, options, signal);\n}\n\n/**\n * Creates a reusable resizer function for a specific execution mode.\n *\n * @param mode - The execution mode, either 'worker' or 'client'.\n * @returns A function that resizes an image with optional AbortSignal.\n */\nexport function createResizer(\n mode: 'worker' | 'client' = 'worker',\n options?: BridgeOptions\n): ResizerFactory {\n const bridge = createBridge(mode, options);\n\n return Object.assign(\n (imageData: ImageInput, options: ResizeOptions, signal?: AbortSignal) => {\n return bridge.resize(imageData, options, signal);\n },\n {\n terminate: async () => {\n await bridge.terminate();\n },\n }\n );\n}\n"
11
12
  ],
12
- "mappings": "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",
13
- "debugId": "1C1FB27EA90E895D64756E2164756E21",
13
+ "mappings": "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",
14
+ "debugId": "D4937290C5C83C0D64756E2164756E21",
14
15
  "names": []
15
16
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@squoosh-kit/core",
3
- "version": "0.1.15",
3
+ "version": "0.1.17",
4
4
  "type": "module",
5
5
  "description": "Per-feature adapters around Squoosh codecs, worker/client runtimes.",
6
6
  "author": "Bartosz Nowak <bnowak008@gmail.com>",
@@ -62,7 +62,7 @@
62
62
  "typecheck": "tsc --noEmit"
63
63
  },
64
64
  "dependencies": {
65
- "@squoosh-kit/webp": "0.1.14",
66
- "@squoosh-kit/resize": "0.1.14"
65
+ "@squoosh-kit/webp": "0.1.16",
66
+ "@squoosh-kit/resize": "0.1.16"
67
67
  }
68
68
  }
@@ -1,3 +0,0 @@
1
- import{a as v,b as z,c as A}from"./chunk-6qtap428.js";import{h as P}from"./chunk-rta7shf1.js";function D(f){if(typeof f!=="object"||f===null)throw TypeError("options must be an object");let b=f;if(b.width!==void 0){if(typeof b.width!=="number"||!Number.isInteger(b.width)||b.width<=0)throw RangeError(`options.width must be a positive integer, got ${b.width}`)}if(b.height!==void 0){if(typeof b.height!=="number"||!Number.isInteger(b.height)||b.height<=0)throw RangeError(`options.height must be a positive integer, got ${b.height}`)}if(b.method!==void 0){let $=["triangular","catrom","mitchell","lanczos3"];if(!$.includes(b.method))throw TypeError(`options.method must be one of: ${$.join(", ")}, got ${b.method}`)}if(b.premultiply!==void 0&&typeof b.premultiply!=="boolean")throw TypeError(`options.premultiply must be boolean, got ${typeof b.premultiply}`);if(b.linearRGB!==void 0&&typeof b.linearRGB!=="boolean")throw TypeError(`options.linearRGB must be boolean, got ${typeof b.linearRGB}`)}var K,X=null;function H(){if(X===null||X.buffer!==K.memory.buffer)X=new Uint8Array(K.memory.buffer);return X}var O=0;function C(f,b){let $=b(f.length*1);return H().set(f,$/1),O=f.length,$}var Y=null;function L(){if(Y===null||Y.buffer!==K.memory.buffer)Y=new Int32Array(K.memory.buffer);return Y}var Z=null;function U(){if(Z===null||Z.buffer!==K.memory.buffer)Z=new Uint8ClampedArray(K.memory.buffer);return Z}function W(f,b){return U().subarray(f/1,f/1+b)}function V(f,b,$,j,J,G,N,Q){try{let B=K.__wbindgen_add_to_stack_pointer(-16);var T=C(f,K.__wbindgen_malloc),I=O;K.resize(B,T,I,b,$,j,J,G,N,Q);var q=L()[B/4+0],x=L()[B/4+1],w=W(q,x).slice();return K.__wbindgen_free(q,x*1),w}finally{K.__wbindgen_add_to_stack_pointer(16)}}async function h(f,b){if(typeof Response==="function"&&f instanceof Response){if(typeof WebAssembly.instantiateStreaming==="function")try{return await WebAssembly.instantiateStreaming(f,b)}catch(j){if(f.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",j);else throw j}let $=await f.arrayBuffer();return await WebAssembly.instantiate($,b)}else{let $=await WebAssembly.instantiate(f,b);if($ instanceof WebAssembly.Instance)return{instance:$,module:f};else return $}}async function S(f){if(typeof f>"u")f=new URL("squoosh_resize_bg.wasm",import.meta.url);let b={};if(typeof f==="string"||typeof Request==="function"&&f instanceof Request||typeof URL==="function"&&f instanceof URL)f=fetch(f);let{instance:$,module:j}=await h(await f,b);return K=$.exports,S.__wbindgen_wasm_module=j,K}var F=S;var k=null,R=null;async function y(){if(k)return;if(R)return R;return R=(async()=>{try{let f=new URL(".",import.meta.url),b=["./wasm/squoosh_resize_bg.wasm","../wasm/squoosh_resize_bg.wasm"],$=null,j=null;for(let J of b)try{$=await v(J,f);break}catch(G){j=G instanceof Error?G:Error(String(G))}if(!$)throw j||Error("Could not load WASM binary from any path");try{await F($)}catch(J){if(J instanceof Error&&(J.message.includes("SharedArrayBuffer")||J.message.includes("first argument must be"))){if(typeof SharedArrayBuffer>"u")globalThis.SharedArrayBuffer=ArrayBuffer;try{await F($)}catch(G){throw Error(`WASM module initialization failed even with polyfill: ${G instanceof Error?G.message:String(G)}`)}}else throw J}k=V}catch(f){throw R=null,Error(`Failed to initialize resize WASM module: ${f instanceof Error?f.message:String(f)}`)}})(),R}async function E(f,b){if(P(f),D(b),await y(),!k)throw Error("Resize module not initialized");let{data:$,width:j,height:J}=f,G=b.width??j,N=b.height??J;if(b.width&&!b.height)N=Math.max(1,Math.round(J*b.width/j));else if(b.height&&!b.width)G=Math.max(1,Math.round(j*b.height/J));if(G<1||N<1)throw RangeError(`Output dimensions must be at least 1x1, got ${G}x${N}`);let Q=$ instanceof Uint8ClampedArray?new Uint8Array($.buffer,$.byteOffset,$.length):new Uint8Array($.buffer,$.byteOffset,$.length);return{data:k(Q,j,J,G,N,l(b),b.premultiply??!0,b.linearRGB??!0),width:G,height:N}}async function d(f,b,$){if($?.aborted)throw new DOMException("Aborted","AbortError");return E(f,b)}function l(f){return{triangular:0,catrom:1,mitchell:2,lanczos3:3}[f?.method??"lanczos3"]??3}if(typeof self<"u")self.onmessage=async(f)=>{let b=f.data;if(b?.type==="worker:ping"){self.postMessage({type:"worker:ready"});return}let{id:$,type:j,payload:J}=b;try{if(j!=="resize:run")throw Error(`Unknown message type: ${j}`);let G=await E(J.image,J.options),N=new Uint8ClampedArray(G.data),Q={...G,data:N};z($,Q,[N.buffer])}catch(G){A($,G)}};export{d as resizeClient};
2
-
3
- //# debugId=A0B09BBA455ABB1F64756E2164756E21
@@ -1,3 +0,0 @@
1
- import{a as v,b as z,c as A}from"./chunk-f8hc5gnf.js";import{h as P}from"./chunk-d3fxpzrq.js";function D(f){if(typeof f!=="object"||f===null)throw TypeError("options must be an object");let b=f;if(b.width!==void 0){if(typeof b.width!=="number"||!Number.isInteger(b.width)||b.width<=0)throw RangeError(`options.width must be a positive integer, got ${b.width}`)}if(b.height!==void 0){if(typeof b.height!=="number"||!Number.isInteger(b.height)||b.height<=0)throw RangeError(`options.height must be a positive integer, got ${b.height}`)}if(b.method!==void 0){let $=["triangular","catrom","mitchell","lanczos3"];if(!$.includes(b.method))throw TypeError(`options.method must be one of: ${$.join(", ")}, got ${b.method}`)}if(b.premultiply!==void 0&&typeof b.premultiply!=="boolean")throw TypeError(`options.premultiply must be boolean, got ${typeof b.premultiply}`);if(b.linearRGB!==void 0&&typeof b.linearRGB!=="boolean")throw TypeError(`options.linearRGB must be boolean, got ${typeof b.linearRGB}`)}var K,X=null;function H(){if(X===null||X.buffer!==K.memory.buffer)X=new Uint8Array(K.memory.buffer);return X}var O=0;function C(f,b){let $=b(f.length*1);return H().set(f,$/1),O=f.length,$}var Y=null;function L(){if(Y===null||Y.buffer!==K.memory.buffer)Y=new Int32Array(K.memory.buffer);return Y}var Z=null;function U(){if(Z===null||Z.buffer!==K.memory.buffer)Z=new Uint8ClampedArray(K.memory.buffer);return Z}function W(f,b){return U().subarray(f/1,f/1+b)}function V(f,b,$,j,J,G,N,Q){try{let B=K.__wbindgen_add_to_stack_pointer(-16);var T=C(f,K.__wbindgen_malloc),I=O;K.resize(B,T,I,b,$,j,J,G,N,Q);var q=L()[B/4+0],x=L()[B/4+1],w=W(q,x).slice();return K.__wbindgen_free(q,x*1),w}finally{K.__wbindgen_add_to_stack_pointer(16)}}async function h(f,b){if(typeof Response==="function"&&f instanceof Response){if(typeof WebAssembly.instantiateStreaming==="function")try{return await WebAssembly.instantiateStreaming(f,b)}catch(j){if(f.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",j);else throw j}let $=await f.arrayBuffer();return await WebAssembly.instantiate($,b)}else{let $=await WebAssembly.instantiate(f,b);if($ instanceof WebAssembly.Instance)return{instance:$,module:f};else return $}}async function S(f){if(typeof f>"u")f=new URL("squoosh_resize_bg.wasm",import.meta.url);let b={};if(typeof f==="string"||typeof Request==="function"&&f instanceof Request||typeof URL==="function"&&f instanceof URL)f=fetch(f);let{instance:$,module:j}=await h(await f,b);return K=$.exports,S.__wbindgen_wasm_module=j,K}var F=S;var k=null,R=null;async function y(){if(k)return;if(R)return R;return R=(async()=>{try{let f=new URL(".",import.meta.url),b=["./wasm/squoosh_resize_bg.wasm","../wasm/squoosh_resize_bg.wasm"],$=null,j=null;for(let J of b)try{$=await v(J,f);break}catch(G){j=G instanceof Error?G:Error(String(G))}if(!$)throw j||Error("Could not load WASM binary from any path");try{await F($)}catch(J){if(J instanceof Error&&(J.message.includes("SharedArrayBuffer")||J.message.includes("first argument must be"))){if(typeof SharedArrayBuffer>"u")globalThis.SharedArrayBuffer=ArrayBuffer;try{await F($)}catch(G){throw Error(`WASM module initialization failed even with polyfill: ${G instanceof Error?G.message:String(G)}`)}}else throw J}k=V}catch(f){throw R=null,Error(`Failed to initialize resize WASM module: ${f instanceof Error?f.message:String(f)}`)}})(),R}async function E(f,b){if(P(f),D(b),await y(),!k)throw Error("Resize module not initialized");let{data:$,width:j,height:J}=f,G=b.width??j,N=b.height??J;if(b.width&&!b.height)N=Math.max(1,Math.round(J*b.width/j));else if(b.height&&!b.width)G=Math.max(1,Math.round(j*b.height/J));if(G<1||N<1)throw RangeError(`Output dimensions must be at least 1x1, got ${G}x${N}`);let Q=$ instanceof Uint8ClampedArray?new Uint8Array($.buffer,$.byteOffset,$.length):new Uint8Array($.buffer,$.byteOffset,$.length);return{data:k(Q,j,J,G,N,l(b),b.premultiply??!0,b.linearRGB??!0),width:G,height:N}}async function d(f,b,$){if($?.aborted)throw new DOMException("Aborted","AbortError");return E(f,b)}function l(f){return{triangular:0,catrom:1,mitchell:2,lanczos3:3}[f?.method??"lanczos3"]??3}if(typeof self<"u")self.onmessage=async(f)=>{let b=f.data;if(b?.type==="worker:ping"){self.postMessage({type:"worker:ready"});return}let{id:$,type:j,payload:J}=b;try{if(j!=="resize:run")throw Error(`Unknown message type: ${j}`);let G=await E(J.image,J.options),N=new Uint8ClampedArray(G.data),Q={...G,data:N};z($,Q,[N.buffer])}catch(G){A($,G)}};export{d as resizeClient};
2
-
3
- //# debugId=A0B09BBA455ABB1F64756E2164756E21
@@ -1,4 +0,0 @@
1
- import{d as J,e as K,f as G,g as H}from"./chunk-rta7shf1.js";async function I(z){let j=z.toString();if(H()&&!G()&&(j.startsWith("file:")||!j.includes("://")))try{let q=await import("fs/promises"),D=z instanceof URL?z:j;return(await q.readFile(D)).buffer}catch(q){console.warn("[io] fs read failed, falling back to fetch",q)}let C=await fetch(j);if(!C.ok)throw Error(`Failed to fetch ${j}: ${C.statusText}`);return C.arrayBuffer()}async function R(z,j){let C=j?typeof j==="string"?new URL(".",j):new URL(".",j.href):new URL(".",import.meta.url),q=new URL(z,C);console.log(`[WasmLoader] Loading WASM from relative path: ${z}`),console.log(`[WasmLoader] Base URL (import.meta.url): ${C.href}`),console.log(`[WasmLoader] Constructed full URL: ${q.href}`);try{return await I(q)}catch(D){throw console.error(`[WasmLoader] CRITICAL: Fetching WASM binary from ${q.href} failed.`,D),D}}function W(z,j,C=[]){let q={id:z,ok:!0,data:j},D=C.filter((E)=>!(E instanceof SharedArrayBuffer));self.postMessage(q,D)}function X(z,j){let C=j instanceof Error?j.message:String(j),q={id:z,ok:!1,error:C};self.postMessage(q)}
2
- export{R as a,W as b,X as c};
3
-
4
- //# debugId=B06AB8414FB50F3F64756E2164756E21
@@ -1,12 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../runtime/src/io.ts", "../../runtime/src/wasm-loader.ts", "../../runtime/src/worker-utils.ts"],
4
- "sourcesContent": [
5
- "import { isNode, isBun } from './env';\n\n/**\n * Reads a file as an ArrayBuffer, handling platform differences.\n * - Node.js: Uses fs/promises for file:// URLs (prevents fetch errors)\n * - Browser/Bun: Uses standard fetch\n */\nexport async function readFileAsBuffer(\n url: URL | string\n): Promise<ArrayBuffer> {\n const urlStr = url.toString();\n\n // Node.js (non-Bun) file:// handling\n if (\n isNode() &&\n !isBun() &&\n (urlStr.startsWith('file:') || !urlStr.includes('://'))\n ) {\n try {\n // Dynamic import prevents bundling 'fs' in browser builds\n const fs = await import('fs/promises');\n const path = url instanceof URL ? url : urlStr;\n const buffer = await fs.readFile(path);\n return buffer.buffer as ArrayBuffer;\n } catch (e) {\n console.warn('[io] fs read failed, falling back to fetch', e);\n }\n }\n\n // Standard fetch (Browser, Bun, Node http)\n const res = await fetch(urlStr);\n if (!res.ok) throw new Error(`Failed to fetch ${urlStr}: ${res.statusText}`);\n return res.arrayBuffer();\n}\n",
6
- "/**\n * Load WASM binary from various sources with fallback strategies\n *\n * Supports:\n * - Node.js (fs/promises)\n * - Browsers (fetch)\n * - Workers (fetch)\n */\nimport { readFileAsBuffer } from './io';\n\nexport async function loadWasmBinary(\n relativePath: string,\n baseUrlOverride?: string | URL\n): Promise<ArrayBuffer> {\n // Get the base URL depending on the environment (worker or main thread)\n // If a base URL is provided, use it; otherwise use import.meta.url from this module\n // In a worker, import.meta.url is the worker's own URL.\n // In the main thread, it's the URL of the current module.\n const baseUrl = baseUrlOverride\n ? typeof baseUrlOverride === 'string'\n ? new URL('.', baseUrlOverride)\n : new URL('.', baseUrlOverride.href)\n : new URL('.', import.meta.url);\n const fullUrl = new URL(relativePath, baseUrl);\n\n console.log(`[WasmLoader] Loading WASM from relative path: ${relativePath}`);\n console.log(`[WasmLoader] Base URL (import.meta.url): ${baseUrl.href}`);\n console.log(`[WasmLoader] Constructed full URL: ${fullUrl.href}`);\n\n try {\n return await readFileAsBuffer(fullUrl);\n } catch (error) {\n console.error(\n `[WasmLoader] CRITICAL: Fetching WASM binary from ${fullUrl.href} failed.`,\n error\n );\n throw error;\n }\n}\n\n/**\n * Load WASM JavaScript module with fallback strategies\n *\n * Strategy 1: Static relative import (works everywhere)\n * Strategy 2: import.meta.resolve (Node.js 22+)\n * Strategy 3: URL-based import (browsers/workers)\n */\nexport async function loadWasmModule(\n modulePath: string\n): Promise<WebAssembly.Module> {\n // Strategy 1: Try direct static import\n try {\n return await import(/* @vite-ignore */ modulePath);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e1) {\n // Continue to next strategy\n }\n\n // Strategy 2: Try import.meta.resolve (Node.js 22+)\n try {\n const resolvedPath = await import.meta.resolve(modulePath);\n\n return await import(/* @vite-ignore */ resolvedPath);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e2) {\n // Continue to next strategy\n }\n\n // Strategy 3: Try URL-based import\n try {\n const url = new URL(/* @vite-ignore */ modulePath, import.meta.url);\n\n return await import(/* @vite-ignore */ url.href);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e3) {\n throw new Error(\n `Failed to load WASM module from \"${modulePath}\". ` +\n `Ensure WASM files are in the expected location and the module can be resolved.`\n );\n }\n}\n",
7
- "import type { WorkerResponse } from './worker-call';\n\n/**\n * Defines the subset of DedicatedWorkerGlobalScope needed for posting messages.\n * Used to cast 'self' to resolve TypeScript overload conflicts between\n * DOM types and Bun types (which define Transferable differently).\n */\ninterface WorkerScope {\n postMessage(message: unknown, transfer: Transferable[]): void;\n}\n\n/**\n * Safely sends a success response from a worker, handling Transferables automatically.\n * Filters out SharedArrayBuffers which cannot be transferred.\n */\nexport function respondSuccess<T>(\n id: number,\n data: T,\n transfer: Transferable[] = []\n) {\n const response: WorkerResponse<T> = { id, ok: true, data };\n\n // Safety check: SharedArrayBuffer cannot be in the transfer list\n const safeTransfer = transfer.filter(\n (t) => !(t instanceof SharedArrayBuffer)\n );\n\n // Cast self to WorkerScope to avoid TypeScript errors where it confuses\n // the worker global scope with the window scope (expecting targetOrigin),\n // or conflicts between DOM Transferable and Bun.Transferable types.\n (self as unknown as WorkerScope).postMessage(response, safeTransfer);\n}\n\n/**\n * Sends an error response from a worker.\n */\nexport function respondError(id: number, error: unknown) {\n const msg = error instanceof Error ? error.message : String(error);\n const response: WorkerResponse<never> = { id, ok: false, error: msg };\n self.postMessage(response);\n}\n"
8
- ],
9
- "mappings": "6DAOA,eAAsB,CAAgB,CACpC,EACsB,CACtB,IAAM,EAAS,EAAI,SAAS,EAG5B,GACE,EAAO,GACP,CAAC,EAAM,IACN,EAAO,WAAW,OAAO,GAAK,CAAC,EAAO,SAAS,KAAK,GAErD,GAAI,CAEF,IAAM,EAAK,KAAa,uBAClB,EAAO,aAAe,IAAM,EAAM,EAExC,OADe,MAAM,EAAG,SAAS,CAAI,GACvB,OACd,MAAO,EAAG,CACV,QAAQ,KAAK,6CAA8C,CAAC,EAKhE,IAAM,EAAM,MAAM,MAAM,CAAM,EAC9B,GAAI,CAAC,EAAI,GAAI,MAAU,MAAM,mBAAmB,MAAW,EAAI,YAAY,EAC3E,OAAO,EAAI,YAAY,ECtBzB,eAAsB,CAAc,CAClC,EACA,EACsB,CAKtB,IAAM,EAAU,EACZ,OAAO,IAAoB,SACzB,IAAI,IAAI,IAAK,CAAe,EAC5B,IAAI,IAAI,IAAK,EAAgB,IAAI,EACnC,IAAI,IAAI,IAAK,YAAY,GAAG,EAC1B,EAAU,IAAI,IAAI,EAAc,CAAO,EAE7C,QAAQ,IAAI,iDAAiD,GAAc,EAC3E,QAAQ,IAAI,4CAA4C,EAAQ,MAAM,EACtE,QAAQ,IAAI,sCAAsC,EAAQ,MAAM,EAEhE,GAAI,CACF,OAAO,MAAM,EAAiB,CAAO,EACrC,MAAO,EAAO,CAKd,MAJA,QAAQ,MACN,oDAAoD,EAAQ,eAC5D,CACF,EACM,GCrBH,SAAS,CAAiB,CAC/B,EACA,EACA,EAA2B,CAAC,EAC5B,CACA,IAAM,EAA8B,CAAE,KAAI,GAAI,GAAM,MAAK,EAGnD,EAAe,EAAS,OAC5B,CAAC,IAAM,EAAE,aAAa,kBACxB,EAKC,KAAgC,YAAY,EAAU,CAAY,EAM9D,SAAS,CAAY,CAAC,EAAY,EAAgB,CACvD,IAAM,EAAM,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,EAC3D,EAAkC,CAAE,KAAI,GAAI,GAAO,MAAO,CAAI,EACpE,KAAK,YAAY,CAAQ",
10
- "debugId": "B06AB8414FB50F3F64756E2164756E21",
11
- "names": []
12
- }
@@ -1,3 +0,0 @@
1
- import{a as G,b as X,c as C}from"./chunk-f8hc5gnf.js";import{h as Q}from"./chunk-d3fxpzrq.js";var N=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]));var B=null,u=null;async function R(){if(B!==null)return B;if(u)return u;return u=(async()=>{try{return B=await N(),B}catch(A){return B=!1,console.warn("SIMD detection failed, falling back to standard WASM modules:",A),!1}})(),u}function E(A){if(A===void 0)return;if(typeof A!=="object"||A===null)throw TypeError("options must be an object or undefined");let y=A;if("quality"in y&&y.quality!==void 0){let n=y.quality;if(Number.isNaN(n))throw RangeError("quality must be a valid number in the range 0-100, got NaN");if(typeof n!=="number")throw TypeError("quality must be a number");if(!Number.isInteger(n))throw RangeError("quality must be an integer in the range 0-100, got floating point");if(n<0||n>100)throw RangeError(`quality must be in the range 0-100, got ${n}`)}}var W=null;async function j(){if(W)return W;let A=await R(),y=A?"webp/webp_enc_simd.js":"webp/webp_enc.js";try{console.log("[WebP Worker] Initializing. SIMD support:",A),console.log(`[WebP Worker] Attempting to import module from path: ${y}`);let n=typeof self<"u"?self:globalThis;if(!n.location)n.location={href:import.meta.url};if(typeof self>"u"&&typeof globalThis<"u")globalThis.self=globalThis;let r,f=["./wasm/"+y,"../wasm/"+y],e=null;for(let a of f)try{r=(await import(a)).default,console.log(`[WebP Worker] Successfully loaded module from: ${a}`);break}catch(b){e=b instanceof Error?b:Error(String(b)),console.warn(`[WebP Worker] Failed to load from ${a}, trying next path...`)}if(!r)throw e||Error("Could not load WebP module from any path");console.log("[WebP Worker] Module factory loaded successfully.");let l=A?["./wasm/webp/webp_enc_simd.wasm","../wasm/webp/webp_enc_simd.wasm"]:["./wasm/webp/webp_enc.wasm","../wasm/webp/webp_enc.wasm"];return console.log(`[WebP Worker] Preparing to load WASM binary. Will try paths: ${l.join(", ")}`),W=await(async(a,b)=>{let v=new URL(".",import.meta.url),g=null;for(let c of b)try{console.log(`[WebP Worker] Calling loadWasmBinary with path: ${c}`);let w=await G(c,v);console.log(`[WebP Worker] Successfully fetched WASM binary from ${c}. Size: ${w.byteLength} bytes.`);let x=typeof self<"u"?self:globalThis;if(!x.location)x.location={href:import.meta.url};if(typeof self>"u"&&typeof globalThis<"u")globalThis.self=globalThis;return await a({noInitialRun:!0,wasmBinary:w})}catch(w){g=w instanceof Error?w:Error(String(w)),console.warn(`[WebP Worker] Failed to load WASM from ${c}, trying next path...`)}throw g||Error("Could not load WASM binary from any of the attempted paths")})(r,l),console.log("[WebP Worker] WebP module initialized successfully."),W}catch(n){throw console.error(`[WebP Worker] CRITICAL: Failed to load WebP module from path: ${y}`,n),n}}function I(A){return{quality:A?.quality??75,target_size:0,target_PSNR:0,method:A?.method??4,sns_strength:A?.sns_strength??50,filter_strength:A?.filter_strength??60,filter_sharpness:A?.filter_sharpness??0,filter_type:A?.filter_type??1,partitions:A?.partitions??0,segments:A?.segments??4,pass:A?.pass??1,show_compressed:0,preprocessing:A?.preprocessing??0,autofilter:A?.autofilter??0,partition_limit:0,alpha_compression:A?.alpha_compression??1,alpha_filtering:A?.alpha_filtering??1,alpha_quality:A?.alpha_quality??A?.quality??75,lossless:A?.lossless?1:0,exact:A?.exact??0,image_hint:A?.image_hint??0,emulate_jpeg_size:0,thread_level:0,low_memory:0,near_lossless:A?.near_lossless??A?.quality??75,use_delta_palette:0,use_sharp_yuv:A?.use_sharp_yuv??0}}async function z(A,y,n){if(Q(A),E(y),n?.aborted)throw new DOMException("Aborted","AbortError");let{width:r,height:f,data:e}=A;if(!(e instanceof Uint8Array)&&!(e instanceof Uint8ClampedArray))throw Error("Image data must be Uint8Array or Uint8ClampedArray");let l=performance.now(),U=await j(),a=performance.now();if(typeof console<"u"&&console.log)console.log(`[WebP] module loading took ${(a-l).toFixed(2)}ms`),console.log(`[WebP] Module type: ${W&&"encode"in W?"Ready":"Unknown"}`);if(n?.aborted)throw new DOMException("Aborted","AbortError");let b=I(y),v=e instanceof Uint8ClampedArray?new Uint8Array(e.buffer,e.byteOffset,e.length):new Uint8Array(e.buffer,e.byteOffset,e.length);if(typeof console<"u"&&console.log)console.log("[WebP] encode options:",b);let g=performance.now(),c=U.encode(v,r,f,b),w=performance.now();if(typeof console<"u"&&console.log)console.log(`[WebP] actual encoding took ${(w-g).toFixed(2)}ms`);if(n?.aborted)throw new DOMException("Aborted","AbortError");if(!c)throw Error("WebP encoding failed");return c}if(typeof self<"u")self.onmessage=async(A)=>{let y=A.data;if(y?.type==="worker:ping"){self.postMessage({type:"worker:ready"});return}let n=y;try{if(n.type==="webp:encode"){let{image:r,options:f}=n.payload,e=performance.now(),l=new AbortController,U=await z(r,f,l.signal),a=performance.now();if(typeof console<"u"&&console.log)console.log(`[WebP Worker] encode took ${(a-e).toFixed(2)}ms`);let b=new Uint8Array(U);X(n.id,b,[b.buffer])}else C(n.id,`Unknown message type: ${n.type}`)}catch(r){C(n.id,r)}};export{z as webpEncodeClient};
2
-
3
- //# debugId=E34C30C32159311B64756E2164756E21