visaljs 0.0.0-stage → 0.0.2

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 (520) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +45 -2
  3. package/cli.js +8084 -0
  4. package/node/include/js_node.h +46 -0
  5. package/node/prelude/async_hooks.js +88 -0
  6. package/node/prelude/buffer.js +31 -0
  7. package/node/prelude/crypto.js +114 -0
  8. package/node/prelude/events.js +227 -0
  9. package/node/prelude/fs.js +79 -0
  10. package/node/prelude/http.js +536 -0
  11. package/node/prelude/http2.js +30 -0
  12. package/node/prelude/internal/crypto/asym.js +333 -0
  13. package/node/prelude/internal/crypto/cipher.js +205 -0
  14. package/node/prelude/internal/crypto/hash.js +137 -0
  15. package/node/prelude/internal/crypto/kdf.js +182 -0
  16. package/node/prelude/internal/crypto/keys.js +603 -0
  17. package/node/prelude/internal/crypto/random.js +118 -0
  18. package/node/prelude/internal/crypto/util.js +76 -0
  19. package/node/prelude/internal/errors.js +88 -0
  20. package/node/prelude/internal/querystring.js +105 -0
  21. package/node/prelude/module.js +53 -0
  22. package/node/prelude/net.js +51 -0
  23. package/node/prelude/os.js +129 -0
  24. package/node/prelude/path.js +257 -0
  25. package/node/prelude/process.js +21 -0
  26. package/node/prelude/querystring.js +469 -0
  27. package/node/prelude/stream.js +1327 -0
  28. package/node/prelude/stream_promises.js +7 -0
  29. package/node/prelude/stream_web.js +6 -0
  30. package/node/prelude/string_decoder.js +236 -0
  31. package/node/prelude/tty.js +18 -0
  32. package/node/prelude/url.js +1156 -0
  33. package/node/prelude/util.js +64 -0
  34. package/node/prelude/zlib.js +81 -0
  35. package/node/src/host_fs.c +126 -0
  36. package/node/src/host_http.c +486 -0
  37. package/node/src/host_os.c +505 -0
  38. package/node/src/host_sys.c +78 -0
  39. package/node/third_party/libuv/LICENSE +19 -0
  40. package/node/third_party/libuv/include/uv/aix.h +32 -0
  41. package/node/third_party/libuv/include/uv/bsd.h +34 -0
  42. package/node/third_party/libuv/include/uv/darwin.h +61 -0
  43. package/node/third_party/libuv/include/uv/errno.h +483 -0
  44. package/node/third_party/libuv/include/uv/linux.h +34 -0
  45. package/node/third_party/libuv/include/uv/os390.h +33 -0
  46. package/node/third_party/libuv/include/uv/posix.h +31 -0
  47. package/node/third_party/libuv/include/uv/sunos.h +44 -0
  48. package/node/third_party/libuv/include/uv/threadpool.h +37 -0
  49. package/node/third_party/libuv/include/uv/tree.h +521 -0
  50. package/node/third_party/libuv/include/uv/unix.h +512 -0
  51. package/node/third_party/libuv/include/uv/version.h +43 -0
  52. package/node/third_party/libuv/include/uv/win.h +698 -0
  53. package/node/third_party/libuv/include/uv.h +1990 -0
  54. package/node/third_party/libuv/src/fs-poll.c +290 -0
  55. package/node/third_party/libuv/src/heap-inl.h +245 -0
  56. package/node/third_party/libuv/src/idna.c +560 -0
  57. package/node/third_party/libuv/src/idna.h +31 -0
  58. package/node/third_party/libuv/src/inet.c +298 -0
  59. package/node/third_party/libuv/src/queue.h +90 -0
  60. package/node/third_party/libuv/src/random.c +123 -0
  61. package/node/third_party/libuv/src/strscpy.c +38 -0
  62. package/node/third_party/libuv/src/strscpy.h +39 -0
  63. package/node/third_party/libuv/src/strtok.c +52 -0
  64. package/node/third_party/libuv/src/strtok.h +27 -0
  65. package/node/third_party/libuv/src/thread-common.c +175 -0
  66. package/node/third_party/libuv/src/threadpool.c +419 -0
  67. package/node/third_party/libuv/src/timer.c +200 -0
  68. package/node/third_party/libuv/src/unix/async.c +418 -0
  69. package/node/third_party/libuv/src/unix/bsd-ifaddrs.c +164 -0
  70. package/node/third_party/libuv/src/unix/core.c +2104 -0
  71. package/node/third_party/libuv/src/unix/darwin-proctitle.c +176 -0
  72. package/node/third_party/libuv/src/unix/darwin-stub.h +97 -0
  73. package/node/third_party/libuv/src/unix/darwin-syscalls.h +17 -0
  74. package/node/third_party/libuv/src/unix/darwin.c +237 -0
  75. package/node/third_party/libuv/src/unix/dl.c +80 -0
  76. package/node/third_party/libuv/src/unix/fs.c +2303 -0
  77. package/node/third_party/libuv/src/unix/fsevents.c +906 -0
  78. package/node/third_party/libuv/src/unix/getaddrinfo.c +252 -0
  79. package/node/third_party/libuv/src/unix/getnameinfo.c +121 -0
  80. package/node/third_party/libuv/src/unix/internal.h +530 -0
  81. package/node/third_party/libuv/src/unix/kqueue.c +667 -0
  82. package/node/third_party/libuv/src/unix/linux.c +2761 -0
  83. package/node/third_party/libuv/src/unix/loop-watcher.c +68 -0
  84. package/node/third_party/libuv/src/unix/loop.c +240 -0
  85. package/node/third_party/libuv/src/unix/pipe.c +555 -0
  86. package/node/third_party/libuv/src/unix/poll.c +159 -0
  87. package/node/third_party/libuv/src/unix/process.c +1123 -0
  88. package/node/third_party/libuv/src/unix/procfs-exepath.c +45 -0
  89. package/node/third_party/libuv/src/unix/proctitle.c +157 -0
  90. package/node/third_party/libuv/src/unix/random-devurandom.c +93 -0
  91. package/node/third_party/libuv/src/unix/random-getentropy.c +57 -0
  92. package/node/third_party/libuv/src/unix/random-getrandom.c +86 -0
  93. package/node/third_party/libuv/src/unix/random-sysctl-linux.c +99 -0
  94. package/node/third_party/libuv/src/unix/signal.c +581 -0
  95. package/node/third_party/libuv/src/unix/stream.c +1567 -0
  96. package/node/third_party/libuv/src/unix/tcp.c +673 -0
  97. package/node/third_party/libuv/src/unix/thread.c +975 -0
  98. package/node/third_party/libuv/src/unix/tty.c +510 -0
  99. package/node/third_party/libuv/src/unix/udp.c +1434 -0
  100. package/node/third_party/libuv/src/uv-common.c +1051 -0
  101. package/node/third_party/libuv/src/uv-common.h +474 -0
  102. package/node/third_party/libuv/src/uv-data-getter-setters.c +119 -0
  103. package/node/third_party/libuv/src/version.c +45 -0
  104. package/node/third_party/llhttp/LICENSE +22 -0
  105. package/node/third_party/llhttp/api.c +509 -0
  106. package/node/third_party/llhttp/http.c +170 -0
  107. package/node/third_party/llhttp/llhttp.c +10099 -0
  108. package/node/third_party/llhttp/llhttp.h +907 -0
  109. package/package.json +25 -4
  110. package/runtime/include/js_atoms.gen.h +68 -0
  111. package/runtime/include/js_atoms.h +54 -0
  112. package/runtime/include/js_bigint.h +93 -0
  113. package/runtime/include/js_buffer.h +79 -0
  114. package/runtime/include/js_builtins.h +168 -0
  115. package/runtime/include/js_console.h +58 -0
  116. package/runtime/include/js_convert.h +22 -0
  117. package/runtime/include/js_core.def +188 -0
  118. package/runtime/include/js_crypto.h +58 -0
  119. package/runtime/include/js_error.h +37 -0
  120. package/runtime/include/js_exception.h +65 -0
  121. package/runtime/include/js_function.h +167 -0
  122. package/runtime/include/js_gc.h +195 -0
  123. package/runtime/include/js_generator.h +96 -0
  124. package/runtime/include/js_host.h +19 -0
  125. package/runtime/include/js_jobs.h +84 -0
  126. package/runtime/include/js_module.h +16 -0
  127. package/runtime/include/js_object.h +384 -0
  128. package/runtime/include/js_ops.h +111 -0
  129. package/runtime/include/js_promise.h +45 -0
  130. package/runtime/include/js_regexp.h +25 -0
  131. package/runtime/include/js_runtime.h +30 -0
  132. package/runtime/include/js_symbol.h +62 -0
  133. package/runtime/include/js_web.h +110 -0
  134. package/runtime/include/jscell.h +48 -0
  135. package/runtime/include/jscontext.h +240 -0
  136. package/runtime/include/jsnum.h +42 -0
  137. package/runtime/include/jsstring.h +161 -0
  138. package/runtime/include/jsvalue.h +142 -0
  139. package/runtime/src/arguments.c +115 -0
  140. package/runtime/src/array.c +1145 -0
  141. package/runtime/src/arraybuffer.c +608 -0
  142. package/runtime/src/async_iter.c +479 -0
  143. package/runtime/src/atoms.c +157 -0
  144. package/runtime/src/base64.c +107 -0
  145. package/runtime/src/bigint.c +1189 -0
  146. package/runtime/src/blob.c +371 -0
  147. package/runtime/src/buffer.c +1357 -0
  148. package/runtime/src/builtin_table.c +100 -0
  149. package/runtime/src/builtins.c +987 -0
  150. package/runtime/src/builtins_util.h +53 -0
  151. package/runtime/src/collections.c +912 -0
  152. package/runtime/src/components.c +28 -0
  153. package/runtime/src/console.c +637 -0
  154. package/runtime/src/convert.c +82 -0
  155. package/runtime/src/core_all.c +21 -0
  156. package/runtime/src/crypto.c +116 -0
  157. package/runtime/src/crypto_asym.c +644 -0
  158. package/runtime/src/crypto_cipher.c +671 -0
  159. package/runtime/src/crypto_hash.c +260 -0
  160. package/runtime/src/crypto_host.c +414 -0
  161. package/runtime/src/crypto_internal.h +304 -0
  162. package/runtime/src/crypto_kdf.c +143 -0
  163. package/runtime/src/crypto_key.c +171 -0
  164. package/runtime/src/crypto_pkey.c +794 -0
  165. package/runtime/src/crypto_subtle.c +1675 -0
  166. package/runtime/src/date.c +940 -0
  167. package/runtime/src/domexception.c +169 -0
  168. package/runtime/src/elements.c +312 -0
  169. package/runtime/src/elements.h +45 -0
  170. package/runtime/src/encoding.c +485 -0
  171. package/runtime/src/error.c +297 -0
  172. package/runtime/src/events.c +793 -0
  173. package/runtime/src/exception.c +56 -0
  174. package/runtime/src/fetch.c +772 -0
  175. package/runtime/src/function.c +530 -0
  176. package/runtime/src/gc.c +803 -0
  177. package/runtime/src/generator.c +218 -0
  178. package/runtime/src/global.c +119 -0
  179. package/runtime/src/headers.c +557 -0
  180. package/runtime/src/inspect.c +1792 -0
  181. package/runtime/src/internal.h +80 -0
  182. package/runtime/src/iterate.c +94 -0
  183. package/runtime/src/iterator.c +409 -0
  184. package/runtime/src/jobs.c +337 -0
  185. package/runtime/src/jsnum.c +353 -0
  186. package/runtime/src/json.c +1028 -0
  187. package/runtime/src/math.c +243 -0
  188. package/runtime/src/module.c +336 -0
  189. package/runtime/src/number.c +176 -0
  190. package/runtime/src/object.c +1265 -0
  191. package/runtime/src/ops.c +322 -0
  192. package/runtime/src/os.c +196 -0
  193. package/runtime/src/os.h +29 -0
  194. package/runtime/src/process.c +432 -0
  195. package/runtime/src/promise.c +721 -0
  196. package/runtime/src/proxy.c +570 -0
  197. package/runtime/src/reflect.c +194 -0
  198. package/runtime/src/regexp.c +1141 -0
  199. package/runtime/src/regexp_anchor.h +34 -0
  200. package/runtime/src/regexp_message.h +32 -0
  201. package/runtime/src/shape.c +294 -0
  202. package/runtime/src/shape.h +46 -0
  203. package/runtime/src/streams.c +1046 -0
  204. package/runtime/src/streams.h +47 -0
  205. package/runtime/src/string.c +364 -0
  206. package/runtime/src/string_builtins.c +837 -0
  207. package/runtime/src/symbol.c +143 -0
  208. package/runtime/src/test_host.c +59 -0
  209. package/runtime/src/typedarray.c +1330 -0
  210. package/runtime/src/tznames.gen.h +712 -0
  211. package/runtime/src/uri.c +169 -0
  212. package/runtime/src/url.c +2116 -0
  213. package/runtime/src/weak.c +486 -0
  214. package/runtime/src/web.c +214 -0
  215. package/runtime/src/wrapper.c +59 -0
  216. package/runtime/src/writable.c +1486 -0
  217. package/runtime/third_party/ada-idna/LICENSE-MIT +18 -0
  218. package/runtime/third_party/ada-idna/README.md +27 -0
  219. package/runtime/third_party/ada-idna/convert.mjs +83 -0
  220. package/runtime/third_party/ada-idna/idna.c +416 -0
  221. package/runtime/third_party/ada-idna/idna.h +15 -0
  222. package/runtime/third_party/ada-idna/idna_tables.h +2657 -0
  223. package/runtime/third_party/bearssl/LICENSE.txt +21 -0
  224. package/runtime/third_party/bearssl/README.txt +136 -0
  225. package/runtime/third_party/bearssl/VERSION +1 -0
  226. package/runtime/third_party/bearssl/inc/bearssl.h +183 -0
  227. package/runtime/third_party/bearssl/inc/bearssl_aead.h +1059 -0
  228. package/runtime/third_party/bearssl/inc/bearssl_block.h +2618 -0
  229. package/runtime/third_party/bearssl/inc/bearssl_ec.h +967 -0
  230. package/runtime/third_party/bearssl/inc/bearssl_hash.h +1346 -0
  231. package/runtime/third_party/bearssl/inc/bearssl_hmac.h +241 -0
  232. package/runtime/third_party/bearssl/inc/bearssl_kdf.h +284 -0
  233. package/runtime/third_party/bearssl/inc/bearssl_pem.h +294 -0
  234. package/runtime/third_party/bearssl/inc/bearssl_prf.h +150 -0
  235. package/runtime/third_party/bearssl/inc/bearssl_rand.h +397 -0
  236. package/runtime/third_party/bearssl/inc/bearssl_rsa.h +1655 -0
  237. package/runtime/third_party/bearssl/inc/bearssl_ssl.h +4296 -0
  238. package/runtime/third_party/bearssl/inc/bearssl_x509.h +1474 -0
  239. package/runtime/third_party/bearssl/src/aead/ccm.c +346 -0
  240. package/runtime/third_party/bearssl/src/aead/eax.c +525 -0
  241. package/runtime/third_party/bearssl/src/aead/gcm.c +318 -0
  242. package/runtime/third_party/bearssl/src/codec/ccopy.c +44 -0
  243. package/runtime/third_party/bearssl/src/codec/dec16be.c +38 -0
  244. package/runtime/third_party/bearssl/src/codec/dec16le.c +38 -0
  245. package/runtime/third_party/bearssl/src/codec/dec32be.c +38 -0
  246. package/runtime/third_party/bearssl/src/codec/dec32le.c +38 -0
  247. package/runtime/third_party/bearssl/src/codec/dec64be.c +38 -0
  248. package/runtime/third_party/bearssl/src/codec/dec64le.c +38 -0
  249. package/runtime/third_party/bearssl/src/codec/enc16be.c +38 -0
  250. package/runtime/third_party/bearssl/src/codec/enc16le.c +38 -0
  251. package/runtime/third_party/bearssl/src/codec/enc32be.c +38 -0
  252. package/runtime/third_party/bearssl/src/codec/enc32le.c +38 -0
  253. package/runtime/third_party/bearssl/src/codec/enc64be.c +38 -0
  254. package/runtime/third_party/bearssl/src/codec/enc64le.c +38 -0
  255. package/runtime/third_party/bearssl/src/codec/pemdec.c +526 -0
  256. package/runtime/third_party/bearssl/src/codec/pemdec.t0 +314 -0
  257. package/runtime/third_party/bearssl/src/codec/pemenc.c +173 -0
  258. package/runtime/third_party/bearssl/src/config.h +247 -0
  259. package/runtime/third_party/bearssl/src/ec/ec_all_m15.c +121 -0
  260. package/runtime/third_party/bearssl/src/ec/ec_all_m31.c +171 -0
  261. package/runtime/third_party/bearssl/src/ec/ec_c25519_i15.c +398 -0
  262. package/runtime/third_party/bearssl/src/ec/ec_c25519_i31.c +390 -0
  263. package/runtime/third_party/bearssl/src/ec/ec_c25519_m15.c +1478 -0
  264. package/runtime/third_party/bearssl/src/ec/ec_c25519_m31.c +800 -0
  265. package/runtime/third_party/bearssl/src/ec/ec_c25519_m62.c +605 -0
  266. package/runtime/third_party/bearssl/src/ec/ec_c25519_m64.c +831 -0
  267. package/runtime/third_party/bearssl/src/ec/ec_curve25519.c +46 -0
  268. package/runtime/third_party/bearssl/src/ec/ec_default.c +36 -0
  269. package/runtime/third_party/bearssl/src/ec/ec_keygen.c +86 -0
  270. package/runtime/third_party/bearssl/src/ec/ec_p256_m15.c +2124 -0
  271. package/runtime/third_party/bearssl/src/ec/ec_p256_m31.c +1469 -0
  272. package/runtime/third_party/bearssl/src/ec/ec_p256_m62.c +1765 -0
  273. package/runtime/third_party/bearssl/src/ec/ec_p256_m64.c +1781 -0
  274. package/runtime/third_party/bearssl/src/ec/ec_prime_i15.c +824 -0
  275. package/runtime/third_party/bearssl/src/ec/ec_prime_i31.c +826 -0
  276. package/runtime/third_party/bearssl/src/ec/ec_pubkey.c +85 -0
  277. package/runtime/third_party/bearssl/src/ec/ec_secp256r1.c +51 -0
  278. package/runtime/third_party/bearssl/src/ec/ec_secp384r1.c +57 -0
  279. package/runtime/third_party/bearssl/src/ec/ec_secp521r1.c +64 -0
  280. package/runtime/third_party/bearssl/src/ec/ecdsa_atr.c +134 -0
  281. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_asn1.c +36 -0
  282. package/runtime/third_party/bearssl/src/ec/ecdsa_default_sign_raw.c +36 -0
  283. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_asn1.c +36 -0
  284. package/runtime/third_party/bearssl/src/ec/ecdsa_default_vrfy_raw.c +36 -0
  285. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_bits.c +47 -0
  286. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_asn1.c +45 -0
  287. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_sign_raw.c +174 -0
  288. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_asn1.c +48 -0
  289. package/runtime/third_party/bearssl/src/ec/ecdsa_i15_vrfy_raw.c +166 -0
  290. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_bits.c +47 -0
  291. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_asn1.c +45 -0
  292. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_sign_raw.c +173 -0
  293. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_asn1.c +48 -0
  294. package/runtime/third_party/bearssl/src/ec/ecdsa_i31_vrfy_raw.c +165 -0
  295. package/runtime/third_party/bearssl/src/ec/ecdsa_rta.c +121 -0
  296. package/runtime/third_party/bearssl/src/hash/dig_oid.c +84 -0
  297. package/runtime/third_party/bearssl/src/hash/dig_size.c +50 -0
  298. package/runtime/third_party/bearssl/src/hash/ghash_ctmul.c +345 -0
  299. package/runtime/third_party/bearssl/src/hash/ghash_ctmul32.c +251 -0
  300. package/runtime/third_party/bearssl/src/hash/ghash_ctmul64.c +154 -0
  301. package/runtime/third_party/bearssl/src/hash/ghash_pclmul.c +389 -0
  302. package/runtime/third_party/bearssl/src/hash/ghash_pwr8.c +411 -0
  303. package/runtime/third_party/bearssl/src/hash/md5.c +208 -0
  304. package/runtime/third_party/bearssl/src/hash/md5sha1.c +141 -0
  305. package/runtime/third_party/bearssl/src/hash/mgf1.c +56 -0
  306. package/runtime/third_party/bearssl/src/hash/multihash.c +166 -0
  307. package/runtime/third_party/bearssl/src/hash/sha1.c +191 -0
  308. package/runtime/third_party/bearssl/src/hash/sha2big.c +285 -0
  309. package/runtime/third_party/bearssl/src/hash/sha2small.c +341 -0
  310. package/runtime/third_party/bearssl/src/inner.h +2577 -0
  311. package/runtime/third_party/bearssl/src/int/i15_add.c +46 -0
  312. package/runtime/third_party/bearssl/src/int/i15_bitlen.c +44 -0
  313. package/runtime/third_party/bearssl/src/int/i15_decmod.c +124 -0
  314. package/runtime/third_party/bearssl/src/int/i15_decode.c +56 -0
  315. package/runtime/third_party/bearssl/src/int/i15_decred.c +100 -0
  316. package/runtime/third_party/bearssl/src/int/i15_encode.c +56 -0
  317. package/runtime/third_party/bearssl/src/int/i15_fmont.c +59 -0
  318. package/runtime/third_party/bearssl/src/int/i15_iszero.c +39 -0
  319. package/runtime/third_party/bearssl/src/int/i15_moddiv.c +465 -0
  320. package/runtime/third_party/bearssl/src/int/i15_modpow.c +50 -0
  321. package/runtime/third_party/bearssl/src/int/i15_modpow2.c +160 -0
  322. package/runtime/third_party/bearssl/src/int/i15_montmul.c +184 -0
  323. package/runtime/third_party/bearssl/src/int/i15_mulacc.c +61 -0
  324. package/runtime/third_party/bearssl/src/int/i15_muladd.c +173 -0
  325. package/runtime/third_party/bearssl/src/int/i15_ninv15.c +38 -0
  326. package/runtime/third_party/bearssl/src/int/i15_reduce.c +66 -0
  327. package/runtime/third_party/bearssl/src/int/i15_rshift.c +47 -0
  328. package/runtime/third_party/bearssl/src/int/i15_sub.c +46 -0
  329. package/runtime/third_party/bearssl/src/int/i15_tmont.c +36 -0
  330. package/runtime/third_party/bearssl/src/int/i31_add.c +46 -0
  331. package/runtime/third_party/bearssl/src/int/i31_bitlen.c +44 -0
  332. package/runtime/third_party/bearssl/src/int/i31_decmod.c +124 -0
  333. package/runtime/third_party/bearssl/src/int/i31_decode.c +57 -0
  334. package/runtime/third_party/bearssl/src/int/i31_decred.c +103 -0
  335. package/runtime/third_party/bearssl/src/int/i31_encode.c +79 -0
  336. package/runtime/third_party/bearssl/src/int/i31_fmont.c +60 -0
  337. package/runtime/third_party/bearssl/src/int/i31_iszero.c +39 -0
  338. package/runtime/third_party/bearssl/src/int/i31_moddiv.c +488 -0
  339. package/runtime/third_party/bearssl/src/int/i31_modpow.c +65 -0
  340. package/runtime/third_party/bearssl/src/int/i31_modpow2.c +160 -0
  341. package/runtime/third_party/bearssl/src/int/i31_montmul.c +127 -0
  342. package/runtime/third_party/bearssl/src/int/i31_mulacc.c +74 -0
  343. package/runtime/third_party/bearssl/src/int/i31_muladd.c +157 -0
  344. package/runtime/third_party/bearssl/src/int/i31_ninv31.c +39 -0
  345. package/runtime/third_party/bearssl/src/int/i31_reduce.c +66 -0
  346. package/runtime/third_party/bearssl/src/int/i31_rshift.c +47 -0
  347. package/runtime/third_party/bearssl/src/int/i31_sub.c +46 -0
  348. package/runtime/third_party/bearssl/src/int/i31_tmont.c +36 -0
  349. package/runtime/third_party/bearssl/src/int/i32_add.c +51 -0
  350. package/runtime/third_party/bearssl/src/int/i32_bitlen.c +44 -0
  351. package/runtime/third_party/bearssl/src/int/i32_decmod.c +77 -0
  352. package/runtime/third_party/bearssl/src/int/i32_decode.c +63 -0
  353. package/runtime/third_party/bearssl/src/int/i32_decred.c +107 -0
  354. package/runtime/third_party/bearssl/src/int/i32_div32.c +56 -0
  355. package/runtime/third_party/bearssl/src/int/i32_encode.c +72 -0
  356. package/runtime/third_party/bearssl/src/int/i32_fmont.c +60 -0
  357. package/runtime/third_party/bearssl/src/int/i32_iszero.c +39 -0
  358. package/runtime/third_party/bearssl/src/int/i32_modpow.c +65 -0
  359. package/runtime/third_party/bearssl/src/int/i32_montmul.c +69 -0
  360. package/runtime/third_party/bearssl/src/int/i32_mulacc.c +56 -0
  361. package/runtime/third_party/bearssl/src/int/i32_muladd.c +138 -0
  362. package/runtime/third_party/bearssl/src/int/i32_ninv32.c +39 -0
  363. package/runtime/third_party/bearssl/src/int/i32_reduce.c +66 -0
  364. package/runtime/third_party/bearssl/src/int/i32_sub.c +51 -0
  365. package/runtime/third_party/bearssl/src/int/i32_tmont.c +36 -0
  366. package/runtime/third_party/bearssl/src/int/i62_modpow2.c +493 -0
  367. package/runtime/third_party/bearssl/src/kdf/hkdf.c +107 -0
  368. package/runtime/third_party/bearssl/src/kdf/shake.c +590 -0
  369. package/runtime/third_party/bearssl/src/mac/hmac.c +122 -0
  370. package/runtime/third_party/bearssl/src/mac/hmac_ct.c +193 -0
  371. package/runtime/third_party/bearssl/src/rand/aesctr_drbg.c +206 -0
  372. package/runtime/third_party/bearssl/src/rand/hmac_drbg.c +157 -0
  373. package/runtime/third_party/bearssl/src/rand/sysrng.c +252 -0
  374. package/runtime/third_party/bearssl/src/rsa/rsa_default_keygen.c +38 -0
  375. package/runtime/third_party/bearssl/src/rsa/rsa_default_modulus.c +36 -0
  376. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_decrypt.c +38 -0
  377. package/runtime/third_party/bearssl/src/rsa/rsa_default_oaep_encrypt.c +38 -0
  378. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_sign.c +38 -0
  379. package/runtime/third_party/bearssl/src/rsa/rsa_default_pkcs1_vrfy.c +38 -0
  380. package/runtime/third_party/bearssl/src/rsa/rsa_default_priv.c +38 -0
  381. package/runtime/third_party/bearssl/src/rsa/rsa_default_privexp.c +36 -0
  382. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_sign.c +38 -0
  383. package/runtime/third_party/bearssl/src/rsa/rsa_default_pss_vrfy.c +38 -0
  384. package/runtime/third_party/bearssl/src/rsa/rsa_default_pub.c +38 -0
  385. package/runtime/third_party/bearssl/src/rsa/rsa_default_pubexp.c +36 -0
  386. package/runtime/third_party/bearssl/src/rsa/rsa_i15_keygen.c +583 -0
  387. package/runtime/third_party/bearssl/src/rsa/rsa_i15_modulus.c +99 -0
  388. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_decrypt.c +41 -0
  389. package/runtime/third_party/bearssl/src/rsa/rsa_i15_oaep_encrypt.c +44 -0
  390. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_sign.c +37 -0
  391. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pkcs1_vrfy.c +43 -0
  392. package/runtime/third_party/bearssl/src/rsa/rsa_i15_priv.c +209 -0
  393. package/runtime/third_party/bearssl/src/rsa/rsa_i15_privexp.c +320 -0
  394. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_sign.c +40 -0
  395. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pss_vrfy.c +44 -0
  396. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pub.c +113 -0
  397. package/runtime/third_party/bearssl/src/rsa/rsa_i15_pubexp.c +152 -0
  398. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen.c +37 -0
  399. package/runtime/third_party/bearssl/src/rsa/rsa_i31_keygen_inner.c +608 -0
  400. package/runtime/third_party/bearssl/src/rsa/rsa_i31_modulus.c +99 -0
  401. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_decrypt.c +41 -0
  402. package/runtime/third_party/bearssl/src/rsa/rsa_i31_oaep_encrypt.c +44 -0
  403. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_sign.c +37 -0
  404. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pkcs1_vrfy.c +43 -0
  405. package/runtime/third_party/bearssl/src/rsa/rsa_i31_priv.c +203 -0
  406. package/runtime/third_party/bearssl/src/rsa/rsa_i31_privexp.c +318 -0
  407. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_sign.c +40 -0
  408. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pss_vrfy.c +44 -0
  409. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pub.c +106 -0
  410. package/runtime/third_party/bearssl/src/rsa/rsa_i31_pubexp.c +152 -0
  411. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_decrypt.c +41 -0
  412. package/runtime/third_party/bearssl/src/rsa/rsa_i32_oaep_encrypt.c +44 -0
  413. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_sign.c +37 -0
  414. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pkcs1_vrfy.c +43 -0
  415. package/runtime/third_party/bearssl/src/rsa/rsa_i32_priv.c +160 -0
  416. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_sign.c +40 -0
  417. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pss_vrfy.c +44 -0
  418. package/runtime/third_party/bearssl/src/rsa/rsa_i32_pub.c +77 -0
  419. package/runtime/third_party/bearssl/src/rsa/rsa_i62_keygen.c +57 -0
  420. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_decrypt.c +61 -0
  421. package/runtime/third_party/bearssl/src/rsa/rsa_i62_oaep_encrypt.c +64 -0
  422. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_sign.c +57 -0
  423. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pkcs1_vrfy.c +63 -0
  424. package/runtime/third_party/bearssl/src/rsa/rsa_i62_priv.c +223 -0
  425. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_sign.c +60 -0
  426. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pss_vrfy.c +64 -0
  427. package/runtime/third_party/bearssl/src/rsa/rsa_i62_pub.c +125 -0
  428. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_pad.c +112 -0
  429. package/runtime/third_party/bearssl/src/rsa/rsa_oaep_unpad.c +145 -0
  430. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_pad.c +100 -0
  431. package/runtime/third_party/bearssl/src/rsa/rsa_pkcs1_sig_unpad.c +121 -0
  432. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_pad.c +106 -0
  433. package/runtime/third_party/bearssl/src/rsa/rsa_pss_sig_unpad.c +121 -0
  434. package/runtime/third_party/bearssl/src/rsa/rsa_ssl_decrypt.c +52 -0
  435. package/runtime/third_party/bearssl/src/settings.c +306 -0
  436. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcdec.c +69 -0
  437. package/runtime/third_party/bearssl/src/symcipher/aes_big_cbcenc.c +67 -0
  438. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctr.c +84 -0
  439. package/runtime/third_party/bearssl/src/symcipher/aes_big_ctrcbc.c +142 -0
  440. package/runtime/third_party/bearssl/src/symcipher/aes_big_dec.c +254 -0
  441. package/runtime/third_party/bearssl/src/symcipher/aes_big_enc.c +157 -0
  442. package/runtime/third_party/bearssl/src/symcipher/aes_common.c +112 -0
  443. package/runtime/third_party/bearssl/src/symcipher/aes_ct.c +328 -0
  444. package/runtime/third_party/bearssl/src/symcipher/aes_ct64.c +398 -0
  445. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcdec.c +104 -0
  446. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_cbcenc.c +81 -0
  447. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctr.c +114 -0
  448. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_ctrcbc.c +433 -0
  449. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_dec.c +159 -0
  450. package/runtime/third_party/bearssl/src/symcipher/aes_ct64_enc.c +115 -0
  451. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcdec.c +111 -0
  452. package/runtime/third_party/bearssl/src/symcipher/aes_ct_cbcenc.c +91 -0
  453. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctr.c +116 -0
  454. package/runtime/third_party/bearssl/src/symcipher/aes_ct_ctrcbc.c +422 -0
  455. package/runtime/third_party/bearssl/src/symcipher/aes_ct_dec.c +170 -0
  456. package/runtime/third_party/bearssl/src/symcipher/aes_ct_enc.c +112 -0
  457. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8.c +445 -0
  458. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcdec.c +670 -0
  459. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_cbcenc.c +417 -0
  460. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctr.c +717 -0
  461. package/runtime/third_party/bearssl/src/symcipher/aes_pwr8_ctrcbc.c +946 -0
  462. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcdec.c +69 -0
  463. package/runtime/third_party/bearssl/src/symcipher/aes_small_cbcenc.c +67 -0
  464. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctr.c +84 -0
  465. package/runtime/third_party/bearssl/src/symcipher/aes_small_ctrcbc.c +142 -0
  466. package/runtime/third_party/bearssl/src/symcipher/aes_small_dec.c +176 -0
  467. package/runtime/third_party/bearssl/src/symcipher/aes_small_enc.c +129 -0
  468. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni.c +240 -0
  469. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcdec.c +223 -0
  470. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_cbcenc.c +122 -0
  471. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctr.c +211 -0
  472. package/runtime/third_party/bearssl/src/symcipher/aes_x86ni_ctrcbc.c +596 -0
  473. package/runtime/third_party/bearssl/src/symcipher/chacha20_ct.c +106 -0
  474. package/runtime/third_party/bearssl/src/symcipher/chacha20_sse2.c +237 -0
  475. package/runtime/third_party/bearssl/src/symcipher/des_ct.c +411 -0
  476. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcdec.c +87 -0
  477. package/runtime/third_party/bearssl/src/symcipher/des_ct_cbcenc.c +69 -0
  478. package/runtime/third_party/bearssl/src/symcipher/des_support.c +166 -0
  479. package/runtime/third_party/bearssl/src/symcipher/des_tab.c +310 -0
  480. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcdec.c +85 -0
  481. package/runtime/third_party/bearssl/src/symcipher/des_tab_cbcenc.c +67 -0
  482. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul.c +260 -0
  483. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmul32.c +297 -0
  484. package/runtime/third_party/bearssl/src/symcipher/poly1305_ctmulq.c +475 -0
  485. package/runtime/third_party/bearssl/src/symcipher/poly1305_i15.c +221 -0
  486. package/runtime/third_party/bearssl/src/x509/asn1.t0 +757 -0
  487. package/runtime/third_party/bearssl/src/x509/asn1enc.c +93 -0
  488. package/runtime/third_party/bearssl/src/x509/encode_ec_pk8der.c +110 -0
  489. package/runtime/third_party/bearssl/src/x509/encode_ec_rawder.c +161 -0
  490. package/runtime/third_party/bearssl/src/x509/encode_rsa_pk8der.c +97 -0
  491. package/runtime/third_party/bearssl/src/x509/encode_rsa_rawder.c +96 -0
  492. package/runtime/third_party/bearssl/src/x509/skey_decoder.c +653 -0
  493. package/runtime/third_party/bearssl/src/x509/skey_decoder.t0 +376 -0
  494. package/runtime/third_party/bearssl/src/x509/x509_decoder.c +776 -0
  495. package/runtime/third_party/bearssl/src/x509/x509_decoder.t0 +324 -0
  496. package/runtime/third_party/bearssl/src/x509/x509_knownkey.c +105 -0
  497. package/runtime/third_party/bearssl/src/x509/x509_minimal.c +1722 -0
  498. package/runtime/third_party/bearssl/src/x509/x509_minimal.t0 +1526 -0
  499. package/runtime/third_party/bearssl/src/x509/x509_minimal_full.c +59 -0
  500. package/runtime/third_party/quickjs-dtoa/LICENSE +22 -0
  501. package/runtime/third_party/quickjs-dtoa/README.md +23 -0
  502. package/runtime/third_party/quickjs-dtoa/dtoa.c +1640 -0
  503. package/runtime/third_party/quickjs-dtoa/dtoa.h +83 -0
  504. package/runtime/third_party/quickjs-dtoa/dtoa_compat.h +89 -0
  505. package/runtime/third_party/quickjs-regexp/LICENSE +22 -0
  506. package/runtime/third_party/quickjs-regexp/README.md +22 -0
  507. package/runtime/third_party/quickjs-regexp/cutils.c +641 -0
  508. package/runtime/third_party/quickjs-regexp/cutils.h +457 -0
  509. package/runtime/third_party/quickjs-regexp/libregexp-opcode.h +73 -0
  510. package/runtime/third_party/quickjs-regexp/libregexp.c +3448 -0
  511. package/runtime/third_party/quickjs-regexp/libregexp.h +65 -0
  512. package/runtime/third_party/quickjs-regexp/libunicode-table.h +5206 -0
  513. package/runtime/third_party/quickjs-regexp/libunicode.c +2124 -0
  514. package/runtime/third_party/quickjs-regexp/libunicode.h +196 -0
  515. package/runtime/third_party/v8-ieee754/LICENSE +61 -0
  516. package/runtime/third_party/v8-ieee754/README.md +22 -0
  517. package/runtime/third_party/v8-ieee754/convert.py +84 -0
  518. package/runtime/third_party/v8-ieee754/ieee754.c +3030 -0
  519. package/runtime/third_party/v8-ieee754/ieee754.h +27 -0
  520. package/runtime/tools/regexp_compile.c +90 -0
@@ -0,0 +1,188 @@
1
+ /*
2
+ * js_core.def — the core built-in methods a program installs only when it names them
3
+ * (ADR 0014), in V8's order. One line per property:
4
+ *
5
+ * JS_CORE_FN(target, "name", native, length) a method
6
+ * JS_CORE_ACCESSOR(target, "name", getter, setter) an accessor
7
+ * JS_CORE_NUMBER(target, "name", value) a constant (read-only, fixed)
8
+ * JS_CORE_ALIAS(target, "name", "earlier") the same function as an earlier entry
9
+ * JS_CORE_ALIAS_OF(target, "name", from, "earlier") the same, from an earlier entry on `from`
10
+ * JS_CORE_SYMBOL_GETTER(target, symbol, getter) a well-known-symbol getter (always installed)
11
+ * JS_CORE_SYMBOL_ALIAS(target, symbol, "earlier") a well-known-symbol alias (always installed)
12
+ *
13
+ * Included by js_builtins.h (to declare the natives), by runtime/src/core_all.c (every entry,
14
+ * for the test hosts) and parsed by the compiler (compiler/src/emit/core.ts), which emits the
15
+ * entries a program names into its C file. No #include guard: it is read several times.
16
+ */
17
+
18
+ /* Object (§20.1) */
19
+ JS_CORE_FN(OBJECT, "assign", object_assign, 2)
20
+ JS_CORE_FN(OBJECT, "getOwnPropertyDescriptor", object_get_own_property_descriptor, 2)
21
+ JS_CORE_FN(OBJECT, "getOwnPropertyDescriptors", object_get_own_property_descriptors, 1)
22
+ JS_CORE_FN(OBJECT, "getOwnPropertyNames", object_get_own_property_names, 1)
23
+ JS_CORE_FN(OBJECT, "getOwnPropertySymbols", object_get_own_property_symbols, 1)
24
+ JS_CORE_FN(OBJECT, "hasOwn", object_has_own, 2)
25
+ JS_CORE_FN(OBJECT, "is", object_is, 2)
26
+ JS_CORE_FN(OBJECT, "preventExtensions", object_prevent_extensions, 1)
27
+ JS_CORE_FN(OBJECT, "seal", object_seal, 1)
28
+ JS_CORE_FN(OBJECT, "create", object_create, 2)
29
+ JS_CORE_FN(OBJECT, "defineProperties", object_define_properties, 2)
30
+ JS_CORE_FN(OBJECT, "defineProperty", object_define_property, 3)
31
+ JS_CORE_FN(OBJECT, "freeze", object_freeze, 1)
32
+ JS_CORE_FN(OBJECT, "getPrototypeOf", object_get_prototype_of, 1)
33
+ JS_CORE_FN(OBJECT, "setPrototypeOf", object_set_prototype_of, 2)
34
+ JS_CORE_FN(OBJECT, "isExtensible", object_is_extensible, 1)
35
+ JS_CORE_FN(OBJECT, "isFrozen", object_is_frozen, 1)
36
+ JS_CORE_FN(OBJECT, "isSealed", object_is_sealed, 1)
37
+ JS_CORE_FN(OBJECT, "keys", object_keys, 1)
38
+ JS_CORE_FN(OBJECT, "entries", object_entries, 1)
39
+ JS_CORE_FN(OBJECT, "fromEntries", object_from_entries, 1)
40
+ JS_CORE_FN(OBJECT, "values", object_values, 1)
41
+ JS_CORE_FN(OBJECT, "groupBy", object_group_by, 2)
42
+ JS_CORE_FN(OBJECT_PROTO, "__defineGetter__", object_proto_define_getter, 2)
43
+ JS_CORE_FN(OBJECT_PROTO, "__defineSetter__", object_proto_define_setter, 2)
44
+ JS_CORE_FN(OBJECT_PROTO, "hasOwnProperty", object_proto_has_own_property, 1)
45
+ JS_CORE_FN(OBJECT_PROTO, "__lookupGetter__", object_proto_lookup_getter, 1)
46
+ JS_CORE_FN(OBJECT_PROTO, "__lookupSetter__", object_proto_lookup_setter, 1)
47
+ JS_CORE_FN(OBJECT_PROTO, "isPrototypeOf", object_proto_is_prototype_of, 1)
48
+ JS_CORE_FN(OBJECT_PROTO, "propertyIsEnumerable", object_proto_property_is_enumerable, 1)
49
+ JS_CORE_FN(OBJECT_PROTO, "toString", object_proto_to_string, 0)
50
+ JS_CORE_FN(OBJECT_PROTO, "valueOf", object_proto_value_of, 0)
51
+ JS_CORE_ACCESSOR(OBJECT_PROTO, "__proto__", object_proto_get_proto, object_proto_set_proto)
52
+ JS_CORE_FN(OBJECT_PROTO, "toLocaleString", object_proto_to_locale_string, 0)
53
+
54
+ /* Array (§23.1) */
55
+ JS_CORE_FN(ARRAY, "isArray", array_is_array, 1)
56
+ JS_CORE_FN(ARRAY, "from", array_from, 1)
57
+ JS_CORE_FN(ARRAY, "of", array_of, 0)
58
+ JS_CORE_FN(ARRAY, "fromAsync", array_from_async, 1)
59
+ JS_CORE_SYMBOL_GETTER(ARRAY, species, array_species)
60
+ JS_CORE_FN(ARRAY_PROTO, "at", array_proto_at, 1)
61
+ JS_CORE_FN(ARRAY_PROTO, "concat", array_proto_concat, 1)
62
+ JS_CORE_FN(ARRAY_PROTO, "copyWithin", array_proto_copy_within, 2)
63
+ JS_CORE_FN(ARRAY_PROTO, "fill", array_proto_fill, 1)
64
+ JS_CORE_FN(ARRAY_PROTO, "find", array_proto_find, 1)
65
+ JS_CORE_FN(ARRAY_PROTO, "findIndex", array_proto_find_index, 1)
66
+ JS_CORE_FN(ARRAY_PROTO, "findLast", array_proto_find_last, 1)
67
+ JS_CORE_FN(ARRAY_PROTO, "findLastIndex", array_proto_find_last_index, 1)
68
+ JS_CORE_FN(ARRAY_PROTO, "lastIndexOf", array_proto_last_index_of, 1)
69
+ JS_CORE_FN(ARRAY_PROTO, "pop", array_proto_pop, 0)
70
+ JS_CORE_FN(ARRAY_PROTO, "push", array_proto_push, 1)
71
+ JS_CORE_FN(ARRAY_PROTO, "reverse", array_proto_reverse, 0)
72
+ JS_CORE_FN(ARRAY_PROTO, "shift", array_proto_shift, 0)
73
+ JS_CORE_FN(ARRAY_PROTO, "unshift", array_proto_unshift, 1)
74
+ JS_CORE_FN(ARRAY_PROTO, "slice", array_proto_slice, 2)
75
+ JS_CORE_FN(ARRAY_PROTO, "sort", array_proto_sort, 1)
76
+ JS_CORE_FN(ARRAY_PROTO, "splice", array_proto_splice, 2)
77
+ JS_CORE_FN(ARRAY_PROTO, "includes", array_proto_includes, 1)
78
+ JS_CORE_FN(ARRAY_PROTO, "indexOf", array_proto_index_of, 1)
79
+ JS_CORE_FN(ARRAY_PROTO, "join", array_proto_join, 1)
80
+ JS_CORE_FN(ARRAY_PROTO, "keys", array_proto_keys, 0)
81
+ JS_CORE_FN(ARRAY_PROTO, "entries", array_proto_entries, 0)
82
+ JS_CORE_FN(ARRAY_PROTO, "values", array_proto_values, 0)
83
+ JS_CORE_FN(ARRAY_PROTO, "forEach", array_proto_for_each, 1)
84
+ JS_CORE_FN(ARRAY_PROTO, "filter", array_proto_filter, 1)
85
+ JS_CORE_FN(ARRAY_PROTO, "flat", array_proto_flat, 0)
86
+ JS_CORE_FN(ARRAY_PROTO, "flatMap", array_proto_flat_map, 1)
87
+ JS_CORE_FN(ARRAY_PROTO, "map", array_proto_map, 1)
88
+ JS_CORE_FN(ARRAY_PROTO, "every", array_proto_every, 1)
89
+ JS_CORE_FN(ARRAY_PROTO, "some", array_proto_some, 1)
90
+ JS_CORE_FN(ARRAY_PROTO, "reduce", array_proto_reduce, 1)
91
+ JS_CORE_FN(ARRAY_PROTO, "reduceRight", array_proto_reduce_right, 1)
92
+ JS_CORE_FN(ARRAY_PROTO, "toReversed", array_proto_to_reversed, 0)
93
+ JS_CORE_FN(ARRAY_PROTO, "toSorted", array_proto_to_sorted, 1)
94
+ JS_CORE_FN(ARRAY_PROTO, "toSpliced", array_proto_to_spliced, 2)
95
+ JS_CORE_FN(ARRAY_PROTO, "with", array_proto_with, 2)
96
+ JS_CORE_FN(ARRAY_PROTO, "toLocaleString", array_proto_to_locale_string, 0)
97
+ JS_CORE_FN(ARRAY_PROTO, "toString", array_proto_to_string, 0)
98
+ JS_CORE_SYMBOL_ALIAS(ARRAY_PROTO, iterator, "values")
99
+
100
+ /* String (§22.1) */
101
+ JS_CORE_FN(STRING, "fromCharCode", string_from_char_code, 1)
102
+ JS_CORE_FN(STRING, "fromCodePoint", string_from_code_point, 1)
103
+ JS_CORE_FN(STRING, "raw", string_raw, 1)
104
+ JS_CORE_FN(STRING_PROTO, "anchor", string_html_anchor, 1)
105
+ JS_CORE_FN(STRING_PROTO, "at", string_proto_at, 1)
106
+ JS_CORE_FN(STRING_PROTO, "big", string_html_big, 0)
107
+ JS_CORE_FN(STRING_PROTO, "blink", string_html_blink, 0)
108
+ JS_CORE_FN(STRING_PROTO, "bold", string_html_bold, 0)
109
+ JS_CORE_FN(STRING_PROTO, "charAt", string_proto_char_at, 1)
110
+ JS_CORE_FN(STRING_PROTO, "charCodeAt", string_proto_char_code_at, 1)
111
+ JS_CORE_FN(STRING_PROTO, "codePointAt", string_proto_code_point_at, 1)
112
+ JS_CORE_FN(STRING_PROTO, "concat", string_proto_concat, 1)
113
+ JS_CORE_FN(STRING_PROTO, "endsWith", string_proto_ends_with, 1)
114
+ JS_CORE_FN(STRING_PROTO, "fontcolor", string_html_fontcolor, 1)
115
+ JS_CORE_FN(STRING_PROTO, "fontsize", string_html_fontsize, 1)
116
+ JS_CORE_FN(STRING_PROTO, "fixed", string_html_fixed, 0)
117
+ JS_CORE_FN(STRING_PROTO, "includes", string_proto_includes, 1)
118
+ JS_CORE_FN(STRING_PROTO, "indexOf", string_proto_index_of, 1)
119
+ JS_CORE_FN(STRING_PROTO, "isWellFormed", string_proto_is_well_formed, 0)
120
+ JS_CORE_FN(STRING_PROTO, "italics", string_html_italics, 0)
121
+ JS_CORE_FN(STRING_PROTO, "lastIndexOf", string_proto_last_index_of, 1)
122
+ JS_CORE_FN(STRING_PROTO, "link", string_html_link, 1)
123
+ JS_CORE_FN(STRING_PROTO, "localeCompare", string_proto_locale_compare, 1)
124
+ JS_CORE_FN(STRING_PROTO, "match", string_proto_match, 1)
125
+ JS_CORE_FN(STRING_PROTO, "matchAll", string_proto_match_all, 1)
126
+ JS_CORE_FN(STRING_PROTO, "normalize", string_proto_normalize, 0)
127
+ JS_CORE_FN(STRING_PROTO, "padEnd", string_proto_pad_end, 1)
128
+ JS_CORE_FN(STRING_PROTO, "padStart", string_proto_pad_start, 1)
129
+ JS_CORE_FN(STRING_PROTO, "repeat", string_proto_repeat, 1)
130
+ JS_CORE_FN(STRING_PROTO, "replace", string_proto_replace, 2)
131
+ JS_CORE_FN(STRING_PROTO, "replaceAll", string_proto_replace_all, 2)
132
+ JS_CORE_FN(STRING_PROTO, "search", string_proto_search, 1)
133
+ JS_CORE_FN(STRING_PROTO, "slice", string_proto_slice, 2)
134
+ JS_CORE_FN(STRING_PROTO, "small", string_html_small, 0)
135
+ JS_CORE_FN(STRING_PROTO, "split", string_proto_split, 2)
136
+ JS_CORE_FN(STRING_PROTO, "strike", string_html_strike, 0)
137
+ JS_CORE_FN(STRING_PROTO, "sub", string_html_sub, 0)
138
+ JS_CORE_FN(STRING_PROTO, "substr", string_proto_substr, 2)
139
+ JS_CORE_FN(STRING_PROTO, "substring", string_proto_substring, 2)
140
+ JS_CORE_FN(STRING_PROTO, "sup", string_html_sup, 0)
141
+ JS_CORE_FN(STRING_PROTO, "startsWith", string_proto_starts_with, 1)
142
+ JS_CORE_FN(STRING_PROTO, "toString", string_proto_to_string, 0)
143
+ JS_CORE_FN(STRING_PROTO, "toWellFormed", string_proto_to_well_formed, 0)
144
+ JS_CORE_FN(STRING_PROTO, "trim", string_proto_trim, 0)
145
+ JS_CORE_FN(STRING_PROTO, "trimStart", string_proto_trim_start, 0)
146
+ JS_CORE_ALIAS(STRING_PROTO, "trimLeft", "trimStart")
147
+ JS_CORE_FN(STRING_PROTO, "trimEnd", string_proto_trim_end, 0)
148
+ JS_CORE_ALIAS(STRING_PROTO, "trimRight", "trimEnd")
149
+ JS_CORE_FN(STRING_PROTO, "toLocaleLowerCase", string_proto_to_locale_lower_case, 0)
150
+ JS_CORE_FN(STRING_PROTO, "toLocaleUpperCase", string_proto_to_locale_upper_case, 0)
151
+ JS_CORE_FN(STRING_PROTO, "toLowerCase", string_proto_to_lower_case, 0)
152
+ JS_CORE_FN(STRING_PROTO, "toUpperCase", string_proto_to_upper_case, 0)
153
+ JS_CORE_FN(STRING_PROTO, "valueOf", string_proto_value_of, 0)
154
+
155
+ /* Number (§21.1) */
156
+ JS_CORE_FN(NUMBER, "isFinite", number_is_finite, 1)
157
+ JS_CORE_FN(NUMBER, "isInteger", number_is_integer, 1)
158
+ JS_CORE_FN(NUMBER, "isNaN", number_is_nan, 1)
159
+ JS_CORE_FN(NUMBER, "isSafeInteger", number_is_safe_integer, 1)
160
+ JS_CORE_FN(NUMBER, "parseFloat", number_parse_float, 1)
161
+ JS_CORE_FN(NUMBER, "parseInt", number_parse_int, 2)
162
+ JS_CORE_NUMBER(NUMBER, "MAX_VALUE", 1.7976931348623157e308)
163
+ JS_CORE_NUMBER(NUMBER, "MIN_VALUE", 5e-324)
164
+ JS_CORE_NUMBER(NUMBER, "NaN", NAN)
165
+ JS_CORE_NUMBER(NUMBER, "NEGATIVE_INFINITY", -INFINITY)
166
+ JS_CORE_NUMBER(NUMBER, "POSITIVE_INFINITY", INFINITY)
167
+ JS_CORE_NUMBER(NUMBER, "MAX_SAFE_INTEGER", 9007199254740991.0)
168
+ JS_CORE_NUMBER(NUMBER, "MIN_SAFE_INTEGER", -9007199254740991.0)
169
+ JS_CORE_NUMBER(NUMBER, "EPSILON", 2.220446049250313e-16)
170
+ JS_CORE_FN(NUMBER_PROTO, "toExponential", number_proto_to_exponential, 1)
171
+ JS_CORE_FN(NUMBER_PROTO, "toFixed", number_proto_to_fixed, 1)
172
+ JS_CORE_FN(NUMBER_PROTO, "toPrecision", number_proto_to_precision, 1)
173
+ JS_CORE_FN(NUMBER_PROTO, "toString", number_proto_to_string, 1)
174
+ JS_CORE_FN(NUMBER_PROTO, "valueOf", number_proto_value_of, 0)
175
+ JS_CORE_FN(NUMBER_PROTO, "toLocaleString", number_proto_to_locale_string, 0)
176
+
177
+ /* The global functions on numbers (§19.2): parseFloat and parseInt are Number's */
178
+ JS_CORE_ALIAS_OF(GLOBAL, "parseFloat", NUMBER, "parseFloat")
179
+ JS_CORE_ALIAS_OF(GLOBAL, "parseInt", NUMBER, "parseInt")
180
+ JS_CORE_FN(GLOBAL, "eval", global_eval, 1)
181
+ JS_CORE_FN(GLOBAL, "isNaN", global_is_nan, 1)
182
+ JS_CORE_FN(GLOBAL, "isFinite", global_is_finite, 1)
183
+
184
+ /* The URI handling functions (§19.2.6) */
185
+ JS_CORE_FN(GLOBAL, "decodeURI", global_decode_uri, 1)
186
+ JS_CORE_FN(GLOBAL, "decodeURIComponent", global_decode_uri_component, 1)
187
+ JS_CORE_FN(GLOBAL, "encodeURI", global_encode_uri, 1)
188
+ JS_CORE_FN(GLOBAL, "encodeURIComponent", global_encode_uri_component, 1)
@@ -0,0 +1,58 @@
1
+ /* js_crypto.h — crypto (ADR 0018): node:crypto's host primitives, which node/index.ts lists for
2
+ * the compiler (generated code declares the ones a program uses), and what the crypto
3
+ * component shares with them. The primitives are the runtime's, as Web Crypto runs on the same
4
+ * C (runtime/src/crypto_internal.h). */
5
+ #ifndef JS_CRYPTO_H
6
+ #define JS_CRYPTO_H
7
+
8
+ #include "js_function.h"
9
+
10
+ /* A version 4 UUID, lowercase (crypto.randomUUID). */
11
+ JS_WARN_UNUSED JSValue js_crypto_random_uuid(JSContext *ctx);
12
+
13
+ #define JS_CRYPTO_PRIMITIVE(fn) \
14
+ JSValue fn(JSContext *ctx, JSValue callee, JSValue this_val, uint32_t argc, const JSValue *argv, JSValue new_target);
15
+ JS_CRYPTO_PRIMITIVE(js_crypto_hash_new)
16
+ JS_CRYPTO_PRIMITIVE(js_crypto_hash_info)
17
+ JS_CRYPTO_PRIMITIVE(js_crypto_hash_copy)
18
+ JS_CRYPTO_PRIMITIVE(js_crypto_hmac_new)
19
+ JS_CRYPTO_PRIMITIVE(js_crypto_digest_update)
20
+ JS_CRYPTO_PRIMITIVE(js_crypto_digest_final)
21
+ JS_CRYPTO_PRIMITIVE(js_crypto_random_fill)
22
+ JS_CRYPTO_PRIMITIVE(js_crypto_host_random_uuid)
23
+ JS_CRYPTO_PRIMITIVE(js_crypto_timing_safe_equal)
24
+ JS_CRYPTO_PRIMITIVE(js_crypto_hashes)
25
+ JS_CRYPTO_PRIMITIVE(js_crypto_pbkdf2)
26
+ JS_CRYPTO_PRIMITIVE(js_crypto_hkdf)
27
+ JS_CRYPTO_PRIMITIVE(js_crypto_scrypt_check)
28
+ JS_CRYPTO_PRIMITIVE(js_crypto_scrypt)
29
+ JS_CRYPTO_PRIMITIVE(js_crypto_cipher_new)
30
+ JS_CRYPTO_PRIMITIVE(js_crypto_cipher_update)
31
+ JS_CRYPTO_PRIMITIVE(js_crypto_cipher_final)
32
+ JS_CRYPTO_PRIMITIVE(js_crypto_cipher_set_aad)
33
+ JS_CRYPTO_PRIMITIVE(js_crypto_cipher_set_auth_tag)
34
+ JS_CRYPTO_PRIMITIVE(js_crypto_cipher_get_auth_tag)
35
+ JS_CRYPTO_PRIMITIVE(js_crypto_cipher_set_padding)
36
+ JS_CRYPTO_PRIMITIVE(js_crypto_cipher_info)
37
+ JS_CRYPTO_PRIMITIVE(js_crypto_ciphers)
38
+ JS_CRYPTO_PRIMITIVE(js_crypto_key_parse)
39
+ JS_CRYPTO_PRIMITIVE(js_crypto_key_export)
40
+ JS_CRYPTO_PRIMITIVE(js_crypto_key_info)
41
+ JS_CRYPTO_PRIMITIVE(js_crypto_key_parts)
42
+ JS_CRYPTO_PRIMITIVE(js_crypto_key_from_parts)
43
+ JS_CRYPTO_PRIMITIVE(js_crypto_key_public)
44
+ JS_CRYPTO_PRIMITIVE(js_crypto_key_equals)
45
+ JS_CRYPTO_PRIMITIVE(js_crypto_key_secret)
46
+ JS_CRYPTO_PRIMITIVE(js_crypto_key_secret_bytes)
47
+ JS_CRYPTO_PRIMITIVE(js_crypto_key_generate)
48
+ JS_CRYPTO_PRIMITIVE(js_crypto_key_handle_of)
49
+ JS_CRYPTO_PRIMITIVE(js_crypto_to_crypto_key)
50
+ JS_CRYPTO_PRIMITIVE(js_crypto_sign)
51
+ JS_CRYPTO_PRIMITIVE(js_crypto_verify)
52
+ JS_CRYPTO_PRIMITIVE(js_crypto_rsa_crypt)
53
+ JS_CRYPTO_PRIMITIVE(js_crypto_ecdh)
54
+ JS_CRYPTO_PRIMITIVE(js_crypto_ec_point)
55
+ JS_CRYPTO_PRIMITIVE(js_crypto_ec_private)
56
+ #undef JS_CRYPTO_PRIMITIVE
57
+
58
+ #endif /* JS_CRYPTO_H */
@@ -0,0 +1,37 @@
1
+ /*
2
+ * js_error.h — Error objects (ECMAScript §20.5; ADR 0004).
3
+ *
4
+ * An error is an ordinary object of class js_class_error (it has [[ErrorData]]).
5
+ * The js_throw_*_error helpers in js_exception.h create and throw them.
6
+ */
7
+ #ifndef JS_ERROR_H
8
+ #define JS_ERROR_H
9
+
10
+ #include "js_function.h"
11
+
12
+ /* The native errors, in the order of their JS_INTRINSIC_*_PROTOTYPE slots. */
13
+ typedef enum JSErrorKind {
14
+ JS_ERROR,
15
+ JS_EVAL_ERROR,
16
+ JS_RANGE_ERROR,
17
+ JS_REFERENCE_ERROR,
18
+ JS_SYNTAX_ERROR,
19
+ JS_TYPE_ERROR,
20
+ JS_URI_ERROR,
21
+ JS_AGGREGATE_ERROR, /* §20.5.7: its constructor takes the errors first */
22
+ JS_ERROR_KIND_COUNT
23
+ } JSErrorKind;
24
+
25
+ extern const JSClass js_class_error;
26
+
27
+ static inline bool js_is_error(JSValue v) {
28
+ return js_is_object(v) && js_as_object(v)->shape->cls == &js_class_error;
29
+ }
30
+
31
+ /* A new error of `kind` in ctx's realm; `message` is a string, or undefined for none. */
32
+ JSValue js_new_error(JSContext *ctx, JSErrorKind kind, JSValue message);
33
+
34
+ /* Error.prototype.toString on any object: "name: message", either part omitted when empty. */
35
+ JS_WARN_UNUSED JSValue js_error_to_string(JSContext *ctx, JSValue o);
36
+
37
+ #endif /* JS_ERROR_H */
@@ -0,0 +1,65 @@
1
+ /*
2
+ * js_exception.h — exception propagation (ADR 0004).
3
+ *
4
+ * A function that fails returns JS_EXCEPTION (or < 0 for int results) and
5
+ * leaves the error in ctx->rt->exception. Callers check and propagate.
6
+ *
7
+ * The js_throw_*_error helpers create an Error object of the calling realm
8
+ * (js_error.h) with the formatted message, and throw it.
9
+ */
10
+ #ifndef JS_EXCEPTION_H
11
+ #define JS_EXCEPTION_H
12
+
13
+ #include <assert.h>
14
+ #include <stdbool.h>
15
+
16
+ #include "jscontext.h"
17
+
18
+ /* ---- Throwing: set the pending exception, return JS_EXCEPTION ---------- */
19
+
20
+ /* Prints "jsrt: fatal: <message>" in one write and exits with status 70 (out of memory, broken
21
+ * invariants). Public for host packages (node/). */
22
+ _Noreturn void js_fatal(const char *fmt, ...);
23
+
24
+ JS_WARN_UNUSED JSValue js_throw(JSContext *ctx, JSValue error);
25
+ JS_WARN_UNUSED JSValue js_throw_type_error(JSContext *ctx, const char *fmt, ...);
26
+ JS_WARN_UNUSED JSValue js_throw_range_error(JSContext *ctx, const char *fmt, ...);
27
+ JS_WARN_UNUSED JSValue js_throw_reference_error(JSContext *ctx, const char *fmt, ...);
28
+ JS_WARN_UNUSED JSValue js_throw_syntax_error(JSContext *ctx, const char *fmt, ...);
29
+ JS_WARN_UNUSED JSValue js_throw_uri_error(JSContext *ctx, const char *fmt, ...);
30
+ JS_WARN_UNUSED JSValue js_throw_stack_overflow(JSContext *ctx); /* RangeError: Maximum call stack size exceeded */
31
+
32
+ /* ---- Catching ---------------------------------------------------------- */
33
+
34
+ /* Returns the pending error and clears it. A catch or finally calls this first. */
35
+ JSValue js_take_exception(JSContext *ctx);
36
+
37
+ static inline bool js_has_exception(const JSContext *ctx) {
38
+ return !js_is_empty(ctx->rt->exception);
39
+ }
40
+
41
+ /* For hand-written runtime code; generated code writes the check itself. */
42
+ #define JS_RETURN_IF_EXC(v) \
43
+ do { if (js_is_exception(v)) return JS_EXCEPTION; } while (0)
44
+
45
+ /* Debug builds: a JS_EXCEPTION received as an argument means a missed check upstream. */
46
+ #define JS_ASSERT_NOT_EXC(v) assert(!js_is_exception(v) && "missed exception check")
47
+
48
+ /* ---- Stack overflow ---------------------------------------------------- */
49
+
50
+ #if defined(_MSC_VER) && !defined(__clang__)
51
+ #include <intrin.h>
52
+ #define JS_FRAME_ADDRESS() ((uintptr_t)_AddressOfReturnAddress())
53
+ #else
54
+ #define JS_FRAME_ADDRESS() ((uintptr_t)__builtin_frame_address(0))
55
+ #endif
56
+
57
+ /* At the entry of every non-leaf generated function, and of runtime code
58
+ * that recurses on user data. */
59
+ #define JS_CHECK_STACK(ctx) \
60
+ do { \
61
+ if (JS_UNLIKELY(JS_FRAME_ADDRESS() < (ctx)->stack_limit)) \
62
+ return js_throw_stack_overflow(ctx); \
63
+ } while (0)
64
+
65
+ #endif /* JS_EXCEPTION_H */
@@ -0,0 +1,167 @@
1
+ /*
2
+ * js_function.h — function objects and calls (ADR 0006).
3
+ *
4
+ * A function is an object (a JSFunction cell). Every function has a generic
5
+ * entry with one signature; compiled functions also have a direct entry the
6
+ * compiler calls when it knows the callee.
7
+ */
8
+ #ifndef JS_FUNCTION_H
9
+ #define JS_FUNCTION_H
10
+
11
+ #include "js_object.h"
12
+
13
+ /* The generic entry (ADR 0006): `this_val` is raw (coercion happens in the
14
+ * callee); `new_target` is undefined for [[Call]], the constructor for [[Construct]]. */
15
+ typedef JSValue (*JSNativeFn)(JSContext *ctx, JSValue callee, JSValue this_val,
16
+ uint32_t argc, const JSValue *argv, JSValue new_target);
17
+
18
+ /* JSFunction.flags */
19
+ #define JS_FN_STRICT 0x01u
20
+ #define JS_FN_CONSTRUCTOR 0x02u /* has [[Construct]] */
21
+ #define JS_FN_ORDINARY 0x04u /* compiled ordinary function: [[Construct]] creates `this` (OrdinaryCreateFromConstructor) */
22
+ #define JS_FN_ARROW 0x08u
23
+ #define JS_FN_CLASS_CTOR 0x10u /* throws when called without new */
24
+ #define JS_FN_DERIVED 0x20u /* a derived class constructor: [[Construct]] doesn't create `this` (super() does) */
25
+ #define JS_FN_BOUND 0x40u /* a bound function (Function.prototype.bind): home_object is the target */
26
+ #define JS_FN_GENERATOR 0x80u /* function* (ADR 0007): its [[Prototype]] and `prototype` differ */
27
+ #define JS_FN_ASYNC 0x100u /* async function (ADR 0007): [[Prototype]] %AsyncFunction.prototype% */
28
+ #define JS_FN_PROXY 0x200u /* a callable proxy: it runs in its caller's realm */
29
+
30
+ /* Emitted by the compiler as static const data, one per function in the source. */
31
+ typedef struct JSFunctionInfo {
32
+ JSNativeFn generic;
33
+ const JSString *name; /* a static string cell */
34
+ uint32_t length; /* params before the first default or rest */
35
+ uint32_t flags; /* JS_FN_* */
36
+ const JSString *source_text; /* the module's whole source (static); NULL for builtins */
37
+ const char *file;
38
+ uint32_t source_start; /* Function.prototype.toString: this function's slice of it */
39
+ uint32_t source_length;
40
+ } JSFunctionInfo;
41
+
42
+ /* A scope's captured variables (ADR 0006, "Closures"): one cell per scope that has
43
+ * any, linked to the enclosing scope's. Generated code reaches a variable by a static
44
+ * (depth, slot). Slots start EMPTY (zeroed memory): uninitialized let/const. */
45
+ typedef struct JSEnv { /* kind = ENV */
46
+ JSCell cell; /* aux = number of slots */
47
+ struct JSEnv *parent; /* NULL at the outermost */
48
+ JSValue vars[];
49
+ } JSEnv;
50
+
51
+ /* The environment in a JSValue: generated code keeps it in an ordinary C local. */
52
+ static inline JSEnv *js_as_env(JSValue v) { return js_is_cell(v) ? (JSEnv *)js_as_cell(v) : NULL; }
53
+
54
+ /* A new environment of `count` slots (EMPTY) whose parent is `parent` (an environment or undefined). */
55
+ JSValue js_new_env(JSContext *ctx, JSValue parent, uint32_t count);
56
+ /* A copy with the same parent and values: `for (let …)` gives each iteration its own (§14.7.4.4). */
57
+ JSValue js_env_copy(JSContext *ctx, JSValue env);
58
+
59
+ static inline JSEnv *js_env_up(JSValue env, uint32_t depth) {
60
+ JSEnv *e = js_as_env(env);
61
+ while (depth--) e = e->parent;
62
+ return e;
63
+ }
64
+ static inline JSValue js_env_get(JSValue env, uint32_t depth, uint32_t slot) {
65
+ return js_env_up(env, depth)->vars[slot];
66
+ }
67
+ static inline void js_env_set(JSContext *ctx, JSValue env, uint32_t depth, uint32_t slot, JSValue v) {
68
+ JSEnv *e = js_env_up(env, depth);
69
+ js_store(ctx, &e->cell, &e->vars[slot], v);
70
+ }
71
+
72
+ typedef struct JSFunction { /* kind = FUNCTION */
73
+ JSObject obj;
74
+ JSNativeFn entry; /* copy of info->generic: one load at call time */
75
+ const JSFunctionInfo *info; /* NULL for builtins created at runtime */
76
+ struct JSEnv *env; /* captured scope (M4), or NULL */
77
+ JSValue home_object; /* methods: where `super` looks (M4) */
78
+ JSValue bound_this; /* arrows: the captured `this`, else EMPTY (M4) */
79
+ JSContext *realm; /* the realm the function was created in (ADR 0011) */
80
+ uint32_t flags;
81
+ uint32_t pad_;
82
+ } JSFunction;
83
+
84
+ extern const JSClass js_class_function;
85
+
86
+ static inline bool js_is_function(JSValue v) {
87
+ return js_is_cell(v) && js_as_cell(v)->kind == JS_CELL_FUNCTION;
88
+ }
89
+ static inline JSFunction *js_as_function(JSValue v) { return (JSFunction *)js_as_cell(v); }
90
+
91
+ /* IsCallable / IsConstructor (Proxy and bound functions arrive later). */
92
+ static inline bool js_is_callable(JSValue v) { return js_is_function(v); }
93
+ static inline bool js_is_constructor(JSValue v) {
94
+ return js_is_function(v) && (js_as_function(v)->flags & JS_FN_CONSTRUCTOR);
95
+ }
96
+
97
+ /* A function object for compiled code: name and length from `info`. */
98
+ JSValue js_new_function(JSContext *ctx, const JSFunctionInfo *info);
99
+ /* The same, closing over `env` (an environment, or undefined for none). */
100
+ JSValue js_new_closure(JSContext *ctx, const JSFunctionInfo *info, JSValue env);
101
+ /* The environment a closure captured, as a JSValue (undefined if none): for generic entries. */
102
+ static inline JSValue js_function_env(JSValue f) {
103
+ JSEnv *e = js_as_function(f)->env;
104
+ return e ? js_cell(&e->cell) : JS_UNDEFINED;
105
+ }
106
+ /* A builtin: `name` is a string, `flags` JS_FN_*. Constructors get no automatic
107
+ * `prototype`: builtins define theirs. */
108
+ JSValue js_new_native(JSContext *ctx, JSNativeFn fn, JSValue name, uint32_t length, uint32_t flags);
109
+ /* Defines a builtin method `name` on `o` (writable, configurable, not enumerable). */
110
+ JSValue js_define_method(JSContext *ctx, JSObject *o, const char *name, JSNativeFn fn, uint32_t length);
111
+
112
+ /* [[Call]] and [[Construct]]. `callee_text` names the callee in "x is not a function"
113
+ * (the source text at a call site; NULL for runtime callers). */
114
+ JS_WARN_UNUSED JSValue js_call(JSContext *ctx, JSValue f, JSValue this_val, uint32_t argc, const JSValue *argv);
115
+ JS_WARN_UNUSED JSValue js_call_site(JSContext *ctx, JSValue f, JSValue this_val, uint32_t argc, const JSValue *argv, const char *callee_text);
116
+ JS_WARN_UNUSED JSValue js_construct(JSContext *ctx, JSValue f, uint32_t argc, const JSValue *argv, JSValue new_target, const char *callee_text);
117
+ /* The same with the arguments in an array (a call with spreads). */
118
+ JS_WARN_UNUSED JSValue js_call_spread(JSContext *ctx, JSValue f, JSValue this_val, JSValue args, const char *callee_text);
119
+ JS_WARN_UNUSED JSValue js_construct_spread(JSContext *ctx, JSValue f, JSValue args, const char *callee_text);
120
+
121
+ /* GetPrototypeFromConstructor: new_target.prototype, or the intrinsic `fallback`
122
+ * of new_target's realm if that isn't an object. */
123
+ /* GetFunctionRealm: f's realm (a proxy's target's), ctx for non-functions; NULL with a TypeError for a revoked proxy. */
124
+ JSContext *js_function_realm(JSContext *ctx, JSValue f);
125
+ JS_WARN_UNUSED JSValue js_get_prototype_from_constructor(JSContext *ctx, JSValue new_target, JSIntrinsic fallback);
126
+ /* OrdinaryCreateFromConstructor: an ordinary object with that prototype. */
127
+ JS_WARN_UNUSED JSValue js_create_from_constructor(JSContext *ctx, JSValue new_target, JSIntrinsic fallback);
128
+
129
+ /* An arguments object (§10.4.4) from the array of actual arguments. `slots` (static,
130
+ * from the compiler) maps index i < nmapped to its parameter's slot in `env`, UINT32_MAX
131
+ * for none: a mapped (sloppy) object. NULL: unmapped, with a throwing `callee`. */
132
+ extern const JSClass js_class_arguments;
133
+ JSValue js_new_arguments(JSContext *ctx, JSValue args, JSValue callee, JSValue env, const uint32_t *slots, uint32_t nmapped);
134
+ bool js_is_arguments(JSValue v);
135
+
136
+ /* ---- Classes (§15.7) and super ----------------------------------------------------- */
137
+
138
+ /* ClassDefinitionEvaluation steps 5–16: checks the heritage (EMPTY: none), makes the
139
+ * prototype (inheriting from heritage.prototype), links ctor to the parent class, sets
140
+ * ctor.prototype and prototype.constructor. Returns the prototype. */
141
+ JS_WARN_UNUSED JSValue js_class_setup(JSContext *ctx, JSValue ctor, JSValue heritage);
142
+ /* A method's [[HomeObject]]: where `super` looks. */
143
+ void js_set_home_object(JSContext *ctx, JSValue fn, JSValue home);
144
+ /* A class method (0), getter (1) or setter (2): not enumerable. */
145
+ void js_define_class_member(JSContext *ctx, JSObject *target, JSValue key, int kind, JSValue fn);
146
+ /* super[key] and super[key] = v, from the function whose home object's prototype holds them. */
147
+ JS_WARN_UNUSED JSValue js_super_get(JSContext *ctx, JSValue callee, JSValue key, JSValue this_val);
148
+ JS_WARN_UNUSED int js_super_set(JSContext *ctx, JSValue callee, JSValue key, JSValue v, JSValue this_val);
149
+ /* super(...args): constructs the constructor's own [[Prototype]] (the parent class). */
150
+ JS_WARN_UNUSED JSValue js_super_construct(JSContext *ctx, JSValue callee, JSValue new_target, uint32_t argc, const JSValue *argv);
151
+ JS_WARN_UNUSED JSValue js_super_construct_spread(JSContext *ctx, JSValue callee, JSValue new_target, JSValue args);
152
+ /* Binding `this` after super(): a ReferenceError if it already was. */
153
+ JS_WARN_UNUSED JSValue js_bind_this(JSContext *ctx, JSValue current, JSValue v);
154
+ /* A derived constructor's `this`: a ReferenceError before super(). */
155
+ JS_WARN_UNUSED JSValue js_check_this(JSContext *ctx, JSValue this_val);
156
+ /* What `return v` in a derived constructor produces: v if an object, else this (if bound). */
157
+ JS_WARN_UNUSED JSValue js_derived_return(JSContext *ctx, JSValue v, JSValue this_val);
158
+
159
+ /* Function.prototype.bind's result (§10.4.1). */
160
+ JS_WARN_UNUSED JSValue js_bind_function(JSContext *ctx, JSValue target, JSValue bound_this, uint32_t argc, const JSValue *argv);
161
+
162
+ /* instanceof (InstanceofOperator: @@hasInstance, else OrdinaryHasInstance) and `in`. */
163
+ JS_WARN_UNUSED JSValue js_instanceof(JSContext *ctx, JSValue v, JSValue target);
164
+ JS_WARN_UNUSED JSValue js_ordinary_has_instance(JSContext *ctx, JSValue target, JSValue v);
165
+ JS_WARN_UNUSED JSValue js_in(JSContext *ctx, JSValue key, JSValue obj);
166
+
167
+ #endif /* JS_FUNCTION_H */