Skip to content

Commit b925dce

Browse files
committed
new version with wasm cache
1 parent d4a4fed commit b925dce

File tree

3 files changed

+26
-12
lines changed

3 files changed

+26
-12
lines changed

deno/README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,27 @@ Scripts to transform the source code of
77
sh run.sh
88
```
99

10-
To import Imagemagick in your Deno project:
10+
To import ImageMagick into your Deno project:
1111

1212
```ts
1313
import {
1414
ImageMagick,
1515
IMagickImage,
16-
initializeImageMagick,
16+
initialize,
1717
MagickFormat,
1818
} from "https://deno.land/x/imagemagick_deno/mod.ts";
1919

20-
await initializeImageMagick(); // make sure to initialize first!
20+
await initialize(); // make sure to initialize first!
2121

2222
const data: Uint8Array = await Deno.readFile("image.jpg");
2323

24-
ImageMagick.read(data, (img: IMagickImage) => {
24+
await ImageMagick.read(data, (img: IMagickImage) => {
2525
img.resize(200, 100);
2626
img.blur(20, 6);
2727

28-
img.write(
29-
(data: Uint8Array) => Deno.writeFile("image-blur.jpg", data),
28+
await img.write(
3029
MagickFormat.Jpeg,
30+
(data: Uint8Array) => Deno.writeFile("image-blur.jpg", data),
3131
);
3232
});
3333
```

deno/mod.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ export async function initialize() {
1919
}
2020

2121
const response = await fetch(wasmUrl);
22-
await cache.put(wasmUrl, response);
23-
await initializeImageMagick(await response.clone().arrayBuffer());
22+
await cache.put(wasmUrl, response.clone());
23+
await initializeImageMagick(await response.arrayBuffer());
2424
}

mod.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,23 @@ export * from "./src/index.ts";
22
import { initializeImageMagick } from "./src/index.ts";
33

44
export async function initialize() {
5-
const wasmFile = import.meta.resolve("./src/wasm/magick_native.wasm");
6-
const file = await fetch(wasmFile);
7-
const wasm = await file.arrayBuffer();
5+
const wasmUrl = new URL(import.meta.resolve("./src/wasm/magick_native.wasm"));
86

9-
await initializeImageMagick(wasm);
7+
if (wasmUrl.protocol === "file:") {
8+
await initializeImageMagick(await Deno.readFile(wasmUrl));
9+
return;
10+
}
11+
12+
const cache = await caches.open("magick_native");
13+
const cached = await cache.match(wasmUrl);
14+
15+
if (cached) {
16+
const wasm = await cached.arrayBuffer();
17+
await initializeImageMagick(wasm);
18+
return;
19+
}
20+
21+
const response = await fetch(wasmUrl);
22+
await cache.put(wasmUrl, response.clone());
23+
await initializeImageMagick(await response.arrayBuffer());
1024
}

0 commit comments

Comments
 (0)