quickjs-wasi-reactor 0.0.6 → 0.0.11
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 +104 -99
- package/dist/quickjs.d.ts +15 -22
- package/dist/quickjs.d.ts.map +1 -1
- package/dist/quickjs.js +48 -86
- package/dist/quickjs.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.js +2 -2
- package/package.json +2 -2
- package/qjs-wasi.wasm +0 -0
- package/src/quickjs.test.ts +58 -3
- package/src/quickjs.ts +58 -107
- package/src/version.ts +2 -2
package/README.md
CHANGED
|
@@ -11,7 +11,8 @@ This package provides a JavaScript/TypeScript implementation for running QuickJS
|
|
|
11
11
|
- [go-quickjs-wasi-reactor](https://github.com/aperturerobotics/go-quickjs-wasi-reactor) - Go implementation with wazero
|
|
12
12
|
- [go-quickjs-wasi](https://github.com/paralin/go-quickjs-wasi) - Go implementation for command model (blocking)
|
|
13
13
|
- [paralin/quickjs](https://github.com/paralin/quickjs) - QuickJS-NG fork with reactor build target
|
|
14
|
-
- [QuickJS-NG reactor PR](https://github.com/quickjs-ng/quickjs/pull/
|
|
14
|
+
- [QuickJS-NG reactor PR](https://github.com/quickjs-ng/quickjs/pull/1308) - Upstream PR for reactor support
|
|
15
|
+
- [QuickJS-NG event loop PR](https://github.com/quickjs-ng/quickjs/pull/1307) - Upstream PR for non-blocking event loop
|
|
15
16
|
|
|
16
17
|
## Installation
|
|
17
18
|
|
|
@@ -26,103 +27,107 @@ bun add quickjs-wasi-reactor
|
|
|
26
27
|
### Basic Usage
|
|
27
28
|
|
|
28
29
|
```typescript
|
|
29
|
-
import { loadQuickJS, buildFileSystem } from
|
|
30
|
+
import { loadQuickJS, buildFileSystem } from "quickjs-wasi-reactor";
|
|
30
31
|
|
|
31
32
|
// Load QuickJS from a URL or buffer
|
|
32
|
-
const qjs = await loadQuickJS(
|
|
33
|
+
const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm");
|
|
33
34
|
|
|
34
|
-
// Initialize with std
|
|
35
|
-
qjs.
|
|
35
|
+
// Initialize with --std flag (provides std, os, bjson globals)
|
|
36
|
+
qjs.init(["qjs", "--std"]);
|
|
36
37
|
|
|
37
38
|
// Evaluate JavaScript code
|
|
38
|
-
qjs.eval(`console.log("Hello from QuickJS!")`)
|
|
39
|
+
qjs.eval(`console.log("Hello from QuickJS!")`);
|
|
39
40
|
|
|
40
41
|
// Run the event loop
|
|
41
|
-
await qjs.runLoop()
|
|
42
|
+
await qjs.runLoop();
|
|
42
43
|
|
|
43
44
|
// Cleanup
|
|
44
|
-
qjs.destroy()
|
|
45
|
+
qjs.destroy();
|
|
45
46
|
```
|
|
46
47
|
|
|
47
48
|
### Initialization Options
|
|
48
49
|
|
|
49
|
-
There are three ways to initialize QuickJS:
|
|
50
|
-
|
|
51
50
|
```typescript
|
|
52
|
-
//
|
|
53
|
-
qjs.init()
|
|
54
|
-
qjs.eval(`import * as std from 'qjs:std'; std.printf("Hello\\n")`, true)
|
|
51
|
+
// Basic runtime with std modules available for import
|
|
52
|
+
qjs.init();
|
|
53
|
+
qjs.eval(`import * as std from 'qjs:std'; std.printf("Hello\\n")`, true);
|
|
55
54
|
|
|
56
|
-
//
|
|
57
|
-
qjs.
|
|
58
|
-
qjs.eval(`std.printf("Hello\\n")`)
|
|
55
|
+
// With --std flag to expose std, os, bjson as globals
|
|
56
|
+
qjs.init(["qjs", "--std"]);
|
|
57
|
+
qjs.eval(`std.printf("Hello\\n")`); // std is already global
|
|
59
58
|
|
|
60
|
-
//
|
|
61
|
-
qjs.
|
|
62
|
-
qjs.eval(`console.log(scriptArgs)`)
|
|
59
|
+
// With script args accessible via scriptArgs global
|
|
60
|
+
qjs.init(["qjs", "script.js", "--verbose"]);
|
|
61
|
+
qjs.eval(`console.log(scriptArgs)`); // ['qjs', 'script.js', '--verbose']
|
|
63
62
|
```
|
|
64
63
|
|
|
65
64
|
### With Virtual Filesystem
|
|
66
65
|
|
|
67
66
|
```typescript
|
|
68
|
-
import { loadQuickJS, buildFileSystem } from
|
|
67
|
+
import { loadQuickJS, buildFileSystem } from "quickjs-wasi-reactor";
|
|
69
68
|
|
|
70
69
|
// Build a virtual filesystem
|
|
71
70
|
const fs = buildFileSystem(
|
|
72
71
|
new Map([
|
|
73
|
-
[
|
|
74
|
-
[
|
|
72
|
+
["script.js", 'console.log("Hello from script!")'],
|
|
73
|
+
[
|
|
74
|
+
"lib/utils.js",
|
|
75
|
+
"export function greet(name) { return `Hello, ${name}!` }",
|
|
76
|
+
],
|
|
75
77
|
]),
|
|
76
|
-
)
|
|
78
|
+
);
|
|
77
79
|
|
|
78
|
-
const qjs = await loadQuickJS(
|
|
80
|
+
const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm", { fs });
|
|
79
81
|
|
|
80
|
-
qjs.
|
|
81
|
-
qjs.eval(
|
|
82
|
+
qjs.init(["qjs", "--std"]);
|
|
83
|
+
qjs.eval(
|
|
84
|
+
`
|
|
82
85
|
import { greet } from './lib/utils.js'
|
|
83
86
|
console.log(greet('World'))
|
|
84
|
-
`,
|
|
85
|
-
|
|
86
|
-
|
|
87
|
+
`,
|
|
88
|
+
true,
|
|
89
|
+
);
|
|
90
|
+
await qjs.runLoop();
|
|
91
|
+
qjs.destroy();
|
|
87
92
|
```
|
|
88
93
|
|
|
89
94
|
### Custom I/O Handlers
|
|
90
95
|
|
|
91
96
|
```typescript
|
|
92
|
-
import { loadQuickJS } from
|
|
97
|
+
import { loadQuickJS } from "quickjs-wasi-reactor";
|
|
93
98
|
|
|
94
|
-
const qjs = await loadQuickJS(
|
|
95
|
-
stdout: (line) => document.body.innerHTML += `<p>${line}</p
|
|
96
|
-
stderr: (line) => console.error(
|
|
99
|
+
const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm", {
|
|
100
|
+
stdout: (line) => (document.body.innerHTML += `<p>${line}</p>`),
|
|
101
|
+
stderr: (line) => console.error("Error:", line),
|
|
97
102
|
onDevOut: (data) => {
|
|
98
103
|
// Handle binary data written to /dev/out
|
|
99
|
-
console.log(
|
|
104
|
+
console.log("Received", data.length, "bytes");
|
|
100
105
|
},
|
|
101
|
-
})
|
|
106
|
+
});
|
|
102
107
|
|
|
103
|
-
qjs.init()
|
|
104
|
-
qjs.eval(`console.log("This goes to custom stdout")`)
|
|
105
|
-
await qjs.runLoop()
|
|
106
|
-
qjs.destroy()
|
|
108
|
+
qjs.init();
|
|
109
|
+
qjs.eval(`console.log("This goes to custom stdout")`);
|
|
110
|
+
await qjs.runLoop();
|
|
111
|
+
qjs.destroy();
|
|
107
112
|
```
|
|
108
113
|
|
|
109
114
|
### Feeding Stdin Data
|
|
110
115
|
|
|
111
116
|
```typescript
|
|
112
|
-
import { loadQuickJS, PollableStdin } from
|
|
117
|
+
import { loadQuickJS, PollableStdin } from "quickjs-wasi-reactor";
|
|
113
118
|
|
|
114
|
-
const stdin = new PollableStdin()
|
|
119
|
+
const stdin = new PollableStdin();
|
|
115
120
|
|
|
116
|
-
const qjs = await loadQuickJS(
|
|
121
|
+
const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm", { stdin });
|
|
117
122
|
|
|
118
|
-
qjs.
|
|
123
|
+
qjs.init(["qjs", "--std"]);
|
|
119
124
|
|
|
120
125
|
// Push data to stdin
|
|
121
|
-
qjs.pushStdin(new TextEncoder().encode(
|
|
126
|
+
qjs.pushStdin(new TextEncoder().encode("Hello from stdin\n"));
|
|
122
127
|
|
|
123
128
|
// Run the loop - QuickJS can read from stdin
|
|
124
|
-
await qjs.runLoop()
|
|
125
|
-
qjs.destroy()
|
|
129
|
+
await qjs.runLoop();
|
|
130
|
+
qjs.destroy();
|
|
126
131
|
```
|
|
127
132
|
|
|
128
133
|
### Non-Blocking Event Loop Control
|
|
@@ -130,40 +135,40 @@ qjs.destroy()
|
|
|
130
135
|
For fine-grained control over JavaScript execution, use `loopOnce()` instead of `runLoop()`:
|
|
131
136
|
|
|
132
137
|
```typescript
|
|
133
|
-
import { loadQuickJS, LOOP_IDLE, LOOP_ERROR } from
|
|
138
|
+
import { loadQuickJS, LOOP_IDLE, LOOP_ERROR } from "quickjs-wasi-reactor";
|
|
134
139
|
|
|
135
|
-
const qjs = await loadQuickJS(
|
|
136
|
-
qjs.
|
|
140
|
+
const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm");
|
|
141
|
+
qjs.init(["qjs", "--std"]);
|
|
137
142
|
|
|
138
143
|
qjs.eval(`
|
|
139
144
|
os.setTimeout(() => console.log("timer fired"), 100)
|
|
140
145
|
console.log("scheduled timer")
|
|
141
|
-
`)
|
|
146
|
+
`);
|
|
142
147
|
|
|
143
148
|
// Manual event loop - integrate with your own scheduling
|
|
144
149
|
while (true) {
|
|
145
|
-
const result = qjs.loopOnce()
|
|
146
|
-
|
|
147
|
-
if (result === LOOP_ERROR) throw new Error("JavaScript error")
|
|
148
|
-
if (result === LOOP_IDLE) break
|
|
149
|
-
|
|
150
|
+
const result = qjs.loopOnce();
|
|
151
|
+
|
|
152
|
+
if (result === LOOP_ERROR) throw new Error("JavaScript error");
|
|
153
|
+
if (result === LOOP_IDLE) break; // No more work
|
|
154
|
+
|
|
150
155
|
if (result === 0) {
|
|
151
156
|
// More microtasks pending - yield to browser then continue
|
|
152
|
-
await new Promise(r => queueMicrotask(r))
|
|
157
|
+
await new Promise((r) => queueMicrotask(r));
|
|
153
158
|
} else if (result > 0) {
|
|
154
159
|
// Timer pending in N ms - do other work or wait
|
|
155
|
-
await new Promise(r => setTimeout(r, result))
|
|
160
|
+
await new Promise((r) => setTimeout(r, result));
|
|
156
161
|
}
|
|
157
162
|
}
|
|
158
163
|
|
|
159
|
-
qjs.destroy()
|
|
164
|
+
qjs.destroy();
|
|
160
165
|
```
|
|
161
166
|
|
|
162
167
|
### Browser Integration with Animation Frames
|
|
163
168
|
|
|
164
169
|
```typescript
|
|
165
|
-
const qjs = await loadQuickJS(
|
|
166
|
-
qjs.
|
|
170
|
+
const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm");
|
|
171
|
+
qjs.init(["qjs", "--std"]);
|
|
167
172
|
|
|
168
173
|
qjs.eval(`
|
|
169
174
|
let frame = 0
|
|
@@ -172,18 +177,18 @@ qjs.eval(`
|
|
|
172
177
|
if (frame < 60) os.setTimeout(tick, 16)
|
|
173
178
|
}
|
|
174
179
|
tick()
|
|
175
|
-
`)
|
|
180
|
+
`);
|
|
176
181
|
|
|
177
182
|
// Cooperative scheduling with browser
|
|
178
183
|
function runFrame() {
|
|
179
|
-
const result = qjs.loopOnce()
|
|
184
|
+
const result = qjs.loopOnce();
|
|
180
185
|
if (result >= 0) {
|
|
181
|
-
requestAnimationFrame(runFrame)
|
|
186
|
+
requestAnimationFrame(runFrame);
|
|
182
187
|
} else {
|
|
183
|
-
qjs.destroy()
|
|
188
|
+
qjs.destroy();
|
|
184
189
|
}
|
|
185
190
|
}
|
|
186
|
-
requestAnimationFrame(runFrame)
|
|
191
|
+
requestAnimationFrame(runFrame);
|
|
187
192
|
```
|
|
188
193
|
|
|
189
194
|
## API
|
|
@@ -212,33 +217,31 @@ Create a QuickJS instance from a pre-compiled WebAssembly module.
|
|
|
212
217
|
|
|
213
218
|
### `QuickJSOptions`
|
|
214
219
|
|
|
215
|
-
| Option | Type
|
|
216
|
-
| ---------- |
|
|
217
|
-
| `args` | `string[]`
|
|
218
|
-
| `env` | `string[]`
|
|
219
|
-
| `debug` | `boolean`
|
|
220
|
-
| `stdout` | `(line: string) => void`
|
|
221
|
-
| `stderr` | `(line: string) => void`
|
|
222
|
-
| `fs` | `Map<string, File\|Dir>`
|
|
223
|
-
| `onDevOut` | `(data: Uint8Array) => void
|
|
224
|
-
| `stdin` | `PollableStdin`
|
|
220
|
+
| Option | Type | Default | Description |
|
|
221
|
+
| ---------- | ---------------------------- | --------------------- | --------------------------------- |
|
|
222
|
+
| `args` | `string[]` | `['qjs']` | WASI command-line arguments |
|
|
223
|
+
| `env` | `string[]` | `[]` | Environment variables (key=value) |
|
|
224
|
+
| `debug` | `boolean` | `false` | Enable WASI debug logging |
|
|
225
|
+
| `stdout` | `(line: string) => void` | `console.log` | Custom stdout line handler |
|
|
226
|
+
| `stderr` | `(line: string) => void` | `console.error` | Custom stderr line handler |
|
|
227
|
+
| `fs` | `Map<string, File\|Dir>` | `new Map()` | Virtual filesystem root contents |
|
|
228
|
+
| `onDevOut` | `(data: Uint8Array) => void` | `undefined` | Handler for /dev/out writes |
|
|
229
|
+
| `stdin` | `PollableStdin` | `new PollableStdin()` | Custom stdin source |
|
|
225
230
|
|
|
226
231
|
### `QuickJS` Methods
|
|
227
232
|
|
|
228
|
-
#### `init()`
|
|
229
|
-
|
|
230
|
-
Initialize QuickJS runtime and context with std modules available for import.
|
|
231
|
-
Modules `qjs:std`, `qjs:os`, and `qjs:bjson` can be imported in evaluated code.
|
|
233
|
+
#### `init(args?)`
|
|
232
234
|
|
|
233
|
-
|
|
235
|
+
Initialize QuickJS runtime and context. Modules `qjs:std`, `qjs:os`, and `qjs:bjson` can be imported in evaluated code.
|
|
234
236
|
|
|
235
|
-
|
|
236
|
-
Convenient for REPL-style usage where you want immediate access to std library.
|
|
237
|
+
Pass `['qjs', '--std']` to expose `std`, `os`, and `bjson` as globals.
|
|
237
238
|
|
|
238
|
-
|
|
239
|
+
Supported flags:
|
|
239
240
|
|
|
240
|
-
|
|
241
|
-
|
|
241
|
+
- `--std` - Load std, os, bjson modules as globals
|
|
242
|
+
- `-m, --module` - Treat script as ES module
|
|
243
|
+
- `-e, --eval` - Evaluate expression
|
|
244
|
+
- `-I, --include` - Include file before script
|
|
242
245
|
|
|
243
246
|
#### `eval(code, isModule?, filename?)`
|
|
244
247
|
|
|
@@ -296,36 +299,38 @@ Build a virtual filesystem from a map of paths to content.
|
|
|
296
299
|
```typescript
|
|
297
300
|
const fs = buildFileSystem(
|
|
298
301
|
new Map([
|
|
299
|
-
[
|
|
300
|
-
[
|
|
302
|
+
["path/to/file.js", "content"],
|
|
303
|
+
["another/file.txt", new Uint8Array([1, 2, 3])],
|
|
301
304
|
]),
|
|
302
|
-
)
|
|
305
|
+
);
|
|
303
306
|
```
|
|
304
307
|
|
|
305
308
|
## Reactor Model
|
|
306
309
|
|
|
307
|
-
Unlike the standard WASI "command" model that blocks in `_start()`, the reactor model exports
|
|
310
|
+
Unlike the standard WASI "command" model that blocks in `_start()`, the reactor model exports functions for re-entrant execution:
|
|
311
|
+
|
|
312
|
+
**Reactor Initialization (preferred):**
|
|
313
|
+
|
|
314
|
+
- `qjs_init_argv(argc, argv)` - Initialize with CLI args (sets up module loader)
|
|
315
|
+
- `qjs_get_context()` - Get JSContext\* for use with other APIs
|
|
316
|
+
- `qjs_destroy()` - Cleanup reactor runtime
|
|
317
|
+
|
|
318
|
+
**Evaluation:**
|
|
308
319
|
|
|
309
|
-
**Core Runtime:**
|
|
310
|
-
- `JS_NewRuntime()` / `JS_FreeRuntime(rt)` - Create/destroy runtime
|
|
311
|
-
- `JS_NewContext(rt)` / `JS_FreeContext(ctx)` - Create/destroy context
|
|
312
320
|
- `JS_Eval(ctx, input, len, filename, flags)` - Evaluate JavaScript code
|
|
313
321
|
- `JS_FreeValue(ctx, val)` - Free a JSValue
|
|
314
322
|
|
|
315
|
-
**
|
|
316
|
-
|
|
317
|
-
- `js_init_module_std(ctx, name)` - Register qjs:std module
|
|
318
|
-
- `js_init_module_os(ctx, name)` - Register qjs:os module
|
|
319
|
-
- `js_init_module_bjson(ctx, name)` - Register qjs:bjson module
|
|
320
|
-
- `js_std_add_helpers(ctx, argc, argv)` - Add console.log, print, scriptArgs, etc.
|
|
323
|
+
**Event Loop:**
|
|
324
|
+
|
|
321
325
|
- `js_std_loop_once(ctx)` - Run one event loop iteration (non-blocking)
|
|
322
326
|
- `js_std_poll_io(ctx, timeout_ms)` - Poll for I/O events
|
|
323
327
|
- `js_std_dump_error(ctx)` - Dump exception to stderr
|
|
324
328
|
|
|
325
329
|
**Memory:**
|
|
330
|
+
|
|
326
331
|
- `malloc(size)` / `free(ptr)` - Memory allocation
|
|
327
332
|
|
|
328
|
-
This enables re-entrant execution in JavaScript host environments where blocking is not possible.
|
|
333
|
+
This enables re-entrant execution in JavaScript host environments where blocking is not possible.
|
|
329
334
|
|
|
330
335
|
## License
|
|
331
336
|
|
package/dist/quickjs.d.ts
CHANGED
|
@@ -10,18 +10,12 @@ export interface QuickJSReactorExports {
|
|
|
10
10
|
memory: WebAssembly.Memory;
|
|
11
11
|
malloc(size: number): number;
|
|
12
12
|
free(ptr: number): void;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
qjs_init_argv(argc: number, argv: number): number;
|
|
14
|
+
qjs_get_context(): number;
|
|
15
|
+
qjs_destroy(): void;
|
|
16
|
+
JS_GetRuntime(ctx: number): number;
|
|
17
17
|
JS_Eval(ctx: number, input: number, input_len: number, filename: number, eval_flags: number): bigint;
|
|
18
18
|
JS_FreeValue(ctx: number, val: bigint): void;
|
|
19
|
-
js_init_module_std(ctx: number, module_name: number): number;
|
|
20
|
-
js_init_module_os(ctx: number, module_name: number): number;
|
|
21
|
-
js_init_module_bjson(ctx: number, module_name: number): number;
|
|
22
|
-
js_std_init_handlers(rt: number): void;
|
|
23
|
-
js_std_free_handlers(rt: number): void;
|
|
24
|
-
js_std_add_helpers(ctx: number, argc: number, argv: number): void;
|
|
25
19
|
js_std_loop_once(ctx: number): number;
|
|
26
20
|
js_std_poll_io(ctx: number, timeout_ms: number): number;
|
|
27
21
|
js_std_dump_error(ctx: number): void;
|
|
@@ -65,19 +59,18 @@ export declare class QuickJS {
|
|
|
65
59
|
/** Check if a JSValue is an exception */
|
|
66
60
|
private isException;
|
|
67
61
|
/**
|
|
68
|
-
* Initialize QuickJS runtime and context.
|
|
62
|
+
* Initialize QuickJS runtime and context with optional command-line arguments.
|
|
63
|
+
* Uses qjs_init_argv which sets up the module loader properly.
|
|
64
|
+
*
|
|
65
|
+
* @param args Optional CLI arguments. Pass ["qjs", "--std"] to load std/os/bjson as globals.
|
|
66
|
+
*
|
|
67
|
+
* Supported flags:
|
|
68
|
+
* - --std: Load std, os, bjson modules as globals
|
|
69
|
+
* - -m, --module: Treat script as ES module
|
|
70
|
+
* - -e, --eval: Evaluate expression
|
|
71
|
+
* - -I, --include: Include file before script
|
|
69
72
|
*/
|
|
70
|
-
init(): void;
|
|
71
|
-
/**
|
|
72
|
-
* Initialize QuickJS and import std modules as globals.
|
|
73
|
-
* This makes std, os, and bjson available as global objects.
|
|
74
|
-
*/
|
|
75
|
-
initStdModule(): void;
|
|
76
|
-
/**
|
|
77
|
-
* Initialize QuickJS with command-line arguments.
|
|
78
|
-
* Sets up scriptArgs for the JavaScript code.
|
|
79
|
-
*/
|
|
80
|
-
initArgv(args: string[]): void;
|
|
73
|
+
init(args?: string[]): void;
|
|
81
74
|
/**
|
|
82
75
|
* Evaluate JavaScript code.
|
|
83
76
|
* @param code The JavaScript code to evaluate
|
package/dist/quickjs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickjs.d.ts","sourceRoot":"","sources":["../src/quickjs.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,aAAa,EAEb,IAAI,EACJ,SAAS,EAGV,MAAM,aAAa,CAAC;AAGrB,oDAAoD;AACpD,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,UAAU,KAAK,CAAC;AAS7B,oDAAoD;AACpD,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,WAAW,IAAI,IAAI,CAAC;IACpB,yBAAyB;IACzB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;IAG3B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAGxB,aAAa,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"quickjs.d.ts","sourceRoot":"","sources":["../src/quickjs.ts"],"names":[],"mappings":"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"}
|
package/dist/quickjs.js
CHANGED
|
@@ -82,90 +82,58 @@ export class QuickJS {
|
|
|
82
82
|
return tag === JS_TAG_EXCEPTION;
|
|
83
83
|
}
|
|
84
84
|
/**
|
|
85
|
-
* Initialize QuickJS runtime and context.
|
|
85
|
+
* Initialize QuickJS runtime and context with optional command-line arguments.
|
|
86
|
+
* Uses qjs_init_argv which sets up the module loader properly.
|
|
87
|
+
*
|
|
88
|
+
* @param args Optional CLI arguments. Pass ["qjs", "--std"] to load std/os/bjson as globals.
|
|
89
|
+
*
|
|
90
|
+
* Supported flags:
|
|
91
|
+
* - --std: Load std, os, bjson modules as globals
|
|
92
|
+
* - -m, --module: Treat script as ES module
|
|
93
|
+
* - -e, --eval: Evaluate expression
|
|
94
|
+
* - -I, --include: Include file before script
|
|
86
95
|
*/
|
|
87
|
-
init() {
|
|
96
|
+
init(args) {
|
|
88
97
|
if (!this.exports)
|
|
89
98
|
throw new Error("QuickJS not initialized");
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
99
|
+
if (this.ctxPtr !== 0)
|
|
100
|
+
throw new Error("QuickJS already initialized");
|
|
101
|
+
const actualArgs = args ?? ["qjs"];
|
|
102
|
+
// Allocate argv strings
|
|
103
|
+
const argPtrs = [];
|
|
104
|
+
for (const arg of actualArgs) {
|
|
105
|
+
argPtrs.push(this.allocString(arg));
|
|
94
106
|
}
|
|
95
|
-
//
|
|
96
|
-
this.exports.
|
|
97
|
-
|
|
98
|
-
this.ctxPtr = this.exports.JS_NewContext(this.rtPtr);
|
|
99
|
-
if (this.ctxPtr === 0) {
|
|
100
|
-
this.exports.js_std_free_handlers(this.rtPtr);
|
|
101
|
-
this.exports.JS_FreeRuntime(this.rtPtr);
|
|
102
|
-
this.rtPtr = 0;
|
|
103
|
-
throw new Error("JS_NewContext failed");
|
|
104
|
-
}
|
|
105
|
-
// Initialize std modules
|
|
106
|
-
const stdName = this.allocString("qjs:std");
|
|
107
|
-
this.exports.js_init_module_std(this.ctxPtr, stdName);
|
|
108
|
-
this.freePtr(stdName);
|
|
109
|
-
const osName = this.allocString("qjs:os");
|
|
110
|
-
this.exports.js_init_module_os(this.ctxPtr, osName);
|
|
111
|
-
this.freePtr(osName);
|
|
112
|
-
const bjsonName = this.allocString("qjs:bjson");
|
|
113
|
-
this.exports.js_init_module_bjson(this.ctxPtr, bjsonName);
|
|
114
|
-
this.freePtr(bjsonName);
|
|
115
|
-
// Add std helpers (console.log, print, etc.)
|
|
116
|
-
this.exports.js_std_add_helpers(this.ctxPtr, 0, 0);
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Initialize QuickJS and import std modules as globals.
|
|
120
|
-
* This makes std, os, and bjson available as global objects.
|
|
121
|
-
*/
|
|
122
|
-
initStdModule() {
|
|
123
|
-
this.init();
|
|
124
|
-
// Import and expose std modules globally
|
|
125
|
-
const code = `import * as bjson from 'qjs:bjson';
|
|
126
|
-
import * as std from 'qjs:std';
|
|
127
|
-
import * as os from 'qjs:os';
|
|
128
|
-
globalThis.bjson = bjson;
|
|
129
|
-
globalThis.std = std;
|
|
130
|
-
globalThis.os = os;
|
|
131
|
-
`;
|
|
132
|
-
this.eval(code, true);
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Initialize QuickJS with command-line arguments.
|
|
136
|
-
* Sets up scriptArgs for the JavaScript code.
|
|
137
|
-
*/
|
|
138
|
-
initArgv(args) {
|
|
139
|
-
if (!this.exports)
|
|
140
|
-
throw new Error("QuickJS not initialized");
|
|
141
|
-
this.init();
|
|
142
|
-
if (args.length > 0) {
|
|
143
|
-
// Allocate argv strings
|
|
144
|
-
const argPtrs = [];
|
|
145
|
-
for (const arg of args) {
|
|
146
|
-
argPtrs.push(this.allocString(arg));
|
|
147
|
-
}
|
|
148
|
-
// Allocate argv array
|
|
149
|
-
const argvPtr = this.exports.malloc(args.length * 4);
|
|
150
|
-
if (argvPtr === 0) {
|
|
151
|
-
for (const ptr of argPtrs) {
|
|
152
|
-
this.freePtr(ptr);
|
|
153
|
-
}
|
|
154
|
-
throw new Error("malloc failed for argv");
|
|
155
|
-
}
|
|
156
|
-
// Write argv pointers
|
|
157
|
-
const view = new DataView(this.exports.memory.buffer);
|
|
158
|
-
for (let i = 0; i < argPtrs.length; i++) {
|
|
159
|
-
view.setUint32(argvPtr + i * 4, argPtrs[i], true);
|
|
160
|
-
}
|
|
161
|
-
// Call js_std_add_helpers with argv
|
|
162
|
-
this.exports.js_std_add_helpers(this.ctxPtr, args.length, argvPtr);
|
|
163
|
-
// Free argv
|
|
164
|
-
this.freePtr(argvPtr);
|
|
107
|
+
// Allocate argv array
|
|
108
|
+
const argvPtr = this.exports.malloc(actualArgs.length * 4);
|
|
109
|
+
if (argvPtr === 0) {
|
|
165
110
|
for (const ptr of argPtrs) {
|
|
166
111
|
this.freePtr(ptr);
|
|
167
112
|
}
|
|
113
|
+
throw new Error("malloc failed for argv");
|
|
114
|
+
}
|
|
115
|
+
// Write argv pointers
|
|
116
|
+
const view = new DataView(this.exports.memory.buffer);
|
|
117
|
+
for (let i = 0; i < argPtrs.length; i++) {
|
|
118
|
+
view.setUint32(argvPtr + i * 4, argPtrs[i], true);
|
|
119
|
+
}
|
|
120
|
+
// Call qjs_init_argv
|
|
121
|
+
const result = this.exports.qjs_init_argv(actualArgs.length, argvPtr);
|
|
122
|
+
// Free argv memory
|
|
123
|
+
this.freePtr(argvPtr);
|
|
124
|
+
for (const ptr of argPtrs) {
|
|
125
|
+
this.freePtr(ptr);
|
|
126
|
+
}
|
|
127
|
+
if (result !== 0) {
|
|
128
|
+
throw new Error("qjs_init_argv failed");
|
|
168
129
|
}
|
|
130
|
+
// Get the context pointer
|
|
131
|
+
this.ctxPtr = this.exports.qjs_get_context();
|
|
132
|
+
if (this.ctxPtr === 0) {
|
|
133
|
+
throw new Error("qjs_get_context returned null");
|
|
134
|
+
}
|
|
135
|
+
// Get the runtime pointer
|
|
136
|
+
this.rtPtr = this.exports.JS_GetRuntime(this.ctxPtr);
|
|
169
137
|
}
|
|
170
138
|
/**
|
|
171
139
|
* Evaluate JavaScript code.
|
|
@@ -341,16 +309,10 @@ globalThis.os = os;
|
|
|
341
309
|
* Destroy the QuickJS runtime and release resources.
|
|
342
310
|
*/
|
|
343
311
|
destroy() {
|
|
344
|
-
if (this.exports) {
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
}
|
|
349
|
-
if (this.rtPtr !== 0) {
|
|
350
|
-
this.exports.js_std_free_handlers(this.rtPtr);
|
|
351
|
-
this.exports.JS_FreeRuntime(this.rtPtr);
|
|
352
|
-
this.rtPtr = 0;
|
|
353
|
-
}
|
|
312
|
+
if (this.exports && this.ctxPtr !== 0) {
|
|
313
|
+
this.exports.qjs_destroy();
|
|
314
|
+
this.ctxPtr = 0;
|
|
315
|
+
this.rtPtr = 0;
|
|
354
316
|
}
|
|
355
317
|
this.stdin.close();
|
|
356
318
|
}
|
package/dist/quickjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickjs.js","sourceRoot":"","sources":["../src/quickjs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quickjs.js","sourceRoot":"","sources":["../src/quickjs.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** QuickJS-NG version string */
|
|
2
|
-
export declare const VERSION = "v0.11.0-wasi29-reactor-
|
|
2
|
+
export declare const VERSION = "v0.11.0-wasi29-reactor-r9";
|
|
3
3
|
/** Download URL for the WASM binary */
|
|
4
|
-
export declare const DOWNLOAD_URL = "https://github.com/paralin/quickjs/releases/download/v0.11.0-wasi29-reactor-
|
|
4
|
+
export declare const DOWNLOAD_URL = "https://github.com/paralin/quickjs/releases/download/v0.11.0-wasi29-reactor-r9/qjs-wasi-reactor.wasm";
|
|
5
5
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Auto-generated by update-quickjs.bash
|
|
2
2
|
// Do not edit manually
|
|
3
3
|
/** QuickJS-NG version string */
|
|
4
|
-
export const VERSION = 'v0.11.0-wasi29-reactor-
|
|
4
|
+
export const VERSION = 'v0.11.0-wasi29-reactor-r9';
|
|
5
5
|
/** Download URL for the WASM binary */
|
|
6
|
-
export const DOWNLOAD_URL = 'https://github.com/paralin/quickjs/releases/download/v0.11.0-wasi29-reactor-
|
|
6
|
+
export const DOWNLOAD_URL = 'https://github.com/paralin/quickjs/releases/download/v0.11.0-wasi29-reactor-r9/qjs-wasi-reactor.wasm';
|
|
7
7
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "quickjs-wasi-reactor",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"description": "JavaScript harness for QuickJS-NG WASI reactor model",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"release:version": "npm version patch -m \"release: v%s\" --no-git-tag-version",
|
|
34
34
|
"release:version:minor": "npm version minor -m \"release: v%s\" --no-git-tag-version",
|
|
35
35
|
"release:commit": "git reset && git add package.json && git commit -s -m \"release: v$(node -p \"require('./package.json').version\")\" && git tag v$(node -p \"require('./package.json').version\")",
|
|
36
|
-
"release:publish": "git push && git push --tags
|
|
36
|
+
"release:publish": "git push && git push --tags"
|
|
37
37
|
},
|
|
38
38
|
"repository": {
|
|
39
39
|
"type": "git",
|
package/qjs-wasi.wasm
CHANGED
|
Binary file
|
package/src/quickjs.test.ts
CHANGED
|
@@ -34,7 +34,7 @@ describe("QuickJS", () => {
|
|
|
34
34
|
const qjs = createQuickJS(wasmModule, {
|
|
35
35
|
stdout: (line) => output.push(line),
|
|
36
36
|
});
|
|
37
|
-
qjs.
|
|
37
|
+
qjs.init(["qjs", "--std"]);
|
|
38
38
|
qjs.eval(`
|
|
39
39
|
console.log("before");
|
|
40
40
|
os.setTimeout(() => console.log("timer"), 10);
|
|
@@ -77,7 +77,7 @@ describe("QuickJS", () => {
|
|
|
77
77
|
stdout: (line) => output.push(line),
|
|
78
78
|
fs,
|
|
79
79
|
});
|
|
80
|
-
qjs.
|
|
80
|
+
qjs.init(["qjs", "--std"]);
|
|
81
81
|
qjs.eval(`
|
|
82
82
|
const content = std.loadFile("test.txt");
|
|
83
83
|
console.log("File:", content);
|
|
@@ -97,7 +97,7 @@ describe("QuickJS", () => {
|
|
|
97
97
|
stdout: (line) => stdout.push(line),
|
|
98
98
|
stderr: (line) => stderr.push(line),
|
|
99
99
|
});
|
|
100
|
-
qjs.
|
|
100
|
+
qjs.init(["qjs", "--std"]);
|
|
101
101
|
// In QuickJS, console.error writes to stderr through std.err
|
|
102
102
|
qjs.eval(`
|
|
103
103
|
console.log("to stdout");
|
|
@@ -127,6 +127,61 @@ describe("QuickJS", () => {
|
|
|
127
127
|
expect(output).toContain("sync");
|
|
128
128
|
expect(output).toContain("promise resolved");
|
|
129
129
|
});
|
|
130
|
+
|
|
131
|
+
it("should support dynamic import()", async () => {
|
|
132
|
+
const output: string[] = [];
|
|
133
|
+
const fs = buildFileSystem(
|
|
134
|
+
new Map([
|
|
135
|
+
["lib.js", `export const greeting = "Hello from dynamic import!";`],
|
|
136
|
+
]),
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
const qjs = createQuickJS(wasmModule, {
|
|
140
|
+
stdout: (line) => output.push(line),
|
|
141
|
+
fs,
|
|
142
|
+
});
|
|
143
|
+
qjs.init(["qjs", "--std"]);
|
|
144
|
+
qjs.eval(
|
|
145
|
+
`
|
|
146
|
+
async function main() {
|
|
147
|
+
const lib = await import('./lib.js');
|
|
148
|
+
console.log(lib.greeting);
|
|
149
|
+
}
|
|
150
|
+
main();
|
|
151
|
+
`,
|
|
152
|
+
true,
|
|
153
|
+
);
|
|
154
|
+
await qjs.runLoop();
|
|
155
|
+
qjs.destroy();
|
|
156
|
+
|
|
157
|
+
expect(output).toContain("Hello from dynamic import!");
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
it("should support static import from filesystem", () => {
|
|
161
|
+
const output: string[] = [];
|
|
162
|
+
const fs = buildFileSystem(
|
|
163
|
+
new Map([
|
|
164
|
+
["utils.js", `export function greet(name) { return "Hi " + name; }`],
|
|
165
|
+
]),
|
|
166
|
+
);
|
|
167
|
+
|
|
168
|
+
const qjs = createQuickJS(wasmModule, {
|
|
169
|
+
stdout: (line) => output.push(line),
|
|
170
|
+
fs,
|
|
171
|
+
});
|
|
172
|
+
qjs.init(["qjs", "--std"]);
|
|
173
|
+
qjs.eval(
|
|
174
|
+
`
|
|
175
|
+
import { greet } from './utils.js';
|
|
176
|
+
console.log(greet("World"));
|
|
177
|
+
`,
|
|
178
|
+
true,
|
|
179
|
+
);
|
|
180
|
+
qjs.runLoopSync();
|
|
181
|
+
qjs.destroy();
|
|
182
|
+
|
|
183
|
+
expect(output).toContain("Hi World");
|
|
184
|
+
});
|
|
130
185
|
});
|
|
131
186
|
|
|
132
187
|
describe("buildFileSystem", () => {
|
package/src/quickjs.ts
CHANGED
|
@@ -35,11 +35,13 @@ export interface QuickJSReactorExports {
|
|
|
35
35
|
malloc(size: number): number;
|
|
36
36
|
free(ptr: number): void;
|
|
37
37
|
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
// Reactor initialization (preferred - sets up module loader)
|
|
39
|
+
qjs_init_argv(argc: number, argv: number): number;
|
|
40
|
+
qjs_get_context(): number;
|
|
41
|
+
qjs_destroy(): void;
|
|
42
|
+
|
|
43
|
+
// Core runtime (low-level, use qjs_init_argv instead)
|
|
44
|
+
JS_GetRuntime(ctx: number): number;
|
|
43
45
|
|
|
44
46
|
// Evaluation - returns JSValue as bigint (i64)
|
|
45
47
|
JS_Eval(
|
|
@@ -54,12 +56,6 @@ export interface QuickJSReactorExports {
|
|
|
54
56
|
JS_FreeValue(ctx: number, val: bigint): void;
|
|
55
57
|
|
|
56
58
|
// Standard library
|
|
57
|
-
js_init_module_std(ctx: number, module_name: number): number;
|
|
58
|
-
js_init_module_os(ctx: number, module_name: number): number;
|
|
59
|
-
js_init_module_bjson(ctx: number, module_name: number): number;
|
|
60
|
-
js_std_init_handlers(rt: number): void;
|
|
61
|
-
js_std_free_handlers(rt: number): void;
|
|
62
|
-
js_std_add_helpers(ctx: number, argc: number, argv: number): void;
|
|
63
59
|
js_std_loop_once(ctx: number): number;
|
|
64
60
|
js_std_poll_io(ctx: number, timeout_ms: number): number;
|
|
65
61
|
js_std_dump_error(ctx: number): void;
|
|
@@ -176,104 +172,65 @@ export class QuickJS {
|
|
|
176
172
|
}
|
|
177
173
|
|
|
178
174
|
/**
|
|
179
|
-
* Initialize QuickJS runtime and context.
|
|
175
|
+
* Initialize QuickJS runtime and context with optional command-line arguments.
|
|
176
|
+
* Uses qjs_init_argv which sets up the module loader properly.
|
|
177
|
+
*
|
|
178
|
+
* @param args Optional CLI arguments. Pass ["qjs", "--std"] to load std/os/bjson as globals.
|
|
179
|
+
*
|
|
180
|
+
* Supported flags:
|
|
181
|
+
* - --std: Load std, os, bjson modules as globals
|
|
182
|
+
* - -m, --module: Treat script as ES module
|
|
183
|
+
* - -e, --eval: Evaluate expression
|
|
184
|
+
* - -I, --include: Include file before script
|
|
180
185
|
*/
|
|
181
|
-
init(): void {
|
|
186
|
+
init(args?: string[]): void {
|
|
182
187
|
if (!this.exports) throw new Error("QuickJS not initialized");
|
|
188
|
+
if (this.ctxPtr !== 0) throw new Error("QuickJS already initialized");
|
|
183
189
|
|
|
184
|
-
|
|
185
|
-
this.rtPtr = this.exports.JS_NewRuntime();
|
|
186
|
-
if (this.rtPtr === 0) {
|
|
187
|
-
throw new Error("JS_NewRuntime failed");
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// Initialize std handlers
|
|
191
|
-
this.exports.js_std_init_handlers(this.rtPtr);
|
|
190
|
+
const actualArgs = args ?? ["qjs"];
|
|
192
191
|
|
|
193
|
-
//
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
this.exports.JS_FreeRuntime(this.rtPtr);
|
|
198
|
-
this.rtPtr = 0;
|
|
199
|
-
throw new Error("JS_NewContext failed");
|
|
192
|
+
// Allocate argv strings
|
|
193
|
+
const argPtrs: number[] = [];
|
|
194
|
+
for (const arg of actualArgs) {
|
|
195
|
+
argPtrs.push(this.allocString(arg));
|
|
200
196
|
}
|
|
201
197
|
|
|
202
|
-
//
|
|
203
|
-
const
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
const osName = this.allocString("qjs:os");
|
|
208
|
-
this.exports.js_init_module_os(this.ctxPtr, osName);
|
|
209
|
-
this.freePtr(osName);
|
|
210
|
-
|
|
211
|
-
const bjsonName = this.allocString("qjs:bjson");
|
|
212
|
-
this.exports.js_init_module_bjson(this.ctxPtr, bjsonName);
|
|
213
|
-
this.freePtr(bjsonName);
|
|
214
|
-
|
|
215
|
-
// Add std helpers (console.log, print, etc.)
|
|
216
|
-
this.exports.js_std_add_helpers(this.ctxPtr, 0, 0);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
* Initialize QuickJS and import std modules as globals.
|
|
221
|
-
* This makes std, os, and bjson available as global objects.
|
|
222
|
-
*/
|
|
223
|
-
initStdModule(): void {
|
|
224
|
-
this.init();
|
|
225
|
-
|
|
226
|
-
// Import and expose std modules globally
|
|
227
|
-
const code = `import * as bjson from 'qjs:bjson';
|
|
228
|
-
import * as std from 'qjs:std';
|
|
229
|
-
import * as os from 'qjs:os';
|
|
230
|
-
globalThis.bjson = bjson;
|
|
231
|
-
globalThis.std = std;
|
|
232
|
-
globalThis.os = os;
|
|
233
|
-
`;
|
|
234
|
-
this.eval(code, true);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* Initialize QuickJS with command-line arguments.
|
|
239
|
-
* Sets up scriptArgs for the JavaScript code.
|
|
240
|
-
*/
|
|
241
|
-
initArgv(args: string[]): void {
|
|
242
|
-
if (!this.exports) throw new Error("QuickJS not initialized");
|
|
243
|
-
|
|
244
|
-
this.init();
|
|
245
|
-
|
|
246
|
-
if (args.length > 0) {
|
|
247
|
-
// Allocate argv strings
|
|
248
|
-
const argPtrs: number[] = [];
|
|
249
|
-
for (const arg of args) {
|
|
250
|
-
argPtrs.push(this.allocString(arg));
|
|
198
|
+
// Allocate argv array
|
|
199
|
+
const argvPtr = this.exports.malloc(actualArgs.length * 4);
|
|
200
|
+
if (argvPtr === 0) {
|
|
201
|
+
for (const ptr of argPtrs) {
|
|
202
|
+
this.freePtr(ptr);
|
|
251
203
|
}
|
|
204
|
+
throw new Error("malloc failed for argv");
|
|
205
|
+
}
|
|
252
206
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
}
|
|
259
|
-
throw new Error("malloc failed for argv");
|
|
260
|
-
}
|
|
207
|
+
// Write argv pointers
|
|
208
|
+
const view = new DataView(this.exports.memory.buffer);
|
|
209
|
+
for (let i = 0; i < argPtrs.length; i++) {
|
|
210
|
+
view.setUint32(argvPtr + i * 4, argPtrs[i], true);
|
|
211
|
+
}
|
|
261
212
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
for (let i = 0; i < argPtrs.length; i++) {
|
|
265
|
-
view.setUint32(argvPtr + i * 4, argPtrs[i], true);
|
|
266
|
-
}
|
|
213
|
+
// Call qjs_init_argv
|
|
214
|
+
const result = this.exports.qjs_init_argv(actualArgs.length, argvPtr);
|
|
267
215
|
|
|
268
|
-
|
|
269
|
-
|
|
216
|
+
// Free argv memory
|
|
217
|
+
this.freePtr(argvPtr);
|
|
218
|
+
for (const ptr of argPtrs) {
|
|
219
|
+
this.freePtr(ptr);
|
|
220
|
+
}
|
|
270
221
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
222
|
+
if (result !== 0) {
|
|
223
|
+
throw new Error("qjs_init_argv failed");
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// Get the context pointer
|
|
227
|
+
this.ctxPtr = this.exports.qjs_get_context();
|
|
228
|
+
if (this.ctxPtr === 0) {
|
|
229
|
+
throw new Error("qjs_get_context returned null");
|
|
276
230
|
}
|
|
231
|
+
|
|
232
|
+
// Get the runtime pointer
|
|
233
|
+
this.rtPtr = this.exports.JS_GetRuntime(this.ctxPtr);
|
|
277
234
|
}
|
|
278
235
|
|
|
279
236
|
/**
|
|
@@ -485,16 +442,10 @@ globalThis.os = os;
|
|
|
485
442
|
* Destroy the QuickJS runtime and release resources.
|
|
486
443
|
*/
|
|
487
444
|
destroy(): void {
|
|
488
|
-
if (this.exports) {
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
}
|
|
493
|
-
if (this.rtPtr !== 0) {
|
|
494
|
-
this.exports.js_std_free_handlers(this.rtPtr);
|
|
495
|
-
this.exports.JS_FreeRuntime(this.rtPtr);
|
|
496
|
-
this.rtPtr = 0;
|
|
497
|
-
}
|
|
445
|
+
if (this.exports && this.ctxPtr !== 0) {
|
|
446
|
+
this.exports.qjs_destroy();
|
|
447
|
+
this.ctxPtr = 0;
|
|
448
|
+
this.rtPtr = 0;
|
|
498
449
|
}
|
|
499
450
|
this.stdin.close();
|
|
500
451
|
}
|
package/src/version.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Do not edit manually
|
|
3
3
|
|
|
4
4
|
/** QuickJS-NG version string */
|
|
5
|
-
export const VERSION = 'v0.11.0-wasi29-reactor-
|
|
5
|
+
export const VERSION = 'v0.11.0-wasi29-reactor-r9'
|
|
6
6
|
|
|
7
7
|
/** Download URL for the WASM binary */
|
|
8
|
-
export const DOWNLOAD_URL = 'https://github.com/paralin/quickjs/releases/download/v0.11.0-wasi29-reactor-
|
|
8
|
+
export const DOWNLOAD_URL = 'https://github.com/paralin/quickjs/releases/download/v0.11.0-wasi29-reactor-r9/qjs-wasi-reactor.wasm'
|