@wasmedia/wimagemagick 0.2.0 → 0.4.0

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 (58) hide show
  1. package/CHANGELOG.md +88 -1
  2. package/README.md +16 -1
  3. package/dist/api.d.ts +4 -0
  4. package/dist/api.d.ts.map +1 -1
  5. package/dist/api.js +4 -0
  6. package/dist/api.js.map +1 -1
  7. package/dist/cli.d.ts +23 -6
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +16 -8
  10. package/dist/cli.js.map +1 -1
  11. package/dist/files.d.ts +80 -0
  12. package/dist/files.d.ts.map +1 -0
  13. package/dist/files.js +175 -0
  14. package/dist/files.js.map +1 -0
  15. package/dist/filesystem.d.ts.map +1 -1
  16. package/dist/filesystem.js +19 -0
  17. package/dist/filesystem.js.map +1 -1
  18. package/dist/image.d.ts +16 -8
  19. package/dist/image.d.ts.map +1 -1
  20. package/dist/image.js +38 -12
  21. package/dist/image.js.map +1 -1
  22. package/dist/index.d.ts +2 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +2 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/licenses/README.txt +3 -3
  27. package/dist/licenses/aom-LICENSE.txt +1 -1
  28. package/dist/licenses/de265-LICENSE.txt +1 -1
  29. package/dist/licenses/ffi-LICENSE.txt +2 -2
  30. package/dist/licenses/heif-LICENSE.txt +1 -1
  31. package/dist/licenses/highway-LICENSE.txt +172 -2
  32. package/dist/licenses/jpeg-turbo-LICENSE.txt +46 -34
  33. package/dist/licenses/jpeg-xl-LICENSE.txt +1 -1
  34. package/dist/licenses/lcms-LICENSE.txt +1 -1
  35. package/dist/licenses/png-LICENSE.txt +1 -1
  36. package/dist/licenses/tiff-LICENSE.txt +1 -1
  37. package/dist/licenses/xml-LICENSE.txt +1 -1
  38. package/dist/licenses/zstd-LICENSE.txt +32 -0
  39. package/dist/loader.d.ts.map +1 -1
  40. package/dist/loader.js +2 -0
  41. package/dist/loader.js.map +1 -1
  42. package/dist/raw.d.ts +28 -6
  43. package/dist/raw.d.ts.map +1 -1
  44. package/dist/raw.js +37 -6
  45. package/dist/raw.js.map +1 -1
  46. package/dist/types.d.ts +2 -0
  47. package/dist/types.d.ts.map +1 -1
  48. package/dist/wimagemagick.js +2 -15
  49. package/dist/wimagemagick.wasm +0 -0
  50. package/dist/wopfs.d.ts +43 -0
  51. package/dist/wopfs.d.ts.map +1 -0
  52. package/dist/wopfs.js +40 -0
  53. package/dist/wopfs.js.map +1 -0
  54. package/dist/worker-handler.d.ts +1 -1
  55. package/dist/worker-handler.d.ts.map +1 -1
  56. package/dist/worker-handler.js +26 -0
  57. package/dist/worker-handler.js.map +1 -1
  58. package/package.json +7 -2
package/CHANGELOG.md CHANGED
@@ -7,6 +7,91 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.4.0] - 2026-10-04
11
+
12
+ ### Security
13
+ - Under Node, reading a PDF, PostScript, EPS or SVG file could start programs
14
+ installed on the host (`gs`, `inkscape`, …) through a shell, because
15
+ ImageMagick's external delegates reached Emscripten's `system()`. The build
16
+ now has a `system()` that never runs anything. PDF/PS reads fail as they
17
+ would on a machine without Ghostscript, and SVG uses the built-in renderer.
18
+ Browsers were not affected.
19
+ - The ImageMagick update below brings in the fixes for 173 GitHub security
20
+ advisories (GHSA) published between April and September 2026, several of
21
+ them in the PNG, JPEG, TIFF, JPEG 2000 and SVG readers.
22
+
23
+ ### Changed
24
+ - Built from ImageMagick 7.1.2-32 (released 2026-09-27). It was pinned to an
25
+ untagged development commit from 2026-04-04, about 900 commits earlier.
26
+ - A DNG now always decodes through LibRaw, whatever it is called: ImageMagick's
27
+ TIFF coder (since 7.1.2-23) spots the DNGVersion tag and hands the file
28
+ over. The other side of this is that a DNG cannot be read as a plain TIFF
29
+ any more, even with an explicit `TIFF:` prefix: the undemosaiced mosaic and
30
+ the embedded preview are out of reach, and `fromBuffer(dng, 'TIFF')` returns
31
+ a `DNG` image. There is no fallback, so a DNG that LibRaw cannot decode here
32
+ (JPEG XL compression from DNG 1.7, GoPro VC-5), or an ordinary TIFF with a
33
+ stray `DNGVersion` tag, now fails however it is read; on 0.3.0, reading
34
+ either as TIFF returned the embedded image.
35
+ - `-draw "image … 'rose:'"` and other `-draw image` primitives that name a
36
+ built-in image or explicit coder (`xc:red`, `png:/path`) now fail with
37
+ `ExplicitCoderNotAllowed`, and so does an SVG whose `<image>` references one
38
+ (ImageMagick's stricter nested reads). Plain file paths still work. A single
39
+ `-draw` with more than 250 nested `image` reads fails with
40
+ `ImageNestedTooDeeply`.
41
+ - `execute()` and `executeFiles()` read an unprefixed input whose bytes are a
42
+ DNG, and whose name is not a raw extension, as `dng:`. ImageMagick's own
43
+ hand-off from the TIFF coder runs ReadImage twice (`-extract 50%` halved the
44
+ image twice, `-comment '%c+X'` gave `+X+X`, `-verbose` reported twice) and
45
+ first copies the whole file into the wasm heap (a 96 MB DNG grew it from 16
46
+ to 116 MiB). Other raws still go by filename.
47
+ - `toBuffer()`, `toBlob()` and `toDataURL()` with no format, on an image whose
48
+ own format cannot be written (any raw, HEIC, …), now say to pass a format
49
+ instead of only `NoEncodeDelegateForThisImageFormat`.
50
+
51
+ ### Added
52
+ - `rotate(degrees, background)`: the colour for the corners a rotation
53
+ uncovers, as any ImageMagick colour string. Also reachable as
54
+ `["rotate", degrees, background]` in a worker `process` message.
55
+
56
+ ### Fixed
57
+ - `rotate()` filled the uncovered corners with whatever bytes sat at heap
58
+ address 0 (opaque cyan in 0.3.0), because it passed a null colour. They are
59
+ now transparent unless a background is given.
60
+ - `toDataURL()` labelled JP2, J2K, PNM and other formats
61
+ `application/octet-stream`, which ImageMagick 7.1.2-30+ refuses to read back
62
+ through `inline:`. They now get MIME types that name their coder (`image/jp2`,
63
+ `image/x-j2k`, `image/x-pnm`, `image/x-ppm`, `image/x-pgm`, `image/x-pbm`,
64
+ `image/x-tga`, `image/x-icon`, `image/qoi`, `image/x-psd`), which `toBlob()`
65
+ uses as well.
66
+ - `npm run build:native` failed with "Your local changes … would be
67
+ overwritten by checkout" after changing the ImageMagick pin on a machine
68
+ that had built before; the previous build's regenerated autotools files are
69
+ now discarded before checking out the new commit. A rebuild at the same pin
70
+ leaves the ImageMagick checkout alone, local patches included, and no longer
71
+ needs network access when the pinned commit is already cloned.
72
+
73
+ ## [0.3.0] - 2026-10-03
74
+
75
+ ### Added
76
+ - File mode: `executeFiles()` (also `wim.executeFiles()` and an
77
+ `executeFiles` worker message) runs a command over files instead of
78
+ buffers, mounting them through `@wasmedia/wopfs` 0.2.0: OPFS file handles
79
+ in a dedicated worker, host paths under Node. Inputs are read in place and
80
+ outputs written straight into `outputDir`, only when the command succeeds.
81
+ On a 24-megapixel TIFF it cuts peak memory from 640 to 315 MiB; the wasm
82
+ heap, and its 4 GiB ceiling, are unchanged. `execute()` and the buffer APIs
83
+ are untouched, and wopfs is loaded only on the first file-mode call.
84
+ - Browser tests (Playwright, Chromium, Firefox and WebKit) for file mode,
85
+ run in CI as `test-browser`; releases wait for them.
86
+
87
+ ### Changed
88
+ - Built with emsdk 6.0.6 (was 4.0.7) against ImageMagick's newest dependency
89
+ bundle (2026.09.26, was 2026.04.04), which is built with 6.0.6 and does not
90
+ link on any other major version. Delegate libraries move up with it, LibRaw
91
+ goes from 0.22.0 to 0.22.2, and `zstd` is now a delegate (the bundle's
92
+ libtiff needs it, so ZSTD-compressed TIFFs read and write). The `.wasm` grows
93
+ from 13.8 MB to 14.7 MB (5.1 MB gzipped).
94
+
10
95
  ## [0.2.0] - 2026-10-03
11
96
 
12
97
  First release published to npm, as `@wasmedia/wimagemagick`.
@@ -226,5 +311,7 @@ First release published to npm, as `@wasmedia/wimagemagick`.
226
311
  - Convenience C wrappers exported from the WASM module:
227
312
  `wimagemagick_identify`, `wimagemagick_convert`, `wimagemagick_resize`.
228
313
 
229
- [Unreleased]: https://gitlab.com/wasmedia/wimagemagick/-/compare/v0.2.0...HEAD
314
+ [Unreleased]: https://gitlab.com/wasmedia/wimagemagick/-/compare/v0.4.0...HEAD
315
+ [0.4.0]: https://gitlab.com/wasmedia/wimagemagick/-/compare/v0.3.0...v0.4.0
316
+ [0.3.0]: https://gitlab.com/wasmedia/wimagemagick/-/compare/v0.2.0...v0.3.0
230
317
  [0.2.0]: https://gitlab.com/wasmedia/wimagemagick/-/tags/v0.2.0
package/README.md CHANGED
@@ -23,7 +23,7 @@ const jpeg = img.fit(1600, 1600).quality(85).toBuffer('JPEG');
23
23
  img.dispose();
24
24
  ```
25
25
 
26
- The package ships the `.wasm` (about 13 MB, 5 MB gzipped) next to its JS, and
26
+ The package ships the `.wasm` (about 15 MB, 5 MB gzipped) next to its JS, and
27
27
  loads it relative to the module, so a bundler that copies assets referenced by
28
28
  `new URL(..., import.meta.url)` needs no configuration. [docs/api.md](docs/api.md)
29
29
  has the full API, including the Web Worker entry
@@ -32,6 +32,21 @@ several LGPL libraries; their licences are in `dist/licenses/`.
32
32
 
33
33
  Try it without installing at [magick.wasmedia.org](https://magick.wasmedia.org/).
34
34
 
35
+ ### File mode
36
+
37
+ `executeFiles()` runs a command over files instead of buffers: OPFS file
38
+ handles in a Web Worker, host paths under Node. The files are mounted through
39
+ [wopfs](https://gitlab.com/wasmedia/wopfs) rather than copied into memory, which
40
+ halves peak memory on a large image (640 → 315 MiB on a 24-megapixel TIFF):
41
+
42
+ ```typescript
43
+ const r = await wim.executeFiles('shot.cr2 -resize 50% shot.jpg',
44
+ [{ name: 'shot.cr2', file: fileHandle }], { outputDir: dirHandle });
45
+ ```
46
+
47
+ See [File mode](docs/api.md#file-mode-inputs-and-outputs-that-stay-in-files).
48
+ wopfs (MIT) is loaded only when file mode is first used.
49
+
35
50
  ## Format & Feature Scope
36
51
 
37
52
  - **Excluded:** Ghostscript-based features (PDF rendering), FFmpeg-based features (video)
package/dist/api.d.ts CHANGED
@@ -11,6 +11,10 @@ export interface MagickBindings {
11
11
  NewMagickWand(): number;
12
12
  DestroyMagickWand(wand: number): number;
13
13
  CloneMagickWand(wand: number): number;
14
+ NewPixelWand(): number;
15
+ DestroyPixelWand(wand: number): number;
16
+ /** Set a colour from any ImageMagick colour string; false if unparseable. */
17
+ PixelSetColor(wand: number, color: string): number;
14
18
  MagickReadImage(wand: number, filename: string): number;
15
19
  MagickWriteImage(wand: number, filename: string): number;
16
20
  MagickReadImageBlob(wand: number, blob: number, length: number): number;
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/api.js CHANGED
@@ -14,6 +14,10 @@ export function createBindings(module) {
14
14
  NewMagickWand: w("NewMagickWand", "number", []),
15
15
  DestroyMagickWand: w("DestroyMagickWand", "number", ["number"]),
16
16
  CloneMagickWand: w("CloneMagickWand", "number", ["number"]),
17
+ // Pixel wands
18
+ NewPixelWand: w("NewPixelWand", "number", []),
19
+ DestroyPixelWand: w("DestroyPixelWand", "number", ["number"]),
20
+ PixelSetColor: w("PixelSetColor", "number", ["number", "string"]),
17
21
  // Read/Write
18
22
  MagickReadImage: w("MagickReadImage", "number", ["number", "string"]),
19
23
  MagickWriteImage: w("MagickWriteImage", "number", ["number", "string"]),
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkLH,qEAAqE;AACrE,MAAM,UAAU,cAAc,CAAC,MAAkB;IAC/C,MAAM,CAAC,GAAG,CACR,IAAY,EACZ,GAAkB,EAClB,IAAc,EACd,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAEnC,OAAO;QACL,YAAY;QACZ,iBAAiB,EAAE,CAAC,CAAC,mBAAmB,EAAE,IAAI,EAAE,EAAE,CAAe;QACjE,kBAAkB,EAAE,CAAC,CAAC,oBAAoB,EAAE,IAAI,EAAE,EAAE,CAAe;QACnE,aAAa,EAAE,CAAC,CAAC,eAAe,EAAE,QAAQ,EAAE,EAAE,CAAiB;QAC/D,iBAAiB,EAAE,CAAC,CAAC,mBAAmB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC/D,eAAe,EAAE,CAAC,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QAE3D,aAAa;QACb,eAAe,EAAE,CAAC,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACrE,gBAAgB,EAAE,CAAC,CAAC,kBAAkB,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvE,mBAAmB,EAAE,CAAC,CAAC,qBAAqB,EAAE,QAAQ,EAAE;YACtD,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,kBAAkB,EAAE,CAAC,CAAC,oBAAoB,EAAE,QAAQ,EAAE;YACpD,QAAQ;YACR,QAAQ;SACT,CAAC;QAEF,SAAS;QACT,sBAAsB,EAAE,CAAC,CAAC,wBAAwB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QAEzE,aAAa;QACb,mBAAmB,EAAE,CAAC,CAAC,qBAAqB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QACnE,oBAAoB,EAAE,CAAC,CAAC,sBAAsB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QAErE,SAAS;QACT,oBAAoB,EAAE,CAAC,CAAC,sBAAsB,EAAE,QAAQ,EAAE;YACxD,QAAQ;SACT,CAAwC;QACzC,oBAAoB,EAAE,CAAC,CAAC,sBAAsB,EAAE,QAAQ,EAAE;YACxD,QAAQ;YACR,QAAQ;SACT,CAAC;QAEF,SAAS;QACT,iBAAiB,EAAE,CAAC,CAAC,mBAAmB,EAAE,QAAQ,EAAE;YAClD,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,yBAAyB,EAAE,CAAC,CAAC,2BAA2B,EAAE,QAAQ,EAAE;YAClE,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,oBAAoB,EAAE,CAAC,CAAC,sBAAsB,EAAE,QAAQ,EAAE;YACxD,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QAEF,cAAc;QACd,eAAe,EAAE,CAAC,CAAC,iBAAiB,EAAE,QAAQ,EAAE;YAC9C,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,iBAAiB,EAAE,CAAC,CAAC,mBAAmB,EAAE,QAAQ,EAAE;YAClD,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QAEF,YAAY;QACZ,iBAAiB,EAAE,CAAC,CAAC,mBAAmB,EAAE,QAAQ,EAAE;YAClD,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,eAAe,EAAE,CAAC,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC3D,eAAe,EAAE,CAAC,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC3D,oBAAoB,EAAE,CAAC,CAAC,sBAAsB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QACrE,qBAAqB,EAAE,CAAC,CAAC,uBAAuB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QAEvE,UAAU;QACV,eAAe,EAAE,CAAC,CAAC,iBAAiB,EAAE,QAAQ,EAAE;YAC9C,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,uBAAuB,EAAE,CAAC,CAAC,yBAAyB,EAAE,QAAQ,EAAE;YAC9D,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,kBAAkB,EAAE,CAAC,CAAC,oBAAoB,EAAE,QAAQ,EAAE;YACpD,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,sBAAsB,EAAE,CAAC,CAAC,wBAAwB,EAAE,QAAQ,EAAE;YAC5D,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QAEF,YAAY;QACZ,oBAAoB,EAAE,CAAC,CAAC,sBAAsB,EAAE,QAAQ,EAAE;YACxD,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QAEF,UAAU;QACV,gCAAgC,EAAE,CAAC,CACjC,kCAAkC,EAClC,QAAQ,EACR,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACrB;QACD,gCAAgC,EAAE,CAAC,CACjC,kCAAkC,EAClC,QAAQ,EACR,CAAC,QAAQ,CAAC,CACX;QAED,cAAc;QACd,gBAAgB,EAAE,CAAC,CAAC,kBAAkB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC7D,qBAAqB,EAAE,CAAC,CAAC,uBAAuB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QACvE,oBAAoB,EAAE,CAAC,CAAC,sBAAsB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QACrE,oBAAoB,EAAE,CAAC,CAAC,sBAAsB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QACrE,iBAAiB,EAAE,CAAC,CAAC,mBAAmB,EAAE,QAAQ,EAAE;YAClD,QAAQ;YACR,QAAQ;SACT,CAAC;QAEF,QAAQ;QACR,0BAA0B,EAAE,CAAC,CAAC,4BAA4B,EAAE,QAAQ,EAAE;YACpE,QAAQ;YACR,QAAQ;SACT,CAAC;QAEF,SAAS;QACT,kBAAkB,EAAE,CAAC,CAAC,oBAAoB,EAAE,QAAQ,EAAE;YACpD,QAAQ;YACR,QAAQ;SACT,CAA6D;QAC9D,oBAAoB,EAAE,CAAC,CAAC,sBAAsB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QAErE,YAAY;QACZ,sBAAsB,EAAE,CAAC,CAAC,wBAAwB,EAAE,QAAQ,EAAE;YAC5D,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,sBAAsB,EAAE,CAAC,CAAC,wBAAwB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QAEzE,WAAW;QACX,aAAa,EAAE,CAAC,CAAC,eAAe,EAAE,QAAQ,EAAE;YAC1C,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,cAAc,EAAE,CAAC,CAAC,gBAAgB,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEnE,cAAc;QACd,qBAAqB,EAAE,CAAC,CAAC,uBAAuB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QACvE,sBAAsB,EAAE,CAAC,CAAC,wBAAwB,EAAE,QAAQ,EAAE;YAC5D,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,mBAAmB,EAAE,CAAC,CAAC,qBAAqB,EAAE,IAAI,EAAE;YAClD,QAAQ;SACT,CAAsC;QAEvC,mBAAmB;QACnB,mBAAmB,EAAE,CAAC,CAAC,qBAAqB,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;QACnE,mBAAmB,EAAE,CAAC,CAAC,qBAAqB,EAAE,QAAQ,EAAE;YACtD,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,wBAAwB,EAAE,CAAC,CAAC,0BAA0B,EAAE,QAAQ,EAAE;YAChE,QAAQ;SACT,CAAC;QACF,wBAAwB,EAAE,CAAC,CAAC,0BAA0B,EAAE,QAAQ,EAAE;YAChE,QAAQ;YACR,QAAQ;SACT,CAAC;QAEF,WAAW;QACX,kBAAkB,EAAE,CAAC,CAAC,oBAAoB,EAAE,QAAQ,EAAE;YACpD,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,qBAAqB,EAAE,CAAC,CAAC,uBAAuB,EAAE,QAAQ,EAAE;YAC1D,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,wBAAwB,EAAE,CAAC,CAAC,0BAA0B,EAAE,QAAQ,EAAE;YAChE,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QAEF,oCAAoC;QACpC,qBAAqB,EAAE,CAAC,CAAC,uBAAuB,EAAE,QAAQ,EAAE;YAC1D,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,oBAAoB,EAAE,CAAC,CAAC,sBAAsB,EAAE,QAAQ,EAAE;YACxD,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;QACF,mBAAmB,EAAE,CAAC,CAAC,qBAAqB,EAAE,QAAQ,EAAE;YACtD,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,QAAQ;SACT,CAAC;KACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -7,6 +7,23 @@
7
7
  import type { WasmModule, CLIResult } from "./types.js";
8
8
  /** Build the `print`/`printErr` pair the loader passes to the WASM factory. */
9
9
  export declare function createOutputHooks(): Pick<WasmModule, "print" | "printErr">;
10
+ /** Run `fn` with module output redirected into strings. */
11
+ export declare function captureOutput<T>(fn: () => T): {
12
+ value: T;
13
+ stdout: string;
14
+ stderr: string;
15
+ };
16
+ /**
17
+ * Resolve one argument against the working directory, keeping any explicit
18
+ * `FORMAT:` prefix in place.
19
+ *
20
+ * The prefix matters for more than tidiness: most raw formats are registered
21
+ * with `ExplicitFormatType`, so ImageMagick will not pick LibRaw from a file's
22
+ * magic bytes — a CR2 or NEF is a TIFF at that level and the TIFF coder claims
23
+ * it. `cr2:capture` is how the caller says otherwise. An unprefixed input
24
+ * listed in `hints` gets that prefix (see {@link inputFormatHint}).
25
+ */
26
+ export declare function rewriteArg(arg: string, inputNames: Set<string>, workDir: string, hints?: ReadonlyMap<string, string>): string;
10
27
  /**
11
28
  * Parse a command string into an argv array, respecting quoted strings.
12
29
  *
@@ -37,12 +54,12 @@ export interface IdentifyOptions {
37
54
  /**
38
55
  * Format to read the data as, e.g. `"DNG"` or `"CR2"`.
39
56
  *
40
- * Only the raw camera formats need it. Their coder is registered with
41
- * `ExplicitFormatType`, so ImageMagick never selects it from a file's magic
42
- * bytes — most raws are TIFF containers, and without a hint the TIFF coder
43
- * claims them. When omitted, the raws {@link detectRawFormat} recognises
44
- * (CR2, CR3, NEF, DNG, 3FR, IIQ) are supplied automatically; everything else
45
- * is detected by ImageMagick itself.
57
+ * Mostly the raw camera formats need it. Their coder is registered with
58
+ * `ExplicitFormatType`, and apart from DNG and a few fixed-header formats
59
+ * (CR3, RAF, …) ImageMagick does not select it from a file's contents — most
60
+ * raws are TIFF containers, and without a hint the TIFF coder claims them.
61
+ * When omitted, the raws {@link detectRawFormat} recognises are supplied
62
+ * automatically; everything else is detected by ImageMagick itself.
46
63
  */
47
64
  format?: string;
48
65
  }
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA4BxD,+EAA+E;AAC/E,wBAAgB,iBAAiB,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,CAW1E;AAiHD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAiCtD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,CAAC,GACjD,SAAS,CA+CX;AAED,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,GAAG,WAAW,EAC9B,OAAO,GAAE,OAAO,GAAG,eAAuB,GACzC,MAAM,CAwBR"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA4BxD,+EAA+E;AAC/E,wBAAgB,iBAAiB,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,CAW1E;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,CAAC,EAC7B,EAAE,EAAE,MAAM,CAAC,GACV;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAc9C;AAqED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAYR;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAiCtD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,CAAC,GACjD,SAAS,CAkDX;AAED,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,GAAG,WAAW,EAC9B,OAAO,GAAE,OAAO,GAAG,eAAuB,GACzC,MAAM,CAwBR"}
package/dist/cli.js CHANGED
@@ -5,7 +5,7 @@
5
5
  * Uses IM7 syntax: callMain(['input.png', '-resize', '50%', 'output.jpg'])
6
6
  */
7
7
  import { createWorkDir, cleanWorkDir, writeToMemFS, readFromMemFS, existsInMemFS, readFilesFromMemFS, } from "./filesystem.js";
8
- import { detectRawFormat } from "./raw.js";
8
+ import { HINT_HEADER_BYTES, detectRawFormat, inputFormatHint } from "./raw.js";
9
9
  let activeSink = null;
10
10
  /** Build the `print`/`printErr` pair the loader passes to the WASM factory. */
11
11
  export function createOutputHooks() {
@@ -25,7 +25,7 @@ export function createOutputHooks() {
25
25
  };
26
26
  }
27
27
  /** Run `fn` with module output redirected into strings. */
28
- function captureOutput(fn) {
28
+ export function captureOutput(fn) {
29
29
  const previous = activeSink;
30
30
  const sink = { stdout: [], stderr: [] };
31
31
  activeSink = sink;
@@ -113,12 +113,13 @@ function isWorkDirFile(arg, inputNames) {
113
113
  * Resolve one argument against the working directory, keeping any explicit
114
114
  * `FORMAT:` prefix in place.
115
115
  *
116
- * The prefix matters for more than tidiness: the raw formats are registered
116
+ * The prefix matters for more than tidiness: most raw formats are registered
117
117
  * with `ExplicitFormatType`, so ImageMagick will not pick LibRaw from a file's
118
- * magic bytes — a DNG or CR2 is a TIFF at that level and the TIFF coder claims
119
- * it. `dng:capture` is how the caller says otherwise.
118
+ * magic bytes — a CR2 or NEF is a TIFF at that level and the TIFF coder claims
119
+ * it. `cr2:capture` is how the caller says otherwise. An unprefixed input
120
+ * listed in `hints` gets that prefix (see {@link inputFormatHint}).
120
121
  */
121
- function rewriteArg(arg, inputNames, workDir) {
122
+ export function rewriteArg(arg, inputNames, workDir, hints) {
122
123
  const split = splitFormatPrefix(arg);
123
124
  if (split !== null) {
124
125
  const { prefix, rest } = split;
@@ -130,7 +131,10 @@ function rewriteArg(arg, inputNames, workDir) {
130
131
  return arg;
131
132
  return `${prefix}:${workDir}/${rest}`;
132
133
  }
133
- return isWorkDirFile(arg, inputNames) ? `${workDir}/${arg}` : arg;
134
+ if (!isWorkDirFile(arg, inputNames))
135
+ return arg;
136
+ const hint = hints?.get(arg);
137
+ return hint ? `${hint}:${workDir}/${arg}` : `${workDir}/${arg}`;
134
138
  }
135
139
  /**
136
140
  * Parse a command string into an argv array, respecting quoted strings.
@@ -192,16 +196,20 @@ export function execute(module, command, inputFiles) {
192
196
  const workDir = createWorkDir(module);
193
197
  // Track input filenames so we can identify output files later
194
198
  const inputNames = new Set();
199
+ const hints = new Map();
195
200
  // Write input files to MEMFS
196
201
  if (inputFiles) {
197
202
  for (const [name, data] of inputFiles) {
198
203
  inputNames.add(name);
199
204
  const bytes = data instanceof ArrayBuffer ? new Uint8Array(data) : data;
200
205
  writeToMemFS(module, `${workDir}/${name}`, bytes);
206
+ const hint = inputFormatHint(name, bytes.subarray(0, HINT_HEADER_BYTES));
207
+ if (hint)
208
+ hints.set(name, hint);
201
209
  }
202
210
  }
203
211
  // Rewrite filename arguments to workDir paths
204
- const rewrittenArgs = args.map((arg) => rewriteArg(arg, inputNames, workDir));
212
+ const rewrittenArgs = args.map((arg) => rewriteArg(arg, inputNames, workDir, hints));
205
213
  // Execute with output captured
206
214
  let exitCode;
207
215
  let stdout = "";
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAiB/E,IAAI,UAAU,GAAsB,IAAI,CAAC;AAEzC,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE;YACtB,IAAI,UAAU;gBAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;gBACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAE;YACzB,IAAI,UAAU;gBAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;gBACxC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,aAAa,CAC3B,EAAW;IAEX,MAAM,QAAQ,GAAG,UAAU,CAAC;IAC5B,MAAM,IAAI,GAAe,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACpD,UAAU,GAAG,IAAI,CAAC;IAClB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,EAAE,CAAC;QACnB,OAAO;YACL,KAAK;YACL,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;SAC/B,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,UAAU,GAAG,QAAQ,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,QAAQ;IACR,SAAS;IACT,cAAc;IACd,WAAW;IACX,SAAS;IACT,UAAU;IACV,SAAS;IACT,MAAM;IACN,QAAQ;IACR,OAAO;IACP,MAAM;IACN,UAAU;IACV,MAAM;IACN,OAAO;IACP,SAAS;IACT,QAAQ;IACR,iBAAiB;IACjB,QAAQ;IACR,MAAM;IACN,YAAY;IACZ,MAAM;IACN,MAAM;IACN,KAAK;IACL,QAAQ;IACR,IAAI;CACL,CAAC,CAAC;AAEH,gFAAgF;AAChF,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,cAAc,GAAG,iDAAiD,CAAC;AAEzE;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,GAAW,EAAE,UAAuB;IACzD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,OAAO;IACrE,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,iCAAiC;IACxE,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,uBAAuB;IAC7D,OAAO,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB;AAChE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CACxB,GAAW,EACX,UAAuB,EACvB,OAAe,EACf,KAAmC;IAEnC,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QAC/B,IAAI,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,GAAG,CAAC;QACjE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,CAAC,mBAAmB;QACzD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC;QACpE,OAAO,GAAG,MAAM,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;IACxC,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC;QAAE,OAAO,GAAG,CAAC;IAChD,MAAM,IAAI,GAAG,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC;AAClE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,yEAAyE;IACzE,kEAAkE;IAClE,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAEtB,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,QAAQ,GAAG,CAAC,QAAQ,CAAC;YACrB,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,QAAQ,GAAG,CAAC,QAAQ,CAAC;YACrB,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnB,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,KAAK,CAAC;YACjB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,OAAO,CACrB,MAAkB,EAClB,OAA0B,EAC1B,UAAkD;IAElD,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3E,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAEtC,8DAA8D;IAC9D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExC,6BAA6B;IAC7B,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;YACtC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,MAAM,KAAK,GAAG,IAAI,YAAY,WAAW,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACxE,YAAY,CAAC,MAAM,EAAE,GAAG,OAAO,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;YACzE,IAAI,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACrC,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAC5C,CAAC;IAEF,+BAA+B;IAC/B,IAAI,QAAgB,CAAC;IACrB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QAChE,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;QACrB,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACpB,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACtB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,GAAG,CAAC,CAAC;QACb,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,+DAA+D;IAC/D,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAEpE,WAAW;IACX,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9B,OAAO;QACL,QAAQ;QACR,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;QACxB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;QACxB,WAAW;KACZ,CAAC;AACJ,CAAC;AAmBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,QAAQ,CACtB,MAAkB,EAClB,IAA8B,EAC9B,UAAqC,KAAK;IAE1C,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAC1C,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IACnF,MAAM,MAAM,GAAG,SAAS,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,GAAG,OAAO,QAAQ,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACrD,MAAM,MAAM,GAAG,GAAG,OAAO,WAAW,CAAC;IAErC,IAAI,CAAC;QACH,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,OAAO;YAClB,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,MAAM,EAAE,CAAC;YACxC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,MAAM,EAAE,CAAC,CAAC;QAEtD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;YACtD,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3E,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * File mode: run a command whose inputs and outputs stay in files.
3
+ *
4
+ * {@link execute} copies every input into MEMFS and reads every output back
5
+ * into a Uint8Array, so a run holds each file in JS memory at least twice.
6
+ * {@link executeFiles} mounts the files into the module through
7
+ * [wopfs](https://gitlab.com/wasmedia/wopfs) instead: OPFS files in a
8
+ * dedicated worker, host files under Node. The wasm heap is unchanged — what
9
+ * ImageMagick decodes into its pixel cache still lives there — but the
10
+ * encoded inputs and outputs no longer sit in memory beside it.
11
+ */
12
+ import type { WasmModule } from "./types.js";
13
+ /** An input for file mode: an OPFS file handle, or a host path under Node. */
14
+ export interface FileInput {
15
+ /** The name the command uses for it, e.g. `"photo.cr2"`. */
16
+ name: string;
17
+ file: FileSystemFileHandle | string;
18
+ }
19
+ /** Where outputs land: an OPFS directory handle, or a host directory path. */
20
+ export type OutputDir = FileSystemDirectoryHandle | string;
21
+ /** An output file mode wrote. */
22
+ export interface WrittenFile {
23
+ /** Its path relative to `outputDir`, as the command named it. */
24
+ name: string;
25
+ /** The file in `outputDir`: a handle in the browser, a host path under Node. */
26
+ file: FileSystemFileHandle | string;
27
+ size: number;
28
+ }
29
+ export interface ExecuteFilesOptions {
30
+ /** Required: where the files the command creates are written. */
31
+ outputDir: OutputDir;
32
+ /**
33
+ * How many files the command may create before wopfs holds further ones in
34
+ * memory. Defaults to the number of output filenames in the command plus 8,
35
+ * which covers `%d` frame sequences and `+adjoin` of short animations; raise
36
+ * it for longer ones.
37
+ */
38
+ scratch?: number;
39
+ /**
40
+ * Where to import wopfs from. The default, `"@wasmedia/wopfs"`, works under
41
+ * Node and with a bundler; a page loaded without one passes the URL of
42
+ * wopfs's `dist/index.js`.
43
+ */
44
+ wopfsPath?: string;
45
+ /** Receives wopfs's warnings (pool exhausted, OPFS fallback). Default console.warn. */
46
+ onWarning?: (message: string) => void;
47
+ }
48
+ export interface CLIFileResult {
49
+ exitCode: number;
50
+ stdout: string;
51
+ stderr: string;
52
+ /** Outputs by name. Empty unless the command exited 0. */
53
+ written: Map<string, WrittenFile>;
54
+ }
55
+ /**
56
+ * Run an ImageMagick command over files, without copying them into memory.
57
+ *
58
+ * Filenames in the command are resolved the way {@link execute} resolves
59
+ * them: input names refer to `inputs`, and any other `name.ext` argument is an
60
+ * output, written to `outputDir` when the command succeeds. Inputs are never
61
+ * modified.
62
+ *
63
+ * Where it runs:
64
+ * - **Dedicated worker** with OPFS: `FileSystemFileHandle` inputs are read in
65
+ * place, and outputs are written into a `FileSystemDirectoryHandle`.
66
+ * - **Node**: inputs are host paths, `outputDir` a host directory.
67
+ * - **Main thread**: there is no synchronous OPFS access, so wopfs falls back
68
+ * to copying (MEMFS) and outputs are written to `outputDir` afterwards. It
69
+ * works, but saves nothing.
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * // In a worker: an OPFS file in, an OPFS directory out.
74
+ * const r = await executeFiles(module, 'shot.cr2 -auto-orient -resize 50% shot.jpg',
75
+ * [{ name: 'shot.cr2', file: handle }], { outputDir: dir });
76
+ * r.written.get('shot.jpg'); // { name, file: FileSystemFileHandle, size }
77
+ * ```
78
+ */
79
+ export declare function executeFiles(module: WasmModule, command: string | string[], inputs: FileInput[], options: ExecuteFilesOptions): Promise<CLIFileResult>;
80
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,8EAA8E;AAC9E,MAAM,WAAW,SAAS;IACxB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAAC;CACrC;AAED,8EAA8E;AAC9E,MAAM,MAAM,SAAS,GAAG,yBAAyB,GAAG,MAAM,CAAC;AAE3D,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,iEAAiE;IACjE,SAAS,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACnC;AAKD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,MAAM,EAAE,SAAS,EAAE,EACnB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CA2ExB"}
package/dist/files.js ADDED
@@ -0,0 +1,175 @@
1
+ /**
2
+ * File mode: run a command whose inputs and outputs stay in files.
3
+ *
4
+ * {@link execute} copies every input into MEMFS and reads every output back
5
+ * into a Uint8Array, so a run holds each file in JS memory at least twice.
6
+ * {@link executeFiles} mounts the files into the module through
7
+ * [wopfs](https://gitlab.com/wasmedia/wopfs) instead: OPFS files in a
8
+ * dedicated worker, host files under Node. The wasm heap is unchanged — what
9
+ * ImageMagick decodes into its pixel cache still lives there — but the
10
+ * encoded inputs and outputs no longer sit in memory beside it.
11
+ */
12
+ import { captureOutput, parseCommand, rewriteArg } from "./cli.js";
13
+ import { HINT_HEADER_BYTES, inputFormatHint } from "./raw.js";
14
+ import { loadWopfs } from "./wopfs.js";
15
+ const HEADROOM = 8;
16
+ let mountCounter = 0;
17
+ /**
18
+ * Run an ImageMagick command over files, without copying them into memory.
19
+ *
20
+ * Filenames in the command are resolved the way {@link execute} resolves
21
+ * them: input names refer to `inputs`, and any other `name.ext` argument is an
22
+ * output, written to `outputDir` when the command succeeds. Inputs are never
23
+ * modified.
24
+ *
25
+ * Where it runs:
26
+ * - **Dedicated worker** with OPFS: `FileSystemFileHandle` inputs are read in
27
+ * place, and outputs are written into a `FileSystemDirectoryHandle`.
28
+ * - **Node**: inputs are host paths, `outputDir` a host directory.
29
+ * - **Main thread**: there is no synchronous OPFS access, so wopfs falls back
30
+ * to copying (MEMFS) and outputs are written to `outputDir` afterwards. It
31
+ * works, but saves nothing.
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * // In a worker: an OPFS file in, an OPFS directory out.
36
+ * const r = await executeFiles(module, 'shot.cr2 -auto-orient -resize 50% shot.jpg',
37
+ * [{ name: 'shot.cr2', file: handle }], { outputDir: dir });
38
+ * r.written.get('shot.jpg'); // { name, file: FileSystemFileHandle, size }
39
+ * ```
40
+ */
41
+ export async function executeFiles(module, command, inputs, options) {
42
+ if (!options?.outputDir) {
43
+ throw new Error("executeFiles needs options.outputDir");
44
+ }
45
+ const names = new Set();
46
+ for (const input of inputs) {
47
+ if (names.has(input.name)) {
48
+ throw new Error(`executeFiles: input "${input.name}" is listed twice`);
49
+ }
50
+ names.add(input.name);
51
+ }
52
+ const args = typeof command === "string" ? parseCommand(command) : command;
53
+ const mountpoint = `/files_${++mountCounter}_${Date.now()}`;
54
+ const hints = new Map();
55
+ for (const input of inputs) {
56
+ const header = await readHeader(input.file);
57
+ const hint = header && inputFormatHint(input.name, header);
58
+ if (hint)
59
+ hints.set(input.name, hint);
60
+ }
61
+ const rewritten = args.map((arg) => rewriteArg(arg, names, mountpoint, hints));
62
+ const outputs = args.filter((arg, i) => rewritten[i] !== arg && !names.has(stripPrefix(arg))).length;
63
+ const wopfs = await loadWopfs(options.wopfsPath);
64
+ const mount = await wopfs.mountFiles(module, mountpoint, {
65
+ inputs: Object.fromEntries(inputs.map((i) => [i.name, i.file])),
66
+ outputDir: options.outputDir,
67
+ scratch: options.scratch ?? outputs + HEADROOM,
68
+ onExhausted: "spill",
69
+ onWarning: options.onWarning,
70
+ });
71
+ let exitCode;
72
+ let stdout = "";
73
+ let stderr = "";
74
+ const written = new Map();
75
+ // Set when the run or the commit fails, so a release() error never hides it.
76
+ let failed = false;
77
+ try {
78
+ try {
79
+ const run = captureOutput(() => module.callMain(rewritten));
80
+ exitCode = run.value;
81
+ stdout = run.stdout;
82
+ stderr = run.stderr;
83
+ }
84
+ catch (e) {
85
+ exitCode = 1;
86
+ stderr += `Exception: ${e}\n`;
87
+ }
88
+ // A failed command may leave a truncated output behind; only a
89
+ // successful run is committed.
90
+ if (exitCode === 0) {
91
+ for (const file of await mount.commit()) {
92
+ const out = await toWrittenFile(file, options.outputDir);
93
+ written.set(out.name, out);
94
+ }
95
+ }
96
+ }
97
+ catch (e) {
98
+ failed = true;
99
+ throw e;
100
+ }
101
+ finally {
102
+ try {
103
+ await mount.release();
104
+ }
105
+ catch (e) {
106
+ if (!failed)
107
+ throw e;
108
+ }
109
+ }
110
+ return {
111
+ exitCode,
112
+ stdout: stdout.trimEnd(),
113
+ stderr: stderr.trimEnd(),
114
+ written,
115
+ };
116
+ }
117
+ /**
118
+ * The first bytes of an input, for {@link inputFormatHint}, or `undefined` if
119
+ * they cannot be read; ImageMagick then reports the problem when it opens it.
120
+ */
121
+ async function readHeader(file) {
122
+ try {
123
+ if (typeof file === "string") {
124
+ const { open } = await import("node:fs/promises");
125
+ const handle = await open(file, "r");
126
+ try {
127
+ const buffer = new Uint8Array(HINT_HEADER_BYTES);
128
+ const { bytesRead } = await handle.read(buffer, 0, buffer.length, 0);
129
+ return buffer.subarray(0, bytesRead);
130
+ }
131
+ finally {
132
+ await handle.close();
133
+ }
134
+ }
135
+ const blob = await file.getFile();
136
+ return new Uint8Array(await blob.slice(0, HINT_HEADER_BYTES).arrayBuffer());
137
+ }
138
+ catch {
139
+ return undefined;
140
+ }
141
+ }
142
+ /** `png:out.png` → `out.png`; anything without a format prefix is unchanged. */
143
+ function stripPrefix(arg) {
144
+ const m = /^[A-Za-z][A-Za-z0-9+-]*:(.+)$/.exec(arg);
145
+ return m ? m[1] : arg;
146
+ }
147
+ /**
148
+ * Turn what wopfs committed into a {@link WrittenFile}. The opfs and node
149
+ * backends have already put the file in outputDir; the memfs fallback (main
150
+ * thread) hands back bytes, which are written there now.
151
+ */
152
+ async function toWrittenFile(file, outputDir) {
153
+ if (file.handle)
154
+ return { name: file.path, file: file.handle, size: file.size };
155
+ if (file.hostPath)
156
+ return { name: file.path, file: file.hostPath, size: file.size };
157
+ if (file.bytes && typeof outputDir !== "string") {
158
+ const parts = file.path.split("/");
159
+ const leaf = parts.pop();
160
+ let dir = outputDir;
161
+ for (const part of parts)
162
+ dir = await dir.getDirectoryHandle(part, { create: true });
163
+ const handle = await dir.getFileHandle(leaf, { create: true });
164
+ if (typeof handle.createWritable !== "function") {
165
+ throw new Error("executeFiles on the main thread needs FileSystemFileHandle.createWritable " +
166
+ "to write outputs; run it in a dedicated worker instead");
167
+ }
168
+ const writable = await handle.createWritable();
169
+ await writable.write(file.bytes);
170
+ await writable.close();
171
+ return { name: file.path, file: handle, size: file.size };
172
+ }
173
+ throw new Error(`executeFiles: wopfs committed "${file.path}" with nowhere to put it`);
174
+ }
175
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"}