@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
|
@@ -32,6 +32,16 @@
|
|
|
32
32
|
# define NODE_EXTERN __attribute__((visibility("default")))
|
|
33
33
|
#endif
|
|
34
34
|
|
|
35
|
+
// Declarations annotated with NODE_EXTERN_PRIVATE do not form part of
|
|
36
|
+
// the public API. They are implementation details that can and will
|
|
37
|
+
// change between releases, even in semver patch releases. Do not use
|
|
38
|
+
// any such symbol in external code.
|
|
39
|
+
#ifdef NODE_SHARED_MODE
|
|
40
|
+
#define NODE_EXTERN_PRIVATE NODE_EXTERN
|
|
41
|
+
#else
|
|
42
|
+
#define NODE_EXTERN_PRIVATE
|
|
43
|
+
#endif
|
|
44
|
+
|
|
35
45
|
#ifdef BUILDING_NODE_EXTENSION
|
|
36
46
|
# undef BUILDING_V8_SHARED
|
|
37
47
|
# undef BUILDING_UV_SHARED
|
|
@@ -57,7 +67,8 @@
|
|
|
57
67
|
#endif
|
|
58
68
|
|
|
59
69
|
#ifdef _WIN32
|
|
60
|
-
#
|
|
70
|
+
#define SIGQUIT 3
|
|
71
|
+
#define SIGKILL 9
|
|
61
72
|
#endif
|
|
62
73
|
|
|
63
74
|
#include "v8.h" // NOLINT(build/include_order)
|
|
@@ -65,8 +76,13 @@
|
|
|
65
76
|
#include "v8-platform.h" // NOLINT(build/include_order)
|
|
66
77
|
#include "node_version.h" // NODE_MODULE_VERSION
|
|
67
78
|
|
|
68
|
-
#
|
|
79
|
+
#define NAPI_EXPERIMENTAL
|
|
80
|
+
#include "node_api.h"
|
|
81
|
+
|
|
69
82
|
#include <functional>
|
|
83
|
+
#include <memory>
|
|
84
|
+
#include <optional>
|
|
85
|
+
#include <ostream>
|
|
70
86
|
|
|
71
87
|
// We cannot use __POSIX__ in this header because that's only defined when
|
|
72
88
|
// building Node.js.
|
|
@@ -110,12 +126,12 @@
|
|
|
110
126
|
// Forward-declare libuv loop
|
|
111
127
|
struct uv_loop_s;
|
|
112
128
|
|
|
113
|
-
struct napi_module;
|
|
114
|
-
|
|
115
129
|
// Forward-declare these functions now to stop MSVS from becoming
|
|
116
130
|
// terminally confused when it's done in node_internals.h
|
|
117
131
|
namespace node {
|
|
118
132
|
|
|
133
|
+
struct SnapshotData;
|
|
134
|
+
|
|
119
135
|
namespace tracing {
|
|
120
136
|
|
|
121
137
|
class TracingController;
|
|
@@ -213,6 +229,96 @@ namespace node {
|
|
|
213
229
|
|
|
214
230
|
class IsolateData;
|
|
215
231
|
class Environment;
|
|
232
|
+
class MultiIsolatePlatform;
|
|
233
|
+
class InitializationResultImpl;
|
|
234
|
+
|
|
235
|
+
namespace ProcessInitializationFlags {
|
|
236
|
+
enum Flags : uint32_t {
|
|
237
|
+
kNoFlags = 0,
|
|
238
|
+
// Enable stdio inheritance, which is disabled by default.
|
|
239
|
+
// This flag is also implied by kNoStdioInitialization.
|
|
240
|
+
kEnableStdioInheritance = 1 << 0,
|
|
241
|
+
// Disable reading the NODE_OPTIONS environment variable.
|
|
242
|
+
kDisableNodeOptionsEnv = 1 << 1,
|
|
243
|
+
// Do not parse CLI options.
|
|
244
|
+
kDisableCLIOptions = 1 << 2,
|
|
245
|
+
// Do not initialize ICU.
|
|
246
|
+
kNoICU = 1 << 3,
|
|
247
|
+
// Do not modify stdio file descriptor or TTY state.
|
|
248
|
+
kNoStdioInitialization = 1 << 4,
|
|
249
|
+
// Do not register Node.js-specific signal handlers
|
|
250
|
+
// and reset other signal handlers to default state.
|
|
251
|
+
kNoDefaultSignalHandling = 1 << 5,
|
|
252
|
+
// Do not perform V8 initialization.
|
|
253
|
+
kNoInitializeV8 = 1 << 6,
|
|
254
|
+
// Do not initialize a default Node.js-provided V8 platform instance.
|
|
255
|
+
kNoInitializeNodeV8Platform = 1 << 7,
|
|
256
|
+
// Do not initialize OpenSSL config.
|
|
257
|
+
kNoInitOpenSSL = 1 << 8,
|
|
258
|
+
// Do not initialize Node.js debugging based on environment variables.
|
|
259
|
+
kNoParseGlobalDebugVariables = 1 << 9,
|
|
260
|
+
// Do not adjust OS resource limits for this process.
|
|
261
|
+
kNoAdjustResourceLimits = 1 << 10,
|
|
262
|
+
// Do not map code segments into large pages for this process.
|
|
263
|
+
kNoUseLargePages = 1 << 11,
|
|
264
|
+
// Skip printing output for --help, --version, --v8-options.
|
|
265
|
+
kNoPrintHelpOrVersionOutput = 1 << 12,
|
|
266
|
+
// Do not perform cppgc initialization. If set, the embedder must call
|
|
267
|
+
// cppgc::InitializeProcess() before creating a Node.js environment
|
|
268
|
+
// and call cppgc::ShutdownProcess() before process shutdown.
|
|
269
|
+
kNoInitializeCppgc = 1 << 13,
|
|
270
|
+
// Initialize the process for predictable snapshot generation.
|
|
271
|
+
kGeneratePredictableSnapshot = 1 << 14,
|
|
272
|
+
|
|
273
|
+
// Emulate the behavior of InitializeNodeWithArgs() when passing
|
|
274
|
+
// a flags argument to the InitializeOncePerProcess() replacement
|
|
275
|
+
// function.
|
|
276
|
+
kLegacyInitializeNodeWithArgsBehavior =
|
|
277
|
+
kNoStdioInitialization | kNoDefaultSignalHandling | kNoInitializeV8 |
|
|
278
|
+
kNoInitializeNodeV8Platform | kNoInitOpenSSL |
|
|
279
|
+
kNoParseGlobalDebugVariables | kNoAdjustResourceLimits |
|
|
280
|
+
kNoUseLargePages | kNoPrintHelpOrVersionOutput | kNoInitializeCppgc,
|
|
281
|
+
};
|
|
282
|
+
} // namespace ProcessInitializationFlags
|
|
283
|
+
namespace ProcessFlags = ProcessInitializationFlags; // Legacy alias.
|
|
284
|
+
|
|
285
|
+
namespace StopFlags {
|
|
286
|
+
enum Flags : uint32_t {
|
|
287
|
+
kNoFlags = 0,
|
|
288
|
+
// Do not explicitly terminate the Isolate
|
|
289
|
+
// when exiting the Environment.
|
|
290
|
+
kDoNotTerminateIsolate = 1 << 0,
|
|
291
|
+
};
|
|
292
|
+
} // namespace StopFlags
|
|
293
|
+
|
|
294
|
+
class NODE_EXTERN InitializationResult {
|
|
295
|
+
public:
|
|
296
|
+
virtual ~InitializationResult() = default;
|
|
297
|
+
|
|
298
|
+
// Returns a suggested process exit code.
|
|
299
|
+
virtual int exit_code() const = 0;
|
|
300
|
+
|
|
301
|
+
// Returns 'true' if initialization was aborted early due to errors.
|
|
302
|
+
virtual bool early_return() const = 0;
|
|
303
|
+
|
|
304
|
+
// Returns the parsed list of non-Node.js arguments.
|
|
305
|
+
virtual const std::vector<std::string>& args() const = 0;
|
|
306
|
+
|
|
307
|
+
// Returns the parsed list of Node.js arguments.
|
|
308
|
+
virtual const std::vector<std::string>& exec_args() const = 0;
|
|
309
|
+
|
|
310
|
+
// Returns an array of errors. Note that these may be warnings
|
|
311
|
+
// whose existence does not imply a non-zero exit code.
|
|
312
|
+
virtual const std::vector<std::string>& errors() const = 0;
|
|
313
|
+
|
|
314
|
+
// If kNoInitializeNodeV8Platform was not specified, the global Node.js
|
|
315
|
+
// platform instance.
|
|
316
|
+
virtual MultiIsolatePlatform* platform() const = 0;
|
|
317
|
+
|
|
318
|
+
private:
|
|
319
|
+
InitializationResult() = default;
|
|
320
|
+
friend class InitializationResultImpl;
|
|
321
|
+
};
|
|
216
322
|
|
|
217
323
|
// TODO(addaleax): Officially deprecate this and replace it with something
|
|
218
324
|
// better suited for a public embedder API.
|
|
@@ -220,21 +326,64 @@ NODE_EXTERN int Start(int argc, char* argv[]);
|
|
|
220
326
|
|
|
221
327
|
// Tear down Node.js while it is running (there are active handles
|
|
222
328
|
// in the loop and / or actively executing JavaScript code).
|
|
223
|
-
NODE_EXTERN int Stop(Environment* env
|
|
329
|
+
NODE_EXTERN int Stop(Environment* env,
|
|
330
|
+
StopFlags::Flags flags = StopFlags::kNoFlags);
|
|
224
331
|
|
|
225
332
|
// Set up per-process state needed to run Node.js. This will consume arguments
|
|
226
333
|
// from argv, fill exec_argv, and possibly add errors resulting from parsing
|
|
227
334
|
// the arguments to `errors`. The return value is a suggested exit code for the
|
|
228
335
|
// program; If it is 0, then initializing Node.js succeeded.
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
336
|
+
// This runs a subset of the initialization performed by
|
|
337
|
+
// InitializeOncePerProcess(), which supersedes this function.
|
|
338
|
+
// The subset is roughly equivalent to the one given by
|
|
339
|
+
// `ProcessInitializationFlags::kLegacyInitializeNodeWithArgsBehavior`.
|
|
340
|
+
NODE_DEPRECATED("Use InitializeOncePerProcess() instead",
|
|
341
|
+
NODE_EXTERN int InitializeNodeWithArgs(
|
|
342
|
+
std::vector<std::string>* argv,
|
|
343
|
+
std::vector<std::string>* exec_argv,
|
|
344
|
+
std::vector<std::string>* errors,
|
|
345
|
+
ProcessInitializationFlags::Flags flags =
|
|
346
|
+
ProcessInitializationFlags::kNoFlags));
|
|
347
|
+
|
|
348
|
+
// Set up per-process state needed to run Node.js. This will consume arguments
|
|
349
|
+
// from args, and return information about the initialization success,
|
|
350
|
+
// including the arguments split into argv/exec_argv, a list of potential
|
|
351
|
+
// errors encountered during initialization, and a potential suggested
|
|
352
|
+
// exit code.
|
|
353
|
+
NODE_EXTERN std::shared_ptr<InitializationResult> InitializeOncePerProcess(
|
|
354
|
+
const std::vector<std::string>& args,
|
|
355
|
+
ProcessInitializationFlags::Flags flags =
|
|
356
|
+
ProcessInitializationFlags::kNoFlags);
|
|
357
|
+
// Undoes the initialization performed by InitializeOncePerProcess(),
|
|
358
|
+
// where cleanup is necessary.
|
|
359
|
+
NODE_EXTERN void TearDownOncePerProcess();
|
|
360
|
+
// Convenience overload for specifying multiple flags without having
|
|
361
|
+
// to worry about casts.
|
|
362
|
+
inline std::shared_ptr<InitializationResult> InitializeOncePerProcess(
|
|
363
|
+
const std::vector<std::string>& args,
|
|
364
|
+
std::initializer_list<ProcessInitializationFlags::Flags> list) {
|
|
365
|
+
uint64_t flags_accum = ProcessInitializationFlags::kNoFlags;
|
|
366
|
+
for (const auto flag : list) flags_accum |= static_cast<uint64_t>(flag);
|
|
367
|
+
return InitializeOncePerProcess(
|
|
368
|
+
args, static_cast<ProcessInitializationFlags::Flags>(flags_accum));
|
|
369
|
+
}
|
|
232
370
|
|
|
233
371
|
enum OptionEnvvarSettings {
|
|
234
|
-
|
|
235
|
-
|
|
372
|
+
// Allow the options to be set via the environment variable, like
|
|
373
|
+
// `NODE_OPTIONS`.
|
|
374
|
+
kAllowedInEnvvar = 0,
|
|
375
|
+
// Disallow the options to be set via the environment variable, like
|
|
376
|
+
// `NODE_OPTIONS`.
|
|
377
|
+
kDisallowedInEnvvar = 1,
|
|
236
378
|
};
|
|
237
379
|
|
|
380
|
+
// Process the arguments and set up the per-process options.
|
|
381
|
+
// If the `settings` is set as OptionEnvvarSettings::kAllowedInEnvvar, the
|
|
382
|
+
// options that are allowed in the environment variable are processed. Options
|
|
383
|
+
// that are disallowed to be set via environment variable are processed as
|
|
384
|
+
// errors.
|
|
385
|
+
// Otherwise all the options that are disallowed (and those are allowed) to be
|
|
386
|
+
// set via environment variable are processed.
|
|
238
387
|
NODE_EXTERN int ProcessGlobalArgs(std::vector<std::string>* args,
|
|
239
388
|
std::vector<std::string>* exec_args,
|
|
240
389
|
std::vector<std::string>* errors,
|
|
@@ -298,8 +447,11 @@ class NODE_EXTERN MultiIsolatePlatform : public v8::Platform {
|
|
|
298
447
|
|
|
299
448
|
// This function may only be called once per `Isolate`, and discard any
|
|
300
449
|
// pending delayed tasks scheduled for that isolate.
|
|
301
|
-
// This needs to be called right
|
|
450
|
+
// This needs to be called right after calling `Isolate::Dispose()`.
|
|
302
451
|
virtual void UnregisterIsolate(v8::Isolate* isolate) = 0;
|
|
452
|
+
// This disposes, unregisters and frees up an isolate that's allocated using
|
|
453
|
+
// v8::Isolate::Allocate() in the correct order to prevent race conditions.
|
|
454
|
+
void DisposeIsolate(v8::Isolate* isolate);
|
|
303
455
|
|
|
304
456
|
// The platform should call the passed function once all state associated
|
|
305
457
|
// with the given isolate has been cleaned up. This can, but does not have to,
|
|
@@ -310,14 +462,16 @@ class NODE_EXTERN MultiIsolatePlatform : public v8::Platform {
|
|
|
310
462
|
|
|
311
463
|
static std::unique_ptr<MultiIsolatePlatform> Create(
|
|
312
464
|
int thread_pool_size,
|
|
313
|
-
v8::TracingController* tracing_controller = nullptr
|
|
465
|
+
v8::TracingController* tracing_controller = nullptr,
|
|
466
|
+
v8::PageAllocator* page_allocator = nullptr);
|
|
314
467
|
};
|
|
315
468
|
|
|
316
469
|
enum IsolateSettingsFlags {
|
|
317
470
|
MESSAGE_LISTENER_WITH_ERROR_LEVEL = 1 << 0,
|
|
318
471
|
DETAILED_SOURCE_POSITIONS_FOR_PROFILING = 1 << 1,
|
|
319
472
|
SHOULD_NOT_SET_PROMISE_REJECTION_CALLBACK = 1 << 2,
|
|
320
|
-
SHOULD_NOT_SET_PREPARE_STACK_TRACE_CALLBACK = 1 << 3
|
|
473
|
+
SHOULD_NOT_SET_PREPARE_STACK_TRACE_CALLBACK = 1 << 3,
|
|
474
|
+
ALLOW_MODIFY_CODE_GENERATION_FROM_STRINGS_CALLBACK = 0, /* legacy no-op */
|
|
321
475
|
};
|
|
322
476
|
|
|
323
477
|
struct IsolateSettings {
|
|
@@ -329,12 +483,101 @@ struct IsolateSettings {
|
|
|
329
483
|
v8::Isolate::AbortOnUncaughtExceptionCallback
|
|
330
484
|
should_abort_on_uncaught_exception_callback = nullptr;
|
|
331
485
|
v8::FatalErrorCallback fatal_error_callback = nullptr;
|
|
486
|
+
v8::OOMErrorCallback oom_error_callback = nullptr;
|
|
332
487
|
v8::PrepareStackTraceCallback prepare_stack_trace_callback = nullptr;
|
|
333
488
|
|
|
334
489
|
// Miscellaneous callbacks
|
|
335
490
|
v8::PromiseRejectCallback promise_reject_callback = nullptr;
|
|
336
491
|
v8::AllowWasmCodeGenerationCallback
|
|
337
492
|
allow_wasm_code_generation_callback = nullptr;
|
|
493
|
+
v8::ModifyCodeGenerationFromStringsCallback2
|
|
494
|
+
modify_code_generation_from_strings_callback = nullptr;
|
|
495
|
+
|
|
496
|
+
// When the settings is passed to NewIsolate():
|
|
497
|
+
// - If cpp_heap is not nullptr, this CppHeap will be used to create
|
|
498
|
+
// the isolate and its ownership will be passed to V8.
|
|
499
|
+
// - If this is nullptr, Node.js will create a CppHeap that will be
|
|
500
|
+
// owned by V8.
|
|
501
|
+
//
|
|
502
|
+
// When the settings is passed to SetIsolateUpForNode():
|
|
503
|
+
// cpp_heap will be ignored. Embedders must ensure that the
|
|
504
|
+
// v8::Isolate has a CppHeap attached while it's still used by
|
|
505
|
+
// Node.js, for example using v8::CreateParams.
|
|
506
|
+
//
|
|
507
|
+
// See https://issues.chromium.org/issues/42203693. In future version
|
|
508
|
+
// of V8, this CppHeap will be created by V8 if not provided.
|
|
509
|
+
v8::CppHeap* cpp_heap = nullptr;
|
|
510
|
+
};
|
|
511
|
+
|
|
512
|
+
// Represents a startup snapshot blob, e.g. created by passing
|
|
513
|
+
// --node-snapshot-main=entry.js to the configure script at build time,
|
|
514
|
+
// or by running Node.js with the --build-snapshot option.
|
|
515
|
+
//
|
|
516
|
+
// If used, the snapshot *must* have been built with the same Node.js
|
|
517
|
+
// version and V8 flags as the version that is currently running, and will
|
|
518
|
+
// be rejected otherwise.
|
|
519
|
+
// The same EmbedderSnapshotData instance *must* be passed to both
|
|
520
|
+
// `NewIsolate()` and `CreateIsolateData()`. The first `Environment` instance
|
|
521
|
+
// should be created with an empty `context` argument and will then
|
|
522
|
+
// use the main context included in the snapshot blob. It can be retrieved
|
|
523
|
+
// using `GetMainContext()`. `LoadEnvironment` can receive an empty
|
|
524
|
+
// `StartExecutionCallback` in this case.
|
|
525
|
+
// If V8 was configured with the shared-readonly-heap option, it requires
|
|
526
|
+
// all snapshots used to create `Isolate` instances to be identical.
|
|
527
|
+
// This option *must* be unset by embedders who wish to use the startup
|
|
528
|
+
// feature during the build step by passing the --disable-shared-readonly-heap
|
|
529
|
+
// flag to the configure script.
|
|
530
|
+
//
|
|
531
|
+
// The snapshot *must* be kept alive during the execution of the Isolate
|
|
532
|
+
// that was created using it.
|
|
533
|
+
//
|
|
534
|
+
// Snapshots are an *experimental* feature. In particular, the embedder API
|
|
535
|
+
// exposed through this class is subject to change or removal between Node.js
|
|
536
|
+
// versions, including possible API and ABI breakage.
|
|
537
|
+
class EmbedderSnapshotData {
|
|
538
|
+
public:
|
|
539
|
+
struct DeleteSnapshotData {
|
|
540
|
+
void operator()(const EmbedderSnapshotData*) const;
|
|
541
|
+
};
|
|
542
|
+
using Pointer =
|
|
543
|
+
std::unique_ptr<const EmbedderSnapshotData, DeleteSnapshotData>;
|
|
544
|
+
|
|
545
|
+
// Return an EmbedderSnapshotData object that refers to the built-in
|
|
546
|
+
// snapshot of Node.js. This can have been configured through e.g.
|
|
547
|
+
// --node-snapshot-main=entry.js.
|
|
548
|
+
static Pointer BuiltinSnapshotData();
|
|
549
|
+
|
|
550
|
+
// Return an EmbedderSnapshotData object that is based on an input file.
|
|
551
|
+
// Calling this method will consume but not close the FILE* handle.
|
|
552
|
+
// The FILE* handle can be closed immediately following this call.
|
|
553
|
+
// If the snapshot is invalid, this returns an empty pointer.
|
|
554
|
+
static Pointer FromFile(FILE* in);
|
|
555
|
+
static Pointer FromBlob(const std::vector<char>& in);
|
|
556
|
+
static Pointer FromBlob(std::string_view in);
|
|
557
|
+
|
|
558
|
+
// Write this EmbedderSnapshotData object to an output file.
|
|
559
|
+
// Calling this method will not close the FILE* handle.
|
|
560
|
+
// The FILE* handle can be closed immediately following this call.
|
|
561
|
+
void ToFile(FILE* out) const;
|
|
562
|
+
std::vector<char> ToBlob() const;
|
|
563
|
+
|
|
564
|
+
// Returns whether custom snapshots can be used. Currently, this always
|
|
565
|
+
// returns false since V8 enforces shared readonly-heap.
|
|
566
|
+
static bool CanUseCustomSnapshotPerIsolate();
|
|
567
|
+
|
|
568
|
+
EmbedderSnapshotData(const EmbedderSnapshotData&) = delete;
|
|
569
|
+
EmbedderSnapshotData& operator=(const EmbedderSnapshotData&) = delete;
|
|
570
|
+
EmbedderSnapshotData(EmbedderSnapshotData&&) = delete;
|
|
571
|
+
EmbedderSnapshotData& operator=(EmbedderSnapshotData&&) = delete;
|
|
572
|
+
|
|
573
|
+
protected:
|
|
574
|
+
EmbedderSnapshotData(const SnapshotData* impl, bool owns_impl);
|
|
575
|
+
|
|
576
|
+
private:
|
|
577
|
+
const SnapshotData* impl_;
|
|
578
|
+
bool owns_impl_;
|
|
579
|
+
friend struct SnapshotData;
|
|
580
|
+
friend class CommonEnvironmentSetup;
|
|
338
581
|
};
|
|
339
582
|
|
|
340
583
|
// Overriding IsolateSettings may produce unexpected behavior
|
|
@@ -350,13 +593,18 @@ NODE_EXTERN void SetIsolateUpForNode(v8::Isolate* isolate);
|
|
|
350
593
|
// This is a convenience method equivalent to using SetIsolateCreateParams(),
|
|
351
594
|
// Isolate::Allocate(), MultiIsolatePlatform::RegisterIsolate(),
|
|
352
595
|
// Isolate::Initialize(), and SetIsolateUpForNode().
|
|
353
|
-
NODE_EXTERN v8::Isolate* NewIsolate(
|
|
354
|
-
|
|
355
|
-
|
|
596
|
+
NODE_EXTERN v8::Isolate* NewIsolate(
|
|
597
|
+
ArrayBufferAllocator* allocator,
|
|
598
|
+
struct uv_loop_s* event_loop,
|
|
599
|
+
MultiIsolatePlatform* platform,
|
|
600
|
+
const EmbedderSnapshotData* snapshot_data = nullptr,
|
|
601
|
+
const IsolateSettings& settings = {});
|
|
356
602
|
NODE_EXTERN v8::Isolate* NewIsolate(
|
|
357
603
|
std::shared_ptr<ArrayBufferAllocator> allocator,
|
|
358
604
|
struct uv_loop_s* event_loop,
|
|
359
|
-
MultiIsolatePlatform* platform
|
|
605
|
+
MultiIsolatePlatform* platform,
|
|
606
|
+
const EmbedderSnapshotData* snapshot_data = nullptr,
|
|
607
|
+
const IsolateSettings& settings = {});
|
|
360
608
|
|
|
361
609
|
// Creates a new context with Node.js-specific tweaks.
|
|
362
610
|
NODE_EXTERN v8::Local<v8::Context> NewContext(
|
|
@@ -366,7 +614,7 @@ NODE_EXTERN v8::Local<v8::Context> NewContext(
|
|
|
366
614
|
|
|
367
615
|
// Runs Node.js-specific tweaks on an already constructed context
|
|
368
616
|
// Return value indicates success of operation
|
|
369
|
-
NODE_EXTERN bool InitializeContext(v8::Local<v8::Context> context);
|
|
617
|
+
NODE_EXTERN v8::Maybe<bool> InitializeContext(v8::Local<v8::Context> context);
|
|
370
618
|
|
|
371
619
|
// If `platform` is passed, it will be used to register new Worker instances.
|
|
372
620
|
// It can be `nullptr`, in which case creating new Workers inside of
|
|
@@ -375,7 +623,8 @@ NODE_EXTERN IsolateData* CreateIsolateData(
|
|
|
375
623
|
v8::Isolate* isolate,
|
|
376
624
|
struct uv_loop_s* loop,
|
|
377
625
|
MultiIsolatePlatform* platform = nullptr,
|
|
378
|
-
ArrayBufferAllocator* allocator = nullptr
|
|
626
|
+
ArrayBufferAllocator* allocator = nullptr,
|
|
627
|
+
const EmbedderSnapshotData* snapshot_data = nullptr);
|
|
379
628
|
NODE_EXTERN void FreeIsolateData(IsolateData* isolate_data);
|
|
380
629
|
|
|
381
630
|
struct ThreadId {
|
|
@@ -417,17 +666,61 @@ enum Flags : uint64_t {
|
|
|
417
666
|
// $HOME/.node_modules and $NODE_PATH. This is used by standalone apps that
|
|
418
667
|
// do not expect to have their behaviors changed because of globally
|
|
419
668
|
// installed modules.
|
|
420
|
-
kNoGlobalSearchPaths = 1 << 7
|
|
669
|
+
kNoGlobalSearchPaths = 1 << 7,
|
|
670
|
+
// Do not export browser globals like setTimeout, console, etc.
|
|
671
|
+
kNoBrowserGlobals = 1 << 8,
|
|
672
|
+
// Controls whether or not the Environment should call V8Inspector::create().
|
|
673
|
+
// This control is needed by embedders who may not want to initialize the V8
|
|
674
|
+
// inspector in situations where one has already been created,
|
|
675
|
+
// e.g. Blink's in Chromium.
|
|
676
|
+
kNoCreateInspector = 1 << 9,
|
|
677
|
+
// Controls whether or not the InspectorAgent for this Environment should
|
|
678
|
+
// call StartDebugSignalHandler. This control is needed by embedders who may
|
|
679
|
+
// not want to allow other processes to start the V8 inspector.
|
|
680
|
+
kNoStartDebugSignalHandler = 1 << 10,
|
|
681
|
+
// Controls whether the InspectorAgent created for this Environment waits for
|
|
682
|
+
// Inspector frontend events during the Environment creation. It's used to
|
|
683
|
+
// call node::Stop(env) on a Worker thread that is waiting for the events.
|
|
684
|
+
kNoWaitForInspectorFrontend = 1 << 11
|
|
421
685
|
};
|
|
422
686
|
} // namespace EnvironmentFlags
|
|
423
687
|
|
|
688
|
+
enum class SnapshotFlags : uint32_t {
|
|
689
|
+
kDefault = 0,
|
|
690
|
+
// Whether code cache should be generated as part of the snapshot.
|
|
691
|
+
// Code cache reduces the time spent on compiling functions included
|
|
692
|
+
// in the snapshot at the expense of a bigger snapshot size and
|
|
693
|
+
// potentially breaking portability of the snapshot.
|
|
694
|
+
kWithoutCodeCache = 1 << 0,
|
|
695
|
+
};
|
|
696
|
+
|
|
697
|
+
struct SnapshotConfig {
|
|
698
|
+
SnapshotFlags flags = SnapshotFlags::kDefault;
|
|
699
|
+
|
|
700
|
+
// When builder_script_path is std::nullopt, the snapshot is generated as a
|
|
701
|
+
// built-in snapshot instead of a custom one, and it's expected that the
|
|
702
|
+
// built-in snapshot only contains states that reproduce in every run of the
|
|
703
|
+
// application. The event loop won't be run when generating a built-in
|
|
704
|
+
// snapshot, so asynchronous operations should be avoided.
|
|
705
|
+
//
|
|
706
|
+
// When builder_script_path is an std::string, it should match args[1]
|
|
707
|
+
// passed to CreateForSnapshotting(). The embedder is also expected to use
|
|
708
|
+
// LoadEnvironment() to run a script matching this path. In that case the
|
|
709
|
+
// snapshot is generated as a custom snapshot and the event loop is run, so
|
|
710
|
+
// the snapshot builder can execute asynchronous operations as long as they
|
|
711
|
+
// are run to completion when the snapshot is taken.
|
|
712
|
+
std::optional<std::string> builder_script_path;
|
|
713
|
+
};
|
|
714
|
+
|
|
424
715
|
struct InspectorParentHandle {
|
|
425
|
-
virtual ~InspectorParentHandle();
|
|
716
|
+
virtual ~InspectorParentHandle() = default;
|
|
426
717
|
};
|
|
427
718
|
|
|
428
719
|
// TODO(addaleax): Maybe move per-Environment options parsing here.
|
|
429
720
|
// Returns nullptr when the Environment cannot be created e.g. there are
|
|
430
721
|
// pending JavaScript exceptions.
|
|
722
|
+
// `context` may be empty if an `EmbedderSnapshotData` instance was provided
|
|
723
|
+
// to `NewIsolate()` and `CreateIsolateData()`.
|
|
431
724
|
NODE_EXTERN Environment* CreateEnvironment(
|
|
432
725
|
IsolateData* isolate_data,
|
|
433
726
|
v8::Local<v8::Context> context,
|
|
@@ -437,6 +730,16 @@ NODE_EXTERN Environment* CreateEnvironment(
|
|
|
437
730
|
ThreadId thread_id = {} /* allocates a thread id automatically */,
|
|
438
731
|
std::unique_ptr<InspectorParentHandle> inspector_parent_handle = {});
|
|
439
732
|
|
|
733
|
+
NODE_EXTERN Environment* CreateEnvironment(
|
|
734
|
+
IsolateData* isolate_data,
|
|
735
|
+
v8::Local<v8::Context> context,
|
|
736
|
+
const std::vector<std::string>& args,
|
|
737
|
+
const std::vector<std::string>& exec_args,
|
|
738
|
+
EnvironmentFlags::Flags flags,
|
|
739
|
+
ThreadId thread_id,
|
|
740
|
+
std::unique_ptr<InspectorParentHandle> inspector_parent_handle,
|
|
741
|
+
std::string_view thread_name);
|
|
742
|
+
|
|
440
743
|
// Returns a handle that can be passed to `LoadEnvironment()`, making the
|
|
441
744
|
// child Environment accessible to the inspector as if it were a Node.js Worker.
|
|
442
745
|
// `child_thread_id` can be created using `AllocateEnvironmentThreadId()`
|
|
@@ -449,20 +752,53 @@ NODE_EXTERN std::unique_ptr<InspectorParentHandle> GetInspectorParentHandle(
|
|
|
449
752
|
ThreadId child_thread_id,
|
|
450
753
|
const char* child_url);
|
|
451
754
|
|
|
755
|
+
NODE_EXTERN std::unique_ptr<InspectorParentHandle> GetInspectorParentHandle(
|
|
756
|
+
Environment* parent_env,
|
|
757
|
+
ThreadId child_thread_id,
|
|
758
|
+
const char* child_url,
|
|
759
|
+
const char* name);
|
|
760
|
+
|
|
761
|
+
NODE_EXTERN std::unique_ptr<InspectorParentHandle> GetInspectorParentHandle(
|
|
762
|
+
Environment* parent_env,
|
|
763
|
+
ThreadId child_thread_id,
|
|
764
|
+
std::string_view child_url,
|
|
765
|
+
std::string_view name);
|
|
766
|
+
|
|
452
767
|
struct StartExecutionCallbackInfo {
|
|
453
768
|
v8::Local<v8::Object> process_object;
|
|
454
769
|
v8::Local<v8::Function> native_require;
|
|
770
|
+
v8::Local<v8::Function> run_cjs;
|
|
455
771
|
};
|
|
456
772
|
|
|
457
773
|
using StartExecutionCallback =
|
|
458
774
|
std::function<v8::MaybeLocal<v8::Value>(const StartExecutionCallbackInfo&)>;
|
|
775
|
+
using EmbedderPreloadCallback =
|
|
776
|
+
std::function<void(Environment* env,
|
|
777
|
+
v8::Local<v8::Value> process,
|
|
778
|
+
v8::Local<v8::Value> require)>;
|
|
459
779
|
|
|
780
|
+
// Run initialization for the environment.
|
|
781
|
+
//
|
|
782
|
+
// The |preload| function, usually used by embedders to inject scripts,
|
|
783
|
+
// will be run by Node.js before Node.js executes the entry point.
|
|
784
|
+
// The function is guaranteed to run before the user land module loader running
|
|
785
|
+
// any user code, so it is safe to assume that at this point, no user code has
|
|
786
|
+
// been run yet.
|
|
787
|
+
// The function will be executed with preload(process, require), and the passed
|
|
788
|
+
// require function has access to internal Node.js modules. There is no
|
|
789
|
+
// stability guarantee about the internals exposed to the internal require
|
|
790
|
+
// function. Expect breakages when updating Node.js versions if the embedder
|
|
791
|
+
// imports internal modules with the internal require function.
|
|
792
|
+
// Worker threads created in the environment will also respect The |preload|
|
|
793
|
+
// function, so make sure the function is thread-safe.
|
|
460
794
|
NODE_EXTERN v8::MaybeLocal<v8::Value> LoadEnvironment(
|
|
461
795
|
Environment* env,
|
|
462
|
-
StartExecutionCallback cb
|
|
796
|
+
StartExecutionCallback cb,
|
|
797
|
+
EmbedderPreloadCallback preload = nullptr);
|
|
463
798
|
NODE_EXTERN v8::MaybeLocal<v8::Value> LoadEnvironment(
|
|
464
799
|
Environment* env,
|
|
465
|
-
|
|
800
|
+
std::string_view main_script_source_utf8,
|
|
801
|
+
EmbedderPreloadCallback preload = nullptr);
|
|
466
802
|
NODE_EXTERN void FreeEnvironment(Environment* env);
|
|
467
803
|
|
|
468
804
|
// Set a callback that is called when process.exit() is called from JS,
|
|
@@ -481,8 +817,12 @@ NODE_EXTERN void DefaultProcessExitHandler(Environment* env, int exit_code);
|
|
|
481
817
|
NODE_EXTERN Environment* GetCurrentEnvironment(v8::Local<v8::Context> context);
|
|
482
818
|
NODE_EXTERN IsolateData* GetEnvironmentIsolateData(Environment* env);
|
|
483
819
|
NODE_EXTERN ArrayBufferAllocator* GetArrayBufferAllocator(IsolateData* data);
|
|
820
|
+
// This is mostly useful for Environment* instances that were created through
|
|
821
|
+
// a snapshot and have a main context that was read from that snapshot.
|
|
822
|
+
NODE_EXTERN v8::Local<v8::Context> GetMainContext(Environment* env);
|
|
484
823
|
|
|
485
|
-
NODE_EXTERN void OnFatalError(const char* location,
|
|
824
|
+
[[noreturn]] NODE_EXTERN void OnFatalError(const char* location,
|
|
825
|
+
const char* message);
|
|
486
826
|
NODE_EXTERN void PromiseRejectCallback(v8::PromiseRejectMessage message);
|
|
487
827
|
NODE_EXTERN bool AllowWasmCodeGenerationCallback(v8::Local<v8::Context> context,
|
|
488
828
|
v8::Local<v8::String>);
|
|
@@ -492,6 +832,33 @@ NODE_EXTERN v8::MaybeLocal<v8::Value> PrepareStackTraceCallback(
|
|
|
492
832
|
v8::Local<v8::Value> exception,
|
|
493
833
|
v8::Local<v8::Array> trace);
|
|
494
834
|
|
|
835
|
+
// Writes a diagnostic report to a file. If filename is not provided, the
|
|
836
|
+
// default filename includes the date, time, PID, and a sequence number.
|
|
837
|
+
// The report's JavaScript stack trace is taken from err, if present.
|
|
838
|
+
// If isolate is nullptr, no information about the JavaScript environment
|
|
839
|
+
// is included in the report.
|
|
840
|
+
// Returns the filename of the written report.
|
|
841
|
+
NODE_EXTERN std::string TriggerNodeReport(v8::Isolate* isolate,
|
|
842
|
+
const char* message,
|
|
843
|
+
const char* trigger,
|
|
844
|
+
const std::string& filename,
|
|
845
|
+
v8::Local<v8::Value> error);
|
|
846
|
+
NODE_EXTERN std::string TriggerNodeReport(Environment* env,
|
|
847
|
+
const char* message,
|
|
848
|
+
const char* trigger,
|
|
849
|
+
const std::string& filename,
|
|
850
|
+
v8::Local<v8::Value> error);
|
|
851
|
+
NODE_EXTERN void GetNodeReport(v8::Isolate* isolate,
|
|
852
|
+
const char* message,
|
|
853
|
+
const char* trigger,
|
|
854
|
+
v8::Local<v8::Value> error,
|
|
855
|
+
std::ostream& out);
|
|
856
|
+
NODE_EXTERN void GetNodeReport(Environment* env,
|
|
857
|
+
const char* message,
|
|
858
|
+
const char* trigger,
|
|
859
|
+
v8::Local<v8::Value> error,
|
|
860
|
+
std::ostream& out);
|
|
861
|
+
|
|
495
862
|
// This returns the MultiIsolatePlatform used for an Environment or IsolateData
|
|
496
863
|
// instance, if one exists.
|
|
497
864
|
NODE_EXTERN MultiIsolatePlatform* GetMultiIsolatePlatform(Environment* env);
|
|
@@ -545,6 +912,8 @@ NODE_EXTERN struct uv_loop_s* GetCurrentEventLoop(v8::Isolate* isolate);
|
|
|
545
912
|
// This function only works if `env` has an associated `MultiIsolatePlatform`.
|
|
546
913
|
NODE_EXTERN v8::Maybe<int> SpinEventLoop(Environment* env);
|
|
547
914
|
|
|
915
|
+
NODE_EXTERN std::string GetAnonymousMainPath();
|
|
916
|
+
|
|
548
917
|
class NODE_EXTERN CommonEnvironmentSetup {
|
|
549
918
|
public:
|
|
550
919
|
~CommonEnvironmentSetup();
|
|
@@ -560,8 +929,44 @@ class NODE_EXTERN CommonEnvironmentSetup {
|
|
|
560
929
|
MultiIsolatePlatform* platform,
|
|
561
930
|
std::vector<std::string>* errors,
|
|
562
931
|
EnvironmentArgs&&... env_args);
|
|
932
|
+
template <typename... EnvironmentArgs>
|
|
933
|
+
static std::unique_ptr<CommonEnvironmentSetup> CreateFromSnapshot(
|
|
934
|
+
MultiIsolatePlatform* platform,
|
|
935
|
+
std::vector<std::string>* errors,
|
|
936
|
+
const EmbedderSnapshotData* snapshot_data,
|
|
937
|
+
EnvironmentArgs&&... env_args);
|
|
938
|
+
|
|
939
|
+
// Create an embedding setup which will be used for creating a snapshot
|
|
940
|
+
// using CreateSnapshot().
|
|
941
|
+
//
|
|
942
|
+
// This will create and attach a v8::SnapshotCreator to this instance,
|
|
943
|
+
// and the same restrictions apply to this instance that also apply to
|
|
944
|
+
// other V8 snapshotting environments.
|
|
945
|
+
// Not all Node.js APIs are supported in this case. Currently, there is
|
|
946
|
+
// no support for native/host objects other than Node.js builtins
|
|
947
|
+
// in the snapshot.
|
|
948
|
+
//
|
|
949
|
+
// If the embedder wants to use LoadEnvironment() later to run a snapshot
|
|
950
|
+
// builder script they should make sure args[1] contains the path of the
|
|
951
|
+
// snapshot script, which will be used to create __filename and __dirname
|
|
952
|
+
// in the context where the builder script is run. If they do not want to
|
|
953
|
+
// include the build-time paths into the snapshot, use the string returned
|
|
954
|
+
// by GetAnonymousMainPath() as args[1] to anonymize the script.
|
|
955
|
+
//
|
|
956
|
+
// Snapshots are an *experimental* feature. In particular, the embedder API
|
|
957
|
+
// exposed through this class is subject to change or removal between Node.js
|
|
958
|
+
// versions, including possible API and ABI breakage.
|
|
959
|
+
static std::unique_ptr<CommonEnvironmentSetup> CreateForSnapshotting(
|
|
960
|
+
MultiIsolatePlatform* platform,
|
|
961
|
+
std::vector<std::string>* errors,
|
|
962
|
+
const std::vector<std::string>& args = {},
|
|
963
|
+
const std::vector<std::string>& exec_args = {},
|
|
964
|
+
const SnapshotConfig& snapshot_config = {});
|
|
965
|
+
EmbedderSnapshotData::Pointer CreateSnapshot();
|
|
563
966
|
|
|
564
967
|
struct uv_loop_s* event_loop() const;
|
|
968
|
+
v8::SnapshotCreator* snapshot_creator();
|
|
969
|
+
// Empty for snapshotting environments.
|
|
565
970
|
std::shared_ptr<ArrayBufferAllocator> array_buffer_allocator() const;
|
|
566
971
|
v8::Isolate* isolate() const;
|
|
567
972
|
IsolateData* isolate_data() const;
|
|
@@ -574,12 +979,25 @@ class NODE_EXTERN CommonEnvironmentSetup {
|
|
|
574
979
|
CommonEnvironmentSetup& operator=(CommonEnvironmentSetup&&) = delete;
|
|
575
980
|
|
|
576
981
|
private:
|
|
982
|
+
enum Flags : uint32_t {
|
|
983
|
+
kNoFlags = 0,
|
|
984
|
+
kIsForSnapshotting = 1,
|
|
985
|
+
};
|
|
986
|
+
|
|
577
987
|
struct Impl;
|
|
578
988
|
Impl* impl_;
|
|
989
|
+
|
|
579
990
|
CommonEnvironmentSetup(
|
|
580
991
|
MultiIsolatePlatform*,
|
|
581
992
|
std::vector<std::string>*,
|
|
582
993
|
std::function<Environment*(const CommonEnvironmentSetup*)>);
|
|
994
|
+
CommonEnvironmentSetup(
|
|
995
|
+
MultiIsolatePlatform*,
|
|
996
|
+
std::vector<std::string>*,
|
|
997
|
+
const EmbedderSnapshotData*,
|
|
998
|
+
uint32_t flags,
|
|
999
|
+
std::function<Environment*(const CommonEnvironmentSetup*)>,
|
|
1000
|
+
const SnapshotConfig* config = nullptr);
|
|
583
1001
|
};
|
|
584
1002
|
|
|
585
1003
|
// Implementation for CommonEnvironmentSetup::Create
|
|
@@ -599,6 +1017,29 @@ std::unique_ptr<CommonEnvironmentSetup> CommonEnvironmentSetup::Create(
|
|
|
599
1017
|
return ret;
|
|
600
1018
|
}
|
|
601
1019
|
|
|
1020
|
+
// Implementation for ::CreateFromSnapshot -- the ::Create() method
|
|
1021
|
+
// could call this with a nullptr snapshot_data in a major version.
|
|
1022
|
+
template <typename... EnvironmentArgs>
|
|
1023
|
+
std::unique_ptr<CommonEnvironmentSetup>
|
|
1024
|
+
CommonEnvironmentSetup::CreateFromSnapshot(
|
|
1025
|
+
MultiIsolatePlatform* platform,
|
|
1026
|
+
std::vector<std::string>* errors,
|
|
1027
|
+
const EmbedderSnapshotData* snapshot_data,
|
|
1028
|
+
EnvironmentArgs&&... env_args) {
|
|
1029
|
+
auto ret = std::unique_ptr<CommonEnvironmentSetup>(new CommonEnvironmentSetup(
|
|
1030
|
+
platform,
|
|
1031
|
+
errors,
|
|
1032
|
+
snapshot_data,
|
|
1033
|
+
Flags::kNoFlags,
|
|
1034
|
+
[&](const CommonEnvironmentSetup* setup) -> Environment* {
|
|
1035
|
+
return CreateEnvironment(setup->isolate_data(),
|
|
1036
|
+
setup->context(),
|
|
1037
|
+
std::forward<EnvironmentArgs>(env_args)...);
|
|
1038
|
+
}));
|
|
1039
|
+
if (!errors->empty()) ret.reset();
|
|
1040
|
+
return ret;
|
|
1041
|
+
}
|
|
1042
|
+
|
|
602
1043
|
/* Converts a unixtime to V8 Date */
|
|
603
1044
|
NODE_DEPRECATED("Use v8::Date::New() directly",
|
|
604
1045
|
inline v8::Local<v8::Value> NODE_UNIXTIME_V8(double time) {
|
|
@@ -614,44 +1055,38 @@ NODE_DEPRECATED("Use v8::Date::ValueOf() directly",
|
|
|
614
1055
|
})
|
|
615
1056
|
#define NODE_V8_UNIXTIME node::NODE_V8_UNIXTIME
|
|
616
1057
|
|
|
617
|
-
#define NODE_DEFINE_CONSTANT(target, constant)
|
|
618
|
-
do {
|
|
619
|
-
v8::Isolate* isolate = target->GetIsolate();
|
|
620
|
-
v8::Local<v8::Context> context = isolate->GetCurrentContext();
|
|
621
|
-
v8::Local<v8::String> constant_name =
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
v8::
|
|
638
|
-
|
|
639
|
-
v8::Local<v8::
|
|
640
|
-
v8::
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
(target)->DefineOwnProperty(context, \
|
|
650
|
-
constant_name, \
|
|
651
|
-
constant_value, \
|
|
652
|
-
constant_attributes).Check(); \
|
|
653
|
-
} \
|
|
654
|
-
while (0)
|
|
1058
|
+
#define NODE_DEFINE_CONSTANT(target, constant) \
|
|
1059
|
+
do { \
|
|
1060
|
+
v8::Isolate* isolate = target->GetIsolate(); \
|
|
1061
|
+
v8::Local<v8::Context> context = isolate->GetCurrentContext(); \
|
|
1062
|
+
v8::Local<v8::String> constant_name = v8::String::NewFromUtf8Literal( \
|
|
1063
|
+
isolate, #constant, v8::NewStringType::kInternalized); \
|
|
1064
|
+
v8::Local<v8::Number> constant_value = \
|
|
1065
|
+
v8::Number::New(isolate, static_cast<double>(constant)); \
|
|
1066
|
+
v8::PropertyAttribute constant_attributes = \
|
|
1067
|
+
static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontDelete); \
|
|
1068
|
+
(target) \
|
|
1069
|
+
->DefineOwnProperty( \
|
|
1070
|
+
context, constant_name, constant_value, constant_attributes) \
|
|
1071
|
+
.Check(); \
|
|
1072
|
+
} while (0)
|
|
1073
|
+
|
|
1074
|
+
#define NODE_DEFINE_HIDDEN_CONSTANT(target, constant) \
|
|
1075
|
+
do { \
|
|
1076
|
+
v8::Isolate* isolate = target->GetIsolate(); \
|
|
1077
|
+
v8::Local<v8::Context> context = isolate->GetCurrentContext(); \
|
|
1078
|
+
v8::Local<v8::String> constant_name = v8::String::NewFromUtf8Literal( \
|
|
1079
|
+
isolate, #constant, v8::NewStringType::kInternalized); \
|
|
1080
|
+
v8::Local<v8::Number> constant_value = \
|
|
1081
|
+
v8::Number::New(isolate, static_cast<double>(constant)); \
|
|
1082
|
+
v8::PropertyAttribute constant_attributes = \
|
|
1083
|
+
static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontDelete | \
|
|
1084
|
+
v8::DontEnum); \
|
|
1085
|
+
(target) \
|
|
1086
|
+
->DefineOwnProperty( \
|
|
1087
|
+
context, constant_name, constant_value, constant_attributes) \
|
|
1088
|
+
.Check(); \
|
|
1089
|
+
} while (0)
|
|
655
1090
|
|
|
656
1091
|
// Used to be a macro, hence the uppercase name.
|
|
657
1092
|
inline void NODE_SET_METHOD(v8::Local<v8::Template> recv,
|
|
@@ -723,16 +1158,37 @@ NODE_EXTERN enum encoding ParseEncoding(
|
|
|
723
1158
|
NODE_EXTERN void FatalException(v8::Isolate* isolate,
|
|
724
1159
|
const v8::TryCatch& try_catch);
|
|
725
1160
|
|
|
726
|
-
NODE_EXTERN v8::
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
1161
|
+
NODE_EXTERN v8::MaybeLocal<v8::Value> TryEncode(
|
|
1162
|
+
v8::Isolate* isolate,
|
|
1163
|
+
const char* buf,
|
|
1164
|
+
size_t len,
|
|
1165
|
+
enum encoding encoding = LATIN1);
|
|
1166
|
+
|
|
1167
|
+
// Warning: This reverses endianness on Big Endian platforms, even though the
|
|
1168
|
+
// signature using uint16_t implies that it should not.
|
|
1169
|
+
NODE_EXTERN v8::MaybeLocal<v8::Value> TryEncode(v8::Isolate* isolate,
|
|
1170
|
+
const uint16_t* buf,
|
|
1171
|
+
size_t len);
|
|
1172
|
+
|
|
1173
|
+
// The original Encode(...) functions are deprecated because they do not
|
|
1174
|
+
// appropriately propagate exceptions and instead rely on ToLocalChecked()
|
|
1175
|
+
// which crashes the process if an exception occurs. We cannot just remove
|
|
1176
|
+
// these as it would break ABI compatibility, so we keep them around but
|
|
1177
|
+
// deprecate them in favor of the TryEncode(...) variations which return
|
|
1178
|
+
// a MaybeLocal<> and do not crash the process if an exception occurs.
|
|
1179
|
+
NODE_DEPRECATED(
|
|
1180
|
+
"Use TryEncode(...) instead",
|
|
1181
|
+
NODE_EXTERN v8::Local<v8::Value> Encode(v8::Isolate* isolate,
|
|
1182
|
+
const char* buf,
|
|
1183
|
+
size_t len,
|
|
1184
|
+
enum encoding encoding = LATIN1));
|
|
730
1185
|
|
|
731
1186
|
// Warning: This reverses endianness on Big Endian platforms, even though the
|
|
732
1187
|
// signature using uint16_t implies that it should not.
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
1188
|
+
NODE_DEPRECATED("Use TryEncode(...) instead",
|
|
1189
|
+
NODE_EXTERN v8::Local<v8::Value> Encode(v8::Isolate* isolate,
|
|
1190
|
+
const uint16_t* buf,
|
|
1191
|
+
size_t len));
|
|
736
1192
|
|
|
737
1193
|
// Returns -1 if the handle was not valid for decoding
|
|
738
1194
|
NODE_EXTERN ssize_t DecodeBytes(v8::Isolate* isolate,
|
|
@@ -798,11 +1254,13 @@ extern "C" NODE_EXTERN void node_module_register(void* mod);
|
|
|
798
1254
|
#endif
|
|
799
1255
|
|
|
800
1256
|
#if defined(_MSC_VER)
|
|
801
|
-
#pragma section(".CRT$XCU", read)
|
|
802
1257
|
#define NODE_C_CTOR(fn) \
|
|
803
1258
|
NODE_CTOR_PREFIX void __cdecl fn(void); \
|
|
804
|
-
|
|
805
|
-
|
|
1259
|
+
namespace { \
|
|
1260
|
+
struct fn##_ { \
|
|
1261
|
+
fn##_() { fn(); }; \
|
|
1262
|
+
} fn##_v_; \
|
|
1263
|
+
} \
|
|
806
1264
|
NODE_CTOR_PREFIX void __cdecl fn(void)
|
|
807
1265
|
#else
|
|
808
1266
|
#define NODE_C_CTOR(fn) \
|
|
@@ -905,6 +1363,11 @@ NODE_EXTERN void AddLinkedBinding(Environment* env,
|
|
|
905
1363
|
const char* name,
|
|
906
1364
|
addon_context_register_func fn,
|
|
907
1365
|
void* priv);
|
|
1366
|
+
NODE_EXTERN void AddLinkedBinding(
|
|
1367
|
+
Environment* env,
|
|
1368
|
+
const char* name,
|
|
1369
|
+
napi_addon_register_func fn,
|
|
1370
|
+
int32_t module_api_version = NODE_API_DEFAULT_MODULE_API_VERSION);
|
|
908
1371
|
|
|
909
1372
|
/* Registers a callback with the passed-in Environment instance. The callback
|
|
910
1373
|
* is called after the event loop exits, but before the VM is disposed.
|
|
@@ -961,11 +1424,26 @@ inline void RemoveEnvironmentCleanupHook(AsyncCleanupHookHandle holder) {
|
|
|
961
1424
|
RemoveEnvironmentCleanupHookInternal(holder.get());
|
|
962
1425
|
}
|
|
963
1426
|
|
|
1427
|
+
// This behaves like V8's Isolate::RequestInterrupt(), but also wakes up
|
|
1428
|
+
// the event loop if it is currently idle. Interrupt requests are drained
|
|
1429
|
+
// in `FreeEnvironment()`. The passed callback can not call back into
|
|
1430
|
+
// JavaScript.
|
|
1431
|
+
// This function can be called from any thread.
|
|
1432
|
+
NODE_EXTERN void RequestInterrupt(Environment* env,
|
|
1433
|
+
void (*fun)(void* arg),
|
|
1434
|
+
void* arg);
|
|
1435
|
+
|
|
964
1436
|
/* Returns the id of the current execution context. If the return value is
|
|
965
1437
|
* zero then no execution has been set. This will happen if the user handles
|
|
966
1438
|
* I/O from native code. */
|
|
967
1439
|
NODE_EXTERN async_id AsyncHooksGetExecutionAsyncId(v8::Isolate* isolate);
|
|
968
1440
|
|
|
1441
|
+
/* Returns the id of the current execution context. If the return value is
|
|
1442
|
+
* zero then no execution has been set. This will happen if the user handles
|
|
1443
|
+
* I/O from native code. */
|
|
1444
|
+
NODE_EXTERN async_id
|
|
1445
|
+
AsyncHooksGetExecutionAsyncId(v8::Local<v8::Context> context);
|
|
1446
|
+
|
|
969
1447
|
/* Return same value as async_hooks.triggerAsyncId(); */
|
|
970
1448
|
NODE_EXTERN async_id AsyncHooksGetTriggerAsyncId(v8::Isolate* isolate);
|
|
971
1449
|
|
|
@@ -1109,6 +1587,7 @@ class NODE_EXTERN AsyncResource {
|
|
|
1109
1587
|
private:
|
|
1110
1588
|
Environment* env_;
|
|
1111
1589
|
v8::Global<v8::Object> resource_;
|
|
1590
|
+
v8::Global<v8::Value> context_frame_;
|
|
1112
1591
|
async_context async_context_;
|
|
1113
1592
|
};
|
|
1114
1593
|
|
|
@@ -1127,6 +1606,15 @@ void RegisterSignalHandler(int signal,
|
|
|
1127
1606
|
bool reset_handler = false);
|
|
1128
1607
|
#endif // _WIN32
|
|
1129
1608
|
|
|
1609
|
+
// This is kept as a compatibility layer for addons to wrap cppgc-managed
|
|
1610
|
+
// objects on Node.js versions without v8::Object::Wrap(). Addons created to
|
|
1611
|
+
// work with only Node.js versions with v8::Object::Wrap() should use that
|
|
1612
|
+
// instead.
|
|
1613
|
+
NODE_DEPRECATED("Use v8::Object::Wrap()",
|
|
1614
|
+
NODE_EXTERN void SetCppgcReference(v8::Isolate* isolate,
|
|
1615
|
+
v8::Local<v8::Object> object,
|
|
1616
|
+
void* wrappable));
|
|
1617
|
+
|
|
1130
1618
|
} // namespace node
|
|
1131
1619
|
|
|
1132
1620
|
#endif // SRC_NODE_H_
|