@encharm/cws 4.4.1 → 4.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bindings/cws_darwin_arm64_node115.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node127.node +0 -0
- package/dist/bindings/cws_linux_arm64_node115.node +0 -0
- package/dist/bindings/cws_linux_arm64_node127.node +0 -0
- package/dist/bindings/cws_linux_x64_node115.node +0 -0
- package/dist/bindings/cws_linux_x64_node127.node +0 -0
- package/dist/bindings/cws_win32_x64_node108.node +0 -0
- package/dist/bindings/cws_win32_x64_node115.node +0 -0
- package/dist/bindings/cws_win32_x64_node127.node +0 -0
- package/dist/bindings/cws_win32_x64_node83.node +0 -0
- package/dist/bindings/cws_win32_x64_node93.node +0 -0
- package/package.json +1 -1
- package/src/Addon.h +8 -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/{16 → 22}/base_object-inl.h +57 -117
- package/src/headers/{18 → 22}/base_object.h +58 -30
- package/src/headers/22/base_object_types.h +74 -0
- package/src/headers/22/blob_serializer_deserializer-inl.h +385 -0
- package/src/headers/22/blob_serializer_deserializer.h +132 -0
- package/src/headers/{16 → 22}/callback_queue.h +1 -0
- package/src/headers/{16 → 22}/cares_wrap.h +27 -20
- package/src/headers/22/cjs_module_lexer_version.h +6 -0
- package/src/headers/22/cleanup_queue-inl.h +62 -0
- package/src/headers/22/cleanup_queue.h +85 -0
- package/src/headers/22/compile_cache.h +104 -0
- package/src/headers/{18 → 22}/crypto/crypto_clienthello.h +1 -1
- package/src/headers/{18 → 22}/crypto/crypto_context.h +31 -7
- package/src/headers/{18 → 22}/crypto/crypto_keys.h +118 -148
- package/src/headers/{18 → 22}/crypto/crypto_tls.h +20 -5
- package/src/headers/{18 → 22}/crypto/crypto_util.h +219 -263
- package/src/headers/22/crypto/ncrypto.h +752 -0
- package/src/headers/{16 → 22}/debug_utils-inl.h +15 -7
- package/src/headers/{18 → 22}/debug_utils.h +25 -19
- package/src/headers/22/encoding_binding.h +59 -0
- package/src/headers/{14 → 22}/env-inl.h +276 -409
- package/src/headers/22/env.h +1266 -0
- package/src/headers/22/env_properties.h +497 -0
- package/src/headers/{18 → 22}/handle_wrap.h +2 -0
- package/src/headers/{18 → 22}/histogram.h +88 -48
- package/src/headers/{16 → 22}/inspector_agent.h +17 -1
- package/src/headers/{16 → 22}/inspector_profiler.h +15 -13
- package/src/headers/{18 → 22}/js_native_api.h +78 -30
- package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
- package/src/headers/{18 → 22}/js_native_api_v8.h +206 -161
- package/src/headers/{18 → 22}/js_native_api_v8_internals.h +6 -0
- package/src/headers/22/json_parser.h +40 -0
- package/src/headers/{16 → 22}/json_utils.h +19 -8
- package/src/headers/{18 → 22}/memory_tracker-inl.h +16 -13
- package/src/headers/{14 → 22}/memory_tracker.h +13 -8
- package/src/headers/{16 → 22}/module_wrap.h +49 -19
- package/src/headers/22/ncrypto/ncrypto.h +752 -0
- package/src/headers/{18 → 22}/node.h +465 -68
- package/src/headers/{18 → 22}/node_api.h +66 -81
- package/src/headers/{18 → 22}/node_api_internals.h +8 -4
- package/src/headers/{18 → 22}/node_api_types.h +5 -0
- package/src/headers/22/node_binding.h +154 -0
- package/src/headers/{18 → 22}/node_blob.h +46 -78
- package/src/headers/{18 → 22}/node_bob-inl.h +1 -2
- package/src/headers/{18 → 22}/node_bob.h +2 -6
- package/src/headers/{18 → 22}/node_buffer.h +1 -1
- package/src/headers/22/node_builtins.h +220 -0
- package/src/headers/{18 → 22}/node_constants.h +3 -5
- package/src/headers/22/node_context_data.h +168 -0
- package/src/headers/22/node_contextify.h +199 -0
- package/src/headers/{16 → 22}/node_crypto.h +1 -2
- package/src/headers/22/node_dotenv.h +45 -0
- package/src/headers/{18 → 22}/node_errors.h +86 -27
- package/src/headers/22/node_exit_code.h +54 -0
- package/src/headers/22/node_external_reference.h +249 -0
- package/src/headers/{18 → 22}/node_file-inl.h +127 -30
- package/src/headers/{16 → 22}/node_file.h +122 -11
- package/src/headers/{18 → 22}/node_http2.h +28 -11
- package/src/headers/{16 → 22}/node_http2_state.h +34 -25
- package/src/headers/{18 → 22}/node_http_common-inl.h +2 -1
- package/src/headers/{18 → 22}/node_http_common.h +56 -55
- package/src/headers/{16 → 22}/node_i18n.h +5 -18
- package/src/headers/{18 → 22}/node_internals.h +121 -59
- package/src/headers/{18 → 22}/node_main_instance.h +4 -31
- package/src/headers/{18 → 22}/node_messaging.h +27 -10
- package/src/headers/{18 → 22}/node_metadata.h +23 -1
- package/src/headers/{18 → 22}/node_options-inl.h +24 -11
- package/src/headers/{18 → 22}/node_options.h +124 -39
- package/src/headers/{18 → 22}/node_perf.h +0 -2
- package/src/headers/{18 → 22}/node_perf_common.h +20 -9
- package/src/headers/{18 → 22}/node_platform.h +11 -5
- package/src/headers/{18 → 22}/node_process.h +26 -14
- package/src/headers/22/node_realm-inl.h +145 -0
- package/src/headers/22/node_realm.h +184 -0
- package/src/headers/{16 → 22}/node_report.h +13 -17
- package/src/headers/{16 → 22}/node_revert.h +3 -3
- package/src/headers/{16 → 22}/node_root_certs.h +902 -461
- package/src/headers/22/node_sea.h +64 -0
- package/src/headers/22/node_shadow_realm.h +46 -0
- package/src/headers/22/node_snapshot_builder.h +57 -0
- package/src/headers/22/node_snapshotable.h +174 -0
- package/src/headers/{18 → 22}/node_sockaddr.h +2 -2
- package/src/headers/{16 → 22}/node_stat_watcher.h +2 -1
- package/src/headers/22/node_threadsafe_cow-inl.h +54 -0
- package/src/headers/22/node_threadsafe_cow.h +105 -0
- package/src/headers/22/node_union_bytes.h +81 -0
- package/src/headers/22/node_url.h +96 -0
- package/src/headers/22/node_v8.h +77 -0
- package/src/headers/{14 → 22}/node_v8_platform-inl.h +17 -6
- package/src/headers/{18 → 22}/node_version.h +20 -8
- package/src/headers/22/node_wasi.h +185 -0
- package/src/headers/{14 → 22}/node_watchdog.h +2 -0
- package/src/headers/{18 → 22}/node_worker.h +7 -2
- package/src/headers/22/permission/child_process_permission.h +31 -0
- package/src/headers/22/permission/fs_permission.h +167 -0
- package/src/headers/22/permission/inspector_permission.h +31 -0
- package/src/headers/22/permission/permission.h +99 -0
- package/src/headers/22/permission/permission_base.h +60 -0
- package/src/headers/22/permission/wasi_permission.h +31 -0
- package/src/headers/22/permission/worker_permission.h +31 -0
- package/src/headers/{16 → 22}/req_wrap-inl.h +7 -6
- package/src/headers/{14 → 22}/spawn_sync.h +3 -3
- package/src/headers/{18 → 22}/stream_base-inl.h +0 -135
- package/src/headers/{18 → 22}/stream_base.h +35 -16
- package/src/headers/{18 → 22}/stream_pipe.h +3 -4
- package/src/headers/{16 → 22}/stream_wrap.h +2 -1
- package/src/headers/{18 → 22}/string_bytes.h +5 -14
- package/src/headers/{14 → 22}/string_decoder-inl.h +0 -6
- package/src/headers/{16 → 22}/string_decoder.h +0 -1
- package/src/headers/{18 → 22}/tcp_wrap.h +1 -1
- package/src/headers/{18 → 22}/threadpoolwork-inl.h +14 -1
- package/src/headers/22/timers.h +76 -0
- package/src/headers/{18 → 22}/tracing/trace_event.h +7 -5
- package/src/headers/{16 → 22}/udp_wrap.h +8 -5
- package/src/headers/22/undici_version.h +6 -0
- package/src/headers/{18 → 22}/util-inl.h +97 -127
- package/src/headers/{18 → 22}/util.h +293 -106
- package/src/headers/{18 → 22}/v8-fast-api-calls.h +103 -58
- package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
- package/dist/bindings/cws_darwin_x64_node83.node +0 -0
- package/dist/bindings/cws_darwin_x64_node93.node +0 -0
- package/dist/bindings/cws_linux_arm64_node83.node +0 -0
- package/dist/bindings/cws_linux_arm64_node93.node +0 -0
- package/dist/bindings/cws_linux_x64_node83.node +0 -0
- package/dist/bindings/cws_linux_x64_node93.node +0 -0
- package/src/headers/14/aliased_buffer.h +0 -263
- package/src/headers/14/allocated_buffer-inl.h +0 -110
- package/src/headers/14/allocated_buffer.h +0 -73
- package/src/headers/14/async_wrap-inl.h +0 -94
- package/src/headers/14/async_wrap.h +0 -230
- package/src/headers/14/base64.h +0 -183
- package/src/headers/14/base_object-inl.h +0 -371
- package/src/headers/14/base_object.h +0 -281
- package/src/headers/14/callback_queue-inl.h +0 -97
- package/src/headers/14/callback_queue.h +0 -78
- package/src/headers/14/debug_utils-inl.h +0 -223
- package/src/headers/14/debug_utils.h +0 -181
- package/src/headers/14/env.h +0 -1388
- package/src/headers/14/handle_wrap.h +0 -117
- package/src/headers/14/histogram-inl.h +0 -83
- package/src/headers/14/histogram.h +0 -98
- package/src/headers/14/inspector_agent.h +0 -149
- package/src/headers/14/inspector_profiler.h +0 -137
- package/src/headers/14/js_native_api.h +0 -544
- package/src/headers/14/js_native_api_types.h +0 -143
- package/src/headers/14/js_native_api_v8.h +0 -301
- package/src/headers/14/js_native_api_v8_internals.h +0 -38
- package/src/headers/14/json_utils.h +0 -161
- package/src/headers/14/memory_tracker-inl.h +0 -355
- package/src/headers/14/module_wrap.h +0 -99
- package/src/headers/14/node.h +0 -1032
- package/src/headers/14/node_api.h +0 -255
- package/src/headers/14/node_api_types.h +0 -44
- package/src/headers/14/node_binding.h +0 -99
- package/src/headers/14/node_buffer.h +0 -92
- package/src/headers/14/node_constants.h +0 -84
- package/src/headers/14/node_context_data.h +0 -44
- package/src/headers/14/node_contextify.h +0 -161
- package/src/headers/14/node_crypto.h +0 -865
- package/src/headers/14/node_crypto_bio.h +0 -195
- package/src/headers/14/node_crypto_clienthello-inl.h +0 -91
- package/src/headers/14/node_crypto_clienthello.h +0 -132
- package/src/headers/14/node_crypto_common.h +0 -138
- package/src/headers/14/node_crypto_groups.h +0 -415
- package/src/headers/14/node_dtrace.h +0 -86
- package/src/headers/14/node_errors.h +0 -214
- package/src/headers/14/node_file-inl.h +0 -306
- package/src/headers/14/node_file.h +0 -417
- package/src/headers/14/node_http2.h +0 -1191
- package/src/headers/14/node_http2_state.h +0 -149
- package/src/headers/14/node_http_common-inl.h +0 -194
- package/src/headers/14/node_http_common.h +0 -529
- package/src/headers/14/node_i18n.h +0 -144
- package/src/headers/14/node_internals.h +0 -405
- package/src/headers/14/node_main_instance.h +0 -96
- package/src/headers/14/node_mem.h +0 -45
- package/src/headers/14/node_messaging.h +0 -303
- package/src/headers/14/node_metadata.h +0 -109
- package/src/headers/14/node_mutex.h +0 -247
- package/src/headers/14/node_native_module.h +0 -101
- package/src/headers/14/node_native_module_env.h +0 -66
- package/src/headers/14/node_options-inl.h +0 -451
- package/src/headers/14/node_options.h +0 -481
- package/src/headers/14/node_perf.h +0 -181
- package/src/headers/14/node_perf_common.h +0 -97
- package/src/headers/14/node_platform.h +0 -189
- package/src/headers/14/node_process.h +0 -40
- package/src/headers/14/node_report.h +0 -47
- package/src/headers/14/node_revert.h +0 -72
- package/src/headers/14/node_root_certs.h +0 -3458
- package/src/headers/14/node_sockaddr-inl.h +0 -170
- package/src/headers/14/node_sockaddr.h +0 -123
- package/src/headers/14/node_stat_watcher.h +0 -70
- package/src/headers/14/node_union_bytes.h +0 -103
- package/src/headers/14/node_url.h +0 -188
- package/src/headers/14/node_version.h +0 -98
- package/src/headers/14/node_wasi.h +0 -108
- package/src/headers/14/node_win32_etw_provider-inl.h +0 -287
- package/src/headers/14/node_win32_etw_provider.h +0 -99
- package/src/headers/14/node_worker.h +0 -141
- package/src/headers/14/pipe_wrap.h +0 -78
- package/src/headers/14/req_wrap-inl.h +0 -170
- package/src/headers/14/req_wrap.h +0 -77
- package/src/headers/14/stream_base-inl.h +0 -275
- package/src/headers/14/stream_base.h +0 -434
- package/src/headers/14/stream_pipe.h +0 -73
- package/src/headers/14/stream_wrap.h +0 -130
- package/src/headers/14/string_bytes.h +0 -129
- package/src/headers/14/string_decoder.h +0 -50
- package/src/headers/14/string_search.h +0 -638
- package/src/headers/14/tcp_wrap.h +0 -101
- package/src/headers/14/threadpoolwork-inl.h +0 -57
- package/src/headers/14/tls_wrap.h +0 -222
- package/src/headers/14/tracing/agent.h +0 -195
- package/src/headers/14/tracing/node_trace_buffer.h +0 -83
- package/src/headers/14/tracing/node_trace_writer.h +0 -75
- package/src/headers/14/tracing/trace_event.h +0 -720
- 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/aliased_struct-inl.h +0 -54
- package/src/headers/16/aliased_struct.h +0 -63
- package/src/headers/16/allocated_buffer-inl.h +0 -110
- package/src/headers/16/allocated_buffer.h +0 -73
- package/src/headers/16/async_wrap-inl.h +0 -94
- package/src/headers/16/async_wrap.h +0 -246
- package/src/headers/16/base64-inl.h +0 -189
- package/src/headers/16/base64.h +0 -69
- package/src/headers/16/base_object.h +0 -294
- package/src/headers/16/connect_wrap.h +0 -26
- package/src/headers/16/connection_wrap.h +0 -30
- package/src/headers/16/crypto/crypto_aes.h +0 -89
- package/src/headers/16/crypto/crypto_bio.h +0 -194
- package/src/headers/16/crypto/crypto_cipher.h +0 -286
- package/src/headers/16/crypto/crypto_clienthello-inl.h +0 -90
- package/src/headers/16/crypto/crypto_clienthello.h +0 -131
- package/src/headers/16/crypto/crypto_common.h +0 -187
- package/src/headers/16/crypto/crypto_context.h +0 -147
- package/src/headers/16/crypto/crypto_dh.h +0 -157
- package/src/headers/16/crypto/crypto_dsa.h +0 -76
- package/src/headers/16/crypto/crypto_ec.h +0 -169
- package/src/headers/16/crypto/crypto_groups.h +0 -415
- package/src/headers/16/crypto/crypto_hash.h +0 -89
- package/src/headers/16/crypto/crypto_hkdf.h +0 -66
- package/src/headers/16/crypto/crypto_hmac.h +0 -94
- package/src/headers/16/crypto/crypto_keygen.h +0 -301
- package/src/headers/16/crypto/crypto_keys.h +0 -412
- package/src/headers/16/crypto/crypto_pbkdf2.h +0 -76
- package/src/headers/16/crypto/crypto_random.h +0 -130
- package/src/headers/16/crypto/crypto_rsa.h +0 -141
- package/src/headers/16/crypto/crypto_scrypt.h +0 -87
- package/src/headers/16/crypto/crypto_sig.h +0 -167
- package/src/headers/16/crypto/crypto_spkac.h +0 -20
- package/src/headers/16/crypto/crypto_timing.h +0 -20
- package/src/headers/16/crypto/crypto_tls.h +0 -292
- package/src/headers/16/crypto/crypto_util.h +0 -736
- package/src/headers/16/crypto/crypto_x509.h +0 -141
- package/src/headers/16/debug_utils.h +0 -184
- package/src/headers/16/diagnosticfilename-inl.h +0 -33
- package/src/headers/16/env-inl.h +0 -1277
- package/src/headers/16/env.h +0 -1629
- package/src/headers/16/handle_wrap.h +0 -121
- package/src/headers/16/histogram-inl.h +0 -88
- package/src/headers/16/histogram.h +0 -216
- package/src/headers/16/inspector_io.h +0 -78
- package/src/headers/16/inspector_socket.h +0 -60
- package/src/headers/16/inspector_socket_server.h +0 -110
- package/src/headers/16/js_native_api.h +0 -561
- package/src/headers/16/js_native_api_types.h +0 -160
- package/src/headers/16/js_native_api_v8.h +0 -451
- package/src/headers/16/js_native_api_v8_internals.h +0 -39
- package/src/headers/16/js_stream.h +0 -52
- package/src/headers/16/memory_tracker-inl.h +0 -356
- package/src/headers/16/memory_tracker.h +0 -284
- package/src/headers/16/node.d +0 -315
- package/src/headers/16/node.h +0 -1132
- package/src/headers/16/node.stp +0 -146
- package/src/headers/16/node_api.h +0 -275
- package/src/headers/16/node_api_internals.h +0 -30
- package/src/headers/16/node_api_types.h +0 -50
- package/src/headers/16/node_binding.h +0 -99
- package/src/headers/16/node_blob.h +0 -191
- package/src/headers/16/node_bob-inl.h +0 -37
- package/src/headers/16/node_bob.h +0 -111
- package/src/headers/16/node_buffer.h +0 -92
- package/src/headers/16/node_constants.h +0 -84
- package/src/headers/16/node_context_data.h +0 -44
- package/src/headers/16/node_contextify.h +0 -196
- package/src/headers/16/node_dir.h +0 -52
- package/src/headers/16/node_dtrace.h +0 -86
- package/src/headers/16/node_errors.h +0 -277
- package/src/headers/16/node_external_reference.h +0 -129
- package/src/headers/16/node_file-inl.h +0 -306
- package/src/headers/16/node_http2.h +0 -1140
- package/src/headers/16/node_http_common-inl.h +0 -200
- package/src/headers/16/node_http_common.h +0 -531
- package/src/headers/16/node_internals.h +0 -421
- package/src/headers/16/node_main_instance.h +0 -103
- package/src/headers/16/node_mem-inl.h +0 -112
- package/src/headers/16/node_messaging.h +0 -373
- package/src/headers/16/node_metadata.h +0 -122
- package/src/headers/16/node_native_module.h +0 -101
- package/src/headers/16/node_native_module_env.h +0 -68
- package/src/headers/16/node_object_wrap.h +0 -132
- package/src/headers/16/node_options-inl.h +0 -477
- package/src/headers/16/node_options.h +0 -494
- package/src/headers/16/node_perf.h +0 -185
- package/src/headers/16/node_perf_common.h +0 -89
- package/src/headers/16/node_platform.h +0 -192
- package/src/headers/16/node_process.h +0 -43
- package/src/headers/16/node_provider.d +0 -80
- package/src/headers/16/node_snapshotable.h +0 -137
- package/src/headers/16/node_sockaddr-inl.h +0 -266
- package/src/headers/16/node_sockaddr.h +0 -405
- package/src/headers/16/node_union_bytes.h +0 -103
- package/src/headers/16/node_url.h +0 -205
- package/src/headers/16/node_v8.h +0 -41
- package/src/headers/16/node_v8_platform-inl.h +0 -194
- package/src/headers/16/node_version.h +0 -98
- package/src/headers/16/node_wasi.h +0 -108
- package/src/headers/16/node_watchdog.h +0 -152
- package/src/headers/16/node_win32_etw_provider-inl.h +0 -288
- package/src/headers/16/node_win32_etw_provider.h +0 -99
- package/src/headers/16/node_worker.h +0 -145
- package/src/headers/16/req_wrap.h +0 -77
- package/src/headers/16/spawn_sync.h +0 -242
- package/src/headers/16/stream_base-inl.h +0 -303
- package/src/headers/16/stream_base.h +0 -454
- package/src/headers/16/stream_pipe.h +0 -73
- package/src/headers/16/string_bytes.h +0 -122
- package/src/headers/16/string_decoder-inl.h +0 -37
- package/src/headers/16/string_search.h +0 -638
- package/src/headers/16/tcp_wrap.h +0 -103
- package/src/headers/16/threadpoolwork-inl.h +0 -57
- package/src/headers/16/timer_wrap.h +0 -84
- package/src/headers/16/tracing/agent.h +0 -195
- package/src/headers/16/tracing/node_trace_buffer.h +0 -83
- package/src/headers/16/tracing/node_trace_writer.h +0 -75
- package/src/headers/16/tracing/trace_event.h +0 -720
- package/src/headers/16/tracing/trace_event_common.h +0 -1109
- package/src/headers/16/tracing/traced_value.h +0 -70
- package/src/headers/16/tty_wrap.h +0 -66
- package/src/headers/16/util-inl.h +0 -575
- package/src/headers/16/util.h +0 -824
- package/src/headers/16/v8abbr.h +0 -123
- package/src/headers/16/v8ustack.d +0 -695
- package/src/headers/18/aliased_buffer.h +0 -315
- package/src/headers/18/aliased_struct-inl.h +0 -54
- package/src/headers/18/aliased_struct.h +0 -63
- package/src/headers/18/base64-inl.h +0 -189
- package/src/headers/18/base64.h +0 -69
- package/src/headers/18/base_object-inl.h +0 -374
- package/src/headers/18/callback_queue-inl.h +0 -97
- package/src/headers/18/callback_queue.h +0 -78
- package/src/headers/18/cares_wrap.h +0 -523
- package/src/headers/18/connect_wrap.h +0 -26
- package/src/headers/18/connection_wrap.h +0 -30
- package/src/headers/18/crypto/crypto_aes.h +0 -89
- package/src/headers/18/crypto/crypto_bio.h +0 -194
- package/src/headers/18/crypto/crypto_cipher.h +0 -291
- package/src/headers/18/crypto/crypto_clienthello-inl.h +0 -90
- package/src/headers/18/crypto/crypto_common.h +0 -151
- package/src/headers/18/crypto/crypto_dh.h +0 -156
- package/src/headers/18/crypto/crypto_dsa.h +0 -77
- package/src/headers/18/crypto/crypto_ec.h +0 -170
- package/src/headers/18/crypto/crypto_groups.h +0 -415
- package/src/headers/18/crypto/crypto_hash.h +0 -89
- package/src/headers/18/crypto/crypto_hkdf.h +0 -65
- package/src/headers/18/crypto/crypto_hmac.h +0 -94
- package/src/headers/18/crypto/crypto_keygen.h +0 -305
- package/src/headers/18/crypto/crypto_pbkdf2.h +0 -76
- package/src/headers/18/crypto/crypto_random.h +0 -130
- package/src/headers/18/crypto/crypto_rsa.h +0 -141
- package/src/headers/18/crypto/crypto_scrypt.h +0 -87
- package/src/headers/18/crypto/crypto_sig.h +0 -168
- package/src/headers/18/crypto/crypto_spkac.h +0 -21
- package/src/headers/18/crypto/crypto_timing.h +0 -20
- package/src/headers/18/crypto/crypto_x509.h +0 -143
- package/src/headers/18/debug_utils-inl.h +0 -223
- package/src/headers/18/diagnosticfilename-inl.h +0 -33
- package/src/headers/18/env-inl.h +0 -1308
- package/src/headers/18/env.h +0 -1667
- package/src/headers/18/inspector_agent.h +0 -144
- package/src/headers/18/inspector_io.h +0 -78
- package/src/headers/18/inspector_profiler.h +0 -149
- package/src/headers/18/inspector_socket.h +0 -60
- package/src/headers/18/inspector_socket_server.h +0 -110
- package/src/headers/18/js_stream.h +0 -52
- package/src/headers/18/json_utils.h +0 -161
- package/src/headers/18/memory_tracker.h +0 -284
- package/src/headers/18/module_wrap.h +0 -116
- package/src/headers/18/node_binding.h +0 -99
- package/src/headers/18/node_context_data.h +0 -44
- package/src/headers/18/node_contextify.h +0 -196
- package/src/headers/18/node_crypto.h +0 -57
- package/src/headers/18/node_dir.h +0 -52
- package/src/headers/18/node_dtrace.h +0 -86
- package/src/headers/18/node_external_reference.h +0 -145
- package/src/headers/18/node_file.h +0 -426
- package/src/headers/18/node_http2_state.h +0 -149
- package/src/headers/18/node_i18n.h +0 -145
- package/src/headers/18/node_mem-inl.h +0 -112
- package/src/headers/18/node_mem.h +0 -45
- package/src/headers/18/node_mutex.h +0 -323
- package/src/headers/18/node_native_module.h +0 -109
- package/src/headers/18/node_native_module_env.h +0 -71
- package/src/headers/18/node_object_wrap.h +0 -132
- package/src/headers/18/node_process-inl.h +0 -26
- package/src/headers/18/node_report.h +0 -47
- package/src/headers/18/node_revert.h +0 -82
- package/src/headers/18/node_root_certs.h +0 -3246
- package/src/headers/18/node_snapshot_builder.h +0 -43
- package/src/headers/18/node_snapshotable.h +0 -130
- package/src/headers/18/node_stat_watcher.h +0 -72
- package/src/headers/18/node_union_bytes.h +0 -103
- package/src/headers/18/node_url.h +0 -205
- package/src/headers/18/node_v8.h +0 -41
- package/src/headers/18/node_v8_platform-inl.h +0 -194
- package/src/headers/18/node_wasi.h +0 -108
- package/src/headers/18/node_watchdog.h +0 -152
- package/src/headers/18/node_win32_etw_provider-inl.h +0 -288
- package/src/headers/18/node_win32_etw_provider.h +0 -99
- package/src/headers/18/pipe_wrap.h +0 -80
- package/src/headers/18/req_wrap-inl.h +0 -170
- package/src/headers/18/spawn_sync.h +0 -242
- package/src/headers/18/stream_wrap.h +0 -133
- package/src/headers/18/string_decoder-inl.h +0 -37
- package/src/headers/18/string_decoder.h +0 -50
- package/src/headers/18/string_search.h +0 -638
- package/src/headers/18/tracing/node_trace_buffer.h +0 -83
- package/src/headers/18/tracing/node_trace_writer.h +0 -75
- package/src/headers/18/tracing/trace_event_common.h +0 -1109
- package/src/headers/18/tracing/traced_value.h +0 -70
- package/src/headers/18/udp_wrap.h +0 -227
- package/src/headers/18/v8abbr.h +0 -123
- /package/src/headers/{14 → 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
|
@@ -240,19 +240,22 @@ class CTypeInfo {
|
|
|
240
240
|
enum class Type : uint8_t {
|
|
241
241
|
kVoid,
|
|
242
242
|
kBool,
|
|
243
|
+
kUint8,
|
|
243
244
|
kInt32,
|
|
244
245
|
kUint32,
|
|
245
246
|
kInt64,
|
|
246
247
|
kUint64,
|
|
247
248
|
kFloat32,
|
|
248
249
|
kFloat64,
|
|
250
|
+
kPointer,
|
|
249
251
|
kV8Value,
|
|
252
|
+
kSeqOneByteString,
|
|
250
253
|
kApiObject, // This will be deprecated once all users have
|
|
251
254
|
// migrated from v8::ApiObject to v8::Local<v8::Value>.
|
|
252
255
|
kAny, // This is added to enable untyped representation of fast
|
|
253
256
|
// call arguments for test purposes. It can represent any of
|
|
254
|
-
// the other types stored in the same memory as a union
|
|
255
|
-
//
|
|
257
|
+
// the other types stored in the same memory as a union
|
|
258
|
+
// (see AnyCType declared below). This allows for
|
|
256
259
|
// uniform passing of arguments w.r.t. their location
|
|
257
260
|
// (in a register or on the stack), independent of their
|
|
258
261
|
// actual type. It's currently used by the arm64 simulator
|
|
@@ -302,8 +305,9 @@ class CTypeInfo {
|
|
|
302
305
|
constexpr Flags GetFlags() const { return flags_; }
|
|
303
306
|
|
|
304
307
|
static constexpr bool IsIntegralType(Type type) {
|
|
305
|
-
return type == Type::
|
|
306
|
-
type == Type::
|
|
308
|
+
return type == Type::kUint8 || type == Type::kInt32 ||
|
|
309
|
+
type == Type::kUint32 || type == Type::kInt64 ||
|
|
310
|
+
type == Type::kUint64;
|
|
307
311
|
}
|
|
308
312
|
|
|
309
313
|
static constexpr bool IsFloatingPointType(Type type) {
|
|
@@ -340,7 +344,8 @@ struct FastApiTypedArray : public FastApiTypedArrayBase {
|
|
|
340
344
|
ValidateIndex(index);
|
|
341
345
|
#endif // DEBUG
|
|
342
346
|
T tmp;
|
|
343
|
-
memcpy(&tmp, reinterpret_cast<T*>(data_) + index,
|
|
347
|
+
memcpy(&tmp, static_cast<void*>(reinterpret_cast<T*>(data_) + index),
|
|
348
|
+
sizeof(T));
|
|
344
349
|
return tmp;
|
|
345
350
|
}
|
|
346
351
|
|
|
@@ -377,15 +382,26 @@ struct FastApiArrayBuffer {
|
|
|
377
382
|
size_t byte_length;
|
|
378
383
|
};
|
|
379
384
|
|
|
385
|
+
struct FastOneByteString {
|
|
386
|
+
const char* data;
|
|
387
|
+
uint32_t length;
|
|
388
|
+
};
|
|
389
|
+
|
|
380
390
|
class V8_EXPORT CFunctionInfo {
|
|
381
391
|
public:
|
|
392
|
+
enum class Int64Representation : uint8_t {
|
|
393
|
+
kNumber = 0, // Use numbers to represent 64 bit integers.
|
|
394
|
+
kBigInt = 1, // Use BigInts to represent 64 bit integers.
|
|
395
|
+
};
|
|
396
|
+
|
|
382
397
|
// Construct a struct to hold a CFunction's type information.
|
|
383
398
|
// |return_info| describes the function's return type.
|
|
384
399
|
// |arg_info| is an array of |arg_count| CTypeInfos describing the
|
|
385
400
|
// arguments. Only the last argument may be of the special type
|
|
386
401
|
// CTypeInfo::kCallbackOptionsType.
|
|
387
402
|
CFunctionInfo(const CTypeInfo& return_info, unsigned int arg_count,
|
|
388
|
-
const CTypeInfo* arg_info
|
|
403
|
+
const CTypeInfo* arg_info,
|
|
404
|
+
Int64Representation repr = Int64Representation::kNumber);
|
|
389
405
|
|
|
390
406
|
const CTypeInfo& ReturnInfo() const { return return_info_; }
|
|
391
407
|
|
|
@@ -395,6 +411,8 @@ class V8_EXPORT CFunctionInfo {
|
|
|
395
411
|
return HasOptions() ? arg_count_ - 1 : arg_count_;
|
|
396
412
|
}
|
|
397
413
|
|
|
414
|
+
Int64Representation GetInt64Representation() const { return repr_; }
|
|
415
|
+
|
|
398
416
|
// |index| must be less than ArgumentCount().
|
|
399
417
|
// Note: if the last argument passed on construction of CFunctionInfo
|
|
400
418
|
// has type CTypeInfo::kCallbackOptionsType, it is not included in
|
|
@@ -409,6 +427,7 @@ class V8_EXPORT CFunctionInfo {
|
|
|
409
427
|
|
|
410
428
|
private:
|
|
411
429
|
const CTypeInfo return_info_;
|
|
430
|
+
const Int64Representation repr_;
|
|
412
431
|
const unsigned int arg_count_;
|
|
413
432
|
const CTypeInfo* arg_info_;
|
|
414
433
|
};
|
|
@@ -416,32 +435,43 @@ class V8_EXPORT CFunctionInfo {
|
|
|
416
435
|
struct FastApiCallbackOptions;
|
|
417
436
|
|
|
418
437
|
// Provided for testing.
|
|
419
|
-
|
|
438
|
+
union V8_TRIVIAL_ABI AnyCType {
|
|
420
439
|
AnyCType() : int64_value(0) {}
|
|
421
440
|
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
441
|
+
#if defined(V8_ENABLE_LOCAL_OFF_STACK_CHECK) && V8_HAS_ATTRIBUTE_TRIVIAL_ABI
|
|
442
|
+
// In this case, Local<T> is not trivially copyable and the implicit
|
|
443
|
+
// copy constructor and copy assignment for the union are deleted.
|
|
444
|
+
AnyCType(const AnyCType& other) : int64_value(other.int64_value) {}
|
|
445
|
+
AnyCType& operator=(const AnyCType& other) {
|
|
446
|
+
int64_value = other.int64_value;
|
|
447
|
+
return *this;
|
|
448
|
+
}
|
|
449
|
+
#endif
|
|
450
|
+
|
|
451
|
+
bool bool_value;
|
|
452
|
+
int32_t int32_value;
|
|
453
|
+
uint32_t uint32_value;
|
|
454
|
+
int64_t int64_value;
|
|
455
|
+
uint64_t uint64_value;
|
|
456
|
+
float float_value;
|
|
457
|
+
double double_value;
|
|
458
|
+
void* pointer_value;
|
|
459
|
+
Local<Object> object_value;
|
|
460
|
+
Local<Array> sequence_value;
|
|
461
|
+
const FastApiTypedArray<uint8_t>* uint8_ta_value;
|
|
462
|
+
const FastApiTypedArray<int32_t>* int32_ta_value;
|
|
463
|
+
const FastApiTypedArray<uint32_t>* uint32_ta_value;
|
|
464
|
+
const FastApiTypedArray<int64_t>* int64_ta_value;
|
|
465
|
+
const FastApiTypedArray<uint64_t>* uint64_ta_value;
|
|
466
|
+
const FastApiTypedArray<float>* float_ta_value;
|
|
467
|
+
const FastApiTypedArray<double>* double_ta_value;
|
|
468
|
+
const FastOneByteString* string_value;
|
|
469
|
+
FastApiCallbackOptions* options_value;
|
|
440
470
|
};
|
|
441
471
|
|
|
442
472
|
static_assert(
|
|
443
473
|
sizeof(AnyCType) == 8,
|
|
444
|
-
"The AnyCType
|
|
474
|
+
"The union AnyCType should have size == 64 bits, as this is assumed "
|
|
445
475
|
"by EffectControlLinearizer.");
|
|
446
476
|
|
|
447
477
|
class V8_EXPORT CFunction {
|
|
@@ -457,6 +487,9 @@ class V8_EXPORT CFunction {
|
|
|
457
487
|
unsigned int ArgumentCount() const { return type_info_->ArgumentCount(); }
|
|
458
488
|
|
|
459
489
|
const void* GetAddress() const { return address_; }
|
|
490
|
+
CFunctionInfo::Int64Representation GetInt64Representation() const {
|
|
491
|
+
return type_info_->GetInt64Representation();
|
|
492
|
+
}
|
|
460
493
|
const CFunctionInfo* GetTypeInfo() const { return type_info_; }
|
|
461
494
|
|
|
462
495
|
enum class OverloadResolution { kImpossible, kAtRuntime, kAtCompileTime };
|
|
@@ -544,7 +577,7 @@ struct FastApiCallbackOptions {
|
|
|
544
577
|
* returned instance may be filled with mock data.
|
|
545
578
|
*/
|
|
546
579
|
static FastApiCallbackOptions CreateForTesting(Isolate* isolate) {
|
|
547
|
-
return {false, {0}};
|
|
580
|
+
return {false, {0}, nullptr};
|
|
548
581
|
}
|
|
549
582
|
|
|
550
583
|
/**
|
|
@@ -566,8 +599,13 @@ struct FastApiCallbackOptions {
|
|
|
566
599
|
*/
|
|
567
600
|
union {
|
|
568
601
|
uintptr_t data_ptr;
|
|
569
|
-
v8::Value data;
|
|
602
|
+
v8::Local<v8::Value> data;
|
|
570
603
|
};
|
|
604
|
+
|
|
605
|
+
/**
|
|
606
|
+
* When called from WebAssembly, a view of the calling module's memory.
|
|
607
|
+
*/
|
|
608
|
+
FastApiTypedArray<uint8_t>* const wasm_memory;
|
|
571
609
|
};
|
|
572
610
|
|
|
573
611
|
namespace internal {
|
|
@@ -581,7 +619,8 @@ struct count<T, T, Args...>
|
|
|
581
619
|
template <typename T, typename U, typename... Args>
|
|
582
620
|
struct count<T, U, Args...> : count<T, Args...> {};
|
|
583
621
|
|
|
584
|
-
template <
|
|
622
|
+
template <CFunctionInfo::Int64Representation Representation,
|
|
623
|
+
typename RetBuilder, typename... ArgBuilders>
|
|
585
624
|
class CFunctionInfoImpl : public CFunctionInfo {
|
|
586
625
|
static constexpr int kOptionsArgCount =
|
|
587
626
|
count<FastApiCallbackOptions&, ArgBuilders...>();
|
|
@@ -596,17 +635,20 @@ class CFunctionInfoImpl : public CFunctionInfo {
|
|
|
596
635
|
public:
|
|
597
636
|
constexpr CFunctionInfoImpl()
|
|
598
637
|
: CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
|
|
599
|
-
arg_info_storage_),
|
|
638
|
+
arg_info_storage_, Representation),
|
|
600
639
|
arg_info_storage_{ArgBuilders::Build()...} {
|
|
601
640
|
constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
|
|
602
641
|
static_assert(kReturnType == CTypeInfo::Type::kVoid ||
|
|
603
642
|
kReturnType == CTypeInfo::Type::kBool ||
|
|
604
643
|
kReturnType == CTypeInfo::Type::kInt32 ||
|
|
605
644
|
kReturnType == CTypeInfo::Type::kUint32 ||
|
|
645
|
+
kReturnType == CTypeInfo::Type::kInt64 ||
|
|
646
|
+
kReturnType == CTypeInfo::Type::kUint64 ||
|
|
606
647
|
kReturnType == CTypeInfo::Type::kFloat32 ||
|
|
607
648
|
kReturnType == CTypeInfo::Type::kFloat64 ||
|
|
649
|
+
kReturnType == CTypeInfo::Type::kPointer ||
|
|
608
650
|
kReturnType == CTypeInfo::Type::kAny,
|
|
609
|
-
"
|
|
651
|
+
"String and api object values are not currently "
|
|
610
652
|
"supported return types.");
|
|
611
653
|
}
|
|
612
654
|
|
|
@@ -643,12 +685,14 @@ struct CTypeInfoTraits {};
|
|
|
643
685
|
|
|
644
686
|
#define PRIMITIVE_C_TYPES(V) \
|
|
645
687
|
V(bool, kBool) \
|
|
688
|
+
V(uint8_t, kUint8) \
|
|
646
689
|
V(int32_t, kInt32) \
|
|
647
690
|
V(uint32_t, kUint32) \
|
|
648
691
|
V(int64_t, kInt64) \
|
|
649
692
|
V(uint64_t, kUint64) \
|
|
650
693
|
V(float, kFloat32) \
|
|
651
|
-
V(double, kFloat64)
|
|
694
|
+
V(double, kFloat64) \
|
|
695
|
+
V(void*, kPointer)
|
|
652
696
|
|
|
653
697
|
// Same as above, but includes deprecated types for compatibility.
|
|
654
698
|
#define ALL_C_TYPES(V) \
|
|
@@ -682,6 +726,7 @@ PRIMITIVE_C_TYPES(DEFINE_TYPE_INFO_TRAITS)
|
|
|
682
726
|
};
|
|
683
727
|
|
|
684
728
|
#define TYPED_ARRAY_C_TYPES(V) \
|
|
729
|
+
V(uint8_t, kUint8) \
|
|
685
730
|
V(int32_t, kInt32) \
|
|
686
731
|
V(uint32_t, kUint32) \
|
|
687
732
|
V(int64_t, kInt64) \
|
|
@@ -725,6 +770,18 @@ struct TypeInfoHelper<FastApiCallbackOptions&> {
|
|
|
725
770
|
}
|
|
726
771
|
};
|
|
727
772
|
|
|
773
|
+
template <>
|
|
774
|
+
struct TypeInfoHelper<const FastOneByteString&> {
|
|
775
|
+
static constexpr CTypeInfo::Flags Flags() { return CTypeInfo::Flags::kNone; }
|
|
776
|
+
|
|
777
|
+
static constexpr CTypeInfo::Type Type() {
|
|
778
|
+
return CTypeInfo::Type::kSeqOneByteString;
|
|
779
|
+
}
|
|
780
|
+
static constexpr CTypeInfo::SequenceType SequenceType() {
|
|
781
|
+
return CTypeInfo::SequenceType::kScalar;
|
|
782
|
+
}
|
|
783
|
+
};
|
|
784
|
+
|
|
728
785
|
#define STATIC_ASSERT_IMPLIES(COND, ASSERTION, MSG) \
|
|
729
786
|
static_assert(((COND) == 0) || (ASSERTION), MSG)
|
|
730
787
|
|
|
@@ -802,8 +859,21 @@ class CFunctionBuilderWithFunction {
|
|
|
802
859
|
std::make_index_sequence<sizeof...(ArgBuilders)>());
|
|
803
860
|
}
|
|
804
861
|
|
|
862
|
+
// Provided for testing purposes.
|
|
863
|
+
template <typename Ret, typename... Args>
|
|
864
|
+
auto Patch(Ret (*patching_func)(Args...)) {
|
|
865
|
+
static_assert(
|
|
866
|
+
sizeof...(Args) == sizeof...(ArgBuilders),
|
|
867
|
+
"The patching function must have the same number of arguments.");
|
|
868
|
+
fn_ = reinterpret_cast<void*>(patching_func);
|
|
869
|
+
return *this;
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
template <CFunctionInfo::Int64Representation Representation =
|
|
873
|
+
CFunctionInfo::Int64Representation::kNumber>
|
|
805
874
|
auto Build() {
|
|
806
|
-
static CFunctionInfoImpl<RetBuilder, ArgBuilders...>
|
|
875
|
+
static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
|
|
876
|
+
instance;
|
|
807
877
|
return CFunction(fn_, &instance);
|
|
808
878
|
}
|
|
809
879
|
|
|
@@ -881,31 +951,6 @@ static constexpr CTypeInfo kTypeInfoFloat64 =
|
|
|
881
951
|
* to the requested destination type, is considered unsupported. The operation
|
|
882
952
|
* returns true on success. `type_info` will be used for conversions.
|
|
883
953
|
*/
|
|
884
|
-
template <const CTypeInfo* type_info, typename T>
|
|
885
|
-
V8_DEPRECATED(
|
|
886
|
-
"Use TryToCopyAndConvertArrayToCppBuffer<CTypeInfo::Identifier, T>()")
|
|
887
|
-
bool V8_EXPORT V8_WARN_UNUSED_RESULT
|
|
888
|
-
TryCopyAndConvertArrayToCppBuffer(Local<Array> src, T* dst,
|
|
889
|
-
uint32_t max_length);
|
|
890
|
-
|
|
891
|
-
template <>
|
|
892
|
-
V8_DEPRECATED(
|
|
893
|
-
"Use TryToCopyAndConvertArrayToCppBuffer<CTypeInfo::Identifier, T>()")
|
|
894
|
-
inline bool V8_WARN_UNUSED_RESULT
|
|
895
|
-
TryCopyAndConvertArrayToCppBuffer<&kTypeInfoInt32, int32_t>(
|
|
896
|
-
Local<Array> src, int32_t* dst, uint32_t max_length) {
|
|
897
|
-
return false;
|
|
898
|
-
}
|
|
899
|
-
|
|
900
|
-
template <>
|
|
901
|
-
V8_DEPRECATED(
|
|
902
|
-
"Use TryToCopyAndConvertArrayToCppBuffer<CTypeInfo::Identifier, T>()")
|
|
903
|
-
inline bool V8_WARN_UNUSED_RESULT
|
|
904
|
-
TryCopyAndConvertArrayToCppBuffer<&kTypeInfoFloat64, double>(
|
|
905
|
-
Local<Array> src, double* dst, uint32_t max_length) {
|
|
906
|
-
return false;
|
|
907
|
-
}
|
|
908
|
-
|
|
909
954
|
template <CTypeInfo::Identifier type_info_id, typename T>
|
|
910
955
|
bool V8_EXPORT V8_WARN_UNUSED_RESULT TryToCopyAndConvertArrayToCppBuffer(
|
|
911
956
|
Local<Array> src, T* dst, uint32_t max_length);
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
#ifndef SRC_ALIASED_BUFFER_H_
|
|
2
|
-
#define SRC_ALIASED_BUFFER_H_
|
|
3
|
-
|
|
4
|
-
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
-
|
|
6
|
-
#include <cinttypes>
|
|
7
|
-
#include "util-inl.h"
|
|
8
|
-
#include "v8.h"
|
|
9
|
-
|
|
10
|
-
namespace node {
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Do not use this class directly when creating instances of it - use the
|
|
14
|
-
* Aliased*Array defined at the end of this file instead.
|
|
15
|
-
*
|
|
16
|
-
* This class encapsulates the technique of having a native buffer mapped to
|
|
17
|
-
* a JS object. Writes to the native buffer can happen efficiently without
|
|
18
|
-
* going through JS, and the data is then available to user's via the exposed
|
|
19
|
-
* JS object.
|
|
20
|
-
*
|
|
21
|
-
* While this technique is computationally efficient, it is effectively a
|
|
22
|
-
* write to JS program state w/out going through the standard
|
|
23
|
-
* (monitored) API. Thus any VM capabilities to detect the modification are
|
|
24
|
-
* circumvented.
|
|
25
|
-
*
|
|
26
|
-
* The encapsulation herein provides a placeholder where such writes can be
|
|
27
|
-
* observed. Any notification APIs will be left as a future exercise.
|
|
28
|
-
*/
|
|
29
|
-
template <class NativeT,
|
|
30
|
-
class V8T,
|
|
31
|
-
// SFINAE NativeT to be scalar
|
|
32
|
-
typename = std::enable_if_t<std::is_scalar<NativeT>::value>>
|
|
33
|
-
class AliasedBufferBase {
|
|
34
|
-
public:
|
|
35
|
-
AliasedBufferBase(v8::Isolate* isolate, const size_t count)
|
|
36
|
-
: isolate_(isolate), count_(count), byte_offset_(0) {
|
|
37
|
-
CHECK_GT(count, 0);
|
|
38
|
-
const v8::HandleScope handle_scope(isolate_);
|
|
39
|
-
const size_t size_in_bytes =
|
|
40
|
-
MultiplyWithOverflowCheck(sizeof(NativeT), count);
|
|
41
|
-
|
|
42
|
-
// allocate v8 ArrayBuffer
|
|
43
|
-
v8::Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(
|
|
44
|
-
isolate_, size_in_bytes);
|
|
45
|
-
buffer_ = static_cast<NativeT*>(ab->GetBackingStore()->Data());
|
|
46
|
-
|
|
47
|
-
// allocate v8 TypedArray
|
|
48
|
-
v8::Local<V8T> js_array = V8T::New(ab, byte_offset_, count);
|
|
49
|
-
js_array_ = v8::Global<V8T>(isolate, js_array);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Create an AliasedBufferBase over a sub-region of another aliased buffer.
|
|
54
|
-
* The two will share a v8::ArrayBuffer instance &
|
|
55
|
-
* a native buffer, but will each read/write to different sections of the
|
|
56
|
-
* native buffer.
|
|
57
|
-
*
|
|
58
|
-
* Note that byte_offset must by aligned by sizeof(NativeT).
|
|
59
|
-
*/
|
|
60
|
-
// TODO(refack): refactor into a non-owning `AliasedBufferBaseView`
|
|
61
|
-
AliasedBufferBase(
|
|
62
|
-
v8::Isolate* isolate,
|
|
63
|
-
const size_t byte_offset,
|
|
64
|
-
const size_t count,
|
|
65
|
-
const AliasedBufferBase<uint8_t, v8::Uint8Array>& backing_buffer)
|
|
66
|
-
: isolate_(isolate), count_(count), byte_offset_(byte_offset) {
|
|
67
|
-
const v8::HandleScope handle_scope(isolate_);
|
|
68
|
-
|
|
69
|
-
v8::Local<v8::ArrayBuffer> ab = backing_buffer.GetArrayBuffer();
|
|
70
|
-
|
|
71
|
-
// validate that the byte_offset is aligned with sizeof(NativeT)
|
|
72
|
-
CHECK_EQ(byte_offset & (sizeof(NativeT) - 1), 0);
|
|
73
|
-
// validate this fits inside the backing buffer
|
|
74
|
-
CHECK_LE(MultiplyWithOverflowCheck(sizeof(NativeT), count),
|
|
75
|
-
ab->ByteLength() - byte_offset);
|
|
76
|
-
|
|
77
|
-
buffer_ = reinterpret_cast<NativeT*>(
|
|
78
|
-
const_cast<uint8_t*>(backing_buffer.GetNativeBuffer() + byte_offset));
|
|
79
|
-
|
|
80
|
-
v8::Local<V8T> js_array = V8T::New(ab, byte_offset, count);
|
|
81
|
-
js_array_ = v8::Global<V8T>(isolate, js_array);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
AliasedBufferBase(const AliasedBufferBase& that)
|
|
85
|
-
: isolate_(that.isolate_),
|
|
86
|
-
count_(that.count_),
|
|
87
|
-
byte_offset_(that.byte_offset_),
|
|
88
|
-
buffer_(that.buffer_) {
|
|
89
|
-
js_array_ = v8::Global<V8T>(that.isolate_, that.GetJSArray());
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
AliasedBufferBase& operator=(AliasedBufferBase&& that) noexcept {
|
|
93
|
-
this->~AliasedBufferBase();
|
|
94
|
-
isolate_ = that.isolate_;
|
|
95
|
-
count_ = that.count_;
|
|
96
|
-
byte_offset_ = that.byte_offset_;
|
|
97
|
-
buffer_ = that.buffer_;
|
|
98
|
-
|
|
99
|
-
js_array_.Reset(isolate_, that.js_array_.Get(isolate_));
|
|
100
|
-
|
|
101
|
-
that.buffer_ = nullptr;
|
|
102
|
-
that.js_array_.Reset();
|
|
103
|
-
return *this;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Helper class that is returned from operator[] to support assignment into
|
|
108
|
-
* a specified location.
|
|
109
|
-
*/
|
|
110
|
-
class Reference {
|
|
111
|
-
public:
|
|
112
|
-
Reference(AliasedBufferBase<NativeT, V8T>* aliased_buffer, size_t index)
|
|
113
|
-
: aliased_buffer_(aliased_buffer), index_(index) {}
|
|
114
|
-
|
|
115
|
-
Reference(const Reference& that)
|
|
116
|
-
: aliased_buffer_(that.aliased_buffer_),
|
|
117
|
-
index_(that.index_) {
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
inline Reference& operator=(const NativeT& val) {
|
|
121
|
-
aliased_buffer_->SetValue(index_, val);
|
|
122
|
-
return *this;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
inline Reference& operator=(const Reference& val) {
|
|
126
|
-
return *this = static_cast<NativeT>(val);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
operator NativeT() const {
|
|
130
|
-
return aliased_buffer_->GetValue(index_);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
inline Reference& operator+=(const NativeT& val) {
|
|
134
|
-
const NativeT current = aliased_buffer_->GetValue(index_);
|
|
135
|
-
aliased_buffer_->SetValue(index_, current + val);
|
|
136
|
-
return *this;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
inline Reference& operator+=(const Reference& val) {
|
|
140
|
-
return this->operator+=(static_cast<NativeT>(val));
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
inline Reference& operator-=(const NativeT& val) {
|
|
144
|
-
const NativeT current = aliased_buffer_->GetValue(index_);
|
|
145
|
-
aliased_buffer_->SetValue(index_, current - val);
|
|
146
|
-
return *this;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
private:
|
|
150
|
-
AliasedBufferBase<NativeT, V8T>* aliased_buffer_;
|
|
151
|
-
size_t index_;
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Get the underlying v8 TypedArray overlayed on top of the native buffer
|
|
156
|
-
*/
|
|
157
|
-
v8::Local<V8T> GetJSArray() const {
|
|
158
|
-
return js_array_.Get(isolate_);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Get the underlying v8::ArrayBuffer underlying the TypedArray and
|
|
163
|
-
* overlaying the native buffer
|
|
164
|
-
*/
|
|
165
|
-
v8::Local<v8::ArrayBuffer> GetArrayBuffer() const {
|
|
166
|
-
return GetJSArray()->Buffer();
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Get the underlying native buffer. Note that all reads/writes should occur
|
|
171
|
-
* through the GetValue/SetValue/operator[] methods
|
|
172
|
-
*/
|
|
173
|
-
inline const NativeT* GetNativeBuffer() const {
|
|
174
|
-
return buffer_;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Synonym for GetBuffer()
|
|
179
|
-
*/
|
|
180
|
-
inline const NativeT* operator * () const {
|
|
181
|
-
return GetNativeBuffer();
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* Set position index to given value.
|
|
186
|
-
*/
|
|
187
|
-
inline void SetValue(const size_t index, NativeT value) {
|
|
188
|
-
DCHECK_LT(index, count_);
|
|
189
|
-
buffer_[index] = value;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Get value at position index
|
|
194
|
-
*/
|
|
195
|
-
inline const NativeT GetValue(const size_t index) const {
|
|
196
|
-
DCHECK_LT(index, count_);
|
|
197
|
-
return buffer_[index];
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Effectively, a synonym for GetValue/SetValue
|
|
202
|
-
*/
|
|
203
|
-
Reference operator[](size_t index) {
|
|
204
|
-
return Reference(this, index);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
NativeT operator[](size_t index) const {
|
|
208
|
-
return GetValue(index);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
size_t Length() const {
|
|
212
|
-
return count_;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
// Should only be used to extend the array.
|
|
216
|
-
// Should only be used on an owning array, not one created as a sub array of
|
|
217
|
-
// an owning `AliasedBufferBase`.
|
|
218
|
-
void reserve(size_t new_capacity) {
|
|
219
|
-
DCHECK_GE(new_capacity, count_);
|
|
220
|
-
DCHECK_EQ(byte_offset_, 0);
|
|
221
|
-
const v8::HandleScope handle_scope(isolate_);
|
|
222
|
-
|
|
223
|
-
const size_t old_size_in_bytes = sizeof(NativeT) * count_;
|
|
224
|
-
const size_t new_size_in_bytes = MultiplyWithOverflowCheck(sizeof(NativeT),
|
|
225
|
-
new_capacity);
|
|
226
|
-
|
|
227
|
-
// allocate v8 new ArrayBuffer
|
|
228
|
-
v8::Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(
|
|
229
|
-
isolate_, new_size_in_bytes);
|
|
230
|
-
|
|
231
|
-
// allocate new native buffer
|
|
232
|
-
NativeT* new_buffer = static_cast<NativeT*>(ab->GetBackingStore()->Data());
|
|
233
|
-
// copy old content
|
|
234
|
-
memcpy(new_buffer, buffer_, old_size_in_bytes);
|
|
235
|
-
|
|
236
|
-
// allocate v8 TypedArray
|
|
237
|
-
v8::Local<V8T> js_array = V8T::New(ab, byte_offset_, new_capacity);
|
|
238
|
-
|
|
239
|
-
// move over old v8 TypedArray
|
|
240
|
-
js_array_ = std::move(v8::Global<V8T>(isolate_, js_array));
|
|
241
|
-
|
|
242
|
-
buffer_ = new_buffer;
|
|
243
|
-
count_ = new_capacity;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
private:
|
|
247
|
-
v8::Isolate* isolate_;
|
|
248
|
-
size_t count_;
|
|
249
|
-
size_t byte_offset_;
|
|
250
|
-
NativeT* buffer_;
|
|
251
|
-
v8::Global<V8T> js_array_;
|
|
252
|
-
};
|
|
253
|
-
|
|
254
|
-
typedef AliasedBufferBase<int32_t, v8::Int32Array> AliasedInt32Array;
|
|
255
|
-
typedef AliasedBufferBase<uint8_t, v8::Uint8Array> AliasedUint8Array;
|
|
256
|
-
typedef AliasedBufferBase<uint32_t, v8::Uint32Array> AliasedUint32Array;
|
|
257
|
-
typedef AliasedBufferBase<double, v8::Float64Array> AliasedFloat64Array;
|
|
258
|
-
typedef AliasedBufferBase<uint64_t, v8::BigUint64Array> AliasedBigUint64Array;
|
|
259
|
-
} // namespace node
|
|
260
|
-
|
|
261
|
-
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
262
|
-
|
|
263
|
-
#endif // SRC_ALIASED_BUFFER_H_
|