@encharm/cws 4.4.0 → 4.5.1

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 (511) hide show
  1. package/dist/bindings/cws_darwin_arm64_node115.node +0 -0
  2. package/dist/bindings/cws_darwin_arm64_node127.node +0 -0
  3. package/dist/bindings/cws_linux_arm64_node115.node +0 -0
  4. package/dist/bindings/cws_linux_arm64_node127.node +0 -0
  5. package/dist/bindings/cws_linux_x64_node108.node +0 -0
  6. package/dist/bindings/cws_linux_x64_node115.node +0 -0
  7. package/dist/bindings/cws_linux_x64_node127.node +0 -0
  8. package/dist/bindings/cws_win32_x64_node108.node +0 -0
  9. package/dist/bindings/cws_win32_x64_node115.node +0 -0
  10. package/dist/bindings/cws_win32_x64_node127.node +0 -0
  11. package/dist/bindings/cws_win32_x64_node83.node +0 -0
  12. package/dist/bindings/cws_win32_x64_node93.node +0 -0
  13. package/package.json +1 -1
  14. package/src/Addon.h +20 -24
  15. package/src/Socket.h +0 -1
  16. package/src/headers/20/acorn_version.h +1 -1
  17. package/src/headers/20/connection_wrap.h +1 -0
  18. package/src/headers/20/crypto/crypto_keys.h +3 -0
  19. package/src/headers/20/crypto/crypto_tls.h +12 -3
  20. package/src/headers/20/crypto/crypto_util.h +3 -2
  21. package/src/headers/20/env_properties.h +3 -1
  22. package/src/headers/20/js_native_api.h +11 -1
  23. package/src/headers/20/js_native_api_v8.h +40 -3
  24. package/src/headers/20/js_native_api_v8_internals.h +6 -0
  25. package/src/headers/20/module_wrap.h +1 -1
  26. package/src/headers/20/node.h +2 -0
  27. package/src/headers/20/node_api.h +8 -7
  28. package/src/headers/20/node_constants.h +3 -0
  29. package/src/headers/20/node_contextify.h +24 -0
  30. package/src/headers/20/node_file-inl.h +32 -0
  31. package/src/headers/20/node_file.h +25 -12
  32. package/src/headers/20/node_options.h +9 -9
  33. package/src/headers/20/node_version.h +1 -1
  34. package/src/headers/20/permission/child_process_permission.h +2 -1
  35. package/src/headers/20/permission/fs_permission.h +11 -9
  36. package/src/headers/20/permission/inspector_permission.h +29 -0
  37. package/src/headers/20/permission/permission.h +4 -1
  38. package/src/headers/20/permission/permission_base.h +6 -2
  39. package/src/headers/20/permission/worker_permission.h +2 -1
  40. package/src/headers/20/undici_version.h +2 -2
  41. package/src/headers/22/acorn_version.h +6 -0
  42. package/src/headers/22/aliased_buffer-inl.h +243 -0
  43. package/src/headers/22/aliased_buffer.h +206 -0
  44. package/src/headers/{18 → 22}/async_wrap-inl.h +8 -6
  45. package/src/headers/{18 → 22}/async_wrap.h +65 -59
  46. package/src/headers/{16 → 22}/base_object-inl.h +57 -117
  47. package/src/headers/{18 → 22}/base_object.h +58 -30
  48. package/src/headers/22/base_object_types.h +74 -0
  49. package/src/headers/22/blob_serializer_deserializer-inl.h +385 -0
  50. package/src/headers/22/blob_serializer_deserializer.h +132 -0
  51. package/src/headers/{16 → 22}/callback_queue.h +1 -0
  52. package/src/headers/{16 → 22}/cares_wrap.h +27 -20
  53. package/src/headers/22/cjs_module_lexer_version.h +6 -0
  54. package/src/headers/22/cleanup_queue-inl.h +62 -0
  55. package/src/headers/22/cleanup_queue.h +85 -0
  56. package/src/headers/22/compile_cache.h +104 -0
  57. package/src/headers/{18 → 22}/crypto/crypto_clienthello.h +1 -1
  58. package/src/headers/{18 → 22}/crypto/crypto_context.h +31 -7
  59. package/src/headers/{18 → 22}/crypto/crypto_keys.h +118 -148
  60. package/src/headers/{18 → 22}/crypto/crypto_tls.h +20 -5
  61. package/src/headers/{18 → 22}/crypto/crypto_util.h +219 -263
  62. package/src/headers/22/crypto/ncrypto.h +752 -0
  63. package/src/headers/{16 → 22}/debug_utils-inl.h +15 -7
  64. package/src/headers/{18 → 22}/debug_utils.h +25 -19
  65. package/src/headers/22/encoding_binding.h +59 -0
  66. package/src/headers/{14 → 22}/env-inl.h +276 -409
  67. package/src/headers/22/env.h +1266 -0
  68. package/src/headers/22/env_properties.h +497 -0
  69. package/src/headers/{18 → 22}/handle_wrap.h +2 -0
  70. package/src/headers/{18 → 22}/histogram.h +88 -48
  71. package/src/headers/{16 → 22}/inspector_agent.h +17 -1
  72. package/src/headers/{16 → 22}/inspector_profiler.h +15 -13
  73. package/src/headers/{18 → 22}/js_native_api.h +78 -30
  74. package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
  75. package/src/headers/{18 → 22}/js_native_api_v8.h +206 -161
  76. package/src/headers/{18 → 22}/js_native_api_v8_internals.h +6 -0
  77. package/src/headers/22/json_parser.h +40 -0
  78. package/src/headers/{16 → 22}/json_utils.h +19 -8
  79. package/src/headers/{18 → 22}/memory_tracker-inl.h +16 -13
  80. package/src/headers/{14 → 22}/memory_tracker.h +13 -8
  81. package/src/headers/{16 → 22}/module_wrap.h +49 -19
  82. package/src/headers/22/ncrypto/ncrypto.h +752 -0
  83. package/src/headers/{18 → 22}/node.h +465 -68
  84. package/src/headers/{18 → 22}/node_api.h +66 -81
  85. package/src/headers/{18 → 22}/node_api_internals.h +8 -4
  86. package/src/headers/{18 → 22}/node_api_types.h +5 -0
  87. package/src/headers/22/node_binding.h +154 -0
  88. package/src/headers/{18 → 22}/node_blob.h +46 -78
  89. package/src/headers/{18 → 22}/node_bob-inl.h +1 -2
  90. package/src/headers/{18 → 22}/node_bob.h +2 -6
  91. package/src/headers/{18 → 22}/node_buffer.h +1 -1
  92. package/src/headers/22/node_builtins.h +220 -0
  93. package/src/headers/{18 → 22}/node_constants.h +3 -5
  94. package/src/headers/22/node_context_data.h +168 -0
  95. package/src/headers/22/node_contextify.h +199 -0
  96. package/src/headers/{16 → 22}/node_crypto.h +1 -2
  97. package/src/headers/22/node_dotenv.h +45 -0
  98. package/src/headers/{18 → 22}/node_errors.h +86 -27
  99. package/src/headers/22/node_exit_code.h +54 -0
  100. package/src/headers/22/node_external_reference.h +249 -0
  101. package/src/headers/{18 → 22}/node_file-inl.h +127 -30
  102. package/src/headers/{16 → 22}/node_file.h +122 -11
  103. package/src/headers/{18 → 22}/node_http2.h +28 -11
  104. package/src/headers/{16 → 22}/node_http2_state.h +34 -25
  105. package/src/headers/{18 → 22}/node_http_common-inl.h +2 -1
  106. package/src/headers/{18 → 22}/node_http_common.h +56 -55
  107. package/src/headers/{16 → 22}/node_i18n.h +5 -18
  108. package/src/headers/{18 → 22}/node_internals.h +121 -59
  109. package/src/headers/{18 → 22}/node_main_instance.h +4 -31
  110. package/src/headers/{18 → 22}/node_messaging.h +27 -10
  111. package/src/headers/{18 → 22}/node_metadata.h +23 -1
  112. package/src/headers/{18 → 22}/node_options-inl.h +24 -11
  113. package/src/headers/{18 → 22}/node_options.h +124 -39
  114. package/src/headers/{18 → 22}/node_perf.h +0 -2
  115. package/src/headers/{18 → 22}/node_perf_common.h +20 -9
  116. package/src/headers/{18 → 22}/node_platform.h +11 -5
  117. package/src/headers/{18 → 22}/node_process.h +26 -14
  118. package/src/headers/22/node_realm-inl.h +145 -0
  119. package/src/headers/22/node_realm.h +184 -0
  120. package/src/headers/{16 → 22}/node_report.h +13 -17
  121. package/src/headers/{16 → 22}/node_revert.h +3 -3
  122. package/src/headers/{16 → 22}/node_root_certs.h +902 -461
  123. package/src/headers/22/node_sea.h +64 -0
  124. package/src/headers/22/node_shadow_realm.h +46 -0
  125. package/src/headers/22/node_snapshot_builder.h +57 -0
  126. package/src/headers/22/node_snapshotable.h +174 -0
  127. package/src/headers/{18 → 22}/node_sockaddr.h +2 -2
  128. package/src/headers/{16 → 22}/node_stat_watcher.h +2 -1
  129. package/src/headers/22/node_threadsafe_cow-inl.h +54 -0
  130. package/src/headers/22/node_threadsafe_cow.h +105 -0
  131. package/src/headers/22/node_union_bytes.h +81 -0
  132. package/src/headers/22/node_url.h +96 -0
  133. package/src/headers/22/node_v8.h +77 -0
  134. package/src/headers/{14 → 22}/node_v8_platform-inl.h +17 -6
  135. package/src/headers/{18 → 22}/node_version.h +20 -8
  136. package/src/headers/22/node_wasi.h +185 -0
  137. package/src/headers/{14 → 22}/node_watchdog.h +2 -0
  138. package/src/headers/{18 → 22}/node_worker.h +7 -2
  139. package/src/headers/22/permission/child_process_permission.h +31 -0
  140. package/src/headers/22/permission/fs_permission.h +167 -0
  141. package/src/headers/22/permission/inspector_permission.h +31 -0
  142. package/src/headers/22/permission/permission.h +99 -0
  143. package/src/headers/22/permission/permission_base.h +60 -0
  144. package/src/headers/22/permission/wasi_permission.h +31 -0
  145. package/src/headers/22/permission/worker_permission.h +31 -0
  146. package/src/headers/{16 → 22}/req_wrap-inl.h +7 -6
  147. package/src/headers/{14 → 22}/spawn_sync.h +3 -3
  148. package/src/headers/{18 → 22}/stream_base-inl.h +0 -135
  149. package/src/headers/{18 → 22}/stream_base.h +35 -16
  150. package/src/headers/{18 → 22}/stream_pipe.h +3 -4
  151. package/src/headers/{16 → 22}/stream_wrap.h +2 -1
  152. package/src/headers/{18 → 22}/string_bytes.h +5 -14
  153. package/src/headers/{14 → 22}/string_decoder-inl.h +0 -6
  154. package/src/headers/{16 → 22}/string_decoder.h +0 -1
  155. package/src/headers/{18 → 22}/tcp_wrap.h +1 -1
  156. package/src/headers/{18 → 22}/threadpoolwork-inl.h +14 -1
  157. package/src/headers/22/timers.h +76 -0
  158. package/src/headers/{18 → 22}/tracing/trace_event.h +7 -5
  159. package/src/headers/{16 → 22}/udp_wrap.h +8 -5
  160. package/src/headers/22/undici_version.h +6 -0
  161. package/src/headers/{18 → 22}/util-inl.h +97 -127
  162. package/src/headers/{18 → 22}/util.h +293 -106
  163. package/src/headers/{18 → 22}/v8-fast-api-calls.h +103 -58
  164. package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
  165. package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
  166. package/dist/bindings/cws_darwin_x64_node83.node +0 -0
  167. package/dist/bindings/cws_darwin_x64_node93.node +0 -0
  168. package/dist/bindings/cws_linux_arm64_node83.node +0 -0
  169. package/dist/bindings/cws_linux_arm64_node93.node +0 -0
  170. package/dist/bindings/cws_linux_x64_node83.node +0 -0
  171. package/dist/bindings/cws_linux_x64_node93.node +0 -0
  172. package/src/headers/14/aliased_buffer.h +0 -263
  173. package/src/headers/14/allocated_buffer-inl.h +0 -110
  174. package/src/headers/14/allocated_buffer.h +0 -73
  175. package/src/headers/14/async_wrap-inl.h +0 -94
  176. package/src/headers/14/async_wrap.h +0 -230
  177. package/src/headers/14/base64.h +0 -183
  178. package/src/headers/14/base_object-inl.h +0 -371
  179. package/src/headers/14/base_object.h +0 -281
  180. package/src/headers/14/callback_queue-inl.h +0 -97
  181. package/src/headers/14/callback_queue.h +0 -78
  182. package/src/headers/14/debug_utils-inl.h +0 -223
  183. package/src/headers/14/debug_utils.h +0 -181
  184. package/src/headers/14/env.h +0 -1388
  185. package/src/headers/14/handle_wrap.h +0 -117
  186. package/src/headers/14/histogram-inl.h +0 -83
  187. package/src/headers/14/histogram.h +0 -98
  188. package/src/headers/14/inspector_agent.h +0 -149
  189. package/src/headers/14/inspector_profiler.h +0 -137
  190. package/src/headers/14/js_native_api.h +0 -544
  191. package/src/headers/14/js_native_api_types.h +0 -143
  192. package/src/headers/14/js_native_api_v8.h +0 -301
  193. package/src/headers/14/js_native_api_v8_internals.h +0 -38
  194. package/src/headers/14/json_utils.h +0 -161
  195. package/src/headers/14/memory_tracker-inl.h +0 -355
  196. package/src/headers/14/module_wrap.h +0 -99
  197. package/src/headers/14/node.h +0 -1032
  198. package/src/headers/14/node_api.h +0 -255
  199. package/src/headers/14/node_api_types.h +0 -44
  200. package/src/headers/14/node_binding.h +0 -99
  201. package/src/headers/14/node_buffer.h +0 -92
  202. package/src/headers/14/node_constants.h +0 -84
  203. package/src/headers/14/node_context_data.h +0 -44
  204. package/src/headers/14/node_contextify.h +0 -161
  205. package/src/headers/14/node_crypto.h +0 -865
  206. package/src/headers/14/node_crypto_bio.h +0 -195
  207. package/src/headers/14/node_crypto_clienthello-inl.h +0 -91
  208. package/src/headers/14/node_crypto_clienthello.h +0 -132
  209. package/src/headers/14/node_crypto_common.h +0 -138
  210. package/src/headers/14/node_crypto_groups.h +0 -415
  211. package/src/headers/14/node_dtrace.h +0 -86
  212. package/src/headers/14/node_errors.h +0 -214
  213. package/src/headers/14/node_file-inl.h +0 -306
  214. package/src/headers/14/node_file.h +0 -417
  215. package/src/headers/14/node_http2.h +0 -1191
  216. package/src/headers/14/node_http2_state.h +0 -149
  217. package/src/headers/14/node_http_common-inl.h +0 -194
  218. package/src/headers/14/node_http_common.h +0 -529
  219. package/src/headers/14/node_i18n.h +0 -144
  220. package/src/headers/14/node_internals.h +0 -405
  221. package/src/headers/14/node_main_instance.h +0 -96
  222. package/src/headers/14/node_mem.h +0 -45
  223. package/src/headers/14/node_messaging.h +0 -303
  224. package/src/headers/14/node_metadata.h +0 -109
  225. package/src/headers/14/node_mutex.h +0 -247
  226. package/src/headers/14/node_native_module.h +0 -101
  227. package/src/headers/14/node_native_module_env.h +0 -66
  228. package/src/headers/14/node_options-inl.h +0 -451
  229. package/src/headers/14/node_options.h +0 -481
  230. package/src/headers/14/node_perf.h +0 -181
  231. package/src/headers/14/node_perf_common.h +0 -97
  232. package/src/headers/14/node_platform.h +0 -189
  233. package/src/headers/14/node_process.h +0 -40
  234. package/src/headers/14/node_report.h +0 -47
  235. package/src/headers/14/node_revert.h +0 -72
  236. package/src/headers/14/node_root_certs.h +0 -3458
  237. package/src/headers/14/node_sockaddr-inl.h +0 -170
  238. package/src/headers/14/node_sockaddr.h +0 -123
  239. package/src/headers/14/node_stat_watcher.h +0 -70
  240. package/src/headers/14/node_union_bytes.h +0 -103
  241. package/src/headers/14/node_url.h +0 -188
  242. package/src/headers/14/node_version.h +0 -98
  243. package/src/headers/14/node_wasi.h +0 -108
  244. package/src/headers/14/node_win32_etw_provider-inl.h +0 -287
  245. package/src/headers/14/node_win32_etw_provider.h +0 -99
  246. package/src/headers/14/node_worker.h +0 -141
  247. package/src/headers/14/pipe_wrap.h +0 -78
  248. package/src/headers/14/req_wrap-inl.h +0 -170
  249. package/src/headers/14/req_wrap.h +0 -77
  250. package/src/headers/14/stream_base-inl.h +0 -275
  251. package/src/headers/14/stream_base.h +0 -434
  252. package/src/headers/14/stream_pipe.h +0 -73
  253. package/src/headers/14/stream_wrap.h +0 -130
  254. package/src/headers/14/string_bytes.h +0 -129
  255. package/src/headers/14/string_decoder.h +0 -50
  256. package/src/headers/14/string_search.h +0 -638
  257. package/src/headers/14/tcp_wrap.h +0 -101
  258. package/src/headers/14/threadpoolwork-inl.h +0 -57
  259. package/src/headers/14/tls_wrap.h +0 -222
  260. package/src/headers/14/tracing/agent.h +0 -195
  261. package/src/headers/14/tracing/trace_event.h +0 -720
  262. package/src/headers/14/tty_wrap.h +0 -64
  263. package/src/headers/14/udp_wrap.h +0 -227
  264. package/src/headers/14/util-inl.h +0 -566
  265. package/src/headers/14/util.h +0 -804
  266. package/src/headers/14/v8abbr.h +0 -124
  267. package/src/headers/16/aliased_buffer.h +0 -315
  268. package/src/headers/16/aliased_struct-inl.h +0 -54
  269. package/src/headers/16/aliased_struct.h +0 -63
  270. package/src/headers/16/allocated_buffer-inl.h +0 -110
  271. package/src/headers/16/allocated_buffer.h +0 -73
  272. package/src/headers/16/async_wrap-inl.h +0 -94
  273. package/src/headers/16/async_wrap.h +0 -246
  274. package/src/headers/16/base64-inl.h +0 -189
  275. package/src/headers/16/base64.h +0 -69
  276. package/src/headers/16/base_object.h +0 -294
  277. package/src/headers/16/connect_wrap.h +0 -26
  278. package/src/headers/16/connection_wrap.h +0 -30
  279. package/src/headers/16/crypto/crypto_aes.h +0 -89
  280. package/src/headers/16/crypto/crypto_bio.h +0 -194
  281. package/src/headers/16/crypto/crypto_cipher.h +0 -286
  282. package/src/headers/16/crypto/crypto_clienthello-inl.h +0 -90
  283. package/src/headers/16/crypto/crypto_clienthello.h +0 -131
  284. package/src/headers/16/crypto/crypto_common.h +0 -187
  285. package/src/headers/16/crypto/crypto_context.h +0 -147
  286. package/src/headers/16/crypto/crypto_dh.h +0 -157
  287. package/src/headers/16/crypto/crypto_dsa.h +0 -76
  288. package/src/headers/16/crypto/crypto_ec.h +0 -169
  289. package/src/headers/16/crypto/crypto_groups.h +0 -415
  290. package/src/headers/16/crypto/crypto_hash.h +0 -89
  291. package/src/headers/16/crypto/crypto_hkdf.h +0 -66
  292. package/src/headers/16/crypto/crypto_hmac.h +0 -94
  293. package/src/headers/16/crypto/crypto_keygen.h +0 -301
  294. package/src/headers/16/crypto/crypto_keys.h +0 -412
  295. package/src/headers/16/crypto/crypto_pbkdf2.h +0 -76
  296. package/src/headers/16/crypto/crypto_random.h +0 -130
  297. package/src/headers/16/crypto/crypto_rsa.h +0 -141
  298. package/src/headers/16/crypto/crypto_scrypt.h +0 -87
  299. package/src/headers/16/crypto/crypto_sig.h +0 -167
  300. package/src/headers/16/crypto/crypto_spkac.h +0 -20
  301. package/src/headers/16/crypto/crypto_timing.h +0 -20
  302. package/src/headers/16/crypto/crypto_tls.h +0 -292
  303. package/src/headers/16/crypto/crypto_util.h +0 -736
  304. package/src/headers/16/crypto/crypto_x509.h +0 -141
  305. package/src/headers/16/debug_utils.h +0 -184
  306. package/src/headers/16/diagnosticfilename-inl.h +0 -33
  307. package/src/headers/16/env-inl.h +0 -1277
  308. package/src/headers/16/env.h +0 -1629
  309. package/src/headers/16/handle_wrap.h +0 -121
  310. package/src/headers/16/histogram-inl.h +0 -88
  311. package/src/headers/16/histogram.h +0 -216
  312. package/src/headers/16/inspector_io.h +0 -78
  313. package/src/headers/16/inspector_socket.h +0 -60
  314. package/src/headers/16/inspector_socket_server.h +0 -110
  315. package/src/headers/16/js_native_api.h +0 -561
  316. package/src/headers/16/js_native_api_types.h +0 -160
  317. package/src/headers/16/js_native_api_v8.h +0 -451
  318. package/src/headers/16/js_native_api_v8_internals.h +0 -39
  319. package/src/headers/16/js_stream.h +0 -52
  320. package/src/headers/16/memory_tracker-inl.h +0 -356
  321. package/src/headers/16/memory_tracker.h +0 -284
  322. package/src/headers/16/node.d +0 -315
  323. package/src/headers/16/node.h +0 -1132
  324. package/src/headers/16/node.stp +0 -146
  325. package/src/headers/16/node_api.h +0 -275
  326. package/src/headers/16/node_api_internals.h +0 -30
  327. package/src/headers/16/node_api_types.h +0 -50
  328. package/src/headers/16/node_binding.h +0 -99
  329. package/src/headers/16/node_blob.h +0 -191
  330. package/src/headers/16/node_bob-inl.h +0 -37
  331. package/src/headers/16/node_bob.h +0 -111
  332. package/src/headers/16/node_buffer.h +0 -92
  333. package/src/headers/16/node_constants.h +0 -84
  334. package/src/headers/16/node_context_data.h +0 -44
  335. package/src/headers/16/node_contextify.h +0 -196
  336. package/src/headers/16/node_dir.h +0 -52
  337. package/src/headers/16/node_dtrace.h +0 -86
  338. package/src/headers/16/node_errors.h +0 -277
  339. package/src/headers/16/node_external_reference.h +0 -129
  340. package/src/headers/16/node_file-inl.h +0 -306
  341. package/src/headers/16/node_http2.h +0 -1140
  342. package/src/headers/16/node_http_common-inl.h +0 -200
  343. package/src/headers/16/node_http_common.h +0 -531
  344. package/src/headers/16/node_internals.h +0 -421
  345. package/src/headers/16/node_main_instance.h +0 -103
  346. package/src/headers/16/node_mem-inl.h +0 -112
  347. package/src/headers/16/node_messaging.h +0 -373
  348. package/src/headers/16/node_metadata.h +0 -122
  349. package/src/headers/16/node_native_module.h +0 -101
  350. package/src/headers/16/node_native_module_env.h +0 -68
  351. package/src/headers/16/node_object_wrap.h +0 -132
  352. package/src/headers/16/node_options-inl.h +0 -477
  353. package/src/headers/16/node_options.h +0 -494
  354. package/src/headers/16/node_perf.h +0 -185
  355. package/src/headers/16/node_perf_common.h +0 -89
  356. package/src/headers/16/node_platform.h +0 -192
  357. package/src/headers/16/node_process.h +0 -43
  358. package/src/headers/16/node_provider.d +0 -80
  359. package/src/headers/16/node_snapshotable.h +0 -137
  360. package/src/headers/16/node_sockaddr-inl.h +0 -266
  361. package/src/headers/16/node_sockaddr.h +0 -405
  362. package/src/headers/16/node_union_bytes.h +0 -103
  363. package/src/headers/16/node_url.h +0 -205
  364. package/src/headers/16/node_v8.h +0 -41
  365. package/src/headers/16/node_v8_platform-inl.h +0 -194
  366. package/src/headers/16/node_version.h +0 -98
  367. package/src/headers/16/node_wasi.h +0 -108
  368. package/src/headers/16/node_watchdog.h +0 -152
  369. package/src/headers/16/node_win32_etw_provider-inl.h +0 -288
  370. package/src/headers/16/node_win32_etw_provider.h +0 -99
  371. package/src/headers/16/node_worker.h +0 -145
  372. package/src/headers/16/req_wrap.h +0 -77
  373. package/src/headers/16/spawn_sync.h +0 -242
  374. package/src/headers/16/stream_base-inl.h +0 -303
  375. package/src/headers/16/stream_base.h +0 -454
  376. package/src/headers/16/stream_pipe.h +0 -73
  377. package/src/headers/16/string_bytes.h +0 -122
  378. package/src/headers/16/string_decoder-inl.h +0 -37
  379. package/src/headers/16/string_search.h +0 -638
  380. package/src/headers/16/tcp_wrap.h +0 -103
  381. package/src/headers/16/threadpoolwork-inl.h +0 -57
  382. package/src/headers/16/timer_wrap.h +0 -84
  383. package/src/headers/16/tracing/agent.h +0 -195
  384. package/src/headers/16/tracing/node_trace_buffer.h +0 -83
  385. package/src/headers/16/tracing/node_trace_writer.h +0 -75
  386. package/src/headers/16/tracing/trace_event.h +0 -720
  387. package/src/headers/16/tracing/trace_event_common.h +0 -1109
  388. package/src/headers/16/tracing/traced_value.h +0 -70
  389. package/src/headers/16/tty_wrap.h +0 -66
  390. package/src/headers/16/util-inl.h +0 -575
  391. package/src/headers/16/util.h +0 -824
  392. package/src/headers/16/v8abbr.h +0 -123
  393. package/src/headers/16/v8ustack.d +0 -695
  394. package/src/headers/18/aliased_buffer.h +0 -315
  395. package/src/headers/18/aliased_struct-inl.h +0 -54
  396. package/src/headers/18/aliased_struct.h +0 -63
  397. package/src/headers/18/base64-inl.h +0 -189
  398. package/src/headers/18/base64.h +0 -69
  399. package/src/headers/18/base_object-inl.h +0 -374
  400. package/src/headers/18/callback_queue-inl.h +0 -97
  401. package/src/headers/18/callback_queue.h +0 -78
  402. package/src/headers/18/cares_wrap.h +0 -523
  403. package/src/headers/18/connect_wrap.h +0 -26
  404. package/src/headers/18/connection_wrap.h +0 -30
  405. package/src/headers/18/crypto/crypto_aes.h +0 -89
  406. package/src/headers/18/crypto/crypto_bio.h +0 -194
  407. package/src/headers/18/crypto/crypto_cipher.h +0 -291
  408. package/src/headers/18/crypto/crypto_clienthello-inl.h +0 -90
  409. package/src/headers/18/crypto/crypto_common.h +0 -151
  410. package/src/headers/18/crypto/crypto_dh.h +0 -156
  411. package/src/headers/18/crypto/crypto_dsa.h +0 -77
  412. package/src/headers/18/crypto/crypto_ec.h +0 -170
  413. package/src/headers/18/crypto/crypto_groups.h +0 -415
  414. package/src/headers/18/crypto/crypto_hash.h +0 -89
  415. package/src/headers/18/crypto/crypto_hkdf.h +0 -65
  416. package/src/headers/18/crypto/crypto_hmac.h +0 -94
  417. package/src/headers/18/crypto/crypto_keygen.h +0 -305
  418. package/src/headers/18/crypto/crypto_pbkdf2.h +0 -76
  419. package/src/headers/18/crypto/crypto_random.h +0 -130
  420. package/src/headers/18/crypto/crypto_rsa.h +0 -141
  421. package/src/headers/18/crypto/crypto_scrypt.h +0 -87
  422. package/src/headers/18/crypto/crypto_sig.h +0 -168
  423. package/src/headers/18/crypto/crypto_spkac.h +0 -21
  424. package/src/headers/18/crypto/crypto_timing.h +0 -20
  425. package/src/headers/18/crypto/crypto_x509.h +0 -143
  426. package/src/headers/18/debug_utils-inl.h +0 -223
  427. package/src/headers/18/diagnosticfilename-inl.h +0 -33
  428. package/src/headers/18/env-inl.h +0 -1308
  429. package/src/headers/18/env.h +0 -1667
  430. package/src/headers/18/inspector_agent.h +0 -144
  431. package/src/headers/18/inspector_io.h +0 -78
  432. package/src/headers/18/inspector_profiler.h +0 -149
  433. package/src/headers/18/inspector_socket.h +0 -60
  434. package/src/headers/18/inspector_socket_server.h +0 -110
  435. package/src/headers/18/js_stream.h +0 -52
  436. package/src/headers/18/json_utils.h +0 -161
  437. package/src/headers/18/memory_tracker.h +0 -284
  438. package/src/headers/18/module_wrap.h +0 -116
  439. package/src/headers/18/node_binding.h +0 -99
  440. package/src/headers/18/node_context_data.h +0 -44
  441. package/src/headers/18/node_contextify.h +0 -196
  442. package/src/headers/18/node_crypto.h +0 -57
  443. package/src/headers/18/node_dir.h +0 -52
  444. package/src/headers/18/node_dtrace.h +0 -86
  445. package/src/headers/18/node_external_reference.h +0 -145
  446. package/src/headers/18/node_file.h +0 -426
  447. package/src/headers/18/node_http2_state.h +0 -149
  448. package/src/headers/18/node_i18n.h +0 -145
  449. package/src/headers/18/node_mem-inl.h +0 -112
  450. package/src/headers/18/node_mem.h +0 -45
  451. package/src/headers/18/node_mutex.h +0 -323
  452. package/src/headers/18/node_native_module.h +0 -109
  453. package/src/headers/18/node_native_module_env.h +0 -71
  454. package/src/headers/18/node_object_wrap.h +0 -132
  455. package/src/headers/18/node_process-inl.h +0 -26
  456. package/src/headers/18/node_report.h +0 -47
  457. package/src/headers/18/node_revert.h +0 -82
  458. package/src/headers/18/node_root_certs.h +0 -3246
  459. package/src/headers/18/node_snapshot_builder.h +0 -43
  460. package/src/headers/18/node_snapshotable.h +0 -130
  461. package/src/headers/18/node_stat_watcher.h +0 -72
  462. package/src/headers/18/node_union_bytes.h +0 -103
  463. package/src/headers/18/node_url.h +0 -205
  464. package/src/headers/18/node_v8.h +0 -41
  465. package/src/headers/18/node_v8_platform-inl.h +0 -194
  466. package/src/headers/18/node_wasi.h +0 -108
  467. package/src/headers/18/node_watchdog.h +0 -152
  468. package/src/headers/18/node_win32_etw_provider-inl.h +0 -288
  469. package/src/headers/18/node_win32_etw_provider.h +0 -99
  470. package/src/headers/18/pipe_wrap.h +0 -80
  471. package/src/headers/18/req_wrap-inl.h +0 -170
  472. package/src/headers/18/spawn_sync.h +0 -242
  473. package/src/headers/18/stream_wrap.h +0 -133
  474. package/src/headers/18/string_decoder-inl.h +0 -37
  475. package/src/headers/18/string_decoder.h +0 -50
  476. package/src/headers/18/string_search.h +0 -638
  477. package/src/headers/18/tracing/node_trace_buffer.h +0 -83
  478. package/src/headers/18/tracing/node_trace_writer.h +0 -75
  479. package/src/headers/18/tracing/trace_event_common.h +0 -1109
  480. package/src/headers/18/tracing/traced_value.h +0 -70
  481. package/src/headers/18/udp_wrap.h +0 -227
  482. package/src/headers/18/v8abbr.h +0 -123
  483. /package/src/headers/{14 → 20}/tracing/node_trace_buffer.h +0 -0
  484. /package/src/headers/{14 → 20}/tracing/node_trace_writer.h +0 -0
  485. /package/src/headers/{14 → 20}/tracing/traced_value.h +0 -0
  486. /package/src/headers/{14 → 22}/aliased_struct-inl.h +0 -0
  487. /package/src/headers/{14 → 22}/aliased_struct.h +0 -0
  488. /package/src/headers/{16 → 22}/callback_queue-inl.h +0 -0
  489. /package/src/headers/{14 → 22}/connect_wrap.h +0 -0
  490. /package/src/headers/{14 → 22}/connection_wrap.h +0 -0
  491. /package/src/headers/{14 → 22}/diagnosticfilename-inl.h +0 -0
  492. /package/src/headers/{18 → 22}/histogram-inl.h +0 -0
  493. /package/src/headers/{14 → 22}/inspector_io.h +0 -0
  494. /package/src/headers/{14 → 22}/inspector_socket.h +0 -0
  495. /package/src/headers/{14 → 22}/inspector_socket_server.h +0 -0
  496. /package/src/headers/{14 → 22}/js_stream.h +0 -0
  497. /package/src/headers/{14 → 22}/node_dir.h +0 -0
  498. /package/src/headers/{14 → 22}/node_mem-inl.h +0 -0
  499. /package/src/headers/{16 → 22}/node_mem.h +0 -0
  500. /package/src/headers/{16 → 22}/node_mutex.h +0 -0
  501. /package/src/headers/{14 → 22}/node_object_wrap.h +0 -0
  502. /package/src/headers/{16 → 22}/node_process-inl.h +0 -0
  503. /package/src/headers/{18 → 22}/node_sockaddr-inl.h +0 -0
  504. /package/src/headers/{18 → 22}/node_wasm_web_api.h +0 -0
  505. /package/src/headers/{16 → 22}/pipe_wrap.h +0 -0
  506. /package/src/headers/{18 → 22}/req_wrap.h +0 -0
  507. /package/src/headers/{18 → 22}/timer_wrap-inl.h +0 -0
  508. /package/src/headers/{18 → 22}/timer_wrap.h +0 -0
  509. /package/src/headers/{18 → 22}/tracing/agent.h +0 -0
  510. /package/src/headers/{14 → 22}/tracing/trace_event_common.h +0 -0
  511. /package/src/headers/{18 → 22}/tty_wrap.h +0 -0
@@ -11,12 +11,7 @@ constexpr size_t kMaxCountHint = 16;
11
11
  // Negative status codes indicate error conditions.
12
12
  enum Status : int {
13
13
  // Indicates that an attempt was made to pull after end.
14
- STATUS_EOS = -1,
15
-
16
- // Indicates the end of the stream. No additional
17
- // data will be available and the consumer should stop
18
- // pulling.
19
- STATUS_END = 0,
14
+ STATUS_EOS = 0,
20
15
 
21
16
  // Indicates that there is additional data available
22
17
  // and the consumer may continue to pull.
@@ -72,6 +67,7 @@ using Next = std::function<void(int, const T*, size_t count, Done done)>;
72
67
  template <typename T>
73
68
  class Source {
74
69
  public:
70
+ virtual ~Source() = default;
75
71
  virtual int Pull(
76
72
  Next<T> next,
77
73
  int options,
@@ -29,7 +29,7 @@ namespace node {
29
29
 
30
30
  namespace Buffer {
31
31
 
32
- static const size_t kMaxLength = v8::TypedArray::kMaxLength;
32
+ static const size_t kMaxLength = v8::Uint8Array::kMaxLength;
33
33
 
34
34
  typedef void (*FreeCallback)(char* data, void* hint);
35
35
 
@@ -0,0 +1,220 @@
1
+ #ifndef SRC_NODE_BUILTINS_H_
2
+ #define SRC_NODE_BUILTINS_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include <list>
7
+ #include <map>
8
+ #include <memory>
9
+ #include <optional>
10
+ #include <string>
11
+ #include <unordered_set>
12
+ #include <vector>
13
+ #include "node_external_reference.h"
14
+ #include "node_mutex.h"
15
+ #include "node_threadsafe_cow.h"
16
+ #include "node_union_bytes.h"
17
+ #include "v8.h"
18
+
19
+ // Forward declare test fixture for `friend` declaration.
20
+ class PerProcessTest;
21
+
22
+ namespace node {
23
+ class SnapshotBuilder;
24
+ class ExternalReferenceRegistry;
25
+ class Realm;
26
+
27
+ namespace builtins {
28
+
29
+ class BuiltinCodeCacheData {
30
+ public:
31
+ BuiltinCodeCacheData() : data(nullptr), length(0), owning_ptr(nullptr) {}
32
+
33
+ explicit BuiltinCodeCacheData(
34
+ std::shared_ptr<v8::ScriptCompiler::CachedData> cached_data)
35
+ : data(cached_data->data),
36
+ length(cached_data->length),
37
+ owning_ptr(cached_data) {}
38
+
39
+ explicit BuiltinCodeCacheData(
40
+ std::shared_ptr<std::vector<uint8_t>> cached_data)
41
+ : data(cached_data->data()),
42
+ length(cached_data->size()),
43
+ owning_ptr(cached_data) {}
44
+
45
+ BuiltinCodeCacheData(const uint8_t* data, size_t length)
46
+ : data(data), length(length), owning_ptr(nullptr) {}
47
+
48
+ const uint8_t* data;
49
+ size_t length;
50
+
51
+ // Returns a v8::ScriptCompiler::CachedData corresponding to this
52
+ // BuiltinCodeCacheData. The lifetime of the returned
53
+ // v8::ScriptCompiler::CachedData must not outlive that of the data.
54
+ std::unique_ptr<v8::ScriptCompiler::CachedData> AsCachedData() {
55
+ return std::make_unique<v8::ScriptCompiler::CachedData>(
56
+ data, length, v8::ScriptCompiler::CachedData::BufferNotOwned);
57
+ }
58
+
59
+ private:
60
+ // If not null, represents a pointer which owns data. Otherwise indicates
61
+ // that data has static lifetime.
62
+ std::shared_ptr<void> owning_ptr;
63
+ };
64
+
65
+ struct CodeCacheInfo {
66
+ std::string id;
67
+ BuiltinCodeCacheData data;
68
+ };
69
+
70
+ using BuiltinSourceMap = std::map<std::string, UnionBytes>;
71
+ using BuiltinCodeCacheMap =
72
+ std::unordered_map<std::string, BuiltinCodeCacheData>;
73
+
74
+ // Generated by tools/js2c.py as node_javascript.cc
75
+ void RegisterExternalReferencesForInternalizedBuiltinCode(
76
+ ExternalReferenceRegistry* registry);
77
+
78
+ // Handles compilation and caching of built-in JavaScript modules and
79
+ // bootstrap scripts, whose source are bundled into the binary as static data.
80
+ class NODE_EXTERN_PRIVATE BuiltinLoader {
81
+ public:
82
+ BuiltinLoader();
83
+ BuiltinLoader(const BuiltinLoader&) = delete;
84
+ BuiltinLoader& operator=(const BuiltinLoader&) = delete;
85
+
86
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
87
+ static void CreatePerIsolateProperties(IsolateData* isolate_data,
88
+ v8::Local<v8::ObjectTemplate> target);
89
+ static void CreatePerContextProperties(v8::Local<v8::Object> target,
90
+ v8::Local<v8::Value> unused,
91
+ v8::Local<v8::Context> context,
92
+ void* priv);
93
+
94
+ // The parameters used to compile the scripts are detected based on
95
+ // the pattern of the id.
96
+ v8::MaybeLocal<v8::Function> LookupAndCompile(v8::Local<v8::Context> context,
97
+ const char* id,
98
+ Realm* optional_realm);
99
+
100
+ v8::MaybeLocal<v8::Function> LookupAndCompile(
101
+ v8::Local<v8::Context> context,
102
+ const char* id,
103
+ std::vector<v8::Local<v8::String>>* parameters,
104
+ Realm* optional_realm);
105
+
106
+ v8::MaybeLocal<v8::Value> CompileAndCall(v8::Local<v8::Context> context,
107
+ const char* id,
108
+ int argc,
109
+ v8::Local<v8::Value> argv[],
110
+ Realm* optional_realm);
111
+
112
+ v8::MaybeLocal<v8::Value> CompileAndCall(v8::Local<v8::Context> context,
113
+ const char* id,
114
+ Realm* realm);
115
+
116
+ // Returns config.gypi as a JSON string
117
+ v8::Local<v8::String> GetConfigString(v8::Isolate* isolate);
118
+ bool Exists(const char* id);
119
+ bool Add(const char* id, const UnionBytes& source);
120
+
121
+ bool CompileAllBuiltinsAndCopyCodeCache(
122
+ v8::Local<v8::Context> context,
123
+ const std::vector<std::string>& lazy_builtins,
124
+ std::vector<CodeCacheInfo>* out);
125
+ void RefreshCodeCache(const std::vector<CodeCacheInfo>& in);
126
+
127
+ void CopySourceAndCodeCacheReferenceFrom(const BuiltinLoader* other);
128
+
129
+ std::vector<std::string_view> GetBuiltinIds() const;
130
+
131
+ void SetEagerCompile() { should_eager_compile_ = true; }
132
+
133
+ private:
134
+ // Only allow access from friends.
135
+ friend class CodeCacheBuilder;
136
+
137
+ // Generated by tools/js2c.py as node_javascript.cc
138
+ void LoadJavaScriptSource(); // Loads data into source_
139
+ UnionBytes GetConfig(); // Return data for config.gypi
140
+
141
+ struct BuiltinCategories {
142
+ std::set<std::string> can_be_required;
143
+ std::set<std::string> cannot_be_required;
144
+ };
145
+ // This method builds `BuiltinCategories` from scratch every time,
146
+ // and is therefore somewhat expensive, but also currently only being
147
+ // used for testing, so that should not be an issue.
148
+ BuiltinCategories GetBuiltinCategories() const;
149
+
150
+ const v8::ScriptCompiler::CachedData* GetCodeCache(const char* id) const;
151
+ enum class Result { kWithCache, kWithoutCache };
152
+ v8::MaybeLocal<v8::String> LoadBuiltinSource(v8::Isolate* isolate,
153
+ const char* id) const;
154
+ // If an exception is encountered (e.g. source code contains
155
+ // syntax error), the returned value is empty.
156
+ v8::MaybeLocal<v8::Function> LookupAndCompileInternal(
157
+ v8::Local<v8::Context> context,
158
+ const char* id,
159
+ std::vector<v8::Local<v8::String>>* parameters,
160
+ Realm* optional_realm);
161
+ void SaveCodeCache(const char* id, v8::Local<v8::Function> fn);
162
+
163
+ static void RecordResult(const char* id,
164
+ BuiltinLoader::Result result,
165
+ Realm* realm);
166
+ static void GetBuiltinCategories(
167
+ v8::Local<v8::Name> property,
168
+ const v8::PropertyCallbackInfo<v8::Value>& info);
169
+ static void GetCacheUsage(const v8::FunctionCallbackInfo<v8::Value>& args);
170
+ // Passing ids of built-in source code into JS land as
171
+ // internalBinding('builtins').builtinIds
172
+ static void BuiltinIdsGetter(v8::Local<v8::Name> property,
173
+ const v8::PropertyCallbackInfo<v8::Value>& info);
174
+ // Passing config.gypi into JS land as internalBinding('builtins').config
175
+ static void ConfigStringGetter(
176
+ v8::Local<v8::Name> property,
177
+ const v8::PropertyCallbackInfo<v8::Value>& info);
178
+ // Compile a specific built-in as a function
179
+ static void CompileFunction(const v8::FunctionCallbackInfo<v8::Value>& args);
180
+ static void HasCachedBuiltins(
181
+ const v8::FunctionCallbackInfo<v8::Value>& args);
182
+ // For legacy process.binding('natives')
183
+ static void GetNatives(v8::Local<v8::Name> property,
184
+ const v8::PropertyCallbackInfo<v8::Value>& info);
185
+
186
+ void AddExternalizedBuiltin(const char* id, const char* filename);
187
+
188
+ ThreadsafeCopyOnWrite<BuiltinSourceMap> source_;
189
+
190
+ const UnionBytes config_;
191
+
192
+ // If any bulitins should be eagerly compiled i.e. with inner functions
193
+ // compiled too, either use should_eager_compile_ to compile all builtins
194
+ // eagerly, or use to_eager_compile_ to compile specific builtins eagerly.
195
+ // Currently we set should_eager_compile_ to true when compiling primordials,
196
+ // and use to_eager_compile_ to compile code cache that complements the
197
+ // snapshot, where builtins already loaded in the snapshot and a few extras
198
+ // are compiled eagerly (other less-essential built-ins are compiled lazily to
199
+ // avoid bloating the binary size). At runtime any additional compilation is
200
+ // done lazily.
201
+ bool should_eager_compile_ = false;
202
+ std::unordered_set<std::string> to_eager_compile_;
203
+
204
+ struct BuiltinCodeCache {
205
+ RwLock mutex;
206
+ BuiltinCodeCacheMap map;
207
+ bool has_code_cache = false;
208
+ };
209
+ std::shared_ptr<BuiltinCodeCache> code_cache_;
210
+
211
+ friend class ::PerProcessTest;
212
+ };
213
+
214
+ } // namespace builtins
215
+
216
+ } // namespace node
217
+
218
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
219
+
220
+ #endif // SRC_NODE_BUILTINS_H_
@@ -27,6 +27,9 @@
27
27
  #include "node.h"
28
28
  #include "v8.h"
29
29
 
30
+ #define EXTENSIONLESS_FORMAT_JAVASCRIPT (0)
31
+ #define EXTENSIONLESS_FORMAT_WASM (1)
32
+
30
33
  #if HAVE_OPENSSL
31
34
 
32
35
  #ifndef RSA_PSS_SALTLEN_DIGEST
@@ -74,11 +77,6 @@
74
77
  #endif // NODE_OPENSSL_DEFAULT_CIPHER_LIST
75
78
  #endif // HAVE_OPENSSL
76
79
 
77
- namespace node {
78
-
79
- void DefineConstants(v8::Isolate* isolate, v8::Local<v8::Object> target);
80
- } // namespace node
81
-
82
80
  #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
83
81
 
84
82
  #endif // SRC_NODE_CONSTANTS_H_
@@ -0,0 +1,168 @@
1
+ #ifndef SRC_NODE_CONTEXT_DATA_H_
2
+ #define SRC_NODE_CONTEXT_DATA_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "util.h"
7
+ #include "v8.h"
8
+
9
+ namespace node {
10
+
11
+ // Pick an index that's hopefully out of the way when we're embedded inside
12
+ // another application. Performance-wise or memory-wise it doesn't matter:
13
+ // Context::SetAlignedPointerInEmbedderData() is backed by a FixedArray,
14
+ // worst case we pay a one-time penalty for resizing the array.
15
+ #ifndef NODE_CONTEXT_EMBEDDER_DATA_INDEX
16
+ #define NODE_CONTEXT_EMBEDDER_DATA_INDEX 32
17
+ #endif
18
+
19
+ #ifndef NODE_CONTEXT_SANDBOX_OBJECT_INDEX
20
+ #define NODE_CONTEXT_SANDBOX_OBJECT_INDEX 33
21
+ #endif
22
+
23
+ #ifndef NODE_CONTEXT_ALLOW_WASM_CODE_GENERATION_INDEX
24
+ #define NODE_CONTEXT_ALLOW_WASM_CODE_GENERATION_INDEX 34
25
+ #endif
26
+
27
+ #ifndef NODE_BINDING_DATA_STORE_INDEX
28
+ #define NODE_BINDING_DATA_STORE_INDEX 35
29
+ #endif
30
+
31
+ #ifndef NODE_CONTEXT_ALLOW_CODE_GENERATION_FROM_STRINGS_INDEX
32
+ #define NODE_CONTEXT_ALLOW_CODE_GENERATION_FROM_STRINGS_INDEX 36
33
+ #endif
34
+
35
+ #ifndef NODE_CONTEXT_CONTEXTIFY_CONTEXT_INDEX
36
+ #define NODE_CONTEXT_CONTEXTIFY_CONTEXT_INDEX 37
37
+ #endif
38
+
39
+ #ifndef NODE_CONTEXT_REALM_INDEX
40
+ #define NODE_CONTEXT_REALM_INDEX 38
41
+ #endif
42
+
43
+ // NODE_CONTEXT_TAG must be greater than any embedder indexes so that a single
44
+ // check on the number of embedder data fields can assure the presence of all
45
+ // embedder indexes.
46
+ #ifndef NODE_CONTEXT_TAG
47
+ #define NODE_CONTEXT_TAG 39
48
+ #endif
49
+
50
+ /**
51
+ * These are indexes used to set Node.js-specific data in the V8 contexts
52
+ * via v8::Context::SetAlignedPointerInEmbedderData() (for pointers) and
53
+ * v8::Context::SetEmbedderData() (for v8::Values).
54
+ *
55
+ * There are five types of contexts in Node.js:
56
+ * 1. Default V8 context, with nothing Node.js-specific. This is normally only
57
+ * created by the embedders that uses v8::Context APIs directly and is not
58
+ * available through the Node.js JS APIs. Its context snapshot in the
59
+ * built-in v8 startup snapshot is stored using
60
+ * v8::SnapshotCreator::SetDefaultContext() - effectively at index 0.
61
+ * 2. Default Node.js main context. When Node.js is launched typically there is
62
+ * a main thread on which a main node::Environment is created. The
63
+ * Environment is associated with its own v8::Isolate (env->isolate()) and a
64
+ * main v8::Context (env->context()). The corresponding data structure is
65
+ * node::NodeMainInstance and the Environment is created in
66
+ * node::NodeMainInstance::Run(). Its context snapshot in the built-in V8
67
+ * startup snapshot is stored at node::SnapshotData::kNodeMainContextIndex.
68
+ * 3. Node.js worker context. When a Worker instance is created via
69
+ * new worker_threads.Worker(), it gets its own OS thread, its
70
+ * own node::Environment, its own v8::Isolate and its own v8::Context.
71
+ * The corresponding data structure is node::Worker and the Environment
72
+ * is created in node::Worker::Run().
73
+ * Its context snapshot in the built-in V8 startup snapshot is stored at
74
+ * node::SnapshotData::kNodeBaseContextIndex.
75
+ * 4. Contextified vm context: When a contextified context is created via
76
+ * vm.createContext() or other related vm APIs, the vm.Context instance
77
+ * gets its own v8::Context. It shares the thread, the v8::Isolate and
78
+ * the node::Environment with the context where the vm APIs are called.
79
+ * The corresponding data structure is node::ContextifyContext and
80
+ * the initialization code is in node::ContextifyContext::New().
81
+ * Its context snapshot in the built-in V8 startup snapshot is stored at
82
+ * node::SnapshotData::kNodeVMContextIndex.
83
+ * 5. ShadowRealm context: When a JS ShadowRealm is created via new ShadowRealm,
84
+ * it gets its own v8::Context. It also shares the thread, the v8::Isolate
85
+ * and the node::Environment with the context where the ShadowRealm
86
+ * constructor is called. The corresponding data structure is
87
+ * node::ShadowRealm and the initialization code is in
88
+ * node::ShadowRealm::New().
89
+ */
90
+ enum ContextEmbedderIndex {
91
+ // Pointer to the node::Environment associated with the context. Only set for
92
+ // context type 2-5. Used by Environment::GetCurrent(context) to retrieve
93
+ // the node::Environment associated with any Node.js context in the
94
+ // V8 callbacks.
95
+ kEnvironment = NODE_CONTEXT_EMBEDDER_DATA_INDEX,
96
+ // A v8::Value which is the sandbox object used to create the contextified vm
97
+ // context. For example the first argument of vm.createContext().
98
+ // Only set for context type 4 and used in ContextifyContext methods.
99
+ kSandboxObject = NODE_CONTEXT_SANDBOX_OBJECT_INDEX,
100
+ // A v8::Value indicating whether the context allows WebAssembly code
101
+ // generation.
102
+ // Only set for context type 2-5, and for them the default is v8::True.
103
+ // For context type 4 it's configurable via options.codeGeneration.wasm in the
104
+ // vm APIs. Used in the default v8::AllowWasmCodeGenerationCallback.
105
+ kAllowWasmCodeGeneration = NODE_CONTEXT_ALLOW_WASM_CODE_GENERATION_INDEX,
106
+ // A v8::Value indicating whether the context allows code generation via
107
+ // eval() or new Function().
108
+ // Only set for context type 2-5, and for them the default is v8::True.
109
+ // For context type 4 it's configurable via options.codeGeneration.strings in
110
+ // the
111
+ // vm APIs. Used in the default v8::AllowCodeGenerationFromStringsCallback.
112
+ kAllowCodeGenerationFromStrings =
113
+ NODE_CONTEXT_ALLOW_CODE_GENERATION_FROM_STRINGS_INDEX,
114
+ // Pointer to the node::ContextifyContext associated with vm.Contexts.
115
+ // Only set for context type 4. Used by ContextifyContext::Get() to get
116
+ // to the ContextifyContext from the property interceptors.
117
+ kContextifyContext = NODE_CONTEXT_CONTEXTIFY_CONTEXT_INDEX,
118
+ // Pointer to the node::Realm associated with the context.
119
+ // Only set for context type 2-3 and 5. For context type 2-3, it points to a
120
+ // node::PrincipalRealm. For context type 5 it points to a node::ShadowRealm.
121
+ // Used by Realm::GetCurrent(context) to retrieve the associated node::Realm
122
+ // with any Node.js context in the V8 callbacks.
123
+ kRealm = NODE_CONTEXT_REALM_INDEX,
124
+ // Pointer to a constant address which is
125
+ // node::ContextEmbedderTag::kNodeContextTagPtr.
126
+ // Only set for context type 2-5. Used by ContextEmbedderTag::IsNodeContext()
127
+ // to check whether a context is a Node.js context.
128
+ kContextTag = NODE_CONTEXT_TAG,
129
+ };
130
+
131
+ class ContextEmbedderTag {
132
+ public:
133
+ static inline void TagNodeContext(v8::Local<v8::Context> context) {
134
+ // Used by ContextEmbedderTag::IsNodeContext to know that we are on a node
135
+ // context.
136
+ context->SetAlignedPointerInEmbedderData(
137
+ ContextEmbedderIndex::kContextTag,
138
+ ContextEmbedderTag::kNodeContextTagPtr);
139
+ }
140
+
141
+ static inline bool IsNodeContext(v8::Local<v8::Context> context) {
142
+ if (context.IsEmpty()) [[unlikely]] {
143
+ return false;
144
+ }
145
+ if (context->GetNumberOfEmbedderDataFields() <=
146
+ ContextEmbedderIndex::kContextTag) [[unlikely]] {
147
+ return false;
148
+ }
149
+ if (context->GetAlignedPointerFromEmbedderData(
150
+ ContextEmbedderIndex::kContextTag) !=
151
+ ContextEmbedderTag::kNodeContextTagPtr) [[unlikely]] {
152
+ return false;
153
+ }
154
+ return true;
155
+ }
156
+
157
+ private:
158
+ static void* const kNodeContextTagPtr;
159
+ static int const kNodeContextTag;
160
+
161
+ ContextEmbedderTag() = delete;
162
+ };
163
+
164
+ } // namespace node
165
+
166
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
167
+
168
+ #endif // SRC_NODE_CONTEXT_DATA_H_
@@ -0,0 +1,199 @@
1
+ #ifndef SRC_NODE_CONTEXTIFY_H_
2
+ #define SRC_NODE_CONTEXTIFY_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "base_object-inl.h"
7
+ #include "node_context_data.h"
8
+ #include "node_errors.h"
9
+
10
+ namespace node {
11
+ class ExternalReferenceRegistry;
12
+
13
+ namespace contextify {
14
+
15
+ struct ContextOptions {
16
+ v8::Local<v8::String> name;
17
+ v8::Local<v8::String> origin;
18
+ v8::Local<v8::Boolean> allow_code_gen_strings;
19
+ v8::Local<v8::Boolean> allow_code_gen_wasm;
20
+ std::unique_ptr<v8::MicrotaskQueue> own_microtask_queue;
21
+ v8::Local<v8::Symbol> host_defined_options_id;
22
+ bool vanilla = false;
23
+ };
24
+
25
+ class ContextifyContext : public BaseObject {
26
+ public:
27
+ ContextifyContext(Environment* env,
28
+ v8::Local<v8::Object> wrapper,
29
+ v8::Local<v8::Context> v8_context,
30
+ ContextOptions* options);
31
+ ~ContextifyContext();
32
+
33
+ void MemoryInfo(MemoryTracker* tracker) const override;
34
+ SET_MEMORY_INFO_NAME(ContextifyContext)
35
+ SET_SELF_SIZE(ContextifyContext)
36
+
37
+ static v8::MaybeLocal<v8::Context> CreateV8Context(
38
+ v8::Isolate* isolate,
39
+ v8::Local<v8::ObjectTemplate> object_template,
40
+ const SnapshotData* snapshot_data,
41
+ v8::MicrotaskQueue* queue);
42
+ static void CreatePerIsolateProperties(IsolateData* isolate_data,
43
+ v8::Local<v8::ObjectTemplate> target);
44
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
45
+
46
+ static ContextifyContext* ContextFromContextifiedSandbox(
47
+ Environment* env, const v8::Local<v8::Object>& wrapper_holder);
48
+
49
+ inline v8::Local<v8::Context> context() const {
50
+ return PersistentToLocal::Default(env()->isolate(), context_);
51
+ }
52
+
53
+ inline v8::Local<v8::Object> global_proxy() const {
54
+ return context()->Global();
55
+ }
56
+
57
+ inline v8::Local<v8::Object> sandbox() const {
58
+ // Only vanilla contexts have undefined sandboxes. sandbox() is only used by
59
+ // interceptors who are not supposed to be called on vanilla contexts.
60
+ v8::Local<v8::Value> result =
61
+ context()->GetEmbedderData(ContextEmbedderIndex::kSandboxObject);
62
+ CHECK(!result->IsUndefined());
63
+ return result.As<v8::Object>();
64
+ }
65
+
66
+ inline v8::MicrotaskQueue* microtask_queue() const {
67
+ return microtask_queue_.get();
68
+ }
69
+
70
+ template <typename T>
71
+ static ContextifyContext* Get(const v8::PropertyCallbackInfo<T>& args);
72
+ static ContextifyContext* Get(v8::Local<v8::Object> object);
73
+
74
+ static void InitializeGlobalTemplates(IsolateData* isolate_data);
75
+
76
+ private:
77
+ static BaseObjectPtr<ContextifyContext> New(Environment* env,
78
+ v8::Local<v8::Object> sandbox_obj,
79
+ ContextOptions* options);
80
+ // Initialize a context created from CreateV8Context()
81
+ static BaseObjectPtr<ContextifyContext> New(v8::Local<v8::Context> ctx,
82
+ Environment* env,
83
+ v8::Local<v8::Object> sandbox_obj,
84
+ ContextOptions* options);
85
+
86
+ static bool IsStillInitializing(const ContextifyContext* ctx);
87
+ static void MakeContext(const v8::FunctionCallbackInfo<v8::Value>& args);
88
+ static void IsContext(const v8::FunctionCallbackInfo<v8::Value>& args);
89
+ static void CompileFunction(
90
+ const v8::FunctionCallbackInfo<v8::Value>& args);
91
+ static v8::Local<v8::Object> CompileFunctionAndCacheResult(
92
+ Environment* env,
93
+ v8::Local<v8::Context> parsing_context,
94
+ v8::ScriptCompiler::Source* source,
95
+ std::vector<v8::Local<v8::String>> params,
96
+ std::vector<v8::Local<v8::Object>> context_extensions,
97
+ v8::ScriptCompiler::CompileOptions options,
98
+ bool produce_cached_data,
99
+ v8::Local<v8::Symbol> id_symbol,
100
+ const errors::TryCatchScope& try_catch);
101
+ static v8::Intercepted PropertyQueryCallback(
102
+ v8::Local<v8::Name> property,
103
+ const v8::PropertyCallbackInfo<v8::Integer>& args);
104
+ static v8::Intercepted PropertyGetterCallback(
105
+ v8::Local<v8::Name> property,
106
+ const v8::PropertyCallbackInfo<v8::Value>& args);
107
+ static v8::Intercepted PropertySetterCallback(
108
+ v8::Local<v8::Name> property,
109
+ v8::Local<v8::Value> value,
110
+ const v8::PropertyCallbackInfo<void>& args);
111
+ static v8::Intercepted PropertyDescriptorCallback(
112
+ v8::Local<v8::Name> property,
113
+ const v8::PropertyCallbackInfo<v8::Value>& args);
114
+ static v8::Intercepted PropertyDefinerCallback(
115
+ v8::Local<v8::Name> property,
116
+ const v8::PropertyDescriptor& desc,
117
+ const v8::PropertyCallbackInfo<void>& args);
118
+ static v8::Intercepted PropertyDeleterCallback(
119
+ v8::Local<v8::Name> property,
120
+ const v8::PropertyCallbackInfo<v8::Boolean>& args);
121
+ static void PropertyEnumeratorCallback(
122
+ const v8::PropertyCallbackInfo<v8::Array>& args);
123
+ static v8::Intercepted IndexedPropertyQueryCallback(
124
+ uint32_t index, const v8::PropertyCallbackInfo<v8::Integer>& args);
125
+ static v8::Intercepted IndexedPropertyGetterCallback(
126
+ uint32_t index, const v8::PropertyCallbackInfo<v8::Value>& args);
127
+ static v8::Intercepted IndexedPropertySetterCallback(
128
+ uint32_t index,
129
+ v8::Local<v8::Value> value,
130
+ const v8::PropertyCallbackInfo<void>& args);
131
+ static v8::Intercepted IndexedPropertyDescriptorCallback(
132
+ uint32_t index, const v8::PropertyCallbackInfo<v8::Value>& args);
133
+ static v8::Intercepted IndexedPropertyDefinerCallback(
134
+ uint32_t index,
135
+ const v8::PropertyDescriptor& desc,
136
+ const v8::PropertyCallbackInfo<void>& args);
137
+ static v8::Intercepted IndexedPropertyDeleterCallback(
138
+ uint32_t index, const v8::PropertyCallbackInfo<v8::Boolean>& args);
139
+ static void IndexedPropertyEnumeratorCallback(
140
+ const v8::PropertyCallbackInfo<v8::Array>& args);
141
+
142
+ v8::Global<v8::Context> context_;
143
+ std::unique_ptr<v8::MicrotaskQueue> microtask_queue_;
144
+ };
145
+
146
+ class ContextifyScript : public BaseObject {
147
+ public:
148
+ enum InternalFields {
149
+ kUnboundScriptSlot = BaseObject::kInternalFieldCount,
150
+ kInternalFieldCount
151
+ };
152
+
153
+ SET_NO_MEMORY_INFO()
154
+ SET_MEMORY_INFO_NAME(ContextifyScript)
155
+ SET_SELF_SIZE(ContextifyScript)
156
+
157
+ ContextifyScript(Environment* env, v8::Local<v8::Object> object);
158
+ ~ContextifyScript() override;
159
+
160
+ static void CreatePerIsolateProperties(IsolateData* isolate_data,
161
+ v8::Local<v8::ObjectTemplate> target);
162
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
163
+ static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
164
+ static bool InstanceOf(Environment* env, const v8::Local<v8::Value>& args);
165
+ static void CreateCachedData(const v8::FunctionCallbackInfo<v8::Value>& args);
166
+ static void RunInContext(const v8::FunctionCallbackInfo<v8::Value>& args);
167
+ static bool EvalMachine(v8::Local<v8::Context> context,
168
+ Environment* env,
169
+ const int64_t timeout,
170
+ const bool display_errors,
171
+ const bool break_on_sigint,
172
+ const bool break_on_first_line,
173
+ v8::MicrotaskQueue* microtask_queue,
174
+ const v8::FunctionCallbackInfo<v8::Value>& args);
175
+
176
+ private:
177
+ v8::Global<v8::UnboundScript> script_;
178
+ };
179
+
180
+ v8::Maybe<void> StoreCodeCacheResult(
181
+ Environment* env,
182
+ v8::Local<v8::Object> target,
183
+ v8::ScriptCompiler::CompileOptions compile_options,
184
+ const v8::ScriptCompiler::Source& source,
185
+ bool produce_cached_data,
186
+ std::unique_ptr<v8::ScriptCompiler::CachedData> new_cached_data);
187
+
188
+ v8::MaybeLocal<v8::Function> CompileFunction(
189
+ v8::Local<v8::Context> context,
190
+ v8::Local<v8::String> filename,
191
+ v8::Local<v8::String> content,
192
+ std::vector<v8::Local<v8::String>>* parameters);
193
+
194
+ } // namespace contextify
195
+ } // namespace node
196
+
197
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
198
+
199
+ #endif // SRC_NODE_CONTEXTIFY_H_
@@ -35,7 +35,6 @@
35
35
  #include "crypto/crypto_dh.h"
36
36
  #include "crypto/crypto_dsa.h"
37
37
  #include "crypto/crypto_ec.h"
38
- #include "crypto/crypto_groups.h"
39
38
  #include "crypto/crypto_hash.h"
40
39
  #include "crypto/crypto_hkdf.h"
41
40
  #include "crypto/crypto_hmac.h"
@@ -47,8 +46,8 @@
47
46
  #include "crypto/crypto_scrypt.h"
48
47
  #include "crypto/crypto_sig.h"
49
48
  #include "crypto/crypto_spkac.h"
50
- #include "crypto/crypto_tls.h"
51
49
  #include "crypto/crypto_timing.h"
50
+ #include "crypto/crypto_tls.h"
52
51
  #include "crypto/crypto_util.h"
53
52
  #include "crypto/crypto_x509.h"
54
53