@encharm/cws 4.4.1 → 4.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.gyp +1 -1
- package/dist/bindings/cws_darwin_arm64_node115.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node127.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node137.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_node115.node +0 -0
- package/dist/bindings/cws_linux_x64_node127.node +0 -0
- package/dist/bindings/cws_linux_x64_node137.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 +13 -23
- package/src/Socket.h +0 -1
- 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/{18 → 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/22/js_native_api.h +619 -0
- package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
- package/src/headers/22/js_native_api_v8.h +485 -0
- 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/{16 → 22}/node_version.h +21 -9
- 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/src/headers/24/acorn_version.h +6 -0
- package/src/headers/24/addon_permission.h +31 -0
- package/src/headers/{16/tracing → 24}/agent.h +1 -1
- package/src/headers/24/aliased_buffer-inl.h +244 -0
- package/src/headers/24/aliased_buffer.h +206 -0
- package/src/headers/24/amaro_version.h +6 -0
- package/src/headers/24/application.h +165 -0
- package/src/headers/24/async_context_frame.h +33 -0
- package/src/headers/{14 → 24}/async_wrap-inl.h +8 -6
- package/src/headers/{16 → 24}/async_wrap.h +86 -88
- package/src/headers/{16 → 24}/base_object-inl.h +75 -119
- package/src/headers/{16 → 24}/base_object.h +84 -40
- package/src/headers/24/base_object_types.h +74 -0
- package/src/headers/24/bindingdata.h +272 -0
- package/src/headers/24/blob_serializer_deserializer-inl.h +385 -0
- package/src/headers/24/blob_serializer_deserializer.h +132 -0
- package/src/headers/{18 → 24}/callback_queue.h +1 -0
- package/src/headers/{18 → 24}/cares_wrap.h +68 -144
- package/src/headers/24/child_process_permission.h +31 -0
- package/src/headers/24/cid.h +127 -0
- package/src/headers/24/cjs_module_lexer_version.h +6 -0
- package/src/headers/24/cleanup_queue-inl.h +36 -0
- package/src/headers/24/cleanup_queue.h +79 -0
- package/src/headers/24/compile_cache.h +113 -0
- package/src/headers/24/cppgc_helpers-inl.h +65 -0
- package/src/headers/24/cppgc_helpers.h +162 -0
- package/src/headers/24/crypto/crypto_aes.h +97 -0
- package/src/headers/24/crypto/crypto_argon2.h +86 -0
- package/src/headers/{16 → 24}/crypto/crypto_bio.h +8 -9
- package/src/headers/24/crypto/crypto_chacha20_poly1305.h +64 -0
- package/src/headers/{18 → 24}/crypto/crypto_cipher.h +48 -58
- package/src/headers/{16 → 24}/crypto/crypto_clienthello-inl.h +2 -2
- package/src/headers/{16 → 24}/crypto/crypto_clienthello.h +1 -1
- package/src/headers/24/crypto/crypto_common.h +48 -0
- package/src/headers/{16 → 24}/crypto/crypto_context.h +46 -22
- package/src/headers/{18 → 24}/crypto/crypto_dh.h +27 -57
- package/src/headers/{18 → 24}/crypto/crypto_dsa.h +7 -34
- package/src/headers/{18 → 24}/crypto/crypto_ec.h +42 -49
- package/src/headers/{18 → 24}/crypto/crypto_hash.h +11 -11
- package/src/headers/{18 → 24}/crypto/crypto_hkdf.h +10 -14
- package/src/headers/{18 → 24}/crypto/crypto_hmac.h +11 -13
- package/src/headers/24/crypto/crypto_kem.h +113 -0
- package/src/headers/{18 → 24}/crypto/crypto_keygen.h +59 -74
- package/src/headers/{16 → 24}/crypto/crypto_keys.h +134 -154
- package/src/headers/24/crypto/crypto_ml_dsa.h +21 -0
- package/src/headers/{18 → 24}/crypto/crypto_pbkdf2.h +9 -11
- package/src/headers/{18 → 24}/crypto/crypto_random.h +28 -34
- package/src/headers/{18 → 24}/crypto/crypto_rsa.h +30 -35
- package/src/headers/{18 → 24}/crypto/crypto_scrypt.h +8 -10
- package/src/headers/{18 → 24}/crypto/crypto_sig.h +36 -48
- package/src/headers/{16 → 24}/crypto/crypto_tls.h +35 -18
- package/src/headers/{16 → 24}/crypto/crypto_util.h +183 -321
- package/src/headers/24/crypto/crypto_x509.h +140 -0
- package/src/headers/24/data.h +148 -0
- package/src/headers/{14 → 24}/debug_utils-inl.h +17 -8
- package/src/headers/{16 → 24}/debug_utils.h +31 -22
- package/src/headers/24/defs.h +254 -0
- package/src/headers/24/embedded_data.h +17 -0
- package/src/headers/24/encoding_binding.h +60 -0
- package/src/headers/24/endpoint.h +421 -0
- package/src/headers/{16 → 24}/env-inl.h +198 -540
- package/src/headers/24/env.h +1257 -0
- package/src/headers/24/env_properties.h +561 -0
- package/src/headers/24/fs_permission.h +167 -0
- package/src/headers/{16 → 24}/handle_wrap.h +4 -2
- package/src/headers/{16 → 24}/histogram-inl.h +34 -15
- package/src/headers/24/histogram.h +279 -0
- package/src/headers/24/http3.h +44 -0
- package/src/headers/{18 → 24}/inspector_agent.h +23 -2
- package/src/headers/24/inspector_permission.h +31 -0
- package/src/headers/{18 → 24}/inspector_profiler.h +15 -15
- package/src/headers/24/io_agent.h +30 -0
- package/src/headers/{18 → 24}/js_native_api.h +74 -30
- package/src/headers/{16 → 24}/js_native_api_types.h +61 -10
- package/src/headers/{18 → 24}/js_native_api_v8.h +205 -160
- package/src/headers/{16 → 24}/js_native_api_v8_internals.h +12 -6
- package/src/headers/24/json_parser.h +40 -0
- package/src/headers/{18 → 24}/json_utils.h +19 -8
- package/src/headers/24/logstream.h +81 -0
- package/src/headers/24/main_thread_interface.h +116 -0
- package/src/headers/{16 → 24}/memory_tracker-inl.h +115 -17
- package/src/headers/{16 → 24}/memory_tracker.h +58 -9
- package/src/headers/24/module_wrap.h +229 -0
- package/src/headers/24/ncrypto.h +1625 -0
- package/src/headers/24/network_agent.h +118 -0
- package/src/headers/24/network_inspector.h +45 -0
- package/src/headers/24/network_resource_manager.h +29 -0
- package/src/headers/{16 → 24}/node.h +560 -72
- package/src/headers/24/node_api.h +269 -0
- package/src/headers/24/node_api_internals.h +46 -0
- package/src/headers/{16 → 24}/node_api_types.h +13 -11
- package/src/headers/24/node_binding.h +163 -0
- package/src/headers/{16 → 24}/node_blob.h +46 -78
- package/src/headers/{16 → 24}/node_bob-inl.h +1 -2
- package/src/headers/{16 → 24}/node_bob.h +2 -6
- package/src/headers/{14 → 24}/node_buffer.h +1 -1
- package/src/headers/24/node_builtins.h +223 -0
- package/src/headers/24/node_config_file.h +65 -0
- package/src/headers/{14 → 24}/node_constants.h +3 -5
- package/src/headers/24/node_context_data.h +168 -0
- package/src/headers/24/node_contextify.h +261 -0
- package/src/headers/{18 → 24}/node_crypto.h +7 -2
- package/src/headers/24/node_debug.h +25 -0
- package/src/headers/24/node_dotenv.h +45 -0
- package/src/headers/{16 → 24}/node_errors.h +146 -32
- package/src/headers/24/node_exit_code.h +54 -0
- package/src/headers/{18 → 24}/node_external_reference.h +44 -22
- package/src/headers/{16 → 24}/node_file-inl.h +156 -50
- package/src/headers/{18 → 24}/node_file.h +129 -15
- package/src/headers/{16 → 24}/node_http2.h +53 -18
- package/src/headers/{14 → 24}/node_http2_state.h +35 -25
- package/src/headers/{16 → 24}/node_http_common-inl.h +8 -10
- package/src/headers/{16 → 24}/node_http_common.h +63 -59
- package/src/headers/{18 → 24}/node_i18n.h +5 -18
- package/src/headers/{16 → 24}/node_internals.h +131 -76
- package/src/headers/24/node_json.h +24 -0
- package/src/headers/24/node_large_page.h +34 -0
- package/src/headers/24/node_locks.h +180 -0
- package/src/headers/{14 → 24}/node_main_instance.h +15 -44
- package/src/headers/{16 → 24}/node_mem-inl.h +7 -7
- package/src/headers/{16 → 24}/node_messaging.h +27 -11
- package/src/headers/{16 → 24}/node_metadata.h +44 -2
- package/src/headers/24/node_modules.h +93 -0
- package/src/headers/{16 → 24}/node_options-inl.h +93 -46
- package/src/headers/{16 → 24}/node_options.h +251 -63
- package/src/headers/{16 → 24}/node_perf.h +6 -25
- package/src/headers/{16 → 24}/node_perf_common.h +23 -10
- package/src/headers/24/node_platform.h +286 -0
- package/src/headers/24/node_process.h +111 -0
- package/src/headers/24/node_realm-inl.h +153 -0
- package/src/headers/24/node_realm.h +236 -0
- package/src/headers/{18 → 24}/node_report.h +13 -17
- package/src/headers/{18 → 24}/node_revert.h +3 -3
- package/src/headers/{18 → 24}/node_root_certs.h +1010 -710
- package/src/headers/24/node_sea.h +74 -0
- package/src/headers/24/node_shadow_realm.h +46 -0
- package/src/headers/24/node_snapshot_builder.h +57 -0
- package/src/headers/24/node_snapshotable.h +174 -0
- package/src/headers/{16 → 24}/node_sockaddr-inl.h +11 -20
- package/src/headers/{16 → 24}/node_sockaddr.h +9 -20
- package/src/headers/24/node_sqlite.h +270 -0
- package/src/headers/{18 → 24}/node_stat_watcher.h +2 -1
- package/src/headers/24/node_string.h +101 -0
- package/src/headers/24/node_task_runner.h +92 -0
- package/src/headers/24/node_threadsafe_cow-inl.h +54 -0
- package/src/headers/24/node_threadsafe_cow.h +105 -0
- package/src/headers/24/node_union_bytes.h +81 -0
- package/src/headers/24/node_url.h +101 -0
- package/src/headers/24/node_url_pattern.h +118 -0
- package/src/headers/24/node_v8.h +77 -0
- package/src/headers/{18 → 24}/node_v8_platform-inl.h +22 -31
- package/src/headers/{18 → 24}/node_version.h +18 -6
- package/src/headers/24/node_wasi.h +185 -0
- package/src/headers/24/node_wasm_web_api.h +55 -0
- package/src/headers/{18 → 24}/node_watchdog.h +2 -0
- package/src/headers/24/node_webstorage.h +60 -0
- package/src/headers/{16 → 24}/node_worker.h +24 -10
- package/src/headers/24/packet.h +155 -0
- package/src/headers/24/path.h +33 -0
- package/src/headers/24/permission/addon_permission.h +31 -0
- package/src/headers/24/permission/child_process_permission.h +31 -0
- package/src/headers/24/permission/fs_permission.h +167 -0
- package/src/headers/24/permission/inspector_permission.h +31 -0
- package/src/headers/24/permission/permission.h +100 -0
- package/src/headers/24/permission/permission_base.h +65 -0
- package/src/headers/24/permission/wasi_permission.h +31 -0
- package/src/headers/24/permission/worker_permission.h +31 -0
- package/src/headers/24/permission.h +100 -0
- package/src/headers/24/permission_base.h +65 -0
- package/src/headers/24/preferredaddress.h +72 -0
- package/src/headers/24/protocol_helper.h +27 -0
- package/src/headers/24/queue.h +306 -0
- package/src/headers/{18 → 24}/req_wrap-inl.h +12 -6
- package/src/headers/{16 → 24}/req_wrap.h +3 -1
- package/src/headers/24/runtime_agent.h +41 -0
- package/src/headers/24/session.h +528 -0
- package/src/headers/24/sessionticket.h +108 -0
- package/src/headers/{18 → 24}/spawn_sync.h +9 -8
- package/src/headers/{16 → 24}/stream_base-inl.h +3 -133
- package/src/headers/{16 → 24}/stream_base.h +43 -19
- package/src/headers/{16 → 24}/stream_pipe.h +7 -4
- package/src/headers/{18 → 24}/stream_wrap.h +2 -3
- package/src/headers/24/streams.h +370 -0
- package/src/headers/{16 → 24}/string_bytes.h +8 -21
- package/src/headers/{18 → 24}/string_decoder-inl.h +0 -6
- package/src/headers/{18 → 24}/string_decoder.h +0 -1
- package/src/headers/24/target_agent.h +75 -0
- package/src/headers/{16 → 24}/tcp_wrap.h +3 -1
- package/src/headers/{14 → 24}/threadpoolwork-inl.h +14 -1
- package/src/headers/24/timer_wrap-inl.h +32 -0
- package/src/headers/{16 → 24}/timer_wrap.h +7 -4
- package/src/headers/24/timers.h +75 -0
- package/src/headers/24/tlscontext.h +228 -0
- package/src/headers/24/tokens.h +256 -0
- package/src/headers/{14/tracing → 24}/trace_event.h +7 -5
- package/src/headers/24/traced_value.h +129 -0
- package/src/headers/24/tracing_agent.h +43 -0
- package/src/headers/24/transportparams.h +166 -0
- package/src/headers/{16 → 24}/tty_wrap.h +0 -1
- package/src/headers/{18 → 24}/udp_wrap.h +8 -5
- package/src/headers/24/undici_version.h +6 -0
- package/src/headers/{16 → 24}/util-inl.h +267 -131
- package/src/headers/{16 → 24}/util.h +338 -146
- package/src/headers/24/v8-external-memory-accounter.h +60 -0
- package/src/headers/24/v8-fast-api-calls.h +819 -0
- package/src/headers/24/v8-inspector.h +426 -0
- package/src/headers/24/wasi_permission.h +31 -0
- package/src/headers/24/worker_agent.h +40 -0
- package/src/headers/24/worker_inspector.h +124 -0
- package/src/headers/24/worker_permission.h +31 -0
- package/src/headers/24/zlib_version.h +6 -0
- 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.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.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_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_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_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/tls_wrap.h +0 -222
- package/src/headers/14/tracing/agent.h +0 -195
- package/src/headers/14/tracing/traced_value.h +0 -70
- 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/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/base64-inl.h +0 -189
- package/src/headers/16/base64.h +0 -69
- package/src/headers/16/crypto/crypto_aes.h +0 -89
- package/src/headers/16/crypto/crypto_cipher.h +0 -286
- package/src/headers/16/crypto/crypto_common.h +0 -187
- 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_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_x509.h +0 -141
- package/src/headers/16/env.h +0 -1629
- package/src/headers/16/histogram.h +0 -216
- package/src/headers/16/js_native_api.h +0 -561
- package/src/headers/16/js_native_api_v8.h +0 -451
- package/src/headers/16/node.d +0 -315
- 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_binding.h +0 -99
- 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_dtrace.h +0 -86
- package/src/headers/16/node_external_reference.h +0 -129
- package/src/headers/16/node_main_instance.h +0 -103
- 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_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_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_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/spawn_sync.h +0 -242
- package/src/headers/16/string_decoder-inl.h +0 -37
- package/src/headers/16/string_search.h +0 -638
- package/src/headers/16/threadpoolwork-inl.h +0 -57
- 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/traced_value.h +0 -70
- 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/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_clienthello-inl.h +0 -90
- package/src/headers/18/crypto/crypto_common.h +0 -151
- package/src/headers/18/crypto/crypto_groups.h +0 -415
- 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_io.h +0 -78
- 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/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_dir.h +0 -52
- package/src/headers/18/node_dtrace.h +0 -86
- package/src/headers/18/node_http2_state.h +0 -149
- package/src/headers/18/node_mem-inl.h +0 -112
- 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_snapshot_builder.h +0 -43
- package/src/headers/18/node_snapshotable.h +0 -130
- 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_wasi.h +0 -108
- 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/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/v8abbr.h +0 -123
- /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
- /package/src/headers/{16 → 24}/aliased_struct-inl.h +0 -0
- /package/src/headers/{16 → 24}/aliased_struct.h +0 -0
- /package/src/headers/{18 → 24}/callback_queue-inl.h +0 -0
- /package/src/headers/{16 → 24}/connect_wrap.h +0 -0
- /package/src/headers/{16 → 24}/connection_wrap.h +0 -0
- /package/src/headers/{18 → 24}/crypto/crypto_spkac.h +0 -0
- /package/src/headers/{18 → 24}/crypto/crypto_timing.h +0 -0
- /package/src/headers/{16 → 24}/diagnosticfilename-inl.h +0 -0
- /package/src/headers/{16 → 24}/inspector_io.h +0 -0
- /package/src/headers/{16 → 24}/inspector_socket.h +0 -0
- /package/src/headers/{16 → 24}/inspector_socket_server.h +0 -0
- /package/src/headers/{16 → 24}/js_stream.h +0 -0
- /package/src/headers/{16 → 24}/node_dir.h +0 -0
- /package/src/headers/{18 → 24}/node_mem.h +0 -0
- /package/src/headers/{18 → 24}/node_mutex.h +0 -0
- /package/src/headers/{16 → 24}/node_object_wrap.h +0 -0
- /package/src/headers/{18 → 24}/node_process-inl.h +0 -0
- /package/src/headers/{14/tracing → 24}/node_trace_buffer.h +0 -0
- /package/src/headers/{14/tracing → 24}/node_trace_writer.h +0 -0
- /package/src/headers/{18 → 24}/pipe_wrap.h +0 -0
- /package/src/headers/{16/tracing → 24}/trace_event_common.h +0 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
#ifndef SRC_NODE_PLATFORM_H_
|
|
2
|
+
#define SRC_NODE_PLATFORM_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include <functional>
|
|
7
|
+
#include <queue>
|
|
8
|
+
#include <type_traits>
|
|
9
|
+
#include <unordered_map>
|
|
10
|
+
#include <vector>
|
|
11
|
+
|
|
12
|
+
#include "libplatform/libplatform.h"
|
|
13
|
+
#include "node.h"
|
|
14
|
+
#include "node_mutex.h"
|
|
15
|
+
#include "uv.h"
|
|
16
|
+
|
|
17
|
+
namespace node {
|
|
18
|
+
|
|
19
|
+
class NodePlatform;
|
|
20
|
+
class IsolateData;
|
|
21
|
+
class PerIsolatePlatformData;
|
|
22
|
+
|
|
23
|
+
template <typename, typename = void>
|
|
24
|
+
struct has_priority : std::false_type {};
|
|
25
|
+
|
|
26
|
+
template <typename T>
|
|
27
|
+
struct has_priority<T, std::void_t<decltype(std::declval<T>().priority)>>
|
|
28
|
+
: std::true_type {};
|
|
29
|
+
|
|
30
|
+
template <class T>
|
|
31
|
+
class TaskQueue {
|
|
32
|
+
public:
|
|
33
|
+
// If the entry type has a priority member, order the priority queue by
|
|
34
|
+
// that - higher priority first. Otherwise, maintain insertion order.
|
|
35
|
+
struct EntryCompare {
|
|
36
|
+
bool operator()(const std::unique_ptr<T>& a,
|
|
37
|
+
const std::unique_ptr<T>& b) const {
|
|
38
|
+
if constexpr (has_priority<T>::value) {
|
|
39
|
+
return a->priority < b->priority;
|
|
40
|
+
} else {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
using PriorityQueue = std::priority_queue<std::unique_ptr<T>,
|
|
47
|
+
std::vector<std::unique_ptr<T>>,
|
|
48
|
+
EntryCompare>;
|
|
49
|
+
class Locked {
|
|
50
|
+
public:
|
|
51
|
+
void Push(std::unique_ptr<T> task, bool outstanding = false);
|
|
52
|
+
std::unique_ptr<T> Pop();
|
|
53
|
+
std::unique_ptr<T> BlockingPop();
|
|
54
|
+
void NotifyOfOutstandingCompletion();
|
|
55
|
+
void BlockingDrain();
|
|
56
|
+
void Stop();
|
|
57
|
+
PriorityQueue PopAll();
|
|
58
|
+
|
|
59
|
+
private:
|
|
60
|
+
friend class TaskQueue;
|
|
61
|
+
explicit Locked(TaskQueue* queue);
|
|
62
|
+
|
|
63
|
+
TaskQueue* queue_;
|
|
64
|
+
Mutex::ScopedLock lock_;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
TaskQueue();
|
|
68
|
+
~TaskQueue() = default;
|
|
69
|
+
|
|
70
|
+
Locked Lock() { return Locked(this); }
|
|
71
|
+
|
|
72
|
+
private:
|
|
73
|
+
Mutex lock_;
|
|
74
|
+
ConditionVariable tasks_available_;
|
|
75
|
+
ConditionVariable outstanding_tasks_drained_;
|
|
76
|
+
int outstanding_tasks_;
|
|
77
|
+
bool stopped_;
|
|
78
|
+
PriorityQueue task_queue_;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
struct TaskQueueEntry {
|
|
82
|
+
std::unique_ptr<v8::Task> task;
|
|
83
|
+
v8::TaskPriority priority;
|
|
84
|
+
TaskQueueEntry(std::unique_ptr<v8::Task> t, v8::TaskPriority p)
|
|
85
|
+
: task(std::move(t)), priority(p) {}
|
|
86
|
+
inline bool is_outstanding() const {
|
|
87
|
+
return priority == v8::TaskPriority::kUserBlocking;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
struct DelayedTask {
|
|
92
|
+
std::unique_ptr<v8::Task> task;
|
|
93
|
+
v8::TaskPriority priority;
|
|
94
|
+
uv_timer_t timer;
|
|
95
|
+
double timeout;
|
|
96
|
+
std::shared_ptr<PerIsolatePlatformData> platform_data;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
enum class PlatformDebugLogLevel {
|
|
100
|
+
kNone = 0,
|
|
101
|
+
kMinimal = 1,
|
|
102
|
+
kVerbose = 2,
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
// This acts as the foreground task runner for a given Isolate.
|
|
106
|
+
class PerIsolatePlatformData
|
|
107
|
+
: public IsolatePlatformDelegate,
|
|
108
|
+
public v8::TaskRunner,
|
|
109
|
+
public std::enable_shared_from_this<PerIsolatePlatformData> {
|
|
110
|
+
public:
|
|
111
|
+
PerIsolatePlatformData(
|
|
112
|
+
v8::Isolate* isolate,
|
|
113
|
+
uv_loop_t* loop,
|
|
114
|
+
PlatformDebugLogLevel debug_log_level = PlatformDebugLogLevel::kNone);
|
|
115
|
+
~PerIsolatePlatformData() override;
|
|
116
|
+
|
|
117
|
+
std::shared_ptr<v8::TaskRunner> GetForegroundTaskRunner() override;
|
|
118
|
+
bool IdleTasksEnabled() override { return false; }
|
|
119
|
+
|
|
120
|
+
// Non-nestable tasks are treated like regular tasks.
|
|
121
|
+
bool NonNestableTasksEnabled() const override { return true; }
|
|
122
|
+
bool NonNestableDelayedTasksEnabled() const override { return true; }
|
|
123
|
+
|
|
124
|
+
void AddShutdownCallback(void (*callback)(void*), void* data);
|
|
125
|
+
void Shutdown();
|
|
126
|
+
|
|
127
|
+
// Returns true if work was dispatched or executed. New tasks that are
|
|
128
|
+
// posted during flushing of the queue are postponed until the next
|
|
129
|
+
// flushing.
|
|
130
|
+
bool FlushForegroundTasksInternal();
|
|
131
|
+
|
|
132
|
+
const uv_loop_t* event_loop() const { return loop_; }
|
|
133
|
+
|
|
134
|
+
private:
|
|
135
|
+
// v8::TaskRunner implementation.
|
|
136
|
+
void PostTaskImpl(std::unique_ptr<v8::Task> task,
|
|
137
|
+
const v8::SourceLocation& location) override;
|
|
138
|
+
void PostDelayedTaskImpl(std::unique_ptr<v8::Task> task,
|
|
139
|
+
double delay_in_seconds,
|
|
140
|
+
const v8::SourceLocation& location) override;
|
|
141
|
+
void PostIdleTaskImpl(std::unique_ptr<v8::IdleTask> task,
|
|
142
|
+
const v8::SourceLocation& location) override;
|
|
143
|
+
void PostNonNestableTaskImpl(std::unique_ptr<v8::Task> task,
|
|
144
|
+
const v8::SourceLocation& location) override;
|
|
145
|
+
void PostNonNestableDelayedTaskImpl(
|
|
146
|
+
std::unique_ptr<v8::Task> task,
|
|
147
|
+
double delay_in_seconds,
|
|
148
|
+
const v8::SourceLocation& location) override;
|
|
149
|
+
|
|
150
|
+
void DeleteFromScheduledTasks(DelayedTask* task);
|
|
151
|
+
void DecreaseHandleCount();
|
|
152
|
+
|
|
153
|
+
static void FlushTasks(uv_async_t* handle);
|
|
154
|
+
void RunForegroundTask(std::unique_ptr<v8::Task> task);
|
|
155
|
+
static void RunForegroundTask(uv_timer_t* timer);
|
|
156
|
+
|
|
157
|
+
uv_async_t* flush_tasks_ = nullptr;
|
|
158
|
+
|
|
159
|
+
struct ShutdownCallback {
|
|
160
|
+
void (*cb)(void*);
|
|
161
|
+
void* data;
|
|
162
|
+
};
|
|
163
|
+
typedef std::vector<ShutdownCallback> ShutdownCbList;
|
|
164
|
+
ShutdownCbList shutdown_callbacks_;
|
|
165
|
+
// shared_ptr to self to keep this object alive during shutdown.
|
|
166
|
+
std::shared_ptr<PerIsolatePlatformData> self_reference_;
|
|
167
|
+
uint32_t uv_handle_count_ = 1; // 1 = flush_tasks_
|
|
168
|
+
|
|
169
|
+
v8::Isolate* const isolate_;
|
|
170
|
+
uv_loop_t* const loop_;
|
|
171
|
+
|
|
172
|
+
// When acquiring locks for both task queues, lock foreground_tasks_
|
|
173
|
+
// first then foreground_delayed_tasks_ to avoid deadlocks.
|
|
174
|
+
TaskQueue<TaskQueueEntry> foreground_tasks_;
|
|
175
|
+
TaskQueue<DelayedTask> foreground_delayed_tasks_;
|
|
176
|
+
|
|
177
|
+
// Use a custom deleter because libuv needs to close the handle first.
|
|
178
|
+
typedef std::unique_ptr<DelayedTask, void (*)(DelayedTask*)>
|
|
179
|
+
DelayedTaskPointer;
|
|
180
|
+
std::vector<DelayedTaskPointer> scheduled_delayed_tasks_;
|
|
181
|
+
PlatformDebugLogLevel debug_log_level_ = PlatformDebugLogLevel::kNone;
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
// This acts as the single worker thread task runner for all Isolates.
|
|
185
|
+
class WorkerThreadsTaskRunner {
|
|
186
|
+
public:
|
|
187
|
+
explicit WorkerThreadsTaskRunner(int thread_pool_size,
|
|
188
|
+
PlatformDebugLogLevel debug_log_level);
|
|
189
|
+
|
|
190
|
+
void PostTask(v8::TaskPriority priority,
|
|
191
|
+
std::unique_ptr<v8::Task> task,
|
|
192
|
+
const v8::SourceLocation& location);
|
|
193
|
+
void PostDelayedTask(v8::TaskPriority priority,
|
|
194
|
+
std::unique_ptr<v8::Task> task,
|
|
195
|
+
const v8::SourceLocation& location,
|
|
196
|
+
double delay_in_seconds);
|
|
197
|
+
|
|
198
|
+
void BlockingDrain();
|
|
199
|
+
void Shutdown();
|
|
200
|
+
|
|
201
|
+
int NumberOfWorkerThreads() const;
|
|
202
|
+
|
|
203
|
+
private:
|
|
204
|
+
// A queue shared by all threads. The consumers are the worker threads which
|
|
205
|
+
// take tasks from it to run in PlatformWorkerThread(). The producers can be
|
|
206
|
+
// any thread. Both the foreground thread and the worker threads can push
|
|
207
|
+
// tasks into the queue via v8::Platform::PostTaskOnWorkerThread() which
|
|
208
|
+
// eventually calls PostTask() on this class. When any thread calls
|
|
209
|
+
// v8::Platform::PostDelayedTaskOnWorkerThread(), the DelayedTaskScheduler
|
|
210
|
+
// thread will schedule a timer that pushes the delayed tasks back into this
|
|
211
|
+
// queue when the timer expires.
|
|
212
|
+
TaskQueue<TaskQueueEntry> pending_worker_tasks_;
|
|
213
|
+
|
|
214
|
+
class DelayedTaskScheduler;
|
|
215
|
+
std::unique_ptr<DelayedTaskScheduler> delayed_task_scheduler_;
|
|
216
|
+
|
|
217
|
+
std::vector<std::unique_ptr<uv_thread_t>> threads_;
|
|
218
|
+
PlatformDebugLogLevel debug_log_level_ = PlatformDebugLogLevel::kNone;
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
class NodePlatform : public MultiIsolatePlatform {
|
|
222
|
+
public:
|
|
223
|
+
NodePlatform(int thread_pool_size,
|
|
224
|
+
v8::TracingController* tracing_controller,
|
|
225
|
+
v8::PageAllocator* page_allocator = nullptr);
|
|
226
|
+
~NodePlatform() override;
|
|
227
|
+
|
|
228
|
+
void DrainTasks(v8::Isolate* isolate) override;
|
|
229
|
+
void Shutdown();
|
|
230
|
+
|
|
231
|
+
// v8::Platform implementation.
|
|
232
|
+
int NumberOfWorkerThreads() override;
|
|
233
|
+
void PostTaskOnWorkerThreadImpl(v8::TaskPriority priority,
|
|
234
|
+
std::unique_ptr<v8::Task> task,
|
|
235
|
+
const v8::SourceLocation& location) override;
|
|
236
|
+
void PostDelayedTaskOnWorkerThreadImpl(
|
|
237
|
+
v8::TaskPriority priority,
|
|
238
|
+
std::unique_ptr<v8::Task> task,
|
|
239
|
+
double delay_in_seconds,
|
|
240
|
+
const v8::SourceLocation& location) override;
|
|
241
|
+
bool IdleTasksEnabled(v8::Isolate* isolate) override;
|
|
242
|
+
double MonotonicallyIncreasingTime() override;
|
|
243
|
+
double CurrentClockTimeMillis() override;
|
|
244
|
+
v8::TracingController* GetTracingController() override;
|
|
245
|
+
bool FlushForegroundTasks(v8::Isolate* isolate) override;
|
|
246
|
+
std::unique_ptr<v8::JobHandle> CreateJobImpl(
|
|
247
|
+
v8::TaskPriority priority,
|
|
248
|
+
std::unique_ptr<v8::JobTask> job_task,
|
|
249
|
+
const v8::SourceLocation& location) override;
|
|
250
|
+
|
|
251
|
+
void RegisterIsolate(v8::Isolate* isolate, uv_loop_t* loop) override;
|
|
252
|
+
void RegisterIsolate(v8::Isolate* isolate,
|
|
253
|
+
IsolatePlatformDelegate* delegate) override;
|
|
254
|
+
|
|
255
|
+
void UnregisterIsolate(v8::Isolate* isolate) override;
|
|
256
|
+
void AddIsolateFinishedCallback(v8::Isolate* isolate,
|
|
257
|
+
void (*callback)(void*),
|
|
258
|
+
void* data) override;
|
|
259
|
+
|
|
260
|
+
std::shared_ptr<v8::TaskRunner> GetForegroundTaskRunner(
|
|
261
|
+
v8::Isolate* isolate, v8::TaskPriority priority) override;
|
|
262
|
+
|
|
263
|
+
Platform::StackTracePrinter GetStackTracePrinter() override;
|
|
264
|
+
v8::PageAllocator* GetPageAllocator() override;
|
|
265
|
+
|
|
266
|
+
private:
|
|
267
|
+
IsolatePlatformDelegate* ForIsolate(v8::Isolate* isolate);
|
|
268
|
+
std::shared_ptr<PerIsolatePlatformData> ForNodeIsolate(v8::Isolate* isolate);
|
|
269
|
+
|
|
270
|
+
Mutex per_isolate_mutex_;
|
|
271
|
+
using DelegatePair = std::pair<IsolatePlatformDelegate*,
|
|
272
|
+
std::shared_ptr<PerIsolatePlatformData>>;
|
|
273
|
+
std::unordered_map<v8::Isolate*, DelegatePair> per_isolate_;
|
|
274
|
+
|
|
275
|
+
v8::TracingController* tracing_controller_;
|
|
276
|
+
v8::PageAllocator* page_allocator_;
|
|
277
|
+
std::shared_ptr<WorkerThreadsTaskRunner> worker_thread_task_runner_;
|
|
278
|
+
bool has_shut_down_ = false;
|
|
279
|
+
PlatformDebugLogLevel debug_log_level_ = PlatformDebugLogLevel::kNone;
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
} // namespace node
|
|
283
|
+
|
|
284
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
285
|
+
|
|
286
|
+
#endif // SRC_NODE_PLATFORM_H_
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#ifndef SRC_NODE_PROCESS_H_
|
|
2
|
+
#define SRC_NODE_PROCESS_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "node_snapshotable.h"
|
|
7
|
+
#include "v8-fast-api-calls.h"
|
|
8
|
+
#include "v8.h"
|
|
9
|
+
|
|
10
|
+
namespace node {
|
|
11
|
+
|
|
12
|
+
class Environment;
|
|
13
|
+
class IsolateData;
|
|
14
|
+
class MemoryTracker;
|
|
15
|
+
class ExternalReferenceRegistry;
|
|
16
|
+
class Realm;
|
|
17
|
+
|
|
18
|
+
void CreateEnvProxyTemplate(IsolateData* isolate_data);
|
|
19
|
+
|
|
20
|
+
// Most of the time, it's best to use `console.error` to write
|
|
21
|
+
// to the process.stderr stream. However, in some cases, such as
|
|
22
|
+
// when debugging the stream.Writable class or the process.nextTick
|
|
23
|
+
// function, it is useful to bypass JavaScript entirely.
|
|
24
|
+
void RawDebug(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
25
|
+
|
|
26
|
+
v8::MaybeLocal<v8::Value> ProcessEmit(Environment* env,
|
|
27
|
+
std::string_view event,
|
|
28
|
+
v8::Local<v8::Value> message);
|
|
29
|
+
|
|
30
|
+
v8::Maybe<bool> ProcessEmitWarningGeneric(Environment* env,
|
|
31
|
+
std::string_view warning,
|
|
32
|
+
std::string_view type = "",
|
|
33
|
+
std::string_view code = "");
|
|
34
|
+
|
|
35
|
+
template <typename... Args>
|
|
36
|
+
inline v8::Maybe<bool> ProcessEmitWarning(Environment* env,
|
|
37
|
+
const char* fmt,
|
|
38
|
+
Args&&... args);
|
|
39
|
+
|
|
40
|
+
v8::Maybe<void> ProcessEmitWarningSync(Environment* env,
|
|
41
|
+
std::string_view message);
|
|
42
|
+
v8::Maybe<bool> ProcessEmitExperimentalWarning(Environment* env,
|
|
43
|
+
const std::string& warning);
|
|
44
|
+
v8::Maybe<bool> ProcessEmitDeprecationWarning(
|
|
45
|
+
Environment* env,
|
|
46
|
+
const std::string& warning,
|
|
47
|
+
std::string_view deprecation_code);
|
|
48
|
+
|
|
49
|
+
v8::MaybeLocal<v8::Object> CreateProcessObject(Realm* env);
|
|
50
|
+
void PatchProcessObject(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
51
|
+
|
|
52
|
+
namespace process {
|
|
53
|
+
class BindingData : public SnapshotableObject {
|
|
54
|
+
public:
|
|
55
|
+
struct InternalFieldInfo : public node::InternalFieldInfoBase {
|
|
56
|
+
AliasedBufferIndex hrtime_buffer;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
static void AddMethods(v8::Isolate* isolate,
|
|
60
|
+
v8::Local<v8::ObjectTemplate> target);
|
|
61
|
+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
|
|
62
|
+
|
|
63
|
+
SERIALIZABLE_OBJECT_METHODS()
|
|
64
|
+
SET_BINDING_ID(process_binding_data)
|
|
65
|
+
|
|
66
|
+
BindingData(Realm* realm,
|
|
67
|
+
v8::Local<v8::Object> object,
|
|
68
|
+
InternalFieldInfo* info = nullptr);
|
|
69
|
+
|
|
70
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
71
|
+
SET_MEMORY_INFO_NAME(BindingData)
|
|
72
|
+
SET_SELF_SIZE(BindingData)
|
|
73
|
+
|
|
74
|
+
static BindingData* FromV8Value(v8::Local<v8::Value> receiver);
|
|
75
|
+
static void NumberImpl(BindingData* receiver);
|
|
76
|
+
|
|
77
|
+
static void FastNumber(v8::Local<v8::Value> unused,
|
|
78
|
+
v8::Local<v8::Value> receiver) {
|
|
79
|
+
NumberImpl(FromV8Value(receiver));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
static void SlowNumber(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
83
|
+
|
|
84
|
+
static void BigIntImpl(BindingData* receiver);
|
|
85
|
+
|
|
86
|
+
static void FastBigInt(v8::Local<v8::Value> unused,
|
|
87
|
+
v8::Local<v8::Value> receiver) {
|
|
88
|
+
BigIntImpl(FromV8Value(receiver));
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
static void SlowBigInt(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
92
|
+
|
|
93
|
+
static void LoadEnvFile(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
94
|
+
|
|
95
|
+
private:
|
|
96
|
+
// Buffer length in uint32.
|
|
97
|
+
static constexpr size_t kHrTimeBufferLength = 3;
|
|
98
|
+
AliasedUint32Array hrtime_buffer_;
|
|
99
|
+
InternalFieldInfo* internal_field_info_ = nullptr;
|
|
100
|
+
|
|
101
|
+
// These need to be static so that we have their addresses available to
|
|
102
|
+
// register as external references in the snapshot at environment creation
|
|
103
|
+
// time.
|
|
104
|
+
static v8::CFunction fast_number_;
|
|
105
|
+
static v8::CFunction fast_bigint_;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
} // namespace process
|
|
109
|
+
} // namespace node
|
|
110
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
111
|
+
#endif // SRC_NODE_PROCESS_H_
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
#ifndef SRC_NODE_REALM_INL_H_
|
|
2
|
+
#define SRC_NODE_REALM_INL_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "node_context_data.h"
|
|
7
|
+
#include "node_realm.h"
|
|
8
|
+
|
|
9
|
+
namespace node {
|
|
10
|
+
|
|
11
|
+
inline Realm* Realm::GetCurrent(v8::Isolate* isolate) {
|
|
12
|
+
if (!isolate->InContext()) [[unlikely]] {
|
|
13
|
+
return nullptr;
|
|
14
|
+
}
|
|
15
|
+
v8::HandleScope handle_scope(isolate);
|
|
16
|
+
return GetCurrent(isolate->GetCurrentContext());
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
inline Realm* Realm::GetCurrent(v8::Local<v8::Context> context) {
|
|
20
|
+
if (!ContextEmbedderTag::IsNodeContext(context)) [[unlikely]] {
|
|
21
|
+
return nullptr;
|
|
22
|
+
}
|
|
23
|
+
return static_cast<Realm*>(
|
|
24
|
+
context->GetAlignedPointerFromEmbedderData(ContextEmbedderIndex::kRealm));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
inline Realm* Realm::GetCurrent(
|
|
28
|
+
const v8::FunctionCallbackInfo<v8::Value>& info) {
|
|
29
|
+
return GetCurrent(info.GetIsolate()->GetCurrentContext());
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
template <typename T>
|
|
33
|
+
inline Realm* Realm::GetCurrent(const v8::PropertyCallbackInfo<T>& info) {
|
|
34
|
+
return GetCurrent(info.GetIsolate()->GetCurrentContext());
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
inline IsolateData* Realm::isolate_data() const {
|
|
38
|
+
return env_->isolate_data();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
inline Environment* Realm::env() const {
|
|
42
|
+
return env_;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
inline v8::Isolate* Realm::isolate() const {
|
|
46
|
+
return isolate_;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
inline Realm::Kind Realm::kind() const {
|
|
50
|
+
return kind_;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
inline bool Realm::has_run_bootstrapping_code() const {
|
|
54
|
+
return has_run_bootstrapping_code_;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// static
|
|
58
|
+
template <typename T, typename U>
|
|
59
|
+
inline T* Realm::GetBindingData(const v8::PropertyCallbackInfo<U>& info) {
|
|
60
|
+
return GetBindingData<T>(info.GetIsolate()->GetCurrentContext());
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// static
|
|
64
|
+
template <typename T>
|
|
65
|
+
inline T* Realm::GetBindingData(
|
|
66
|
+
const v8::FunctionCallbackInfo<v8::Value>& info) {
|
|
67
|
+
return GetBindingData<T>(info.GetIsolate()->GetCurrentContext());
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// static
|
|
71
|
+
template <typename T>
|
|
72
|
+
inline T* Realm::GetBindingData(v8::Local<v8::Context> context) {
|
|
73
|
+
Realm* realm = GetCurrent(context);
|
|
74
|
+
return realm->GetBindingData<T>();
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
template <typename T>
|
|
78
|
+
inline T* Realm::GetBindingData() {
|
|
79
|
+
constexpr size_t binding_index = static_cast<size_t>(T::binding_type_int);
|
|
80
|
+
static_assert(binding_index < std::tuple_size_v<BindingDataStore>);
|
|
81
|
+
auto ptr = binding_data_store_[binding_index];
|
|
82
|
+
if (!ptr) [[unlikely]] {
|
|
83
|
+
return nullptr;
|
|
84
|
+
}
|
|
85
|
+
T* result = static_cast<T*>(ptr.get());
|
|
86
|
+
DCHECK_NOT_NULL(result);
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
template <typename T, typename... Args>
|
|
91
|
+
inline T* Realm::AddBindingData(v8::Local<v8::Object> target, Args&&... args) {
|
|
92
|
+
// This won't compile if T is not a BaseObject subclass.
|
|
93
|
+
static_assert(std::is_base_of_v<BaseObject, T>);
|
|
94
|
+
// The binding data must be weak so that it won't keep the realm reachable
|
|
95
|
+
// from strong GC roots indefinitely. The wrapper object of binding data
|
|
96
|
+
// should be referenced from JavaScript, thus the binding data should be
|
|
97
|
+
// reachable throughout the lifetime of the realm.
|
|
98
|
+
BaseObjectWeakPtr<T> item =
|
|
99
|
+
MakeWeakBaseObject<T>(this, target, std::forward<Args>(args)...);
|
|
100
|
+
constexpr size_t binding_index = static_cast<size_t>(T::binding_type_int);
|
|
101
|
+
static_assert(binding_index < std::tuple_size_v<BindingDataStore>);
|
|
102
|
+
// Each slot is expected to be assigned only once.
|
|
103
|
+
CHECK(!binding_data_store_[binding_index]);
|
|
104
|
+
binding_data_store_[binding_index] = item;
|
|
105
|
+
return item.get();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
inline BindingDataStore* Realm::binding_data_store() {
|
|
109
|
+
return &binding_data_store_;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
template <typename T>
|
|
113
|
+
void Realm::ForEachBaseObject(T&& iterator) const {
|
|
114
|
+
for (auto bo : base_object_list_) {
|
|
115
|
+
iterator(bo);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
int64_t Realm::base_object_created_after_bootstrap() const {
|
|
120
|
+
return base_object_count_ - base_object_created_by_bootstrap_;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
int64_t Realm::base_object_count() const {
|
|
124
|
+
return base_object_count_;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
void Realm::TrackBaseObject(BaseObject* bo) {
|
|
128
|
+
DCHECK_EQ(bo->realm(), this);
|
|
129
|
+
base_object_list_.PushBack(bo);
|
|
130
|
+
++base_object_count_;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
CppgcWrapperListNode::CppgcWrapperListNode(CppgcMixin* ptr) : persistent(ptr) {}
|
|
134
|
+
|
|
135
|
+
void Realm::TrackCppgcWrapper(CppgcMixin* handle) {
|
|
136
|
+
DCHECK_EQ(handle->realm(), this);
|
|
137
|
+
cppgc_wrapper_list_.PushFront(new CppgcWrapperListNode(handle));
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
void Realm::UntrackBaseObject(BaseObject* bo) {
|
|
141
|
+
DCHECK_EQ(bo->realm(), this);
|
|
142
|
+
--base_object_count_;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
bool Realm::PendingCleanup() const {
|
|
146
|
+
return !base_object_list_.IsEmpty();
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
} // namespace node
|
|
150
|
+
|
|
151
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
152
|
+
|
|
153
|
+
#endif // SRC_NODE_REALM_INL_H_
|