summaryrefslogtreecommitdiffstats
path: root/node_modules/@webassemblyjs/wasm-edit/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@webassemblyjs/wasm-edit/README.md')
-rw-r--r--node_modules/@webassemblyjs/wasm-edit/README.md86
1 files changed, 86 insertions, 0 deletions
diff --git a/node_modules/@webassemblyjs/wasm-edit/README.md b/node_modules/@webassemblyjs/wasm-edit/README.md
new file mode 100644
index 0000000..f03462f
--- /dev/null
+++ b/node_modules/@webassemblyjs/wasm-edit/README.md
@@ -0,0 +1,86 @@
+# @webassemblyjs/wasm-edit
+
+> Rewrite a WASM binary
+
+Replace in-place an AST node in the binary.
+
+## Installation
+
+```sh
+yarn add @webassemblyjs/wasm-edit
+```
+
+## Usage
+
+Update:
+
+```js
+import { edit } from "@webassemblyjs/wasm-edit";
+
+const binary = [/*...*/];
+
+const visitors = {
+ ModuleImport({ node }) {
+ node.module = "foo";
+ node.name = "bar";
+ }
+};
+
+const newBinary = edit(binary, visitors);
+```
+
+Replace:
+
+```js
+import { edit } from "@webassemblyjs/wasm-edit";
+
+const binary = [/*...*/];
+
+const visitors = {
+ Instr(path) {
+ const newNode = t.callInstruction(t.indexLiteral(0));
+ path.replaceWith(newNode);
+ }
+};
+
+const newBinary = edit(binary, visitors);
+```
+
+Remove:
+
+```js
+import { edit } from "@webassemblyjs/wasm-edit";
+
+const binary = [/*...*/];
+
+const visitors = {
+ ModuleExport({ node }) {
+ path.remove()
+ }
+};
+
+const newBinary = edit(binary, visitors);
+```
+
+Insert:
+
+```js
+import { add } from "@webassemblyjs/wasm-edit";
+
+const binary = [/*...*/];
+
+const newBinary = add(actualBinary, [
+ t.moduleImport("env", "mem", t.memory(t.limit(1)))
+]);
+```
+
+## Providing the AST
+
+Providing an AST allows you to handle the decoding yourself, here is the API:
+
+```js
+addWithAST(Program, ArrayBuffer, Array<Node>): ArrayBuffer;
+editWithAST(Program, ArrayBuffer, visitors): ArrayBuffer;
+```
+
+Note that the AST will be updated in-place.