@suchipi/quickjs 0.8.1 → 0.10.0
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 +9 -6
- package/build/aarch64-apple-darwin/bin/file-to-bytecode.js +3 -3
- package/build/aarch64-apple-darwin/bin/qjs +0 -0
- package/build/aarch64-apple-darwin/bin/qjsbootstrap +0 -0
- package/build/aarch64-apple-darwin/bin/qjsbootstrap-bytecode +0 -0
- package/build/aarch64-apple-darwin/bin/qjsc +0 -0
- package/build/aarch64-apple-darwin/bin/quickjs-run +0 -0
- package/build/aarch64-apple-darwin/extras/is-stdin-a-tty +0 -0
- package/build/aarch64-apple-darwin/extras/run-test262 +0 -0
- package/build/aarch64-apple-darwin/extras/sample-program/sum +0 -0
- package/build/aarch64-apple-darwin/extras/stack-limit-test +0 -0
- package/build/aarch64-apple-darwin/include/quickjs-bytecode.h +8 -0
- package/build/aarch64-apple-darwin/include/quickjs-context.h +8 -0
- package/build/aarch64-apple-darwin/include/quickjs-encoding.h +8 -0
- package/build/aarch64-apple-darwin/include/quickjs-engine.h +8 -0
- package/build/aarch64-apple-darwin/include/quickjs-full-init.h +19 -0
- package/build/aarch64-apple-darwin/include/quickjs-inspect.h +9 -0
- package/build/aarch64-apple-darwin/include/quickjs-intervals.h +9 -0
- package/build/aarch64-apple-darwin/include/quickjs-libc.h +65 -0
- package/build/aarch64-apple-darwin/include/quickjs-modulesys.h +68 -0
- package/build/aarch64-apple-darwin/include/quickjs-pointer.h +9 -0
- package/build/aarch64-apple-darwin/include/quickjs-print.h +9 -0
- package/build/aarch64-apple-darwin/include/quickjs-utils.h +49 -0
- package/build/aarch64-apple-darwin/include/quickjs.h +1195 -0
- package/build/aarch64-apple-darwin/lib/quickjs-core.a +0 -0
- package/build/aarch64-apple-darwin/lib/quickjs-full.a +0 -0
- package/build/aarch64-unknown-linux-gnu/bin/file-to-bytecode.js +3 -3
- package/build/aarch64-unknown-linux-gnu/bin/qjs +0 -0
- package/build/aarch64-unknown-linux-gnu/bin/qjsbootstrap +0 -0
- package/build/aarch64-unknown-linux-gnu/bin/qjsbootstrap-bytecode +0 -0
- package/build/aarch64-unknown-linux-gnu/bin/qjsc +0 -0
- package/build/aarch64-unknown-linux-gnu/bin/quickjs-run +0 -0
- package/build/aarch64-unknown-linux-gnu/extras/is-stdin-a-tty +0 -0
- package/build/aarch64-unknown-linux-gnu/extras/run-test262 +0 -0
- package/build/aarch64-unknown-linux-gnu/extras/sample-program/sum +0 -0
- package/build/aarch64-unknown-linux-gnu/extras/stack-limit-test +0 -0
- package/build/aarch64-unknown-linux-gnu/include/quickjs-bytecode.h +8 -0
- package/build/aarch64-unknown-linux-gnu/include/quickjs-context.h +8 -0
- package/build/aarch64-unknown-linux-gnu/include/quickjs-encoding.h +8 -0
- package/build/aarch64-unknown-linux-gnu/include/quickjs-engine.h +8 -0
- package/build/aarch64-unknown-linux-gnu/include/quickjs-full-init.h +19 -0
- package/build/aarch64-unknown-linux-gnu/include/quickjs-inspect.h +9 -0
- package/build/aarch64-unknown-linux-gnu/include/quickjs-intervals.h +9 -0
- package/build/aarch64-unknown-linux-gnu/include/quickjs-libc.h +65 -0
- package/build/aarch64-unknown-linux-gnu/include/quickjs-modulesys.h +68 -0
- package/build/aarch64-unknown-linux-gnu/include/quickjs-pointer.h +9 -0
- package/build/aarch64-unknown-linux-gnu/include/quickjs-print.h +9 -0
- package/build/aarch64-unknown-linux-gnu/include/quickjs-utils.h +49 -0
- package/build/aarch64-unknown-linux-gnu/include/quickjs.h +1195 -0
- package/build/aarch64-unknown-linux-gnu/lib/quickjs-core.a +0 -0
- package/build/aarch64-unknown-linux-gnu/lib/quickjs-full.a +0 -0
- package/build/aarch64-unknown-linux-musl/bin/file-to-bytecode.js +3 -3
- package/build/aarch64-unknown-linux-musl/bin/qjs +0 -0
- package/build/aarch64-unknown-linux-musl/bin/qjsbootstrap +0 -0
- package/build/aarch64-unknown-linux-musl/bin/qjsbootstrap-bytecode +0 -0
- package/build/aarch64-unknown-linux-musl/bin/qjsc +0 -0
- package/build/aarch64-unknown-linux-musl/bin/quickjs-run +0 -0
- package/build/aarch64-unknown-linux-musl/extras/is-stdin-a-tty +0 -0
- package/build/aarch64-unknown-linux-musl/extras/run-test262 +0 -0
- package/build/aarch64-unknown-linux-musl/extras/sample-program/sum +0 -0
- package/build/aarch64-unknown-linux-musl/extras/stack-limit-test +0 -0
- package/build/aarch64-unknown-linux-musl/include/quickjs-bytecode.h +8 -0
- package/build/aarch64-unknown-linux-musl/include/quickjs-context.h +8 -0
- package/build/aarch64-unknown-linux-musl/include/quickjs-encoding.h +8 -0
- package/build/aarch64-unknown-linux-musl/include/quickjs-engine.h +8 -0
- package/build/aarch64-unknown-linux-musl/include/quickjs-full-init.h +19 -0
- package/build/aarch64-unknown-linux-musl/include/quickjs-inspect.h +9 -0
- package/build/aarch64-unknown-linux-musl/include/quickjs-intervals.h +9 -0
- package/build/aarch64-unknown-linux-musl/include/quickjs-libc.h +65 -0
- package/build/aarch64-unknown-linux-musl/include/quickjs-modulesys.h +68 -0
- package/build/aarch64-unknown-linux-musl/include/quickjs-pointer.h +9 -0
- package/build/aarch64-unknown-linux-musl/include/quickjs-print.h +9 -0
- package/build/aarch64-unknown-linux-musl/include/quickjs-utils.h +49 -0
- package/build/aarch64-unknown-linux-musl/include/quickjs.h +1195 -0
- package/build/aarch64-unknown-linux-musl/lib/quickjs-core.a +0 -0
- package/build/aarch64-unknown-linux-musl/lib/quickjs-full.a +0 -0
- package/build/aarch64-unknown-linux-static/bin/file-to-bytecode.js +3 -3
- package/build/aarch64-unknown-linux-static/bin/qjs +0 -0
- package/build/aarch64-unknown-linux-static/bin/qjsbootstrap +0 -0
- package/build/aarch64-unknown-linux-static/bin/qjsbootstrap-bytecode +0 -0
- package/build/aarch64-unknown-linux-static/bin/qjsc +0 -0
- package/build/aarch64-unknown-linux-static/bin/quickjs-run +0 -0
- package/build/aarch64-unknown-linux-static/extras/is-stdin-a-tty +0 -0
- package/build/aarch64-unknown-linux-static/extras/run-test262 +0 -0
- package/build/aarch64-unknown-linux-static/extras/sample-program/sum +0 -0
- package/build/aarch64-unknown-linux-static/extras/stack-limit-test +0 -0
- package/build/aarch64-unknown-linux-static/include/quickjs-bytecode.h +8 -0
- package/build/aarch64-unknown-linux-static/include/quickjs-context.h +8 -0
- package/build/aarch64-unknown-linux-static/include/quickjs-encoding.h +8 -0
- package/build/aarch64-unknown-linux-static/include/quickjs-engine.h +8 -0
- package/build/aarch64-unknown-linux-static/include/quickjs-full-init.h +19 -0
- package/build/aarch64-unknown-linux-static/include/quickjs-inspect.h +9 -0
- package/build/aarch64-unknown-linux-static/include/quickjs-intervals.h +9 -0
- package/build/aarch64-unknown-linux-static/include/quickjs-libc.h +65 -0
- package/build/aarch64-unknown-linux-static/include/quickjs-modulesys.h +68 -0
- package/build/aarch64-unknown-linux-static/include/quickjs-pointer.h +9 -0
- package/build/aarch64-unknown-linux-static/include/quickjs-print.h +9 -0
- package/build/aarch64-unknown-linux-static/include/quickjs-utils.h +49 -0
- package/build/aarch64-unknown-linux-static/include/quickjs.h +1195 -0
- package/build/aarch64-unknown-linux-static/lib/quickjs-core.a +0 -0
- package/build/aarch64-unknown-linux-static/lib/quickjs-full.a +0 -0
- package/build/dts/{quickjs-libcontext.d.ts → quickjs-context.d.ts} +0 -3
- package/build/dts/quickjs-intervals.d.ts +4 -0
- package/build/dts/quickjs-libc.d.ts +21 -76
- package/build/dts/quickjs-modulesys.d.ts +9 -0
- package/build/dts/{quickjs-libpointer.d.ts → quickjs-pointer.d.ts} +1 -1
- package/build/dts/quickjs-print.d.ts +26 -0
- package/build/x86_64-apple-darwin/bin/file-to-bytecode.js +3 -3
- package/build/x86_64-apple-darwin/bin/qjs +0 -0
- package/build/x86_64-apple-darwin/bin/qjsbootstrap +0 -0
- package/build/x86_64-apple-darwin/bin/qjsbootstrap-bytecode +0 -0
- package/build/x86_64-apple-darwin/bin/qjsc +0 -0
- package/build/x86_64-apple-darwin/bin/quickjs-run +0 -0
- package/build/x86_64-apple-darwin/extras/is-stdin-a-tty +0 -0
- package/build/x86_64-apple-darwin/extras/run-test262 +0 -0
- package/build/x86_64-apple-darwin/extras/sample-program/sum +0 -0
- package/build/x86_64-apple-darwin/extras/stack-limit-test +0 -0
- package/build/x86_64-apple-darwin/include/quickjs-bytecode.h +8 -0
- package/build/x86_64-apple-darwin/include/quickjs-context.h +8 -0
- package/build/x86_64-apple-darwin/include/quickjs-encoding.h +8 -0
- package/build/x86_64-apple-darwin/include/quickjs-engine.h +8 -0
- package/build/x86_64-apple-darwin/include/quickjs-full-init.h +19 -0
- package/build/x86_64-apple-darwin/include/quickjs-inspect.h +9 -0
- package/build/x86_64-apple-darwin/include/quickjs-intervals.h +9 -0
- package/build/x86_64-apple-darwin/include/quickjs-libc.h +65 -0
- package/build/x86_64-apple-darwin/include/quickjs-modulesys.h +68 -0
- package/build/x86_64-apple-darwin/include/quickjs-pointer.h +9 -0
- package/build/x86_64-apple-darwin/include/quickjs-print.h +9 -0
- package/build/x86_64-apple-darwin/include/quickjs-utils.h +49 -0
- package/build/x86_64-apple-darwin/include/quickjs.h +1195 -0
- package/build/x86_64-apple-darwin/lib/quickjs-core.a +0 -0
- package/build/x86_64-apple-darwin/lib/quickjs-full.a +0 -0
- package/build/x86_64-pc-windows-static/bin/file-to-bytecode.js +3 -3
- package/build/x86_64-pc-windows-static/bin/qjs.exe +0 -0
- package/build/x86_64-pc-windows-static/bin/qjsbootstrap-bytecode.exe +0 -0
- package/build/x86_64-pc-windows-static/bin/qjsbootstrap.exe +0 -0
- package/build/x86_64-pc-windows-static/bin/qjsc.exe +0 -0
- package/build/x86_64-pc-windows-static/bin/quickjs-run.exe +0 -0
- package/build/x86_64-pc-windows-static/extras/is-stdin-a-tty.exe +0 -0
- package/build/x86_64-pc-windows-static/extras/run-test262.exe +0 -0
- package/build/x86_64-pc-windows-static/extras/sample-program/sum.exe +0 -0
- package/build/x86_64-pc-windows-static/extras/stack-limit-test.exe +0 -0
- package/build/x86_64-pc-windows-static/include/quickjs-bytecode.h +8 -0
- package/build/x86_64-pc-windows-static/include/quickjs-context.h +8 -0
- package/build/x86_64-pc-windows-static/include/quickjs-encoding.h +8 -0
- package/build/x86_64-pc-windows-static/include/quickjs-engine.h +8 -0
- package/build/x86_64-pc-windows-static/include/quickjs-full-init.h +19 -0
- package/build/x86_64-pc-windows-static/include/quickjs-inspect.h +9 -0
- package/build/x86_64-pc-windows-static/include/quickjs-intervals.h +9 -0
- package/build/x86_64-pc-windows-static/include/quickjs-libc.h +65 -0
- package/build/x86_64-pc-windows-static/include/quickjs-modulesys.h +68 -0
- package/build/x86_64-pc-windows-static/include/quickjs-pointer.h +9 -0
- package/build/x86_64-pc-windows-static/include/quickjs-print.h +9 -0
- package/build/x86_64-pc-windows-static/include/quickjs-utils.h +49 -0
- package/build/x86_64-pc-windows-static/include/quickjs.h +1195 -0
- package/build/x86_64-pc-windows-static/lib/quickjs-core.a +0 -0
- package/build/x86_64-pc-windows-static/lib/quickjs-full.a +0 -0
- package/build/x86_64-unknown-linux-gnu/bin/file-to-bytecode.js +3 -3
- package/build/x86_64-unknown-linux-gnu/bin/qjs +0 -0
- package/build/x86_64-unknown-linux-gnu/bin/qjsbootstrap +0 -0
- package/build/x86_64-unknown-linux-gnu/bin/qjsbootstrap-bytecode +0 -0
- package/build/x86_64-unknown-linux-gnu/bin/qjsc +0 -0
- package/build/x86_64-unknown-linux-gnu/bin/quickjs-run +0 -0
- package/build/x86_64-unknown-linux-gnu/extras/is-stdin-a-tty +0 -0
- package/build/x86_64-unknown-linux-gnu/extras/run-test262 +0 -0
- package/build/x86_64-unknown-linux-gnu/extras/sample-program/sum +0 -0
- package/build/x86_64-unknown-linux-gnu/extras/stack-limit-test +0 -0
- package/build/x86_64-unknown-linux-gnu/include/quickjs-bytecode.h +8 -0
- package/build/x86_64-unknown-linux-gnu/include/quickjs-context.h +8 -0
- package/build/x86_64-unknown-linux-gnu/include/quickjs-encoding.h +8 -0
- package/build/x86_64-unknown-linux-gnu/include/quickjs-engine.h +8 -0
- package/build/x86_64-unknown-linux-gnu/include/quickjs-full-init.h +19 -0
- package/build/x86_64-unknown-linux-gnu/include/quickjs-inspect.h +9 -0
- package/build/x86_64-unknown-linux-gnu/include/quickjs-intervals.h +9 -0
- package/build/x86_64-unknown-linux-gnu/include/quickjs-libc.h +65 -0
- package/build/x86_64-unknown-linux-gnu/include/quickjs-modulesys.h +68 -0
- package/build/x86_64-unknown-linux-gnu/include/quickjs-pointer.h +9 -0
- package/build/x86_64-unknown-linux-gnu/include/quickjs-print.h +9 -0
- package/build/x86_64-unknown-linux-gnu/include/quickjs-utils.h +49 -0
- package/build/x86_64-unknown-linux-gnu/include/quickjs.h +1195 -0
- package/build/x86_64-unknown-linux-gnu/lib/quickjs-core.a +0 -0
- package/build/x86_64-unknown-linux-gnu/lib/quickjs-full.a +0 -0
- package/build/x86_64-unknown-linux-musl/bin/file-to-bytecode.js +3 -3
- package/build/x86_64-unknown-linux-musl/bin/qjs +0 -0
- package/build/x86_64-unknown-linux-musl/bin/qjsbootstrap +0 -0
- package/build/x86_64-unknown-linux-musl/bin/qjsbootstrap-bytecode +0 -0
- package/build/x86_64-unknown-linux-musl/bin/qjsc +0 -0
- package/build/x86_64-unknown-linux-musl/bin/quickjs-run +0 -0
- package/build/x86_64-unknown-linux-musl/extras/is-stdin-a-tty +0 -0
- package/build/x86_64-unknown-linux-musl/extras/run-test262 +0 -0
- package/build/x86_64-unknown-linux-musl/extras/sample-program/sum +0 -0
- package/build/x86_64-unknown-linux-musl/extras/stack-limit-test +0 -0
- package/build/x86_64-unknown-linux-musl/include/quickjs-bytecode.h +8 -0
- package/build/x86_64-unknown-linux-musl/include/quickjs-context.h +8 -0
- package/build/x86_64-unknown-linux-musl/include/quickjs-encoding.h +8 -0
- package/build/x86_64-unknown-linux-musl/include/quickjs-engine.h +8 -0
- package/build/x86_64-unknown-linux-musl/include/quickjs-full-init.h +19 -0
- package/build/x86_64-unknown-linux-musl/include/quickjs-inspect.h +9 -0
- package/build/x86_64-unknown-linux-musl/include/quickjs-intervals.h +9 -0
- package/build/x86_64-unknown-linux-musl/include/quickjs-libc.h +65 -0
- package/build/x86_64-unknown-linux-musl/include/quickjs-modulesys.h +68 -0
- package/build/x86_64-unknown-linux-musl/include/quickjs-pointer.h +9 -0
- package/build/x86_64-unknown-linux-musl/include/quickjs-print.h +9 -0
- package/build/x86_64-unknown-linux-musl/include/quickjs-utils.h +49 -0
- package/build/x86_64-unknown-linux-musl/include/quickjs.h +1195 -0
- package/build/x86_64-unknown-linux-musl/lib/quickjs-core.a +0 -0
- package/build/x86_64-unknown-linux-musl/lib/quickjs-full.a +0 -0
- package/build/x86_64-unknown-linux-static/bin/file-to-bytecode.js +3 -3
- package/build/x86_64-unknown-linux-static/bin/qjs +0 -0
- package/build/x86_64-unknown-linux-static/bin/qjsbootstrap +0 -0
- package/build/x86_64-unknown-linux-static/bin/qjsbootstrap-bytecode +0 -0
- package/build/x86_64-unknown-linux-static/bin/qjsc +0 -0
- package/build/x86_64-unknown-linux-static/bin/quickjs-run +0 -0
- package/build/x86_64-unknown-linux-static/extras/is-stdin-a-tty +0 -0
- package/build/x86_64-unknown-linux-static/extras/run-test262 +0 -0
- package/build/x86_64-unknown-linux-static/extras/sample-program/sum +0 -0
- package/build/x86_64-unknown-linux-static/extras/stack-limit-test +0 -0
- package/build/x86_64-unknown-linux-static/include/quickjs-bytecode.h +8 -0
- package/build/x86_64-unknown-linux-static/include/quickjs-context.h +8 -0
- package/build/x86_64-unknown-linux-static/include/quickjs-encoding.h +8 -0
- package/build/x86_64-unknown-linux-static/include/quickjs-engine.h +8 -0
- package/build/x86_64-unknown-linux-static/include/quickjs-full-init.h +19 -0
- package/build/x86_64-unknown-linux-static/include/quickjs-inspect.h +9 -0
- package/build/x86_64-unknown-linux-static/include/quickjs-intervals.h +9 -0
- package/build/x86_64-unknown-linux-static/include/quickjs-libc.h +65 -0
- package/build/x86_64-unknown-linux-static/include/quickjs-modulesys.h +68 -0
- package/build/x86_64-unknown-linux-static/include/quickjs-pointer.h +9 -0
- package/build/x86_64-unknown-linux-static/include/quickjs-print.h +9 -0
- package/build/x86_64-unknown-linux-static/include/quickjs-utils.h +49 -0
- package/build/x86_64-unknown-linux-static/include/quickjs.h +1195 -0
- package/build/x86_64-unknown-linux-static/lib/quickjs-core.a +0 -0
- package/build/x86_64-unknown-linux-static/lib/quickjs-full.a +0 -0
- package/package.json +3 -3
- package/tsconfig.json +2 -5
- package/build/aarch64-apple-darwin/extras/log-argv +0 -0
- package/build/aarch64-unknown-linux-gnu/extras/log-argv +0 -0
- package/build/aarch64-unknown-linux-musl/extras/log-argv +0 -0
- package/build/aarch64-unknown-linux-static/extras/log-argv +0 -0
- package/build/x86_64-apple-darwin/extras/log-argv +0 -0
- package/build/x86_64-pc-windows-static/extras/log-argv.exe +0 -0
- package/build/x86_64-unknown-linux-gnu/extras/log-argv +0 -0
- package/build/x86_64-unknown-linux-musl/extras/log-argv +0 -0
- package/build/x86_64-unknown-linux-static/extras/log-argv +0 -0
- /package/build/dts/{quickjs-libbytecode.d.ts → quickjs-bytecode.d.ts} +0 -0
- /package/build/dts/{quickjs-libencoding.d.ts → quickjs-encoding.d.ts} +0 -0
- /package/build/dts/{quickjs-libengine.d.ts → quickjs-engine.d.ts} +0 -0
- /package/build/dts/{inspect.d.ts → quickjs-inspect.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -55,11 +55,10 @@ Fork of the fantastic QuickJS engine by Fabrice Bellard, with many changes.
|
|
|
55
55
|
- `os.{S_IRWXU,S_IRUSR,S_IWUSR,S_IXUSR,S_IRWXG,S_IRGRP,S_IWGRP,S_IXGRP,S_IRWXO,S_IROTH,S_IWOTH,S_IXOTH}` added, for working with file modes.
|
|
56
56
|
- `"b"` mode flag is now allowed in `std.fdopen`.
|
|
57
57
|
- `std.strftime` added (wrapper for libc `strftime`).
|
|
58
|
-
- Added `std.getuid`, `std.geteuid`, `std.getgid`, and `std.
|
|
58
|
+
- Added `std.getuid`, `std.geteuid`, `std.getgid`, `std.getegid`, and `std.getpwuid` (wrappers for the libc/posix functions of the same names).
|
|
59
59
|
- Most module-loading-related code was moved into `quickjs-modulesys`.
|
|
60
60
|
- `setTimeout` and `clearTimeout` are now available as globals (previously they were only available as exports).
|
|
61
61
|
- `setInterval` and `clearInterval` are added, available as globals.
|
|
62
|
-
- `String.dedent` added (template tag function, like the proposed [String.dedent](https://github.com/tc39/proposal-string-dedent)).
|
|
63
62
|
- Several C-side helper functions were moved out of quickjs-libc and into quickjs-utils.
|
|
64
63
|
- Most module-related code (setting import.meta, etc) was moved into quickjs-modulesys.
|
|
65
64
|
- Added `std.setExitCode`, `std.getExitCode`, and made `std.exit`'s parameter optional. The value passed to `std.setExitCode` will be used when the process exits normally, or when `std.exit` is called without any arguments. `std.setExitCode`, `std.getExitCode`, and `std.exit` throw if called from a thread other than the main thread (ie. a Worker).
|
|
@@ -126,6 +125,8 @@ This module contains APIs related to engine internals like script execution, mod
|
|
|
126
125
|
|
|
127
126
|
- `.js` extensions can now be omitted from import specifiers; they're optional.
|
|
128
127
|
- If your import specifier points to a folder, it will attempt to load `index.js` from that folder.
|
|
128
|
+
- Synchronous import function added (`importModule`), which provides the same module record object you would get via dynamic (async) import.
|
|
129
|
+
- JS api for using the engine's configured module name normalization function was added (`resolveModule`).
|
|
129
130
|
- Adds the global `require`, a CommonJS-like synchronous module loading function.
|
|
130
131
|
- The `require` function is not fully CommonJS-compliant; for instance, `require.main` is not present. `require.resolve` is, though.
|
|
131
132
|
- Adds `import.meta.require`
|
|
@@ -136,7 +137,7 @@ This module contains APIs related to engine internals like script execution, mod
|
|
|
136
137
|
- Makes the module loader's resolution and loading behavior configurable
|
|
137
138
|
- The module "quickjs:engine" exports an object called `ModuleDelegate`.
|
|
138
139
|
- You can specify additional implicit import specifier extensions by adding to the `ModuleDelegate.searchExtensions` array.
|
|
139
|
-
- You can transform any file prior to evaluating it as a module by adding a function to the `ModuleDelegate.compilers` object. Useful for compile-to-
|
|
140
|
+
- You can transform any file prior to evaluating it as a module by adding a function to the `ModuleDelegate.compilers` object. Useful for compile-to-js languages like TypeScript, Coffeescript, etc.
|
|
140
141
|
- You can override module name normalization (aka module resolution) by replacing the `ModuleDelegate.resolve` function.
|
|
141
142
|
- Note that you must handle `ModuleDelegate.searchExtensions` yourself in your replacement implementation.
|
|
142
143
|
- You can override the method used to load modules by replacing the `ModuleDelegate.read` function.
|
|
@@ -148,8 +149,6 @@ This module contains APIs related to engine internals like script execution, mod
|
|
|
148
149
|
- New `isModuleNamespace` function lets users identify module namespace objects
|
|
149
150
|
- New `defineBuiltinModule` function lets users add their own builtin modules
|
|
150
151
|
- When using `require` to load a module which contains an export named `__cjsExports`, the value of the `__cjsExports` property will be returned from `require` instead of the usual module namespace object. This can be leveraged by users configuring the module loader to add some CommonJS <-> ESM interop. Note, however, that dynamic import and `"quickjs:engine"`'s `importModule` always receive the usual module namespace object.
|
|
151
|
-
- Synchronous import function added (`importModule`), which provides the same module record object you would get via dynamic (async) import.
|
|
152
|
-
- JS api for using the engine's configured module name normalization function was added (`resolveModule`).
|
|
153
152
|
|
|
154
153
|
### Changes to project organization
|
|
155
154
|
|
|
@@ -157,7 +156,7 @@ This module contains APIs related to engine internals like script execution, mod
|
|
|
157
156
|
- Ninja is used instead of make. Ninja build config is generated via `.ninja.js` files which get loaded into [@suchipi/shinobi](https://github.com/suchipi/shinobi).
|
|
158
157
|
- Line endings have been made consistent and trailing whitespace has been removed
|
|
159
158
|
- The tests are authored in a new format which leverages jest snapshot testing.
|
|
160
|
-
- Some parts of `quickjs-libc` were moved into `quickjs-modulesys` and `quickjs-
|
|
159
|
+
- Some parts of `quickjs-libc` were moved into `quickjs-modulesys` and `quickjs-engine`.
|
|
161
160
|
- The `eval_*` functions that were duplicated in each of the programs (`eval_buf`, `eval_file`, and `eval_binary`) were deduplicated and moved into `quickjs-modulesys`.
|
|
162
161
|
|
|
163
162
|
### More target OSes/runtimes
|
|
@@ -206,6 +205,10 @@ To compile binaries for Linux, macOS, iOS, and Windows (using Docker):
|
|
|
206
205
|
Or, to compile binaries for just your own unix system:
|
|
207
206
|
|
|
208
207
|
- Make sure you have both [Ninja](https://ninja-build.org/) and [Node.js](https://nodejs.org/) installed. I use Ninja 1.10.1 and Node.js 18.18.0, but it should work with most versions of both of those.
|
|
208
|
+
- Make sure you have [bash](https://www.gnu.org/software/bash/) 4 or higher.
|
|
209
|
+
|
|
210
|
+
> Almost all modern Linux systems have bash 5, but macOS still has bash 3. To get a newer version of bash on macOS, install either [Homebrew](https://brew.sh/) or [MacPorts](https://www.macports.org/) (your preference), then run `brew install bash` or `sudo port install bash`, respectively. You may also need to ensure your shell's [PATH environment variable](https://superuser.com/a/284351) is set correctly; running `which bash` should print the location of the _newer_ bash binary, installed by Homebrew/MacPorts.
|
|
211
|
+
|
|
209
212
|
- Clone the repo and cd to its folder
|
|
210
213
|
- Run `meta/build.sh`
|
|
211
214
|
- Build artifacts will be placed in the `build` folder. You're probably most interested in stuff in the `build/bin` and `build/lib` folders.
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
// Simple script which reads in a file, converts it to bytecode, and writes out
|
|
4
4
|
// the bytecode to a new file.
|
|
5
5
|
|
|
6
|
-
/// <reference path="
|
|
7
|
-
/// <reference path="
|
|
8
|
-
/// <reference path="
|
|
6
|
+
/// <reference path="../../quickjs/quickjs.d.ts" />
|
|
7
|
+
/// <reference path="../../builtin-modules/quickjs-libc/quickjs-libc.d.ts" />
|
|
8
|
+
/// <reference path="../../builtin-modules/quickjs-bytecode/quickjs-bytecode.d.ts" />
|
|
9
9
|
|
|
10
10
|
import * as std from "quickjs:std";
|
|
11
11
|
import * as Bytecode from "quickjs:bytecode";
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#ifndef QUICKJS_FULL_INIT_H
|
|
2
|
+
#define QUICKJS_FULL_INIT_H
|
|
3
|
+
|
|
4
|
+
#include "quickjs.h"
|
|
5
|
+
#include "quickjs-print.h"
|
|
6
|
+
#include "quickjs-inspect.h"
|
|
7
|
+
#include "quickjs-intervals.h"
|
|
8
|
+
#include "quickjs-libc.h"
|
|
9
|
+
#include "quickjs-bytecode.h"
|
|
10
|
+
#include "quickjs-context.h"
|
|
11
|
+
#include "quickjs-pointer.h"
|
|
12
|
+
#include "quickjs-modulesys.h"
|
|
13
|
+
#include "quickjs-engine.h"
|
|
14
|
+
#include "quickjs-encoding.h"
|
|
15
|
+
|
|
16
|
+
/* returns 0 on success, nonzero on failure */
|
|
17
|
+
int quickjs_full_init(JSContext *ctx);
|
|
18
|
+
|
|
19
|
+
#endif /* ifndef QUICKJS_FULL_INIT_H */
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* QuickJS C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2017-2018 Fabrice Bellard
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
* in the Software without restriction, including without limitation the rights
|
|
9
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
* furnished to do so, subject to the following conditions:
|
|
12
|
+
*
|
|
13
|
+
* The above copyright notice and this permission notice shall be included in
|
|
14
|
+
* all copies or substantial portions of the Software.
|
|
15
|
+
*
|
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
19
|
+
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
22
|
+
* THE SOFTWARE.
|
|
23
|
+
*/
|
|
24
|
+
#ifndef QUICKJS_LIBC_H
|
|
25
|
+
#define QUICKJS_LIBC_H
|
|
26
|
+
|
|
27
|
+
#include <stdio.h>
|
|
28
|
+
#include <stdlib.h>
|
|
29
|
+
|
|
30
|
+
#include "quickjs.h"
|
|
31
|
+
|
|
32
|
+
#ifdef __cplusplus
|
|
33
|
+
extern "C"
|
|
34
|
+
{
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
JSModuleDef *js_init_module_std(JSContext *ctx, const char *module_name);
|
|
38
|
+
JSModuleDef *js_init_module_os(JSContext *ctx, const char *module_name);
|
|
39
|
+
|
|
40
|
+
/*
|
|
41
|
+
Creates 'scriptArgs' and 'setTimeout'.
|
|
42
|
+
*/
|
|
43
|
+
void js_std_add_helpers(JSContext *ctx, int argc, char **argv);
|
|
44
|
+
|
|
45
|
+
/* Creates 'scriptArgs' global */
|
|
46
|
+
void js_std_add_scriptArgs(JSContext *ctx, int argc, char **argv);
|
|
47
|
+
|
|
48
|
+
/* Creates 'setTimeout' and 'clearTimeout' globals */
|
|
49
|
+
void js_std_add_timeout(JSContext *ctx);
|
|
50
|
+
|
|
51
|
+
JS_BOOL js_std_is_main_thread(JSRuntime *rt);
|
|
52
|
+
void js_std_interrupt_handler_start(JSContext *ctx);
|
|
53
|
+
void js_std_interrupt_handler_finish(JSContext *ctx, JSValue ret);
|
|
54
|
+
|
|
55
|
+
/* returns the exit status code */
|
|
56
|
+
int js_std_loop(JSContext *ctx);
|
|
57
|
+
void js_std_init_handlers(JSRuntime *rt);
|
|
58
|
+
void js_std_free_handlers(JSRuntime *rt);
|
|
59
|
+
void js_std_set_worker_new_context_func(JSContext *(*func)(JSRuntime *rt));
|
|
60
|
+
|
|
61
|
+
#ifdef __cplusplus
|
|
62
|
+
} /* extern "C" { */
|
|
63
|
+
#endif
|
|
64
|
+
|
|
65
|
+
#endif /* QUICKJS_LIBC_H */
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
#ifndef QUICKJS_MODULESYS_H
|
|
2
|
+
#define QUICKJS_MODULESYS_H
|
|
3
|
+
|
|
4
|
+
#include "quickjs.h"
|
|
5
|
+
|
|
6
|
+
typedef struct QJMS_State QJMS_State;
|
|
7
|
+
|
|
8
|
+
/*
|
|
9
|
+
initialize and register the module loader system.
|
|
10
|
+
call both this (once per runtime) AND QJMS_InitContext (once per context).
|
|
11
|
+
*/
|
|
12
|
+
void QJMS_InitState(JSRuntime *rt);
|
|
13
|
+
|
|
14
|
+
/*
|
|
15
|
+
initialize and register the module loader system.
|
|
16
|
+
call both this (once per context) AND QJMS_InitState (once per runtime).
|
|
17
|
+
*/
|
|
18
|
+
void QJMS_InitContext(JSContext *ctx);
|
|
19
|
+
|
|
20
|
+
/* free resources allocated by the module loader system */
|
|
21
|
+
void QJMS_FreeState(JSRuntime *rt);
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
Affects the value of import.meta.main.
|
|
25
|
+
*/
|
|
26
|
+
void QJMS_SetMainModule(JSRuntime *rt, const char *module_name);
|
|
27
|
+
|
|
28
|
+
/*
|
|
29
|
+
Check if import.meta.main would be true for this module.
|
|
30
|
+
*/
|
|
31
|
+
JS_BOOL QJMS_IsMainModule(JSRuntime *rt, const char *module_name);
|
|
32
|
+
|
|
33
|
+
/* initializes the import.meta object for the provided module function */
|
|
34
|
+
int QJMS_SetModuleImportMeta(JSContext *ctx, JSValueConst func_val);
|
|
35
|
+
|
|
36
|
+
/*
|
|
37
|
+
returns 0 on success, nonzero on error.
|
|
38
|
+
in case of error, prints error to stderr before returning.
|
|
39
|
+
*/
|
|
40
|
+
int QJMS_EvalBuf(JSContext *ctx, const void *buf, int buf_len,
|
|
41
|
+
const char *filename, int eval_flags);
|
|
42
|
+
|
|
43
|
+
/*
|
|
44
|
+
module can be -1 for autodetect.
|
|
45
|
+
returns 0 on success, nonzero on error.
|
|
46
|
+
in case of error, prints error to stderr before returning.
|
|
47
|
+
*/
|
|
48
|
+
int QJMS_EvalFile(JSContext *ctx, const char *filename, int module);
|
|
49
|
+
|
|
50
|
+
/*
|
|
51
|
+
returns 0 on success, nonzero on error.
|
|
52
|
+
in case of error, prints error to stderr before returning.
|
|
53
|
+
*/
|
|
54
|
+
int QJMS_EvalBinary(JSContext *ctx, const uint8_t *buf, size_t buf_len,
|
|
55
|
+
int load_only);
|
|
56
|
+
|
|
57
|
+
/* the internal behavior of the 'require' function, exposed as a C API */
|
|
58
|
+
JSValue QJMS_Require(JSContext *ctx, JSValueConst specifier);
|
|
59
|
+
JSValue QJMS_Require2(JSContext *ctx, JSValueConst specifier, JSValueConst basename);
|
|
60
|
+
|
|
61
|
+
/* the internal behavior of the 'require.resolve' function, exposed as a C API */
|
|
62
|
+
JSValue QJMS_RequireResolve(JSContext *ctx, JSValueConst specifier_val);
|
|
63
|
+
JSValue QJMS_RequireResolve2(JSContext *ctx, JSValueConst specifier_val, JSAtom basename_atom);
|
|
64
|
+
|
|
65
|
+
/* returns an object like { require: Function, ModuleDelegate: Object } */
|
|
66
|
+
JSValue QJMS_GetModuleLoaderInternals(JSContext *ctx);
|
|
67
|
+
|
|
68
|
+
#endif /* ifndef QUICKJS_MODULESYS_H */
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#ifndef QUICKJS_UTILS_H
|
|
2
|
+
#define QUICKJS_UTILS_H
|
|
3
|
+
|
|
4
|
+
#include "quickjs.h"
|
|
5
|
+
|
|
6
|
+
typedef struct QJUForEachPropertyState
|
|
7
|
+
{
|
|
8
|
+
uint32_t len;
|
|
9
|
+
uint32_t i;
|
|
10
|
+
JSPropertyEnum *tab;
|
|
11
|
+
JSAtom key;
|
|
12
|
+
JSValue val;
|
|
13
|
+
} QJUForEachPropertyState;
|
|
14
|
+
|
|
15
|
+
/* free using QJU_FreeForEachPropertyState */
|
|
16
|
+
QJUForEachPropertyState *QJU_NewForEachPropertyState(JSContext *ctx, JSValue obj, int flags);
|
|
17
|
+
|
|
18
|
+
// put a block after this invocation; it will be run once per property
|
|
19
|
+
#define QJU_ForEachProperty(ctx, state) \
|
|
20
|
+
for (state->i = 0; state->i < state->len; state->i++)
|
|
21
|
+
|
|
22
|
+
// fills in `state` with data for the current property.
|
|
23
|
+
// return value will be JS_EXCEPTION if an exception was thrown, or JS_UNDEFINED otherwise.
|
|
24
|
+
// you must JS_DupValue `state->val` if you wanna keep it around.
|
|
25
|
+
JSValue QJU_ForEachProperty_Read(JSContext *ctx, JSValue obj, QJUForEachPropertyState *state);
|
|
26
|
+
|
|
27
|
+
void QJU_FreeForEachPropertyState(JSContext *ctx, QJUForEachPropertyState *state);
|
|
28
|
+
|
|
29
|
+
/* reads the contents of the file at `filename` into a buffer. */
|
|
30
|
+
uint8_t *QJU_ReadFile(JSContext *ctx, size_t *pbuf_len, const char *filename);
|
|
31
|
+
|
|
32
|
+
/*
|
|
33
|
+
prints `exception_val` to `f`. If `exception_val` is an Error,
|
|
34
|
+
it gets printed nicely.
|
|
35
|
+
*/
|
|
36
|
+
void QJU_PrintError(JSContext *ctx, FILE *f, JSValueConst exception_val);
|
|
37
|
+
|
|
38
|
+
/*
|
|
39
|
+
prints the context's current exception to `f`.
|
|
40
|
+
this calls JS_GetException, so the exception will be cleared.
|
|
41
|
+
*/
|
|
42
|
+
void QJU_PrintException(JSContext *ctx, FILE *f);
|
|
43
|
+
|
|
44
|
+
/* an unhandled promise rejection handler suitable for passing into JS_SetHostPromiseRejectionTracker */
|
|
45
|
+
void QJU_PrintPromiseRejection(JSContext *ctx, JSValueConst promise,
|
|
46
|
+
JSValueConst reason, JS_BOOL is_handled,
|
|
47
|
+
void *opaque);
|
|
48
|
+
|
|
49
|
+
#endif /* ifndef QUICKJS_UTILS_H */
|