@yuku-codegen/wasm 0.5.21
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.
- package/README.md +18 -0
- package/encode.js +2367 -0
- package/index.d.ts +6 -0
- package/index.js +47 -0
- package/package.json +31 -0
- package/yuku-codegen.wasm +0 -0
package/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Print the AST back to formatted source. */
|
|
2
|
+
export function print(program: any): string;
|
|
3
|
+
/** Print TypeScript to JavaScript, dropping TypeScript-only syntax. */
|
|
4
|
+
export function strip(program: any): string;
|
|
5
|
+
/** Print minified (compact, comments dropped) source. */
|
|
6
|
+
export function minify(program: any): string;
|
package/index.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { encode } from "./encode.js";
|
|
2
|
+
|
|
3
|
+
const wasmUrl = new URL("./yuku-codegen.wasm", import.meta.url);
|
|
4
|
+
|
|
5
|
+
async function instantiate() {
|
|
6
|
+
if (wasmUrl.protocol !== "file:") {
|
|
7
|
+
try {
|
|
8
|
+
return (await WebAssembly.instantiateStreaming(fetch(wasmUrl))).instance;
|
|
9
|
+
} catch {
|
|
10
|
+
const bytes = await (await fetch(wasmUrl)).arrayBuffer();
|
|
11
|
+
return (await WebAssembly.instantiate(bytes)).instance;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const { readFile } = await import("node:fs/promises");
|
|
15
|
+
return (await WebAssembly.instantiate(await readFile(wasmUrl))).instance;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const { memory, alloc, free, codegen } = (await instantiate()).exports;
|
|
19
|
+
const decoder = new TextDecoder();
|
|
20
|
+
|
|
21
|
+
function run(op, program) {
|
|
22
|
+
const ast = new Uint8Array(encode(program, null));
|
|
23
|
+
const inPtr = alloc(ast.length);
|
|
24
|
+
// Growing wasm memory detaches memory.buffer, so re-view after every call.
|
|
25
|
+
new Uint8Array(memory.buffer, inPtr, ast.length).set(ast);
|
|
26
|
+
|
|
27
|
+
const ptr = codegen(inPtr, ast.length, op);
|
|
28
|
+
free(inPtr, ast.length);
|
|
29
|
+
if (ptr === 0) throw new Error("yuku-codegen-wasm: failed to generate code");
|
|
30
|
+
|
|
31
|
+
const len = new DataView(memory.buffer).getUint32(ptr, true);
|
|
32
|
+
const code = decoder.decode(new Uint8Array(memory.buffer, ptr + 4, len));
|
|
33
|
+
free(ptr, 4 + len);
|
|
34
|
+
return code;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function print(program) {
|
|
38
|
+
return run(0, program);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function strip(program) {
|
|
42
|
+
return run(1, program);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function minify(program) {
|
|
46
|
+
return run(2, program);
|
|
47
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@yuku-codegen/wasm",
|
|
3
|
+
"version": "0.5.21",
|
|
4
|
+
"description": "JavaScript/TypeScript code generator as a WebAssembly module",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/yuku-toolchain/yuku"
|
|
9
|
+
},
|
|
10
|
+
"type": "module",
|
|
11
|
+
"main": "index.js",
|
|
12
|
+
"types": "index.d.ts",
|
|
13
|
+
"files": [
|
|
14
|
+
"index.js",
|
|
15
|
+
"index.d.ts",
|
|
16
|
+
"encode.js",
|
|
17
|
+
"yuku-codegen.wasm"
|
|
18
|
+
],
|
|
19
|
+
"keywords": [
|
|
20
|
+
"ast",
|
|
21
|
+
"codegen",
|
|
22
|
+
"estree",
|
|
23
|
+
"javascript",
|
|
24
|
+
"minifier",
|
|
25
|
+
"printer",
|
|
26
|
+
"typescript",
|
|
27
|
+
"wasm",
|
|
28
|
+
"webassembly",
|
|
29
|
+
"zig"
|
|
30
|
+
]
|
|
31
|
+
}
|
|
Binary file
|