@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.
- package/dist/bindings/cws_darwin_arm64_node115.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node127.node +0 -0
- package/dist/bindings/cws_linux_arm64_node115.node +0 -0
- package/dist/bindings/cws_linux_arm64_node127.node +0 -0
- package/dist/bindings/cws_linux_x64_node108.node +0 -0
- package/dist/bindings/cws_linux_x64_node115.node +0 -0
- package/dist/bindings/cws_linux_x64_node127.node +0 -0
- package/dist/bindings/cws_win32_x64_node108.node +0 -0
- package/dist/bindings/cws_win32_x64_node115.node +0 -0
- package/dist/bindings/cws_win32_x64_node127.node +0 -0
- package/dist/bindings/cws_win32_x64_node83.node +0 -0
- package/dist/bindings/cws_win32_x64_node93.node +0 -0
- package/package.json +1 -1
- package/src/Addon.h +20 -24
- package/src/Socket.h +0 -1
- package/src/headers/20/acorn_version.h +1 -1
- package/src/headers/20/connection_wrap.h +1 -0
- package/src/headers/20/crypto/crypto_keys.h +3 -0
- package/src/headers/20/crypto/crypto_tls.h +12 -3
- package/src/headers/20/crypto/crypto_util.h +3 -2
- package/src/headers/20/env_properties.h +3 -1
- package/src/headers/20/js_native_api.h +11 -1
- package/src/headers/20/js_native_api_v8.h +40 -3
- package/src/headers/20/js_native_api_v8_internals.h +6 -0
- package/src/headers/20/module_wrap.h +1 -1
- package/src/headers/20/node.h +2 -0
- package/src/headers/20/node_api.h +8 -7
- package/src/headers/20/node_constants.h +3 -0
- package/src/headers/20/node_contextify.h +24 -0
- package/src/headers/20/node_file-inl.h +32 -0
- package/src/headers/20/node_file.h +25 -12
- package/src/headers/20/node_options.h +9 -9
- package/src/headers/20/node_version.h +1 -1
- package/src/headers/20/permission/child_process_permission.h +2 -1
- package/src/headers/20/permission/fs_permission.h +11 -9
- package/src/headers/20/permission/inspector_permission.h +29 -0
- package/src/headers/20/permission/permission.h +4 -1
- package/src/headers/20/permission/permission_base.h +6 -2
- package/src/headers/20/permission/worker_permission.h +2 -1
- package/src/headers/20/undici_version.h +2 -2
- package/src/headers/22/acorn_version.h +6 -0
- package/src/headers/22/aliased_buffer-inl.h +243 -0
- package/src/headers/22/aliased_buffer.h +206 -0
- package/src/headers/{18 → 22}/async_wrap-inl.h +8 -6
- package/src/headers/{18 → 22}/async_wrap.h +65 -59
- package/src/headers/{16 → 22}/base_object-inl.h +57 -117
- package/src/headers/{18 → 22}/base_object.h +58 -30
- package/src/headers/22/base_object_types.h +74 -0
- package/src/headers/22/blob_serializer_deserializer-inl.h +385 -0
- package/src/headers/22/blob_serializer_deserializer.h +132 -0
- package/src/headers/{16 → 22}/callback_queue.h +1 -0
- package/src/headers/{16 → 22}/cares_wrap.h +27 -20
- package/src/headers/22/cjs_module_lexer_version.h +6 -0
- package/src/headers/22/cleanup_queue-inl.h +62 -0
- package/src/headers/22/cleanup_queue.h +85 -0
- package/src/headers/22/compile_cache.h +104 -0
- package/src/headers/{18 → 22}/crypto/crypto_clienthello.h +1 -1
- package/src/headers/{18 → 22}/crypto/crypto_context.h +31 -7
- package/src/headers/{18 → 22}/crypto/crypto_keys.h +118 -148
- package/src/headers/{18 → 22}/crypto/crypto_tls.h +20 -5
- package/src/headers/{18 → 22}/crypto/crypto_util.h +219 -263
- package/src/headers/22/crypto/ncrypto.h +752 -0
- package/src/headers/{16 → 22}/debug_utils-inl.h +15 -7
- package/src/headers/{18 → 22}/debug_utils.h +25 -19
- package/src/headers/22/encoding_binding.h +59 -0
- package/src/headers/{14 → 22}/env-inl.h +276 -409
- package/src/headers/22/env.h +1266 -0
- package/src/headers/22/env_properties.h +497 -0
- package/src/headers/{18 → 22}/handle_wrap.h +2 -0
- package/src/headers/{18 → 22}/histogram.h +88 -48
- package/src/headers/{16 → 22}/inspector_agent.h +17 -1
- package/src/headers/{16 → 22}/inspector_profiler.h +15 -13
- package/src/headers/{18 → 22}/js_native_api.h +78 -30
- package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
- package/src/headers/{18 → 22}/js_native_api_v8.h +206 -161
- package/src/headers/{18 → 22}/js_native_api_v8_internals.h +6 -0
- package/src/headers/22/json_parser.h +40 -0
- package/src/headers/{16 → 22}/json_utils.h +19 -8
- package/src/headers/{18 → 22}/memory_tracker-inl.h +16 -13
- package/src/headers/{14 → 22}/memory_tracker.h +13 -8
- package/src/headers/{16 → 22}/module_wrap.h +49 -19
- package/src/headers/22/ncrypto/ncrypto.h +752 -0
- package/src/headers/{18 → 22}/node.h +465 -68
- package/src/headers/{18 → 22}/node_api.h +66 -81
- package/src/headers/{18 → 22}/node_api_internals.h +8 -4
- package/src/headers/{18 → 22}/node_api_types.h +5 -0
- package/src/headers/22/node_binding.h +154 -0
- package/src/headers/{18 → 22}/node_blob.h +46 -78
- package/src/headers/{18 → 22}/node_bob-inl.h +1 -2
- package/src/headers/{18 → 22}/node_bob.h +2 -6
- package/src/headers/{18 → 22}/node_buffer.h +1 -1
- package/src/headers/22/node_builtins.h +220 -0
- package/src/headers/{18 → 22}/node_constants.h +3 -5
- package/src/headers/22/node_context_data.h +168 -0
- package/src/headers/22/node_contextify.h +199 -0
- package/src/headers/{16 → 22}/node_crypto.h +1 -2
- package/src/headers/22/node_dotenv.h +45 -0
- package/src/headers/{18 → 22}/node_errors.h +86 -27
- package/src/headers/22/node_exit_code.h +54 -0
- package/src/headers/22/node_external_reference.h +249 -0
- package/src/headers/{18 → 22}/node_file-inl.h +127 -30
- package/src/headers/{16 → 22}/node_file.h +122 -11
- package/src/headers/{18 → 22}/node_http2.h +28 -11
- package/src/headers/{16 → 22}/node_http2_state.h +34 -25
- package/src/headers/{18 → 22}/node_http_common-inl.h +2 -1
- package/src/headers/{18 → 22}/node_http_common.h +56 -55
- package/src/headers/{16 → 22}/node_i18n.h +5 -18
- package/src/headers/{18 → 22}/node_internals.h +121 -59
- package/src/headers/{18 → 22}/node_main_instance.h +4 -31
- package/src/headers/{18 → 22}/node_messaging.h +27 -10
- package/src/headers/{18 → 22}/node_metadata.h +23 -1
- package/src/headers/{18 → 22}/node_options-inl.h +24 -11
- package/src/headers/{18 → 22}/node_options.h +124 -39
- package/src/headers/{18 → 22}/node_perf.h +0 -2
- package/src/headers/{18 → 22}/node_perf_common.h +20 -9
- package/src/headers/{18 → 22}/node_platform.h +11 -5
- package/src/headers/{18 → 22}/node_process.h +26 -14
- package/src/headers/22/node_realm-inl.h +145 -0
- package/src/headers/22/node_realm.h +184 -0
- package/src/headers/{16 → 22}/node_report.h +13 -17
- package/src/headers/{16 → 22}/node_revert.h +3 -3
- package/src/headers/{16 → 22}/node_root_certs.h +902 -461
- package/src/headers/22/node_sea.h +64 -0
- package/src/headers/22/node_shadow_realm.h +46 -0
- package/src/headers/22/node_snapshot_builder.h +57 -0
- package/src/headers/22/node_snapshotable.h +174 -0
- package/src/headers/{18 → 22}/node_sockaddr.h +2 -2
- package/src/headers/{16 → 22}/node_stat_watcher.h +2 -1
- package/src/headers/22/node_threadsafe_cow-inl.h +54 -0
- package/src/headers/22/node_threadsafe_cow.h +105 -0
- package/src/headers/22/node_union_bytes.h +81 -0
- package/src/headers/22/node_url.h +96 -0
- package/src/headers/22/node_v8.h +77 -0
- package/src/headers/{14 → 22}/node_v8_platform-inl.h +17 -6
- package/src/headers/{18 → 22}/node_version.h +20 -8
- package/src/headers/22/node_wasi.h +185 -0
- package/src/headers/{14 → 22}/node_watchdog.h +2 -0
- package/src/headers/{18 → 22}/node_worker.h +7 -2
- package/src/headers/22/permission/child_process_permission.h +31 -0
- package/src/headers/22/permission/fs_permission.h +167 -0
- package/src/headers/22/permission/inspector_permission.h +31 -0
- package/src/headers/22/permission/permission.h +99 -0
- package/src/headers/22/permission/permission_base.h +60 -0
- package/src/headers/22/permission/wasi_permission.h +31 -0
- package/src/headers/22/permission/worker_permission.h +31 -0
- package/src/headers/{16 → 22}/req_wrap-inl.h +7 -6
- package/src/headers/{14 → 22}/spawn_sync.h +3 -3
- package/src/headers/{18 → 22}/stream_base-inl.h +0 -135
- package/src/headers/{18 → 22}/stream_base.h +35 -16
- package/src/headers/{18 → 22}/stream_pipe.h +3 -4
- package/src/headers/{16 → 22}/stream_wrap.h +2 -1
- package/src/headers/{18 → 22}/string_bytes.h +5 -14
- package/src/headers/{14 → 22}/string_decoder-inl.h +0 -6
- package/src/headers/{16 → 22}/string_decoder.h +0 -1
- package/src/headers/{18 → 22}/tcp_wrap.h +1 -1
- package/src/headers/{18 → 22}/threadpoolwork-inl.h +14 -1
- package/src/headers/22/timers.h +76 -0
- package/src/headers/{18 → 22}/tracing/trace_event.h +7 -5
- package/src/headers/{16 → 22}/udp_wrap.h +8 -5
- package/src/headers/22/undici_version.h +6 -0
- package/src/headers/{18 → 22}/util-inl.h +97 -127
- package/src/headers/{18 → 22}/util.h +293 -106
- package/src/headers/{18 → 22}/v8-fast-api-calls.h +103 -58
- package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
- package/dist/bindings/cws_darwin_x64_node83.node +0 -0
- package/dist/bindings/cws_darwin_x64_node93.node +0 -0
- package/dist/bindings/cws_linux_arm64_node83.node +0 -0
- package/dist/bindings/cws_linux_arm64_node93.node +0 -0
- package/dist/bindings/cws_linux_x64_node83.node +0 -0
- package/dist/bindings/cws_linux_x64_node93.node +0 -0
- package/src/headers/14/aliased_buffer.h +0 -263
- package/src/headers/14/allocated_buffer-inl.h +0 -110
- package/src/headers/14/allocated_buffer.h +0 -73
- package/src/headers/14/async_wrap-inl.h +0 -94
- package/src/headers/14/async_wrap.h +0 -230
- package/src/headers/14/base64.h +0 -183
- package/src/headers/14/base_object-inl.h +0 -371
- package/src/headers/14/base_object.h +0 -281
- package/src/headers/14/callback_queue-inl.h +0 -97
- package/src/headers/14/callback_queue.h +0 -78
- package/src/headers/14/debug_utils-inl.h +0 -223
- package/src/headers/14/debug_utils.h +0 -181
- package/src/headers/14/env.h +0 -1388
- package/src/headers/14/handle_wrap.h +0 -117
- package/src/headers/14/histogram-inl.h +0 -83
- package/src/headers/14/histogram.h +0 -98
- package/src/headers/14/inspector_agent.h +0 -149
- package/src/headers/14/inspector_profiler.h +0 -137
- package/src/headers/14/js_native_api.h +0 -544
- package/src/headers/14/js_native_api_types.h +0 -143
- package/src/headers/14/js_native_api_v8.h +0 -301
- package/src/headers/14/js_native_api_v8_internals.h +0 -38
- package/src/headers/14/json_utils.h +0 -161
- package/src/headers/14/memory_tracker-inl.h +0 -355
- package/src/headers/14/module_wrap.h +0 -99
- package/src/headers/14/node.h +0 -1032
- package/src/headers/14/node_api.h +0 -255
- package/src/headers/14/node_api_types.h +0 -44
- package/src/headers/14/node_binding.h +0 -99
- package/src/headers/14/node_buffer.h +0 -92
- package/src/headers/14/node_constants.h +0 -84
- package/src/headers/14/node_context_data.h +0 -44
- package/src/headers/14/node_contextify.h +0 -161
- package/src/headers/14/node_crypto.h +0 -865
- package/src/headers/14/node_crypto_bio.h +0 -195
- package/src/headers/14/node_crypto_clienthello-inl.h +0 -91
- package/src/headers/14/node_crypto_clienthello.h +0 -132
- package/src/headers/14/node_crypto_common.h +0 -138
- package/src/headers/14/node_crypto_groups.h +0 -415
- package/src/headers/14/node_dtrace.h +0 -86
- package/src/headers/14/node_errors.h +0 -214
- package/src/headers/14/node_file-inl.h +0 -306
- package/src/headers/14/node_file.h +0 -417
- package/src/headers/14/node_http2.h +0 -1191
- package/src/headers/14/node_http2_state.h +0 -149
- package/src/headers/14/node_http_common-inl.h +0 -194
- package/src/headers/14/node_http_common.h +0 -529
- package/src/headers/14/node_i18n.h +0 -144
- package/src/headers/14/node_internals.h +0 -405
- package/src/headers/14/node_main_instance.h +0 -96
- package/src/headers/14/node_mem.h +0 -45
- package/src/headers/14/node_messaging.h +0 -303
- package/src/headers/14/node_metadata.h +0 -109
- package/src/headers/14/node_mutex.h +0 -247
- package/src/headers/14/node_native_module.h +0 -101
- package/src/headers/14/node_native_module_env.h +0 -66
- package/src/headers/14/node_options-inl.h +0 -451
- package/src/headers/14/node_options.h +0 -481
- package/src/headers/14/node_perf.h +0 -181
- package/src/headers/14/node_perf_common.h +0 -97
- package/src/headers/14/node_platform.h +0 -189
- package/src/headers/14/node_process.h +0 -40
- package/src/headers/14/node_report.h +0 -47
- package/src/headers/14/node_revert.h +0 -72
- package/src/headers/14/node_root_certs.h +0 -3458
- package/src/headers/14/node_sockaddr-inl.h +0 -170
- package/src/headers/14/node_sockaddr.h +0 -123
- package/src/headers/14/node_stat_watcher.h +0 -70
- package/src/headers/14/node_union_bytes.h +0 -103
- package/src/headers/14/node_url.h +0 -188
- package/src/headers/14/node_version.h +0 -98
- package/src/headers/14/node_wasi.h +0 -108
- package/src/headers/14/node_win32_etw_provider-inl.h +0 -287
- package/src/headers/14/node_win32_etw_provider.h +0 -99
- package/src/headers/14/node_worker.h +0 -141
- package/src/headers/14/pipe_wrap.h +0 -78
- package/src/headers/14/req_wrap-inl.h +0 -170
- package/src/headers/14/req_wrap.h +0 -77
- package/src/headers/14/stream_base-inl.h +0 -275
- package/src/headers/14/stream_base.h +0 -434
- package/src/headers/14/stream_pipe.h +0 -73
- package/src/headers/14/stream_wrap.h +0 -130
- package/src/headers/14/string_bytes.h +0 -129
- package/src/headers/14/string_decoder.h +0 -50
- package/src/headers/14/string_search.h +0 -638
- package/src/headers/14/tcp_wrap.h +0 -101
- package/src/headers/14/threadpoolwork-inl.h +0 -57
- package/src/headers/14/tls_wrap.h +0 -222
- package/src/headers/14/tracing/agent.h +0 -195
- package/src/headers/14/tracing/trace_event.h +0 -720
- package/src/headers/14/tty_wrap.h +0 -64
- package/src/headers/14/udp_wrap.h +0 -227
- package/src/headers/14/util-inl.h +0 -566
- package/src/headers/14/util.h +0 -804
- package/src/headers/14/v8abbr.h +0 -124
- package/src/headers/16/aliased_buffer.h +0 -315
- package/src/headers/16/aliased_struct-inl.h +0 -54
- package/src/headers/16/aliased_struct.h +0 -63
- package/src/headers/16/allocated_buffer-inl.h +0 -110
- package/src/headers/16/allocated_buffer.h +0 -73
- package/src/headers/16/async_wrap-inl.h +0 -94
- package/src/headers/16/async_wrap.h +0 -246
- package/src/headers/16/base64-inl.h +0 -189
- package/src/headers/16/base64.h +0 -69
- package/src/headers/16/base_object.h +0 -294
- package/src/headers/16/connect_wrap.h +0 -26
- package/src/headers/16/connection_wrap.h +0 -30
- package/src/headers/16/crypto/crypto_aes.h +0 -89
- package/src/headers/16/crypto/crypto_bio.h +0 -194
- package/src/headers/16/crypto/crypto_cipher.h +0 -286
- package/src/headers/16/crypto/crypto_clienthello-inl.h +0 -90
- package/src/headers/16/crypto/crypto_clienthello.h +0 -131
- package/src/headers/16/crypto/crypto_common.h +0 -187
- package/src/headers/16/crypto/crypto_context.h +0 -147
- package/src/headers/16/crypto/crypto_dh.h +0 -157
- package/src/headers/16/crypto/crypto_dsa.h +0 -76
- package/src/headers/16/crypto/crypto_ec.h +0 -169
- package/src/headers/16/crypto/crypto_groups.h +0 -415
- package/src/headers/16/crypto/crypto_hash.h +0 -89
- package/src/headers/16/crypto/crypto_hkdf.h +0 -66
- package/src/headers/16/crypto/crypto_hmac.h +0 -94
- package/src/headers/16/crypto/crypto_keygen.h +0 -301
- package/src/headers/16/crypto/crypto_keys.h +0 -412
- package/src/headers/16/crypto/crypto_pbkdf2.h +0 -76
- package/src/headers/16/crypto/crypto_random.h +0 -130
- package/src/headers/16/crypto/crypto_rsa.h +0 -141
- package/src/headers/16/crypto/crypto_scrypt.h +0 -87
- package/src/headers/16/crypto/crypto_sig.h +0 -167
- package/src/headers/16/crypto/crypto_spkac.h +0 -20
- package/src/headers/16/crypto/crypto_timing.h +0 -20
- package/src/headers/16/crypto/crypto_tls.h +0 -292
- package/src/headers/16/crypto/crypto_util.h +0 -736
- package/src/headers/16/crypto/crypto_x509.h +0 -141
- package/src/headers/16/debug_utils.h +0 -184
- package/src/headers/16/diagnosticfilename-inl.h +0 -33
- package/src/headers/16/env-inl.h +0 -1277
- package/src/headers/16/env.h +0 -1629
- package/src/headers/16/handle_wrap.h +0 -121
- package/src/headers/16/histogram-inl.h +0 -88
- package/src/headers/16/histogram.h +0 -216
- package/src/headers/16/inspector_io.h +0 -78
- package/src/headers/16/inspector_socket.h +0 -60
- package/src/headers/16/inspector_socket_server.h +0 -110
- package/src/headers/16/js_native_api.h +0 -561
- package/src/headers/16/js_native_api_types.h +0 -160
- package/src/headers/16/js_native_api_v8.h +0 -451
- package/src/headers/16/js_native_api_v8_internals.h +0 -39
- package/src/headers/16/js_stream.h +0 -52
- package/src/headers/16/memory_tracker-inl.h +0 -356
- package/src/headers/16/memory_tracker.h +0 -284
- package/src/headers/16/node.d +0 -315
- package/src/headers/16/node.h +0 -1132
- package/src/headers/16/node.stp +0 -146
- package/src/headers/16/node_api.h +0 -275
- package/src/headers/16/node_api_internals.h +0 -30
- package/src/headers/16/node_api_types.h +0 -50
- package/src/headers/16/node_binding.h +0 -99
- package/src/headers/16/node_blob.h +0 -191
- package/src/headers/16/node_bob-inl.h +0 -37
- package/src/headers/16/node_bob.h +0 -111
- package/src/headers/16/node_buffer.h +0 -92
- package/src/headers/16/node_constants.h +0 -84
- package/src/headers/16/node_context_data.h +0 -44
- package/src/headers/16/node_contextify.h +0 -196
- package/src/headers/16/node_dir.h +0 -52
- package/src/headers/16/node_dtrace.h +0 -86
- package/src/headers/16/node_errors.h +0 -277
- package/src/headers/16/node_external_reference.h +0 -129
- package/src/headers/16/node_file-inl.h +0 -306
- package/src/headers/16/node_http2.h +0 -1140
- package/src/headers/16/node_http_common-inl.h +0 -200
- package/src/headers/16/node_http_common.h +0 -531
- package/src/headers/16/node_internals.h +0 -421
- package/src/headers/16/node_main_instance.h +0 -103
- package/src/headers/16/node_mem-inl.h +0 -112
- package/src/headers/16/node_messaging.h +0 -373
- package/src/headers/16/node_metadata.h +0 -122
- package/src/headers/16/node_native_module.h +0 -101
- package/src/headers/16/node_native_module_env.h +0 -68
- package/src/headers/16/node_object_wrap.h +0 -132
- package/src/headers/16/node_options-inl.h +0 -477
- package/src/headers/16/node_options.h +0 -494
- package/src/headers/16/node_perf.h +0 -185
- package/src/headers/16/node_perf_common.h +0 -89
- package/src/headers/16/node_platform.h +0 -192
- package/src/headers/16/node_process.h +0 -43
- package/src/headers/16/node_provider.d +0 -80
- package/src/headers/16/node_snapshotable.h +0 -137
- package/src/headers/16/node_sockaddr-inl.h +0 -266
- package/src/headers/16/node_sockaddr.h +0 -405
- package/src/headers/16/node_union_bytes.h +0 -103
- package/src/headers/16/node_url.h +0 -205
- package/src/headers/16/node_v8.h +0 -41
- package/src/headers/16/node_v8_platform-inl.h +0 -194
- package/src/headers/16/node_version.h +0 -98
- package/src/headers/16/node_wasi.h +0 -108
- package/src/headers/16/node_watchdog.h +0 -152
- package/src/headers/16/node_win32_etw_provider-inl.h +0 -288
- package/src/headers/16/node_win32_etw_provider.h +0 -99
- package/src/headers/16/node_worker.h +0 -145
- package/src/headers/16/req_wrap.h +0 -77
- package/src/headers/16/spawn_sync.h +0 -242
- package/src/headers/16/stream_base-inl.h +0 -303
- package/src/headers/16/stream_base.h +0 -454
- package/src/headers/16/stream_pipe.h +0 -73
- package/src/headers/16/string_bytes.h +0 -122
- package/src/headers/16/string_decoder-inl.h +0 -37
- package/src/headers/16/string_search.h +0 -638
- package/src/headers/16/tcp_wrap.h +0 -103
- package/src/headers/16/threadpoolwork-inl.h +0 -57
- package/src/headers/16/timer_wrap.h +0 -84
- package/src/headers/16/tracing/agent.h +0 -195
- package/src/headers/16/tracing/node_trace_buffer.h +0 -83
- package/src/headers/16/tracing/node_trace_writer.h +0 -75
- package/src/headers/16/tracing/trace_event.h +0 -720
- package/src/headers/16/tracing/trace_event_common.h +0 -1109
- package/src/headers/16/tracing/traced_value.h +0 -70
- package/src/headers/16/tty_wrap.h +0 -66
- package/src/headers/16/util-inl.h +0 -575
- package/src/headers/16/util.h +0 -824
- package/src/headers/16/v8abbr.h +0 -123
- package/src/headers/16/v8ustack.d +0 -695
- package/src/headers/18/aliased_buffer.h +0 -315
- package/src/headers/18/aliased_struct-inl.h +0 -54
- package/src/headers/18/aliased_struct.h +0 -63
- package/src/headers/18/base64-inl.h +0 -189
- package/src/headers/18/base64.h +0 -69
- package/src/headers/18/base_object-inl.h +0 -374
- package/src/headers/18/callback_queue-inl.h +0 -97
- package/src/headers/18/callback_queue.h +0 -78
- package/src/headers/18/cares_wrap.h +0 -523
- package/src/headers/18/connect_wrap.h +0 -26
- package/src/headers/18/connection_wrap.h +0 -30
- package/src/headers/18/crypto/crypto_aes.h +0 -89
- package/src/headers/18/crypto/crypto_bio.h +0 -194
- package/src/headers/18/crypto/crypto_cipher.h +0 -291
- package/src/headers/18/crypto/crypto_clienthello-inl.h +0 -90
- package/src/headers/18/crypto/crypto_common.h +0 -151
- package/src/headers/18/crypto/crypto_dh.h +0 -156
- package/src/headers/18/crypto/crypto_dsa.h +0 -77
- package/src/headers/18/crypto/crypto_ec.h +0 -170
- package/src/headers/18/crypto/crypto_groups.h +0 -415
- package/src/headers/18/crypto/crypto_hash.h +0 -89
- package/src/headers/18/crypto/crypto_hkdf.h +0 -65
- package/src/headers/18/crypto/crypto_hmac.h +0 -94
- package/src/headers/18/crypto/crypto_keygen.h +0 -305
- package/src/headers/18/crypto/crypto_pbkdf2.h +0 -76
- package/src/headers/18/crypto/crypto_random.h +0 -130
- package/src/headers/18/crypto/crypto_rsa.h +0 -141
- package/src/headers/18/crypto/crypto_scrypt.h +0 -87
- package/src/headers/18/crypto/crypto_sig.h +0 -168
- package/src/headers/18/crypto/crypto_spkac.h +0 -21
- package/src/headers/18/crypto/crypto_timing.h +0 -20
- package/src/headers/18/crypto/crypto_x509.h +0 -143
- package/src/headers/18/debug_utils-inl.h +0 -223
- package/src/headers/18/diagnosticfilename-inl.h +0 -33
- package/src/headers/18/env-inl.h +0 -1308
- package/src/headers/18/env.h +0 -1667
- package/src/headers/18/inspector_agent.h +0 -144
- package/src/headers/18/inspector_io.h +0 -78
- package/src/headers/18/inspector_profiler.h +0 -149
- package/src/headers/18/inspector_socket.h +0 -60
- package/src/headers/18/inspector_socket_server.h +0 -110
- package/src/headers/18/js_stream.h +0 -52
- package/src/headers/18/json_utils.h +0 -161
- package/src/headers/18/memory_tracker.h +0 -284
- package/src/headers/18/module_wrap.h +0 -116
- package/src/headers/18/node_binding.h +0 -99
- package/src/headers/18/node_context_data.h +0 -44
- package/src/headers/18/node_contextify.h +0 -196
- package/src/headers/18/node_crypto.h +0 -57
- package/src/headers/18/node_dir.h +0 -52
- package/src/headers/18/node_dtrace.h +0 -86
- package/src/headers/18/node_external_reference.h +0 -145
- package/src/headers/18/node_file.h +0 -426
- package/src/headers/18/node_http2_state.h +0 -149
- package/src/headers/18/node_i18n.h +0 -145
- package/src/headers/18/node_mem-inl.h +0 -112
- package/src/headers/18/node_mem.h +0 -45
- package/src/headers/18/node_mutex.h +0 -323
- package/src/headers/18/node_native_module.h +0 -109
- package/src/headers/18/node_native_module_env.h +0 -71
- package/src/headers/18/node_object_wrap.h +0 -132
- package/src/headers/18/node_process-inl.h +0 -26
- package/src/headers/18/node_report.h +0 -47
- package/src/headers/18/node_revert.h +0 -82
- package/src/headers/18/node_root_certs.h +0 -3246
- package/src/headers/18/node_snapshot_builder.h +0 -43
- package/src/headers/18/node_snapshotable.h +0 -130
- package/src/headers/18/node_stat_watcher.h +0 -72
- package/src/headers/18/node_union_bytes.h +0 -103
- package/src/headers/18/node_url.h +0 -205
- package/src/headers/18/node_v8.h +0 -41
- package/src/headers/18/node_v8_platform-inl.h +0 -194
- package/src/headers/18/node_wasi.h +0 -108
- package/src/headers/18/node_watchdog.h +0 -152
- package/src/headers/18/node_win32_etw_provider-inl.h +0 -288
- package/src/headers/18/node_win32_etw_provider.h +0 -99
- package/src/headers/18/pipe_wrap.h +0 -80
- package/src/headers/18/req_wrap-inl.h +0 -170
- package/src/headers/18/spawn_sync.h +0 -242
- package/src/headers/18/stream_wrap.h +0 -133
- package/src/headers/18/string_decoder-inl.h +0 -37
- package/src/headers/18/string_decoder.h +0 -50
- package/src/headers/18/string_search.h +0 -638
- package/src/headers/18/tracing/node_trace_buffer.h +0 -83
- package/src/headers/18/tracing/node_trace_writer.h +0 -75
- package/src/headers/18/tracing/trace_event_common.h +0 -1109
- package/src/headers/18/tracing/traced_value.h +0 -70
- package/src/headers/18/udp_wrap.h +0 -227
- package/src/headers/18/v8abbr.h +0 -123
- /package/src/headers/{14 → 20}/tracing/node_trace_buffer.h +0 -0
- /package/src/headers/{14 → 20}/tracing/node_trace_writer.h +0 -0
- /package/src/headers/{14 → 20}/tracing/traced_value.h +0 -0
- /package/src/headers/{14 → 22}/aliased_struct-inl.h +0 -0
- /package/src/headers/{14 → 22}/aliased_struct.h +0 -0
- /package/src/headers/{16 → 22}/callback_queue-inl.h +0 -0
- /package/src/headers/{14 → 22}/connect_wrap.h +0 -0
- /package/src/headers/{14 → 22}/connection_wrap.h +0 -0
- /package/src/headers/{14 → 22}/diagnosticfilename-inl.h +0 -0
- /package/src/headers/{18 → 22}/histogram-inl.h +0 -0
- /package/src/headers/{14 → 22}/inspector_io.h +0 -0
- /package/src/headers/{14 → 22}/inspector_socket.h +0 -0
- /package/src/headers/{14 → 22}/inspector_socket_server.h +0 -0
- /package/src/headers/{14 → 22}/js_stream.h +0 -0
- /package/src/headers/{14 → 22}/node_dir.h +0 -0
- /package/src/headers/{14 → 22}/node_mem-inl.h +0 -0
- /package/src/headers/{16 → 22}/node_mem.h +0 -0
- /package/src/headers/{16 → 22}/node_mutex.h +0 -0
- /package/src/headers/{14 → 22}/node_object_wrap.h +0 -0
- /package/src/headers/{16 → 22}/node_process-inl.h +0 -0
- /package/src/headers/{18 → 22}/node_sockaddr-inl.h +0 -0
- /package/src/headers/{18 → 22}/node_wasm_web_api.h +0 -0
- /package/src/headers/{16 → 22}/pipe_wrap.h +0 -0
- /package/src/headers/{18 → 22}/req_wrap.h +0 -0
- /package/src/headers/{18 → 22}/timer_wrap-inl.h +0 -0
- /package/src/headers/{18 → 22}/timer_wrap.h +0 -0
- /package/src/headers/{18 → 22}/tracing/agent.h +0 -0
- /package/src/headers/{14 → 22}/tracing/trace_event_common.h +0 -0
- /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 =
|
|
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,
|
|
@@ -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
|
|