先日書いた Deno 向け WASM を上手いとこと動かせないという話を書きました。
Deno Manual - WebAssembly support に書いてある対応を行ってみます。
参考
結局何をするのか?
「バイナリを uint8 の配列にしてぶちまけろ」ということらしいです。
考察
wasm-bindgen を使って deno 向けのコンパイル?ビルド?をすると、次のようなコードが生成されます。
1 | const file = new URL(import.meta.url).pathname; |
このコードを見ると、ローカルにあるファイルを読み込むことを前提としているのがよくわかります。
これを次のコードに変換できれば、動く見込みです。
1 | const wasmCode = new Uint8Array([ |
変換ツール作成
というわけで、変換ツールを用意しました。
実装
以下の変換ツールを作りました。
1 | export { parse } from "https://deno.land/std@0.66.0/flags/mod.ts"; |
1 | import { parse, existsSync } from "./deps.ts"; |
使い方
前提としては、wasm-bindgen で deno 向けのビルドがされていることが条件になります。
1 | # 実行 |
これで、Deno Manual - WebAssembly support に書かれたものを生成できました。
この件、かれこれ 2 週間ほどかけてしまいました。
最終的に、かなり勉強になりました。近日、このツールだけ deno.land/x に公開する予定です。
公開しました。
deno.land/x/js_with_embedded_wasm
GitHub - Octo8080/deno-csrf: Provides Deno with the CSRF protection of rust-csrf.
Provid…
ではでは。