@squoosh-kit/webp 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bridge.d.ts CHANGED
@@ -8,3 +8,4 @@ interface WebPBridge {
8
8
  }
9
9
  export declare function createBridge(mode: 'worker' | 'client'): WebPBridge;
10
10
  export {};
11
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,UAAU,UAAU;IAClB,MAAM,CACJ,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAAC;CACxB;AAoCD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAElE"}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * @squoosh-kit/webp public API
3
3
  */
4
4
  import type { ImageInput } from '@squoosh-kit/runtime';
5
- import type { WebpOptions } from './types.js';
5
+ import type { WebpOptions } from './types';
6
6
  export type { ImageInput, WebpOptions };
7
7
  /**
8
8
  * Encodes an image to WebP format. Defaults to 'worker' mode.
@@ -22,4 +22,5 @@ export declare function encode(signal: AbortSignal, imageData: ImageInput, optio
22
22
  * @returns A function that encodes an image to WebP format.
23
23
  */
24
24
  export declare function createWebpEncoder(mode?: 'worker' | 'client'): (signal: AbortSignal, image: ImageInput, options?: WebpOptions) => Promise<Uint8Array>;
25
- export { webpEncodeClient } from './webp.worker.js';
25
+ export { webpEncodeClient } from './webp.worker';
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAExC;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,UAAU,EACrB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAIrB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,QAAQ,GAAG,QAAmB,0FAGrE;AAID,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js.map CHANGED
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "/**\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 console.log('🔧 Worker call: Response received', response);\n cleanup();\n\n if (response.ok && response.data !== undefined) {\n console.log('🔧 Worker call: Response data', response.data);\n resolve(response.data);\n } else {\n console.log('🔧 Worker call: Response error', response.error);\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
6
  "/**\n * Bridge implementation for the WebP package, handling worker and client modes.\n */\n\nimport { callWorker, type ImageInput } from '@squoosh-kit/runtime';\nimport { webpEncodeClient } from './webp.worker.js';\nimport type { WebpOptions } from './types.js';\n\ninterface WebPBridge {\n encode(\n signal: AbortSignal,\n image: ImageInput,\n options?: WebpOptions\n ): Promise<Uint8Array>;\n}\n\nclass WebpClientBridge implements WebPBridge {\n async encode(\n signal: AbortSignal,\n image: ImageInput,\n options?: WebpOptions\n ): Promise<Uint8Array> {\n return webpEncodeClient(signal, image, options);\n }\n}\n\nclass WebpWorkerBridge implements WebPBridge {\n private worker: Worker | null = null;\n private async getWorker(): Promise<Worker> {\n if (!this.worker) {\n const workerUrl = await import.meta.resolve(\n '@squoosh-kit/webp/webp.worker.js'\n );\n this.worker = new Worker(workerUrl, { type: 'module' });\n }\n return this.worker;\n }\n async encode(\n signal: AbortSignal,\n image: ImageInput,\n options?: WebpOptions\n ): Promise<Uint8Array> {\n const worker = await this.getWorker();\n const buffer = image.data.buffer;\n return callWorker(worker, 'webp:encode', { image, options }, signal, [\n buffer as ArrayBuffer,\n ]);\n }\n}\n\nexport function createBridge(mode: 'worker' | 'client'): WebPBridge {\n return mode === 'client' ? new WebpClientBridge() : new WebpWorkerBridge();\n}\n",
7
- "/**\n * @squoosh-kit/webp public API\n */\n\nimport type { ImageInput } from '@squoosh-kit/runtime';\nimport { createBridge } from './bridge.js';\nimport type { WebpOptions } from './types.js';\n\nexport type { ImageInput, WebpOptions };\n\n/**\n * Encodes an image to WebP format. Defaults to 'worker' mode.\n *\n * @param signal - An AbortSignal to cancel the encoding operation.\n * @param imageData - The image data to encode.\n * @param options - WebP encoding options.\n * @returns A Promise resolving to the encoded WebP data as a Uint8Array.\n */\nexport async function encode(\n signal: AbortSignal,\n imageData: ImageInput,\n options?: WebpOptions\n): Promise<Uint8Array> {\n // Always use a worker for a single, one-off call for best performance.\n const bridge = createBridge('worker');\n return bridge.encode(signal, imageData, options);\n}\n\n/**\n * Creates a reusable WebP encoder function for a specific execution mode.\n * This is useful for processing multiple images without the overhead of\n * creating a new worker or client instance each time.\n *\n * @param mode - The execution mode, either 'worker' or 'client'.\n * @returns A function that encodes an image to WebP format.\n */\nexport function createWebpEncoder(mode: 'worker' | 'client' = 'worker') {\n const bridge = createBridge(mode);\n return bridge.encode.bind(bridge);\n}\n\n// Export the client-side implementation for direct use by the bridge.\n// This is not intended for public consumption.\nexport { webpEncodeClient } from './webp.worker.js';\n"
7
+ "/**\n * @squoosh-kit/webp public API\n */\n\nimport type { ImageInput } from '@squoosh-kit/runtime';\nimport { createBridge } from './bridge';\nimport type { WebpOptions } from './types';\n\nexport type { ImageInput, WebpOptions };\n\n/**\n * Encodes an image to WebP format. Defaults to 'worker' mode.\n *\n * @param signal - An AbortSignal to cancel the encoding operation.\n * @param imageData - The image data to encode.\n * @param options - WebP encoding options.\n * @returns A Promise resolving to the encoded WebP data as a Uint8Array.\n */\nexport async function encode(\n signal: AbortSignal,\n imageData: ImageInput,\n options?: WebpOptions\n): Promise<Uint8Array> {\n // Always use a worker for a single, one-off call for best performance.\n const bridge = createBridge('worker');\n return bridge.encode(signal, imageData, options);\n}\n\n/**\n * Creates a reusable WebP encoder function for a specific execution mode.\n * This is useful for processing multiple images without the overhead of\n * creating a new worker or client instance each time.\n *\n * @param mode - The execution mode, either 'worker' or 'client'.\n * @returns A function that encodes an image to WebP format.\n */\nexport function createWebpEncoder(mode: 'worker' | 'client' = 'worker') {\n const bridge = createBridge(mode);\n return bridge.encode.bind(bridge);\n}\n\n// Export the client-side implementation for direct use by the bridge.\n// This is not intended for public consumption.\nexport { webpEncodeClient } from './webp.worker';\n"
8
8
  ],
9
9
  "mappings": ";qCAiBA,IAAI,EAAY,EAYhB,eAAsB,CAA+B,CACnD,EACA,EACA,EACA,EACA,EACoB,CACpB,OAAO,IAAI,QAAmB,CAAC,EAAS,IAAW,CACjD,IAAM,EAAK,EAAE,EAGb,GAAI,GAAQ,QAAS,CACnB,EAAO,IAAI,aAAa,UAAW,YAAY,CAAC,EAChD,OAGF,IAAM,EAAgB,CAAC,IAAwB,CAC7C,IAAM,EAAW,EAAM,KACvB,GAAI,EAAS,KAAO,EAAI,OAKxB,GAHA,QAAQ,IAAI,8CAAoC,CAAQ,EACxD,EAAQ,EAEJ,EAAS,IAAM,EAAS,OAAS,OACnC,QAAQ,IAAI,0CAAgC,EAAS,IAAI,EACzD,EAAQ,EAAS,IAAI,EAErB,aAAQ,IAAI,2CAAiC,EAAS,KAAK,EAC3D,EAAW,MAAM,EAAS,OAAS,sBAAsB,CAAC,GAIxD,EAAc,CAAC,IAAsB,CACzC,EAAQ,EACR,EAAW,MAAM,iBAAiB,EAAM,SAAS,CAAC,GAG9C,EAAc,IAAM,CACxB,EAAQ,EACR,EAAO,IAAI,aAAa,UAAW,YAAY,CAAC,GAG5C,EAAU,IAAM,CACpB,EAAO,oBAAoB,UAAW,CAAa,EACnD,EAAO,oBAAoB,QAAS,CAAW,EAC/C,GAAQ,oBAAoB,QAAS,CAAW,GAIlD,EAAO,iBAAiB,UAAW,CAAa,EAChD,EAAO,iBAAiB,QAAS,CAAW,EAC5C,GAAQ,iBAAiB,QAAS,CAAW,EAG7C,IAAM,EAAmC,CAAE,OAAM,KAAI,SAAQ,EAE7D,GAAI,GAAY,EAAS,OAAS,EAChC,EAAO,YAAY,EAAS,CAAQ,EAEpC,OAAO,YAAY,CAAO,EAE7B,EC1EH,MAAM,CAAuC,MACrC,OAAM,CACV,EACA,EACA,EACqB,CACrB,OAAO,EAAiB,EAAQ,EAAO,CAAO,EAElD,CAEA,MAAM,CAAuC,CACnC,OAAwB,UAClB,UAAS,EAAoB,CACzC,GAAI,CAAC,KAAK,OAAQ,CAChB,IAAM,EAAY,MAAM,YAAY,QAClC,kCACF,EACA,KAAK,OAAS,IAAI,OAAO,EAAW,CAAE,KAAM,QAAS,CAAC,EAExD,OAAO,KAAK,YAER,OAAM,CACV,EACA,EACA,EACqB,CACrB,IAAM,EAAS,MAAM,KAAK,UAAU,EAC9B,EAAS,EAAM,KAAK,OAC1B,OAAO,EAAW,EAAQ,cAAe,CAAE,QAAO,SAAQ,EAAG,EAAQ,CACnE,CACF,CAAC,EAEL,CAEO,SAAS,CAAY,CAAC,EAAuC,CAClE,OAAO,IAAS,SAAW,IAAI,EAAqB,IAAI,ECjC1D,eAAsB,CAAM,CAC1B,EACA,EACA,EACqB,CAGrB,OADe,EAAa,QAAQ,EACtB,OAAO,EAAQ,EAAW,CAAO,EAW1C,SAAS,CAAiB,CAAC,EAA4B,SAAU,CACtE,IAAM,EAAS,EAAa,CAAI,EAChC,OAAO,EAAO,OAAO,KAAK,CAAM",
10
10
  "debugId": "BED8FE1C0F8F587E64756E2164756E21",
package/dist/types.d.ts CHANGED
@@ -21,3 +21,4 @@ export type WebpOptions = {
21
21
  */
22
22
  nearLossless?: boolean;
23
23
  };
24
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC"}
@@ -7,3 +7,4 @@ import type { WebpOptions } from './types.js';
7
7
  * Client-mode WebP encoder (exported for direct use)
8
8
  */
9
9
  export declare function webpEncodeClient(signal: AbortSignal, image: ImageInput, options?: WebpOptions): Promise<Uint8Array>;
10
+ //# sourceMappingURL=webp.worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webp.worker.d.ts","sourceRoot":"","sources":["../src/webp.worker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAqI9C;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAyCrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@squoosh-kit/webp",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "type": "module",
5
5
  "description": "WebP codec for squoosh-kit, providing encoding functionality.",
6
6
  "author": "Bartosz Nowak <bnowak008@gmail.com>",
@@ -15,6 +15,8 @@
15
15
  "access": "public",
16
16
  "registry": "https://registry.npmjs.org/"
17
17
  },
18
+ "main": "./dist/index.js",
19
+ "types": "./dist/index.d.ts",
18
20
  "exports": {
19
21
  ".": {
20
22
  "types": "./dist/index.d.ts",