quickjs-wasi-reactor 0.0.6 → 0.0.8
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 +129 -98
- 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 +1 -1
- 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
|
@@ -26,103 +26,107 @@ bun add quickjs-wasi-reactor
|
|
|
26
26
|
### Basic Usage
|
|
27
27
|
|
|
28
28
|
```typescript
|
|
29
|
-
import { loadQuickJS, buildFileSystem } from
|
|
29
|
+
import { loadQuickJS, buildFileSystem } from "quickjs-wasi-reactor";
|
|
30
30
|
|
|
31
31
|
// Load QuickJS from a URL or buffer
|
|
32
|
-
const qjs = await loadQuickJS(
|
|
32
|
+
const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm");
|
|
33
33
|
|
|
34
|
-
// Initialize with std
|
|
35
|
-
qjs.
|
|
34
|
+
// Initialize with --std flag (provides std, os, bjson globals)
|
|
35
|
+
qjs.init(["qjs", "--std"]);
|
|
36
36
|
|
|
37
37
|
// Evaluate JavaScript code
|
|
38
|
-
qjs.eval(`console.log("Hello from QuickJS!")`)
|
|
38
|
+
qjs.eval(`console.log("Hello from QuickJS!")`);
|
|
39
39
|
|
|
40
40
|
// Run the event loop
|
|
41
|
-
await qjs.runLoop()
|
|
41
|
+
await qjs.runLoop();
|
|
42
42
|
|
|
43
43
|
// Cleanup
|
|
44
|
-
qjs.destroy()
|
|
44
|
+
qjs.destroy();
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
### Initialization Options
|
|
48
48
|
|
|
49
|
-
There are three ways to initialize QuickJS:
|
|
50
|
-
|
|
51
49
|
```typescript
|
|
52
|
-
//
|
|
53
|
-
qjs.init()
|
|
54
|
-
qjs.eval(`import * as std from 'qjs:std'; std.printf("Hello\\n")`, true)
|
|
50
|
+
// Basic runtime with std modules available for import
|
|
51
|
+
qjs.init();
|
|
52
|
+
qjs.eval(`import * as std from 'qjs:std'; std.printf("Hello\\n")`, true);
|
|
55
53
|
|
|
56
|
-
//
|
|
57
|
-
qjs.
|
|
58
|
-
qjs.eval(`std.printf("Hello\\n")`)
|
|
54
|
+
// With --std flag to expose std, os, bjson as globals
|
|
55
|
+
qjs.init(["qjs", "--std"]);
|
|
56
|
+
qjs.eval(`std.printf("Hello\\n")`); // std is already global
|
|
59
57
|
|
|
60
|
-
//
|
|
61
|
-
qjs.
|
|
62
|
-
qjs.eval(`console.log(scriptArgs)`)
|
|
58
|
+
// With script args accessible via scriptArgs global
|
|
59
|
+
qjs.init(["qjs", "script.js", "--verbose"]);
|
|
60
|
+
qjs.eval(`console.log(scriptArgs)`); // ['qjs', 'script.js', '--verbose']
|
|
63
61
|
```
|
|
64
62
|
|
|
65
63
|
### With Virtual Filesystem
|
|
66
64
|
|
|
67
65
|
```typescript
|
|
68
|
-
import { loadQuickJS, buildFileSystem } from
|
|
66
|
+
import { loadQuickJS, buildFileSystem } from "quickjs-wasi-reactor";
|
|
69
67
|
|
|
70
68
|
// Build a virtual filesystem
|
|
71
69
|
const fs = buildFileSystem(
|
|
72
70
|
new Map([
|
|
73
|
-
[
|
|
74
|
-
[
|
|
71
|
+
["script.js", 'console.log("Hello from script!")'],
|
|
72
|
+
[
|
|
73
|
+
"lib/utils.js",
|
|
74
|
+
"export function greet(name) { return `Hello, ${name}!` }",
|
|
75
|
+
],
|
|
75
76
|
]),
|
|
76
|
-
)
|
|
77
|
+
);
|
|
77
78
|
|
|
78
|
-
const qjs = await loadQuickJS(
|
|
79
|
+
const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm", { fs });
|
|
79
80
|
|
|
80
|
-
qjs.
|
|
81
|
-
qjs.eval(
|
|
81
|
+
qjs.init(["qjs", "--std"]);
|
|
82
|
+
qjs.eval(
|
|
83
|
+
`
|
|
82
84
|
import { greet } from './lib/utils.js'
|
|
83
85
|
console.log(greet('World'))
|
|
84
|
-
`,
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
`,
|
|
87
|
+
true,
|
|
88
|
+
);
|
|
89
|
+
await qjs.runLoop();
|
|
90
|
+
qjs.destroy();
|
|
87
91
|
```
|
|
88
92
|
|
|
89
93
|
### Custom I/O Handlers
|
|
90
94
|
|
|
91
95
|
```typescript
|
|
92
|
-
import { loadQuickJS } from
|
|
96
|
+
import { loadQuickJS } from "quickjs-wasi-reactor";
|
|
93
97
|
|
|
94
|
-
const qjs = await loadQuickJS(
|
|
95
|
-
stdout: (line) => document.body.innerHTML += `<p>${line}</p
|
|
96
|
-
stderr: (line) => console.error(
|
|
98
|
+
const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm", {
|
|
99
|
+
stdout: (line) => (document.body.innerHTML += `<p>${line}</p>`),
|
|
100
|
+
stderr: (line) => console.error("Error:", line),
|
|
97
101
|
onDevOut: (data) => {
|
|
98
102
|
// Handle binary data written to /dev/out
|
|
99
|
-
console.log(
|
|
103
|
+
console.log("Received", data.length, "bytes");
|
|
100
104
|
},
|
|
101
|
-
})
|
|
105
|
+
});
|
|
102
106
|
|
|
103
|
-
qjs.init()
|
|
104
|
-
qjs.eval(`console.log("This goes to custom stdout")`)
|
|
105
|
-
await qjs.runLoop()
|
|
106
|
-
qjs.destroy()
|
|
107
|
+
qjs.init();
|
|
108
|
+
qjs.eval(`console.log("This goes to custom stdout")`);
|
|
109
|
+
await qjs.runLoop();
|
|
110
|
+
qjs.destroy();
|
|
107
111
|
```
|
|
108
112
|
|
|
109
113
|
### Feeding Stdin Data
|
|
110
114
|
|
|
111
115
|
```typescript
|
|
112
|
-
import { loadQuickJS, PollableStdin } from
|
|
116
|
+
import { loadQuickJS, PollableStdin } from "quickjs-wasi-reactor";
|
|
113
117
|
|
|
114
|
-
const stdin = new PollableStdin()
|
|
118
|
+
const stdin = new PollableStdin();
|
|
115
119
|
|
|
116
|
-
const qjs = await loadQuickJS(
|
|
120
|
+
const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm", { stdin });
|
|
117
121
|
|
|
118
|
-
qjs.
|
|
122
|
+
qjs.init(["qjs", "--std"]);
|
|
119
123
|
|
|
120
124
|
// Push data to stdin
|
|
121
|
-
qjs.pushStdin(new TextEncoder().encode(
|
|
125
|
+
qjs.pushStdin(new TextEncoder().encode("Hello from stdin\n"));
|
|
122
126
|
|
|
123
127
|
// Run the loop - QuickJS can read from stdin
|
|
124
|
-
await qjs.runLoop()
|
|
125
|
-
qjs.destroy()
|
|
128
|
+
await qjs.runLoop();
|
|
129
|
+
qjs.destroy();
|
|
126
130
|
```
|
|
127
131
|
|
|
128
132
|
### Non-Blocking Event Loop Control
|
|
@@ -130,40 +134,67 @@ qjs.destroy()
|
|
|
130
134
|
For fine-grained control over JavaScript execution, use `loopOnce()` instead of `runLoop()`:
|
|
131
135
|
|
|
132
136
|
```typescript
|
|
133
|
-
import { loadQuickJS, LOOP_IDLE, LOOP_ERROR } from
|
|
137
|
+
import { loadQuickJS, LOOP_IDLE, LOOP_ERROR } from "quickjs-wasi-reactor";
|
|
134
138
|
|
|
135
|
-
const qjs = await loadQuickJS(
|
|
136
|
-
qjs.
|
|
139
|
+
const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm");
|
|
140
|
+
qjs.init(["qjs", "--std"]);
|
|
137
141
|
|
|
138
142
|
qjs.eval(`
|
|
139
143
|
os.setTimeout(() => console.log("timer fired"), 100)
|
|
140
144
|
console.log("scheduled timer")
|
|
141
|
-
`)
|
|
145
|
+
`);
|
|
142
146
|
|
|
143
147
|
// Manual event loop - integrate with your own scheduling
|
|
144
148
|
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
|
-
|
|
149
|
+
const result = qjs.loopOnce();
|
|
150
|
+
|
|
151
|
+
if (result === LOOP_ERROR) throw new Error("JavaScript error");
|
|
152
|
+
if (result === LOOP_IDLE) break; // No more work
|
|
153
|
+
|
|
150
154
|
if (result === 0) {
|
|
151
155
|
// More microtasks pending - yield to browser then continue
|
|
152
|
-
await new Promise(r => queueMicrotask(r))
|
|
156
|
+
await new Promise((r) => queueMicrotask(r));
|
|
153
157
|
} else if (result > 0) {
|
|
154
158
|
// Timer pending in N ms - do other work or wait
|
|
155
|
-
await new Promise(r => setTimeout(r, result))
|
|
159
|
+
await new Promise((r) => setTimeout(r, result));
|
|
156
160
|
}
|
|
157
161
|
}
|
|
158
162
|
|
|
159
|
-
qjs.destroy()
|
|
163
|
+
qjs.destroy();
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Browser Integration with Animation Frames
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm");
|
|
170
|
+
qjs.init(["qjs", "--std"]);
|
|
171
|
+
|
|
172
|
+
qjs.eval(`
|
|
173
|
+
let frame = 0
|
|
174
|
+
function tick() {
|
|
175
|
+
console.log("Frame:", frame++)
|
|
176
|
+
if (frame < 60) os.setTimeout(tick, 16)
|
|
177
|
+
}
|
|
178
|
+
tick()
|
|
179
|
+
`);
|
|
180
|
+
|
|
181
|
+
// Cooperative scheduling with browser
|
|
182
|
+
function runFrame() {
|
|
183
|
+
const result = qjs.loopOnce();
|
|
184
|
+
if (result >= 0) {
|
|
185
|
+
requestAnimationFrame(runFrame);
|
|
186
|
+
} else {
|
|
187
|
+
qjs.destroy();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
requestAnimationFrame(runFrame);
|
|
160
191
|
```
|
|
161
192
|
|
|
162
193
|
### Browser Integration with Animation Frames
|
|
163
194
|
|
|
164
195
|
```typescript
|
|
165
|
-
const qjs = await loadQuickJS(
|
|
166
|
-
qjs.initStdModule()
|
|
196
|
+
const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm");
|
|
197
|
+
qjs.initStdModule();
|
|
167
198
|
|
|
168
199
|
qjs.eval(`
|
|
169
200
|
let frame = 0
|
|
@@ -172,18 +203,18 @@ qjs.eval(`
|
|
|
172
203
|
if (frame < 60) os.setTimeout(tick, 16)
|
|
173
204
|
}
|
|
174
205
|
tick()
|
|
175
|
-
`)
|
|
206
|
+
`);
|
|
176
207
|
|
|
177
208
|
// Cooperative scheduling with browser
|
|
178
209
|
function runFrame() {
|
|
179
|
-
const result = qjs.loopOnce()
|
|
210
|
+
const result = qjs.loopOnce();
|
|
180
211
|
if (result >= 0) {
|
|
181
|
-
requestAnimationFrame(runFrame)
|
|
212
|
+
requestAnimationFrame(runFrame);
|
|
182
213
|
} else {
|
|
183
|
-
qjs.destroy()
|
|
214
|
+
qjs.destroy();
|
|
184
215
|
}
|
|
185
216
|
}
|
|
186
|
-
requestAnimationFrame(runFrame)
|
|
217
|
+
requestAnimationFrame(runFrame);
|
|
187
218
|
```
|
|
188
219
|
|
|
189
220
|
## API
|
|
@@ -212,33 +243,31 @@ Create a QuickJS instance from a pre-compiled WebAssembly module.
|
|
|
212
243
|
|
|
213
244
|
### `QuickJSOptions`
|
|
214
245
|
|
|
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`
|
|
246
|
+
| Option | Type | Default | Description |
|
|
247
|
+
| ---------- | ---------------------------- | --------------------- | --------------------------------- |
|
|
248
|
+
| `args` | `string[]` | `['qjs']` | WASI command-line arguments |
|
|
249
|
+
| `env` | `string[]` | `[]` | Environment variables (key=value) |
|
|
250
|
+
| `debug` | `boolean` | `false` | Enable WASI debug logging |
|
|
251
|
+
| `stdout` | `(line: string) => void` | `console.log` | Custom stdout line handler |
|
|
252
|
+
| `stderr` | `(line: string) => void` | `console.error` | Custom stderr line handler |
|
|
253
|
+
| `fs` | `Map<string, File\|Dir>` | `new Map()` | Virtual filesystem root contents |
|
|
254
|
+
| `onDevOut` | `(data: Uint8Array) => void` | `undefined` | Handler for /dev/out writes |
|
|
255
|
+
| `stdin` | `PollableStdin` | `new PollableStdin()` | Custom stdin source |
|
|
225
256
|
|
|
226
257
|
### `QuickJS` Methods
|
|
227
258
|
|
|
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.
|
|
259
|
+
#### `init(args?)`
|
|
232
260
|
|
|
233
|
-
|
|
261
|
+
Initialize QuickJS runtime and context. Modules `qjs:std`, `qjs:os`, and `qjs:bjson` can be imported in evaluated code.
|
|
234
262
|
|
|
235
|
-
|
|
236
|
-
Convenient for REPL-style usage where you want immediate access to std library.
|
|
263
|
+
Pass `['qjs', '--std']` to expose `std`, `os`, and `bjson` as globals.
|
|
237
264
|
|
|
238
|
-
|
|
265
|
+
Supported flags:
|
|
239
266
|
|
|
240
|
-
|
|
241
|
-
|
|
267
|
+
- `--std` - Load std, os, bjson modules as globals
|
|
268
|
+
- `-m, --module` - Treat script as ES module
|
|
269
|
+
- `-e, --eval` - Evaluate expression
|
|
270
|
+
- `-I, --include` - Include file before script
|
|
242
271
|
|
|
243
272
|
#### `eval(code, isModule?, filename?)`
|
|
244
273
|
|
|
@@ -296,36 +325,38 @@ Build a virtual filesystem from a map of paths to content.
|
|
|
296
325
|
```typescript
|
|
297
326
|
const fs = buildFileSystem(
|
|
298
327
|
new Map([
|
|
299
|
-
[
|
|
300
|
-
[
|
|
328
|
+
["path/to/file.js", "content"],
|
|
329
|
+
["another/file.txt", new Uint8Array([1, 2, 3])],
|
|
301
330
|
]),
|
|
302
|
-
)
|
|
331
|
+
);
|
|
303
332
|
```
|
|
304
333
|
|
|
305
334
|
## Reactor Model
|
|
306
335
|
|
|
307
|
-
Unlike the standard WASI "command" model that blocks in `_start()`, the reactor model exports
|
|
336
|
+
Unlike the standard WASI "command" model that blocks in `_start()`, the reactor model exports functions for re-entrant execution:
|
|
337
|
+
|
|
338
|
+
**Reactor Initialization (preferred):**
|
|
339
|
+
|
|
340
|
+
- `qjs_init_argv(argc, argv)` - Initialize with CLI args (sets up module loader)
|
|
341
|
+
- `qjs_get_context()` - Get JSContext\* for use with other APIs
|
|
342
|
+
- `qjs_destroy()` - Cleanup reactor runtime
|
|
343
|
+
|
|
344
|
+
**Evaluation:**
|
|
308
345
|
|
|
309
|
-
**Core Runtime:**
|
|
310
|
-
- `JS_NewRuntime()` / `JS_FreeRuntime(rt)` - Create/destroy runtime
|
|
311
|
-
- `JS_NewContext(rt)` / `JS_FreeContext(ctx)` - Create/destroy context
|
|
312
346
|
- `JS_Eval(ctx, input, len, filename, flags)` - Evaluate JavaScript code
|
|
313
347
|
- `JS_FreeValue(ctx, val)` - Free a JSValue
|
|
314
348
|
|
|
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.
|
|
349
|
+
**Event Loop:**
|
|
350
|
+
|
|
321
351
|
- `js_std_loop_once(ctx)` - Run one event loop iteration (non-blocking)
|
|
322
352
|
- `js_std_poll_io(ctx, timeout_ms)` - Poll for I/O events
|
|
323
353
|
- `js_std_dump_error(ctx)` - Dump exception to stderr
|
|
324
354
|
|
|
325
355
|
**Memory:**
|
|
356
|
+
|
|
326
357
|
- `malloc(size)` / `free(ptr)` - Memory allocation
|
|
327
358
|
|
|
328
|
-
This enables re-entrant execution in JavaScript host environments where blocking is not possible.
|
|
359
|
+
This enables re-entrant execution in JavaScript host environments where blocking is not possible.
|
|
329
360
|
|
|
330
361
|
## License
|
|
331
362
|
|
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-r8";
|
|
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-r8/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-r8';
|
|
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-r8/qjs-wasi-reactor.wasm';
|
|
7
7
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
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-r8'
|
|
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-r8/qjs-wasi-reactor.wasm'
|