@workglow/util 0.2.17 → 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 (62) hide show
  1. package/dist/browser.js +33 -2
  2. package/dist/browser.js.map +5 -4
  3. package/dist/bun.js +33 -2
  4. package/dist/bun.js.map +5 -4
  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 +33 -2
  51. package/dist/node.js.map +5 -4
  52. package/dist/worker-browser.js +33 -2
  53. package/dist/worker-browser.js.map +5 -4
  54. package/dist/worker-bun.js +33 -2
  55. package/dist/worker-bun.js.map +5 -4
  56. package/dist/worker-node.js +33 -2
  57. package/dist/worker-node.js.map +5 -4
  58. package/package.json +4 -1
  59. package/dist/media/Image.browser.d.ts +0 -24
  60. package/dist/media/Image.browser.d.ts.map +0 -1
  61. package/dist/media/Image.d.ts +0 -100
  62. package/dist/media/Image.d.ts.map +0 -1
@@ -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":"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"}
@@ -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"}