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,555 @@
1
+ /* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
2
+ *
3
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ * of this software and associated documentation files (the "Software"), to
5
+ * deal in the Software without restriction, including without limitation the
6
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
+ * sell copies of the Software, and to permit persons to whom the Software is
8
+ * furnished to do so, subject to the following conditions:
9
+ *
10
+ * The above copyright notice and this permission notice shall be included in
11
+ * all copies or substantial portions of the Software.
12
+ *
13
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
+ * IN THE SOFTWARE.
20
+ */
21
+
22
+ #include "uv.h"
23
+ #include "internal.h"
24
+
25
+ #include <assert.h>
26
+ #include <errno.h>
27
+ #include <string.h>
28
+ #include <sys/un.h>
29
+ #include <unistd.h>
30
+ #include <stdlib.h>
31
+
32
+
33
+ /* Does the file path contain embedded nul bytes? */
34
+ static int includes_invalid_nul(const char *s, size_t n) {
35
+ if (n == 0)
36
+ return 0;
37
+ #ifdef __linux__
38
+ /* Accept abstract socket namespace paths, throughout which nul bytes have
39
+ * no special significance ("\0foo\0bar").
40
+ */
41
+ if (s[0] == '\0')
42
+ return 0;
43
+ #endif
44
+ return NULL != memchr(s, '\0', n);
45
+ }
46
+
47
+
48
+ int uv_pipe_init(uv_loop_t* loop, uv_pipe_t* handle, int ipc) {
49
+ uv__stream_init(loop, (uv_stream_t*)handle, UV_NAMED_PIPE);
50
+ handle->shutdown_req = NULL;
51
+ handle->connect_req = NULL;
52
+ handle->pipe_fname = NULL;
53
+ handle->ipc = ipc;
54
+ return 0;
55
+ }
56
+
57
+
58
+ int uv_pipe_bind(uv_pipe_t* handle, const char* name) {
59
+ return uv_pipe_bind2(handle, name, strlen(name), 0);
60
+ }
61
+
62
+
63
+ int uv_pipe_bind2(uv_pipe_t* handle,
64
+ const char* name,
65
+ size_t namelen,
66
+ unsigned int flags) {
67
+ struct sockaddr_un saddr;
68
+ char* pipe_fname;
69
+ int sockfd;
70
+ int err;
71
+ socklen_t addrlen;
72
+
73
+ pipe_fname = NULL;
74
+
75
+ if (flags & ~UV_PIPE_NO_TRUNCATE)
76
+ return UV_EINVAL;
77
+
78
+ if (name == NULL)
79
+ return UV_EINVAL;
80
+
81
+ /* namelen==0 on Linux means autobind the listen socket in the abstract
82
+ * socket namespace, see `man 7 unix` for details.
83
+ */
84
+ #if !defined(__linux__)
85
+ if (namelen == 0)
86
+ return UV_EINVAL;
87
+ #endif
88
+
89
+ if (includes_invalid_nul(name, namelen))
90
+ return UV_EINVAL;
91
+
92
+ if (flags & UV_PIPE_NO_TRUNCATE)
93
+ if (namelen > sizeof(saddr.sun_path))
94
+ return UV_EINVAL;
95
+
96
+ /* Truncate long paths. Documented behavior. */
97
+ if (namelen > sizeof(saddr.sun_path))
98
+ namelen = sizeof(saddr.sun_path);
99
+
100
+ /* Already bound? */
101
+ if (uv__stream_fd(handle) >= 0)
102
+ return UV_EINVAL;
103
+
104
+ if (uv__is_closing(handle))
105
+ return UV_EINVAL;
106
+
107
+ /* Make a copy of the file path unless it is an abstract socket.
108
+ * We unlink the file later but abstract sockets disappear
109
+ * automatically since they're not real file system entities.
110
+ */
111
+ if (*name == '\0') {
112
+ addrlen = offsetof(struct sockaddr_un, sun_path) + namelen;
113
+ } else {
114
+ pipe_fname = uv__malloc(namelen + 1);
115
+ if (pipe_fname == NULL)
116
+ return UV_ENOMEM;
117
+ memcpy(pipe_fname, name, namelen);
118
+ pipe_fname[namelen] = '\0';
119
+ addrlen = sizeof saddr;
120
+ }
121
+
122
+ err = uv__socket(AF_UNIX, SOCK_STREAM, 0);
123
+ if (err < 0)
124
+ goto err_socket;
125
+ sockfd = err;
126
+
127
+ memset(&saddr, 0, sizeof saddr);
128
+ memcpy(&saddr.sun_path, name, namelen);
129
+ saddr.sun_family = AF_UNIX;
130
+
131
+ if (bind(sockfd, (struct sockaddr*)&saddr, addrlen)) {
132
+ err = UV__ERR(errno);
133
+ /* Convert ENOENT to EACCES for compatibility with Windows. */
134
+ if (err == UV_ENOENT)
135
+ err = UV_EACCES;
136
+
137
+ uv__close(sockfd);
138
+ goto err_socket;
139
+ }
140
+
141
+ /* Success. */
142
+ handle->flags |= UV_HANDLE_BOUND;
143
+ handle->pipe_fname = pipe_fname; /* NULL or a copy of |name| */
144
+ handle->io_watcher.fd = sockfd;
145
+ return 0;
146
+
147
+ err_socket:
148
+ uv__free(pipe_fname);
149
+ return err;
150
+ }
151
+
152
+
153
+ int uv__pipe_listen(uv_pipe_t* handle, int backlog, uv_connection_cb cb) {
154
+ if (uv__stream_fd(handle) == -1)
155
+ return UV_EINVAL;
156
+
157
+ if (handle->ipc)
158
+ return UV_EINVAL;
159
+
160
+ #if defined(__MVS__) || defined(__PASE__)
161
+ /* On zOS, backlog=0 has undefined behaviour */
162
+ /* On IBMi PASE, backlog=0 leads to "Connection refused" error */
163
+ if (backlog == 0)
164
+ backlog = 1;
165
+ else if (backlog < 0)
166
+ backlog = SOMAXCONN;
167
+ #endif
168
+
169
+ if (listen(uv__stream_fd(handle), backlog))
170
+ return UV__ERR(errno);
171
+
172
+ handle->connection_cb = cb;
173
+ handle->io_watcher.cb = uv__server_io;
174
+ uv__io_start(handle->loop, &handle->io_watcher, POLLIN);
175
+ return 0;
176
+ }
177
+
178
+
179
+ void uv__pipe_close(uv_pipe_t* handle) {
180
+ if (handle->pipe_fname) {
181
+ /*
182
+ * Unlink the file system entity before closing the file descriptor.
183
+ * Doing it the other way around introduces a race where our process
184
+ * unlinks a socket with the same name that's just been created by
185
+ * another thread or process.
186
+ */
187
+ unlink(handle->pipe_fname);
188
+ uv__free((void*)handle->pipe_fname);
189
+ handle->pipe_fname = NULL;
190
+ }
191
+
192
+ uv__stream_close((uv_stream_t*)handle);
193
+ }
194
+
195
+
196
+ int uv_pipe_open(uv_pipe_t* handle, uv_file fd) {
197
+ int flags;
198
+ int mode;
199
+ int err;
200
+ flags = 0;
201
+
202
+ if (uv__fd_exists(handle->loop, fd))
203
+ return UV_EEXIST;
204
+
205
+ do
206
+ mode = fcntl(fd, F_GETFL);
207
+ while (mode == -1 && errno == EINTR);
208
+
209
+ if (mode == -1)
210
+ return UV__ERR(errno); /* according to docs, must be EBADF */
211
+
212
+ err = uv__nonblock(fd, 1);
213
+ if (err)
214
+ return err;
215
+
216
+ #if defined(__APPLE__)
217
+ err = uv__stream_try_select((uv_stream_t*) handle, &fd);
218
+ if (err)
219
+ return err;
220
+ #endif /* defined(__APPLE__) */
221
+
222
+ mode &= O_ACCMODE;
223
+ if (mode != O_WRONLY)
224
+ flags |= UV_HANDLE_READABLE;
225
+ if (mode != O_RDONLY)
226
+ flags |= UV_HANDLE_WRITABLE;
227
+
228
+ return uv__stream_open((uv_stream_t*)handle, fd, flags);
229
+ }
230
+
231
+
232
+ void uv_pipe_connect(uv_connect_t* req,
233
+ uv_pipe_t* handle,
234
+ const char* name,
235
+ uv_connect_cb cb) {
236
+ int err;
237
+
238
+ err = uv_pipe_connect2(req, handle, name, strlen(name), 0, cb);
239
+
240
+ if (err) {
241
+ handle->delayed_error = err;
242
+ handle->connect_req = req;
243
+
244
+ uv__req_init(handle->loop, req, UV_CONNECT);
245
+ req->handle = (uv_stream_t*) handle;
246
+ req->cb = cb;
247
+ uv__queue_init(&req->queue);
248
+
249
+ /* Force callback to run on next tick in case of error. */
250
+ uv__io_feed(handle->loop, &handle->io_watcher);
251
+ }
252
+ }
253
+
254
+
255
+ int uv_pipe_connect2(uv_connect_t* req,
256
+ uv_pipe_t* handle,
257
+ const char* name,
258
+ size_t namelen,
259
+ unsigned int flags,
260
+ uv_connect_cb cb) {
261
+ struct sockaddr_un saddr;
262
+ int new_sock;
263
+ int err;
264
+ int r;
265
+ socklen_t addrlen;
266
+
267
+ if (flags & ~UV_PIPE_NO_TRUNCATE)
268
+ return UV_EINVAL;
269
+
270
+ if (name == NULL)
271
+ return UV_EINVAL;
272
+
273
+ if (namelen == 0)
274
+ return UV_EINVAL;
275
+
276
+ if (includes_invalid_nul(name, namelen))
277
+ return UV_EINVAL;
278
+
279
+ if (flags & UV_PIPE_NO_TRUNCATE)
280
+ if (namelen > sizeof(saddr.sun_path))
281
+ return UV_EINVAL;
282
+
283
+ /* Truncate long paths. Documented behavior. */
284
+ if (namelen > sizeof(saddr.sun_path))
285
+ namelen = sizeof(saddr.sun_path);
286
+
287
+ new_sock = (uv__stream_fd(handle) == -1);
288
+
289
+ if (new_sock) {
290
+ err = uv__socket(AF_UNIX, SOCK_STREAM, 0);
291
+ if (err < 0)
292
+ goto out;
293
+ handle->io_watcher.fd = err;
294
+ }
295
+
296
+ memset(&saddr, 0, sizeof saddr);
297
+ memcpy(&saddr.sun_path, name, namelen);
298
+ saddr.sun_family = AF_UNIX;
299
+
300
+ if (*name == '\0')
301
+ addrlen = offsetof(struct sockaddr_un, sun_path) + namelen;
302
+ else
303
+ addrlen = sizeof saddr;
304
+
305
+ do {
306
+ r = connect(uv__stream_fd(handle), (struct sockaddr*)&saddr, addrlen);
307
+ }
308
+ while (r == -1 && errno == EINTR);
309
+
310
+ if (r == -1 && errno != EINPROGRESS) {
311
+ err = UV__ERR(errno);
312
+ #if defined(__CYGWIN__) || defined(__MSYS__)
313
+ /* EBADF is supposed to mean that the socket fd is bad, but
314
+ Cygwin reports EBADF instead of ENOTSOCK when the file is
315
+ not a socket. We do not expect to see a bad fd here
316
+ (e.g. due to new_sock), so translate the error. */
317
+ if (err == UV_EBADF)
318
+ err = UV_ENOTSOCK;
319
+ #endif
320
+ goto out;
321
+ }
322
+
323
+ err = 0;
324
+ if (new_sock) {
325
+ err = uv__stream_open((uv_stream_t*)handle,
326
+ uv__stream_fd(handle),
327
+ UV_HANDLE_READABLE | UV_HANDLE_WRITABLE);
328
+ }
329
+
330
+ if (err == 0)
331
+ uv__io_start(handle->loop, &handle->io_watcher, POLLOUT);
332
+
333
+ out:
334
+ handle->delayed_error = err;
335
+ handle->connect_req = req;
336
+
337
+ uv__req_init(handle->loop, req, UV_CONNECT);
338
+ req->handle = (uv_stream_t*) handle;
339
+ req->cb = cb;
340
+ uv__queue_init(&req->queue);
341
+
342
+ /* Force callback to run on next tick in case of error. */
343
+ if (err)
344
+ uv__io_feed(handle->loop, &handle->io_watcher);
345
+
346
+ return 0;
347
+ }
348
+
349
+
350
+ static int uv__pipe_getsockpeername(const uv_pipe_t* handle,
351
+ uv__peersockfunc func,
352
+ char* buffer,
353
+ size_t* size) {
354
+ #if defined(__linux__)
355
+ static const int is_linux = 1;
356
+ #else
357
+ static const int is_linux = 0;
358
+ #endif
359
+ struct sockaddr_un sa;
360
+ socklen_t addrlen;
361
+ size_t slop;
362
+ char* p;
363
+ int err;
364
+
365
+ if (buffer == NULL || size == NULL || *size == 0)
366
+ return UV_EINVAL;
367
+
368
+ addrlen = sizeof(sa);
369
+ memset(&sa, 0, addrlen);
370
+ err = uv__getsockpeername((const uv_handle_t*) handle,
371
+ func,
372
+ (struct sockaddr*) &sa,
373
+ (int*) &addrlen);
374
+ if (err < 0) {
375
+ *size = 0;
376
+ return err;
377
+ }
378
+
379
+ slop = 1;
380
+ if (is_linux && sa.sun_path[0] == '\0') {
381
+ /* Linux abstract namespace. Not zero-terminated. */
382
+ slop = 0;
383
+ addrlen -= offsetof(struct sockaddr_un, sun_path);
384
+ } else {
385
+ p = memchr(sa.sun_path, '\0', sizeof(sa.sun_path));
386
+ if (p == NULL)
387
+ p = ARRAY_END(sa.sun_path);
388
+ addrlen = p - sa.sun_path;
389
+ }
390
+
391
+ if ((size_t)addrlen + slop > *size) {
392
+ *size = addrlen + slop;
393
+ return UV_ENOBUFS;
394
+ }
395
+
396
+ memcpy(buffer, sa.sun_path, addrlen);
397
+ *size = addrlen;
398
+
399
+ /* only null-terminate if it's not an abstract socket */
400
+ if (buffer[0] != '\0')
401
+ buffer[addrlen] = '\0';
402
+
403
+ return 0;
404
+ }
405
+
406
+
407
+ int uv_pipe_getsockname(const uv_pipe_t* handle, char* buffer, size_t* size) {
408
+ return uv__pipe_getsockpeername(handle, getsockname, buffer, size);
409
+ }
410
+
411
+
412
+ int uv_pipe_getpeername(const uv_pipe_t* handle, char* buffer, size_t* size) {
413
+ return uv__pipe_getsockpeername(handle, getpeername, buffer, size);
414
+ }
415
+
416
+
417
+ void uv_pipe_pending_instances(uv_pipe_t* handle, int count) {
418
+ }
419
+
420
+
421
+ int uv_pipe_pending_count(uv_pipe_t* handle) {
422
+ uv__stream_queued_fds_t* queued_fds;
423
+
424
+ if (!handle->ipc)
425
+ return 0;
426
+
427
+ if (handle->accepted_fd == -1)
428
+ return 0;
429
+
430
+ if (handle->queued_fds == NULL)
431
+ return 1;
432
+
433
+ queued_fds = handle->queued_fds;
434
+ return queued_fds->offset + 1;
435
+ }
436
+
437
+
438
+ uv_handle_type uv_pipe_pending_type(uv_pipe_t* handle) {
439
+ if (!handle->ipc)
440
+ return UV_UNKNOWN_HANDLE;
441
+
442
+ if (handle->accepted_fd == -1)
443
+ return UV_UNKNOWN_HANDLE;
444
+ else
445
+ return uv_guess_handle(handle->accepted_fd);
446
+ }
447
+
448
+
449
+ int uv_pipe_chmod(uv_pipe_t* handle, int mode) {
450
+ char name_buffer[1 + UV__PATH_MAX];
451
+ int desired_mode;
452
+ size_t name_len;
453
+ const char* name;
454
+ int fd;
455
+ int r;
456
+
457
+ if (handle == NULL)
458
+ return UV_EBADF;
459
+
460
+ fd = uv__stream_fd(handle);
461
+ if (fd == -1)
462
+ return UV_EBADF;
463
+
464
+ if (mode != UV_READABLE &&
465
+ mode != UV_WRITABLE &&
466
+ mode != (UV_WRITABLE | UV_READABLE))
467
+ return UV_EINVAL;
468
+
469
+ desired_mode = 0;
470
+ if (mode & UV_READABLE)
471
+ desired_mode |= S_IRUSR | S_IRGRP | S_IROTH;
472
+ if (mode & UV_WRITABLE)
473
+ desired_mode |= S_IWUSR | S_IWGRP | S_IWOTH;
474
+
475
+ /* fchmod on macOS and (Free|Net|Open)BSD does not support UNIX sockets. */
476
+ if (fchmod(fd, desired_mode))
477
+ if (errno != EINVAL && errno != EOPNOTSUPP)
478
+ return UV__ERR(errno);
479
+
480
+ /* Fall back to chmod. */
481
+ name_len = sizeof(name_buffer);
482
+ r = uv_pipe_getsockname(handle, name_buffer, &name_len);
483
+ if (r != 0)
484
+ return r;
485
+ name = name_buffer;
486
+
487
+ /* On some platforms, getsockname returns an empty string, and we try with pipe_fname. */
488
+ if (name_len == 0 && handle->pipe_fname != NULL)
489
+ name = handle->pipe_fname;
490
+
491
+ if (chmod(name, desired_mode))
492
+ return UV__ERR(errno);
493
+
494
+ return 0;
495
+ }
496
+
497
+
498
+ int uv_pipe(uv_os_fd_t fds[2], int read_flags, int write_flags) {
499
+ uv_os_fd_t temp[2];
500
+ int err;
501
+ #if defined(__linux__) || \
502
+ defined(__FreeBSD__) || \
503
+ defined(__OpenBSD__) || \
504
+ defined(__DragonFly__) || \
505
+ defined(__NetBSD__) || \
506
+ defined(__illumos__) || \
507
+ (defined(UV__SOLARIS_11_4) && UV__SOLARIS_11_4)
508
+ int flags = O_CLOEXEC;
509
+
510
+ if ((read_flags & UV_NONBLOCK_PIPE) && (write_flags & UV_NONBLOCK_PIPE))
511
+ flags |= UV_FS_O_NONBLOCK;
512
+
513
+ if (pipe2(temp, flags))
514
+ return UV__ERR(errno);
515
+
516
+ if (flags & UV_FS_O_NONBLOCK) {
517
+ fds[0] = temp[0];
518
+ fds[1] = temp[1];
519
+ return 0;
520
+ }
521
+ #else
522
+ if (pipe(temp))
523
+ return UV__ERR(errno);
524
+
525
+ if ((err = uv__cloexec(temp[0], 1)))
526
+ goto fail;
527
+
528
+ if ((err = uv__cloexec(temp[1], 1)))
529
+ goto fail;
530
+ #endif
531
+
532
+ if (read_flags & UV_NONBLOCK_PIPE)
533
+ if ((err = uv__nonblock(temp[0], 1)))
534
+ goto fail;
535
+
536
+ if (write_flags & UV_NONBLOCK_PIPE)
537
+ if ((err = uv__nonblock(temp[1], 1)))
538
+ goto fail;
539
+
540
+ fds[0] = temp[0];
541
+ fds[1] = temp[1];
542
+ return 0;
543
+
544
+ fail:
545
+ uv__close(temp[0]);
546
+ uv__close(temp[1]);
547
+ return err;
548
+ }
549
+
550
+
551
+ int uv__make_pipe(int fds[2], int flags) {
552
+ return uv_pipe(fds,
553
+ flags & UV_NONBLOCK_PIPE,
554
+ flags & UV_NONBLOCK_PIPE);
555
+ }
@@ -0,0 +1,159 @@
1
+ /* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
2
+ *
3
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ * of this software and associated documentation files (the "Software"), to
5
+ * deal in the Software without restriction, including without limitation the
6
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
+ * sell copies of the Software, and to permit persons to whom the Software is
8
+ * furnished to do so, subject to the following conditions:
9
+ *
10
+ * The above copyright notice and this permission notice shall be included in
11
+ * all copies or substantial portions of the Software.
12
+ *
13
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
+ * IN THE SOFTWARE.
20
+ */
21
+
22
+ #include "uv.h"
23
+ #include "internal.h"
24
+
25
+ #include <unistd.h>
26
+ #include <assert.h>
27
+
28
+
29
+ static void uv__poll_io(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
30
+ uv_poll_t* handle;
31
+ int pevents;
32
+
33
+ handle = container_of(w, uv_poll_t, io_watcher);
34
+
35
+ /*
36
+ * As documented in the kernel source fs/kernfs/file.c #780
37
+ * poll will return POLLERR|POLLPRI in case of sysfs
38
+ * polling. This does not happen in case of out-of-band
39
+ * TCP messages.
40
+ *
41
+ * The above is the case on (at least) FreeBSD and Linux.
42
+ *
43
+ * So to properly determine a POLLPRI or a POLLERR we need
44
+ * to check for both.
45
+ */
46
+ if ((events & POLLERR) && !(events & UV__POLLPRI)) {
47
+ uv__io_stop(loop, w, POLLIN | POLLOUT | UV__POLLRDHUP | UV__POLLPRI);
48
+ uv__handle_stop(handle);
49
+ handle->poll_cb(handle, UV_EBADF, 0);
50
+ return;
51
+ }
52
+
53
+ pevents = 0;
54
+ if (events & POLLIN)
55
+ pevents |= UV_READABLE;
56
+ if (events & UV__POLLPRI)
57
+ pevents |= UV_PRIORITIZED;
58
+ if (events & POLLOUT)
59
+ pevents |= UV_WRITABLE;
60
+ if (events & UV__POLLRDHUP)
61
+ pevents |= UV_DISCONNECT;
62
+
63
+ handle->poll_cb(handle, 0, pevents);
64
+ }
65
+
66
+
67
+ int uv_poll_init(uv_loop_t* loop, uv_poll_t* handle, int fd) {
68
+ int err;
69
+
70
+ if (uv__fd_exists(loop, fd))
71
+ return UV_EEXIST;
72
+
73
+ err = uv__io_check_fd(loop, fd);
74
+ if (err)
75
+ return err;
76
+
77
+ /* If ioctl(FIONBIO) reports ENOTTY, try fcntl(F_GETFL) + fcntl(F_SETFL).
78
+ * Workaround for e.g. kqueue fds not supporting ioctls.
79
+ */
80
+ err = uv__nonblock(fd, 1);
81
+ #if UV__NONBLOCK_IS_IOCTL
82
+ if (err == UV_ENOTTY)
83
+ err = uv__nonblock_fcntl(fd, 1);
84
+ #endif
85
+
86
+ if (err)
87
+ return err;
88
+
89
+ uv__handle_init(loop, (uv_handle_t*) handle, UV_POLL);
90
+ uv__io_init(&handle->io_watcher, uv__poll_io, fd);
91
+ handle->poll_cb = NULL;
92
+ return 0;
93
+ }
94
+
95
+
96
+ int uv_poll_init_socket(uv_loop_t* loop, uv_poll_t* handle,
97
+ uv_os_sock_t socket) {
98
+ return uv_poll_init(loop, handle, socket);
99
+ }
100
+
101
+
102
+ static void uv__poll_stop(uv_poll_t* handle) {
103
+ uv__io_stop(handle->loop,
104
+ &handle->io_watcher,
105
+ POLLIN | POLLOUT | UV__POLLRDHUP | UV__POLLPRI);
106
+ uv__handle_stop(handle);
107
+ uv__platform_invalidate_fd(handle->loop, handle->io_watcher.fd);
108
+ }
109
+
110
+
111
+ int uv_poll_stop(uv_poll_t* handle) {
112
+ assert(!uv__is_closing(handle));
113
+ uv__poll_stop(handle);
114
+ return 0;
115
+ }
116
+
117
+
118
+ int uv_poll_start(uv_poll_t* handle, int pevents, uv_poll_cb poll_cb) {
119
+ uv__io_t** watchers;
120
+ uv__io_t* w;
121
+ int events;
122
+
123
+ assert((pevents & ~(UV_READABLE | UV_WRITABLE | UV_DISCONNECT |
124
+ UV_PRIORITIZED)) == 0);
125
+ assert(!uv__is_closing(handle));
126
+
127
+ watchers = handle->loop->watchers;
128
+ w = &handle->io_watcher;
129
+
130
+ if (uv__fd_exists(handle->loop, w->fd))
131
+ if (watchers[w->fd] != w)
132
+ return UV_EEXIST;
133
+
134
+ uv__poll_stop(handle);
135
+
136
+ if (pevents == 0)
137
+ return 0;
138
+
139
+ events = 0;
140
+ if (pevents & UV_READABLE)
141
+ events |= POLLIN;
142
+ if (pevents & UV_PRIORITIZED)
143
+ events |= UV__POLLPRI;
144
+ if (pevents & UV_WRITABLE)
145
+ events |= POLLOUT;
146
+ if (pevents & UV_DISCONNECT)
147
+ events |= UV__POLLRDHUP;
148
+
149
+ uv__io_start(handle->loop, &handle->io_watcher, events);
150
+ uv__handle_start(handle);
151
+ handle->poll_cb = poll_cb;
152
+
153
+ return 0;
154
+ }
155
+
156
+
157
+ void uv__poll_close(uv_poll_t* handle) {
158
+ uv__poll_stop(handle);
159
+ }