@workglow/util 0.2.16 → 0.2.18

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 (66) hide show
  1. package/dist/browser.js +54 -23
  2. package/dist/browser.js.map +7 -6
  3. package/dist/bun.js +54 -23
  4. package/dist/bun.js.map +7 -6
  5. package/dist/di/Container.d.ts +0 -3
  6. package/dist/di/Container.d.ts.map +1 -1
  7. package/dist/di/PortCodecRegistry.d.ts +14 -0
  8. package/dist/di/PortCodecRegistry.d.ts.map +1 -0
  9. package/dist/di/index.d.ts +1 -0
  10. package/dist/di/index.d.ts.map +1 -1
  11. package/dist/media/color.d.ts +3 -3
  12. package/dist/media/color.d.ts.map +1 -1
  13. package/dist/media/cpuImage.d.ts +29 -0
  14. package/dist/media/cpuImage.d.ts.map +1 -0
  15. package/dist/media/encode.d.ts +11 -0
  16. package/dist/media/encode.d.ts.map +1 -0
  17. package/dist/media/filterRegistry.d.ts +13 -0
  18. package/dist/media/filterRegistry.d.ts.map +1 -0
  19. package/dist/media/gpuDevice.browser.d.ts +8 -0
  20. package/dist/media/gpuDevice.browser.d.ts.map +1 -0
  21. package/dist/media/gpuImage.d.ts +50 -0
  22. package/dist/media/gpuImage.d.ts.map +1 -0
  23. package/dist/media/gpuImageSchema.d.ts +8 -0
  24. package/dist/media/gpuImageSchema.d.ts.map +1 -0
  25. package/dist/media/imageCacheCodec.d.ts +9 -0
  26. package/dist/media/imageCacheCodec.d.ts.map +1 -0
  27. package/dist/media/imageHydrationResolver.d.ts +2 -0
  28. package/dist/media/imageHydrationResolver.d.ts.map +1 -0
  29. package/dist/media/imageRasterCodecRegistry.d.ts.map +1 -1
  30. package/dist/media/previewBudget.d.ts +23 -0
  31. package/dist/media/previewBudget.d.ts.map +1 -0
  32. package/dist/media/shaderRegistry.browser.d.ts +13 -0
  33. package/dist/media/shaderRegistry.browser.d.ts.map +1 -0
  34. package/dist/media/sharpImage.bun.d.ts +7 -0
  35. package/dist/media/sharpImage.bun.d.ts.map +1 -0
  36. package/dist/media/sharpImage.node.d.ts +93 -0
  37. package/dist/media/sharpImage.node.d.ts.map +1 -0
  38. package/dist/media/texturePool.browser.d.ts +17 -0
  39. package/dist/media/texturePool.browser.d.ts.map +1 -0
  40. package/dist/media/webGpuImage.browser.d.ts +40 -0
  41. package/dist/media/webGpuImage.browser.d.ts.map +1 -0
  42. package/dist/media-browser.d.ts +18 -3
  43. package/dist/media-browser.d.ts.map +1 -1
  44. package/dist/media-browser.js +850 -404
  45. package/dist/media-browser.js.map +21 -7
  46. package/dist/media-node.d.ts +21 -2
  47. package/dist/media-node.d.ts.map +1 -1
  48. package/dist/media-node.js +695 -312
  49. package/dist/media-node.js.map +20 -6
  50. package/dist/node.js +54 -23
  51. package/dist/node.js.map +7 -6
  52. package/dist/worker/WorkerManager.d.ts +6 -6
  53. package/dist/worker/WorkerManager.d.ts.map +1 -1
  54. package/dist/worker/WorkerServerBase.d.ts +8 -8
  55. package/dist/worker/WorkerServerBase.d.ts.map +1 -1
  56. package/dist/worker-browser.js +54 -23
  57. package/dist/worker-browser.js.map +7 -6
  58. package/dist/worker-bun.js +54 -23
  59. package/dist/worker-bun.js.map +7 -6
  60. package/dist/worker-node.js +54 -23
  61. package/dist/worker-node.js.map +7 -6
  62. package/package.json +4 -1
  63. package/dist/media/Image.browser.d.ts +0 -24
  64. package/dist/media/Image.browser.d.ts.map +0 -1
  65. package/dist/media/Image.d.ts +0 -100
  66. package/dist/media/Image.d.ts.map +0 -1
@@ -61,8 +61,5 @@ export declare class Container {
61
61
  */
62
62
  createChildContainer(): Container;
63
63
  }
64
- /**
65
- * Global container instance
66
- */
67
64
  export declare const globalContainer: Container;
68
65
  //# sourceMappingURL=Container.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../src/di/Container.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,SAAS,CAAgB;IAEjC;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,SAAS,UAAO,GAAG,IAAI,CAKnE;IAED;;;;;;OAMG;IACH,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,SAAS,UAAO,GAAG,IAAI,CAK3E;IAED;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAGpD;IAED;;;;OAIG;IACH,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CA2BvB;IAED;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE1B;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI1B;IAED;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAyB7B;IAEK,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3C;IAED;;;OAGG;IACH,oBAAoB,IAAI,SAAS,CAoBhC;CACF;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,WAAkB,CAAC"}
1
+ {"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../src/di/Container.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,SAAS,CAAgB;IAEjC;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,SAAS,UAAO,GAAG,IAAI,CAKnE;IAED;;;;;;OAMG;IACH,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,SAAS,UAAO,GAAG,IAAI,CAK3E;IAED;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAGpD;IAED;;;;OAIG;IACH,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CA2BvB;IAED;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE1B;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI1B;IAED;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAyB7B;IAEK,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3C;IAED;;;OAGG;IACH,oBAAoB,IAAI,SAAS,CAoBhC;CACF;AAYD,eAAO,MAAM,eAAe,EAA+B,SAAS,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @copyright
3
+ * Copyright 2026 Steven Roussey
4
+ * All Rights Reserved
5
+ */
6
+ export interface PortCodec<Live = unknown, Wire = unknown> {
7
+ serialize(value: Live): Promise<Wire>;
8
+ deserialize(value: Wire): Promise<Live>;
9
+ }
10
+ export declare function registerPortCodec<Live = unknown, Wire = unknown>(formatPrefix: string, codec: PortCodec<Live, Wire>): void;
11
+ export declare function getPortCodec(format: string): PortCodec | undefined;
12
+ /** @internal — test affordance only. */
13
+ export declare function _resetPortCodecsForTests(): void;
14
+ //# sourceMappingURL=PortCodecRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortCodecRegistry.d.ts","sourceRoot":"","sources":["../../src/di/PortCodecRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,SAAS,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO;IACvD,SAAS,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAeD,wBAAgB,iBAAiB,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO,EAC9D,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,GAC3B,IAAI,CAEN;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAQlE;AAED,wCAAwC;AACxC,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
@@ -6,5 +6,6 @@
6
6
  export * from "./Container";
7
7
  export * from "./InputCompactorRegistry";
8
8
  export * from "./InputResolverRegistry";
9
+ export * from "./PortCodecRegistry";
9
10
  export * from "./ServiceRegistry";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/di/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/di/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
@@ -28,9 +28,9 @@ export declare function isColorObject(value: unknown): value is ColorObject;
28
28
  /** Type guard for a hex color string (same regex as `parseHexColor`). */
29
29
  export declare function isHexColor(value: unknown): value is string;
30
30
  /**
31
- * Normalize either wire form to a full {@link ColorObject}. Object inputs default
32
- * `a` to 255. Throws on anything that's neither a valid hex string nor a valid
33
- * color object.
31
+ * Normalize any accepted wire form to a full {@link ColorObject}. Object inputs
32
+ * default `a` to 255; CSS `rgb(...)` / `rgba(...)` strings use 0-1 alpha.
33
+ * Throws on anything that's not an accepted color value.
34
34
  */
35
35
  export declare function resolveColor(value: string | {
36
36
  r: number;
@@ -1 +1 @@
1
- {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/media/color.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CA+BtD;AAeD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAOjD;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAQlE;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D,WAAW,CAWb"}
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/media/color.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AASD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CA+BtD;AAeD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAOjD;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAQlE;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE1D;AAqBD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D,WAAW,CAcb"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @copyright
3
+ * Copyright 2026 Steven Roussey
4
+ * All Rights Reserved
5
+ */
6
+ import type { ImageBinary } from "./imageTypes";
7
+ import { type GpuImage as IGpuImage, type GpuImageEncodeFormat } from "./gpuImage";
8
+ export declare class CpuImage implements IGpuImage {
9
+ private readonly bin;
10
+ readonly backend: "cpu";
11
+ private _previewScale;
12
+ private constructor();
13
+ get width(): number;
14
+ get height(): number;
15
+ get channels(): ImageBinary["channels"];
16
+ get previewScale(): number;
17
+ /** @internal — only previewSource and ImageTextTask.executePreview (without-
18
+ * background source case) may call this. */
19
+ _setPreviewScale(scale: number): this;
20
+ materialize(): Promise<ImageBinary>;
21
+ /** @internal — synchronous accessor used by per-filter cpu ops to avoid awaiting materialize(). */
22
+ getBinary(): ImageBinary;
23
+ toCanvas(canvas: HTMLCanvasElement | OffscreenCanvas): Promise<void>;
24
+ encode(format: GpuImageEncodeFormat, _quality?: number): Promise<Uint8Array>;
25
+ retain(_n?: number): this;
26
+ release(): void;
27
+ static fromImageBinary(bin: ImageBinary, previewScale?: number): CpuImage;
28
+ }
29
+ //# sourceMappingURL=cpuImage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpuImage.d.ts","sourceRoot":"","sources":["../../src/media/cpuImage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAEL,KAAK,QAAQ,IAAI,SAAS,EAC1B,KAAK,oBAAoB,EAC1B,MAAM,YAAY,CAAC;AAyCpB,qBAAa,QAAS,YAAW,SAAS;IAKpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJxC,QAAQ,CAAC,OAAO,EAAG,KAAK,CAAU;IAElC,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,eAEN;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,MAAM,IAAI,MAAM,CAEnB;IACD,IAAI,QAAQ,IAAI,WAAW,CAAC,UAAU,CAAC,CAEtC;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;iDAC6C;IAC7C,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGpC;IAEK,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAExC;IAED,mGAAmG;IACnG,SAAS,IAAI,WAAW,CAEvB;IAEK,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAczE;IAEK,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAIjF;IAED,MAAM,CAAC,EAAE,GAAE,MAAU,GAAG,IAAI,CAG3B;IAED,OAAO,IAAI,IAAI,CAEd;IAED,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,GAAE,MAAY,GAAG,QAAQ,CAE7E;CACF"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @copyright
3
+ * Copyright 2026 Steven Roussey
4
+ * All Rights Reserved
5
+ */
6
+ import type { ImageBinary } from "./imageTypes";
7
+ export declare function encodeImageBinaryToPng(bin: ImageBinary): Promise<Uint8Array>;
8
+ export declare function imageBinaryToBase64Png(bin: ImageBinary): Promise<string>;
9
+ export declare function imageBinaryToDataUri(bin: ImageBinary, mimeType?: string): Promise<string>;
10
+ export declare function imageBinaryToBlob(bin: ImageBinary, mimeType?: string): Promise<Blob>;
11
+ //# sourceMappingURL=encode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../src/media/encode.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAYhD,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAElF;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAG9E;AAED,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,SAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAEpG;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,SAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/F"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { GpuImage, GpuImageBackend } from "./gpuImage";
7
+ export type FilterOpFn<P = unknown> = (image: GpuImage, params: P) => GpuImage;
8
+ export declare function registerFilterOp<P>(backend: GpuImageBackend, filter: string, fn: FilterOpFn<P>): void;
9
+ export declare function applyFilter<P>(image: GpuImage, filter: string, params: P): GpuImage;
10
+ export declare function hasFilterOp(backend: GpuImageBackend, filter: string): boolean;
11
+ /** @internal — test affordance only. */
12
+ export declare function _resetFilterRegistryForTests(): void;
13
+ //# sourceMappingURL=filterRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterRegistry.d.ts","sourceRoot":"","sources":["../../src/media/filterRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,KAAK,QAAQ,CAAC;AAqB/E,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAChB,IAAI,CAEN;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,CAUnF;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7E;AAED,wCAAwC;AACxC,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @copyright
3
+ * Copyright 2026 Steven Roussey
4
+ * All Rights Reserved
5
+ */
6
+ export declare function getGpuDevice(): Promise<GPUDevice | null>;
7
+ export declare function resetGpuDeviceForTests(): void;
8
+ //# sourceMappingURL=gpuDevice.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gpuDevice.browser.d.ts","sourceRoot":"","sources":["../../src/media/gpuDevice.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,wBAAsB,YAAY,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAa9D;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @copyright
3
+ * Copyright 2026 Steven Roussey
4
+ * All Rights Reserved
5
+ */
6
+ import type { ImageBinary, ImageChannels } from "./imageTypes";
7
+ export type GpuImageBackend = "webgpu" | "sharp" | "cpu";
8
+ export type GpuImageEncodeFormat = "png" | "jpeg" | "webp";
9
+ export interface GpuImage {
10
+ readonly width: number;
11
+ readonly height: number;
12
+ readonly channels: ImageChannels;
13
+ readonly backend: GpuImageBackend;
14
+ /** Ratio of current dims to user's intended (pre-preview-downscale) dims.
15
+ * 1.0 in run mode and any image not derived from a previewSource downscale.
16
+ * < 1.0 after previewSource has fired. Pixel-space task params are
17
+ * multiplied by this before dispatch in preview mode (no-op at 1.0). */
18
+ readonly previewScale: number;
19
+ materialize(): Promise<ImageBinary>;
20
+ toCanvas(canvas: HTMLCanvasElement | OffscreenCanvas): Promise<void>;
21
+ encode(format: GpuImageEncodeFormat, quality?: number): Promise<Uint8Array>;
22
+ /**
23
+ * Increment the refcount by `n` (default 1). Returns `this` for chaining.
24
+ * No-op for backends without external resource lifetime (CpuImage, SharpImage).
25
+ * Throws if the resource has already been reclaimed (count was already 0).
26
+ */
27
+ retain(n?: number): this;
28
+ /**
29
+ * Decrement the refcount by 1. When it hits 0, reclaim the underlying resource
30
+ * (e.g., return the GPU texture to the pool). Throws on release-after-reclaim.
31
+ * No-op for backends without external resource lifetime.
32
+ */
33
+ release(): void;
34
+ }
35
+ export interface GpuImageStatic {
36
+ fromImageBinary(bin: ImageBinary): GpuImage;
37
+ fromImageBinaryAsync?(bin: ImageBinary): Promise<GpuImage>;
38
+ fromDataUri(dataUri: string): Promise<GpuImage>;
39
+ fromBlob(blob: Blob): Promise<GpuImage>;
40
+ fromImageBitmap?(bitmap: ImageBitmap): Promise<GpuImage>;
41
+ }
42
+ export declare function registerGpuImageFactory<K extends keyof GpuImageStatic>(key: K, fn: GpuImageStatic[K]): void;
43
+ /**
44
+ * Returns the registered factory function for `key`, or `undefined` if it
45
+ * has not been registered. Prefer this over accessing `GpuImage[key]` directly
46
+ * when the factory is optional — the Proxy throws on missing registrations.
47
+ */
48
+ export declare function getGpuImageFactory<K extends keyof GpuImageStatic>(key: K): GpuImageStatic[K] | undefined;
49
+ export declare const GpuImage: GpuImageStatic;
50
+ //# sourceMappingURL=gpuImage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gpuImage.d.ts","sourceRoot":"","sources":["../../src/media/gpuImage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AACzD,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC;;;6EAGyE;IACzE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5E;;;;OAIG;IACH,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;OAIG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC5C,oBAAoB,CAAC,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,eAAe,CAAC,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC1D;AAaD,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,cAAc,EACpE,GAAG,EAAE,CAAC,EACN,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,GACpB,IAAI,CAEN;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,cAAc,EAC/D,GAAG,EAAE,CAAC,GACL,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAG/B;AAED,eAAO,MAAM,QAAQ,EAAE,cASrB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @copyright
3
+ * Copyright 2026 Steven Roussey
4
+ * All Rights Reserved
5
+ */
6
+ import type { DataPortSchema } from "../json-schema/DataPortSchema";
7
+ export declare function GpuImageSchema(annotations?: Record<string, unknown>): DataPortSchema;
8
+ //# sourceMappingURL=gpuImageSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gpuImageSchema.d.ts","sourceRoot":"","sources":["../../src/media/gpuImageSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,wBAAgB,cAAc,CAAC,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,cAAc,CAyBxF"}
@@ -0,0 +1,9 @@
1
+ import type { ImageChannels } from "./imageTypes";
2
+ export interface CachedImage {
3
+ kind: "image-binary";
4
+ width: number;
5
+ height: number;
6
+ channels: ImageChannels;
7
+ data: Uint8ClampedArray;
8
+ }
9
+ //# sourceMappingURL=imageCacheCodec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageCacheCodec.d.ts","sourceRoot":"","sources":["../../src/media/imageCacheCodec.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,iBAAiB,CAAC;CACzB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=imageHydrationResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageHydrationResolver.d.ts","sourceRoot":"","sources":["../../src/media/imageHydrationResolver.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"imageRasterCodecRegistry.d.ts","sourceRoot":"","sources":["../../src/media/imageRasterCodecRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtE;AAID,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAErE;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,CAOtD"}
1
+ {"version":3,"file":"imageRasterCodecRegistry.d.ts","sourceRoot":"","sources":["../../src/media/imageRasterCodecRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtE;AAeD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAErE;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,CAOtD"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @copyright
3
+ * Copyright 2026 Steven Roussey
4
+ * All Rights Reserved
5
+ */
6
+ import type { GpuImage } from "./gpuImage";
7
+ export type PreviewResizeFn = (image: GpuImage, w: number, h: number) => GpuImage;
8
+ export declare function registerPreviewResizeFn(fn: PreviewResizeFn): void;
9
+ export declare function getPreviewBudget(): number;
10
+ export declare function setPreviewBudget(px: number): void;
11
+ /**
12
+ * Scale-then-effect entry for `executePreview`. Returns a downscaled image
13
+ * when the input's longer edge exceeds the budget AND the backend benefits
14
+ * (webgpu only). Otherwise returns the input unchanged — referential
15
+ * equality is the signal to callers that no transient was created.
16
+ *
17
+ * Calling code that wants downscale must call `registerPreviewResizeFn` at
18
+ * startup with a callback that performs the resize (typically routed through
19
+ * @workglow/tasks's applyFilter). Without registration, previewSource is
20
+ * a no-op even on webgpu inputs.
21
+ */
22
+ export declare function previewSource(image: GpuImage): GpuImage;
23
+ //# sourceMappingURL=previewBudget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"previewBudget.d.ts","sourceRoot":"","sources":["../../src/media/previewBudget.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAiB3C,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,QAAQ,CAAC;AAQlF,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI,CAEjE;AAMD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAKjD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAcvD"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @copyright
3
+ * Copyright 2026 Steven Roussey
4
+ * All Rights Reserved
5
+ */
6
+ export declare const VERTEX_PRELUDE = "\n@group(0) @binding(0) var src: texture_2d<f32>;\n@group(0) @binding(1) var src_sampler: sampler;\n\nstruct VsOut {\n @builtin(position) pos: vec4f,\n @location(0) uv: vec2f,\n};\n\n@vertex\nfn vs(@builtin(vertex_index) vid: u32) -> VsOut {\n let xy = vec2f(f32((vid << 1u) & 2u), f32(vid & 2u));\n var out: VsOut;\n out.pos = vec4f(xy * 2.0 - 1.0, 0.0, 1.0);\n out.uv = vec2f(xy.x, 1.0 - xy.y);\n return out;\n}";
7
+ export declare const PASSTHROUGH_SHADER_SRC = "\n@group(0) @binding(0) var src: texture_2d<f32>;\n@group(0) @binding(1) var src_sampler: sampler;\n\nstruct VsOut {\n @builtin(position) pos: vec4f,\n @location(0) uv: vec2f,\n};\n\n@vertex\nfn vs(@builtin(vertex_index) vid: u32) -> VsOut {\n let xy = vec2f(f32((vid << 1u) & 2u), f32(vid & 2u));\n var out: VsOut;\n out.pos = vec4f(xy * 2.0 - 1.0, 0.0, 1.0);\n out.uv = vec2f(xy.x, 1.0 - xy.y);\n return out;\n}\n@fragment\nfn fs(in: VsOut) -> @location(0) vec4f {\n return textureSample(src, src_sampler, in.uv);\n}\n";
8
+ export interface ShaderCache {
9
+ get(source: string): GPUShaderModule;
10
+ }
11
+ export declare function createShaderCache(device: GPUDevice): ShaderCache;
12
+ export declare function getShaderCache(device: GPUDevice): ShaderCache;
13
+ //# sourceMappingURL=shaderRegistry.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaderRegistry.browser.d.ts","sourceRoot":"","sources":["../../src/media/shaderRegistry.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,cAAc,0aAgBzB,CAAC;AAGH,eAAO,MAAM,sBAAsB,shBAKlC,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC;CACtC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW,CAYhE;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW,CAK7D"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @copyright
3
+ * Copyright 2026 Steven Roussey
4
+ * All Rights Reserved
5
+ */
6
+ export * from "./sharpImage.node";
7
+ //# sourceMappingURL=sharpImage.bun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharpImage.bun.d.ts","sourceRoot":"","sources":["../../src/media/sharpImage.bun.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * @copyright
3
+ * Copyright 2026 Steven Roussey
4
+ * All Rights Reserved
5
+ */
6
+ import type { ImageBinary, ImageChannels } from "./imageTypes";
7
+ import type { GpuImage as IGpuImage, GpuImageEncodeFormat } from "./gpuImage";
8
+ type Sharp = {
9
+ clone(): Sharp;
10
+ flip(): Sharp;
11
+ flop(): Sharp;
12
+ blur(sigma: number): Sharp;
13
+ grayscale(grayscale?: boolean): Sharp;
14
+ negate(options?: {
15
+ alpha?: boolean;
16
+ }): Sharp;
17
+ recomb(matrix: number[][]): Sharp;
18
+ linear(a: number, b: number): Sharp;
19
+ threshold(threshold: number, options?: {
20
+ grayscale?: boolean;
21
+ }): Sharp;
22
+ tint(rgb: {
23
+ r: number;
24
+ g: number;
25
+ b: number;
26
+ }): Sharp;
27
+ ensureAlpha(alpha?: number): Sharp;
28
+ extend(options: {
29
+ top?: number;
30
+ bottom?: number;
31
+ left?: number;
32
+ right?: number;
33
+ background?: unknown;
34
+ }): Sharp;
35
+ extract(region: {
36
+ left: number;
37
+ top: number;
38
+ width: number;
39
+ height: number;
40
+ }): Sharp;
41
+ rotate(angle?: number, options?: {
42
+ background?: unknown;
43
+ }): Sharp;
44
+ resize(width?: number | null, height?: number | null, options?: {
45
+ kernel?: string;
46
+ fit?: string;
47
+ background?: unknown;
48
+ }): Sharp;
49
+ raw(): Sharp;
50
+ png(opts?: unknown): Sharp;
51
+ jpeg(opts?: unknown): Sharp;
52
+ webp(opts?: unknown): Sharp;
53
+ metadata(): Promise<{
54
+ width?: number;
55
+ height?: number;
56
+ channels?: number;
57
+ }>;
58
+ toBuffer(opts?: unknown): Promise<Buffer | {
59
+ data: Buffer;
60
+ info: {
61
+ width: number;
62
+ height: number;
63
+ channels: number;
64
+ };
65
+ }>;
66
+ };
67
+ export declare class SharpImage implements IGpuImage {
68
+ private pipeline;
69
+ readonly width: number;
70
+ readonly height: number;
71
+ readonly channels: ImageChannels;
72
+ readonly backend: "sharp";
73
+ private _previewScale;
74
+ private constructor();
75
+ get previewScale(): number;
76
+ /** @internal — only previewSource and ImageTextTask.executePreview (without-
77
+ * background source case) may call this. */
78
+ _setPreviewScale(scale: number): this;
79
+ static fromImageBinary(bin: ImageBinary, previewScale?: number): Promise<SharpImage>;
80
+ static fromBuffer(buf: Buffer): Promise<SharpImage>;
81
+ apply(op: (p: Sharp) => Sharp, outSize?: {
82
+ width: number;
83
+ height: number;
84
+ channels?: ImageChannels;
85
+ }): SharpImage;
86
+ materialize(): Promise<ImageBinary>;
87
+ toCanvas(_canvas: HTMLCanvasElement | OffscreenCanvas): Promise<void>;
88
+ encode(format: GpuImageEncodeFormat, quality?: number): Promise<Uint8Array>;
89
+ retain(_n?: number): this;
90
+ release(): void;
91
+ }
92
+ export {};
93
+ //# sourceMappingURL=sharpImage.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharpImage.node.d.ts","sourceRoot":"","sources":["../../src/media/sharpImage.node.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,IAAI,SAAS,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAG9E,KAAK,KAAK,GAAG;IACX,KAAK,IAAI,KAAK,CAAC;IACf,IAAI,IAAI,KAAK,CAAC;IACd,IAAI,IAAI,KAAK,CAAC;IACd,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;IAC3B,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,KAAK,CAAC;IAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC;IAClC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACpC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,KAAK,CAAC;IACvE,IAAI,CAAC,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IACtD,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACnC,MAAM,CAAC,OAAO,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,KAAK,CAAC;IAC/G,OAAO,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IACrF,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,KAAK,CAAC;IAClE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,KAAK,CAAC;IAChI,GAAG,IAAI,KAAK,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC5B,QAAQ,IAAI,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;CACzH,CAAC;AAeF,qBAAa,UAAW,YAAW,SAAS;IAMxC,OAAO,CAAC,QAAQ;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,QAAQ,EAAE,aAAa;IARlC,QAAQ,CAAC,OAAO,EAAG,OAAO,CAAU;IAEpC,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,eAQN;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;iDAC6C;IAC7C,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGpC;IAED,OAAa,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,GAAE,MAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAO9F;IAED,OAAa,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAQxD;IAED,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;KAAE,GAAG,UAAU,CAShH;IAEK,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAcxC;IAEK,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1E;IAEK,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAQhF;IAED,MAAM,CAAC,EAAE,GAAE,MAAU,GAAG,IAAI,CAG3B;IAED,OAAO,IAAI,IAAI,CAEd;CACF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @copyright
3
+ * Copyright 2026 Steven Roussey
4
+ * All Rights Reserved
5
+ */
6
+ export interface TexturePoolOptions {
7
+ capacityPerSize?: number;
8
+ }
9
+ export interface TexturePool {
10
+ acquire(width: number, height: number, format: GPUTextureFormat): GPUTexture;
11
+ release(texture: GPUTexture): void;
12
+ drain(): void;
13
+ }
14
+ export declare function createTexturePool(device: GPUDevice, opts?: TexturePoolOptions): TexturePool;
15
+ export declare function getTexturePool(device: GPUDevice): TexturePool;
16
+ export declare function resetTexturePoolForTests(): void;
17
+ //# sourceMappingURL=texturePool.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texturePool.browser.d.ts","sourceRoot":"","sources":["../../src/media/texturePool.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,kBAAkB;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAAC;IAC7E,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,KAAK,IAAI,IAAI,CAAC;CACf;AAaD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,GAAE,kBAAuB,GAAG,WAAW,CAuD/F;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW,CAM7D;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAG/C"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @copyright
3
+ * Copyright 2026 Steven Roussey
4
+ * All Rights Reserved
5
+ */
6
+ import type { ImageBinary, ImageChannels } from "./imageTypes";
7
+ import type { GpuImage as IGpuImage, GpuImageEncodeFormat } from "./gpuImage";
8
+ export interface ApplyParams {
9
+ shader: string;
10
+ uniforms: ArrayBuffer | undefined;
11
+ outSize?: {
12
+ width: number;
13
+ height: number;
14
+ };
15
+ }
16
+ export declare class WebGpuImage implements IGpuImage {
17
+ private device;
18
+ private texture;
19
+ readonly width: number;
20
+ readonly height: number;
21
+ readonly backend: "webgpu";
22
+ readonly channels: ImageChannels;
23
+ /** Internal refcount. Initialized to 1 in fromImageBinary/apply. Reclaim at 0. */
24
+ private refcount;
25
+ private _previewScale;
26
+ private constructor();
27
+ get previewScale(): number;
28
+ /** @internal — only previewSource and ImageTextTask.executePreview (without-
29
+ * background source case) may call this. Mutates previewScale on this
30
+ * instance and returns this for chaining. */
31
+ _setPreviewScale(scale: number): this;
32
+ static fromImageBinary(bin: ImageBinary): Promise<WebGpuImage>;
33
+ apply(params: ApplyParams): WebGpuImage;
34
+ materialize(): Promise<ImageBinary>;
35
+ toCanvas(canvas: HTMLCanvasElement | OffscreenCanvas): Promise<void>;
36
+ encode(format: GpuImageEncodeFormat, quality?: number): Promise<Uint8Array>;
37
+ retain(n?: number): this;
38
+ release(): void;
39
+ }
40
+ //# sourceMappingURL=webGpuImage.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webGpuImage.browser.d.ts","sourceRoot":"","sources":["../../src/media/webGpuImage.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,IAAI,SAAS,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAa9E,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAC;IAClC,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C;AA6BD,qBAAa,WAAY,YAAW,SAAS;IAUzC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IACf,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM;IAZzB,QAAQ,CAAC,OAAO,EAAG,QAAQ,CAAU;IACrC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAK;IAErC,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAAK;IAErB,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,eAeN;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;kDAE8C;IAC9C,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGpC;IAED,OAAa,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAYnE;IAED,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAkDtC;IAEK,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CA4BxC;IAEK,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCzE;IAEK,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAWhF;IAED,MAAM,CAAC,CAAC,GAAE,MAAU,GAAG,IAAI,CAM1B;IAED,OAAO,IAAI,IAAI,CAYd;CACF"}
@@ -3,10 +3,25 @@
3
3
  * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- export * from "./media/imageTypes";
6
+ import "./media/imageCacheCodec";
7
+ import "./media/imageHydrationResolver";
7
8
  export * from "./media/color";
9
+ export { CpuImage } from "./media/cpuImage";
10
+ export { encodeImageBinaryToPng, imageBinaryToBase64Png, imageBinaryToBlob, imageBinaryToDataUri, } from "./media/encode";
11
+ export { _resetFilterRegistryForTests, applyFilter, hasFilterOp, registerFilterOp, } from "./media/filterRegistry";
12
+ export type { FilterOpFn } from "./media/filterRegistry";
13
+ export { getGpuDevice, resetGpuDeviceForTests } from "./media/gpuDevice.browser";
14
+ export { getGpuImageFactory, GpuImage as GpuImageFactory, registerGpuImageFactory, } from "./media/gpuImage";
15
+ export type { GpuImage, GpuImageBackend, GpuImageEncodeFormat, GpuImageStatic, } from "./media/gpuImage";
16
+ export { GpuImageSchema } from "./media/gpuImageSchema";
8
17
  export * from "./media/imageRasterCodecRegistry";
18
+ export * from "./media/imageTypes";
9
19
  export * from "./media/MediaRawImage";
10
- export * from "./media/Image";
11
- export * from "./media/Image.browser";
20
+ export { getPreviewBudget, previewSource, registerPreviewResizeFn, setPreviewBudget, } from "./media/previewBudget";
21
+ export { createShaderCache, getShaderCache, PASSTHROUGH_SHADER_SRC, VERTEX_PRELUDE, } from "./media/shaderRegistry.browser";
22
+ export type { ShaderCache } from "./media/shaderRegistry.browser";
23
+ export { createTexturePool, getTexturePool, resetTexturePoolForTests, } from "./media/texturePool.browser";
24
+ export type { TexturePool, TexturePoolOptions } from "./media/texturePool.browser";
25
+ export { WebGpuImage } from "./media/webGpuImage.browser";
26
+ export type { ApplyParams } from "./media/webGpuImage.browser";
12
27
  //# sourceMappingURL=media-browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-browser.d.ts","sourceRoot":"","sources":["../src/media-browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"media-browser.d.ts","sourceRoot":"","sources":["../src/media-browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,yBAAyB,CAAC;AACjC,OAAO,gCAAgC,CAAC;AAExC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,4BAA4B,EAC5B,WAAW,EACX,WAAW,EACX,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EACL,kBAAkB,EAClB,QAAQ,IAAI,eAAe,EAC3B,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,cAAc,GACf,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC"}