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 CHANGED
@@ -26,103 +26,107 @@ bun add quickjs-wasi-reactor
26
26
  ### Basic Usage
27
27
 
28
28
  ```typescript
29
- import { loadQuickJS, buildFileSystem } from 'quickjs-wasi-reactor'
29
+ import { loadQuickJS, buildFileSystem } from "quickjs-wasi-reactor";
30
30
 
31
31
  // Load QuickJS from a URL or buffer
32
- const qjs = await loadQuickJS('/path/to/qjs-wasi.wasm')
32
+ const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm");
33
33
 
34
- // Initialize with std module (provides std, os, bjson globals)
35
- qjs.initStdModule()
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
- // Option 1: init() - Basic runtime with std modules available for import
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
- // Option 2: initStdModule() - Like init() but also exposes std, os, bjson as globals
57
- qjs.initStdModule()
58
- qjs.eval(`std.printf("Hello\\n")`) // std is already global
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
- // Option 3: initArgv(args) - Like init() but sets up scriptArgs
61
- qjs.initArgv(['qjs', 'script.js', '--verbose'])
62
- qjs.eval(`console.log(scriptArgs)`) // ['qjs', 'script.js', '--verbose']
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 'quickjs-wasi-reactor'
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
- ['script.js', 'console.log("Hello from script!")'],
74
- ['lib/utils.js', 'export function greet(name) { return `Hello, ${name}!` }'],
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('/path/to/qjs-wasi.wasm', { fs })
79
+ const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm", { fs });
79
80
 
80
- qjs.initStdModule()
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
- `, true)
85
- await qjs.runLoop()
86
- qjs.destroy()
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 'quickjs-wasi-reactor'
96
+ import { loadQuickJS } from "quickjs-wasi-reactor";
93
97
 
94
- const qjs = await loadQuickJS('/path/to/qjs-wasi.wasm', {
95
- stdout: (line) => document.body.innerHTML += `<p>${line}</p>`,
96
- stderr: (line) => console.error('Error:', line),
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('Received', data.length, 'bytes')
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 'quickjs-wasi-reactor'
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('/path/to/qjs-wasi.wasm', { stdin })
120
+ const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm", { stdin });
117
121
 
118
- qjs.initStdModule()
122
+ qjs.init(["qjs", "--std"]);
119
123
 
120
124
  // Push data to stdin
121
- qjs.pushStdin(new TextEncoder().encode('Hello from stdin\n'))
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 'quickjs-wasi-reactor'
137
+ import { loadQuickJS, LOOP_IDLE, LOOP_ERROR } from "quickjs-wasi-reactor";
134
138
 
135
- const qjs = await loadQuickJS('/path/to/qjs-wasi.wasm')
136
- qjs.initStdModule()
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 // No more work
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('/path/to/qjs-wasi.wasm')
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 | Default | Description |
216
- | ---------- | --------------------------- | ------------------------- | ---------------------------------- |
217
- | `args` | `string[]` | `['qjs']` | WASI command-line arguments |
218
- | `env` | `string[]` | `[]` | Environment variables (key=value) |
219
- | `debug` | `boolean` | `false` | Enable WASI debug logging |
220
- | `stdout` | `(line: string) => void` | `console.log` | Custom stdout line handler |
221
- | `stderr` | `(line: string) => void` | `console.error` | Custom stderr line handler |
222
- | `fs` | `Map<string, File\|Dir>` | `new Map()` | Virtual filesystem root contents |
223
- | `onDevOut` | `(data: Uint8Array) => void`| `undefined` | Handler for /dev/out writes |
224
- | `stdin` | `PollableStdin` | `new PollableStdin()` | Custom stdin source |
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
- #### `initStdModule()`
261
+ Initialize QuickJS runtime and context. Modules `qjs:std`, `qjs:os`, and `qjs:bjson` can be imported in evaluated code.
234
262
 
235
- Like `init()` but also exposes `std`, `os`, and `bjson` as global objects.
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
- #### `initArgv(args)`
265
+ Supported flags:
239
266
 
240
- Like `init()` but also sets up `scriptArgs` global with the provided arguments.
241
- Use this when your JavaScript code needs to access command-line arguments.
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
- ['path/to/file.js', 'content'],
300
- ['another/file.txt', new Uint8Array([1, 2, 3])],
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 the raw QuickJS C API functions that the host calls directly:
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
- **Standard Library:**
316
- - `js_std_init_handlers(rt)` / `js_std_free_handlers(rt)` - Initialize/cleanup std handlers
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. The raw C API also enables advanced use cases like multiple contexts, custom module loaders, and fine-grained resource control.
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
- JS_NewRuntime(): number;
14
- JS_FreeRuntime(rt: number): void;
15
- JS_NewContext(rt: number): number;
16
- JS_FreeContext(ctx: number): void;
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
@@ -1 +1 @@
1
- {"version":3,"file":"quickjs.d.ts","sourceRoot":"","sources":["../src/quickjs.ts"],"names":[],"mappings":"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"}
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
- // Create runtime
91
- this.rtPtr = this.exports.JS_NewRuntime();
92
- if (this.rtPtr === 0) {
93
- throw new Error("JS_NewRuntime failed");
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
- // Initialize std handlers
96
- this.exports.js_std_init_handlers(this.rtPtr);
97
- // Create context
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
- if (this.ctxPtr !== 0) {
346
- this.exports.JS_FreeContext(this.ctxPtr);
347
- this.ctxPtr = 0;
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
  }
@@ -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":"AAAA,8CAA8C;AAC9C,6EAA6E;AAE7E,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EACL,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,IAAI,EACJ,SAAS,EACT,MAAM,EACN,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,oDAAoD;AACpD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC;AAE7B,oBAAoB;AACpB,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,4BAA4B;AAC5B,MAAM,gBAAgB,GAAG,CAAC,CAAC;AA2D3B;;GAEG;AACH,MAAM,OAAO,OAAO;IACV,IAAI,CAAO;IACX,QAAQ,GAAgC,IAAI,CAAC;IAC7C,OAAO,GAAiC,IAAI,CAAC;IAC7C,OAAO,GAAG,KAAK,CAAC;IAChB,QAAQ,GAAG,CAAC,CAAC;IACb,KAAK,CAAgB;IAE7B,gBAAgB;IACR,KAAK,GAAG,CAAC,CAAC;IACV,MAAM,GAAG,CAAC,CAAC;IAEnB,YAAY,UAA8B,EAAE,UAA0B,EAAE;QACtE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;QAErC,eAAe;QACf,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,aAAa,EAAE,CAAC;QAElD,uBAAuB;QACvB,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CACvC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAC7D,CAAC;QACF,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CACvC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAC/D,CAAC;QAEF,mBAAmB;QACnB,MAAM,YAAY,GAAG,OAAO,CAAC,EAAE,IAAI,IAAI,GAAG,EAA4B,CAAC;QACvE,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAExD,yBAAyB;QACzB,MAAM,GAAG,GAAS;YAChB,IAAI,CAAC,KAAK,EAAE,eAAe;YAC3B,MAAM,EAAE,gBAAgB;YACxB,MAAM,EAAE,gBAAgB;YACxB,OAAO,EAAE,qBAAqB;SAC/B,CAAC;QAEF,2DAA2D;QAC3D,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB;QAC5C,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhD,8BAA8B;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE;YACnD,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;SAC7C,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAA2C,CAAC;QAEzE,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,CAClB,IAAI,CAAC,QAAuD,CAC7D,CAAC;IACJ,CAAC;IAED,uDAAuD;IAC/C,WAAW,CAAC,CAAS;QAC3B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClD,IAAI,GAAG,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,qBAAqB;IACb,OAAO,CAAC,GAAW;QACzB,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,yCAAyC;IACjC,WAAW,CAAC,GAAW;QAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;QAC/B,OAAO,GAAG,KAAK,gBAAgB,CAAC;IAClC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,IAAe;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAEtE,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnC,wBAAwB;QACxB,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACtC,CAAC;QAED,sBAAsB;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3D,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,sBAAsB;QACtB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;QAED,qBAAqB;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEtE,mBAAmB;QACnB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,IAAY,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,GAAG,QAAQ;QACtD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,8CAA8C;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEvC,2BAA2B;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE/C,uBAAuB;QACvB,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC;QAEvE,eAAe;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CACjC,IAAI,CAAC,MAAM,EACX,OAAO,EACP,IAAI,CAAC,MAAM,EACX,WAAW,EACX,SAAS,CACV,CAAC;QAEF,wBAAwB;QACxB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAE1B,sBAAsB;QACtB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC;gBAC9B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;gBACvB,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,SAAS,GAAG,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC;gBAC9B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;gBACvB,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAAgB;QACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,EAAuB;QACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,MAAmB;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,EAAE,EAAE,CAAC;YAEX,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE/B,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,yCAAyC;gBACzC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACf,SAAS;gBACX,CAAC;gBACD,eAAe;gBACf,MAAM;YACR,CAAC;YAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjB,uDAAuD;gBACvD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAqB,CAAC,CAAC,CAAC;gBACtE,SAAS;YACX,CAAC;YAED,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACf,oCAAoC;gBACpC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACf,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAqB,CAAC,CAAC,CAAC;oBACtE,SAAS;gBACX,CAAC;gBACD,iBAAiB;gBACjB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE/B,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACf,SAAS;gBACX,CAAC;gBACD,MAAM;YACR,CAAC;YAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjB,0BAA0B;gBAC1B,SAAS;YACX,CAAC;YAED,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACf,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACf,SAAS;gBACX,CAAC;gBACD,mEAAmE;gBACnE,mCAAmC;gBACnC,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,UAA8B,EAC9B,OAAwB;IAExB,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAwD,EACxD,OAAwB;IAExB,IAAI,UAA8B,CAAC;IAEnC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;QACzC,UAAU,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;SAAM,IAAI,UAAU,YAAY,QAAQ,EAAE,CAAC;QAC1C,UAAU,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,UAA0B,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAuC;IAEvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEjD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEjC,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,QAAQ,YAAY,SAAS,EAAE,CAAC;gBAClC,UAAU,GAAG,QAAQ,CAAC,QAAyC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;gBACnD,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC5C,UAAU,GAAG,MAAM,CAAC;YACtB,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,IAAI,GACR,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5E,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
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-r5";
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-r5/qjs-wasi-reactor.wasm";
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-r5';
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-r5/qjs-wasi-reactor.wasm';
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quickjs-wasi-reactor",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "JavaScript harness for QuickJS-NG WASI reactor model",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
package/qjs-wasi.wasm CHANGED
Binary file
@@ -34,7 +34,7 @@ describe("QuickJS", () => {
34
34
  const qjs = createQuickJS(wasmModule, {
35
35
  stdout: (line) => output.push(line),
36
36
  });
37
- qjs.initStdModule();
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.initStdModule();
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.initStdModule();
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
- // Core runtime
39
- JS_NewRuntime(): number;
40
- JS_FreeRuntime(rt: number): void;
41
- JS_NewContext(rt: number): number;
42
- JS_FreeContext(ctx: number): void;
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
- // Create runtime
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
- // Create context
194
- this.ctxPtr = this.exports.JS_NewContext(this.rtPtr);
195
- if (this.ctxPtr === 0) {
196
- this.exports.js_std_free_handlers(this.rtPtr);
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
- // Initialize std modules
203
- const stdName = this.allocString("qjs:std");
204
- this.exports.js_init_module_std(this.ctxPtr, stdName);
205
- this.freePtr(stdName);
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
- // Allocate argv array
254
- const argvPtr = this.exports.malloc(args.length * 4);
255
- if (argvPtr === 0) {
256
- for (const ptr of argPtrs) {
257
- this.freePtr(ptr);
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
- // Write argv pointers
263
- const view = new DataView(this.exports.memory.buffer);
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
- // Call js_std_add_helpers with argv
269
- this.exports.js_std_add_helpers(this.ctxPtr, args.length, argvPtr);
216
+ // Free argv memory
217
+ this.freePtr(argvPtr);
218
+ for (const ptr of argPtrs) {
219
+ this.freePtr(ptr);
220
+ }
270
221
 
271
- // Free argv
272
- this.freePtr(argvPtr);
273
- for (const ptr of argPtrs) {
274
- this.freePtr(ptr);
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
- if (this.ctxPtr !== 0) {
490
- this.exports.JS_FreeContext(this.ctxPtr);
491
- this.ctxPtr = 0;
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-r5'
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-r5/qjs-wasi-reactor.wasm'
8
+ export const DOWNLOAD_URL = 'https://github.com/paralin/quickjs/releases/download/v0.11.0-wasi29-reactor-r8/qjs-wasi-reactor.wasm'