@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
|
@@ -24,21 +24,33 @@
|
|
|
24
24
|
|
|
25
25
|
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
26
26
|
|
|
27
|
+
#include "uv.h"
|
|
28
|
+
#include "v8-inspector.h"
|
|
27
29
|
#include "v8.h"
|
|
28
30
|
|
|
31
|
+
#include "node.h"
|
|
32
|
+
#include "node_exit_code.h"
|
|
33
|
+
|
|
29
34
|
#include <climits>
|
|
30
35
|
#include <cstddef>
|
|
31
36
|
#include <cstdio>
|
|
32
37
|
#include <cstdlib>
|
|
33
38
|
#include <cstring>
|
|
34
39
|
|
|
35
|
-
#include <
|
|
40
|
+
#include <array>
|
|
41
|
+
#include <bit>
|
|
42
|
+
#include <filesystem>
|
|
36
43
|
#include <limits>
|
|
44
|
+
#include <memory>
|
|
45
|
+
#include <optional>
|
|
46
|
+
#include <ranges>
|
|
37
47
|
#include <set>
|
|
38
48
|
#include <string>
|
|
39
|
-
#include <
|
|
49
|
+
#include <string_view>
|
|
50
|
+
#include <type_traits>
|
|
40
51
|
#include <unordered_map>
|
|
41
52
|
#include <utility>
|
|
53
|
+
#include <vector>
|
|
42
54
|
|
|
43
55
|
#ifdef __GNUC__
|
|
44
56
|
#define MUST_USE_RESULT __attribute__((warn_unused_result))
|
|
@@ -48,13 +60,12 @@
|
|
|
48
60
|
|
|
49
61
|
namespace node {
|
|
50
62
|
|
|
51
|
-
|
|
63
|
+
constexpr char kPathSeparator = std::filesystem::path::preferred_separator;
|
|
64
|
+
|
|
52
65
|
#ifdef _WIN32
|
|
53
|
-
constexpr char kPathSeparator = '\\';
|
|
54
66
|
/* MAX_PATH is in characters, not bytes. Make sure we have enough headroom. */
|
|
55
67
|
#define PATH_MAX_BYTES (MAX_PATH * 4)
|
|
56
68
|
#else
|
|
57
|
-
constexpr char kPathSeparator = '/';
|
|
58
69
|
#define PATH_MAX_BYTES (PATH_MAX)
|
|
59
70
|
#endif
|
|
60
71
|
|
|
@@ -107,47 +118,65 @@ struct AssertionInfo {
|
|
|
107
118
|
const char* message;
|
|
108
119
|
const char* function;
|
|
109
120
|
};
|
|
110
|
-
|
|
111
|
-
[[noreturn]]
|
|
112
|
-
void
|
|
121
|
+
|
|
122
|
+
// This indirectly calls backtrace so it can not be marked as [[noreturn]].
|
|
123
|
+
void NODE_EXTERN_PRIVATE Assert(const AssertionInfo& info);
|
|
124
|
+
void DumpNativeBacktrace(FILE* fp);
|
|
125
|
+
void DumpJavaScriptBacktrace(FILE* fp);
|
|
113
126
|
|
|
114
127
|
// Windows 8+ does not like abort() in Release mode
|
|
115
128
|
#ifdef _WIN32
|
|
116
|
-
#define ABORT_NO_BACKTRACE() _exit(
|
|
129
|
+
#define ABORT_NO_BACKTRACE() _exit(static_cast<int>(node::ExitCode::kAbort))
|
|
117
130
|
#else
|
|
118
131
|
#define ABORT_NO_BACKTRACE() abort()
|
|
119
132
|
#endif
|
|
120
133
|
|
|
121
|
-
|
|
134
|
+
// Caller of this macro must not be marked as [[noreturn]]. Printing of
|
|
135
|
+
// backtraces may not work correctly in [[noreturn]] functions because
|
|
136
|
+
// when generating code for them the compiler can choose not to
|
|
137
|
+
// maintain the frame pointers or link registers that are necessary for
|
|
138
|
+
// correct backtracing.
|
|
139
|
+
// `ABORT` must be a macro and not a [[noreturn]] function to make sure the
|
|
140
|
+
// backtrace is correct.
|
|
141
|
+
#define ABORT() \
|
|
142
|
+
do { \
|
|
143
|
+
node::DumpNativeBacktrace(stderr); \
|
|
144
|
+
node::DumpJavaScriptBacktrace(stderr); \
|
|
145
|
+
fflush(stderr); \
|
|
146
|
+
ABORT_NO_BACKTRACE(); \
|
|
147
|
+
} while (0)
|
|
122
148
|
|
|
123
|
-
#define ERROR_AND_ABORT(expr)
|
|
124
|
-
do {
|
|
125
|
-
/* Make sure that this struct does not end up in inline code, but */
|
|
126
|
-
/* rather in a read-only data section when modifying this code. */
|
|
127
|
-
static const node::AssertionInfo
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
node::Assert(
|
|
149
|
+
#define ERROR_AND_ABORT(expr) \
|
|
150
|
+
do { \
|
|
151
|
+
/* Make sure that this struct does not end up in inline code, but */ \
|
|
152
|
+
/* rather in a read-only data section when modifying this code. */ \
|
|
153
|
+
static const node::AssertionInfo error_and_abort_args = { \
|
|
154
|
+
__FILE__ ":" STRINGIFY(__LINE__), #expr, PRETTY_FUNCTION_NAME}; \
|
|
155
|
+
node::Assert(error_and_abort_args); \
|
|
156
|
+
/* `node::Assert` doesn't return. Add an [[noreturn]] abort() here to */ \
|
|
157
|
+
/* make the compiler happy about no return value in the caller */ \
|
|
158
|
+
/* function when calling ERROR_AND_ABORT. */ \
|
|
159
|
+
ABORT_NO_BACKTRACE(); \
|
|
131
160
|
} while (0)
|
|
132
161
|
|
|
133
162
|
#ifdef __GNUC__
|
|
134
|
-
#define LIKELY(expr) __builtin_expect(!!(expr), 1)
|
|
135
|
-
#define UNLIKELY(expr) __builtin_expect(!!(expr), 0)
|
|
136
163
|
#define PRETTY_FUNCTION_NAME __PRETTY_FUNCTION__
|
|
137
164
|
#else
|
|
138
|
-
#
|
|
139
|
-
#define
|
|
165
|
+
#if defined(_MSC_VER)
|
|
166
|
+
#define PRETTY_FUNCTION_NAME __FUNCSIG__
|
|
167
|
+
#else
|
|
140
168
|
#define PRETTY_FUNCTION_NAME ""
|
|
141
169
|
#endif
|
|
170
|
+
#endif
|
|
142
171
|
|
|
143
172
|
#define STRINGIFY_(x) #x
|
|
144
173
|
#define STRINGIFY(x) STRINGIFY_(x)
|
|
145
174
|
|
|
146
|
-
#define CHECK(expr)
|
|
147
|
-
do {
|
|
148
|
-
if (
|
|
149
|
-
ERROR_AND_ABORT(expr);
|
|
150
|
-
}
|
|
175
|
+
#define CHECK(expr) \
|
|
176
|
+
do { \
|
|
177
|
+
if (!(expr)) [[unlikely]] { \
|
|
178
|
+
ERROR_AND_ABORT(expr); \
|
|
179
|
+
} \
|
|
151
180
|
} while (0)
|
|
152
181
|
|
|
153
182
|
#define CHECK_EQ(a, b) CHECK((a) == (b))
|
|
@@ -188,7 +217,7 @@ void DumpBacktrace(FILE* fp);
|
|
|
188
217
|
#define UNREACHABLE(...) \
|
|
189
218
|
ERROR_AND_ABORT("Unreachable code reached" __VA_OPT__(": ") __VA_ARGS__)
|
|
190
219
|
|
|
191
|
-
//
|
|
220
|
+
// ECMA-262, 15th edition, 21.1.2.6. Number.MAX_SAFE_INTEGER (2^53-1)
|
|
192
221
|
constexpr int64_t kMaxSafeJsInteger = 9007199254740991;
|
|
193
222
|
|
|
194
223
|
inline bool IsSafeJsInt(v8::Local<v8::Value> v);
|
|
@@ -268,6 +297,37 @@ template <typename Inner, typename Outer>
|
|
|
268
297
|
constexpr ContainerOfHelper<Inner, Outer> ContainerOf(Inner Outer::*field,
|
|
269
298
|
Inner* pointer);
|
|
270
299
|
|
|
300
|
+
class KVStore {
|
|
301
|
+
public:
|
|
302
|
+
KVStore() = default;
|
|
303
|
+
virtual ~KVStore() = default;
|
|
304
|
+
KVStore(const KVStore&) = delete;
|
|
305
|
+
KVStore& operator=(const KVStore&) = delete;
|
|
306
|
+
KVStore(KVStore&&) = delete;
|
|
307
|
+
KVStore& operator=(KVStore&&) = delete;
|
|
308
|
+
|
|
309
|
+
virtual v8::MaybeLocal<v8::String> Get(v8::Isolate* isolate,
|
|
310
|
+
v8::Local<v8::String> key) const = 0;
|
|
311
|
+
virtual std::optional<std::string> Get(const char* key) const = 0;
|
|
312
|
+
virtual void Set(v8::Isolate* isolate,
|
|
313
|
+
v8::Local<v8::String> key,
|
|
314
|
+
v8::Local<v8::String> value) = 0;
|
|
315
|
+
virtual int32_t Query(v8::Isolate* isolate,
|
|
316
|
+
v8::Local<v8::String> key) const = 0;
|
|
317
|
+
virtual int32_t Query(const char* key) const = 0;
|
|
318
|
+
virtual void Delete(v8::Isolate* isolate, v8::Local<v8::String> key) = 0;
|
|
319
|
+
virtual v8::MaybeLocal<v8::Array> Enumerate(v8::Isolate* isolate) const = 0;
|
|
320
|
+
|
|
321
|
+
virtual std::shared_ptr<KVStore> Clone(v8::Isolate* isolate) const;
|
|
322
|
+
virtual v8::Maybe<void> AssignFromObject(v8::Local<v8::Context> context,
|
|
323
|
+
v8::Local<v8::Object> entries);
|
|
324
|
+
v8::Maybe<void> AssignToObject(v8::Isolate* isolate,
|
|
325
|
+
v8::Local<v8::Context> context,
|
|
326
|
+
v8::Local<v8::Object> object);
|
|
327
|
+
|
|
328
|
+
static std::shared_ptr<KVStore> CreateMapKVStore();
|
|
329
|
+
};
|
|
330
|
+
|
|
271
331
|
// Convenience wrapper around v8::String::NewFromOneByte().
|
|
272
332
|
inline v8::Local<v8::String> OneByteString(v8::Isolate* isolate,
|
|
273
333
|
const char* data,
|
|
@@ -282,29 +342,26 @@ inline v8::Local<v8::String> OneByteString(v8::Isolate* isolate,
|
|
|
282
342
|
const unsigned char* data,
|
|
283
343
|
int length = -1);
|
|
284
344
|
|
|
345
|
+
inline v8::Local<v8::String> OneByteString(v8::Isolate* isolate,
|
|
346
|
+
std::string_view str);
|
|
347
|
+
|
|
285
348
|
// Used to be a macro, hence the uppercase name.
|
|
286
|
-
template <
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
349
|
+
template <std::size_t N>
|
|
350
|
+
requires(N > 0)
|
|
351
|
+
inline v8::Local<v8::String> FIXED_ONE_BYTE_STRING(v8::Isolate* isolate,
|
|
352
|
+
const char (&data)[N]) {
|
|
353
|
+
CHECK_EQ(data[N - 1], '\0');
|
|
290
354
|
return OneByteString(isolate, data, N - 1);
|
|
291
355
|
}
|
|
292
356
|
|
|
293
357
|
template <std::size_t N>
|
|
358
|
+
requires(N > 0)
|
|
294
359
|
inline v8::Local<v8::String> FIXED_ONE_BYTE_STRING(
|
|
295
|
-
v8::Isolate* isolate,
|
|
296
|
-
|
|
360
|
+
v8::Isolate* isolate, const std::array<char, N>& arr) {
|
|
361
|
+
CHECK_EQ(arr[N - 1], '\0');
|
|
297
362
|
return OneByteString(isolate, arr.data(), N - 1);
|
|
298
363
|
}
|
|
299
364
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
// Swaps bytes in place. nbytes is the number of bytes to swap and must be a
|
|
303
|
-
// multiple of the word size (checked by function).
|
|
304
|
-
inline void SwapBytes16(char* data, size_t nbytes);
|
|
305
|
-
inline void SwapBytes32(char* data, size_t nbytes);
|
|
306
|
-
inline void SwapBytes64(char* data, size_t nbytes);
|
|
307
|
-
|
|
308
365
|
// tolower() is locale-sensitive. Use ToLower() instead.
|
|
309
366
|
inline char ToLower(char c);
|
|
310
367
|
inline std::string ToLower(const std::string& in);
|
|
@@ -334,6 +391,11 @@ constexpr size_t strsize(const T (&)[N]) {
|
|
|
334
391
|
template <typename T, size_t kStackStorageSize = 1024>
|
|
335
392
|
class MaybeStackBuffer {
|
|
336
393
|
public:
|
|
394
|
+
// Disallow copy constructor
|
|
395
|
+
MaybeStackBuffer(const MaybeStackBuffer&) = delete;
|
|
396
|
+
// Disallow copy assignment operator
|
|
397
|
+
MaybeStackBuffer& operator=(const MaybeStackBuffer& other) = delete;
|
|
398
|
+
|
|
337
399
|
const T* out() const {
|
|
338
400
|
return buf_;
|
|
339
401
|
}
|
|
@@ -375,19 +437,7 @@ class MaybeStackBuffer {
|
|
|
375
437
|
// This method can be called multiple times throughout the lifetime of the
|
|
376
438
|
// buffer, but once this has been called Invalidate() cannot be used.
|
|
377
439
|
// Content of the buffer in the range [0, length()) is preserved.
|
|
378
|
-
void AllocateSufficientStorage(size_t storage)
|
|
379
|
-
CHECK(!IsInvalidated());
|
|
380
|
-
if (storage > capacity()) {
|
|
381
|
-
bool was_allocated = IsAllocated();
|
|
382
|
-
T* allocated_ptr = was_allocated ? buf_ : nullptr;
|
|
383
|
-
buf_ = Realloc(allocated_ptr, storage);
|
|
384
|
-
capacity_ = storage;
|
|
385
|
-
if (!was_allocated && length_ > 0)
|
|
386
|
-
memcpy(buf_, buf_st_, length_ * sizeof(buf_[0]));
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
length_ = storage;
|
|
390
|
-
}
|
|
440
|
+
void AllocateSufficientStorage(size_t storage);
|
|
391
441
|
|
|
392
442
|
void SetLength(size_t length) {
|
|
393
443
|
// capacity() returns how much memory is actually available.
|
|
@@ -449,6 +499,11 @@ class MaybeStackBuffer {
|
|
|
449
499
|
free(buf_);
|
|
450
500
|
}
|
|
451
501
|
|
|
502
|
+
inline std::basic_string<T> ToString() const { return {out(), length()}; }
|
|
503
|
+
inline std::basic_string_view<T> ToStringView() const {
|
|
504
|
+
return {out(), length()};
|
|
505
|
+
}
|
|
506
|
+
|
|
452
507
|
private:
|
|
453
508
|
size_t length_;
|
|
454
509
|
// capacity of the malloc'ed buf_
|
|
@@ -465,18 +520,31 @@ class ArrayBufferViewContents {
|
|
|
465
520
|
public:
|
|
466
521
|
ArrayBufferViewContents() = default;
|
|
467
522
|
|
|
523
|
+
ArrayBufferViewContents(const ArrayBufferViewContents&) = delete;
|
|
524
|
+
void operator=(const ArrayBufferViewContents&) = delete;
|
|
525
|
+
|
|
468
526
|
explicit inline ArrayBufferViewContents(v8::Local<v8::Value> value);
|
|
469
527
|
explicit inline ArrayBufferViewContents(v8::Local<v8::Object> value);
|
|
470
528
|
explicit inline ArrayBufferViewContents(v8::Local<v8::ArrayBufferView> abv);
|
|
471
529
|
inline void Read(v8::Local<v8::ArrayBufferView> abv);
|
|
530
|
+
inline void ReadValue(v8::Local<v8::Value> buf);
|
|
472
531
|
|
|
532
|
+
inline bool WasDetached() const { return was_detached_; }
|
|
473
533
|
inline const T* data() const { return data_; }
|
|
474
534
|
inline size_t length() const { return length_; }
|
|
475
535
|
|
|
476
536
|
private:
|
|
537
|
+
// Declaring operator new and delete as deleted is not spec compliant.
|
|
538
|
+
// Therefore, declare them private instead to disable dynamic alloc.
|
|
539
|
+
void* operator new(size_t size);
|
|
540
|
+
void* operator new[](size_t size);
|
|
541
|
+
void operator delete(void*, size_t);
|
|
542
|
+
void operator delete[](void*, size_t);
|
|
543
|
+
|
|
477
544
|
T stack_storage_[kStackStorageSize];
|
|
478
545
|
T* data_ = nullptr;
|
|
479
546
|
size_t length_ = 0;
|
|
547
|
+
bool was_detached_ = false;
|
|
480
548
|
};
|
|
481
549
|
|
|
482
550
|
class Utf8Value : public MaybeStackBuffer<char> {
|
|
@@ -484,10 +552,12 @@ class Utf8Value : public MaybeStackBuffer<char> {
|
|
|
484
552
|
explicit Utf8Value(v8::Isolate* isolate, v8::Local<v8::Value> value);
|
|
485
553
|
|
|
486
554
|
inline std::string ToString() const { return std::string(out(), length()); }
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
return strcmp(out(), a) == 0;
|
|
555
|
+
inline std::string_view ToStringView() const {
|
|
556
|
+
return std::string_view(out(), length());
|
|
490
557
|
}
|
|
558
|
+
|
|
559
|
+
inline bool operator==(const char* a) const { return strcmp(out(), a) == 0; }
|
|
560
|
+
inline bool operator!=(const char* a) const { return !(*this == a); }
|
|
491
561
|
};
|
|
492
562
|
|
|
493
563
|
class TwoByteValue : public MaybeStackBuffer<uint16_t> {
|
|
@@ -500,19 +570,23 @@ class BufferValue : public MaybeStackBuffer<char> {
|
|
|
500
570
|
explicit BufferValue(v8::Isolate* isolate, v8::Local<v8::Value> value);
|
|
501
571
|
|
|
502
572
|
inline std::string ToString() const { return std::string(out(), length()); }
|
|
573
|
+
inline std::string_view ToStringView() const {
|
|
574
|
+
return std::string_view(out(), length());
|
|
575
|
+
}
|
|
576
|
+
inline std::u8string_view ToU8StringView() const {
|
|
577
|
+
return std::u8string_view(reinterpret_cast<const char8_t*>(out()),
|
|
578
|
+
length());
|
|
579
|
+
}
|
|
503
580
|
};
|
|
504
581
|
|
|
505
|
-
#define SPREAD_BUFFER_ARG(val, name)
|
|
506
|
-
CHECK((val)->IsArrayBufferView());
|
|
507
|
-
v8::Local<v8::ArrayBufferView> name = (val).As<v8::ArrayBufferView>();
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
const
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
static_cast<char*>(name##_bs->Data()) + name##_offset; \
|
|
514
|
-
if (name##_length > 0) \
|
|
515
|
-
CHECK_NE(name##_data, nullptr);
|
|
582
|
+
#define SPREAD_BUFFER_ARG(val, name) \
|
|
583
|
+
CHECK((val)->IsArrayBufferView()); \
|
|
584
|
+
v8::Local<v8::ArrayBufferView> name = (val).As<v8::ArrayBufferView>(); \
|
|
585
|
+
const size_t name##_offset = name->ByteOffset(); \
|
|
586
|
+
const size_t name##_length = name->ByteLength(); \
|
|
587
|
+
char* const name##_data = \
|
|
588
|
+
static_cast<char*>(name->Buffer()->Data()) + name##_offset; \
|
|
589
|
+
if (name##_length > 0) CHECK_NE(name##_data, nullptr);
|
|
516
590
|
|
|
517
591
|
// Use this when a variable or parameter is unused in order to explicitly
|
|
518
592
|
// silence a compiler warning about that.
|
|
@@ -532,12 +606,6 @@ struct OnScopeLeaveImpl {
|
|
|
532
606
|
: fn_(std::move(other.fn_)), active_(other.active_) {
|
|
533
607
|
other.active_ = false;
|
|
534
608
|
}
|
|
535
|
-
OnScopeLeaveImpl& operator=(OnScopeLeaveImpl&& other) {
|
|
536
|
-
if (this == &other) return *this;
|
|
537
|
-
this->~OnScopeLeave();
|
|
538
|
-
new (this)OnScopeLeaveImpl(std::move(other));
|
|
539
|
-
return *this;
|
|
540
|
-
}
|
|
541
609
|
};
|
|
542
610
|
|
|
543
611
|
// Run a function when exiting the current scope. Used like this:
|
|
@@ -562,7 +630,7 @@ struct MallocedBuffer {
|
|
|
562
630
|
}
|
|
563
631
|
|
|
564
632
|
void Truncate(size_t new_size) {
|
|
565
|
-
|
|
633
|
+
CHECK_LE(new_size, size);
|
|
566
634
|
size = new_size;
|
|
567
635
|
}
|
|
568
636
|
|
|
@@ -571,7 +639,7 @@ struct MallocedBuffer {
|
|
|
571
639
|
data = UncheckedRealloc(data, new_size);
|
|
572
640
|
}
|
|
573
641
|
|
|
574
|
-
|
|
642
|
+
bool is_empty() const { return data == nullptr; }
|
|
575
643
|
|
|
576
644
|
MallocedBuffer() : data(nullptr), size(0) {}
|
|
577
645
|
explicit MallocedBuffer(size_t size) : data(Malloc<T>(size)), size(size) {}
|
|
@@ -590,38 +658,6 @@ struct MallocedBuffer {
|
|
|
590
658
|
MallocedBuffer& operator=(const MallocedBuffer&) = delete;
|
|
591
659
|
};
|
|
592
660
|
|
|
593
|
-
template <typename T>
|
|
594
|
-
class NonCopyableMaybe {
|
|
595
|
-
public:
|
|
596
|
-
NonCopyableMaybe() : empty_(true) {}
|
|
597
|
-
explicit NonCopyableMaybe(T&& value)
|
|
598
|
-
: empty_(false),
|
|
599
|
-
value_(std::move(value)) {}
|
|
600
|
-
|
|
601
|
-
bool IsEmpty() const {
|
|
602
|
-
return empty_;
|
|
603
|
-
}
|
|
604
|
-
|
|
605
|
-
const T* get() const {
|
|
606
|
-
return empty_ ? nullptr : &value_;
|
|
607
|
-
}
|
|
608
|
-
|
|
609
|
-
const T* operator->() const {
|
|
610
|
-
CHECK(!empty_);
|
|
611
|
-
return &value_;
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
T&& Release() {
|
|
615
|
-
CHECK_EQ(empty_, false);
|
|
616
|
-
empty_ = true;
|
|
617
|
-
return std::move(value_);
|
|
618
|
-
}
|
|
619
|
-
|
|
620
|
-
private:
|
|
621
|
-
bool empty_;
|
|
622
|
-
T value_;
|
|
623
|
-
};
|
|
624
|
-
|
|
625
661
|
// Test whether some value can be called with ().
|
|
626
662
|
template <typename T, typename = void>
|
|
627
663
|
struct is_callable : std::is_function<T> { };
|
|
@@ -640,11 +676,23 @@ struct FunctionDeleter {
|
|
|
640
676
|
template <typename T, void (*function)(T*)>
|
|
641
677
|
using DeleteFnPtr = typename FunctionDeleter<T, function>::Pointer;
|
|
642
678
|
|
|
643
|
-
|
|
679
|
+
// Convert a v8::Array into an std::vector using the callback-based API.
|
|
680
|
+
// This can be faster than calling Array::Get() repeatedly when the array
|
|
681
|
+
// has more than 2 entries.
|
|
682
|
+
// Note that iterating over an array in C++ and performing operations on each
|
|
683
|
+
// element in a C++ loop is still slower than iterating over the array in JS
|
|
684
|
+
// and calling into native in the JS loop repeatedly on each element,
|
|
685
|
+
// as of V8 11.9.
|
|
686
|
+
inline v8::Maybe<void> FromV8Array(v8::Local<v8::Context> context,
|
|
687
|
+
v8::Local<v8::Array> js_array,
|
|
688
|
+
std::vector<v8::Global<v8::Value>>* out);
|
|
644
689
|
|
|
645
690
|
inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
|
|
646
|
-
|
|
691
|
+
std::string_view str,
|
|
647
692
|
v8::Isolate* isolate = nullptr);
|
|
693
|
+
inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
|
|
694
|
+
v8_inspector::StringView str,
|
|
695
|
+
v8::Isolate* isolate);
|
|
648
696
|
template <typename T, typename test_for_number =
|
|
649
697
|
typename std::enable_if<std::numeric_limits<T>::is_specialized, bool>::type>
|
|
650
698
|
inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
|
|
@@ -654,11 +702,21 @@ template <typename T>
|
|
|
654
702
|
inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
|
|
655
703
|
const std::vector<T>& vec,
|
|
656
704
|
v8::Isolate* isolate = nullptr);
|
|
705
|
+
template <typename T>
|
|
706
|
+
inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
|
|
707
|
+
const std::set<T>& set,
|
|
708
|
+
v8::Isolate* isolate = nullptr);
|
|
657
709
|
template <typename T, typename U>
|
|
658
710
|
inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
|
|
659
711
|
const std::unordered_map<T, U>& map,
|
|
660
712
|
v8::Isolate* isolate = nullptr);
|
|
661
713
|
|
|
714
|
+
template <typename T, std::size_t U>
|
|
715
|
+
inline v8::MaybeLocal<v8::Value> ToV8Value(
|
|
716
|
+
v8::Local<v8::Context> context,
|
|
717
|
+
const std::ranges::elements_view<T, U>& vec,
|
|
718
|
+
v8::Isolate* isolate = nullptr);
|
|
719
|
+
|
|
662
720
|
// These macros expects a `Isolate* isolate` and a `Local<Context> context`
|
|
663
721
|
// to be in the scope.
|
|
664
722
|
#define READONLY_PROPERTY(obj, name, value) \
|
|
@@ -705,40 +763,16 @@ inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
|
|
|
705
763
|
.Check(); \
|
|
706
764
|
} while (0)
|
|
707
765
|
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
kBigEndian
|
|
711
|
-
};
|
|
712
|
-
|
|
713
|
-
inline enum Endianness GetEndianness() {
|
|
714
|
-
// Constant-folded by the compiler.
|
|
715
|
-
const union {
|
|
716
|
-
uint8_t u8[2];
|
|
717
|
-
uint16_t u16;
|
|
718
|
-
} u = {{1, 0}};
|
|
719
|
-
return u.u16 == 1 ? kLittleEndian : kBigEndian;
|
|
766
|
+
constexpr inline bool IsLittleEndian() {
|
|
767
|
+
return std::endian::native == std::endian::little;
|
|
720
768
|
}
|
|
721
769
|
|
|
722
|
-
inline bool
|
|
723
|
-
return
|
|
770
|
+
constexpr inline bool IsBigEndian() {
|
|
771
|
+
return std::endian::native == std::endian::big;
|
|
724
772
|
}
|
|
725
773
|
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
}
|
|
729
|
-
|
|
730
|
-
// Round up a to the next highest multiple of b.
|
|
731
|
-
template <typename T>
|
|
732
|
-
constexpr T RoundUp(T a, T b) {
|
|
733
|
-
return a % b != 0 ? a + b - (a % b) : a;
|
|
734
|
-
}
|
|
735
|
-
|
|
736
|
-
// Align ptr to an `alignment`-bytes boundary.
|
|
737
|
-
template <typename T, typename U>
|
|
738
|
-
constexpr T* AlignUp(T* ptr, U alignment) {
|
|
739
|
-
return reinterpret_cast<T*>(
|
|
740
|
-
RoundUp(reinterpret_cast<uintptr_t>(ptr), alignment));
|
|
741
|
-
}
|
|
774
|
+
static_assert(IsLittleEndian() || IsBigEndian(),
|
|
775
|
+
"Node.js does not support mixed-endian systems");
|
|
742
776
|
|
|
743
777
|
class SlicedArguments : public MaybeStackBuffer<v8::Local<v8::Value>> {
|
|
744
778
|
public:
|
|
@@ -790,20 +824,26 @@ class PersistentToLocal {
|
|
|
790
824
|
// computations.
|
|
791
825
|
class FastStringKey {
|
|
792
826
|
public:
|
|
793
|
-
|
|
827
|
+
// consteval ensures that the argument is a compile-time constant.
|
|
828
|
+
consteval explicit FastStringKey(std::string_view name);
|
|
829
|
+
// passing something that is not a compile-time constant needs explicit
|
|
830
|
+
// opt-in via this helper, as it defeats the purpose of FastStringKey.
|
|
831
|
+
static constexpr FastStringKey AllowDynamic(std::string_view name);
|
|
794
832
|
|
|
795
833
|
struct Hash {
|
|
796
834
|
constexpr size_t operator()(const FastStringKey& key) const;
|
|
797
835
|
};
|
|
798
836
|
constexpr bool operator==(const FastStringKey& other) const;
|
|
799
837
|
|
|
800
|
-
constexpr
|
|
838
|
+
constexpr std::string_view as_string_view() const;
|
|
801
839
|
|
|
802
840
|
private:
|
|
803
|
-
|
|
841
|
+
constexpr explicit FastStringKey(std::string_view name, int dummy);
|
|
842
|
+
|
|
843
|
+
static constexpr size_t HashImpl(std::string_view str);
|
|
804
844
|
|
|
805
|
-
const
|
|
806
|
-
size_t cached_hash_;
|
|
845
|
+
const std::string_view name_;
|
|
846
|
+
const size_t cached_hash_;
|
|
807
847
|
};
|
|
808
848
|
|
|
809
849
|
// Like std::static_pointer_cast but for unique_ptr with the default deleter.
|
|
@@ -817,6 +857,158 @@ std::unique_ptr<T> static_unique_pointer_cast(std::unique_ptr<U>&& ptr) {
|
|
|
817
857
|
// Returns a non-zero code if it fails to open or read the file,
|
|
818
858
|
// aborts if it fails to close the file.
|
|
819
859
|
int ReadFileSync(std::string* result, const char* path);
|
|
860
|
+
// Reads all contents of a FILE*, aborts if it fails.
|
|
861
|
+
std::vector<char> ReadFileSync(FILE* fp);
|
|
862
|
+
|
|
863
|
+
v8::Local<v8::FunctionTemplate> NewFunctionTemplate(
|
|
864
|
+
v8::Isolate* isolate,
|
|
865
|
+
v8::FunctionCallback callback,
|
|
866
|
+
v8::Local<v8::Signature> signature = v8::Local<v8::Signature>(),
|
|
867
|
+
v8::ConstructorBehavior behavior = v8::ConstructorBehavior::kAllow,
|
|
868
|
+
v8::SideEffectType side_effect = v8::SideEffectType::kHasSideEffect,
|
|
869
|
+
const v8::CFunction* c_function = nullptr);
|
|
870
|
+
|
|
871
|
+
// Convenience methods for NewFunctionTemplate().
|
|
872
|
+
void SetMethod(v8::Local<v8::Context> context,
|
|
873
|
+
v8::Local<v8::Object> that,
|
|
874
|
+
const std::string_view name,
|
|
875
|
+
v8::FunctionCallback callback);
|
|
876
|
+
// Similar to SetProtoMethod but without receiver signature checks.
|
|
877
|
+
void SetMethod(v8::Isolate* isolate,
|
|
878
|
+
v8::Local<v8::Template> that,
|
|
879
|
+
const std::string_view name,
|
|
880
|
+
v8::FunctionCallback callback);
|
|
881
|
+
|
|
882
|
+
void SetFastMethod(v8::Isolate* isolate,
|
|
883
|
+
v8::Local<v8::Template> that,
|
|
884
|
+
const std::string_view name,
|
|
885
|
+
v8::FunctionCallback slow_callback,
|
|
886
|
+
const v8::CFunction* c_function);
|
|
887
|
+
void SetFastMethod(v8::Local<v8::Context> context,
|
|
888
|
+
v8::Local<v8::Object> that,
|
|
889
|
+
const std::string_view name,
|
|
890
|
+
v8::FunctionCallback slow_callback,
|
|
891
|
+
const v8::CFunction* c_function);
|
|
892
|
+
void SetFastMethod(v8::Isolate* isolate,
|
|
893
|
+
v8::Local<v8::Template> that,
|
|
894
|
+
const std::string_view name,
|
|
895
|
+
v8::FunctionCallback slow_callback,
|
|
896
|
+
const v8::MemorySpan<const v8::CFunction>& methods);
|
|
897
|
+
void SetFastMethodNoSideEffect(v8::Isolate* isolate,
|
|
898
|
+
v8::Local<v8::Template> that,
|
|
899
|
+
const std::string_view name,
|
|
900
|
+
v8::FunctionCallback slow_callback,
|
|
901
|
+
const v8::CFunction* c_function);
|
|
902
|
+
void SetFastMethodNoSideEffect(v8::Local<v8::Context> context,
|
|
903
|
+
v8::Local<v8::Object> that,
|
|
904
|
+
const std::string_view name,
|
|
905
|
+
v8::FunctionCallback slow_callback,
|
|
906
|
+
const v8::CFunction* c_function);
|
|
907
|
+
void SetFastMethodNoSideEffect(
|
|
908
|
+
v8::Isolate* isolate,
|
|
909
|
+
v8::Local<v8::Template> that,
|
|
910
|
+
const std::string_view name,
|
|
911
|
+
v8::FunctionCallback slow_callback,
|
|
912
|
+
const v8::MemorySpan<const v8::CFunction>& methods);
|
|
913
|
+
void SetProtoMethod(v8::Isolate* isolate,
|
|
914
|
+
v8::Local<v8::FunctionTemplate> that,
|
|
915
|
+
const std::string_view name,
|
|
916
|
+
v8::FunctionCallback callback);
|
|
917
|
+
|
|
918
|
+
void SetInstanceMethod(v8::Isolate* isolate,
|
|
919
|
+
v8::Local<v8::FunctionTemplate> that,
|
|
920
|
+
const std::string_view name,
|
|
921
|
+
v8::FunctionCallback callback);
|
|
922
|
+
|
|
923
|
+
// Safe variants denote the function has no side effects.
|
|
924
|
+
void SetMethodNoSideEffect(v8::Local<v8::Context> context,
|
|
925
|
+
v8::Local<v8::Object> that,
|
|
926
|
+
const std::string_view name,
|
|
927
|
+
v8::FunctionCallback callback);
|
|
928
|
+
void SetProtoMethodNoSideEffect(v8::Isolate* isolate,
|
|
929
|
+
v8::Local<v8::FunctionTemplate> that,
|
|
930
|
+
const std::string_view name,
|
|
931
|
+
v8::FunctionCallback callback);
|
|
932
|
+
void SetMethodNoSideEffect(v8::Isolate* isolate,
|
|
933
|
+
v8::Local<v8::Template> that,
|
|
934
|
+
const std::string_view name,
|
|
935
|
+
v8::FunctionCallback callback);
|
|
936
|
+
|
|
937
|
+
enum class SetConstructorFunctionFlag {
|
|
938
|
+
NONE,
|
|
939
|
+
SET_CLASS_NAME,
|
|
940
|
+
};
|
|
941
|
+
|
|
942
|
+
void SetConstructorFunction(v8::Local<v8::Context> context,
|
|
943
|
+
v8::Local<v8::Object> that,
|
|
944
|
+
const char* name,
|
|
945
|
+
v8::Local<v8::FunctionTemplate> tmpl,
|
|
946
|
+
SetConstructorFunctionFlag flag =
|
|
947
|
+
SetConstructorFunctionFlag::SET_CLASS_NAME);
|
|
948
|
+
|
|
949
|
+
void SetConstructorFunction(v8::Local<v8::Context> context,
|
|
950
|
+
v8::Local<v8::Object> that,
|
|
951
|
+
v8::Local<v8::String> name,
|
|
952
|
+
v8::Local<v8::FunctionTemplate> tmpl,
|
|
953
|
+
SetConstructorFunctionFlag flag =
|
|
954
|
+
SetConstructorFunctionFlag::SET_CLASS_NAME);
|
|
955
|
+
|
|
956
|
+
void SetConstructorFunction(v8::Isolate* isolate,
|
|
957
|
+
v8::Local<v8::Template> that,
|
|
958
|
+
const char* name,
|
|
959
|
+
v8::Local<v8::FunctionTemplate> tmpl,
|
|
960
|
+
SetConstructorFunctionFlag flag =
|
|
961
|
+
SetConstructorFunctionFlag::SET_CLASS_NAME);
|
|
962
|
+
|
|
963
|
+
void SetConstructorFunction(v8::Isolate* isolate,
|
|
964
|
+
v8::Local<v8::Template> that,
|
|
965
|
+
v8::Local<v8::String> name,
|
|
966
|
+
v8::Local<v8::FunctionTemplate> tmpl,
|
|
967
|
+
SetConstructorFunctionFlag flag =
|
|
968
|
+
SetConstructorFunctionFlag::SET_CLASS_NAME);
|
|
969
|
+
|
|
970
|
+
// Like RAIIIsolate, except doesn't enter the isolate while it's in scope.
|
|
971
|
+
class RAIIIsolateWithoutEntering {
|
|
972
|
+
public:
|
|
973
|
+
explicit RAIIIsolateWithoutEntering(const SnapshotData* data = nullptr);
|
|
974
|
+
~RAIIIsolateWithoutEntering();
|
|
975
|
+
|
|
976
|
+
v8::Isolate* get() const { return isolate_; }
|
|
977
|
+
|
|
978
|
+
private:
|
|
979
|
+
std::unique_ptr<v8::ArrayBuffer::Allocator> allocator_;
|
|
980
|
+
v8::Isolate* isolate_;
|
|
981
|
+
};
|
|
982
|
+
|
|
983
|
+
// Simple RAII class to spin up a v8::Isolate instance and enter it
|
|
984
|
+
// immediately.
|
|
985
|
+
class RAIIIsolate {
|
|
986
|
+
public:
|
|
987
|
+
explicit RAIIIsolate(const SnapshotData* data = nullptr);
|
|
988
|
+
~RAIIIsolate();
|
|
989
|
+
|
|
990
|
+
v8::Isolate* get() const { return isolate_.get(); }
|
|
991
|
+
|
|
992
|
+
private:
|
|
993
|
+
RAIIIsolateWithoutEntering isolate_;
|
|
994
|
+
v8::Isolate::Scope isolate_scope_;
|
|
995
|
+
};
|
|
996
|
+
|
|
997
|
+
std::string DetermineSpecificErrorType(Environment* env,
|
|
998
|
+
v8::Local<v8::Value> input);
|
|
999
|
+
|
|
1000
|
+
v8::Maybe<int32_t> GetValidatedFd(Environment* env, v8::Local<v8::Value> input);
|
|
1001
|
+
v8::Maybe<int> GetValidFileMode(Environment* env,
|
|
1002
|
+
v8::Local<v8::Value> input,
|
|
1003
|
+
uv_fs_type type);
|
|
1004
|
+
|
|
1005
|
+
#ifdef _WIN32
|
|
1006
|
+
// Returns true if OS==Windows and filename ends in .bat or .cmd,
|
|
1007
|
+
// case insensitive.
|
|
1008
|
+
inline bool IsWindowsBatchFile(const char* filename);
|
|
1009
|
+
inline std::wstring ConvertToWideString(const std::string& str, UINT code_page);
|
|
1010
|
+
#endif // _WIN32
|
|
1011
|
+
|
|
820
1012
|
} // namespace node
|
|
821
1013
|
|
|
822
1014
|
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|