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 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/1307) - Upstream PR for reactor support
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 'quickjs-wasi-reactor'
30
+ import { loadQuickJS, buildFileSystem } from "quickjs-wasi-reactor";
30
31
 
31
32
  // Load QuickJS from a URL or buffer
32
- const qjs = await loadQuickJS('/path/to/qjs-wasi.wasm')
33
+ const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm");
33
34
 
34
- // Initialize with std module (provides std, os, bjson globals)
35
- qjs.initStdModule()
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
- // 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)
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
- // 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
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
- // 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']
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 'quickjs-wasi-reactor'
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
- ['script.js', 'console.log("Hello from script!")'],
74
- ['lib/utils.js', 'export function greet(name) { return `Hello, ${name}!` }'],
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('/path/to/qjs-wasi.wasm', { fs })
80
+ const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm", { fs });
79
81
 
80
- qjs.initStdModule()
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
- `, true)
85
- await qjs.runLoop()
86
- qjs.destroy()
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 'quickjs-wasi-reactor'
97
+ import { loadQuickJS } from "quickjs-wasi-reactor";
93
98
 
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),
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('Received', data.length, 'bytes')
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 'quickjs-wasi-reactor'
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('/path/to/qjs-wasi.wasm', { stdin })
121
+ const qjs = await loadQuickJS("/path/to/qjs-wasi.wasm", { stdin });
117
122
 
118
- qjs.initStdModule()
123
+ qjs.init(["qjs", "--std"]);
119
124
 
120
125
  // Push data to stdin
121
- qjs.pushStdin(new TextEncoder().encode('Hello from stdin\n'))
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 'quickjs-wasi-reactor'
138
+ import { loadQuickJS, LOOP_IDLE, LOOP_ERROR } from "quickjs-wasi-reactor";
134
139
 
135
- const qjs = await loadQuickJS('/path/to/qjs-wasi.wasm')
136
- qjs.initStdModule()
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 // No more work
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('/path/to/qjs-wasi.wasm')
166
- qjs.initStdModule()
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 | 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 |
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
- #### `initStdModule()`
235
+ Initialize QuickJS runtime and context. Modules `qjs:std`, `qjs:os`, and `qjs:bjson` can be imported in evaluated code.
234
236
 
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.
237
+ Pass `['qjs', '--std']` to expose `std`, `os`, and `bjson` as globals.
237
238
 
238
- #### `initArgv(args)`
239
+ Supported flags:
239
240
 
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.
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
- ['path/to/file.js', 'content'],
300
- ['another/file.txt', new Uint8Array([1, 2, 3])],
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 the raw QuickJS C API functions that the host calls directly:
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
- **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.
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. The raw C API also enables advanced use cases like multiple contexts, custom module loaders, and fine-grained resource control.
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
- 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-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-r5/qjs-wasi-reactor.wasm";
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-r5';
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-r5/qjs-wasi-reactor.wasm';
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.6",
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 && npm run build && npm publish"
36
+ "release:publish": "git push && git push --tags"
37
37
  },
38
38
  "repository": {
39
39
  "type": "git",
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-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-r5/qjs-wasi-reactor.wasm'
8
+ export const DOWNLOAD_URL = 'https://github.com/paralin/quickjs/releases/download/v0.11.0-wasi29-reactor-r9/qjs-wasi-reactor.wasm'