@encharm/cws 4.4.1 → 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 (485) 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_node115.node +0 -0
  6. package/dist/bindings/cws_linux_x64_node127.node +0 -0
  7. package/dist/bindings/cws_win32_x64_node108.node +0 -0
  8. package/dist/bindings/cws_win32_x64_node115.node +0 -0
  9. package/dist/bindings/cws_win32_x64_node127.node +0 -0
  10. package/dist/bindings/cws_win32_x64_node83.node +0 -0
  11. package/dist/bindings/cws_win32_x64_node93.node +0 -0
  12. package/package.json +1 -1
  13. package/src/Addon.h +8 -23
  14. package/src/Socket.h +0 -1
  15. package/src/headers/22/acorn_version.h +6 -0
  16. package/src/headers/22/aliased_buffer-inl.h +243 -0
  17. package/src/headers/22/aliased_buffer.h +206 -0
  18. package/src/headers/{18 → 22}/async_wrap-inl.h +8 -6
  19. package/src/headers/{18 → 22}/async_wrap.h +65 -59
  20. package/src/headers/{16 → 22}/base_object-inl.h +57 -117
  21. package/src/headers/{18 → 22}/base_object.h +58 -30
  22. package/src/headers/22/base_object_types.h +74 -0
  23. package/src/headers/22/blob_serializer_deserializer-inl.h +385 -0
  24. package/src/headers/22/blob_serializer_deserializer.h +132 -0
  25. package/src/headers/{16 → 22}/callback_queue.h +1 -0
  26. package/src/headers/{16 → 22}/cares_wrap.h +27 -20
  27. package/src/headers/22/cjs_module_lexer_version.h +6 -0
  28. package/src/headers/22/cleanup_queue-inl.h +62 -0
  29. package/src/headers/22/cleanup_queue.h +85 -0
  30. package/src/headers/22/compile_cache.h +104 -0
  31. package/src/headers/{18 → 22}/crypto/crypto_clienthello.h +1 -1
  32. package/src/headers/{18 → 22}/crypto/crypto_context.h +31 -7
  33. package/src/headers/{18 → 22}/crypto/crypto_keys.h +118 -148
  34. package/src/headers/{18 → 22}/crypto/crypto_tls.h +20 -5
  35. package/src/headers/{18 → 22}/crypto/crypto_util.h +219 -263
  36. package/src/headers/22/crypto/ncrypto.h +752 -0
  37. package/src/headers/{16 → 22}/debug_utils-inl.h +15 -7
  38. package/src/headers/{18 → 22}/debug_utils.h +25 -19
  39. package/src/headers/22/encoding_binding.h +59 -0
  40. package/src/headers/{14 → 22}/env-inl.h +276 -409
  41. package/src/headers/22/env.h +1266 -0
  42. package/src/headers/22/env_properties.h +497 -0
  43. package/src/headers/{18 → 22}/handle_wrap.h +2 -0
  44. package/src/headers/{18 → 22}/histogram.h +88 -48
  45. package/src/headers/{16 → 22}/inspector_agent.h +17 -1
  46. package/src/headers/{16 → 22}/inspector_profiler.h +15 -13
  47. package/src/headers/{18 → 22}/js_native_api.h +78 -30
  48. package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
  49. package/src/headers/{18 → 22}/js_native_api_v8.h +206 -161
  50. package/src/headers/{18 → 22}/js_native_api_v8_internals.h +6 -0
  51. package/src/headers/22/json_parser.h +40 -0
  52. package/src/headers/{16 → 22}/json_utils.h +19 -8
  53. package/src/headers/{18 → 22}/memory_tracker-inl.h +16 -13
  54. package/src/headers/{14 → 22}/memory_tracker.h +13 -8
  55. package/src/headers/{16 → 22}/module_wrap.h +49 -19
  56. package/src/headers/22/ncrypto/ncrypto.h +752 -0
  57. package/src/headers/{18 → 22}/node.h +465 -68
  58. package/src/headers/{18 → 22}/node_api.h +66 -81
  59. package/src/headers/{18 → 22}/node_api_internals.h +8 -4
  60. package/src/headers/{18 → 22}/node_api_types.h +5 -0
  61. package/src/headers/22/node_binding.h +154 -0
  62. package/src/headers/{18 → 22}/node_blob.h +46 -78
  63. package/src/headers/{18 → 22}/node_bob-inl.h +1 -2
  64. package/src/headers/{18 → 22}/node_bob.h +2 -6
  65. package/src/headers/{18 → 22}/node_buffer.h +1 -1
  66. package/src/headers/22/node_builtins.h +220 -0
  67. package/src/headers/{18 → 22}/node_constants.h +3 -5
  68. package/src/headers/22/node_context_data.h +168 -0
  69. package/src/headers/22/node_contextify.h +199 -0
  70. package/src/headers/{16 → 22}/node_crypto.h +1 -2
  71. package/src/headers/22/node_dotenv.h +45 -0
  72. package/src/headers/{18 → 22}/node_errors.h +86 -27
  73. package/src/headers/22/node_exit_code.h +54 -0
  74. package/src/headers/22/node_external_reference.h +249 -0
  75. package/src/headers/{18 → 22}/node_file-inl.h +127 -30
  76. package/src/headers/{16 → 22}/node_file.h +122 -11
  77. package/src/headers/{18 → 22}/node_http2.h +28 -11
  78. package/src/headers/{16 → 22}/node_http2_state.h +34 -25
  79. package/src/headers/{18 → 22}/node_http_common-inl.h +2 -1
  80. package/src/headers/{18 → 22}/node_http_common.h +56 -55
  81. package/src/headers/{16 → 22}/node_i18n.h +5 -18
  82. package/src/headers/{18 → 22}/node_internals.h +121 -59
  83. package/src/headers/{18 → 22}/node_main_instance.h +4 -31
  84. package/src/headers/{18 → 22}/node_messaging.h +27 -10
  85. package/src/headers/{18 → 22}/node_metadata.h +23 -1
  86. package/src/headers/{18 → 22}/node_options-inl.h +24 -11
  87. package/src/headers/{18 → 22}/node_options.h +124 -39
  88. package/src/headers/{18 → 22}/node_perf.h +0 -2
  89. package/src/headers/{18 → 22}/node_perf_common.h +20 -9
  90. package/src/headers/{18 → 22}/node_platform.h +11 -5
  91. package/src/headers/{18 → 22}/node_process.h +26 -14
  92. package/src/headers/22/node_realm-inl.h +145 -0
  93. package/src/headers/22/node_realm.h +184 -0
  94. package/src/headers/{16 → 22}/node_report.h +13 -17
  95. package/src/headers/{16 → 22}/node_revert.h +3 -3
  96. package/src/headers/{16 → 22}/node_root_certs.h +902 -461
  97. package/src/headers/22/node_sea.h +64 -0
  98. package/src/headers/22/node_shadow_realm.h +46 -0
  99. package/src/headers/22/node_snapshot_builder.h +57 -0
  100. package/src/headers/22/node_snapshotable.h +174 -0
  101. package/src/headers/{18 → 22}/node_sockaddr.h +2 -2
  102. package/src/headers/{16 → 22}/node_stat_watcher.h +2 -1
  103. package/src/headers/22/node_threadsafe_cow-inl.h +54 -0
  104. package/src/headers/22/node_threadsafe_cow.h +105 -0
  105. package/src/headers/22/node_union_bytes.h +81 -0
  106. package/src/headers/22/node_url.h +96 -0
  107. package/src/headers/22/node_v8.h +77 -0
  108. package/src/headers/{14 → 22}/node_v8_platform-inl.h +17 -6
  109. package/src/headers/{18 → 22}/node_version.h +20 -8
  110. package/src/headers/22/node_wasi.h +185 -0
  111. package/src/headers/{14 → 22}/node_watchdog.h +2 -0
  112. package/src/headers/{18 → 22}/node_worker.h +7 -2
  113. package/src/headers/22/permission/child_process_permission.h +31 -0
  114. package/src/headers/22/permission/fs_permission.h +167 -0
  115. package/src/headers/22/permission/inspector_permission.h +31 -0
  116. package/src/headers/22/permission/permission.h +99 -0
  117. package/src/headers/22/permission/permission_base.h +60 -0
  118. package/src/headers/22/permission/wasi_permission.h +31 -0
  119. package/src/headers/22/permission/worker_permission.h +31 -0
  120. package/src/headers/{16 → 22}/req_wrap-inl.h +7 -6
  121. package/src/headers/{14 → 22}/spawn_sync.h +3 -3
  122. package/src/headers/{18 → 22}/stream_base-inl.h +0 -135
  123. package/src/headers/{18 → 22}/stream_base.h +35 -16
  124. package/src/headers/{18 → 22}/stream_pipe.h +3 -4
  125. package/src/headers/{16 → 22}/stream_wrap.h +2 -1
  126. package/src/headers/{18 → 22}/string_bytes.h +5 -14
  127. package/src/headers/{14 → 22}/string_decoder-inl.h +0 -6
  128. package/src/headers/{16 → 22}/string_decoder.h +0 -1
  129. package/src/headers/{18 → 22}/tcp_wrap.h +1 -1
  130. package/src/headers/{18 → 22}/threadpoolwork-inl.h +14 -1
  131. package/src/headers/22/timers.h +76 -0
  132. package/src/headers/{18 → 22}/tracing/trace_event.h +7 -5
  133. package/src/headers/{16 → 22}/udp_wrap.h +8 -5
  134. package/src/headers/22/undici_version.h +6 -0
  135. package/src/headers/{18 → 22}/util-inl.h +97 -127
  136. package/src/headers/{18 → 22}/util.h +293 -106
  137. package/src/headers/{18 → 22}/v8-fast-api-calls.h +103 -58
  138. package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
  139. package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
  140. package/dist/bindings/cws_darwin_x64_node83.node +0 -0
  141. package/dist/bindings/cws_darwin_x64_node93.node +0 -0
  142. package/dist/bindings/cws_linux_arm64_node83.node +0 -0
  143. package/dist/bindings/cws_linux_arm64_node93.node +0 -0
  144. package/dist/bindings/cws_linux_x64_node83.node +0 -0
  145. package/dist/bindings/cws_linux_x64_node93.node +0 -0
  146. package/src/headers/14/aliased_buffer.h +0 -263
  147. package/src/headers/14/allocated_buffer-inl.h +0 -110
  148. package/src/headers/14/allocated_buffer.h +0 -73
  149. package/src/headers/14/async_wrap-inl.h +0 -94
  150. package/src/headers/14/async_wrap.h +0 -230
  151. package/src/headers/14/base64.h +0 -183
  152. package/src/headers/14/base_object-inl.h +0 -371
  153. package/src/headers/14/base_object.h +0 -281
  154. package/src/headers/14/callback_queue-inl.h +0 -97
  155. package/src/headers/14/callback_queue.h +0 -78
  156. package/src/headers/14/debug_utils-inl.h +0 -223
  157. package/src/headers/14/debug_utils.h +0 -181
  158. package/src/headers/14/env.h +0 -1388
  159. package/src/headers/14/handle_wrap.h +0 -117
  160. package/src/headers/14/histogram-inl.h +0 -83
  161. package/src/headers/14/histogram.h +0 -98
  162. package/src/headers/14/inspector_agent.h +0 -149
  163. package/src/headers/14/inspector_profiler.h +0 -137
  164. package/src/headers/14/js_native_api.h +0 -544
  165. package/src/headers/14/js_native_api_types.h +0 -143
  166. package/src/headers/14/js_native_api_v8.h +0 -301
  167. package/src/headers/14/js_native_api_v8_internals.h +0 -38
  168. package/src/headers/14/json_utils.h +0 -161
  169. package/src/headers/14/memory_tracker-inl.h +0 -355
  170. package/src/headers/14/module_wrap.h +0 -99
  171. package/src/headers/14/node.h +0 -1032
  172. package/src/headers/14/node_api.h +0 -255
  173. package/src/headers/14/node_api_types.h +0 -44
  174. package/src/headers/14/node_binding.h +0 -99
  175. package/src/headers/14/node_buffer.h +0 -92
  176. package/src/headers/14/node_constants.h +0 -84
  177. package/src/headers/14/node_context_data.h +0 -44
  178. package/src/headers/14/node_contextify.h +0 -161
  179. package/src/headers/14/node_crypto.h +0 -865
  180. package/src/headers/14/node_crypto_bio.h +0 -195
  181. package/src/headers/14/node_crypto_clienthello-inl.h +0 -91
  182. package/src/headers/14/node_crypto_clienthello.h +0 -132
  183. package/src/headers/14/node_crypto_common.h +0 -138
  184. package/src/headers/14/node_crypto_groups.h +0 -415
  185. package/src/headers/14/node_dtrace.h +0 -86
  186. package/src/headers/14/node_errors.h +0 -214
  187. package/src/headers/14/node_file-inl.h +0 -306
  188. package/src/headers/14/node_file.h +0 -417
  189. package/src/headers/14/node_http2.h +0 -1191
  190. package/src/headers/14/node_http2_state.h +0 -149
  191. package/src/headers/14/node_http_common-inl.h +0 -194
  192. package/src/headers/14/node_http_common.h +0 -529
  193. package/src/headers/14/node_i18n.h +0 -144
  194. package/src/headers/14/node_internals.h +0 -405
  195. package/src/headers/14/node_main_instance.h +0 -96
  196. package/src/headers/14/node_mem.h +0 -45
  197. package/src/headers/14/node_messaging.h +0 -303
  198. package/src/headers/14/node_metadata.h +0 -109
  199. package/src/headers/14/node_mutex.h +0 -247
  200. package/src/headers/14/node_native_module.h +0 -101
  201. package/src/headers/14/node_native_module_env.h +0 -66
  202. package/src/headers/14/node_options-inl.h +0 -451
  203. package/src/headers/14/node_options.h +0 -481
  204. package/src/headers/14/node_perf.h +0 -181
  205. package/src/headers/14/node_perf_common.h +0 -97
  206. package/src/headers/14/node_platform.h +0 -189
  207. package/src/headers/14/node_process.h +0 -40
  208. package/src/headers/14/node_report.h +0 -47
  209. package/src/headers/14/node_revert.h +0 -72
  210. package/src/headers/14/node_root_certs.h +0 -3458
  211. package/src/headers/14/node_sockaddr-inl.h +0 -170
  212. package/src/headers/14/node_sockaddr.h +0 -123
  213. package/src/headers/14/node_stat_watcher.h +0 -70
  214. package/src/headers/14/node_union_bytes.h +0 -103
  215. package/src/headers/14/node_url.h +0 -188
  216. package/src/headers/14/node_version.h +0 -98
  217. package/src/headers/14/node_wasi.h +0 -108
  218. package/src/headers/14/node_win32_etw_provider-inl.h +0 -287
  219. package/src/headers/14/node_win32_etw_provider.h +0 -99
  220. package/src/headers/14/node_worker.h +0 -141
  221. package/src/headers/14/pipe_wrap.h +0 -78
  222. package/src/headers/14/req_wrap-inl.h +0 -170
  223. package/src/headers/14/req_wrap.h +0 -77
  224. package/src/headers/14/stream_base-inl.h +0 -275
  225. package/src/headers/14/stream_base.h +0 -434
  226. package/src/headers/14/stream_pipe.h +0 -73
  227. package/src/headers/14/stream_wrap.h +0 -130
  228. package/src/headers/14/string_bytes.h +0 -129
  229. package/src/headers/14/string_decoder.h +0 -50
  230. package/src/headers/14/string_search.h +0 -638
  231. package/src/headers/14/tcp_wrap.h +0 -101
  232. package/src/headers/14/threadpoolwork-inl.h +0 -57
  233. package/src/headers/14/tls_wrap.h +0 -222
  234. package/src/headers/14/tracing/agent.h +0 -195
  235. package/src/headers/14/tracing/node_trace_buffer.h +0 -83
  236. package/src/headers/14/tracing/node_trace_writer.h +0 -75
  237. package/src/headers/14/tracing/trace_event.h +0 -720
  238. package/src/headers/14/tracing/traced_value.h +0 -70
  239. package/src/headers/14/tty_wrap.h +0 -64
  240. package/src/headers/14/udp_wrap.h +0 -227
  241. package/src/headers/14/util-inl.h +0 -566
  242. package/src/headers/14/util.h +0 -804
  243. package/src/headers/14/v8abbr.h +0 -124
  244. package/src/headers/16/aliased_buffer.h +0 -315
  245. package/src/headers/16/aliased_struct-inl.h +0 -54
  246. package/src/headers/16/aliased_struct.h +0 -63
  247. package/src/headers/16/allocated_buffer-inl.h +0 -110
  248. package/src/headers/16/allocated_buffer.h +0 -73
  249. package/src/headers/16/async_wrap-inl.h +0 -94
  250. package/src/headers/16/async_wrap.h +0 -246
  251. package/src/headers/16/base64-inl.h +0 -189
  252. package/src/headers/16/base64.h +0 -69
  253. package/src/headers/16/base_object.h +0 -294
  254. package/src/headers/16/connect_wrap.h +0 -26
  255. package/src/headers/16/connection_wrap.h +0 -30
  256. package/src/headers/16/crypto/crypto_aes.h +0 -89
  257. package/src/headers/16/crypto/crypto_bio.h +0 -194
  258. package/src/headers/16/crypto/crypto_cipher.h +0 -286
  259. package/src/headers/16/crypto/crypto_clienthello-inl.h +0 -90
  260. package/src/headers/16/crypto/crypto_clienthello.h +0 -131
  261. package/src/headers/16/crypto/crypto_common.h +0 -187
  262. package/src/headers/16/crypto/crypto_context.h +0 -147
  263. package/src/headers/16/crypto/crypto_dh.h +0 -157
  264. package/src/headers/16/crypto/crypto_dsa.h +0 -76
  265. package/src/headers/16/crypto/crypto_ec.h +0 -169
  266. package/src/headers/16/crypto/crypto_groups.h +0 -415
  267. package/src/headers/16/crypto/crypto_hash.h +0 -89
  268. package/src/headers/16/crypto/crypto_hkdf.h +0 -66
  269. package/src/headers/16/crypto/crypto_hmac.h +0 -94
  270. package/src/headers/16/crypto/crypto_keygen.h +0 -301
  271. package/src/headers/16/crypto/crypto_keys.h +0 -412
  272. package/src/headers/16/crypto/crypto_pbkdf2.h +0 -76
  273. package/src/headers/16/crypto/crypto_random.h +0 -130
  274. package/src/headers/16/crypto/crypto_rsa.h +0 -141
  275. package/src/headers/16/crypto/crypto_scrypt.h +0 -87
  276. package/src/headers/16/crypto/crypto_sig.h +0 -167
  277. package/src/headers/16/crypto/crypto_spkac.h +0 -20
  278. package/src/headers/16/crypto/crypto_timing.h +0 -20
  279. package/src/headers/16/crypto/crypto_tls.h +0 -292
  280. package/src/headers/16/crypto/crypto_util.h +0 -736
  281. package/src/headers/16/crypto/crypto_x509.h +0 -141
  282. package/src/headers/16/debug_utils.h +0 -184
  283. package/src/headers/16/diagnosticfilename-inl.h +0 -33
  284. package/src/headers/16/env-inl.h +0 -1277
  285. package/src/headers/16/env.h +0 -1629
  286. package/src/headers/16/handle_wrap.h +0 -121
  287. package/src/headers/16/histogram-inl.h +0 -88
  288. package/src/headers/16/histogram.h +0 -216
  289. package/src/headers/16/inspector_io.h +0 -78
  290. package/src/headers/16/inspector_socket.h +0 -60
  291. package/src/headers/16/inspector_socket_server.h +0 -110
  292. package/src/headers/16/js_native_api.h +0 -561
  293. package/src/headers/16/js_native_api_types.h +0 -160
  294. package/src/headers/16/js_native_api_v8.h +0 -451
  295. package/src/headers/16/js_native_api_v8_internals.h +0 -39
  296. package/src/headers/16/js_stream.h +0 -52
  297. package/src/headers/16/memory_tracker-inl.h +0 -356
  298. package/src/headers/16/memory_tracker.h +0 -284
  299. package/src/headers/16/node.d +0 -315
  300. package/src/headers/16/node.h +0 -1132
  301. package/src/headers/16/node.stp +0 -146
  302. package/src/headers/16/node_api.h +0 -275
  303. package/src/headers/16/node_api_internals.h +0 -30
  304. package/src/headers/16/node_api_types.h +0 -50
  305. package/src/headers/16/node_binding.h +0 -99
  306. package/src/headers/16/node_blob.h +0 -191
  307. package/src/headers/16/node_bob-inl.h +0 -37
  308. package/src/headers/16/node_bob.h +0 -111
  309. package/src/headers/16/node_buffer.h +0 -92
  310. package/src/headers/16/node_constants.h +0 -84
  311. package/src/headers/16/node_context_data.h +0 -44
  312. package/src/headers/16/node_contextify.h +0 -196
  313. package/src/headers/16/node_dir.h +0 -52
  314. package/src/headers/16/node_dtrace.h +0 -86
  315. package/src/headers/16/node_errors.h +0 -277
  316. package/src/headers/16/node_external_reference.h +0 -129
  317. package/src/headers/16/node_file-inl.h +0 -306
  318. package/src/headers/16/node_http2.h +0 -1140
  319. package/src/headers/16/node_http_common-inl.h +0 -200
  320. package/src/headers/16/node_http_common.h +0 -531
  321. package/src/headers/16/node_internals.h +0 -421
  322. package/src/headers/16/node_main_instance.h +0 -103
  323. package/src/headers/16/node_mem-inl.h +0 -112
  324. package/src/headers/16/node_messaging.h +0 -373
  325. package/src/headers/16/node_metadata.h +0 -122
  326. package/src/headers/16/node_native_module.h +0 -101
  327. package/src/headers/16/node_native_module_env.h +0 -68
  328. package/src/headers/16/node_object_wrap.h +0 -132
  329. package/src/headers/16/node_options-inl.h +0 -477
  330. package/src/headers/16/node_options.h +0 -494
  331. package/src/headers/16/node_perf.h +0 -185
  332. package/src/headers/16/node_perf_common.h +0 -89
  333. package/src/headers/16/node_platform.h +0 -192
  334. package/src/headers/16/node_process.h +0 -43
  335. package/src/headers/16/node_provider.d +0 -80
  336. package/src/headers/16/node_snapshotable.h +0 -137
  337. package/src/headers/16/node_sockaddr-inl.h +0 -266
  338. package/src/headers/16/node_sockaddr.h +0 -405
  339. package/src/headers/16/node_union_bytes.h +0 -103
  340. package/src/headers/16/node_url.h +0 -205
  341. package/src/headers/16/node_v8.h +0 -41
  342. package/src/headers/16/node_v8_platform-inl.h +0 -194
  343. package/src/headers/16/node_version.h +0 -98
  344. package/src/headers/16/node_wasi.h +0 -108
  345. package/src/headers/16/node_watchdog.h +0 -152
  346. package/src/headers/16/node_win32_etw_provider-inl.h +0 -288
  347. package/src/headers/16/node_win32_etw_provider.h +0 -99
  348. package/src/headers/16/node_worker.h +0 -145
  349. package/src/headers/16/req_wrap.h +0 -77
  350. package/src/headers/16/spawn_sync.h +0 -242
  351. package/src/headers/16/stream_base-inl.h +0 -303
  352. package/src/headers/16/stream_base.h +0 -454
  353. package/src/headers/16/stream_pipe.h +0 -73
  354. package/src/headers/16/string_bytes.h +0 -122
  355. package/src/headers/16/string_decoder-inl.h +0 -37
  356. package/src/headers/16/string_search.h +0 -638
  357. package/src/headers/16/tcp_wrap.h +0 -103
  358. package/src/headers/16/threadpoolwork-inl.h +0 -57
  359. package/src/headers/16/timer_wrap.h +0 -84
  360. package/src/headers/16/tracing/agent.h +0 -195
  361. package/src/headers/16/tracing/node_trace_buffer.h +0 -83
  362. package/src/headers/16/tracing/node_trace_writer.h +0 -75
  363. package/src/headers/16/tracing/trace_event.h +0 -720
  364. package/src/headers/16/tracing/trace_event_common.h +0 -1109
  365. package/src/headers/16/tracing/traced_value.h +0 -70
  366. package/src/headers/16/tty_wrap.h +0 -66
  367. package/src/headers/16/util-inl.h +0 -575
  368. package/src/headers/16/util.h +0 -824
  369. package/src/headers/16/v8abbr.h +0 -123
  370. package/src/headers/16/v8ustack.d +0 -695
  371. package/src/headers/18/aliased_buffer.h +0 -315
  372. package/src/headers/18/aliased_struct-inl.h +0 -54
  373. package/src/headers/18/aliased_struct.h +0 -63
  374. package/src/headers/18/base64-inl.h +0 -189
  375. package/src/headers/18/base64.h +0 -69
  376. package/src/headers/18/base_object-inl.h +0 -374
  377. package/src/headers/18/callback_queue-inl.h +0 -97
  378. package/src/headers/18/callback_queue.h +0 -78
  379. package/src/headers/18/cares_wrap.h +0 -523
  380. package/src/headers/18/connect_wrap.h +0 -26
  381. package/src/headers/18/connection_wrap.h +0 -30
  382. package/src/headers/18/crypto/crypto_aes.h +0 -89
  383. package/src/headers/18/crypto/crypto_bio.h +0 -194
  384. package/src/headers/18/crypto/crypto_cipher.h +0 -291
  385. package/src/headers/18/crypto/crypto_clienthello-inl.h +0 -90
  386. package/src/headers/18/crypto/crypto_common.h +0 -151
  387. package/src/headers/18/crypto/crypto_dh.h +0 -156
  388. package/src/headers/18/crypto/crypto_dsa.h +0 -77
  389. package/src/headers/18/crypto/crypto_ec.h +0 -170
  390. package/src/headers/18/crypto/crypto_groups.h +0 -415
  391. package/src/headers/18/crypto/crypto_hash.h +0 -89
  392. package/src/headers/18/crypto/crypto_hkdf.h +0 -65
  393. package/src/headers/18/crypto/crypto_hmac.h +0 -94
  394. package/src/headers/18/crypto/crypto_keygen.h +0 -305
  395. package/src/headers/18/crypto/crypto_pbkdf2.h +0 -76
  396. package/src/headers/18/crypto/crypto_random.h +0 -130
  397. package/src/headers/18/crypto/crypto_rsa.h +0 -141
  398. package/src/headers/18/crypto/crypto_scrypt.h +0 -87
  399. package/src/headers/18/crypto/crypto_sig.h +0 -168
  400. package/src/headers/18/crypto/crypto_spkac.h +0 -21
  401. package/src/headers/18/crypto/crypto_timing.h +0 -20
  402. package/src/headers/18/crypto/crypto_x509.h +0 -143
  403. package/src/headers/18/debug_utils-inl.h +0 -223
  404. package/src/headers/18/diagnosticfilename-inl.h +0 -33
  405. package/src/headers/18/env-inl.h +0 -1308
  406. package/src/headers/18/env.h +0 -1667
  407. package/src/headers/18/inspector_agent.h +0 -144
  408. package/src/headers/18/inspector_io.h +0 -78
  409. package/src/headers/18/inspector_profiler.h +0 -149
  410. package/src/headers/18/inspector_socket.h +0 -60
  411. package/src/headers/18/inspector_socket_server.h +0 -110
  412. package/src/headers/18/js_stream.h +0 -52
  413. package/src/headers/18/json_utils.h +0 -161
  414. package/src/headers/18/memory_tracker.h +0 -284
  415. package/src/headers/18/module_wrap.h +0 -116
  416. package/src/headers/18/node_binding.h +0 -99
  417. package/src/headers/18/node_context_data.h +0 -44
  418. package/src/headers/18/node_contextify.h +0 -196
  419. package/src/headers/18/node_crypto.h +0 -57
  420. package/src/headers/18/node_dir.h +0 -52
  421. package/src/headers/18/node_dtrace.h +0 -86
  422. package/src/headers/18/node_external_reference.h +0 -145
  423. package/src/headers/18/node_file.h +0 -426
  424. package/src/headers/18/node_http2_state.h +0 -149
  425. package/src/headers/18/node_i18n.h +0 -145
  426. package/src/headers/18/node_mem-inl.h +0 -112
  427. package/src/headers/18/node_mem.h +0 -45
  428. package/src/headers/18/node_mutex.h +0 -323
  429. package/src/headers/18/node_native_module.h +0 -109
  430. package/src/headers/18/node_native_module_env.h +0 -71
  431. package/src/headers/18/node_object_wrap.h +0 -132
  432. package/src/headers/18/node_process-inl.h +0 -26
  433. package/src/headers/18/node_report.h +0 -47
  434. package/src/headers/18/node_revert.h +0 -82
  435. package/src/headers/18/node_root_certs.h +0 -3246
  436. package/src/headers/18/node_snapshot_builder.h +0 -43
  437. package/src/headers/18/node_snapshotable.h +0 -130
  438. package/src/headers/18/node_stat_watcher.h +0 -72
  439. package/src/headers/18/node_union_bytes.h +0 -103
  440. package/src/headers/18/node_url.h +0 -205
  441. package/src/headers/18/node_v8.h +0 -41
  442. package/src/headers/18/node_v8_platform-inl.h +0 -194
  443. package/src/headers/18/node_wasi.h +0 -108
  444. package/src/headers/18/node_watchdog.h +0 -152
  445. package/src/headers/18/node_win32_etw_provider-inl.h +0 -288
  446. package/src/headers/18/node_win32_etw_provider.h +0 -99
  447. package/src/headers/18/pipe_wrap.h +0 -80
  448. package/src/headers/18/req_wrap-inl.h +0 -170
  449. package/src/headers/18/spawn_sync.h +0 -242
  450. package/src/headers/18/stream_wrap.h +0 -133
  451. package/src/headers/18/string_decoder-inl.h +0 -37
  452. package/src/headers/18/string_decoder.h +0 -50
  453. package/src/headers/18/string_search.h +0 -638
  454. package/src/headers/18/tracing/node_trace_buffer.h +0 -83
  455. package/src/headers/18/tracing/node_trace_writer.h +0 -75
  456. package/src/headers/18/tracing/trace_event_common.h +0 -1109
  457. package/src/headers/18/tracing/traced_value.h +0 -70
  458. package/src/headers/18/udp_wrap.h +0 -227
  459. package/src/headers/18/v8abbr.h +0 -123
  460. /package/src/headers/{14 → 22}/aliased_struct-inl.h +0 -0
  461. /package/src/headers/{14 → 22}/aliased_struct.h +0 -0
  462. /package/src/headers/{16 → 22}/callback_queue-inl.h +0 -0
  463. /package/src/headers/{14 → 22}/connect_wrap.h +0 -0
  464. /package/src/headers/{14 → 22}/connection_wrap.h +0 -0
  465. /package/src/headers/{14 → 22}/diagnosticfilename-inl.h +0 -0
  466. /package/src/headers/{18 → 22}/histogram-inl.h +0 -0
  467. /package/src/headers/{14 → 22}/inspector_io.h +0 -0
  468. /package/src/headers/{14 → 22}/inspector_socket.h +0 -0
  469. /package/src/headers/{14 → 22}/inspector_socket_server.h +0 -0
  470. /package/src/headers/{14 → 22}/js_stream.h +0 -0
  471. /package/src/headers/{14 → 22}/node_dir.h +0 -0
  472. /package/src/headers/{14 → 22}/node_mem-inl.h +0 -0
  473. /package/src/headers/{16 → 22}/node_mem.h +0 -0
  474. /package/src/headers/{16 → 22}/node_mutex.h +0 -0
  475. /package/src/headers/{14 → 22}/node_object_wrap.h +0 -0
  476. /package/src/headers/{16 → 22}/node_process-inl.h +0 -0
  477. /package/src/headers/{18 → 22}/node_sockaddr-inl.h +0 -0
  478. /package/src/headers/{18 → 22}/node_wasm_web_api.h +0 -0
  479. /package/src/headers/{16 → 22}/pipe_wrap.h +0 -0
  480. /package/src/headers/{18 → 22}/req_wrap.h +0 -0
  481. /package/src/headers/{18 → 22}/timer_wrap-inl.h +0 -0
  482. /package/src/headers/{18 → 22}/timer_wrap.h +0 -0
  483. /package/src/headers/{18 → 22}/tracing/agent.h +0 -0
  484. /package/src/headers/{14 → 22}/tracing/trace_event_common.h +0 -0
  485. /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