@encharm/cws 4.4.1 → 4.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.gyp +1 -1
- package/dist/bindings/cws_darwin_arm64_node115.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node127.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node137.node +0 -0
- package/dist/bindings/cws_linux_arm64_node115.node +0 -0
- package/dist/bindings/cws_linux_arm64_node127.node +0 -0
- package/dist/bindings/cws_linux_x64_node115.node +0 -0
- package/dist/bindings/cws_linux_x64_node127.node +0 -0
- package/dist/bindings/cws_linux_x64_node137.node +0 -0
- package/dist/bindings/cws_win32_x64_node108.node +0 -0
- package/dist/bindings/cws_win32_x64_node115.node +0 -0
- package/dist/bindings/cws_win32_x64_node127.node +0 -0
- package/dist/bindings/cws_win32_x64_node83.node +0 -0
- package/dist/bindings/cws_win32_x64_node93.node +0 -0
- package/package.json +1 -1
- package/src/Addon.h +13 -23
- package/src/Socket.h +0 -1
- package/src/headers/22/acorn_version.h +6 -0
- package/src/headers/22/aliased_buffer-inl.h +243 -0
- package/src/headers/22/aliased_buffer.h +206 -0
- package/src/headers/{18 → 22}/async_wrap-inl.h +8 -6
- package/src/headers/{18 → 22}/async_wrap.h +65 -59
- package/src/headers/{18 → 22}/base_object-inl.h +57 -117
- package/src/headers/{18 → 22}/base_object.h +58 -30
- package/src/headers/22/base_object_types.h +74 -0
- package/src/headers/22/blob_serializer_deserializer-inl.h +385 -0
- package/src/headers/22/blob_serializer_deserializer.h +132 -0
- package/src/headers/{16 → 22}/callback_queue.h +1 -0
- package/src/headers/{16 → 22}/cares_wrap.h +27 -20
- package/src/headers/22/cjs_module_lexer_version.h +6 -0
- package/src/headers/22/cleanup_queue-inl.h +62 -0
- package/src/headers/22/cleanup_queue.h +85 -0
- package/src/headers/22/compile_cache.h +104 -0
- package/src/headers/{18 → 22}/crypto/crypto_clienthello.h +1 -1
- package/src/headers/{18 → 22}/crypto/crypto_context.h +31 -7
- package/src/headers/{18 → 22}/crypto/crypto_keys.h +118 -148
- package/src/headers/{18 → 22}/crypto/crypto_tls.h +20 -5
- package/src/headers/{18 → 22}/crypto/crypto_util.h +219 -263
- package/src/headers/22/crypto/ncrypto.h +752 -0
- package/src/headers/{16 → 22}/debug_utils-inl.h +15 -7
- package/src/headers/{18 → 22}/debug_utils.h +25 -19
- package/src/headers/22/encoding_binding.h +59 -0
- package/src/headers/{14 → 22}/env-inl.h +276 -409
- package/src/headers/22/env.h +1266 -0
- package/src/headers/22/env_properties.h +497 -0
- package/src/headers/{18 → 22}/handle_wrap.h +2 -0
- package/src/headers/{18 → 22}/histogram.h +88 -48
- package/src/headers/{16 → 22}/inspector_agent.h +17 -1
- package/src/headers/{16 → 22}/inspector_profiler.h +15 -13
- package/src/headers/22/js_native_api.h +619 -0
- package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
- package/src/headers/22/js_native_api_v8.h +485 -0
- package/src/headers/{18 → 22}/js_native_api_v8_internals.h +6 -0
- package/src/headers/22/json_parser.h +40 -0
- package/src/headers/{16 → 22}/json_utils.h +19 -8
- package/src/headers/{18 → 22}/memory_tracker-inl.h +16 -13
- package/src/headers/{14 → 22}/memory_tracker.h +13 -8
- package/src/headers/{16 → 22}/module_wrap.h +49 -19
- package/src/headers/22/ncrypto/ncrypto.h +752 -0
- package/src/headers/{18 → 22}/node.h +465 -68
- package/src/headers/{18 → 22}/node_api.h +66 -81
- package/src/headers/{18 → 22}/node_api_internals.h +8 -4
- package/src/headers/{18 → 22}/node_api_types.h +5 -0
- package/src/headers/22/node_binding.h +154 -0
- package/src/headers/{18 → 22}/node_blob.h +46 -78
- package/src/headers/{18 → 22}/node_bob-inl.h +1 -2
- package/src/headers/{18 → 22}/node_bob.h +2 -6
- package/src/headers/{18 → 22}/node_buffer.h +1 -1
- package/src/headers/22/node_builtins.h +220 -0
- package/src/headers/{18 → 22}/node_constants.h +3 -5
- package/src/headers/22/node_context_data.h +168 -0
- package/src/headers/22/node_contextify.h +199 -0
- package/src/headers/{16 → 22}/node_crypto.h +1 -2
- package/src/headers/22/node_dotenv.h +45 -0
- package/src/headers/{18 → 22}/node_errors.h +86 -27
- package/src/headers/22/node_exit_code.h +54 -0
- package/src/headers/22/node_external_reference.h +249 -0
- package/src/headers/{18 → 22}/node_file-inl.h +127 -30
- package/src/headers/{16 → 22}/node_file.h +122 -11
- package/src/headers/{18 → 22}/node_http2.h +28 -11
- package/src/headers/{16 → 22}/node_http2_state.h +34 -25
- package/src/headers/{18 → 22}/node_http_common-inl.h +2 -1
- package/src/headers/{18 → 22}/node_http_common.h +56 -55
- package/src/headers/{16 → 22}/node_i18n.h +5 -18
- package/src/headers/{18 → 22}/node_internals.h +121 -59
- package/src/headers/{18 → 22}/node_main_instance.h +4 -31
- package/src/headers/{18 → 22}/node_messaging.h +27 -10
- package/src/headers/{18 → 22}/node_metadata.h +23 -1
- package/src/headers/{18 → 22}/node_options-inl.h +24 -11
- package/src/headers/{18 → 22}/node_options.h +124 -39
- package/src/headers/{18 → 22}/node_perf.h +0 -2
- package/src/headers/{18 → 22}/node_perf_common.h +20 -9
- package/src/headers/{18 → 22}/node_platform.h +11 -5
- package/src/headers/{18 → 22}/node_process.h +26 -14
- package/src/headers/22/node_realm-inl.h +145 -0
- package/src/headers/22/node_realm.h +184 -0
- package/src/headers/{16 → 22}/node_report.h +13 -17
- package/src/headers/{16 → 22}/node_revert.h +3 -3
- package/src/headers/{16 → 22}/node_root_certs.h +902 -461
- package/src/headers/22/node_sea.h +64 -0
- package/src/headers/22/node_shadow_realm.h +46 -0
- package/src/headers/22/node_snapshot_builder.h +57 -0
- package/src/headers/22/node_snapshotable.h +174 -0
- package/src/headers/{18 → 22}/node_sockaddr.h +2 -2
- package/src/headers/{16 → 22}/node_stat_watcher.h +2 -1
- package/src/headers/22/node_threadsafe_cow-inl.h +54 -0
- package/src/headers/22/node_threadsafe_cow.h +105 -0
- package/src/headers/22/node_union_bytes.h +81 -0
- package/src/headers/22/node_url.h +96 -0
- package/src/headers/22/node_v8.h +77 -0
- package/src/headers/{14 → 22}/node_v8_platform-inl.h +17 -6
- package/src/headers/{16 → 22}/node_version.h +21 -9
- package/src/headers/22/node_wasi.h +185 -0
- package/src/headers/{14 → 22}/node_watchdog.h +2 -0
- package/src/headers/{18 → 22}/node_worker.h +7 -2
- package/src/headers/22/permission/child_process_permission.h +31 -0
- package/src/headers/22/permission/fs_permission.h +167 -0
- package/src/headers/22/permission/inspector_permission.h +31 -0
- package/src/headers/22/permission/permission.h +99 -0
- package/src/headers/22/permission/permission_base.h +60 -0
- package/src/headers/22/permission/wasi_permission.h +31 -0
- package/src/headers/22/permission/worker_permission.h +31 -0
- package/src/headers/{16 → 22}/req_wrap-inl.h +7 -6
- package/src/headers/{14 → 22}/spawn_sync.h +3 -3
- package/src/headers/{18 → 22}/stream_base-inl.h +0 -135
- package/src/headers/{18 → 22}/stream_base.h +35 -16
- package/src/headers/{18 → 22}/stream_pipe.h +3 -4
- package/src/headers/{16 → 22}/stream_wrap.h +2 -1
- package/src/headers/{18 → 22}/string_bytes.h +5 -14
- package/src/headers/{14 → 22}/string_decoder-inl.h +0 -6
- package/src/headers/{16 → 22}/string_decoder.h +0 -1
- package/src/headers/{18 → 22}/tcp_wrap.h +1 -1
- package/src/headers/{18 → 22}/threadpoolwork-inl.h +14 -1
- package/src/headers/22/timers.h +76 -0
- package/src/headers/{18 → 22}/tracing/trace_event.h +7 -5
- package/src/headers/{16 → 22}/udp_wrap.h +8 -5
- package/src/headers/22/undici_version.h +6 -0
- package/src/headers/{18 → 22}/util-inl.h +97 -127
- package/src/headers/{18 → 22}/util.h +293 -106
- package/src/headers/{18 → 22}/v8-fast-api-calls.h +103 -58
- package/src/headers/24/acorn_version.h +6 -0
- package/src/headers/24/addon_permission.h +31 -0
- package/src/headers/{16/tracing → 24}/agent.h +1 -1
- package/src/headers/24/aliased_buffer-inl.h +244 -0
- package/src/headers/24/aliased_buffer.h +206 -0
- package/src/headers/24/amaro_version.h +6 -0
- package/src/headers/24/application.h +165 -0
- package/src/headers/24/async_context_frame.h +33 -0
- package/src/headers/{14 → 24}/async_wrap-inl.h +8 -6
- package/src/headers/{16 → 24}/async_wrap.h +86 -88
- package/src/headers/{16 → 24}/base_object-inl.h +75 -119
- package/src/headers/{16 → 24}/base_object.h +84 -40
- package/src/headers/24/base_object_types.h +74 -0
- package/src/headers/24/bindingdata.h +272 -0
- package/src/headers/24/blob_serializer_deserializer-inl.h +385 -0
- package/src/headers/24/blob_serializer_deserializer.h +132 -0
- package/src/headers/{18 → 24}/callback_queue.h +1 -0
- package/src/headers/{18 → 24}/cares_wrap.h +68 -144
- package/src/headers/24/child_process_permission.h +31 -0
- package/src/headers/24/cid.h +127 -0
- package/src/headers/24/cjs_module_lexer_version.h +6 -0
- package/src/headers/24/cleanup_queue-inl.h +36 -0
- package/src/headers/24/cleanup_queue.h +79 -0
- package/src/headers/24/compile_cache.h +113 -0
- package/src/headers/24/cppgc_helpers-inl.h +65 -0
- package/src/headers/24/cppgc_helpers.h +162 -0
- package/src/headers/24/crypto/crypto_aes.h +97 -0
- package/src/headers/24/crypto/crypto_argon2.h +86 -0
- package/src/headers/{16 → 24}/crypto/crypto_bio.h +8 -9
- package/src/headers/24/crypto/crypto_chacha20_poly1305.h +64 -0
- package/src/headers/{18 → 24}/crypto/crypto_cipher.h +48 -58
- package/src/headers/{16 → 24}/crypto/crypto_clienthello-inl.h +2 -2
- package/src/headers/{16 → 24}/crypto/crypto_clienthello.h +1 -1
- package/src/headers/24/crypto/crypto_common.h +48 -0
- package/src/headers/{16 → 24}/crypto/crypto_context.h +46 -22
- package/src/headers/{18 → 24}/crypto/crypto_dh.h +27 -57
- package/src/headers/{18 → 24}/crypto/crypto_dsa.h +7 -34
- package/src/headers/{18 → 24}/crypto/crypto_ec.h +42 -49
- package/src/headers/{18 → 24}/crypto/crypto_hash.h +11 -11
- package/src/headers/{18 → 24}/crypto/crypto_hkdf.h +10 -14
- package/src/headers/{18 → 24}/crypto/crypto_hmac.h +11 -13
- package/src/headers/24/crypto/crypto_kem.h +113 -0
- package/src/headers/{18 → 24}/crypto/crypto_keygen.h +59 -74
- package/src/headers/{16 → 24}/crypto/crypto_keys.h +134 -154
- package/src/headers/24/crypto/crypto_ml_dsa.h +21 -0
- package/src/headers/{18 → 24}/crypto/crypto_pbkdf2.h +9 -11
- package/src/headers/{18 → 24}/crypto/crypto_random.h +28 -34
- package/src/headers/{18 → 24}/crypto/crypto_rsa.h +30 -35
- package/src/headers/{18 → 24}/crypto/crypto_scrypt.h +8 -10
- package/src/headers/{18 → 24}/crypto/crypto_sig.h +36 -48
- package/src/headers/{16 → 24}/crypto/crypto_tls.h +35 -18
- package/src/headers/{16 → 24}/crypto/crypto_util.h +183 -321
- package/src/headers/24/crypto/crypto_x509.h +140 -0
- package/src/headers/24/data.h +148 -0
- package/src/headers/{14 → 24}/debug_utils-inl.h +17 -8
- package/src/headers/{16 → 24}/debug_utils.h +31 -22
- package/src/headers/24/defs.h +254 -0
- package/src/headers/24/embedded_data.h +17 -0
- package/src/headers/24/encoding_binding.h +60 -0
- package/src/headers/24/endpoint.h +421 -0
- package/src/headers/{16 → 24}/env-inl.h +198 -540
- package/src/headers/24/env.h +1257 -0
- package/src/headers/24/env_properties.h +561 -0
- package/src/headers/24/fs_permission.h +167 -0
- package/src/headers/{16 → 24}/handle_wrap.h +4 -2
- package/src/headers/{16 → 24}/histogram-inl.h +34 -15
- package/src/headers/24/histogram.h +279 -0
- package/src/headers/24/http3.h +44 -0
- package/src/headers/{18 → 24}/inspector_agent.h +23 -2
- package/src/headers/24/inspector_permission.h +31 -0
- package/src/headers/{18 → 24}/inspector_profiler.h +15 -15
- package/src/headers/24/io_agent.h +30 -0
- package/src/headers/{18 → 24}/js_native_api.h +74 -30
- package/src/headers/{16 → 24}/js_native_api_types.h +61 -10
- package/src/headers/{18 → 24}/js_native_api_v8.h +205 -160
- package/src/headers/{16 → 24}/js_native_api_v8_internals.h +12 -6
- package/src/headers/24/json_parser.h +40 -0
- package/src/headers/{18 → 24}/json_utils.h +19 -8
- package/src/headers/24/logstream.h +81 -0
- package/src/headers/24/main_thread_interface.h +116 -0
- package/src/headers/{16 → 24}/memory_tracker-inl.h +115 -17
- package/src/headers/{16 → 24}/memory_tracker.h +58 -9
- package/src/headers/24/module_wrap.h +229 -0
- package/src/headers/24/ncrypto.h +1625 -0
- package/src/headers/24/network_agent.h +118 -0
- package/src/headers/24/network_inspector.h +45 -0
- package/src/headers/24/network_resource_manager.h +29 -0
- package/src/headers/{16 → 24}/node.h +560 -72
- package/src/headers/24/node_api.h +269 -0
- package/src/headers/24/node_api_internals.h +46 -0
- package/src/headers/{16 → 24}/node_api_types.h +13 -11
- package/src/headers/24/node_binding.h +163 -0
- package/src/headers/{16 → 24}/node_blob.h +46 -78
- package/src/headers/{16 → 24}/node_bob-inl.h +1 -2
- package/src/headers/{16 → 24}/node_bob.h +2 -6
- package/src/headers/{14 → 24}/node_buffer.h +1 -1
- package/src/headers/24/node_builtins.h +223 -0
- package/src/headers/24/node_config_file.h +65 -0
- package/src/headers/{14 → 24}/node_constants.h +3 -5
- package/src/headers/24/node_context_data.h +168 -0
- package/src/headers/24/node_contextify.h +261 -0
- package/src/headers/{18 → 24}/node_crypto.h +7 -2
- package/src/headers/24/node_debug.h +25 -0
- package/src/headers/24/node_dotenv.h +45 -0
- package/src/headers/{16 → 24}/node_errors.h +146 -32
- package/src/headers/24/node_exit_code.h +54 -0
- package/src/headers/{18 → 24}/node_external_reference.h +44 -22
- package/src/headers/{16 → 24}/node_file-inl.h +156 -50
- package/src/headers/{18 → 24}/node_file.h +129 -15
- package/src/headers/{16 → 24}/node_http2.h +53 -18
- package/src/headers/{14 → 24}/node_http2_state.h +35 -25
- package/src/headers/{16 → 24}/node_http_common-inl.h +8 -10
- package/src/headers/{16 → 24}/node_http_common.h +63 -59
- package/src/headers/{18 → 24}/node_i18n.h +5 -18
- package/src/headers/{16 → 24}/node_internals.h +131 -76
- package/src/headers/24/node_json.h +24 -0
- package/src/headers/24/node_large_page.h +34 -0
- package/src/headers/24/node_locks.h +180 -0
- package/src/headers/{14 → 24}/node_main_instance.h +15 -44
- package/src/headers/{16 → 24}/node_mem-inl.h +7 -7
- package/src/headers/{16 → 24}/node_messaging.h +27 -11
- package/src/headers/{16 → 24}/node_metadata.h +44 -2
- package/src/headers/24/node_modules.h +93 -0
- package/src/headers/{16 → 24}/node_options-inl.h +93 -46
- package/src/headers/{16 → 24}/node_options.h +251 -63
- package/src/headers/{16 → 24}/node_perf.h +6 -25
- package/src/headers/{16 → 24}/node_perf_common.h +23 -10
- package/src/headers/24/node_platform.h +286 -0
- package/src/headers/24/node_process.h +111 -0
- package/src/headers/24/node_realm-inl.h +153 -0
- package/src/headers/24/node_realm.h +236 -0
- package/src/headers/{18 → 24}/node_report.h +13 -17
- package/src/headers/{18 → 24}/node_revert.h +3 -3
- package/src/headers/{18 → 24}/node_root_certs.h +1010 -710
- package/src/headers/24/node_sea.h +74 -0
- package/src/headers/24/node_shadow_realm.h +46 -0
- package/src/headers/24/node_snapshot_builder.h +57 -0
- package/src/headers/24/node_snapshotable.h +174 -0
- package/src/headers/{16 → 24}/node_sockaddr-inl.h +11 -20
- package/src/headers/{16 → 24}/node_sockaddr.h +9 -20
- package/src/headers/24/node_sqlite.h +270 -0
- package/src/headers/{18 → 24}/node_stat_watcher.h +2 -1
- package/src/headers/24/node_string.h +101 -0
- package/src/headers/24/node_task_runner.h +92 -0
- package/src/headers/24/node_threadsafe_cow-inl.h +54 -0
- package/src/headers/24/node_threadsafe_cow.h +105 -0
- package/src/headers/24/node_union_bytes.h +81 -0
- package/src/headers/24/node_url.h +101 -0
- package/src/headers/24/node_url_pattern.h +118 -0
- package/src/headers/24/node_v8.h +77 -0
- package/src/headers/{18 → 24}/node_v8_platform-inl.h +22 -31
- package/src/headers/{18 → 24}/node_version.h +18 -6
- package/src/headers/24/node_wasi.h +185 -0
- package/src/headers/24/node_wasm_web_api.h +55 -0
- package/src/headers/{18 → 24}/node_watchdog.h +2 -0
- package/src/headers/24/node_webstorage.h +60 -0
- package/src/headers/{16 → 24}/node_worker.h +24 -10
- package/src/headers/24/packet.h +155 -0
- package/src/headers/24/path.h +33 -0
- package/src/headers/24/permission/addon_permission.h +31 -0
- package/src/headers/24/permission/child_process_permission.h +31 -0
- package/src/headers/24/permission/fs_permission.h +167 -0
- package/src/headers/24/permission/inspector_permission.h +31 -0
- package/src/headers/24/permission/permission.h +100 -0
- package/src/headers/24/permission/permission_base.h +65 -0
- package/src/headers/24/permission/wasi_permission.h +31 -0
- package/src/headers/24/permission/worker_permission.h +31 -0
- package/src/headers/24/permission.h +100 -0
- package/src/headers/24/permission_base.h +65 -0
- package/src/headers/24/preferredaddress.h +72 -0
- package/src/headers/24/protocol_helper.h +27 -0
- package/src/headers/24/queue.h +306 -0
- package/src/headers/{18 → 24}/req_wrap-inl.h +12 -6
- package/src/headers/{16 → 24}/req_wrap.h +3 -1
- package/src/headers/24/runtime_agent.h +41 -0
- package/src/headers/24/session.h +528 -0
- package/src/headers/24/sessionticket.h +108 -0
- package/src/headers/{18 → 24}/spawn_sync.h +9 -8
- package/src/headers/{16 → 24}/stream_base-inl.h +3 -133
- package/src/headers/{16 → 24}/stream_base.h +43 -19
- package/src/headers/{16 → 24}/stream_pipe.h +7 -4
- package/src/headers/{18 → 24}/stream_wrap.h +2 -3
- package/src/headers/24/streams.h +370 -0
- package/src/headers/{16 → 24}/string_bytes.h +8 -21
- package/src/headers/{18 → 24}/string_decoder-inl.h +0 -6
- package/src/headers/{18 → 24}/string_decoder.h +0 -1
- package/src/headers/24/target_agent.h +75 -0
- package/src/headers/{16 → 24}/tcp_wrap.h +3 -1
- package/src/headers/{14 → 24}/threadpoolwork-inl.h +14 -1
- package/src/headers/24/timer_wrap-inl.h +32 -0
- package/src/headers/{16 → 24}/timer_wrap.h +7 -4
- package/src/headers/24/timers.h +75 -0
- package/src/headers/24/tlscontext.h +228 -0
- package/src/headers/24/tokens.h +256 -0
- package/src/headers/{14/tracing → 24}/trace_event.h +7 -5
- package/src/headers/24/traced_value.h +129 -0
- package/src/headers/24/tracing_agent.h +43 -0
- package/src/headers/24/transportparams.h +166 -0
- package/src/headers/{16 → 24}/tty_wrap.h +0 -1
- package/src/headers/{18 → 24}/udp_wrap.h +8 -5
- package/src/headers/24/undici_version.h +6 -0
- package/src/headers/{16 → 24}/util-inl.h +267 -131
- package/src/headers/{16 → 24}/util.h +338 -146
- package/src/headers/24/v8-external-memory-accounter.h +60 -0
- package/src/headers/24/v8-fast-api-calls.h +819 -0
- package/src/headers/24/v8-inspector.h +426 -0
- package/src/headers/24/wasi_permission.h +31 -0
- package/src/headers/24/worker_agent.h +40 -0
- package/src/headers/24/worker_inspector.h +124 -0
- package/src/headers/24/worker_permission.h +31 -0
- package/src/headers/24/zlib_version.h +6 -0
- package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
- package/dist/bindings/cws_darwin_x64_node83.node +0 -0
- package/dist/bindings/cws_darwin_x64_node93.node +0 -0
- package/dist/bindings/cws_linux_arm64_node83.node +0 -0
- package/dist/bindings/cws_linux_arm64_node93.node +0 -0
- package/dist/bindings/cws_linux_x64_node83.node +0 -0
- package/dist/bindings/cws_linux_x64_node93.node +0 -0
- package/src/headers/14/aliased_buffer.h +0 -263
- package/src/headers/14/allocated_buffer-inl.h +0 -110
- package/src/headers/14/allocated_buffer.h +0 -73
- package/src/headers/14/async_wrap.h +0 -230
- package/src/headers/14/base64.h +0 -183
- package/src/headers/14/base_object-inl.h +0 -371
- package/src/headers/14/base_object.h +0 -281
- package/src/headers/14/callback_queue-inl.h +0 -97
- package/src/headers/14/callback_queue.h +0 -78
- package/src/headers/14/debug_utils.h +0 -181
- package/src/headers/14/env.h +0 -1388
- package/src/headers/14/handle_wrap.h +0 -117
- package/src/headers/14/histogram-inl.h +0 -83
- package/src/headers/14/histogram.h +0 -98
- package/src/headers/14/inspector_agent.h +0 -149
- package/src/headers/14/inspector_profiler.h +0 -137
- package/src/headers/14/js_native_api.h +0 -544
- package/src/headers/14/js_native_api_types.h +0 -143
- package/src/headers/14/js_native_api_v8.h +0 -301
- package/src/headers/14/js_native_api_v8_internals.h +0 -38
- package/src/headers/14/json_utils.h +0 -161
- package/src/headers/14/memory_tracker-inl.h +0 -355
- package/src/headers/14/module_wrap.h +0 -99
- package/src/headers/14/node.h +0 -1032
- package/src/headers/14/node_api.h +0 -255
- package/src/headers/14/node_api_types.h +0 -44
- package/src/headers/14/node_binding.h +0 -99
- package/src/headers/14/node_context_data.h +0 -44
- package/src/headers/14/node_contextify.h +0 -161
- package/src/headers/14/node_crypto.h +0 -865
- package/src/headers/14/node_crypto_bio.h +0 -195
- package/src/headers/14/node_crypto_clienthello-inl.h +0 -91
- package/src/headers/14/node_crypto_clienthello.h +0 -132
- package/src/headers/14/node_crypto_common.h +0 -138
- package/src/headers/14/node_crypto_groups.h +0 -415
- package/src/headers/14/node_dtrace.h +0 -86
- package/src/headers/14/node_errors.h +0 -214
- package/src/headers/14/node_file-inl.h +0 -306
- package/src/headers/14/node_file.h +0 -417
- package/src/headers/14/node_http2.h +0 -1191
- package/src/headers/14/node_http_common-inl.h +0 -194
- package/src/headers/14/node_http_common.h +0 -529
- package/src/headers/14/node_i18n.h +0 -144
- package/src/headers/14/node_internals.h +0 -405
- package/src/headers/14/node_mem.h +0 -45
- package/src/headers/14/node_messaging.h +0 -303
- package/src/headers/14/node_metadata.h +0 -109
- package/src/headers/14/node_mutex.h +0 -247
- package/src/headers/14/node_native_module.h +0 -101
- package/src/headers/14/node_native_module_env.h +0 -66
- package/src/headers/14/node_options-inl.h +0 -451
- package/src/headers/14/node_options.h +0 -481
- package/src/headers/14/node_perf.h +0 -181
- package/src/headers/14/node_perf_common.h +0 -97
- package/src/headers/14/node_platform.h +0 -189
- package/src/headers/14/node_process.h +0 -40
- package/src/headers/14/node_report.h +0 -47
- package/src/headers/14/node_revert.h +0 -72
- package/src/headers/14/node_root_certs.h +0 -3458
- package/src/headers/14/node_sockaddr-inl.h +0 -170
- package/src/headers/14/node_sockaddr.h +0 -123
- package/src/headers/14/node_stat_watcher.h +0 -70
- package/src/headers/14/node_union_bytes.h +0 -103
- package/src/headers/14/node_url.h +0 -188
- package/src/headers/14/node_version.h +0 -98
- package/src/headers/14/node_wasi.h +0 -108
- package/src/headers/14/node_win32_etw_provider-inl.h +0 -287
- package/src/headers/14/node_win32_etw_provider.h +0 -99
- package/src/headers/14/node_worker.h +0 -141
- package/src/headers/14/pipe_wrap.h +0 -78
- package/src/headers/14/req_wrap-inl.h +0 -170
- package/src/headers/14/req_wrap.h +0 -77
- package/src/headers/14/stream_base-inl.h +0 -275
- package/src/headers/14/stream_base.h +0 -434
- package/src/headers/14/stream_pipe.h +0 -73
- package/src/headers/14/stream_wrap.h +0 -130
- package/src/headers/14/string_bytes.h +0 -129
- package/src/headers/14/string_decoder.h +0 -50
- package/src/headers/14/string_search.h +0 -638
- package/src/headers/14/tcp_wrap.h +0 -101
- package/src/headers/14/tls_wrap.h +0 -222
- package/src/headers/14/tracing/agent.h +0 -195
- package/src/headers/14/tracing/traced_value.h +0 -70
- package/src/headers/14/tty_wrap.h +0 -64
- package/src/headers/14/udp_wrap.h +0 -227
- package/src/headers/14/util-inl.h +0 -566
- package/src/headers/14/util.h +0 -804
- package/src/headers/14/v8abbr.h +0 -124
- package/src/headers/16/aliased_buffer.h +0 -315
- package/src/headers/16/allocated_buffer-inl.h +0 -110
- package/src/headers/16/allocated_buffer.h +0 -73
- package/src/headers/16/async_wrap-inl.h +0 -94
- package/src/headers/16/base64-inl.h +0 -189
- package/src/headers/16/base64.h +0 -69
- package/src/headers/16/crypto/crypto_aes.h +0 -89
- package/src/headers/16/crypto/crypto_cipher.h +0 -286
- package/src/headers/16/crypto/crypto_common.h +0 -187
- package/src/headers/16/crypto/crypto_dh.h +0 -157
- package/src/headers/16/crypto/crypto_dsa.h +0 -76
- package/src/headers/16/crypto/crypto_ec.h +0 -169
- package/src/headers/16/crypto/crypto_groups.h +0 -415
- package/src/headers/16/crypto/crypto_hash.h +0 -89
- package/src/headers/16/crypto/crypto_hkdf.h +0 -66
- package/src/headers/16/crypto/crypto_hmac.h +0 -94
- package/src/headers/16/crypto/crypto_keygen.h +0 -301
- package/src/headers/16/crypto/crypto_pbkdf2.h +0 -76
- package/src/headers/16/crypto/crypto_random.h +0 -130
- package/src/headers/16/crypto/crypto_rsa.h +0 -141
- package/src/headers/16/crypto/crypto_scrypt.h +0 -87
- package/src/headers/16/crypto/crypto_sig.h +0 -167
- package/src/headers/16/crypto/crypto_spkac.h +0 -20
- package/src/headers/16/crypto/crypto_timing.h +0 -20
- package/src/headers/16/crypto/crypto_x509.h +0 -141
- package/src/headers/16/env.h +0 -1629
- package/src/headers/16/histogram.h +0 -216
- package/src/headers/16/js_native_api.h +0 -561
- package/src/headers/16/js_native_api_v8.h +0 -451
- package/src/headers/16/node.d +0 -315
- package/src/headers/16/node.stp +0 -146
- package/src/headers/16/node_api.h +0 -275
- package/src/headers/16/node_api_internals.h +0 -30
- package/src/headers/16/node_binding.h +0 -99
- package/src/headers/16/node_buffer.h +0 -92
- package/src/headers/16/node_constants.h +0 -84
- package/src/headers/16/node_context_data.h +0 -44
- package/src/headers/16/node_contextify.h +0 -196
- package/src/headers/16/node_dtrace.h +0 -86
- package/src/headers/16/node_external_reference.h +0 -129
- package/src/headers/16/node_main_instance.h +0 -103
- package/src/headers/16/node_native_module.h +0 -101
- package/src/headers/16/node_native_module_env.h +0 -68
- package/src/headers/16/node_platform.h +0 -192
- package/src/headers/16/node_process.h +0 -43
- package/src/headers/16/node_provider.d +0 -80
- package/src/headers/16/node_snapshotable.h +0 -137
- package/src/headers/16/node_union_bytes.h +0 -103
- package/src/headers/16/node_url.h +0 -205
- package/src/headers/16/node_v8.h +0 -41
- package/src/headers/16/node_v8_platform-inl.h +0 -194
- package/src/headers/16/node_wasi.h +0 -108
- package/src/headers/16/node_watchdog.h +0 -152
- package/src/headers/16/node_win32_etw_provider-inl.h +0 -288
- package/src/headers/16/node_win32_etw_provider.h +0 -99
- package/src/headers/16/spawn_sync.h +0 -242
- package/src/headers/16/string_decoder-inl.h +0 -37
- package/src/headers/16/string_search.h +0 -638
- package/src/headers/16/threadpoolwork-inl.h +0 -57
- package/src/headers/16/tracing/node_trace_buffer.h +0 -83
- package/src/headers/16/tracing/node_trace_writer.h +0 -75
- package/src/headers/16/tracing/trace_event.h +0 -720
- package/src/headers/16/tracing/traced_value.h +0 -70
- package/src/headers/16/v8abbr.h +0 -123
- package/src/headers/16/v8ustack.d +0 -695
- package/src/headers/18/aliased_buffer.h +0 -315
- package/src/headers/18/aliased_struct-inl.h +0 -54
- package/src/headers/18/aliased_struct.h +0 -63
- package/src/headers/18/base64-inl.h +0 -189
- package/src/headers/18/base64.h +0 -69
- package/src/headers/18/connect_wrap.h +0 -26
- package/src/headers/18/connection_wrap.h +0 -30
- package/src/headers/18/crypto/crypto_aes.h +0 -89
- package/src/headers/18/crypto/crypto_bio.h +0 -194
- package/src/headers/18/crypto/crypto_clienthello-inl.h +0 -90
- package/src/headers/18/crypto/crypto_common.h +0 -151
- package/src/headers/18/crypto/crypto_groups.h +0 -415
- package/src/headers/18/crypto/crypto_x509.h +0 -143
- package/src/headers/18/debug_utils-inl.h +0 -223
- package/src/headers/18/diagnosticfilename-inl.h +0 -33
- package/src/headers/18/env-inl.h +0 -1308
- package/src/headers/18/env.h +0 -1667
- package/src/headers/18/inspector_io.h +0 -78
- package/src/headers/18/inspector_socket.h +0 -60
- package/src/headers/18/inspector_socket_server.h +0 -110
- package/src/headers/18/js_stream.h +0 -52
- package/src/headers/18/memory_tracker.h +0 -284
- package/src/headers/18/module_wrap.h +0 -116
- package/src/headers/18/node_binding.h +0 -99
- package/src/headers/18/node_context_data.h +0 -44
- package/src/headers/18/node_contextify.h +0 -196
- package/src/headers/18/node_dir.h +0 -52
- package/src/headers/18/node_dtrace.h +0 -86
- package/src/headers/18/node_http2_state.h +0 -149
- package/src/headers/18/node_mem-inl.h +0 -112
- package/src/headers/18/node_native_module.h +0 -109
- package/src/headers/18/node_native_module_env.h +0 -71
- package/src/headers/18/node_object_wrap.h +0 -132
- package/src/headers/18/node_snapshot_builder.h +0 -43
- package/src/headers/18/node_snapshotable.h +0 -130
- package/src/headers/18/node_union_bytes.h +0 -103
- package/src/headers/18/node_url.h +0 -205
- package/src/headers/18/node_v8.h +0 -41
- package/src/headers/18/node_wasi.h +0 -108
- package/src/headers/18/node_win32_etw_provider-inl.h +0 -288
- package/src/headers/18/node_win32_etw_provider.h +0 -99
- package/src/headers/18/string_search.h +0 -638
- package/src/headers/18/tracing/node_trace_buffer.h +0 -83
- package/src/headers/18/tracing/node_trace_writer.h +0 -75
- package/src/headers/18/tracing/trace_event_common.h +0 -1109
- package/src/headers/18/tracing/traced_value.h +0 -70
- package/src/headers/18/v8abbr.h +0 -123
- /package/src/headers/{14 → 22}/aliased_struct-inl.h +0 -0
- /package/src/headers/{14 → 22}/aliased_struct.h +0 -0
- /package/src/headers/{16 → 22}/callback_queue-inl.h +0 -0
- /package/src/headers/{14 → 22}/connect_wrap.h +0 -0
- /package/src/headers/{14 → 22}/connection_wrap.h +0 -0
- /package/src/headers/{14 → 22}/diagnosticfilename-inl.h +0 -0
- /package/src/headers/{18 → 22}/histogram-inl.h +0 -0
- /package/src/headers/{14 → 22}/inspector_io.h +0 -0
- /package/src/headers/{14 → 22}/inspector_socket.h +0 -0
- /package/src/headers/{14 → 22}/inspector_socket_server.h +0 -0
- /package/src/headers/{14 → 22}/js_stream.h +0 -0
- /package/src/headers/{14 → 22}/node_dir.h +0 -0
- /package/src/headers/{14 → 22}/node_mem-inl.h +0 -0
- /package/src/headers/{16 → 22}/node_mem.h +0 -0
- /package/src/headers/{16 → 22}/node_mutex.h +0 -0
- /package/src/headers/{14 → 22}/node_object_wrap.h +0 -0
- /package/src/headers/{16 → 22}/node_process-inl.h +0 -0
- /package/src/headers/{18 → 22}/node_sockaddr-inl.h +0 -0
- /package/src/headers/{18 → 22}/node_wasm_web_api.h +0 -0
- /package/src/headers/{16 → 22}/pipe_wrap.h +0 -0
- /package/src/headers/{18 → 22}/req_wrap.h +0 -0
- /package/src/headers/{18 → 22}/timer_wrap-inl.h +0 -0
- /package/src/headers/{18 → 22}/timer_wrap.h +0 -0
- /package/src/headers/{18 → 22}/tracing/agent.h +0 -0
- /package/src/headers/{14 → 22}/tracing/trace_event_common.h +0 -0
- /package/src/headers/{18 → 22}/tty_wrap.h +0 -0
- /package/src/headers/{16 → 24}/aliased_struct-inl.h +0 -0
- /package/src/headers/{16 → 24}/aliased_struct.h +0 -0
- /package/src/headers/{18 → 24}/callback_queue-inl.h +0 -0
- /package/src/headers/{16 → 24}/connect_wrap.h +0 -0
- /package/src/headers/{16 → 24}/connection_wrap.h +0 -0
- /package/src/headers/{18 → 24}/crypto/crypto_spkac.h +0 -0
- /package/src/headers/{18 → 24}/crypto/crypto_timing.h +0 -0
- /package/src/headers/{16 → 24}/diagnosticfilename-inl.h +0 -0
- /package/src/headers/{16 → 24}/inspector_io.h +0 -0
- /package/src/headers/{16 → 24}/inspector_socket.h +0 -0
- /package/src/headers/{16 → 24}/inspector_socket_server.h +0 -0
- /package/src/headers/{16 → 24}/js_stream.h +0 -0
- /package/src/headers/{16 → 24}/node_dir.h +0 -0
- /package/src/headers/{18 → 24}/node_mem.h +0 -0
- /package/src/headers/{18 → 24}/node_mutex.h +0 -0
- /package/src/headers/{16 → 24}/node_object_wrap.h +0 -0
- /package/src/headers/{18 → 24}/node_process-inl.h +0 -0
- /package/src/headers/{14/tracing → 24}/node_trace_buffer.h +0 -0
- /package/src/headers/{14/tracing → 24}/node_trace_writer.h +0 -0
- /package/src/headers/{18 → 24}/pipe_wrap.h +0 -0
- /package/src/headers/{16/tracing → 24}/trace_event_common.h +0 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
#ifndef SRC_PERMISSION_FS_PERMISSION_H_
|
|
2
|
+
#define SRC_PERMISSION_FS_PERMISSION_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "v8.h"
|
|
7
|
+
|
|
8
|
+
#include <unordered_map>
|
|
9
|
+
#include "permission/permission_base.h"
|
|
10
|
+
#include "util.h"
|
|
11
|
+
|
|
12
|
+
namespace node {
|
|
13
|
+
|
|
14
|
+
namespace permission {
|
|
15
|
+
|
|
16
|
+
class FSPermission final : public PermissionBase {
|
|
17
|
+
public:
|
|
18
|
+
void Apply(Environment* env,
|
|
19
|
+
const std::vector<std::string>& allow,
|
|
20
|
+
PermissionScope scope) override;
|
|
21
|
+
bool is_granted(Environment* env,
|
|
22
|
+
PermissionScope perm,
|
|
23
|
+
const std::string_view& param) const override;
|
|
24
|
+
|
|
25
|
+
struct RadixTree {
|
|
26
|
+
struct Node {
|
|
27
|
+
std::string prefix;
|
|
28
|
+
std::unordered_map<char, Node*> children;
|
|
29
|
+
Node* wildcard_child;
|
|
30
|
+
bool is_leaf;
|
|
31
|
+
|
|
32
|
+
explicit Node(const std::string& pre)
|
|
33
|
+
: prefix(pre), wildcard_child(nullptr), is_leaf(false) {}
|
|
34
|
+
|
|
35
|
+
Node() : wildcard_child(nullptr), is_leaf(false) {}
|
|
36
|
+
|
|
37
|
+
Node* CreateChild(const std::string& path_prefix) {
|
|
38
|
+
if (path_prefix.empty() && !is_leaf) {
|
|
39
|
+
is_leaf = true;
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
CHECK(!path_prefix.empty());
|
|
44
|
+
char label = path_prefix[0];
|
|
45
|
+
|
|
46
|
+
Node* child = children[label];
|
|
47
|
+
if (child == nullptr) {
|
|
48
|
+
children[label] = new Node(path_prefix);
|
|
49
|
+
return children[label];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// swap prefix
|
|
53
|
+
size_t i = 0;
|
|
54
|
+
size_t prefix_len = path_prefix.length();
|
|
55
|
+
for (; i < child->prefix.length(); ++i) {
|
|
56
|
+
if (i > prefix_len || path_prefix[i] != child->prefix[i]) {
|
|
57
|
+
std::string parent_prefix = child->prefix.substr(0, i);
|
|
58
|
+
std::string child_prefix = child->prefix.substr(i);
|
|
59
|
+
|
|
60
|
+
child->prefix = child_prefix;
|
|
61
|
+
Node* split_child = new Node(parent_prefix);
|
|
62
|
+
split_child->children[child_prefix[0]] = child;
|
|
63
|
+
children[parent_prefix[0]] = split_child;
|
|
64
|
+
|
|
65
|
+
return split_child->CreateChild(path_prefix.substr(i));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
child->is_leaf = true;
|
|
69
|
+
return child->CreateChild(path_prefix.substr(i));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
Node* CreateWildcardChild() {
|
|
73
|
+
if (wildcard_child != nullptr) {
|
|
74
|
+
return wildcard_child;
|
|
75
|
+
}
|
|
76
|
+
wildcard_child = new Node();
|
|
77
|
+
return wildcard_child;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
Node* NextNode(const std::string& path, size_t idx) const {
|
|
81
|
+
if (idx >= path.length()) {
|
|
82
|
+
return nullptr;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// wildcard node takes precedence
|
|
86
|
+
if (children.size() > 1) {
|
|
87
|
+
auto it = children.find('*');
|
|
88
|
+
if (it != children.end()) {
|
|
89
|
+
return it->second;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
auto it = children.find(path[idx]);
|
|
94
|
+
if (it == children.end()) {
|
|
95
|
+
return nullptr;
|
|
96
|
+
}
|
|
97
|
+
auto child = it->second;
|
|
98
|
+
// match prefix
|
|
99
|
+
size_t prefix_len = child->prefix.length();
|
|
100
|
+
for (size_t i = 0; i < path.length(); ++i) {
|
|
101
|
+
if (i >= prefix_len || child->prefix[i] == '*') {
|
|
102
|
+
return child;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Handle optional trailing
|
|
106
|
+
// path = /home/subdirectory
|
|
107
|
+
// child = subdirectory/*
|
|
108
|
+
if (idx >= path.length() &&
|
|
109
|
+
child->prefix[i] == node::kPathSeparator) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (path[idx++] != child->prefix[i]) {
|
|
114
|
+
return nullptr;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return child;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// A node can be a *end* node and have children
|
|
121
|
+
// E.g: */slower*, */slown* are inserted:
|
|
122
|
+
// /slow
|
|
123
|
+
// ---> er
|
|
124
|
+
// ---> n
|
|
125
|
+
// If */slow* is inserted right after, it will create an
|
|
126
|
+
// empty node
|
|
127
|
+
// /slow
|
|
128
|
+
// ---> '\000' ASCII (0) || \0
|
|
129
|
+
// ---> er
|
|
130
|
+
// ---> n
|
|
131
|
+
bool IsEndNode() const {
|
|
132
|
+
if (children.empty()) {
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
return is_leaf;
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
RadixTree();
|
|
140
|
+
~RadixTree();
|
|
141
|
+
void Insert(const std::string& s);
|
|
142
|
+
bool Lookup(const std::string_view& s) const { return Lookup(s, false); }
|
|
143
|
+
bool Lookup(const std::string_view& s, bool when_empty_return) const;
|
|
144
|
+
|
|
145
|
+
private:
|
|
146
|
+
Node* root_node_;
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
private:
|
|
150
|
+
void GrantAccess(PermissionScope scope, const std::string& param);
|
|
151
|
+
// fs granted on startup
|
|
152
|
+
RadixTree granted_in_fs_;
|
|
153
|
+
RadixTree granted_out_fs_;
|
|
154
|
+
|
|
155
|
+
bool deny_all_in_ = true;
|
|
156
|
+
bool deny_all_out_ = true;
|
|
157
|
+
|
|
158
|
+
bool allow_all_in_ = false;
|
|
159
|
+
bool allow_all_out_ = false;
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
} // namespace permission
|
|
163
|
+
|
|
164
|
+
} // namespace node
|
|
165
|
+
|
|
166
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
167
|
+
#endif // SRC_PERMISSION_FS_PERMISSION_H_
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#ifndef SRC_PERMISSION_INSPECTOR_PERMISSION_H_
|
|
2
|
+
#define SRC_PERMISSION_INSPECTOR_PERMISSION_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include <string>
|
|
7
|
+
#include "permission/permission_base.h"
|
|
8
|
+
|
|
9
|
+
namespace node {
|
|
10
|
+
|
|
11
|
+
namespace permission {
|
|
12
|
+
|
|
13
|
+
class InspectorPermission final : public PermissionBase {
|
|
14
|
+
public:
|
|
15
|
+
void Apply(Environment* env,
|
|
16
|
+
const std::vector<std::string>& allow,
|
|
17
|
+
PermissionScope scope) override;
|
|
18
|
+
bool is_granted(Environment* env,
|
|
19
|
+
PermissionScope perm,
|
|
20
|
+
const std::string_view& param = "") const override;
|
|
21
|
+
|
|
22
|
+
private:
|
|
23
|
+
bool deny_all_;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
} // namespace permission
|
|
27
|
+
|
|
28
|
+
} // namespace node
|
|
29
|
+
|
|
30
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
31
|
+
#endif // SRC_PERMISSION_INSPECTOR_PERMISSION_H_
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
#ifndef SRC_PERMISSION_PERMISSION_H_
|
|
2
|
+
#define SRC_PERMISSION_PERMISSION_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "debug_utils.h"
|
|
7
|
+
#include "node_options.h"
|
|
8
|
+
#include "permission/child_process_permission.h"
|
|
9
|
+
#include "permission/fs_permission.h"
|
|
10
|
+
#include "permission/inspector_permission.h"
|
|
11
|
+
#include "permission/permission_base.h"
|
|
12
|
+
#include "permission/wasi_permission.h"
|
|
13
|
+
#include "permission/worker_permission.h"
|
|
14
|
+
#include "v8.h"
|
|
15
|
+
|
|
16
|
+
#include <string_view>
|
|
17
|
+
#include <unordered_map>
|
|
18
|
+
|
|
19
|
+
namespace node {
|
|
20
|
+
|
|
21
|
+
class Environment;
|
|
22
|
+
|
|
23
|
+
namespace fs {
|
|
24
|
+
class FSReqBase;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
namespace permission {
|
|
28
|
+
|
|
29
|
+
#define THROW_IF_INSUFFICIENT_PERMISSIONS(env, perm_, resource_, ...) \
|
|
30
|
+
do { \
|
|
31
|
+
if (!env->permission()->is_granted(env, perm_, resource_)) [[unlikely]] { \
|
|
32
|
+
node::permission::Permission::ThrowAccessDenied( \
|
|
33
|
+
(env), perm_, resource_); \
|
|
34
|
+
return __VA_ARGS__; \
|
|
35
|
+
} \
|
|
36
|
+
} while (0)
|
|
37
|
+
|
|
38
|
+
#define ASYNC_THROW_IF_INSUFFICIENT_PERMISSIONS( \
|
|
39
|
+
env, wrap, perm_, resource_, ...) \
|
|
40
|
+
do { \
|
|
41
|
+
if (!env->permission()->is_granted(env, perm_, resource_)) [[unlikely]] { \
|
|
42
|
+
node::permission::Permission::AsyncThrowAccessDenied( \
|
|
43
|
+
(env), wrap, perm_, resource_); \
|
|
44
|
+
return __VA_ARGS__; \
|
|
45
|
+
} \
|
|
46
|
+
} while (0)
|
|
47
|
+
|
|
48
|
+
class Permission {
|
|
49
|
+
public:
|
|
50
|
+
Permission();
|
|
51
|
+
|
|
52
|
+
FORCE_INLINE bool is_granted(Environment* env,
|
|
53
|
+
const PermissionScope permission,
|
|
54
|
+
const std::string_view& res = "") const {
|
|
55
|
+
if (!enabled_) [[likely]] {
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
return is_scope_granted(env, permission, res);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
FORCE_INLINE bool enabled() const { return enabled_; }
|
|
62
|
+
|
|
63
|
+
static PermissionScope StringToPermission(const std::string& perm);
|
|
64
|
+
static const char* PermissionToString(PermissionScope perm);
|
|
65
|
+
static void ThrowAccessDenied(Environment* env,
|
|
66
|
+
PermissionScope perm,
|
|
67
|
+
const std::string_view& res);
|
|
68
|
+
static void AsyncThrowAccessDenied(Environment* env,
|
|
69
|
+
fs::FSReqBase* req_wrap,
|
|
70
|
+
PermissionScope perm,
|
|
71
|
+
const std::string_view& res);
|
|
72
|
+
|
|
73
|
+
// CLI Call
|
|
74
|
+
void Apply(Environment* env,
|
|
75
|
+
const std::vector<std::string>& allow,
|
|
76
|
+
PermissionScope scope);
|
|
77
|
+
void EnablePermissions();
|
|
78
|
+
|
|
79
|
+
private:
|
|
80
|
+
COLD_NOINLINE bool is_scope_granted(Environment* env,
|
|
81
|
+
const PermissionScope permission,
|
|
82
|
+
const std::string_view& res = "") const {
|
|
83
|
+
auto perm_node = nodes_.find(permission);
|
|
84
|
+
if (perm_node != nodes_.end()) {
|
|
85
|
+
return perm_node->second->is_granted(env, permission, res);
|
|
86
|
+
}
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
std::unordered_map<PermissionScope, std::shared_ptr<PermissionBase>> nodes_;
|
|
91
|
+
bool enabled_;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
} // namespace permission
|
|
95
|
+
|
|
96
|
+
} // namespace node
|
|
97
|
+
|
|
98
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
99
|
+
#endif // SRC_PERMISSION_PERMISSION_H_
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#ifndef SRC_PERMISSION_PERMISSION_BASE_H_
|
|
2
|
+
#define SRC_PERMISSION_PERMISSION_BASE_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include <map>
|
|
7
|
+
#include <string>
|
|
8
|
+
#include <string_view>
|
|
9
|
+
#include "v8.h"
|
|
10
|
+
|
|
11
|
+
namespace node {
|
|
12
|
+
|
|
13
|
+
class Environment;
|
|
14
|
+
|
|
15
|
+
namespace permission {
|
|
16
|
+
|
|
17
|
+
#define FILESYSTEM_PERMISSIONS(V) \
|
|
18
|
+
V(FileSystem, "fs", PermissionsRoot) \
|
|
19
|
+
V(FileSystemRead, "fs.read", FileSystem) \
|
|
20
|
+
V(FileSystemWrite, "fs.write", FileSystem)
|
|
21
|
+
|
|
22
|
+
#define CHILD_PROCESS_PERMISSIONS(V) V(ChildProcess, "child", PermissionsRoot)
|
|
23
|
+
|
|
24
|
+
#define WASI_PERMISSIONS(V) V(WASI, "wasi", PermissionsRoot)
|
|
25
|
+
|
|
26
|
+
#define WORKER_THREADS_PERMISSIONS(V) \
|
|
27
|
+
V(WorkerThreads, "worker", PermissionsRoot)
|
|
28
|
+
|
|
29
|
+
#define INSPECTOR_PERMISSIONS(V) V(Inspector, "inspector", PermissionsRoot)
|
|
30
|
+
|
|
31
|
+
#define PERMISSIONS(V) \
|
|
32
|
+
FILESYSTEM_PERMISSIONS(V) \
|
|
33
|
+
CHILD_PROCESS_PERMISSIONS(V) \
|
|
34
|
+
WASI_PERMISSIONS(V) \
|
|
35
|
+
WORKER_THREADS_PERMISSIONS(V) \
|
|
36
|
+
INSPECTOR_PERMISSIONS(V)
|
|
37
|
+
|
|
38
|
+
#define V(name, _, __) k##name,
|
|
39
|
+
enum class PermissionScope {
|
|
40
|
+
kPermissionsRoot = -1,
|
|
41
|
+
PERMISSIONS(V) kPermissionsCount
|
|
42
|
+
};
|
|
43
|
+
#undef V
|
|
44
|
+
|
|
45
|
+
class PermissionBase {
|
|
46
|
+
public:
|
|
47
|
+
virtual void Apply(Environment* env,
|
|
48
|
+
const std::vector<std::string>& allow,
|
|
49
|
+
PermissionScope scope) = 0;
|
|
50
|
+
virtual bool is_granted(Environment* env,
|
|
51
|
+
PermissionScope perm,
|
|
52
|
+
const std::string_view& param = "") const = 0;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
} // namespace permission
|
|
56
|
+
|
|
57
|
+
} // namespace node
|
|
58
|
+
|
|
59
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
60
|
+
#endif // SRC_PERMISSION_PERMISSION_BASE_H_
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#ifndef SRC_PERMISSION_WASI_PERMISSION_H_
|
|
2
|
+
#define SRC_PERMISSION_WASI_PERMISSION_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include <vector>
|
|
7
|
+
#include "permission/permission_base.h"
|
|
8
|
+
|
|
9
|
+
namespace node {
|
|
10
|
+
|
|
11
|
+
namespace permission {
|
|
12
|
+
|
|
13
|
+
class WASIPermission final : public PermissionBase {
|
|
14
|
+
public:
|
|
15
|
+
void Apply(Environment* env,
|
|
16
|
+
const std::vector<std::string>& allow,
|
|
17
|
+
PermissionScope scope) override;
|
|
18
|
+
bool is_granted(Environment* env,
|
|
19
|
+
PermissionScope perm,
|
|
20
|
+
const std::string_view& param = "") const override;
|
|
21
|
+
|
|
22
|
+
private:
|
|
23
|
+
bool deny_all_;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
} // namespace permission
|
|
27
|
+
|
|
28
|
+
} // namespace node
|
|
29
|
+
|
|
30
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
31
|
+
#endif // SRC_PERMISSION_WASI_PERMISSION_H_
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#ifndef SRC_PERMISSION_WORKER_PERMISSION_H_
|
|
2
|
+
#define SRC_PERMISSION_WORKER_PERMISSION_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include <vector>
|
|
7
|
+
#include "permission/permission_base.h"
|
|
8
|
+
|
|
9
|
+
namespace node {
|
|
10
|
+
|
|
11
|
+
namespace permission {
|
|
12
|
+
|
|
13
|
+
class WorkerPermission final : public PermissionBase {
|
|
14
|
+
public:
|
|
15
|
+
void Apply(Environment* env,
|
|
16
|
+
const std::vector<std::string>& allow,
|
|
17
|
+
PermissionScope scope) override;
|
|
18
|
+
bool is_granted(Environment* env,
|
|
19
|
+
PermissionScope perm,
|
|
20
|
+
const std::string_view& param = "") const override;
|
|
21
|
+
|
|
22
|
+
private:
|
|
23
|
+
bool deny_all_;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
} // namespace permission
|
|
27
|
+
|
|
28
|
+
} // namespace node
|
|
29
|
+
|
|
30
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
31
|
+
#endif // SRC_PERMISSION_WORKER_PERMISSION_H_
|
|
@@ -20,13 +20,12 @@ ReqWrap<T>::ReqWrap(Environment* env,
|
|
|
20
20
|
AsyncWrap::ProviderType provider)
|
|
21
21
|
: AsyncWrap(env, object, provider),
|
|
22
22
|
ReqWrapBase(env) {
|
|
23
|
+
MakeWeak();
|
|
23
24
|
Reset();
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
template <typename T>
|
|
27
|
-
ReqWrap<T>::~ReqWrap() {
|
|
28
|
-
CHECK_EQ(false, persistent().IsEmpty());
|
|
29
|
-
}
|
|
28
|
+
ReqWrap<T>::~ReqWrap() {}
|
|
30
29
|
|
|
31
30
|
template <typename T>
|
|
32
31
|
void ReqWrap<T>::Dispatched() {
|
|
@@ -120,7 +119,8 @@ struct MakeLibuvRequestCallback<ReqT, void(*)(ReqT*, Args...)> {
|
|
|
120
119
|
using F = void(*)(ReqT* req, Args... args);
|
|
121
120
|
|
|
122
121
|
static void Wrapper(ReqT* req, Args... args) {
|
|
123
|
-
ReqWrap<ReqT
|
|
122
|
+
BaseObjectPtr<ReqWrap<ReqT>> req_wrap{ReqWrap<ReqT>::from_req(req)};
|
|
123
|
+
req_wrap->Detach();
|
|
124
124
|
req_wrap->env()->DecreaseWaitingRequestCounter();
|
|
125
125
|
F original_callback = reinterpret_cast<F>(req_wrap->original_callback_);
|
|
126
126
|
original_callback(req, args...);
|
|
@@ -138,7 +138,6 @@ template <typename T>
|
|
|
138
138
|
template <typename LibuvFunction, typename... Args>
|
|
139
139
|
int ReqWrap<T>::Dispatch(LibuvFunction fn, Args... args) {
|
|
140
140
|
Dispatched();
|
|
141
|
-
|
|
142
141
|
// This expands as:
|
|
143
142
|
//
|
|
144
143
|
// int err = fn(env()->event_loop(), req(), arg1, arg2, Wrapper, arg3, ...)
|
|
@@ -158,8 +157,10 @@ int ReqWrap<T>::Dispatch(LibuvFunction fn, Args... args) {
|
|
|
158
157
|
env()->event_loop(),
|
|
159
158
|
req(),
|
|
160
159
|
MakeLibuvRequestCallback<T, Args>::For(this, args)...);
|
|
161
|
-
if (err >= 0)
|
|
160
|
+
if (err >= 0) {
|
|
161
|
+
ClearWeak();
|
|
162
162
|
env()->IncreaseWaitingRequestCounter();
|
|
163
|
+
}
|
|
163
164
|
return err;
|
|
164
165
|
}
|
|
165
166
|
|
|
@@ -30,8 +30,7 @@
|
|
|
30
30
|
|
|
31
31
|
namespace node {
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
class ExternalReferenceRegistry;
|
|
35
34
|
class SyncProcessOutputBuffer;
|
|
36
35
|
class SyncProcessStdioPipe;
|
|
37
36
|
class SyncProcessRunner;
|
|
@@ -140,6 +139,7 @@ class SyncProcessRunner {
|
|
|
140
139
|
};
|
|
141
140
|
|
|
142
141
|
public:
|
|
142
|
+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
|
|
143
143
|
static void Initialize(v8::Local<v8::Object> target,
|
|
144
144
|
v8::Local<v8::Value> unused,
|
|
145
145
|
v8::Local<v8::Context> context,
|
|
@@ -155,7 +155,7 @@ class SyncProcessRunner {
|
|
|
155
155
|
inline Environment* env() const;
|
|
156
156
|
|
|
157
157
|
v8::MaybeLocal<v8::Object> Run(v8::Local<v8::Value> options);
|
|
158
|
-
v8::Maybe<
|
|
158
|
+
v8::Maybe<void> TryInitializeAndRunLoop(v8::Local<v8::Value> options);
|
|
159
159
|
void CloseHandlesAndDeleteLoop();
|
|
160
160
|
|
|
161
161
|
void CloseStdioPipes();
|
|
@@ -67,30 +67,6 @@ void StreamResource::PushStreamListener(StreamListener* listener) {
|
|
|
67
67
|
listener_ = listener;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
void StreamResource::RemoveStreamListener(StreamListener* listener) {
|
|
71
|
-
CHECK_NOT_NULL(listener);
|
|
72
|
-
|
|
73
|
-
StreamListener* previous;
|
|
74
|
-
StreamListener* current;
|
|
75
|
-
|
|
76
|
-
// Remove from the linked list.
|
|
77
|
-
for (current = listener_, previous = nullptr;
|
|
78
|
-
/* No loop condition because we want a crash if listener is not found */
|
|
79
|
-
; previous = current, current = current->previous_listener_) {
|
|
80
|
-
CHECK_NOT_NULL(current);
|
|
81
|
-
if (current == listener) {
|
|
82
|
-
if (previous != nullptr)
|
|
83
|
-
previous->previous_listener_ = current->previous_listener_;
|
|
84
|
-
else
|
|
85
|
-
listener_ = listener->previous_listener_;
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
listener->stream_ = nullptr;
|
|
91
|
-
listener->previous_listener_ = nullptr;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
70
|
uv_buf_t StreamResource::EmitAlloc(size_t suggested_size) {
|
|
95
71
|
DebugSealHandleScope seal_handle_scope;
|
|
96
72
|
return listener_->OnStreamAlloc(suggested_size);
|
|
@@ -122,101 +98,6 @@ StreamBase::StreamBase(Environment* env) : env_(env) {
|
|
|
122
98
|
PushStreamListener(&default_listener_);
|
|
123
99
|
}
|
|
124
100
|
|
|
125
|
-
int StreamBase::Shutdown(v8::Local<v8::Object> req_wrap_obj) {
|
|
126
|
-
Environment* env = stream_env();
|
|
127
|
-
|
|
128
|
-
v8::HandleScope handle_scope(env->isolate());
|
|
129
|
-
|
|
130
|
-
if (req_wrap_obj.IsEmpty()) {
|
|
131
|
-
if (!env->shutdown_wrap_template()
|
|
132
|
-
->NewInstance(env->context())
|
|
133
|
-
.ToLocal(&req_wrap_obj)) {
|
|
134
|
-
return UV_EBUSY;
|
|
135
|
-
}
|
|
136
|
-
StreamReq::ResetObject(req_wrap_obj);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
BaseObjectPtr<AsyncWrap> req_wrap_ptr;
|
|
140
|
-
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(GetAsyncWrap());
|
|
141
|
-
ShutdownWrap* req_wrap = CreateShutdownWrap(req_wrap_obj);
|
|
142
|
-
if (req_wrap != nullptr)
|
|
143
|
-
req_wrap_ptr.reset(req_wrap->GetAsyncWrap());
|
|
144
|
-
int err = DoShutdown(req_wrap);
|
|
145
|
-
|
|
146
|
-
if (err != 0 && req_wrap != nullptr) {
|
|
147
|
-
req_wrap->Dispose();
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
const char* msg = Error();
|
|
151
|
-
if (msg != nullptr) {
|
|
152
|
-
if (req_wrap_obj->Set(env->context(),
|
|
153
|
-
env->error_string(),
|
|
154
|
-
OneByteString(env->isolate(), msg)).IsNothing()) {
|
|
155
|
-
return UV_EBUSY;
|
|
156
|
-
}
|
|
157
|
-
ClearError();
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
return err;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
StreamWriteResult StreamBase::Write(
|
|
164
|
-
uv_buf_t* bufs,
|
|
165
|
-
size_t count,
|
|
166
|
-
uv_stream_t* send_handle,
|
|
167
|
-
v8::Local<v8::Object> req_wrap_obj) {
|
|
168
|
-
Environment* env = stream_env();
|
|
169
|
-
int err;
|
|
170
|
-
|
|
171
|
-
size_t total_bytes = 0;
|
|
172
|
-
for (size_t i = 0; i < count; ++i)
|
|
173
|
-
total_bytes += bufs[i].len;
|
|
174
|
-
bytes_written_ += total_bytes;
|
|
175
|
-
|
|
176
|
-
if (send_handle == nullptr) {
|
|
177
|
-
err = DoTryWrite(&bufs, &count);
|
|
178
|
-
if (err != 0 || count == 0) {
|
|
179
|
-
return StreamWriteResult { false, err, nullptr, total_bytes, {} };
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
v8::HandleScope handle_scope(env->isolate());
|
|
184
|
-
|
|
185
|
-
if (req_wrap_obj.IsEmpty()) {
|
|
186
|
-
if (!env->write_wrap_template()
|
|
187
|
-
->NewInstance(env->context())
|
|
188
|
-
.ToLocal(&req_wrap_obj)) {
|
|
189
|
-
return StreamWriteResult { false, UV_EBUSY, nullptr, 0, {} };
|
|
190
|
-
}
|
|
191
|
-
StreamReq::ResetObject(req_wrap_obj);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(GetAsyncWrap());
|
|
195
|
-
WriteWrap* req_wrap = CreateWriteWrap(req_wrap_obj);
|
|
196
|
-
BaseObjectPtr<AsyncWrap> req_wrap_ptr(req_wrap->GetAsyncWrap());
|
|
197
|
-
|
|
198
|
-
err = DoWrite(req_wrap, bufs, count, send_handle);
|
|
199
|
-
bool async = err == 0;
|
|
200
|
-
|
|
201
|
-
if (!async) {
|
|
202
|
-
req_wrap->Dispose();
|
|
203
|
-
req_wrap = nullptr;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
const char* msg = Error();
|
|
207
|
-
if (msg != nullptr) {
|
|
208
|
-
if (req_wrap_obj->Set(env->context(),
|
|
209
|
-
env->error_string(),
|
|
210
|
-
OneByteString(env->isolate(), msg)).IsNothing()) {
|
|
211
|
-
return StreamWriteResult { false, UV_EBUSY, nullptr, 0, {} };
|
|
212
|
-
}
|
|
213
|
-
ClearError();
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
return StreamWriteResult {
|
|
217
|
-
async, err, req_wrap, total_bytes, std::move(req_wrap_ptr) };
|
|
218
|
-
}
|
|
219
|
-
|
|
220
101
|
template <typename OtherBase>
|
|
221
102
|
SimpleShutdownWrap<OtherBase>::SimpleShutdownWrap(
|
|
222
103
|
StreamBase* stream,
|
|
@@ -278,22 +159,6 @@ void WriteWrap::SetBackingStore(std::unique_ptr<v8::BackingStore> bs) {
|
|
|
278
159
|
backing_store_ = std::move(bs);
|
|
279
160
|
}
|
|
280
161
|
|
|
281
|
-
void StreamReq::Done(int status, const char* error_str) {
|
|
282
|
-
AsyncWrap* async_wrap = GetAsyncWrap();
|
|
283
|
-
Environment* env = async_wrap->env();
|
|
284
|
-
if (error_str != nullptr) {
|
|
285
|
-
v8::HandleScope handle_scope(env->isolate());
|
|
286
|
-
if (async_wrap->object()->Set(
|
|
287
|
-
env->context(),
|
|
288
|
-
env->error_string(),
|
|
289
|
-
OneByteString(env->isolate(), error_str)).IsNothing()) {
|
|
290
|
-
return;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
OnDone(status);
|
|
295
|
-
}
|
|
296
|
-
|
|
297
162
|
void StreamReq::ResetObject(v8::Local<v8::Object> obj) {
|
|
298
163
|
DCHECK_GT(obj->InternalFieldCount(), StreamReq::kStreamReqField);
|
|
299
164
|
|