visaljs 0.0.7 → 0.0.9

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 (434) hide show
  1. package/README.md +68 -4
  2. package/THIRD_PARTY_LICENSES +1216 -0
  3. package/cli.js +4461 -321
  4. package/node/include/js_node.h +57 -1
  5. package/node/include/js_uv.h +8 -1
  6. package/node/prelude/_http_agent.js +5 -0
  7. package/node/prelude/_http_server.js +7 -0
  8. package/node/prelude/_stream_duplex.js +4 -0
  9. package/node/prelude/_stream_passthrough.js +4 -0
  10. package/node/prelude/_stream_readable.js +4 -0
  11. package/node/prelude/_stream_transform.js +4 -0
  12. package/node/prelude/_stream_writable.js +4 -0
  13. package/node/prelude/assert.js +1334 -0
  14. package/node/prelude/assert_strict.js +12 -0
  15. package/node/prelude/async_hooks.js +1 -1
  16. package/node/prelude/buffer.js +43 -3
  17. package/node/prelude/child_process.js +1098 -0
  18. package/node/prelude/cluster.js +52 -0
  19. package/node/prelude/console.js +328 -0
  20. package/node/prelude/constants.js +10 -0
  21. package/node/prelude/crypto.js +1 -1
  22. package/node/prelude/diagnostics_channel.js +1 -1
  23. package/node/prelude/dns.js +8 -2
  24. package/node/prelude/domain.js +115 -0
  25. package/node/prelude/events.js +148 -16
  26. package/node/prelude/fs.js +1138 -151
  27. package/node/prelude/fs_promises.js +117 -11
  28. package/node/prelude/http.js +784 -301
  29. package/node/prelude/http2.js +1 -1
  30. package/node/prelude/https.js +159 -0
  31. package/node/prelude/inspector.js +27 -0
  32. package/node/prelude/inspector_promises.js +4 -0
  33. package/node/prelude/internal/async_context.js +1 -1
  34. package/node/prelude/internal/buffer_transcode.js +44 -0
  35. package/node/prelude/internal/comparisons.js +916 -0
  36. package/node/prelude/internal/compression_streams.js +153 -0
  37. package/node/prelude/internal/crypto/asym.js +27 -14
  38. package/node/prelude/internal/crypto/cipher.js +16 -5
  39. package/node/prelude/internal/crypto/diffiehellman.js +3 -2
  40. package/node/prelude/internal/crypto/hash.js +2 -1
  41. package/node/prelude/internal/crypto/kdf.js +14 -9
  42. package/node/prelude/internal/crypto/keys.js +63 -50
  43. package/node/prelude/internal/crypto/random.js +2 -1
  44. package/node/prelude/internal/crypto/util.js +4 -4
  45. package/node/prelude/internal/dotenv.js +98 -0
  46. package/node/prelude/internal/errors.js +21 -5
  47. package/node/prelude/internal/events_extras.js +113 -0
  48. package/node/prelude/internal/events_on.js +100 -0
  49. package/node/prelude/internal/features.js +72 -0
  50. package/node/prelude/internal/fetch.js +364 -0
  51. package/node/prelude/internal/form_data.js +376 -0
  52. package/node/prelude/internal/fs_bigint_stats.js +41 -0
  53. package/node/prelude/internal/fs_blob.js +19 -0
  54. package/node/prelude/internal/fs_cp.js +709 -0
  55. package/node/prelude/internal/fs_dir.js +166 -0
  56. package/node/prelude/internal/fs_filehandle.js +287 -0
  57. package/node/prelude/internal/fs_glob.js +296 -0
  58. package/node/prelude/internal/fs_statfs.js +42 -0
  59. package/node/prelude/internal/fs_stats.js +89 -0
  60. package/node/prelude/internal/fs_streams.js +541 -0
  61. package/node/prelude/internal/fs_utils.js +286 -0
  62. package/node/prelude/internal/fs_watch.js +580 -0
  63. package/node/prelude/internal/http_agent.js +114 -2
  64. package/node/prelude/internal/http_symbols.js +3 -0
  65. package/node/prelude/internal/mime.js +249 -0
  66. package/node/prelude/internal/net.js +1 -0
  67. package/node/prelude/internal/net_bound.js +123 -0
  68. package/node/prelude/internal/net_onread.js +73 -0
  69. package/node/prelude/internal/net_tos.js +54 -0
  70. package/node/prelude/internal/parse_args.js +288 -0
  71. package/node/prelude/internal/perf_histogram.js +435 -0
  72. package/node/prelude/internal/perf_observe.js +125 -0
  73. package/node/prelude/internal/performance_global.js +19 -0
  74. package/node/prelude/internal/process_events.js +49 -1
  75. package/node/prelude/internal/process_memory.js +14 -0
  76. package/node/prelude/internal/process_more.js +414 -0
  77. package/node/prelude/internal/process_signals.js +2 -1
  78. package/node/prelude/internal/process_stdin.js +52 -0
  79. package/node/prelude/internal/process_stdio.js +36 -0
  80. package/node/prelude/internal/querystring.js +0 -0
  81. package/node/prelude/internal/readline.js +338 -0
  82. package/node/prelude/internal/socketaddress.js +8 -4
  83. package/node/prelude/internal/source_map.js +122 -0
  84. package/node/prelude/internal/stream_compose.js +74 -0
  85. package/node/prelude/internal/stream_from.js +6 -0
  86. package/node/prelude/internal/stream_operators.js +23 -0
  87. package/node/prelude/internal/stream_pipeline.js +7 -0
  88. package/node/prelude/internal/stream_transform.js +10 -0
  89. package/node/prelude/internal/stream_web_adapters.js +143 -0
  90. package/node/prelude/internal/streams/add_abort_signal.js +58 -0
  91. package/node/prelude/internal/streams/compose.js +244 -0
  92. package/node/prelude/internal/streams/destroy.js +358 -0
  93. package/node/prelude/internal/streams/duplex.js +199 -0
  94. package/node/prelude/internal/streams/duplexify.js +378 -0
  95. package/node/prelude/internal/streams/end_of_stream.js +387 -0
  96. package/node/prelude/internal/streams/errors.js +216 -0
  97. package/node/prelude/internal/streams/from.js +211 -0
  98. package/node/prelude/internal/streams/legacy.js +120 -0
  99. package/node/prelude/internal/streams/operators.js +375 -0
  100. package/node/prelude/internal/streams/passthrough.js +45 -0
  101. package/node/prelude/internal/streams/pipeline.js +468 -0
  102. package/node/prelude/internal/streams/readable.js +1835 -0
  103. package/node/prelude/internal/streams/state.js +48 -0
  104. package/node/prelude/internal/streams/transform.js +203 -0
  105. package/node/prelude/internal/streams/utils.js +355 -0
  106. package/node/prelude/internal/streams/validators.js +108 -0
  107. package/node/prelude/internal/streams/writable.js +1160 -0
  108. package/node/prelude/internal/structured_clone.js +238 -0
  109. package/node/prelude/internal/system_errors.js +37 -0
  110. package/node/prelude/internal/test_runner/mock.js +431 -0
  111. package/node/prelude/internal/test_runner/reporters.js +404 -0
  112. package/node/prelude/internal/test_runner/test.js +1571 -0
  113. package/node/prelude/internal/timers.js +38 -7
  114. package/node/prelude/internal/timers_global.js +1 -1
  115. package/node/prelude/internal/tls/common.js +8 -2
  116. package/node/prelude/internal/tls/wrap.js +5 -16
  117. package/node/prelude/internal/tls/x509.js +1 -1
  118. package/node/prelude/internal/tty_read_stream.js +39 -0
  119. package/node/prelude/internal/tty_streams.js +3 -0
  120. package/node/prelude/internal/util_debuglog.js +68 -0
  121. package/node/prelude/internal/util_diff.js +63 -0
  122. package/node/prelude/internal/util_more.js +111 -0
  123. package/node/prelude/internal/util_styles.js +76 -0
  124. package/node/prelude/internal/zlib_engines.js +1 -1
  125. package/node/prelude/module.js +219 -8
  126. package/node/prelude/net.js +197 -49
  127. package/node/prelude/os.js +88 -11
  128. package/node/prelude/path.js +11 -7
  129. package/node/prelude/path_posix.js +1 -1
  130. package/node/prelude/path_win32.js +1 -1
  131. package/node/prelude/perf_hooks.js +151 -0
  132. package/node/prelude/process.js +36 -1
  133. package/node/prelude/punycode.js +188 -0
  134. package/node/prelude/querystring.js +1 -1
  135. package/node/prelude/readline.js +8 -0
  136. package/node/prelude/readline_promises.js +88 -0
  137. package/node/prelude/repl.js +38 -0
  138. package/node/prelude/sea.js +23 -0
  139. package/node/prelude/stream.js +70 -1332
  140. package/node/prelude/stream_consumers.js +34 -0
  141. package/node/prelude/stream_promises.js +1 -1
  142. package/node/prelude/stream_web.js +15 -2
  143. package/node/prelude/string_decoder.js +1 -1
  144. package/node/prelude/sys.js +7 -0
  145. package/node/prelude/test.js +56 -0
  146. package/node/prelude/test_reporters.js +269 -0
  147. package/node/prelude/timers.js +7 -84
  148. package/node/prelude/timers_promises.js +1 -1
  149. package/node/prelude/tls.js +2 -1
  150. package/node/prelude/trace_events.js +52 -0
  151. package/node/prelude/tty.js +10 -4
  152. package/node/prelude/url.js +88 -27
  153. package/node/prelude/util.js +121 -5
  154. package/node/prelude/util_types.js +4 -3
  155. package/node/prelude/v8.js +814 -0
  156. package/node/prelude/vm.js +86 -0
  157. package/node/prelude/wasi.js +10 -0
  158. package/node/prelude/worker_threads.js +56 -0
  159. package/node/prelude/zlib.js +58 -25
  160. package/node/src/host_brotli.c +59 -11
  161. package/node/src/host_fs.c +342 -11
  162. package/node/src/host_fswatch.c +170 -0
  163. package/node/src/host_http.c +292 -39
  164. package/node/src/host_loop.c +25 -2
  165. package/node/src/host_net.c +130 -16
  166. package/node/src/host_os.c +55 -1
  167. package/node/src/host_proc.c +291 -0
  168. package/node/src/host_process.c +488 -0
  169. package/node/src/host_sys.c +64 -2
  170. package/node/src/host_zlib.c +27 -7
  171. package/node/src/host_zstd.c +41 -6
  172. package/node/third_party/hdrhistogram/LICENSE +42 -0
  173. package/node/third_party/hdrhistogram/README.md +5 -0
  174. package/node/third_party/libuv/LICENSE +0 -0
  175. package/node/third_party/libuv/LICENSE-extra +36 -0
  176. package/node/third_party/libuv/include/uv/aix.h +0 -0
  177. package/node/third_party/libuv/include/uv/bsd.h +0 -0
  178. package/node/third_party/libuv/include/uv/darwin.h +0 -0
  179. package/node/third_party/libuv/include/uv/errno.h +0 -0
  180. package/node/third_party/libuv/include/uv/linux.h +0 -0
  181. package/node/third_party/libuv/include/uv/os390.h +0 -0
  182. package/node/third_party/libuv/include/uv/posix.h +0 -0
  183. package/node/third_party/libuv/include/uv/sunos.h +0 -0
  184. package/node/third_party/libuv/include/uv/threadpool.h +0 -0
  185. package/node/third_party/libuv/include/uv/tree.h +0 -0
  186. package/node/third_party/libuv/include/uv/unix.h +0 -0
  187. package/node/third_party/libuv/include/uv/version.h +0 -0
  188. package/node/third_party/libuv/include/uv/win.h +0 -0
  189. package/node/third_party/libuv/include/uv.h +0 -0
  190. package/node/third_party/libuv/src/fs-poll.c +0 -0
  191. package/node/third_party/libuv/src/heap-inl.h +0 -0
  192. package/node/third_party/libuv/src/idna.c +0 -0
  193. package/node/third_party/libuv/src/idna.h +0 -0
  194. package/node/third_party/libuv/src/inet.c +0 -0
  195. package/node/third_party/libuv/src/queue.h +0 -0
  196. package/node/third_party/libuv/src/random.c +0 -0
  197. package/node/third_party/libuv/src/strscpy.c +0 -0
  198. package/node/third_party/libuv/src/strscpy.h +0 -0
  199. package/node/third_party/libuv/src/strtok.c +0 -0
  200. package/node/third_party/libuv/src/strtok.h +0 -0
  201. package/node/third_party/libuv/src/thread-common.c +0 -0
  202. package/node/third_party/libuv/src/threadpool.c +0 -0
  203. package/node/third_party/libuv/src/timer.c +0 -0
  204. package/node/third_party/libuv/src/unix/async.c +0 -0
  205. package/node/third_party/libuv/src/unix/bsd-ifaddrs.c +0 -0
  206. package/node/third_party/libuv/src/unix/core.c +0 -0
  207. package/node/third_party/libuv/src/unix/darwin-proctitle.c +0 -0
  208. package/node/third_party/libuv/src/unix/darwin-stub.h +0 -0
  209. package/node/third_party/libuv/src/unix/darwin-syscalls.h +0 -0
  210. package/node/third_party/libuv/src/unix/darwin.c +0 -0
  211. package/node/third_party/libuv/src/unix/dl.c +0 -0
  212. package/node/third_party/libuv/src/unix/fs.c +0 -0
  213. package/node/third_party/libuv/src/unix/fsevents.c +0 -0
  214. package/node/third_party/libuv/src/unix/getaddrinfo.c +0 -0
  215. package/node/third_party/libuv/src/unix/getnameinfo.c +0 -0
  216. package/node/third_party/libuv/src/unix/internal.h +0 -0
  217. package/node/third_party/libuv/src/unix/kqueue.c +0 -0
  218. package/node/third_party/libuv/src/unix/linux.c +0 -0
  219. package/node/third_party/libuv/src/unix/loop-watcher.c +0 -0
  220. package/node/third_party/libuv/src/unix/loop.c +0 -0
  221. package/node/third_party/libuv/src/unix/pipe.c +0 -0
  222. package/node/third_party/libuv/src/unix/poll.c +0 -0
  223. package/node/third_party/libuv/src/unix/process.c +0 -0
  224. package/node/third_party/libuv/src/unix/procfs-exepath.c +0 -0
  225. package/node/third_party/libuv/src/unix/proctitle.c +0 -0
  226. package/node/third_party/libuv/src/unix/random-devurandom.c +0 -0
  227. package/node/third_party/libuv/src/unix/random-getentropy.c +0 -0
  228. package/node/third_party/libuv/src/unix/random-getrandom.c +0 -0
  229. package/node/third_party/libuv/src/unix/random-sysctl-linux.c +0 -0
  230. package/node/third_party/libuv/src/unix/signal.c +0 -0
  231. package/node/third_party/libuv/src/unix/stream.c +0 -0
  232. package/node/third_party/libuv/src/unix/tcp.c +0 -0
  233. package/node/third_party/libuv/src/unix/thread.c +0 -0
  234. package/node/third_party/libuv/src/unix/tty.c +0 -0
  235. package/node/third_party/libuv/src/unix/udp.c +0 -0
  236. package/node/third_party/libuv/src/uv-common.c +0 -0
  237. package/node/third_party/libuv/src/uv-common.h +0 -0
  238. package/node/third_party/libuv/src/uv-data-getter-setters.c +0 -0
  239. package/node/third_party/libuv/src/version.c +0 -0
  240. package/node/third_party/llhttp/LICENSE +0 -0
  241. package/node/third_party/llhttp/api.c +0 -0
  242. package/node/third_party/llhttp/http.c +0 -0
  243. package/node/third_party/llhttp/llhttp.c +0 -0
  244. package/node/third_party/llhttp/llhttp.h +0 -0
  245. package/node/third_party/nodejs/LICENSE +47 -0
  246. package/node/third_party/nodejs/README.md +5 -0
  247. package/node/third_party/parseargs/LICENSE +21 -0
  248. package/node/third_party/parseargs/README.md +5 -0
  249. package/node/third_party/punycode/LICENSE +20 -0
  250. package/node/third_party/punycode/README.md +5 -0
  251. package/node/third_party/zlib/LICENSE.chromium +27 -0
  252. package/package.json +1 -1
  253. package/prebuilt/darwin-arm64/boringssl-4a47438eaf7e73ba.a +0 -0
  254. package/prebuilt/darwin-arm64/brotli-7995bbdacc52e51c.a +0 -0
  255. package/prebuilt/darwin-arm64/uv-72ab666eae197cd8.a +0 -0
  256. package/prebuilt/darwin-arm64/zlib-4ce2317a4c3f5fb5.a +0 -0
  257. package/prebuilt/darwin-arm64/zstd-015315ac7c784c73.a +0 -0
  258. package/prebuilt/darwin-x64/boringssl-4a47438eaf7e73ba.a +0 -0
  259. package/prebuilt/darwin-x64/brotli-7995bbdacc52e51c.a +0 -0
  260. package/prebuilt/darwin-x64/uv-72ab666eae197cd8.a +0 -0
  261. package/prebuilt/darwin-x64/zlib-4ce2317a4c3f5fb5.a +0 -0
  262. package/prebuilt/darwin-x64/zstd-015315ac7c784c73.a +0 -0
  263. package/prebuilt/linux-arm64/boringssl-4a47438eaf7e73ba.a +0 -0
  264. package/prebuilt/linux-arm64/brotli-65481ff838ce9def.a +0 -0
  265. package/prebuilt/linux-arm64/uv-f1353f50ff983f3c.a +0 -0
  266. package/prebuilt/linux-arm64/zlib-4ce2317a4c3f5fb5.a +0 -0
  267. package/prebuilt/linux-arm64/zstd-015315ac7c784c73.a +0 -0
  268. package/prebuilt/linux-arm64-musl/boringssl-4a47438eaf7e73ba.a +0 -0
  269. package/prebuilt/linux-arm64-musl/brotli-65481ff838ce9def.a +0 -0
  270. package/prebuilt/linux-arm64-musl/uv-f1353f50ff983f3c.a +0 -0
  271. package/prebuilt/linux-arm64-musl/zlib-4ce2317a4c3f5fb5.a +0 -0
  272. package/prebuilt/linux-arm64-musl/zstd-015315ac7c784c73.a +0 -0
  273. package/prebuilt/linux-x64/boringssl-4a47438eaf7e73ba.a +0 -0
  274. package/prebuilt/linux-x64/brotli-65481ff838ce9def.a +0 -0
  275. package/prebuilt/linux-x64/uv-f1353f50ff983f3c.a +0 -0
  276. package/prebuilt/linux-x64/zlib-4ce2317a4c3f5fb5.a +0 -0
  277. package/prebuilt/linux-x64/zstd-015315ac7c784c73.a +0 -0
  278. package/prebuilt/linux-x64-musl/boringssl-4a47438eaf7e73ba.a +0 -0
  279. package/prebuilt/linux-x64-musl/brotli-65481ff838ce9def.a +0 -0
  280. package/prebuilt/linux-x64-musl/uv-f1353f50ff983f3c.a +0 -0
  281. package/prebuilt/linux-x64-musl/zlib-4ce2317a4c3f5fb5.a +0 -0
  282. package/prebuilt/linux-x64-musl/zstd-015315ac7c784c73.a +0 -0
  283. package/prebuilt/win32-x64/boringssl-ce573858472b7fc9.a +0 -0
  284. package/prebuilt/win32-x64/brotli-20d86a61f30baeb3.a +0 -0
  285. package/prebuilt/win32-x64/uv-b11bae65d7fced82.a +0 -0
  286. package/prebuilt/win32-x64/zlib-4ce2317a4c3f5fb5.a +0 -0
  287. package/prebuilt/win32-x64/zstd-015315ac7c784c73.a +0 -0
  288. package/runtime/include/js_atoms.gen.h +0 -0
  289. package/runtime/include/js_atoms.h +5 -1
  290. package/runtime/include/js_bigint.h +1 -1
  291. package/runtime/include/js_buffer.h +4 -4
  292. package/runtime/include/js_builtins.h +41 -3
  293. package/runtime/include/js_console.h +9 -4
  294. package/runtime/include/js_convert.h +1 -1
  295. package/runtime/include/js_core.def +5 -4
  296. package/runtime/include/js_crypto.h +1 -1
  297. package/runtime/include/js_error.h +1 -1
  298. package/runtime/include/js_exception.h +21 -1
  299. package/runtime/include/js_function.h +33 -9
  300. package/runtime/include/js_gc.h +172 -30
  301. package/runtime/include/js_generator.h +2 -2
  302. package/runtime/include/js_host.h +19 -1
  303. package/runtime/include/js_jobs.h +5 -5
  304. package/runtime/include/js_module.h +1 -1
  305. package/runtime/include/js_object.h +142 -15
  306. package/runtime/include/js_ops.h +107 -5
  307. package/runtime/include/js_promise.h +3 -3
  308. package/runtime/include/js_regexp.h +1 -1
  309. package/runtime/include/js_runtime.h +0 -0
  310. package/runtime/include/js_symbol.h +1 -1
  311. package/runtime/include/js_web.h +5 -1
  312. package/runtime/include/jscell.h +22 -15
  313. package/runtime/include/jscontext.h +82 -39
  314. package/runtime/include/jsnum.h +1 -1
  315. package/runtime/include/jsstring.h +19 -6
  316. package/runtime/include/jsvalue.h +7 -3
  317. package/runtime/src/arguments.c +2 -2
  318. package/runtime/src/array.c +4 -1
  319. package/runtime/src/arraybuffer.c +19 -7
  320. package/runtime/src/async_iter.c +4 -3
  321. package/runtime/src/atoms.c +38 -4
  322. package/runtime/src/base64.c +2 -2
  323. package/runtime/src/bigint.c +1 -1
  324. package/runtime/src/blob.c +22 -9
  325. package/runtime/src/boringssl_support.cc +1 -1
  326. package/runtime/src/buffer.c +299 -91
  327. package/runtime/src/builtin_table.c +1 -1
  328. package/runtime/src/builtins.c +30 -4
  329. package/runtime/src/builtins_util.h +0 -0
  330. package/runtime/src/collections.c +18 -3
  331. package/runtime/src/components.c +1 -1
  332. package/runtime/src/console.c +14 -7
  333. package/runtime/src/convert.c +0 -0
  334. package/runtime/src/core_all.c +1 -1
  335. package/runtime/src/crypto.c +1 -1
  336. package/runtime/src/crypto_asym.c +1 -1
  337. package/runtime/src/crypto_bn.c +1 -1
  338. package/runtime/src/crypto_cipher.c +10 -3
  339. package/runtime/src/crypto_hash.c +1 -1
  340. package/runtime/src/crypto_host.c +1 -1
  341. package/runtime/src/crypto_internal.h +1 -1
  342. package/runtime/src/crypto_kdf.c +1 -1
  343. package/runtime/src/crypto_key.c +14 -1
  344. package/runtime/src/crypto_pkey.c +1 -1
  345. package/runtime/src/crypto_subtle.c +142 -58
  346. package/runtime/src/crypto_tls.c +1 -1
  347. package/runtime/src/date.c +5 -2
  348. package/runtime/src/domexception.c +2 -2
  349. package/runtime/src/elements.c +56 -17
  350. package/runtime/src/elements.h +7 -2
  351. package/runtime/src/encoding.c +1 -1
  352. package/runtime/src/error.c +4 -4
  353. package/runtime/src/events.c +42 -14
  354. package/runtime/src/exception.c +1 -1
  355. package/runtime/src/fetch.c +241 -17
  356. package/runtime/src/function.c +31 -19
  357. package/runtime/src/gc.c +1720 -211
  358. package/runtime/src/gc_visit.h +87 -0
  359. package/runtime/src/generator.c +5 -3
  360. package/runtime/src/global.c +14 -6
  361. package/runtime/src/headers.c +10 -10
  362. package/runtime/src/inspect.c +76 -17
  363. package/runtime/src/internal.h +9 -6
  364. package/runtime/src/iterate.c +94 -2
  365. package/runtime/src/iterator.c +1 -1
  366. package/runtime/src/jobs.c +11 -5
  367. package/runtime/src/jsnum.c +2 -2
  368. package/runtime/src/json.c +1 -1
  369. package/runtime/src/math.c +9 -1
  370. package/runtime/src/module.c +3 -3
  371. package/runtime/src/number.c +0 -0
  372. package/runtime/src/object.c +107 -74
  373. package/runtime/src/ops.c +21 -3
  374. package/runtime/src/os.c +192 -1
  375. package/runtime/src/os.h +33 -2
  376. package/runtime/src/process.c +73 -8
  377. package/runtime/src/promise.c +4 -4
  378. package/runtime/src/proxy.c +1 -1
  379. package/runtime/src/reflect.c +1 -1
  380. package/runtime/src/regexp.c +700 -11
  381. package/runtime/src/regexp_anchor.h +1 -1
  382. package/runtime/src/regexp_message.h +1 -1
  383. package/runtime/src/shape.c +78 -20
  384. package/runtime/src/shape.h +0 -0
  385. package/runtime/src/streams.c +22 -8
  386. package/runtime/src/streams.h +0 -0
  387. package/runtime/src/string.c +64 -25
  388. package/runtime/src/string_builtins.c +7 -7
  389. package/runtime/src/symbol.c +2 -7
  390. package/runtime/src/test_host.c +3 -3
  391. package/runtime/src/tls_roots.gen.h +102 -620
  392. package/runtime/src/typedarray.c +8 -3
  393. package/runtime/src/tznames.gen.h +2 -1
  394. package/runtime/src/uri.c +1 -1
  395. package/runtime/src/url.c +42 -39
  396. package/runtime/src/weak.c +110 -36
  397. package/runtime/src/web.c +21 -3
  398. package/runtime/src/wrapper.c +0 -0
  399. package/runtime/src/writable.c +7 -6
  400. package/runtime/third_party/ada-idna/LICENSE-MIT +0 -0
  401. package/runtime/third_party/ada-idna/README.md +7 -7
  402. package/runtime/third_party/ada-idna/convert.mjs +89 -27
  403. package/runtime/third_party/ada-idna/idna.c +30 -31
  404. package/runtime/third_party/ada-idna/idna.h +0 -0
  405. package/runtime/third_party/ada-idna/idna_tables.h +2272 -1952
  406. package/runtime/third_party/boringssl/third_party/fiat/LICENSE +15 -0
  407. package/runtime/third_party/mozilla-ca/LICENSE +373 -0
  408. package/runtime/third_party/mozilla-ca/README.md +9 -0
  409. package/runtime/third_party/nodejs/LICENSE +47 -0
  410. package/runtime/third_party/nodejs/README.md +7 -0
  411. package/runtime/third_party/quickjs-dtoa/LICENSE +0 -0
  412. package/runtime/third_party/quickjs-dtoa/README.md +1 -1
  413. package/runtime/third_party/quickjs-dtoa/dtoa.c +0 -0
  414. package/runtime/third_party/quickjs-dtoa/dtoa.h +0 -0
  415. package/runtime/third_party/quickjs-dtoa/dtoa_compat.h +0 -0
  416. package/runtime/third_party/quickjs-regexp/LICENSE +0 -0
  417. package/runtime/third_party/quickjs-regexp/README.md +2 -2
  418. package/runtime/third_party/quickjs-regexp/cutils.c +0 -0
  419. package/runtime/third_party/quickjs-regexp/cutils.h +0 -0
  420. package/runtime/third_party/quickjs-regexp/libregexp-opcode.h +0 -0
  421. package/runtime/third_party/quickjs-regexp/libregexp.c +0 -0
  422. package/runtime/third_party/quickjs-regexp/libregexp.h +0 -0
  423. package/runtime/third_party/quickjs-regexp/libunicode-table.h +0 -0
  424. package/runtime/third_party/quickjs-regexp/libunicode.c +0 -0
  425. package/runtime/third_party/quickjs-regexp/libunicode.h +0 -0
  426. package/runtime/third_party/unicode/LICENSE +39 -0
  427. package/runtime/third_party/unicode/README.md +9 -0
  428. package/runtime/third_party/v8-ieee754/LICENSE +0 -0
  429. package/runtime/third_party/v8-ieee754/LICENSE.fdlibm +10 -0
  430. package/runtime/third_party/v8-ieee754/README.md +3 -2
  431. package/runtime/third_party/v8-ieee754/convert.py +0 -0
  432. package/runtime/third_party/v8-ieee754/ieee754.c +0 -0
  433. package/runtime/third_party/v8-ieee754/ieee754.h +0 -0
  434. package/runtime/tools/regexp_compile.c +2 -2
@@ -1,21 +1,97 @@
1
1
  // Generates idna_tables.h from Ada's ada_idna.cpp (the single-file IDNA of ada-url/ada, the
2
2
  // version Node bundles): the UTS #46 mapping table and the label-validity data, packed for C.
3
+ // Ada 4 keeps its tables in a raw-DEFLATE blob, read here as Ada reads it: a two-level table
4
+ // (64 code points a block) of statuses and UTF-8 mappings, bidi ranges and combining ranges.
3
5
  //
4
6
  // node runtime/third_party/ada-idna/convert.mjs <ada>/src/ada_idna.cpp
7
+ import { Buffer } from "node:buffer";
5
8
  import { readFileSync, writeFileSync } from "node:fs";
6
9
  import { join } from "node:path";
7
10
  import process from "node:process";
11
+ import { inflateRawSync } from "node:zlib";
8
12
 
9
13
  const source = readFileSync(process.argv[2], "utf8");
10
14
  const version = /\/\/ IDNA\s+([\d.]+)/.exec(source)[1];
11
15
 
16
+ /** A `constexpr` number of the source, by name. */
17
+ function constant(name) {
18
+ const m = new RegExp(`constexpr\\s+(?:size_t|uint32_t|uint16_t)\\s+${name}\\s*=\\s*(0x[0-9a-fA-F]+|\\d+)u?;`).exec(source);
19
+ if (!m) throw new Error(`no constant ${name}`);
20
+ return Number(m[1]);
21
+ }
22
+
12
23
  /** The numbers of the C++ array `name` (comments dropped). */
13
24
  function array(name) {
14
- const m = new RegExp(`\\b${name}\\[[^\\]]*\\](?:\\[[^\\]]*\\])?\\s*=\\s*\\{([\\s\\S]*?)\\};`).exec(source);
25
+ const m = new RegExp(`\\b${name}\\[[^\\]]*\\]\\s*=\\s*\\{([\\s\\S]*?)\\};`).exec(source);
15
26
  if (!m) throw new Error(`no array ${name}`);
16
27
  return m[1].replace(/\/\/.*$/gm, "").match(/0x[0-9a-fA-F]+|\d+/g).map(Number);
17
28
  }
18
29
 
30
+ /* the blob: inflated, little-endian sections at the offsets Ada names */
31
+ const blob = inflateRawSync(Buffer.from(array("compressed")));
32
+ if (blob.length !== constant("uncompressed_size")) throw new Error("the inflated tables aren't Ada's size");
33
+ const section = (name, size) => {
34
+ const at = constant(`off_${name}`), count = constant(`count_${name}`);
35
+ const read = { 1: (i) => blob[at + i], 2: (i) => blob.readUInt16LE(at + 2 * i), 4: (i) => blob.readUInt32LE(at + 4 * i),
36
+ 8: (i) => blob.readBigUInt64LE(at + 8 * i) }[size];
37
+ return Array.from({ length: count }, (_, i) => read(i));
38
+ };
39
+
40
+ /* ---- the mapping: each code point's status, and its mapping when mapped ---------------------- */
41
+
42
+ const VALID = 0xffff, DISALLOWED = 0xfffe, IGNORED = 0, BOOL_FLAG = 0x8000;
43
+ const stage1 = section("idna_stage1", 2);
44
+ const stage2 = section("idna_stage2", 2);
45
+ const boolBlocks = section("idna_bool_blocks", 8);
46
+ const utf8 = section("idna_utf8_mappings", 1);
47
+ const LOW_END = constant("IDNA_LOW_RANGE_END");
48
+ const HIGH_IGNORED_START = constant("IDNA_HIGH_IGNORED_START");
49
+ const HIGH_IGNORED_END = constant("IDNA_HIGH_IGNORED_END");
50
+
51
+ /** Ada's idna_lookup: VALID, DISALLOWED, IGNORED, or an offset into the UTF-8 mappings. */
52
+ function lookup(cp) {
53
+ if (cp < LOW_END) {
54
+ const ref = stage1[cp >> 6];
55
+ if (ref & BOOL_FLAG) {
56
+ const bit = (ref & ~BOOL_FLAG) * 64 + (cp & 63);
57
+ return (boolBlocks[bit >> 6] >> BigInt(bit & 63)) & 1n ? VALID : DISALLOWED;
58
+ }
59
+ return stage2[ref + (cp & 63)];
60
+ }
61
+ return cp >= HIGH_IGNORED_START && cp < HIGH_IGNORED_END ? IGNORED : DISALLOWED;
62
+ }
63
+
64
+ /** The code points of the NUL-terminated UTF-8 mapping at `at`. */
65
+ function mappingAt(at) {
66
+ let end = at;
67
+ while (utf8[end] !== 0) end++;
68
+ return [...Buffer.from(utf8.slice(at, end)).toString("utf8")].map((c) => c.codePointAt(0));
69
+ }
70
+
71
+ /* ranges of equal status (and, mapped, equal mapping), as idna.c reads them: status 0 ignored,
72
+ 1 valid, 2 disallowed, 3 mapped */
73
+ const entries = [];
74
+ for (let cp = 0; cp <= 0x10ffff; cp++) {
75
+ const v = lookup(cp);
76
+ const status = v === VALID ? 1 : v === DISALLOWED ? 2 : v === IGNORED ? 0 : 3;
77
+ const mapping = status === 3 ? mappingAt(v) : null;
78
+ const last = entries[entries.length - 1];
79
+ if (last && last.status === status && (status !== 3 || last.mapping.join() === mapping.join())) continue;
80
+ entries.push({ first: cp, status, mapping });
81
+ }
82
+ const mappings = [];
83
+ const keys = [];
84
+ const indices = [];
85
+ for (const { first, status, mapping } of entries) {
86
+ if (first >= 1 << 21 || (mapping && mapping.length >= 32)) throw new Error("table entry out of range");
87
+ keys.push((first | (status << 21) | ((mapping ? mapping.length : 0) << 23)) >>> 0);
88
+ indices.push(mapping ? mappings.length : 0);
89
+ if (mapping) mappings.push(...mapping);
90
+ }
91
+ if (mappings.length > 0xffff) throw new Error("mappings past a 16-bit index");
92
+
93
+ /* ---- label validity ----------------------------------------------------------------------- */
94
+
19
95
  /** Sorted code points as [first, last] ranges. */
20
96
  function ranges(points) {
21
97
  const out = [];
@@ -34,28 +110,14 @@ function rows(values, perLine, hex = true) {
34
110
  return lines.join("\n");
35
111
  }
36
112
 
37
- /* table[i] = { first code point, descriptor }: code (0 ignored, 1 valid, 2 disallowed, 3 mapped)
38
- * in the low byte; for a mapping, its index in `mappings` (bits 8-23) and length (bits 24-31).
39
- * Packed: first | code << 21 | length << 23, and the index apart. */
40
- const table = array("table");
41
- const keys = [];
42
- const indices = [];
43
- for (let i = 0; i < table.length; i += 2) {
44
- const [first, d] = [table[i], table[i + 1]];
45
- const code = d & 0xff;
46
- const mapped = code > 2;
47
- if (first >= 1 << 21 || (mapped && d >>> 24 >= 32)) throw new Error("table entry out of range");
48
- keys.push((first | ((mapped ? 3 : code) << 21) | ((mapped ? d >>> 24 : 0) << 23)) >>> 0);
49
- indices.push(mapped ? (d >>> 8) & 0xffff : 0);
50
- }
51
- const mappings = array("mappings");
52
-
53
- /* the bidi classes, in Ada's enum order */
54
- const DIRECTIONS = ["NONE", "BN", "CS", "ES", "ON", "EN", "L", "R", "NSM", "AL", "AN", "ET", "WS", "RLO", "LRO", "PDF", "RLE", "RLI", "FSI", "PDI", "LRI", "B", "S", "LRE"];
55
- const dirSource = /dir_table\[\]\s*=\s*\{([\s\S]*?)\};/.exec(source)[1];
56
- const dirs = [...dirSource.matchAll(/\{(0x[0-9a-f]+),\s*(0x[0-9a-f]+),\s*direction::(\w+)\}/g)].map((m) => [Number(m[1]), Number(m[2]), DIRECTIONS.indexOf(m[3])]);
57
-
58
- const sets = Object.fromEntries(["combining", "virama", "R", "L", "D"].map((n) => [n, ranges(array(`static uint32_t ${n}`))]));
113
+ /* the bidi classes: Ada's ranges, in its enum's order (idna.c's enum idna_direction) */
114
+ const dirFirst = section("dir_start", 4);
115
+ const dirLast = section("dir_final", 4);
116
+ const dirClass = section("dir_value", 1);
117
+ const combiningFlat = section("combining_flat", 4);
118
+ const combining = [];
119
+ for (let i = 0; i < combiningFlat.length; i += 2) combining.push([combiningFlat[i], combiningFlat[i + 1]]);
120
+ const sets = { combining, ...Object.fromEntries(["virama", "R", "L", "D"].map((n) => [n, ranges(array(`constexpr static uint32_t ${n}`))])) };
59
121
 
60
122
  const out = [];
61
123
  out.push(`/* Generated by runtime/third_party/ada-idna/convert.mjs from Ada's ada_idna.cpp (IDNA ${version}). Do not edit.`);
@@ -70,10 +132,10 @@ out.push(`static const uint16_t idna_table_index[${indices.length}] = {\n${rows(
70
132
  out.push(`static const uint32_t idna_mappings[${mappings.length}] = {\n${rows(mappings, 10)}\n};`);
71
133
  out.push("");
72
134
  out.push("/* Bidi classes (RFC 5893), as Ada's ranges: first, last, class (enum idna_direction). */");
73
- out.push(`#define IDNA_DIR_COUNT ${dirs.length}`);
74
- out.push(`static const uint32_t idna_dir_first[${dirs.length}] = {\n${rows(dirs.map((d) => d[0]), 10)}\n};`);
75
- out.push(`static const uint32_t idna_dir_last[${dirs.length}] = {\n${rows(dirs.map((d) => d[1]), 10)}\n};`);
76
- out.push(`static const uint8_t idna_dir_class[${dirs.length}] = {\n${rows(dirs.map((d) => d[2]), 24, false)}\n};`);
135
+ out.push(`#define IDNA_DIR_COUNT ${dirFirst.length}`);
136
+ out.push(`static const uint32_t idna_dir_first[${dirFirst.length}] = {\n${rows(dirFirst, 10)}\n};`);
137
+ out.push(`static const uint32_t idna_dir_last[${dirLast.length}] = {\n${rows(dirLast, 10)}\n};`);
138
+ out.push(`static const uint8_t idna_dir_class[${dirClass.length}] = {\n${rows(dirClass, 24, false)}\n};`);
77
139
  out.push("");
78
140
  out.push("/* Code point sets of the label-validity rules, as sorted [first, last] ranges. */");
79
141
  for (const [name, rs] of Object.entries(sets)) {
@@ -1,5 +1,5 @@
1
- /* UTS #46 domain to ASCII: a C port of Ada's IDNA (src/ada_idna.cpp of ada-url/ada 2.9.2, the
2
- * version Node v22 bundles; mapping.cpp, punycode.cpp, validity.cpp and to_ascii.cpp), kept
1
+ /* UTS #46 domain to ASCII: a C port of Ada's IDNA (src/ada_idna.cpp of ada-url/ada 4.0.0, the
2
+ * version Node v24 bundles; mapping.cpp, punycode.cpp, validity.cpp and to_ascii.cpp), kept
3
3
  * step for step, including Ada's quirks, so that hosts come out as Node's do. Copyright Yagiz
4
4
  * Nizipli and Daniel Lemire; MIT license (LICENSE-MIT). visaljs's changes: C instead of C++
5
5
  * (code point buffers instead of std::u32string), tables packed by convert.mjs, and
@@ -182,6 +182,8 @@ static bool punycode_to_utf32(const char *input, size_t len, U32 *out) {
182
182
  written_out++;
183
183
  ++i;
184
184
  }
185
+ /* a label that decodes to an xn-- label (encoded twice) is refused: whatwg/url#803 */
186
+ if (out->n >= 4 && out->v[0] == 'x' && out->v[1] == 'n' && out->v[2] == '-' && out->v[3] == '-') return false;
185
187
  return true;
186
188
  }
187
189
 
@@ -196,7 +198,7 @@ static bool utf32_to_punycode(const uint32_t *input, size_t len, Bytes *out) {
196
198
  ++h;
197
199
  bytes_push(out, (char)c);
198
200
  }
199
- if (c > 0x10ffff || (c >= 0xd880 && c < 0xe000)) return false; /* sic: Ada's bound */
201
+ if (c > 0x10ffff || (c >= 0xd800 && c < 0xe000)) return false;
200
202
  }
201
203
  size_t b = h;
202
204
  if (b > 0) bytes_push(out, '-');
@@ -289,14 +291,18 @@ static bool is_label_valid(const uint32_t *label, size_t n) {
289
291
  unsigned directions = 0;
290
292
  for (size_t i = 0; i < n; i++) directions |= 1u << find_direction(label[i]);
291
293
  if (!(directions & ((1u << DIR_R) | (1u << DIR_AL) | (1u << DIR_AN)))) return true;
292
- if (find_direction(label[0]) == DIR_L) { /* LTR; Ada checks up to the last non-NSM, exclusive */
293
- for (size_t i = 0; i < last_non_nsm; i++) {
294
+ if (find_direction(label[0]) == DIR_L) { /* LTR */
295
+ for (size_t i = 0; i <= last_non_nsm; i++) {
294
296
  int d = find_direction(label[i]);
295
297
  if (!(d == DIR_L || d == DIR_EN || d == DIR_ES || d == DIR_CS || d == DIR_ET || d == DIR_ON || d == DIR_BN || d == DIR_NSM))
296
298
  return false;
297
299
  }
298
- return true;
300
+ int last = find_direction(label[last_non_nsm]);
301
+ return last == DIR_L || last == DIR_EN;
299
302
  }
303
+ /* RTL: it must begin with R or AL (a leading AN, or anything else, doesn't start one) */
304
+ int first = find_direction(label[0]);
305
+ if (first != DIR_R && first != DIR_AL) return false;
300
306
  bool has_an = false, has_en = false;
301
307
  for (size_t i = 0; i <= last_non_nsm; i++) {
302
308
  int d = find_direction(label[i]);
@@ -318,11 +324,16 @@ static bool is_label_valid(const uint32_t *label, size_t n) {
318
324
 
319
325
  /* ---- To ASCII (to_ascii.cpp) --------------------------------------------------------------- */
320
326
 
321
- /* An xn-- label (its punycode after the prefix): it must decode, be mapped and normalized
322
- * already, and be valid. */
327
+ /* An xn-- label of a domain that isn't all ASCII (its punycode after the prefix): it must decode
328
+ * to something not ASCII, be mapped and normalized already, and be valid. */
323
329
  static bool check_punycode_label(const char *puny, size_t len) {
324
330
  U32 decoded = { 0 }, mapped = { 0 }, normal = { 0 };
325
331
  bool ok = punycode_to_utf32(puny, len, &decoded);
332
+ if (ok) {
333
+ bool ascii = true;
334
+ for (size_t i = 0; i < decoded.n && ascii; i++) ascii = decoded.v[i] < 0x80;
335
+ ok = !ascii;
336
+ }
326
337
  if (ok) {
327
338
  map(decoded.v, decoded.n, &mapped);
328
339
  ok = u32_equal(decoded.v, decoded.n, mapped.v, mapped.n);
@@ -338,36 +349,24 @@ static bool check_punycode_label(const char *puny, size_t len) {
338
349
  return ok;
339
350
  }
340
351
 
352
+ /* An ASCII domain: lowercased, as the URL standard's domain to ASCII (beStrict false) has it,
353
+ * whatever its labels (xn-- ones aren't checked) */
341
354
  static char *from_ascii_to_ascii(const uint32_t *domain, size_t n, size_t *out_len) {
342
- Bytes mapped = { 0 }, out = { 0 };
343
- for (size_t i = 0; i < n; i++) bytes_push(&mapped, (char)(domain[i] >= 'A' && domain[i] <= 'Z' ? domain[i] + 32 : domain[i]));
344
- size_t label_start = 0;
345
- while (label_start != mapped.n) {
346
- const char *dot = memchr(mapped.v + label_start, '.', mapped.n - label_start);
347
- bool last = dot == NULL;
348
- size_t label_size = last ? mapped.n - label_start : (size_t)(dot - (mapped.v + label_start));
349
- const char *label = mapped.v + label_start;
350
- label_start += last ? label_size : label_size + 1;
351
- if (label_size >= 4 && memcmp(label, "xn--", 4) == 0) {
352
- bytes_append(&out, label, label_size);
353
- if (!check_punycode_label(label + 4, label_size - 4)) goto fail;
354
- } else {
355
- bytes_append(&out, label, label_size);
356
- }
357
- if (!last) bytes_push(&out, '.');
355
+ Bytes out = { 0 };
356
+ for (size_t i = 0; i < n; i++) bytes_push(&out, (char)(domain[i] >= 'A' && domain[i] <= 'Z' ? domain[i] + 32 : domain[i]));
357
+ if (out.n == 0) {
358
+ free(out.v);
359
+ return NULL;
358
360
  }
359
- free(mapped.v);
360
- if (out.n == 0) goto fail_out;
361
361
  *out_len = out.n;
362
362
  return out.v;
363
- fail:
364
- free(mapped.v);
365
- fail_out:
366
- free(out.v);
367
- return NULL;
368
363
  }
369
364
 
370
365
  char *idna_to_ascii(const uint32_t *domain, size_t n, size_t *out_len) {
366
+ /* Ada's bound on the input, in UTF-8 bytes */
367
+ size_t bytes = 0;
368
+ for (size_t i = 0; i < n; i++) bytes += domain[i] < 0x80 ? 1 : domain[i] < 0x800 ? 2 : domain[i] < 0x10000 ? 3 : 4;
369
+ if (bytes > 16384) return NULL;
371
370
  bool ascii = true;
372
371
  for (size_t i = 0; i < n && ascii; i++) ascii = domain[i] < 0x80;
373
372
  if (ascii) return from_ascii_to_ascii(domain, n, out_len);
File without changes