@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.
Files changed (247) hide show
  1. package/README.md +9 -6
  2. package/build/aarch64-apple-darwin/bin/file-to-bytecode.js +3 -3
  3. package/build/aarch64-apple-darwin/bin/qjs +0 -0
  4. package/build/aarch64-apple-darwin/bin/qjsbootstrap +0 -0
  5. package/build/aarch64-apple-darwin/bin/qjsbootstrap-bytecode +0 -0
  6. package/build/aarch64-apple-darwin/bin/qjsc +0 -0
  7. package/build/aarch64-apple-darwin/bin/quickjs-run +0 -0
  8. package/build/aarch64-apple-darwin/extras/is-stdin-a-tty +0 -0
  9. package/build/aarch64-apple-darwin/extras/run-test262 +0 -0
  10. package/build/aarch64-apple-darwin/extras/sample-program/sum +0 -0
  11. package/build/aarch64-apple-darwin/extras/stack-limit-test +0 -0
  12. package/build/aarch64-apple-darwin/include/quickjs-bytecode.h +8 -0
  13. package/build/aarch64-apple-darwin/include/quickjs-context.h +8 -0
  14. package/build/aarch64-apple-darwin/include/quickjs-encoding.h +8 -0
  15. package/build/aarch64-apple-darwin/include/quickjs-engine.h +8 -0
  16. package/build/aarch64-apple-darwin/include/quickjs-full-init.h +19 -0
  17. package/build/aarch64-apple-darwin/include/quickjs-inspect.h +9 -0
  18. package/build/aarch64-apple-darwin/include/quickjs-intervals.h +9 -0
  19. package/build/aarch64-apple-darwin/include/quickjs-libc.h +65 -0
  20. package/build/aarch64-apple-darwin/include/quickjs-modulesys.h +68 -0
  21. package/build/aarch64-apple-darwin/include/quickjs-pointer.h +9 -0
  22. package/build/aarch64-apple-darwin/include/quickjs-print.h +9 -0
  23. package/build/aarch64-apple-darwin/include/quickjs-utils.h +49 -0
  24. package/build/aarch64-apple-darwin/include/quickjs.h +1195 -0
  25. package/build/aarch64-apple-darwin/lib/quickjs-core.a +0 -0
  26. package/build/aarch64-apple-darwin/lib/quickjs-full.a +0 -0
  27. package/build/aarch64-unknown-linux-gnu/bin/file-to-bytecode.js +3 -3
  28. package/build/aarch64-unknown-linux-gnu/bin/qjs +0 -0
  29. package/build/aarch64-unknown-linux-gnu/bin/qjsbootstrap +0 -0
  30. package/build/aarch64-unknown-linux-gnu/bin/qjsbootstrap-bytecode +0 -0
  31. package/build/aarch64-unknown-linux-gnu/bin/qjsc +0 -0
  32. package/build/aarch64-unknown-linux-gnu/bin/quickjs-run +0 -0
  33. package/build/aarch64-unknown-linux-gnu/extras/is-stdin-a-tty +0 -0
  34. package/build/aarch64-unknown-linux-gnu/extras/run-test262 +0 -0
  35. package/build/aarch64-unknown-linux-gnu/extras/sample-program/sum +0 -0
  36. package/build/aarch64-unknown-linux-gnu/extras/stack-limit-test +0 -0
  37. package/build/aarch64-unknown-linux-gnu/include/quickjs-bytecode.h +8 -0
  38. package/build/aarch64-unknown-linux-gnu/include/quickjs-context.h +8 -0
  39. package/build/aarch64-unknown-linux-gnu/include/quickjs-encoding.h +8 -0
  40. package/build/aarch64-unknown-linux-gnu/include/quickjs-engine.h +8 -0
  41. package/build/aarch64-unknown-linux-gnu/include/quickjs-full-init.h +19 -0
  42. package/build/aarch64-unknown-linux-gnu/include/quickjs-inspect.h +9 -0
  43. package/build/aarch64-unknown-linux-gnu/include/quickjs-intervals.h +9 -0
  44. package/build/aarch64-unknown-linux-gnu/include/quickjs-libc.h +65 -0
  45. package/build/aarch64-unknown-linux-gnu/include/quickjs-modulesys.h +68 -0
  46. package/build/aarch64-unknown-linux-gnu/include/quickjs-pointer.h +9 -0
  47. package/build/aarch64-unknown-linux-gnu/include/quickjs-print.h +9 -0
  48. package/build/aarch64-unknown-linux-gnu/include/quickjs-utils.h +49 -0
  49. package/build/aarch64-unknown-linux-gnu/include/quickjs.h +1195 -0
  50. package/build/aarch64-unknown-linux-gnu/lib/quickjs-core.a +0 -0
  51. package/build/aarch64-unknown-linux-gnu/lib/quickjs-full.a +0 -0
  52. package/build/aarch64-unknown-linux-musl/bin/file-to-bytecode.js +3 -3
  53. package/build/aarch64-unknown-linux-musl/bin/qjs +0 -0
  54. package/build/aarch64-unknown-linux-musl/bin/qjsbootstrap +0 -0
  55. package/build/aarch64-unknown-linux-musl/bin/qjsbootstrap-bytecode +0 -0
  56. package/build/aarch64-unknown-linux-musl/bin/qjsc +0 -0
  57. package/build/aarch64-unknown-linux-musl/bin/quickjs-run +0 -0
  58. package/build/aarch64-unknown-linux-musl/extras/is-stdin-a-tty +0 -0
  59. package/build/aarch64-unknown-linux-musl/extras/run-test262 +0 -0
  60. package/build/aarch64-unknown-linux-musl/extras/sample-program/sum +0 -0
  61. package/build/aarch64-unknown-linux-musl/extras/stack-limit-test +0 -0
  62. package/build/aarch64-unknown-linux-musl/include/quickjs-bytecode.h +8 -0
  63. package/build/aarch64-unknown-linux-musl/include/quickjs-context.h +8 -0
  64. package/build/aarch64-unknown-linux-musl/include/quickjs-encoding.h +8 -0
  65. package/build/aarch64-unknown-linux-musl/include/quickjs-engine.h +8 -0
  66. package/build/aarch64-unknown-linux-musl/include/quickjs-full-init.h +19 -0
  67. package/build/aarch64-unknown-linux-musl/include/quickjs-inspect.h +9 -0
  68. package/build/aarch64-unknown-linux-musl/include/quickjs-intervals.h +9 -0
  69. package/build/aarch64-unknown-linux-musl/include/quickjs-libc.h +65 -0
  70. package/build/aarch64-unknown-linux-musl/include/quickjs-modulesys.h +68 -0
  71. package/build/aarch64-unknown-linux-musl/include/quickjs-pointer.h +9 -0
  72. package/build/aarch64-unknown-linux-musl/include/quickjs-print.h +9 -0
  73. package/build/aarch64-unknown-linux-musl/include/quickjs-utils.h +49 -0
  74. package/build/aarch64-unknown-linux-musl/include/quickjs.h +1195 -0
  75. package/build/aarch64-unknown-linux-musl/lib/quickjs-core.a +0 -0
  76. package/build/aarch64-unknown-linux-musl/lib/quickjs-full.a +0 -0
  77. package/build/aarch64-unknown-linux-static/bin/file-to-bytecode.js +3 -3
  78. package/build/aarch64-unknown-linux-static/bin/qjs +0 -0
  79. package/build/aarch64-unknown-linux-static/bin/qjsbootstrap +0 -0
  80. package/build/aarch64-unknown-linux-static/bin/qjsbootstrap-bytecode +0 -0
  81. package/build/aarch64-unknown-linux-static/bin/qjsc +0 -0
  82. package/build/aarch64-unknown-linux-static/bin/quickjs-run +0 -0
  83. package/build/aarch64-unknown-linux-static/extras/is-stdin-a-tty +0 -0
  84. package/build/aarch64-unknown-linux-static/extras/run-test262 +0 -0
  85. package/build/aarch64-unknown-linux-static/extras/sample-program/sum +0 -0
  86. package/build/aarch64-unknown-linux-static/extras/stack-limit-test +0 -0
  87. package/build/aarch64-unknown-linux-static/include/quickjs-bytecode.h +8 -0
  88. package/build/aarch64-unknown-linux-static/include/quickjs-context.h +8 -0
  89. package/build/aarch64-unknown-linux-static/include/quickjs-encoding.h +8 -0
  90. package/build/aarch64-unknown-linux-static/include/quickjs-engine.h +8 -0
  91. package/build/aarch64-unknown-linux-static/include/quickjs-full-init.h +19 -0
  92. package/build/aarch64-unknown-linux-static/include/quickjs-inspect.h +9 -0
  93. package/build/aarch64-unknown-linux-static/include/quickjs-intervals.h +9 -0
  94. package/build/aarch64-unknown-linux-static/include/quickjs-libc.h +65 -0
  95. package/build/aarch64-unknown-linux-static/include/quickjs-modulesys.h +68 -0
  96. package/build/aarch64-unknown-linux-static/include/quickjs-pointer.h +9 -0
  97. package/build/aarch64-unknown-linux-static/include/quickjs-print.h +9 -0
  98. package/build/aarch64-unknown-linux-static/include/quickjs-utils.h +49 -0
  99. package/build/aarch64-unknown-linux-static/include/quickjs.h +1195 -0
  100. package/build/aarch64-unknown-linux-static/lib/quickjs-core.a +0 -0
  101. package/build/aarch64-unknown-linux-static/lib/quickjs-full.a +0 -0
  102. package/build/dts/{quickjs-libcontext.d.ts → quickjs-context.d.ts} +0 -3
  103. package/build/dts/quickjs-intervals.d.ts +4 -0
  104. package/build/dts/quickjs-libc.d.ts +21 -76
  105. package/build/dts/quickjs-modulesys.d.ts +9 -0
  106. package/build/dts/{quickjs-libpointer.d.ts → quickjs-pointer.d.ts} +1 -1
  107. package/build/dts/quickjs-print.d.ts +26 -0
  108. package/build/x86_64-apple-darwin/bin/file-to-bytecode.js +3 -3
  109. package/build/x86_64-apple-darwin/bin/qjs +0 -0
  110. package/build/x86_64-apple-darwin/bin/qjsbootstrap +0 -0
  111. package/build/x86_64-apple-darwin/bin/qjsbootstrap-bytecode +0 -0
  112. package/build/x86_64-apple-darwin/bin/qjsc +0 -0
  113. package/build/x86_64-apple-darwin/bin/quickjs-run +0 -0
  114. package/build/x86_64-apple-darwin/extras/is-stdin-a-tty +0 -0
  115. package/build/x86_64-apple-darwin/extras/run-test262 +0 -0
  116. package/build/x86_64-apple-darwin/extras/sample-program/sum +0 -0
  117. package/build/x86_64-apple-darwin/extras/stack-limit-test +0 -0
  118. package/build/x86_64-apple-darwin/include/quickjs-bytecode.h +8 -0
  119. package/build/x86_64-apple-darwin/include/quickjs-context.h +8 -0
  120. package/build/x86_64-apple-darwin/include/quickjs-encoding.h +8 -0
  121. package/build/x86_64-apple-darwin/include/quickjs-engine.h +8 -0
  122. package/build/x86_64-apple-darwin/include/quickjs-full-init.h +19 -0
  123. package/build/x86_64-apple-darwin/include/quickjs-inspect.h +9 -0
  124. package/build/x86_64-apple-darwin/include/quickjs-intervals.h +9 -0
  125. package/build/x86_64-apple-darwin/include/quickjs-libc.h +65 -0
  126. package/build/x86_64-apple-darwin/include/quickjs-modulesys.h +68 -0
  127. package/build/x86_64-apple-darwin/include/quickjs-pointer.h +9 -0
  128. package/build/x86_64-apple-darwin/include/quickjs-print.h +9 -0
  129. package/build/x86_64-apple-darwin/include/quickjs-utils.h +49 -0
  130. package/build/x86_64-apple-darwin/include/quickjs.h +1195 -0
  131. package/build/x86_64-apple-darwin/lib/quickjs-core.a +0 -0
  132. package/build/x86_64-apple-darwin/lib/quickjs-full.a +0 -0
  133. package/build/x86_64-pc-windows-static/bin/file-to-bytecode.js +3 -3
  134. package/build/x86_64-pc-windows-static/bin/qjs.exe +0 -0
  135. package/build/x86_64-pc-windows-static/bin/qjsbootstrap-bytecode.exe +0 -0
  136. package/build/x86_64-pc-windows-static/bin/qjsbootstrap.exe +0 -0
  137. package/build/x86_64-pc-windows-static/bin/qjsc.exe +0 -0
  138. package/build/x86_64-pc-windows-static/bin/quickjs-run.exe +0 -0
  139. package/build/x86_64-pc-windows-static/extras/is-stdin-a-tty.exe +0 -0
  140. package/build/x86_64-pc-windows-static/extras/run-test262.exe +0 -0
  141. package/build/x86_64-pc-windows-static/extras/sample-program/sum.exe +0 -0
  142. package/build/x86_64-pc-windows-static/extras/stack-limit-test.exe +0 -0
  143. package/build/x86_64-pc-windows-static/include/quickjs-bytecode.h +8 -0
  144. package/build/x86_64-pc-windows-static/include/quickjs-context.h +8 -0
  145. package/build/x86_64-pc-windows-static/include/quickjs-encoding.h +8 -0
  146. package/build/x86_64-pc-windows-static/include/quickjs-engine.h +8 -0
  147. package/build/x86_64-pc-windows-static/include/quickjs-full-init.h +19 -0
  148. package/build/x86_64-pc-windows-static/include/quickjs-inspect.h +9 -0
  149. package/build/x86_64-pc-windows-static/include/quickjs-intervals.h +9 -0
  150. package/build/x86_64-pc-windows-static/include/quickjs-libc.h +65 -0
  151. package/build/x86_64-pc-windows-static/include/quickjs-modulesys.h +68 -0
  152. package/build/x86_64-pc-windows-static/include/quickjs-pointer.h +9 -0
  153. package/build/x86_64-pc-windows-static/include/quickjs-print.h +9 -0
  154. package/build/x86_64-pc-windows-static/include/quickjs-utils.h +49 -0
  155. package/build/x86_64-pc-windows-static/include/quickjs.h +1195 -0
  156. package/build/x86_64-pc-windows-static/lib/quickjs-core.a +0 -0
  157. package/build/x86_64-pc-windows-static/lib/quickjs-full.a +0 -0
  158. package/build/x86_64-unknown-linux-gnu/bin/file-to-bytecode.js +3 -3
  159. package/build/x86_64-unknown-linux-gnu/bin/qjs +0 -0
  160. package/build/x86_64-unknown-linux-gnu/bin/qjsbootstrap +0 -0
  161. package/build/x86_64-unknown-linux-gnu/bin/qjsbootstrap-bytecode +0 -0
  162. package/build/x86_64-unknown-linux-gnu/bin/qjsc +0 -0
  163. package/build/x86_64-unknown-linux-gnu/bin/quickjs-run +0 -0
  164. package/build/x86_64-unknown-linux-gnu/extras/is-stdin-a-tty +0 -0
  165. package/build/x86_64-unknown-linux-gnu/extras/run-test262 +0 -0
  166. package/build/x86_64-unknown-linux-gnu/extras/sample-program/sum +0 -0
  167. package/build/x86_64-unknown-linux-gnu/extras/stack-limit-test +0 -0
  168. package/build/x86_64-unknown-linux-gnu/include/quickjs-bytecode.h +8 -0
  169. package/build/x86_64-unknown-linux-gnu/include/quickjs-context.h +8 -0
  170. package/build/x86_64-unknown-linux-gnu/include/quickjs-encoding.h +8 -0
  171. package/build/x86_64-unknown-linux-gnu/include/quickjs-engine.h +8 -0
  172. package/build/x86_64-unknown-linux-gnu/include/quickjs-full-init.h +19 -0
  173. package/build/x86_64-unknown-linux-gnu/include/quickjs-inspect.h +9 -0
  174. package/build/x86_64-unknown-linux-gnu/include/quickjs-intervals.h +9 -0
  175. package/build/x86_64-unknown-linux-gnu/include/quickjs-libc.h +65 -0
  176. package/build/x86_64-unknown-linux-gnu/include/quickjs-modulesys.h +68 -0
  177. package/build/x86_64-unknown-linux-gnu/include/quickjs-pointer.h +9 -0
  178. package/build/x86_64-unknown-linux-gnu/include/quickjs-print.h +9 -0
  179. package/build/x86_64-unknown-linux-gnu/include/quickjs-utils.h +49 -0
  180. package/build/x86_64-unknown-linux-gnu/include/quickjs.h +1195 -0
  181. package/build/x86_64-unknown-linux-gnu/lib/quickjs-core.a +0 -0
  182. package/build/x86_64-unknown-linux-gnu/lib/quickjs-full.a +0 -0
  183. package/build/x86_64-unknown-linux-musl/bin/file-to-bytecode.js +3 -3
  184. package/build/x86_64-unknown-linux-musl/bin/qjs +0 -0
  185. package/build/x86_64-unknown-linux-musl/bin/qjsbootstrap +0 -0
  186. package/build/x86_64-unknown-linux-musl/bin/qjsbootstrap-bytecode +0 -0
  187. package/build/x86_64-unknown-linux-musl/bin/qjsc +0 -0
  188. package/build/x86_64-unknown-linux-musl/bin/quickjs-run +0 -0
  189. package/build/x86_64-unknown-linux-musl/extras/is-stdin-a-tty +0 -0
  190. package/build/x86_64-unknown-linux-musl/extras/run-test262 +0 -0
  191. package/build/x86_64-unknown-linux-musl/extras/sample-program/sum +0 -0
  192. package/build/x86_64-unknown-linux-musl/extras/stack-limit-test +0 -0
  193. package/build/x86_64-unknown-linux-musl/include/quickjs-bytecode.h +8 -0
  194. package/build/x86_64-unknown-linux-musl/include/quickjs-context.h +8 -0
  195. package/build/x86_64-unknown-linux-musl/include/quickjs-encoding.h +8 -0
  196. package/build/x86_64-unknown-linux-musl/include/quickjs-engine.h +8 -0
  197. package/build/x86_64-unknown-linux-musl/include/quickjs-full-init.h +19 -0
  198. package/build/x86_64-unknown-linux-musl/include/quickjs-inspect.h +9 -0
  199. package/build/x86_64-unknown-linux-musl/include/quickjs-intervals.h +9 -0
  200. package/build/x86_64-unknown-linux-musl/include/quickjs-libc.h +65 -0
  201. package/build/x86_64-unknown-linux-musl/include/quickjs-modulesys.h +68 -0
  202. package/build/x86_64-unknown-linux-musl/include/quickjs-pointer.h +9 -0
  203. package/build/x86_64-unknown-linux-musl/include/quickjs-print.h +9 -0
  204. package/build/x86_64-unknown-linux-musl/include/quickjs-utils.h +49 -0
  205. package/build/x86_64-unknown-linux-musl/include/quickjs.h +1195 -0
  206. package/build/x86_64-unknown-linux-musl/lib/quickjs-core.a +0 -0
  207. package/build/x86_64-unknown-linux-musl/lib/quickjs-full.a +0 -0
  208. package/build/x86_64-unknown-linux-static/bin/file-to-bytecode.js +3 -3
  209. package/build/x86_64-unknown-linux-static/bin/qjs +0 -0
  210. package/build/x86_64-unknown-linux-static/bin/qjsbootstrap +0 -0
  211. package/build/x86_64-unknown-linux-static/bin/qjsbootstrap-bytecode +0 -0
  212. package/build/x86_64-unknown-linux-static/bin/qjsc +0 -0
  213. package/build/x86_64-unknown-linux-static/bin/quickjs-run +0 -0
  214. package/build/x86_64-unknown-linux-static/extras/is-stdin-a-tty +0 -0
  215. package/build/x86_64-unknown-linux-static/extras/run-test262 +0 -0
  216. package/build/x86_64-unknown-linux-static/extras/sample-program/sum +0 -0
  217. package/build/x86_64-unknown-linux-static/extras/stack-limit-test +0 -0
  218. package/build/x86_64-unknown-linux-static/include/quickjs-bytecode.h +8 -0
  219. package/build/x86_64-unknown-linux-static/include/quickjs-context.h +8 -0
  220. package/build/x86_64-unknown-linux-static/include/quickjs-encoding.h +8 -0
  221. package/build/x86_64-unknown-linux-static/include/quickjs-engine.h +8 -0
  222. package/build/x86_64-unknown-linux-static/include/quickjs-full-init.h +19 -0
  223. package/build/x86_64-unknown-linux-static/include/quickjs-inspect.h +9 -0
  224. package/build/x86_64-unknown-linux-static/include/quickjs-intervals.h +9 -0
  225. package/build/x86_64-unknown-linux-static/include/quickjs-libc.h +65 -0
  226. package/build/x86_64-unknown-linux-static/include/quickjs-modulesys.h +68 -0
  227. package/build/x86_64-unknown-linux-static/include/quickjs-pointer.h +9 -0
  228. package/build/x86_64-unknown-linux-static/include/quickjs-print.h +9 -0
  229. package/build/x86_64-unknown-linux-static/include/quickjs-utils.h +49 -0
  230. package/build/x86_64-unknown-linux-static/include/quickjs.h +1195 -0
  231. package/build/x86_64-unknown-linux-static/lib/quickjs-core.a +0 -0
  232. package/build/x86_64-unknown-linux-static/lib/quickjs-full.a +0 -0
  233. package/package.json +3 -3
  234. package/tsconfig.json +2 -5
  235. package/build/aarch64-apple-darwin/extras/log-argv +0 -0
  236. package/build/aarch64-unknown-linux-gnu/extras/log-argv +0 -0
  237. package/build/aarch64-unknown-linux-musl/extras/log-argv +0 -0
  238. package/build/aarch64-unknown-linux-static/extras/log-argv +0 -0
  239. package/build/x86_64-apple-darwin/extras/log-argv +0 -0
  240. package/build/x86_64-pc-windows-static/extras/log-argv.exe +0 -0
  241. package/build/x86_64-unknown-linux-gnu/extras/log-argv +0 -0
  242. package/build/x86_64-unknown-linux-musl/extras/log-argv +0 -0
  243. package/build/x86_64-unknown-linux-static/extras/log-argv +0 -0
  244. /package/build/dts/{quickjs-libbytecode.d.ts → quickjs-bytecode.d.ts} +0 -0
  245. /package/build/dts/{quickjs-libencoding.d.ts → quickjs-encoding.d.ts} +0 -0
  246. /package/build/dts/{quickjs-libengine.d.ts → quickjs-engine.d.ts} +0 -0
  247. /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.getegid` (wrappers for the libc functions of the same names).
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-ts languages like TypeScript, Coffeescript, etc.
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-libengine`.
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="../quickjs/quickjs.d.ts" />
7
- /// <reference path="../quickjs-libc/quickjs-libc.d.ts" />
8
- /// <reference path="../quickjs-libbytecode/quickjs-libbytecode.d.ts" />
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
@@ -0,0 +1,8 @@
1
+ #ifndef QUICKJS_BYTECODE_H
2
+ #define QUICKJS_BYTECODE_H
3
+
4
+ #include "quickjs.h"
5
+
6
+ JSModuleDef *js_init_module_bytecode(JSContext *ctx, const char *module_name);
7
+
8
+ #endif /* ifndef QUICKJS_BYTECODE_H */
@@ -0,0 +1,8 @@
1
+ #ifndef QUICKJS_CONTEXT_H
2
+ #define QUICKJS_CONTEXT_H
3
+
4
+ #include "quickjs.h"
5
+
6
+ JSModuleDef *js_init_module_context(JSContext *ctx, const char *module_name);
7
+
8
+ #endif /* ifndef QUICKJS_CONTEXT_H */
@@ -0,0 +1,8 @@
1
+ #ifndef QUICKJS_ENCODING_H
2
+ #define QUICKJS_ENCODING_H
3
+
4
+ #include "quickjs.h"
5
+
6
+ JSModuleDef *js_init_module_encoding(JSContext *ctx, const char *module_name);
7
+
8
+ #endif /* ifndef QUICKJS_ENCODING_H */
@@ -0,0 +1,8 @@
1
+ #ifndef QUICKJS_ENGINE_H
2
+ #define QUICKJS_ENGINE_H
3
+
4
+ #include "quickjs.h"
5
+
6
+ JSModuleDef *js_init_module_engine(JSContext *ctx, const char *module_name);
7
+
8
+ #endif /* ifndef QUICKJS_ENGINE_H */
@@ -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,9 @@
1
+ #ifndef QUICKJS_INSPECT_H
2
+ #define QUICKJS_INSPECT_H
3
+
4
+ #include "quickjs.h"
5
+
6
+ /* Adds 'inspect' global */
7
+ int js_inspect_add_inspect_global(JSContext *ctx);
8
+
9
+ #endif /* ifndef QUICKJS_INSPECT_H */
@@ -0,0 +1,9 @@
1
+ #ifndef QUICKJS_INTERVALS_H
2
+ #define QUICKJS_INTERVALS_H
3
+
4
+ #include "quickjs.h"
5
+
6
+ /* Adds 'setInterval' and 'clearInterval' globals */
7
+ int js_intervals_add_setInterval_clearInterval_globals(JSContext *ctx);
8
+
9
+ #endif /* ifndef QUICKJS_INTERVALS_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,9 @@
1
+ #ifndef QUICKJS_POINTER_H
2
+ #define QUICKJS_POINTER_H
3
+
4
+ #include "quickjs.h"
5
+
6
+ JSModuleDef *js_init_module_pointer(JSContext *ctx, const char *module_name);
7
+ JSValue js_new_pointer(JSContext *ctx, void *value);
8
+
9
+ #endif /* ifndef QUICKJS_POINTER_H */
@@ -0,0 +1,9 @@
1
+ #ifndef QUICKJS_PRINT_H
2
+ #define QUICKJS_PRINT_H
3
+
4
+ #include "quickjs.h"
5
+
6
+ void js_print_add_print_global(JSContext *ctx);
7
+ void js_print_add_console_global(JSContext *ctx);
8
+
9
+ #endif /* ifndef QUICKJS_PRINT_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 */