@scriptc/runtime 0.0.0 → 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 (416) hide show
  1. package/LICENSE +202 -0
  2. package/package.json +16 -6
  3. package/src/scr_array.c +488 -0
  4. package/src/scr_assert.c +1393 -0
  5. package/src/scr_async.c +2593 -0
  6. package/src/scr_async_dyn.c +607 -0
  7. package/src/scr_bytes.c +1425 -0
  8. package/src/scr_bytes_io.c +161 -0
  9. package/src/scr_child.c +3587 -0
  10. package/src/scr_closure.c +214 -0
  11. package/src/scr_console.c +143 -0
  12. package/src/scr_cycle.c +218 -0
  13. package/src/scr_dc.c +805 -0
  14. package/src/scr_dgram.c +1007 -0
  15. package/src/scr_dyn_handle.c +154 -0
  16. package/src/scr_dyn_invoke.c +644 -0
  17. package/src/scr_error.c +332 -0
  18. package/src/scr_events.c +714 -0
  19. package/src/scr_events_emitter.c +699 -0
  20. package/src/scr_exception.c +242 -0
  21. package/src/scr_fetch.c +1130 -0
  22. package/src/scr_fetch_curl.c +654 -0
  23. package/src/scr_http.c +3482 -0
  24. package/src/scr_http2.c +3030 -0
  25. package/src/scr_inspect.c +803 -0
  26. package/src/scr_inspect_island.c +51 -0
  27. package/src/scr_island.c +9363 -0
  28. package/src/scr_json.c +2151 -0
  29. package/src/scr_lib.c +3612 -0
  30. package/src/scr_loop_epoll.c +241 -0
  31. package/src/scr_loop_kqueue.c +121 -0
  32. package/src/scr_loop_wsapoll.c +208 -0
  33. package/src/scr_map.c +591 -0
  34. package/src/scr_net.c +3017 -0
  35. package/src/scr_net_island.c +458 -0
  36. package/src/scr_number.c +115 -0
  37. package/src/scr_object.c +25 -0
  38. package/src/scr_path.c +1266 -0
  39. package/src/scr_platform.h +119 -0
  40. package/src/scr_readline.c +287 -0
  41. package/src/scr_regex.c +1080 -0
  42. package/src/scr_runtime.h +5046 -0
  43. package/src/scr_stream.c +2877 -0
  44. package/src/scr_string.c +1264 -0
  45. package/src/scr_symbol.c +132 -0
  46. package/src/scr_test.c +662 -0
  47. package/src/scr_tls.c +1520 -0
  48. package/src/scr_union.c +105 -0
  49. package/src/scr_url.c +911 -0
  50. package/src/scr_url_internal.h +29 -0
  51. package/src/scr_url_params.c +561 -0
  52. package/src/scr_watch.c +568 -0
  53. package/src/scr_web.c +1778 -0
  54. package/src/scr_win.c +76 -0
  55. package/src/scr_zlib.c +197 -0
  56. package/src/scr_zlib_island.c +15 -0
  57. package/vendor/README.md +52 -0
  58. package/vendor/curl/COPYRIGHT +534 -0
  59. package/vendor/curl/include/curl/curl.h +3214 -0
  60. package/vendor/curl/include/curl/curlver.h +79 -0
  61. package/vendor/curl/include/curl/easy.h +125 -0
  62. package/vendor/curl/include/curl/header.h +74 -0
  63. package/vendor/curl/include/curl/mprintf.h +52 -0
  64. package/vendor/curl/include/curl/multi.h +460 -0
  65. package/vendor/curl/include/curl/options.h +70 -0
  66. package/vendor/curl/include/curl/stdcheaders.h +35 -0
  67. package/vendor/curl/include/curl/system.h +508 -0
  68. package/vendor/curl/include/curl/typecheck-gcc.h +716 -0
  69. package/vendor/curl/include/curl/urlapi.h +149 -0
  70. package/vendor/curl/include/curl/websockets.h +84 -0
  71. package/vendor/mbedtls/LICENSE +553 -0
  72. package/vendor/mbedtls/include/CMakeLists.txt +22 -0
  73. package/vendor/mbedtls/include/mbedtls/aes.h +631 -0
  74. package/vendor/mbedtls/include/mbedtls/aria.h +343 -0
  75. package/vendor/mbedtls/include/mbedtls/asn1.h +642 -0
  76. package/vendor/mbedtls/include/mbedtls/asn1write.h +390 -0
  77. package/vendor/mbedtls/include/mbedtls/base64.h +82 -0
  78. package/vendor/mbedtls/include/mbedtls/bignum.h +1088 -0
  79. package/vendor/mbedtls/include/mbedtls/block_cipher.h +76 -0
  80. package/vendor/mbedtls/include/mbedtls/build_info.h +194 -0
  81. package/vendor/mbedtls/include/mbedtls/camellia.h +305 -0
  82. package/vendor/mbedtls/include/mbedtls/ccm.h +526 -0
  83. package/vendor/mbedtls/include/mbedtls/chacha20.h +209 -0
  84. package/vendor/mbedtls/include/mbedtls/chachapoly.h +351 -0
  85. package/vendor/mbedtls/include/mbedtls/check_config.h +1149 -0
  86. package/vendor/mbedtls/include/mbedtls/cipher.h +1250 -0
  87. package/vendor/mbedtls/include/mbedtls/cmac.h +246 -0
  88. package/vendor/mbedtls/include/mbedtls/compat-2.x.h +46 -0
  89. package/vendor/mbedtls/include/mbedtls/config_adjust_legacy_crypto.h +578 -0
  90. package/vendor/mbedtls/include/mbedtls/config_adjust_legacy_from_psa.h +873 -0
  91. package/vendor/mbedtls/include/mbedtls/config_adjust_psa_from_legacy.h +359 -0
  92. package/vendor/mbedtls/include/mbedtls/config_adjust_psa_superset_legacy.h +145 -0
  93. package/vendor/mbedtls/include/mbedtls/config_adjust_ssl.h +91 -0
  94. package/vendor/mbedtls/include/mbedtls/config_adjust_x509.h +35 -0
  95. package/vendor/mbedtls/include/mbedtls/config_psa.h +61 -0
  96. package/vendor/mbedtls/include/mbedtls/constant_time.h +36 -0
  97. package/vendor/mbedtls/include/mbedtls/ctr_drbg.h +596 -0
  98. package/vendor/mbedtls/include/mbedtls/debug.h +156 -0
  99. package/vendor/mbedtls/include/mbedtls/des.h +385 -0
  100. package/vendor/mbedtls/include/mbedtls/dhm.h +972 -0
  101. package/vendor/mbedtls/include/mbedtls/ecdh.h +455 -0
  102. package/vendor/mbedtls/include/mbedtls/ecdsa.h +674 -0
  103. package/vendor/mbedtls/include/mbedtls/ecjpake.h +298 -0
  104. package/vendor/mbedtls/include/mbedtls/ecp.h +1517 -0
  105. package/vendor/mbedtls/include/mbedtls/entropy.h +274 -0
  106. package/vendor/mbedtls/include/mbedtls/error.h +201 -0
  107. package/vendor/mbedtls/include/mbedtls/gcm.h +387 -0
  108. package/vendor/mbedtls/include/mbedtls/hkdf.h +124 -0
  109. package/vendor/mbedtls/include/mbedtls/hmac_drbg.h +434 -0
  110. package/vendor/mbedtls/include/mbedtls/lms.h +440 -0
  111. package/vendor/mbedtls/include/mbedtls/mbedtls_config.h +4446 -0
  112. package/vendor/mbedtls/include/mbedtls/md.h +526 -0
  113. package/vendor/mbedtls/include/mbedtls/md5.h +190 -0
  114. package/vendor/mbedtls/include/mbedtls/memory_buffer_alloc.h +142 -0
  115. package/vendor/mbedtls/include/mbedtls/net_sockets.h +299 -0
  116. package/vendor/mbedtls/include/mbedtls/nist_kw.h +166 -0
  117. package/vendor/mbedtls/include/mbedtls/oid.h +727 -0
  118. package/vendor/mbedtls/include/mbedtls/pem.h +160 -0
  119. package/vendor/mbedtls/include/mbedtls/pk.h +1303 -0
  120. package/vendor/mbedtls/include/mbedtls/pkcs12.h +186 -0
  121. package/vendor/mbedtls/include/mbedtls/pkcs5.h +198 -0
  122. package/vendor/mbedtls/include/mbedtls/pkcs7.h +252 -0
  123. package/vendor/mbedtls/include/mbedtls/platform.h +516 -0
  124. package/vendor/mbedtls/include/mbedtls/platform_time.h +79 -0
  125. package/vendor/mbedtls/include/mbedtls/platform_util.h +247 -0
  126. package/vendor/mbedtls/include/mbedtls/poly1305.h +168 -0
  127. package/vendor/mbedtls/include/mbedtls/private_access.h +20 -0
  128. package/vendor/mbedtls/include/mbedtls/psa_util.h +207 -0
  129. package/vendor/mbedtls/include/mbedtls/ripemd160.h +136 -0
  130. package/vendor/mbedtls/include/mbedtls/rsa.h +1170 -0
  131. package/vendor/mbedtls/include/mbedtls/sha1.h +219 -0
  132. package/vendor/mbedtls/include/mbedtls/sha256.h +200 -0
  133. package/vendor/mbedtls/include/mbedtls/sha3.h +172 -0
  134. package/vendor/mbedtls/include/mbedtls/sha512.h +208 -0
  135. package/vendor/mbedtls/include/mbedtls/ssl.h +5887 -0
  136. package/vendor/mbedtls/include/mbedtls/ssl_cache.h +187 -0
  137. package/vendor/mbedtls/include/mbedtls/ssl_ciphersuites.h +482 -0
  138. package/vendor/mbedtls/include/mbedtls/ssl_cookie.h +106 -0
  139. package/vendor/mbedtls/include/mbedtls/ssl_ticket.h +199 -0
  140. package/vendor/mbedtls/include/mbedtls/threading.h +167 -0
  141. package/vendor/mbedtls/include/mbedtls/timing.h +94 -0
  142. package/vendor/mbedtls/include/mbedtls/version.h +78 -0
  143. package/vendor/mbedtls/include/mbedtls/x509.h +500 -0
  144. package/vendor/mbedtls/include/mbedtls/x509_crl.h +184 -0
  145. package/vendor/mbedtls/include/mbedtls/x509_crt.h +1208 -0
  146. package/vendor/mbedtls/include/mbedtls/x509_csr.h +382 -0
  147. package/vendor/mbedtls/include/psa/build_info.h +20 -0
  148. package/vendor/mbedtls/include/psa/crypto.h +4998 -0
  149. package/vendor/mbedtls/include/psa/crypto_adjust_auto_enabled.h +31 -0
  150. package/vendor/mbedtls/include/psa/crypto_adjust_config_dependencies.h +51 -0
  151. package/vendor/mbedtls/include/psa/crypto_adjust_config_key_pair_types.h +101 -0
  152. package/vendor/mbedtls/include/psa/crypto_adjust_config_synonyms.h +49 -0
  153. package/vendor/mbedtls/include/psa/crypto_builtin_composites.h +214 -0
  154. package/vendor/mbedtls/include/psa/crypto_builtin_key_derivation.h +118 -0
  155. package/vendor/mbedtls/include/psa/crypto_builtin_primitives.h +114 -0
  156. package/vendor/mbedtls/include/psa/crypto_compat.h +230 -0
  157. package/vendor/mbedtls/include/psa/crypto_config.h +145 -0
  158. package/vendor/mbedtls/include/psa/crypto_driver_common.h +44 -0
  159. package/vendor/mbedtls/include/psa/crypto_driver_contexts_composites.h +151 -0
  160. package/vendor/mbedtls/include/psa/crypto_driver_contexts_key_derivation.h +52 -0
  161. package/vendor/mbedtls/include/psa/crypto_driver_contexts_primitives.h +105 -0
  162. package/vendor/mbedtls/include/psa/crypto_extra.h +2145 -0
  163. package/vendor/mbedtls/include/psa/crypto_legacy.h +88 -0
  164. package/vendor/mbedtls/include/psa/crypto_platform.h +102 -0
  165. package/vendor/mbedtls/include/psa/crypto_se_driver.h +1383 -0
  166. package/vendor/mbedtls/include/psa/crypto_sizes.h +1319 -0
  167. package/vendor/mbedtls/include/psa/crypto_struct.h +527 -0
  168. package/vendor/mbedtls/include/psa/crypto_types.h +508 -0
  169. package/vendor/mbedtls/include/psa/crypto_values.h +2782 -0
  170. package/vendor/mbedtls/library/aes.c +2294 -0
  171. package/vendor/mbedtls/library/aesce.c +624 -0
  172. package/vendor/mbedtls/library/aesce.h +136 -0
  173. package/vendor/mbedtls/library/aesni.c +846 -0
  174. package/vendor/mbedtls/library/aesni.h +162 -0
  175. package/vendor/mbedtls/library/alignment.h +704 -0
  176. package/vendor/mbedtls/library/aria.c +969 -0
  177. package/vendor/mbedtls/library/asn1parse.c +468 -0
  178. package/vendor/mbedtls/library/asn1write.c +440 -0
  179. package/vendor/mbedtls/library/base64.c +322 -0
  180. package/vendor/mbedtls/library/base64_internal.h +45 -0
  181. package/vendor/mbedtls/library/bignum.c +2583 -0
  182. package/vendor/mbedtls/library/bignum_core.c +1240 -0
  183. package/vendor/mbedtls/library/bignum_core.h +872 -0
  184. package/vendor/mbedtls/library/bignum_core_invasive.h +38 -0
  185. package/vendor/mbedtls/library/bignum_internal.h +122 -0
  186. package/vendor/mbedtls/library/bignum_mod.c +394 -0
  187. package/vendor/mbedtls/library/bignum_mod.h +452 -0
  188. package/vendor/mbedtls/library/bignum_mod_raw.c +276 -0
  189. package/vendor/mbedtls/library/bignum_mod_raw.h +416 -0
  190. package/vendor/mbedtls/library/bignum_mod_raw_invasive.h +34 -0
  191. package/vendor/mbedtls/library/block_cipher.c +207 -0
  192. package/vendor/mbedtls/library/block_cipher_internal.h +99 -0
  193. package/vendor/mbedtls/library/bn_mul.h +1094 -0
  194. package/vendor/mbedtls/library/camellia.c +1058 -0
  195. package/vendor/mbedtls/library/ccm.c +777 -0
  196. package/vendor/mbedtls/library/chacha20.c +563 -0
  197. package/vendor/mbedtls/library/chacha20_internal.h +23 -0
  198. package/vendor/mbedtls/library/chachapoly.c +487 -0
  199. package/vendor/mbedtls/library/check_crypto_config.h +136 -0
  200. package/vendor/mbedtls/library/cipher.c +1712 -0
  201. package/vendor/mbedtls/library/cipher_invasive.h +28 -0
  202. package/vendor/mbedtls/library/cipher_wrap.c +2482 -0
  203. package/vendor/mbedtls/library/cipher_wrap.h +178 -0
  204. package/vendor/mbedtls/library/cmac.c +1067 -0
  205. package/vendor/mbedtls/library/common.h +487 -0
  206. package/vendor/mbedtls/library/constant_time.c +247 -0
  207. package/vendor/mbedtls/library/constant_time_impl.h +541 -0
  208. package/vendor/mbedtls/library/constant_time_internal.h +579 -0
  209. package/vendor/mbedtls/library/ctr.h +35 -0
  210. package/vendor/mbedtls/library/ctr_drbg.c +1016 -0
  211. package/vendor/mbedtls/library/debug.c +475 -0
  212. package/vendor/mbedtls/library/debug_internal.h +185 -0
  213. package/vendor/mbedtls/library/des.c +1042 -0
  214. package/vendor/mbedtls/library/dhm.c +700 -0
  215. package/vendor/mbedtls/library/ecdh.c +696 -0
  216. package/vendor/mbedtls/library/ecdsa.c +858 -0
  217. package/vendor/mbedtls/library/ecjpake.c +1216 -0
  218. package/vendor/mbedtls/library/ecp.c +3674 -0
  219. package/vendor/mbedtls/library/ecp_curves.c +6125 -0
  220. package/vendor/mbedtls/library/ecp_curves_new.c +9 -0
  221. package/vendor/mbedtls/library/ecp_internal_alt.h +287 -0
  222. package/vendor/mbedtls/library/ecp_invasive.h +305 -0
  223. package/vendor/mbedtls/library/entropy.c +680 -0
  224. package/vendor/mbedtls/library/entropy_poll.c +233 -0
  225. package/vendor/mbedtls/library/entropy_poll.h +64 -0
  226. package/vendor/mbedtls/library/error.c +878 -0
  227. package/vendor/mbedtls/library/gcm.c +1330 -0
  228. package/vendor/mbedtls/library/hkdf.c +161 -0
  229. package/vendor/mbedtls/library/hmac_drbg.c +633 -0
  230. package/vendor/mbedtls/library/lmots.c +789 -0
  231. package/vendor/mbedtls/library/lmots.h +288 -0
  232. package/vendor/mbedtls/library/lms.c +778 -0
  233. package/vendor/mbedtls/library/md.c +1108 -0
  234. package/vendor/mbedtls/library/md5.c +426 -0
  235. package/vendor/mbedtls/library/md_psa.h +26 -0
  236. package/vendor/mbedtls/library/md_wrap.h +46 -0
  237. package/vendor/mbedtls/library/memory_buffer_alloc.c +751 -0
  238. package/vendor/mbedtls/library/mps_common.h +181 -0
  239. package/vendor/mbedtls/library/mps_error.h +89 -0
  240. package/vendor/mbedtls/library/mps_reader.c +538 -0
  241. package/vendor/mbedtls/library/mps_reader.h +366 -0
  242. package/vendor/mbedtls/library/mps_trace.c +112 -0
  243. package/vendor/mbedtls/library/mps_trace.h +154 -0
  244. package/vendor/mbedtls/library/net_sockets.c +694 -0
  245. package/vendor/mbedtls/library/nist_kw.c +729 -0
  246. package/vendor/mbedtls/library/oid.c +1166 -0
  247. package/vendor/mbedtls/library/padlock.c +157 -0
  248. package/vendor/mbedtls/library/padlock.h +111 -0
  249. package/vendor/mbedtls/library/pem.c +554 -0
  250. package/vendor/mbedtls/library/pk.c +1602 -0
  251. package/vendor/mbedtls/library/pk_ecc.c +261 -0
  252. package/vendor/mbedtls/library/pk_internal.h +241 -0
  253. package/vendor/mbedtls/library/pk_wrap.c +1618 -0
  254. package/vendor/mbedtls/library/pk_wrap.h +138 -0
  255. package/vendor/mbedtls/library/pkcs12.c +437 -0
  256. package/vendor/mbedtls/library/pkcs5.c +500 -0
  257. package/vendor/mbedtls/library/pkcs7.c +787 -0
  258. package/vendor/mbedtls/library/pkparse.c +1392 -0
  259. package/vendor/mbedtls/library/pkwrite.c +631 -0
  260. package/vendor/mbedtls/library/pkwrite.h +121 -0
  261. package/vendor/mbedtls/library/platform.c +402 -0
  262. package/vendor/mbedtls/library/platform_util.c +258 -0
  263. package/vendor/mbedtls/library/poly1305.c +492 -0
  264. package/vendor/mbedtls/library/psa_crypto.c +9532 -0
  265. package/vendor/mbedtls/library/psa_crypto_aead.c +646 -0
  266. package/vendor/mbedtls/library/psa_crypto_aead.h +499 -0
  267. package/vendor/mbedtls/library/psa_crypto_cipher.c +747 -0
  268. package/vendor/mbedtls/library/psa_crypto_cipher.h +316 -0
  269. package/vendor/mbedtls/library/psa_crypto_client.c +22 -0
  270. package/vendor/mbedtls/library/psa_crypto_core.h +983 -0
  271. package/vendor/mbedtls/library/psa_crypto_core_common.h +52 -0
  272. package/vendor/mbedtls/library/psa_crypto_driver_wrappers.h +2896 -0
  273. package/vendor/mbedtls/library/psa_crypto_driver_wrappers_no_static.c +256 -0
  274. package/vendor/mbedtls/library/psa_crypto_driver_wrappers_no_static.h +31 -0
  275. package/vendor/mbedtls/library/psa_crypto_ecp.c +594 -0
  276. package/vendor/mbedtls/library/psa_crypto_ecp.h +267 -0
  277. package/vendor/mbedtls/library/psa_crypto_ffdh.c +361 -0
  278. package/vendor/mbedtls/library/psa_crypto_ffdh.h +131 -0
  279. package/vendor/mbedtls/library/psa_crypto_hash.c +470 -0
  280. package/vendor/mbedtls/library/psa_crypto_hash.h +211 -0
  281. package/vendor/mbedtls/library/psa_crypto_invasive.h +92 -0
  282. package/vendor/mbedtls/library/psa_crypto_its.h +131 -0
  283. package/vendor/mbedtls/library/psa_crypto_mac.c +505 -0
  284. package/vendor/mbedtls/library/psa_crypto_mac.h +264 -0
  285. package/vendor/mbedtls/library/psa_crypto_pake.c +571 -0
  286. package/vendor/mbedtls/library/psa_crypto_pake.h +159 -0
  287. package/vendor/mbedtls/library/psa_crypto_random.c +181 -0
  288. package/vendor/mbedtls/library/psa_crypto_random.h +72 -0
  289. package/vendor/mbedtls/library/psa_crypto_random_impl.h +200 -0
  290. package/vendor/mbedtls/library/psa_crypto_rsa.c +714 -0
  291. package/vendor/mbedtls/library/psa_crypto_rsa.h +321 -0
  292. package/vendor/mbedtls/library/psa_crypto_se.c +373 -0
  293. package/vendor/mbedtls/library/psa_crypto_se.h +192 -0
  294. package/vendor/mbedtls/library/psa_crypto_slot_management.c +1137 -0
  295. package/vendor/mbedtls/library/psa_crypto_slot_management.h +344 -0
  296. package/vendor/mbedtls/library/psa_crypto_storage.c +481 -0
  297. package/vendor/mbedtls/library/psa_crypto_storage.h +392 -0
  298. package/vendor/mbedtls/library/psa_its_file.c +254 -0
  299. package/vendor/mbedtls/library/psa_util.c +614 -0
  300. package/vendor/mbedtls/library/psa_util_internal.h +100 -0
  301. package/vendor/mbedtls/library/ripemd160.c +490 -0
  302. package/vendor/mbedtls/library/rsa.c +3121 -0
  303. package/vendor/mbedtls/library/rsa_alt_helpers.c +455 -0
  304. package/vendor/mbedtls/library/rsa_alt_helpers.h +209 -0
  305. package/vendor/mbedtls/library/rsa_internal.h +188 -0
  306. package/vendor/mbedtls/library/sha1.c +480 -0
  307. package/vendor/mbedtls/library/sha256.c +983 -0
  308. package/vendor/mbedtls/library/sha3.c +721 -0
  309. package/vendor/mbedtls/library/sha512.c +1115 -0
  310. package/vendor/mbedtls/library/ssl_cache.c +410 -0
  311. package/vendor/mbedtls/library/ssl_ciphersuites.c +2050 -0
  312. package/vendor/mbedtls/library/ssl_ciphersuites_internal.h +154 -0
  313. package/vendor/mbedtls/library/ssl_client.c +1023 -0
  314. package/vendor/mbedtls/library/ssl_client.h +22 -0
  315. package/vendor/mbedtls/library/ssl_cookie.c +384 -0
  316. package/vendor/mbedtls/library/ssl_debug_helpers.h +85 -0
  317. package/vendor/mbedtls/library/ssl_debug_helpers_generated.c +251 -0
  318. package/vendor/mbedtls/library/ssl_misc.h +3198 -0
  319. package/vendor/mbedtls/library/ssl_msg.c +6619 -0
  320. package/vendor/mbedtls/library/ssl_ticket.c +556 -0
  321. package/vendor/mbedtls/library/ssl_tls.c +10234 -0
  322. package/vendor/mbedtls/library/ssl_tls12_client.c +3688 -0
  323. package/vendor/mbedtls/library/ssl_tls12_server.c +4311 -0
  324. package/vendor/mbedtls/library/ssl_tls13_client.c +3208 -0
  325. package/vendor/mbedtls/library/ssl_tls13_generic.c +1793 -0
  326. package/vendor/mbedtls/library/ssl_tls13_invasive.h +23 -0
  327. package/vendor/mbedtls/library/ssl_tls13_keys.c +1918 -0
  328. package/vendor/mbedtls/library/ssl_tls13_keys.h +668 -0
  329. package/vendor/mbedtls/library/ssl_tls13_server.c +3624 -0
  330. package/vendor/mbedtls/library/threading.c +193 -0
  331. package/vendor/mbedtls/library/threading_internal.h +28 -0
  332. package/vendor/mbedtls/library/timing.c +152 -0
  333. package/vendor/mbedtls/library/version.c +32 -0
  334. package/vendor/mbedtls/library/version_features.c +856 -0
  335. package/vendor/mbedtls/library/x509.c +1776 -0
  336. package/vendor/mbedtls/library/x509_create.c +570 -0
  337. package/vendor/mbedtls/library/x509_crl.c +708 -0
  338. package/vendor/mbedtls/library/x509_crt.c +3311 -0
  339. package/vendor/mbedtls/library/x509_csr.c +648 -0
  340. package/vendor/mbedtls/library/x509_internal.h +101 -0
  341. package/vendor/mbedtls/library/x509write.c +174 -0
  342. package/vendor/mbedtls/library/x509write_crt.c +688 -0
  343. package/vendor/mbedtls/library/x509write_csr.c +336 -0
  344. package/vendor/quickjs-ng/CMakeLists.txt +566 -0
  345. package/vendor/quickjs-ng/LICENSE +24 -0
  346. package/vendor/quickjs-ng/README.md +24 -0
  347. package/vendor/quickjs-ng/api-test.c +1195 -0
  348. package/vendor/quickjs-ng/builtin-array-fromasync.h +119 -0
  349. package/vendor/quickjs-ng/builtin-iterator-zip-keyed.h +332 -0
  350. package/vendor/quickjs-ng/builtin-iterator-zip.h +337 -0
  351. package/vendor/quickjs-ng/cutils.h +1998 -0
  352. package/vendor/quickjs-ng/dtoa.c +1619 -0
  353. package/vendor/quickjs-ng/dtoa.h +87 -0
  354. package/vendor/quickjs-ng/gen/function_source.c +81 -0
  355. package/vendor/quickjs-ng/gen/hello.c +53 -0
  356. package/vendor/quickjs-ng/gen/hello_module.c +106 -0
  357. package/vendor/quickjs-ng/gen/repl.c +3036 -0
  358. package/vendor/quickjs-ng/gen/standalone.c +323 -0
  359. package/vendor/quickjs-ng/gen/test_fib.c +81 -0
  360. package/vendor/quickjs-ng/libregexp-opcode.h +73 -0
  361. package/vendor/quickjs-ng/libregexp.c +3474 -0
  362. package/vendor/quickjs-ng/libregexp.h +101 -0
  363. package/vendor/quickjs-ng/libunicode-table.h +5173 -0
  364. package/vendor/quickjs-ng/libunicode.c +2069 -0
  365. package/vendor/quickjs-ng/libunicode.h +172 -0
  366. package/vendor/quickjs-ng/list.h +107 -0
  367. package/vendor/quickjs-ng/lre-test.c +52 -0
  368. package/vendor/quickjs-ng/qjs.c +762 -0
  369. package/vendor/quickjs-ng/qjsc.c +673 -0
  370. package/vendor/quickjs-ng/quickjs-atom.h +280 -0
  371. package/vendor/quickjs-ng/quickjs-c-atomics.h +54 -0
  372. package/vendor/quickjs-ng/quickjs-libc.c +5037 -0
  373. package/vendor/quickjs-ng/quickjs-libc.h +87 -0
  374. package/vendor/quickjs-ng/quickjs-opcode.h +377 -0
  375. package/vendor/quickjs-ng/quickjs.c +64041 -0
  376. package/vendor/quickjs-ng/quickjs.h +1447 -0
  377. package/vendor/quickjs-ng/run-test262.c +2374 -0
  378. package/vendor/quickjs-ng/unicode_gen.c +3121 -0
  379. package/vendor/quickjs-ng/unicode_gen_def.h +310 -0
  380. package/vendor/ryu/LICENSE-Boost +23 -0
  381. package/vendor/ryu/common.h +114 -0
  382. package/vendor/ryu/d2s.c +509 -0
  383. package/vendor/ryu/d2s_full_table.h +367 -0
  384. package/vendor/ryu/d2s_intrinsics.h +357 -0
  385. package/vendor/ryu/d2s_small_table.h +186 -0
  386. package/vendor/ryu/digit_table.h +35 -0
  387. package/vendor/ryu/ryu.h +46 -0
  388. package/vendor/zlib/LICENSE +22 -0
  389. package/vendor/zlib/adler32.c +164 -0
  390. package/vendor/zlib/compress.c +75 -0
  391. package/vendor/zlib/crc32.c +1049 -0
  392. package/vendor/zlib/crc32.h +9446 -0
  393. package/vendor/zlib/deflate.c +2139 -0
  394. package/vendor/zlib/deflate.h +377 -0
  395. package/vendor/zlib/gzclose.c +23 -0
  396. package/vendor/zlib/gzguts.h +214 -0
  397. package/vendor/zlib/gzlib.c +582 -0
  398. package/vendor/zlib/gzread.c +602 -0
  399. package/vendor/zlib/gzwrite.c +631 -0
  400. package/vendor/zlib/infback.c +628 -0
  401. package/vendor/zlib/inffast.c +320 -0
  402. package/vendor/zlib/inffast.h +11 -0
  403. package/vendor/zlib/inffixed.h +94 -0
  404. package/vendor/zlib/inflate.c +1526 -0
  405. package/vendor/zlib/inflate.h +126 -0
  406. package/vendor/zlib/inftrees.c +299 -0
  407. package/vendor/zlib/inftrees.h +62 -0
  408. package/vendor/zlib/trees.c +1117 -0
  409. package/vendor/zlib/trees.h +128 -0
  410. package/vendor/zlib/uncompr.c +85 -0
  411. package/vendor/zlib/zconf.h +543 -0
  412. package/vendor/zlib/zlib.h +1938 -0
  413. package/vendor/zlib/zutil.c +299 -0
  414. package/vendor/zlib/zutil.h +254 -0
  415. package/README.md +0 -3
  416. package/index.js +0 -2
@@ -0,0 +1,488 @@
1
+ #include "scr_runtime.h"
2
+
3
+ #include <math.h>
4
+ #include <stdio.h>
5
+ #include <stdlib.h>
6
+ #include <string.h>
7
+
8
+ /* Live heap-array count for the RC audit lane (-DSCR_RC_AUDIT); same
9
+ * contract as scr_str_live_count in scr_string.c. */
10
+ #ifdef SCR_RC_AUDIT
11
+ static long scr_live_arrays = 0;
12
+ long scr_arr_live_count(void) { return scr_live_arrays; }
13
+ #endif
14
+
15
+ static void scr_arr_oom(void) {
16
+ fputs("scriptc: out of memory\n", stderr);
17
+ abort();
18
+ }
19
+
20
+ /* JS would return undefined for an OOB read and create holes for a far OOB
21
+ * write; both are unrepresentable here (see SEMANTICS.md), so any invalid
22
+ * index — negative, fractional, NaN, or past the allowed end — traps. */
23
+ static void scr_arr_trap_oob(double i, size_t len) {
24
+ char buf[32];
25
+ scr_f64_to_str(i, buf);
26
+ fprintf(stderr,
27
+ "scriptc: RangeError: array index %s out of bounds (length %zu)\n",
28
+ buf, len);
29
+ abort();
30
+ }
31
+
32
+ /* Validate i as an element index. limit is a->len for reads, a->len + 1 for
33
+ * writes (i == len appends). NaN fails the >= 0 test; fractional indices
34
+ * fail the trunc test. */
35
+ static size_t scr_arr_check_index(const ScrArr *a, double i, bool allow_append) {
36
+ size_t limit = a->len + (allow_append ? 1 : 0);
37
+ if (!(i >= 0) || i != trunc(i) || i >= (double)limit) {
38
+ scr_arr_trap_oob(i, a->len);
39
+ }
40
+ return (size_t)i;
41
+ }
42
+
43
+ /* ── slot packing: 8-byte slots hold doubles, bools, or pointers ───────── */
44
+
45
+ static uint64_t scr_slot_from_f64(double v) {
46
+ uint64_t s;
47
+ memcpy(&s, &v, sizeof s);
48
+ return s;
49
+ }
50
+
51
+ static double scr_slot_to_f64(uint64_t s) {
52
+ double v;
53
+ memcpy(&v, &s, sizeof v);
54
+ return v;
55
+ }
56
+
57
+ static uint64_t scr_slot_from_ptr(void *p) { return (uint64_t)(uintptr_t)p; }
58
+
59
+ static void *scr_slot_to_ptr(uint64_t s) { return (void *)(uintptr_t)s; }
60
+
61
+ static bool scr_elem_is_ref(ScrElemKind k) {
62
+ return k == SCR_ELEM_STR || k == SCR_ELEM_ARR || k == SCR_ELEM_BYTES ||
63
+ k == SCR_ELEM_REF;
64
+ }
65
+
66
+ static void scr_elem_release(const ScrArr *a, uint64_t slot) {
67
+ void *p = scr_slot_to_ptr(slot);
68
+ if (a->elem == SCR_ELEM_STR) scr_str_release((ScrStr *)p);
69
+ else if (a->elem == SCR_ELEM_ARR) scr_arr_release((ScrArr *)p);
70
+ else if (a->elem == SCR_ELEM_BYTES) scr_bytes_release((ScrBytes *)p);
71
+ else if (a->elem == SCR_ELEM_REF) a->elem_release(p);
72
+ }
73
+
74
+ /* ── lifecycle ─────────────────────────────────────────────────────────── */
75
+
76
+ static void scr_arr_grow(ScrArr *a, size_t need) {
77
+ if (need <= a->cap) return;
78
+ size_t cap = a->cap ? a->cap : 4;
79
+ while (cap < need) {
80
+ if (cap > SIZE_MAX / 2 / sizeof(uint64_t)) scr_arr_oom();
81
+ cap *= 2;
82
+ }
83
+ uint64_t *data = realloc(a->data, cap * sizeof(uint64_t));
84
+ if (!data) scr_arr_oom();
85
+ a->data = data;
86
+ a->cap = cap;
87
+ }
88
+
89
+ ScrArr *scr_arr_new(ScrElemKind elem, size_t initial_cap) {
90
+ ScrArr *a = malloc(sizeof(ScrArr));
91
+ if (!a) scr_arr_oom();
92
+ a->rc = 1;
93
+ a->len = 0;
94
+ a->cap = 0;
95
+ a->elem = elem;
96
+ a->elem_retain = NULL;
97
+ a->elem_release = NULL;
98
+ a->elem_trace = NULL;
99
+ a->data = NULL;
100
+ if (initial_cap > 0) scr_arr_grow(a, initial_cap);
101
+ #ifdef SCR_RC_AUDIT
102
+ scr_live_arrays++;
103
+ #endif
104
+ return a;
105
+ }
106
+
107
+ /* Collector trace of a cycle-capable array: every element is a headered
108
+ * child (elem_trace non-NULL means the element TYPE carries a header, and
109
+ * arrays are monomorphic), so trace visits all of them and the teardown
110
+ * below releases none — the complement contract in scr_runtime.h. */
111
+ void scr_arr_trace_v(void *a0, ScrTraceVisit visit, void *ctx) {
112
+ ScrArr *a = (ScrArr *)a0;
113
+ for (size_t i = 0; i < a->len; i++) visit(scr_slot_to_ptr(a->data[i]), ctx);
114
+ }
115
+
116
+ static void scr_arr_gc_free(void *a0) {
117
+ ScrArr *a = (ScrArr *)a0;
118
+ free(a->data);
119
+ #ifdef SCR_RC_AUDIT
120
+ scr_live_arrays--;
121
+ #endif
122
+ scr_cyc_free(a);
123
+ }
124
+
125
+ ScrArr *scr_arr_new_ref(void *(*elem_retain)(void *),
126
+ void (*elem_release)(void *),
127
+ ScrTraceFn elem_trace, size_t initial_cap) {
128
+ ScrArr *a;
129
+ if (elem_trace) {
130
+ a = scr_cyc_alloc(sizeof(ScrArr), &scr_arr_trace_v, &scr_arr_gc_free);
131
+ } else {
132
+ a = malloc(sizeof(ScrArr));
133
+ if (!a) scr_arr_oom();
134
+ }
135
+ a->rc = 1;
136
+ a->len = 0;
137
+ a->cap = 0;
138
+ a->elem = SCR_ELEM_REF;
139
+ a->elem_retain = elem_retain;
140
+ a->elem_release = elem_release;
141
+ a->elem_trace = elem_trace;
142
+ a->data = NULL;
143
+ if (initial_cap > 0) scr_arr_grow(a, initial_cap);
144
+ #ifdef SCR_RC_AUDIT
145
+ scr_live_arrays++;
146
+ #endif
147
+ return a;
148
+ }
149
+
150
+ void scr_arr_release(ScrArr *a) {
151
+ if (!a || a->rc == SIZE_MAX) return; /* NULL: an uninitialized `let` local */
152
+ if (--a->rc == 0) {
153
+ if (a->elem_trace) scr_cyc_on_dead(a);
154
+ if (scr_elem_is_ref(a->elem)) {
155
+ for (size_t i = 0; i < a->len; i++) scr_elem_release(a, a->data[i]);
156
+ }
157
+ if (a->elem_trace) {
158
+ scr_arr_gc_free(a);
159
+ } else {
160
+ free(a->data);
161
+ #ifdef SCR_RC_AUDIT
162
+ scr_live_arrays--;
163
+ #endif
164
+ free(a);
165
+ }
166
+ } else if (a->elem_trace) {
167
+ scr_cyc_on_release(a); /* possible cycle root; may collect */
168
+ }
169
+ }
170
+
171
+ double scr_arr_len(ScrArr *a) { return (double)a->len; }
172
+
173
+ /* ── Math.max/min over one spread number[] ─────────────────────────────
174
+ * The JS fold exactly (ECMA Math.max/min applied to the elements): any
175
+ * NaN poisons the result, +0 beats -0 for max (the reverse for min), and
176
+ * the empty array yields the zero-argument constants. Borrows the array. */
177
+ double scr_math_max_arr(ScrArr *a) {
178
+ double best = -INFINITY;
179
+ for (size_t i = 0; i < a->len; i++) {
180
+ double v = scr_slot_to_f64(a->data[i]);
181
+ if (isnan(v)) return v;
182
+ if (v > best || (v == 0.0 && best == 0.0 && !signbit(v))) best = v;
183
+ }
184
+ return best;
185
+ }
186
+
187
+ double scr_math_min_arr(ScrArr *a) {
188
+ double best = INFINITY;
189
+ for (size_t i = 0; i < a->len; i++) {
190
+ double v = scr_slot_to_f64(a->data[i]);
191
+ if (isnan(v)) return v;
192
+ if (v < best || (v == 0.0 && best == 0.0 && signbit(v))) best = v;
193
+ }
194
+ return best;
195
+ }
196
+
197
+ /* ── reads ─────────────────────────────────────────────────────────────── */
198
+
199
+ double scr_arr_get_f64(ScrArr *a, double i) {
200
+ return scr_slot_to_f64(a->data[scr_arr_check_index(a, i, false)]);
201
+ }
202
+
203
+ bool scr_arr_get_bool(ScrArr *a, double i) {
204
+ return a->data[scr_arr_check_index(a, i, false)] != 0;
205
+ }
206
+
207
+ void *scr_arr_get_ref(ScrArr *a, double i) {
208
+ void *p = scr_slot_to_ptr(a->data[scr_arr_check_index(a, i, false)]);
209
+ if (a->elem == SCR_ELEM_STR) scr_str_retain((ScrStr *)p);
210
+ else if (a->elem == SCR_ELEM_BYTES) scr_bytes_retain((ScrBytes *)p);
211
+ else if (a->elem == SCR_ELEM_REF) p = a->elem_retain(p);
212
+ else scr_arr_retain((ScrArr *)p);
213
+ return p;
214
+ }
215
+
216
+ /* ── writes: i == len appends ──────────────────────────────────────────── */
217
+
218
+ static void scr_arr_set_slot(ScrArr *a, double i, uint64_t slot) {
219
+ size_t idx = scr_arr_check_index(a, i, true);
220
+ if (idx == a->len) {
221
+ scr_arr_grow(a, a->len + 1);
222
+ a->len++;
223
+ a->data[idx] = slot;
224
+ return;
225
+ }
226
+ /* Unlink-then-release: a release can trigger a cycle collection, which
227
+ * must never see a heap edge whose count was already given up. */
228
+ uint64_t old = a->data[idx];
229
+ a->data[idx] = slot;
230
+ if (scr_elem_is_ref(a->elem)) scr_elem_release(a, old);
231
+ }
232
+
233
+ void scr_arr_set_f64(ScrArr *a, double i, double v) {
234
+ scr_arr_set_slot(a, i, scr_slot_from_f64(v));
235
+ }
236
+
237
+ void scr_arr_set_bool(ScrArr *a, double i, bool v) {
238
+ scr_arr_set_slot(a, i, (uint64_t)(v ? 1 : 0));
239
+ }
240
+
241
+ void scr_arr_set_ref(ScrArr *a, double i, void *v) {
242
+ scr_arr_set_slot(a, i, scr_slot_from_ptr(v));
243
+ }
244
+
245
+ /* ── push / pop ────────────────────────────────────────────────────────── */
246
+
247
+ static double scr_arr_push_slot(ScrArr *a, uint64_t slot) {
248
+ scr_arr_grow(a, a->len + 1);
249
+ a->data[a->len++] = slot;
250
+ return (double)a->len;
251
+ }
252
+
253
+ double scr_arr_push_f64(ScrArr *a, double v) {
254
+ return scr_arr_push_slot(a, scr_slot_from_f64(v));
255
+ }
256
+
257
+ double scr_arr_push_bool(ScrArr *a, bool v) {
258
+ return scr_arr_push_slot(a, (uint64_t)(v ? 1 : 0));
259
+ }
260
+
261
+ double scr_arr_push_ref(ScrArr *a, void *v) {
262
+ return scr_arr_push_slot(a, scr_slot_from_ptr(v));
263
+ }
264
+
265
+ static uint64_t scr_arr_pop_slot(ScrArr *a) {
266
+ if (a->len == 0) {
267
+ fputs("scriptc: RangeError: pop() on an empty array\n", stderr);
268
+ abort();
269
+ }
270
+ return a->data[--a->len];
271
+ }
272
+
273
+ double scr_arr_pop_f64(ScrArr *a) { return scr_slot_to_f64(scr_arr_pop_slot(a)); }
274
+
275
+ bool scr_arr_pop_bool(ScrArr *a) { return scr_arr_pop_slot(a) != 0; }
276
+
277
+ void *scr_arr_pop_ref(ScrArr *a) { return scr_slot_to_ptr(scr_arr_pop_slot(a)); }
278
+
279
+ /* ── shift ─────────────────────────────────────────────────────────────
280
+ * The first element out, tail sliding down. The EMITTER guards the empty
281
+ * array (JS answers undefined there — the `elem | undefined` union), so
282
+ * an empty receiver here is an internal error, pop's discipline. Ref
283
+ * ownership moves out to the caller (no retain). */
284
+ static uint64_t scr_arr_shift_slot(ScrArr *a) {
285
+ if (a->len == 0) {
286
+ fputs("scriptc: internal error: shift() on an empty array\n", stderr);
287
+ abort();
288
+ }
289
+ uint64_t s = a->data[0];
290
+ a->len--;
291
+ memmove(a->data, a->data + 1, a->len * sizeof(uint64_t));
292
+ return s;
293
+ }
294
+
295
+ double scr_arr_shift_f64(ScrArr *a) { return scr_slot_to_f64(scr_arr_shift_slot(a)); }
296
+
297
+ bool scr_arr_shift_bool(ScrArr *a) { return scr_arr_shift_slot(a) != 0; }
298
+
299
+ void *scr_arr_shift_ref(ScrArr *a) { return scr_slot_to_ptr(scr_arr_shift_slot(a)); }
300
+
301
+ /* ── splice (the removal forms) ────────────────────────────────────────
302
+ * a.splice(start, deleteCount) with Node's exact index handling: start
303
+ * goes through ToIntegerOrInfinity with negative-from-the-end resolution
304
+ * and clamps to [0, len]; deleteCount clamps to [0, len - start] (the
305
+ * omitted-count form passes +Infinity — remove to the end). The removed
306
+ * elements come back as a fresh +1 array IN ORDER, their ownership MOVED
307
+ * out of the receiver (no retain/release churn); the tail slides down.
308
+ * Borrows a. */
309
+ ScrArr *scr_arr_splice(ScrArr *a, double start, double deleteCount) {
310
+ double len = (double)a->len;
311
+ double s0 = isnan(start) ? 0 : trunc(start);
312
+ if (s0 < 0) s0 += len;
313
+ size_t from = s0 <= 0 ? 0 : s0 >= len ? a->len : (size_t)s0;
314
+ double avail = len - (double)from;
315
+ double d0 = isnan(deleteCount) ? 0 : trunc(deleteCount);
316
+ size_t n = d0 <= 0 ? 0 : d0 >= avail ? (size_t)avail : (size_t)d0;
317
+ ScrArr *out =
318
+ a->elem == SCR_ELEM_REF
319
+ ? scr_arr_new_ref(a->elem_retain, a->elem_release, a->elem_trace, n ? n : 1)
320
+ : scr_arr_new(a->elem, n ? n : 1);
321
+ if (n > 0) {
322
+ memcpy(out->data, a->data + from, n * sizeof(uint64_t));
323
+ out->len = n;
324
+ memmove(a->data + from, a->data + from + n, (a->len - from - n) * sizeof(uint64_t));
325
+ a->len -= n;
326
+ }
327
+ return out;
328
+ }
329
+
330
+ /* ── indexOf / includes ────────────────────────────────────────────────
331
+ * indexOf uses JS strict equality (===): NaN never matches (NaN !== NaN),
332
+ * -0 matches 0 (C == agrees on both). includes uses SameValueZero: the one
333
+ * difference is that NaN DOES match NaN. Reference elements: strings by
334
+ * content (JS strings are primitive values), arrays by pointer identity.
335
+ * All needles are borrowed. */
336
+
337
+ static bool scr_arr_ref_eq(const ScrArr *a, uint64_t slot, void *v) {
338
+ void *p = scr_slot_to_ptr(slot);
339
+ if (a->elem == SCR_ELEM_STR) return scr_str_eq((ScrStr *)p, (ScrStr *)v);
340
+ return p == v;
341
+ }
342
+
343
+ double scr_arr_index_of_f64(ScrArr *a, double v) {
344
+ for (size_t i = 0; i < a->len; i++) {
345
+ if (scr_slot_to_f64(a->data[i]) == v) return (double)i; /* NaN: never */
346
+ }
347
+ return -1;
348
+ }
349
+
350
+ double scr_arr_index_of_bool(ScrArr *a, bool v) {
351
+ for (size_t i = 0; i < a->len; i++) {
352
+ if ((a->data[i] != 0) == v) return (double)i;
353
+ }
354
+ return -1;
355
+ }
356
+
357
+ double scr_arr_index_of_ref(ScrArr *a, void *v) {
358
+ for (size_t i = 0; i < a->len; i++) {
359
+ if (scr_arr_ref_eq(a, a->data[i], v)) return (double)i;
360
+ }
361
+ return -1;
362
+ }
363
+
364
+ bool scr_arr_includes_f64(ScrArr *a, double v) {
365
+ for (size_t i = 0; i < a->len; i++) {
366
+ double x = scr_slot_to_f64(a->data[i]);
367
+ if (x == v || (x != x && v != v)) return true; /* SameValueZero: NaN hits */
368
+ }
369
+ return false;
370
+ }
371
+
372
+ bool scr_arr_includes_bool(ScrArr *a, bool v) {
373
+ return scr_arr_index_of_bool(a, v) >= 0;
374
+ }
375
+
376
+ bool scr_arr_includes_ref(ScrArr *a, void *v) {
377
+ return scr_arr_index_of_ref(a, v) >= 0;
378
+ }
379
+
380
+ /* ── join ──────────────────────────────────────────────────────────────── */
381
+
382
+ static void scr_join_append(char **buf, size_t *len, size_t *cap,
383
+ const char *bytes, size_t n) {
384
+ if (*len + n > *cap) {
385
+ size_t cap2 = *cap;
386
+ while (*len + n > cap2) {
387
+ if (cap2 > SIZE_MAX / 2) scr_arr_oom();
388
+ cap2 *= 2;
389
+ }
390
+ char *grown = realloc(*buf, cap2);
391
+ if (!grown) scr_arr_oom();
392
+ *buf = grown;
393
+ *cap = cap2;
394
+ }
395
+ memcpy(*buf + *len, bytes, n);
396
+ *len += n;
397
+ }
398
+
399
+ /* `a.slice(start?, end?)` — a fresh shallow copy of the index range,
400
+ * JS-exact: indices go through ToIntegerOrInfinity (the emitter fills the
401
+ * omitted defaults 0 / +Infinity), negatives count from the end, both
402
+ * clamp to [0, len]. Ref elements RETAIN into the copy — the same
403
+ * references, exactly JS's shallow copy. Borrows a; returns +1. */
404
+ ScrArr *scr_arr_slice(ScrArr *a, double start, double end) {
405
+ /* ToIntegerOrInfinity + relative-index resolution over the LENGTH. */
406
+ double len = (double)a->len;
407
+ double s0 = isnan(start) ? 0 : trunc(start);
408
+ double e0 = isnan(end) ? 0 : trunc(end);
409
+ if (s0 < 0) s0 += len;
410
+ if (e0 < 0) e0 += len;
411
+ size_t from = s0 <= 0 ? 0 : s0 >= len ? a->len : (size_t)s0;
412
+ size_t to = e0 <= 0 ? 0 : e0 >= len ? a->len : (size_t)e0;
413
+ size_t n = to > from ? to - from : 0;
414
+ ScrArr *out =
415
+ a->elem == SCR_ELEM_REF
416
+ ? scr_arr_new_ref(a->elem_retain, a->elem_release, a->elem_trace, n ? n : 1)
417
+ : scr_arr_new(a->elem, n ? n : 1);
418
+ for (size_t i = 0; i < n; i++) {
419
+ uint64_t slot = a->data[from + i];
420
+ if (scr_elem_is_ref(a->elem)) {
421
+ void *pv = scr_slot_to_ptr(slot);
422
+ if (a->elem == SCR_ELEM_STR) scr_str_retain((ScrStr *)pv);
423
+ else if (a->elem == SCR_ELEM_ARR) scr_arr_retain((ScrArr *)pv);
424
+ else if (a->elem == SCR_ELEM_BYTES) scr_bytes_retain((ScrBytes *)pv);
425
+ else pv = a->elem_retain(pv);
426
+ slot = scr_slot_from_ptr(pv);
427
+ }
428
+ out->data[out->len++] = slot;
429
+ }
430
+ return out;
431
+ }
432
+
433
+ ScrStr *scr_arr_join(ScrArr *a, ScrStr *sep) {
434
+ size_t cap = 64, len = 0;
435
+ char *buf = malloc(cap);
436
+ if (!buf) scr_arr_oom();
437
+ for (size_t i = 0; i < a->len; i++) {
438
+ if (i > 0) scr_join_append(&buf, &len, &cap, sep->data, sep->len);
439
+ switch (a->elem) {
440
+ case SCR_ELEM_F64: {
441
+ char nb[32];
442
+ size_t n = scr_f64_to_str(scr_slot_to_f64(a->data[i]), nb);
443
+ scr_join_append(&buf, &len, &cap, nb, n);
444
+ break;
445
+ }
446
+ case SCR_ELEM_BOOL:
447
+ if (a->data[i] != 0) scr_join_append(&buf, &len, &cap, "true", 4);
448
+ else scr_join_append(&buf, &len, &cap, "false", 5);
449
+ break;
450
+ case SCR_ELEM_STR: {
451
+ const ScrStr *s = (const ScrStr *)scr_slot_to_ptr(a->data[i]);
452
+ scr_join_append(&buf, &len, &cap, s->data, s->len);
453
+ break;
454
+ }
455
+ case SCR_ELEM_ARR:
456
+ case SCR_ELEM_BYTES:
457
+ case SCR_ELEM_REF:
458
+ /* The compiler rejects join on ref-element arrays (SC1090). */
459
+ fputs("scriptc: internal error: join on a ref-element array\n", stderr);
460
+ abort();
461
+ }
462
+ }
463
+ ScrStr *out = scr_str_new(buf, len);
464
+ free(buf);
465
+ return out;
466
+ }
467
+
468
+ /* String.raw over the template's raw literals and PRE-STRINGIFIED
469
+ * substitutions (the frontend applies the static ToString per value):
470
+ * raw[0] sub[0] raw[1] sub[1] ... — substitutions beyond raw.len-1 drop,
471
+ * missing ones skip, exactly the spec's loop. Both arrays are
472
+ * SCR_ELEM_STR; borrows both; +1 result. Never throws. */
473
+ ScrStr *scr_str_raw(ScrArr *raw, ScrArr *subs) {
474
+ size_t cap = 64, len = 0;
475
+ char *buf = malloc(cap);
476
+ if (!buf) scr_arr_oom();
477
+ for (size_t i = 0; i < raw->len; i++) {
478
+ const ScrStr *s = (const ScrStr *)scr_slot_to_ptr(raw->data[i]);
479
+ scr_join_append(&buf, &len, &cap, s->data, s->len);
480
+ if (i + 1 < raw->len && i < subs->len) {
481
+ const ScrStr *v = (const ScrStr *)scr_slot_to_ptr(subs->data[i]);
482
+ scr_join_append(&buf, &len, &cap, v->data, v->len);
483
+ }
484
+ }
485
+ ScrStr *out = scr_str_new(buf, len);
486
+ free(buf);
487
+ return out;
488
+ }