@encharm/cws 4.0.2 → 4.3.0
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/CHANGELOG.md +3 -0
- package/LICENSE +3 -2
- package/README.md +9 -2
- package/binding.gyp +2 -2
- package/dist/bindings/cws_darwin_arm64_node108.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node64.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node72.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node79.node +0 -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_node108.node +0 -0
- package/dist/bindings/cws_darwin_x64_node64.node +0 -0
- package/dist/bindings/cws_darwin_x64_node72.node +0 -0
- package/dist/bindings/cws_darwin_x64_node79.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_x64_node108.node +0 -0
- package/dist/bindings/cws_linux_x64_node64.node +0 -0
- package/dist/bindings/cws_linux_x64_node72.node +0 -0
- package/dist/bindings/cws_linux_x64_node79.node +0 -0
- package/dist/bindings/cws_linux_x64_node83.node +0 -0
- package/dist/bindings/cws_linux_x64_node93.node +0 -0
- package/dist/bindings/cws_win32_x64_node108.node +0 -0
- package/dist/bindings/cws_win32_x64_node64.node +0 -0
- package/dist/bindings/cws_win32_x64_node72.node +0 -0
- package/dist/bindings/cws_win32_x64_node79.node +0 -0
- package/dist/bindings/cws_win32_x64_node83.node +0 -0
- package/dist/bindings/cws_win32_x64_node93.node +0 -0
- package/dist/client.d.ts +1 -0
- package/dist/client.js +4 -0
- package/dist/index.js +3 -2
- package/dist/server.js +1 -0
- package/dist/shared.js +2 -1
- package/package.json +1 -1
- package/src/Addon.cpp +1 -0
- package/src/Addon.h +35 -2
- package/src/HTTPSocket.cpp +1 -1
- package/src/LICENSE +4 -0
- package/src/Socket.h +12 -3
- package/src/headers/{13 → 18}/aliased_buffer.h +61 -9
- package/src/headers/18/aliased_struct-inl.h +54 -0
- package/src/headers/18/aliased_struct.h +63 -0
- package/src/headers/{12 → 18}/async_wrap-inl.h +0 -0
- package/src/headers/{12 → 18}/async_wrap.h +26 -2
- package/src/headers/{12/base64.h → 18/base64-inl.h} +78 -86
- package/src/headers/18/base64.h +69 -0
- package/src/headers/{12 → 18}/base_object-inl.h +46 -25
- package/src/headers/{12 → 18}/base_object.h +82 -17
- package/src/headers/{12 → 18}/callback_queue-inl.h +9 -9
- package/src/headers/{12 → 18}/callback_queue.h +13 -5
- package/src/headers/18/cares_wrap.h +523 -0
- package/src/headers/{12 → 18}/connect_wrap.h +0 -0
- package/src/headers/{12 → 18}/connection_wrap.h +0 -0
- package/src/headers/18/crypto/crypto_aes.h +89 -0
- package/src/headers/{13/node_crypto_bio.h → 18/crypto/crypto_bio.h} +3 -4
- package/src/headers/18/crypto/crypto_cipher.h +291 -0
- package/src/headers/{13/node_crypto_clienthello-inl.h → 18/crypto/crypto_clienthello-inl.h} +4 -5
- package/src/headers/{13/node_crypto_clienthello.h → 18/crypto/crypto_clienthello.h} +3 -4
- package/src/headers/{12/node_crypto_common.h → 18/crypto/crypto_common.h} +49 -36
- package/src/headers/18/crypto/crypto_context.h +147 -0
- package/src/headers/18/crypto/crypto_dh.h +156 -0
- package/src/headers/18/crypto/crypto_dsa.h +77 -0
- package/src/headers/18/crypto/crypto_ec.h +170 -0
- package/src/headers/{12/node_crypto_groups.h → 18/crypto/crypto_groups.h} +3 -3
- package/src/headers/18/crypto/crypto_hash.h +89 -0
- package/src/headers/18/crypto/crypto_hkdf.h +65 -0
- package/src/headers/18/crypto/crypto_hmac.h +94 -0
- package/src/headers/18/crypto/crypto_keygen.h +305 -0
- package/src/headers/18/crypto/crypto_keys.h +420 -0
- package/src/headers/18/crypto/crypto_pbkdf2.h +76 -0
- package/src/headers/18/crypto/crypto_random.h +130 -0
- package/src/headers/18/crypto/crypto_rsa.h +141 -0
- package/src/headers/18/crypto/crypto_scrypt.h +87 -0
- package/src/headers/18/crypto/crypto_sig.h +168 -0
- package/src/headers/18/crypto/crypto_spkac.h +21 -0
- package/src/headers/18/crypto/crypto_timing.h +20 -0
- package/src/headers/{12/tls_wrap.h → 18/crypto/crypto_tls.h} +137 -66
- package/src/headers/18/crypto/crypto_util.h +791 -0
- package/src/headers/18/crypto/crypto_x509.h +143 -0
- package/src/headers/{12 → 18}/debug_utils-inl.h +0 -0
- package/src/headers/{13 → 18}/debug_utils.h +7 -4
- package/src/headers/{12 → 18}/diagnosticfilename-inl.h +0 -0
- package/src/headers/{12 → 18}/env-inl.h +397 -304
- package/src/headers/{12 → 18}/env.h +397 -172
- package/src/headers/{12 → 18}/handle_wrap.h +7 -3
- package/src/headers/18/histogram-inl.h +107 -0
- package/src/headers/18/histogram.h +239 -0
- package/src/headers/{13 → 18}/inspector_agent.h +4 -7
- package/src/headers/{12 → 18}/inspector_io.h +0 -0
- package/src/headers/{13 → 18}/inspector_profiler.h +17 -5
- package/src/headers/{12 → 18}/inspector_socket.h +0 -0
- package/src/headers/{12 → 18}/inspector_socket_server.h +0 -0
- package/src/headers/18/js_native_api.h +571 -0
- package/src/headers/{13 → 18}/js_native_api_types.h +30 -7
- package/src/headers/{12 → 18}/js_native_api_v8.h +220 -83
- package/src/headers/{12 → 18}/js_native_api_v8_internals.h +6 -5
- package/src/headers/{12 → 18}/js_stream.h +0 -0
- package/src/headers/{12 → 18}/json_utils.h +0 -0
- package/src/headers/{13 → 18}/memory_tracker-inl.h +6 -5
- package/src/headers/{13 → 18}/memory_tracker.h +0 -7
- package/src/headers/{13 → 18}/module_wrap.h +24 -7
- package/src/headers/{13 → 18}/node.h +329 -68
- package/src/headers/18/node_api.h +288 -0
- package/src/headers/18/node_api_internals.h +38 -0
- package/src/headers/{12 → 18}/node_api_types.h +12 -9
- package/src/headers/{12 → 18}/node_binding.h +0 -0
- package/src/headers/18/node_blob.h +191 -0
- package/src/headers/18/node_bob-inl.h +37 -0
- package/src/headers/18/node_bob.h +111 -0
- package/src/headers/{13 → 18}/node_buffer.h +0 -0
- package/src/headers/{13 → 18}/node_constants.h +5 -1
- package/src/headers/{12 → 18}/node_context_data.h +5 -0
- package/src/headers/{12 → 18}/node_contextify.h +37 -2
- package/src/headers/{10/node_javascript.h → 18/node_crypto.h} +30 -14
- package/src/headers/{12 → 18}/node_dir.h +0 -0
- package/src/headers/{12 → 18}/node_dtrace.h +0 -0
- package/src/headers/{12 → 18}/node_errors.h +90 -24
- package/src/headers/18/node_external_reference.h +145 -0
- package/src/headers/{13 → 18}/node_file-inl.h +38 -21
- package/src/headers/{12 → 18}/node_file.h +74 -13
- package/src/headers/{13 → 18}/node_http2.h +365 -269
- package/src/headers/{12 → 18}/node_http2_state.h +40 -50
- package/src/headers/{13 → 18}/node_http_common-inl.h +25 -5
- package/src/headers/{13 → 18}/node_http_common.h +24 -20
- package/src/headers/{13 → 18}/node_i18n.h +2 -1
- package/src/headers/{12 → 18}/node_internals.h +39 -41
- package/src/headers/{12 → 18}/node_main_instance.h +15 -18
- package/src/headers/{12 → 18}/node_mem-inl.h +0 -0
- package/src/headers/{12 → 18}/node_mem.h +1 -1
- package/src/headers/{13 → 18}/node_messaging.h +170 -23
- package/src/headers/{12 → 18}/node_metadata.h +17 -4
- package/src/headers/{12 → 18}/node_mutex.h +77 -1
- package/src/headers/{12 → 18}/node_native_module.h +11 -1
- package/src/headers/{12 → 18}/node_native_module_env.h +14 -8
- package/src/headers/{12 → 18}/node_object_wrap.h +0 -0
- package/src/headers/{13 → 18}/node_options-inl.h +51 -21
- package/src/headers/{13 → 18}/node_options.h +46 -14
- package/src/headers/18/node_perf.h +168 -0
- package/src/headers/{12 → 18}/node_perf_common.h +16 -22
- package/src/headers/{12 → 18}/node_platform.h +21 -16
- package/src/headers/18/node_process-inl.h +26 -0
- package/src/headers/18/node_process.h +97 -0
- package/src/headers/{13 → 18}/node_report.h +2 -2
- package/src/headers/{13 → 18}/node_revert.h +10 -0
- package/src/headers/{12 → 18}/node_root_certs.h +439 -651
- package/src/headers/18/node_snapshot_builder.h +43 -0
- package/src/headers/18/node_snapshotable.h +130 -0
- package/src/headers/{12 → 18}/node_sockaddr-inl.h +100 -4
- package/src/headers/18/node_sockaddr.h +405 -0
- package/src/headers/{13 → 18}/node_stat_watcher.h +7 -1
- package/src/headers/{12 → 18}/node_union_bytes.h +0 -0
- package/src/headers/{13 → 18}/node_url.h +18 -1
- package/src/headers/18/node_v8.h +41 -0
- package/src/headers/{12 → 18}/node_v8_platform-inl.h +10 -0
- package/src/headers/{13 → 18}/node_version.h +7 -7
- package/src/headers/{12 → 18}/node_wasi.h +0 -0
- package/src/headers/18/node_wasm_web_api.h +55 -0
- package/src/headers/{13 → 18}/node_watchdog.h +0 -0
- package/src/headers/{10 → 18}/node_win32_etw_provider-inl.h +7 -6
- package/src/headers/{10 → 18}/node_win32_etw_provider.h +0 -0
- package/src/headers/{13 → 18}/node_worker.h +24 -17
- package/src/headers/{12 → 18}/pipe_wrap.h +2 -0
- package/src/headers/{12 → 18}/req_wrap-inl.h +0 -0
- package/src/headers/{13 → 18}/req_wrap.h +1 -1
- package/src/headers/{12 → 18}/spawn_sync.h +0 -0
- package/src/headers/{13 → 18}/stream_base-inl.h +58 -22
- package/src/headers/{13 → 18}/stream_base.h +29 -3
- package/src/headers/{13 → 18}/stream_pipe.h +8 -3
- package/src/headers/{12 → 18}/stream_wrap.h +4 -1
- package/src/headers/{13 → 18}/string_bytes.h +0 -7
- package/src/headers/{12 → 18}/string_decoder-inl.h +0 -0
- package/src/headers/{10 → 18}/string_decoder.h +0 -0
- package/src/headers/{13 → 18}/string_search.h +2 -2
- package/src/headers/{12 → 18}/tcp_wrap.h +4 -0
- package/src/headers/{12 → 18}/threadpoolwork-inl.h +0 -0
- package/src/headers/18/timer_wrap-inl.h +32 -0
- package/src/headers/18/timer_wrap.h +85 -0
- package/src/headers/{13 → 18}/tracing/agent.h +1 -1
- package/src/headers/{12 → 18}/tracing/node_trace_buffer.h +0 -0
- package/src/headers/{12 → 18}/tracing/node_trace_writer.h +0 -0
- package/src/headers/{13 → 18}/tracing/trace_event.h +23 -13
- package/src/headers/{12 → 18}/tracing/trace_event_common.h +0 -0
- package/src/headers/{12 → 18}/tracing/traced_value.h +0 -0
- package/src/headers/{13 → 18}/tty_wrap.h +2 -1
- package/src/headers/{13 → 18}/udp_wrap.h +5 -0
- package/src/headers/{13 → 18}/util-inl.h +69 -15
- package/src/headers/{13 → 18}/util.h +93 -31
- package/src/headers/18/v8-fast-api-calls.h +939 -0
- package/src/headers/{12 → 18}/v8abbr.h +2 -2
- package/dist/bindings/cws_darwin_64.node +0 -0
- package/dist/bindings/cws_darwin_72.node +0 -0
- package/dist/bindings/cws_darwin_79.node +0 -0
- package/dist/bindings/cws_darwin_83.node +0 -0
- package/dist/bindings/cws_darwin_93.node +0 -0
- package/dist/bindings/cws_linux_64.node +0 -0
- package/dist/bindings/cws_linux_72.node +0 -0
- package/dist/bindings/cws_linux_79.node +0 -0
- package/dist/bindings/cws_linux_83.node +0 -0
- package/dist/bindings/cws_linux_93.node +0 -0
- package/dist/bindings/cws_win32_64.node +0 -0
- package/dist/bindings/cws_win32_72.node +0 -0
- package/dist/bindings/cws_win32_79.node +0 -0
- package/dist/bindings/cws_win32_83.node +0 -0
- package/dist/bindings/cws_win32_93.node +0 -0
- package/src/headers/10/aliased_buffer.h +0 -241
- package/src/headers/10/async_wrap-inl.h +0 -106
- package/src/headers/10/async_wrap.h +0 -218
- package/src/headers/10/base64.h +0 -197
- package/src/headers/10/base_object-inl.h +0 -132
- package/src/headers/10/base_object.h +0 -115
- package/src/headers/10/connect_wrap.h +0 -28
- package/src/headers/10/connection_wrap.h +0 -30
- package/src/headers/10/debug_utils.h +0 -128
- package/src/headers/10/env-inl.h +0 -906
- package/src/headers/10/env.h +0 -1046
- package/src/headers/10/handle_wrap.h +0 -114
- package/src/headers/10/inspector_agent.h +0 -137
- package/src/headers/10/inspector_io.h +0 -97
- package/src/headers/10/inspector_socket.h +0 -59
- package/src/headers/10/inspector_socket_server.h +0 -104
- package/src/headers/10/js_stream.h +0 -57
- package/src/headers/10/memory_tracker-inl.h +0 -318
- package/src/headers/10/memory_tracker.h +0 -246
- package/src/headers/10/module_wrap.h +0 -100
- package/src/headers/10/node.h +0 -863
- package/src/headers/10/node_api.h +0 -752
- package/src/headers/10/node_api_types.h +0 -171
- package/src/headers/10/node_buffer.h +0 -90
- package/src/headers/10/node_code_cache.h +0 -17
- package/src/headers/10/node_constants.h +0 -74
- package/src/headers/10/node_context_data.h +0 -39
- package/src/headers/10/node_contextify.h +0 -141
- package/src/headers/10/node_counters.h +0 -59
- package/src/headers/10/node_crypto.h +0 -699
- package/src/headers/10/node_crypto_bio.h +0 -177
- package/src/headers/10/node_crypto_clienthello-inl.h +0 -92
- package/src/headers/10/node_crypto_clienthello.h +0 -131
- package/src/headers/10/node_crypto_groups.h +0 -416
- package/src/headers/10/node_dtrace.h +0 -84
- package/src/headers/10/node_errors.h +0 -118
- package/src/headers/10/node_file.h +0 -373
- package/src/headers/10/node_http2.h +0 -1304
- package/src/headers/10/node_http2_state.h +0 -158
- package/src/headers/10/node_i18n.h +0 -69
- package/src/headers/10/node_internals.h +0 -952
- package/src/headers/10/node_messaging.h +0 -219
- package/src/headers/10/node_mutex.h +0 -191
- package/src/headers/10/node_object_wrap.h +0 -130
- package/src/headers/10/node_options-inl.h +0 -444
- package/src/headers/10/node_options.h +0 -397
- package/src/headers/10/node_perf.h +0 -134
- package/src/headers/10/node_perf_common.h +0 -96
- package/src/headers/10/node_persistent.h +0 -30
- package/src/headers/10/node_platform.h +0 -170
- package/src/headers/10/node_revert.h +0 -75
- package/src/headers/10/node_root_certs.h +0 -3393
- package/src/headers/10/node_stat_watcher.h +0 -65
- package/src/headers/10/node_url.h +0 -193
- package/src/headers/10/node_version.h +0 -120
- package/src/headers/10/node_watchdog.h +0 -114
- package/src/headers/10/node_win32_perfctr_provider.h +0 -58
- package/src/headers/10/node_worker.h +0 -94
- package/src/headers/10/pipe_wrap.h +0 -76
- package/src/headers/10/req_wrap-inl.h +0 -166
- package/src/headers/10/req_wrap.h +0 -61
- package/src/headers/10/sharedarraybuffer_metadata.h +0 -67
- package/src/headers/10/spawn_sync.h +0 -240
- package/src/headers/10/stream_base-inl.h +0 -458
- package/src/headers/10/stream_base.h +0 -378
- package/src/headers/10/stream_pipe.h +0 -72
- package/src/headers/10/stream_wrap.h +0 -130
- package/src/headers/10/string_bytes.h +0 -126
- package/src/headers/10/string_decoder-inl.h +0 -38
- package/src/headers/10/string_search.h +0 -620
- package/src/headers/10/tcp_wrap.h +0 -99
- package/src/headers/10/tls_wrap.h +0 -195
- package/src/headers/10/tracing/agent.h +0 -178
- package/src/headers/10/tracing/node_trace_buffer.h +0 -83
- package/src/headers/10/tracing/node_trace_writer.h +0 -75
- package/src/headers/10/tracing/trace_event.h +0 -706
- package/src/headers/10/tracing/trace_event_common.h +0 -1102
- package/src/headers/10/tracing/traced_value.h +0 -68
- package/src/headers/10/tty_wrap.h +0 -63
- package/src/headers/10/udp_wrap.h +0 -102
- package/src/headers/10/util-inl.h +0 -459
- package/src/headers/10/util.h +0 -508
- package/src/headers/10/v8abbr.h +0 -121
- package/src/headers/12/aliased_buffer.h +0 -263
- package/src/headers/12/debug_utils.h +0 -181
- package/src/headers/12/histogram-inl.h +0 -83
- package/src/headers/12/histogram.h +0 -98
- package/src/headers/12/http_parser_adaptor.h +0 -24
- package/src/headers/12/inspector_agent.h +0 -147
- package/src/headers/12/inspector_profiler.h +0 -137
- package/src/headers/12/js_native_api.h +0 -541
- package/src/headers/12/js_native_api_types.h +0 -139
- package/src/headers/12/memory_tracker-inl.h +0 -339
- package/src/headers/12/memory_tracker.h +0 -283
- package/src/headers/12/module_wrap.h +0 -99
- package/src/headers/12/node.h +0 -887
- package/src/headers/12/node_api.h +0 -239
- package/src/headers/12/node_buffer.h +0 -92
- package/src/headers/12/node_constants.h +0 -80
- package/src/headers/12/node_crypto.h +0 -800
- package/src/headers/12/node_crypto_bio.h +0 -195
- package/src/headers/12/node_crypto_clienthello-inl.h +0 -91
- package/src/headers/12/node_crypto_clienthello.h +0 -132
- package/src/headers/12/node_file-inl.h +0 -289
- package/src/headers/12/node_http2.h +0 -1311
- package/src/headers/12/node_http_parser_impl.h +0 -994
- package/src/headers/12/node_i18n.h +0 -144
- package/src/headers/12/node_messaging.h +0 -227
- package/src/headers/12/node_options-inl.h +0 -447
- package/src/headers/12/node_options.h +0 -479
- package/src/headers/12/node_perf.h +0 -181
- package/src/headers/12/node_process.h +0 -41
- package/src/headers/12/node_report.h +0 -47
- package/src/headers/12/node_revert.h +0 -78
- package/src/headers/12/node_sockaddr.h +0 -123
- package/src/headers/12/node_stat_watcher.h +0 -66
- package/src/headers/12/node_url.h +0 -188
- package/src/headers/12/node_version.h +0 -98
- package/src/headers/12/node_watchdog.h +0 -152
- package/src/headers/12/node_win32_etw_provider-inl.h +0 -287
- package/src/headers/12/node_win32_etw_provider.h +0 -99
- package/src/headers/12/node_worker.h +0 -142
- package/src/headers/12/req_wrap.h +0 -77
- package/src/headers/12/sharedarraybuffer_metadata.h +0 -72
- package/src/headers/12/stream_base-inl.h +0 -323
- package/src/headers/12/stream_base.h +0 -431
- package/src/headers/12/stream_pipe.h +0 -72
- package/src/headers/12/string_bytes.h +0 -142
- package/src/headers/12/string_decoder.h +0 -50
- package/src/headers/12/string_search.h +0 -638
- package/src/headers/12/tracing/agent.h +0 -195
- package/src/headers/12/tracing/trace_event.h +0 -710
- package/src/headers/12/tty_wrap.h +0 -64
- package/src/headers/12/udp_wrap.h +0 -222
- package/src/headers/12/util-inl.h +0 -529
- package/src/headers/12/util.h +0 -765
- package/src/headers/13/async_wrap-inl.h +0 -94
- package/src/headers/13/async_wrap.h +0 -224
- package/src/headers/13/base64.h +0 -197
- package/src/headers/13/base_object-inl.h +0 -353
- package/src/headers/13/base_object.h +0 -229
- package/src/headers/13/connect_wrap.h +0 -26
- package/src/headers/13/connection_wrap.h +0 -30
- package/src/headers/13/debug_utils-inl.h +0 -223
- package/src/headers/13/diagnosticfilename-inl.h +0 -33
- package/src/headers/13/env-inl.h +0 -1293
- package/src/headers/13/env.h +0 -1469
- package/src/headers/13/handle_wrap.h +0 -117
- package/src/headers/13/histogram-inl.h +0 -83
- package/src/headers/13/histogram.h +0 -98
- package/src/headers/13/inspector_io.h +0 -78
- package/src/headers/13/inspector_socket.h +0 -60
- package/src/headers/13/inspector_socket_server.h +0 -110
- package/src/headers/13/js_native_api.h +0 -541
- package/src/headers/13/js_native_api_v8.h +0 -303
- package/src/headers/13/js_native_api_v8_internals.h +0 -38
- package/src/headers/13/js_stream.h +0 -52
- package/src/headers/13/json_utils.h +0 -160
- package/src/headers/13/node_api.h +0 -239
- package/src/headers/13/node_api_types.h +0 -44
- package/src/headers/13/node_binding.h +0 -99
- package/src/headers/13/node_context_data.h +0 -39
- package/src/headers/13/node_contextify.h +0 -161
- package/src/headers/13/node_crypto.h +0 -800
- package/src/headers/13/node_crypto_common.h +0 -138
- package/src/headers/13/node_crypto_groups.h +0 -415
- package/src/headers/13/node_dir.h +0 -52
- package/src/headers/13/node_dtrace.h +0 -86
- package/src/headers/13/node_errors.h +0 -210
- package/src/headers/13/node_file.h +0 -364
- package/src/headers/13/node_http2_state.h +0 -144
- package/src/headers/13/node_internals.h +0 -405
- package/src/headers/13/node_main_instance.h +0 -97
- package/src/headers/13/node_mem-inl.h +0 -112
- package/src/headers/13/node_mem.h +0 -41
- package/src/headers/13/node_metadata.h +0 -109
- package/src/headers/13/node_mutex.h +0 -247
- package/src/headers/13/node_native_module.h +0 -99
- package/src/headers/13/node_native_module_env.h +0 -65
- package/src/headers/13/node_object_wrap.h +0 -132
- package/src/headers/13/node_perf.h +0 -181
- package/src/headers/13/node_perf_common.h +0 -97
- package/src/headers/13/node_platform.h +0 -190
- package/src/headers/13/node_process.h +0 -41
- package/src/headers/13/node_root_certs.h +0 -3424
- package/src/headers/13/node_sockaddr-inl.h +0 -170
- package/src/headers/13/node_sockaddr.h +0 -123
- package/src/headers/13/node_union_bytes.h +0 -103
- package/src/headers/13/node_v8_platform-inl.h +0 -184
- package/src/headers/13/node_wasi.h +0 -108
- package/src/headers/13/node_win32_etw_provider-inl.h +0 -287
- package/src/headers/13/node_win32_etw_provider.h +0 -99
- package/src/headers/13/pipe_wrap.h +0 -78
- package/src/headers/13/req_wrap-inl.h +0 -170
- package/src/headers/13/spawn_sync.h +0 -242
- package/src/headers/13/stream_wrap.h +0 -130
- package/src/headers/13/string_decoder-inl.h +0 -37
- package/src/headers/13/string_decoder.h +0 -50
- package/src/headers/13/tcp_wrap.h +0 -101
- package/src/headers/13/threadpoolwork-inl.h +0 -57
- package/src/headers/13/tls_wrap.h +0 -221
- package/src/headers/13/tracing/node_trace_buffer.h +0 -83
- package/src/headers/13/tracing/node_trace_writer.h +0 -75
- package/src/headers/13/tracing/trace_event_common.h +0 -1109
- package/src/headers/13/tracing/traced_value.h +0 -70
- package/src/headers/13/v8abbr.h +0 -124
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
#ifndef SRC_NODE_API_H_
|
|
2
|
+
#define SRC_NODE_API_H_
|
|
3
|
+
|
|
4
|
+
#ifdef BUILDING_NODE_EXTENSION
|
|
5
|
+
#ifdef _WIN32
|
|
6
|
+
// Building native module against node
|
|
7
|
+
#define NAPI_EXTERN __declspec(dllimport)
|
|
8
|
+
#elif defined(__wasm32__)
|
|
9
|
+
#define NAPI_EXTERN __attribute__((__import_module__("napi")))
|
|
10
|
+
#endif
|
|
11
|
+
#endif
|
|
12
|
+
#include "js_native_api.h"
|
|
13
|
+
#include "node_api_types.h"
|
|
14
|
+
|
|
15
|
+
struct uv_loop_s; // Forward declaration.
|
|
16
|
+
|
|
17
|
+
#ifdef _WIN32
|
|
18
|
+
#define NAPI_MODULE_EXPORT __declspec(dllexport)
|
|
19
|
+
#else
|
|
20
|
+
#define NAPI_MODULE_EXPORT __attribute__((visibility("default")))
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
#if defined(__GNUC__)
|
|
24
|
+
#define NAPI_NO_RETURN __attribute__((noreturn))
|
|
25
|
+
#elif defined(_WIN32)
|
|
26
|
+
#define NAPI_NO_RETURN __declspec(noreturn)
|
|
27
|
+
#else
|
|
28
|
+
#define NAPI_NO_RETURN
|
|
29
|
+
#endif
|
|
30
|
+
|
|
31
|
+
typedef napi_value(NAPI_CDECL* napi_addon_register_func)(napi_env env,
|
|
32
|
+
napi_value exports);
|
|
33
|
+
|
|
34
|
+
typedef struct napi_module {
|
|
35
|
+
int nm_version;
|
|
36
|
+
unsigned int nm_flags;
|
|
37
|
+
const char* nm_filename;
|
|
38
|
+
napi_addon_register_func nm_register_func;
|
|
39
|
+
const char* nm_modname;
|
|
40
|
+
void* nm_priv;
|
|
41
|
+
void* reserved[4];
|
|
42
|
+
} napi_module;
|
|
43
|
+
|
|
44
|
+
#define NAPI_MODULE_VERSION 1
|
|
45
|
+
|
|
46
|
+
#if defined(_MSC_VER)
|
|
47
|
+
#if defined(__cplusplus)
|
|
48
|
+
#define NAPI_C_CTOR(fn) \
|
|
49
|
+
static void NAPI_CDECL fn(void); \
|
|
50
|
+
namespace { \
|
|
51
|
+
struct fn##_ { \
|
|
52
|
+
fn##_() { fn(); } \
|
|
53
|
+
} fn##_v_; \
|
|
54
|
+
} \
|
|
55
|
+
static void NAPI_CDECL fn(void)
|
|
56
|
+
#else // !defined(__cplusplus)
|
|
57
|
+
#pragma section(".CRT$XCU", read)
|
|
58
|
+
// The NAPI_C_CTOR macro defines a function fn that is called during CRT
|
|
59
|
+
// initialization.
|
|
60
|
+
// C does not support dynamic initialization of static variables and this code
|
|
61
|
+
// simulates C++ behavior. Exporting the function pointer prevents it from being
|
|
62
|
+
// optimized. See for details:
|
|
63
|
+
// https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-initialization?view=msvc-170
|
|
64
|
+
#define NAPI_C_CTOR(fn) \
|
|
65
|
+
static void NAPI_CDECL fn(void); \
|
|
66
|
+
__declspec(dllexport, allocate(".CRT$XCU")) void(NAPI_CDECL * fn##_)(void) = \
|
|
67
|
+
fn; \
|
|
68
|
+
static void NAPI_CDECL fn(void)
|
|
69
|
+
#endif // defined(__cplusplus)
|
|
70
|
+
#else
|
|
71
|
+
#define NAPI_C_CTOR(fn) \
|
|
72
|
+
static void fn(void) __attribute__((constructor)); \
|
|
73
|
+
static void fn(void)
|
|
74
|
+
#endif
|
|
75
|
+
|
|
76
|
+
#define NAPI_MODULE_X(modname, regfunc, priv, flags) \
|
|
77
|
+
EXTERN_C_START \
|
|
78
|
+
static napi_module _module = { \
|
|
79
|
+
NAPI_MODULE_VERSION, \
|
|
80
|
+
flags, \
|
|
81
|
+
__FILE__, \
|
|
82
|
+
regfunc, \
|
|
83
|
+
#modname, \
|
|
84
|
+
priv, \
|
|
85
|
+
{0}, \
|
|
86
|
+
}; \
|
|
87
|
+
NAPI_C_CTOR(_register_##modname) { napi_module_register(&_module); } \
|
|
88
|
+
EXTERN_C_END
|
|
89
|
+
|
|
90
|
+
#define NAPI_MODULE_INITIALIZER_X(base, version) \
|
|
91
|
+
NAPI_MODULE_INITIALIZER_X_HELPER(base, version)
|
|
92
|
+
#define NAPI_MODULE_INITIALIZER_X_HELPER(base, version) base##version
|
|
93
|
+
|
|
94
|
+
#ifdef __wasm32__
|
|
95
|
+
#define NAPI_WASM_INITIALIZER \
|
|
96
|
+
NAPI_MODULE_INITIALIZER_X(napi_register_wasm_v, NAPI_MODULE_VERSION)
|
|
97
|
+
#define NAPI_MODULE(modname, regfunc) \
|
|
98
|
+
EXTERN_C_START \
|
|
99
|
+
NAPI_MODULE_EXPORT napi_value NAPI_WASM_INITIALIZER(napi_env env, \
|
|
100
|
+
napi_value exports) { \
|
|
101
|
+
return regfunc(env, exports); \
|
|
102
|
+
} \
|
|
103
|
+
EXTERN_C_END
|
|
104
|
+
#else
|
|
105
|
+
#define NAPI_MODULE(modname, regfunc) \
|
|
106
|
+
NAPI_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage)
|
|
107
|
+
#endif
|
|
108
|
+
|
|
109
|
+
#define NAPI_MODULE_INITIALIZER_BASE napi_register_module_v
|
|
110
|
+
|
|
111
|
+
#define NAPI_MODULE_INITIALIZER \
|
|
112
|
+
NAPI_MODULE_INITIALIZER_X(NAPI_MODULE_INITIALIZER_BASE, NAPI_MODULE_VERSION)
|
|
113
|
+
|
|
114
|
+
#define NAPI_MODULE_INIT() \
|
|
115
|
+
EXTERN_C_START \
|
|
116
|
+
NAPI_MODULE_EXPORT napi_value NAPI_MODULE_INITIALIZER(napi_env env, \
|
|
117
|
+
napi_value exports); \
|
|
118
|
+
EXTERN_C_END \
|
|
119
|
+
NAPI_MODULE(NODE_GYP_MODULE_NAME, NAPI_MODULE_INITIALIZER) \
|
|
120
|
+
napi_value NAPI_MODULE_INITIALIZER(napi_env env, napi_value exports)
|
|
121
|
+
|
|
122
|
+
EXTERN_C_START
|
|
123
|
+
|
|
124
|
+
NAPI_EXTERN void NAPI_CDECL napi_module_register(napi_module* mod);
|
|
125
|
+
|
|
126
|
+
NAPI_EXTERN NAPI_NO_RETURN void NAPI_CDECL
|
|
127
|
+
napi_fatal_error(const char* location,
|
|
128
|
+
size_t location_len,
|
|
129
|
+
const char* message,
|
|
130
|
+
size_t message_len);
|
|
131
|
+
|
|
132
|
+
// Methods for custom handling of async operations
|
|
133
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
134
|
+
napi_async_init(napi_env env,
|
|
135
|
+
napi_value async_resource,
|
|
136
|
+
napi_value async_resource_name,
|
|
137
|
+
napi_async_context* result);
|
|
138
|
+
|
|
139
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
140
|
+
napi_async_destroy(napi_env env, napi_async_context async_context);
|
|
141
|
+
|
|
142
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
143
|
+
napi_make_callback(napi_env env,
|
|
144
|
+
napi_async_context async_context,
|
|
145
|
+
napi_value recv,
|
|
146
|
+
napi_value func,
|
|
147
|
+
size_t argc,
|
|
148
|
+
const napi_value* argv,
|
|
149
|
+
napi_value* result);
|
|
150
|
+
|
|
151
|
+
// Methods to provide node::Buffer functionality with napi types
|
|
152
|
+
NAPI_EXTERN napi_status NAPI_CDECL napi_create_buffer(napi_env env,
|
|
153
|
+
size_t length,
|
|
154
|
+
void** data,
|
|
155
|
+
napi_value* result);
|
|
156
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
157
|
+
napi_create_external_buffer(napi_env env,
|
|
158
|
+
size_t length,
|
|
159
|
+
void* data,
|
|
160
|
+
napi_finalize finalize_cb,
|
|
161
|
+
void* finalize_hint,
|
|
162
|
+
napi_value* result);
|
|
163
|
+
NAPI_EXTERN napi_status NAPI_CDECL napi_create_buffer_copy(napi_env env,
|
|
164
|
+
size_t length,
|
|
165
|
+
const void* data,
|
|
166
|
+
void** result_data,
|
|
167
|
+
napi_value* result);
|
|
168
|
+
NAPI_EXTERN napi_status NAPI_CDECL napi_is_buffer(napi_env env,
|
|
169
|
+
napi_value value,
|
|
170
|
+
bool* result);
|
|
171
|
+
NAPI_EXTERN napi_status NAPI_CDECL napi_get_buffer_info(napi_env env,
|
|
172
|
+
napi_value value,
|
|
173
|
+
void** data,
|
|
174
|
+
size_t* length);
|
|
175
|
+
|
|
176
|
+
// Methods to manage simple async operations
|
|
177
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
178
|
+
napi_create_async_work(napi_env env,
|
|
179
|
+
napi_value async_resource,
|
|
180
|
+
napi_value async_resource_name,
|
|
181
|
+
napi_async_execute_callback execute,
|
|
182
|
+
napi_async_complete_callback complete,
|
|
183
|
+
void* data,
|
|
184
|
+
napi_async_work* result);
|
|
185
|
+
NAPI_EXTERN napi_status NAPI_CDECL napi_delete_async_work(napi_env env,
|
|
186
|
+
napi_async_work work);
|
|
187
|
+
NAPI_EXTERN napi_status NAPI_CDECL napi_queue_async_work(napi_env env,
|
|
188
|
+
napi_async_work work);
|
|
189
|
+
NAPI_EXTERN napi_status NAPI_CDECL napi_cancel_async_work(napi_env env,
|
|
190
|
+
napi_async_work work);
|
|
191
|
+
|
|
192
|
+
// version management
|
|
193
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
194
|
+
napi_get_node_version(napi_env env, const napi_node_version** version);
|
|
195
|
+
|
|
196
|
+
#if NAPI_VERSION >= 2
|
|
197
|
+
|
|
198
|
+
// Return the current libuv event loop for a given environment
|
|
199
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
200
|
+
napi_get_uv_event_loop(napi_env env, struct uv_loop_s** loop);
|
|
201
|
+
|
|
202
|
+
#endif // NAPI_VERSION >= 2
|
|
203
|
+
|
|
204
|
+
#if NAPI_VERSION >= 3
|
|
205
|
+
|
|
206
|
+
NAPI_EXTERN napi_status NAPI_CDECL napi_fatal_exception(napi_env env,
|
|
207
|
+
napi_value err);
|
|
208
|
+
|
|
209
|
+
NAPI_EXTERN napi_status NAPI_CDECL napi_add_env_cleanup_hook(
|
|
210
|
+
napi_env env, void(NAPI_CDECL* fun)(void* arg), void* arg);
|
|
211
|
+
|
|
212
|
+
NAPI_EXTERN napi_status NAPI_CDECL napi_remove_env_cleanup_hook(
|
|
213
|
+
napi_env env, void(NAPI_CDECL* fun)(void* arg), void* arg);
|
|
214
|
+
|
|
215
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
216
|
+
napi_open_callback_scope(napi_env env,
|
|
217
|
+
napi_value resource_object,
|
|
218
|
+
napi_async_context context,
|
|
219
|
+
napi_callback_scope* result);
|
|
220
|
+
|
|
221
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
222
|
+
napi_close_callback_scope(napi_env env, napi_callback_scope scope);
|
|
223
|
+
|
|
224
|
+
#endif // NAPI_VERSION >= 3
|
|
225
|
+
|
|
226
|
+
#if NAPI_VERSION >= 4
|
|
227
|
+
|
|
228
|
+
#ifndef __wasm32__
|
|
229
|
+
// Calling into JS from other threads
|
|
230
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
231
|
+
napi_create_threadsafe_function(napi_env env,
|
|
232
|
+
napi_value func,
|
|
233
|
+
napi_value async_resource,
|
|
234
|
+
napi_value async_resource_name,
|
|
235
|
+
size_t max_queue_size,
|
|
236
|
+
size_t initial_thread_count,
|
|
237
|
+
void* thread_finalize_data,
|
|
238
|
+
napi_finalize thread_finalize_cb,
|
|
239
|
+
void* context,
|
|
240
|
+
napi_threadsafe_function_call_js call_js_cb,
|
|
241
|
+
napi_threadsafe_function* result);
|
|
242
|
+
|
|
243
|
+
NAPI_EXTERN napi_status NAPI_CDECL napi_get_threadsafe_function_context(
|
|
244
|
+
napi_threadsafe_function func, void** result);
|
|
245
|
+
|
|
246
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
247
|
+
napi_call_threadsafe_function(napi_threadsafe_function func,
|
|
248
|
+
void* data,
|
|
249
|
+
napi_threadsafe_function_call_mode is_blocking);
|
|
250
|
+
|
|
251
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
252
|
+
napi_acquire_threadsafe_function(napi_threadsafe_function func);
|
|
253
|
+
|
|
254
|
+
NAPI_EXTERN napi_status NAPI_CDECL napi_release_threadsafe_function(
|
|
255
|
+
napi_threadsafe_function func, napi_threadsafe_function_release_mode mode);
|
|
256
|
+
|
|
257
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
258
|
+
napi_unref_threadsafe_function(napi_env env, napi_threadsafe_function func);
|
|
259
|
+
|
|
260
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
261
|
+
napi_ref_threadsafe_function(napi_env env, napi_threadsafe_function func);
|
|
262
|
+
#endif // __wasm32__
|
|
263
|
+
|
|
264
|
+
#endif // NAPI_VERSION >= 4
|
|
265
|
+
|
|
266
|
+
#if NAPI_VERSION >= 8
|
|
267
|
+
|
|
268
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
269
|
+
napi_add_async_cleanup_hook(napi_env env,
|
|
270
|
+
napi_async_cleanup_hook hook,
|
|
271
|
+
void* arg,
|
|
272
|
+
napi_async_cleanup_hook_handle* remove_handle);
|
|
273
|
+
|
|
274
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
275
|
+
napi_remove_async_cleanup_hook(napi_async_cleanup_hook_handle remove_handle);
|
|
276
|
+
|
|
277
|
+
#endif // NAPI_VERSION >= 8
|
|
278
|
+
|
|
279
|
+
#ifdef NAPI_EXPERIMENTAL
|
|
280
|
+
|
|
281
|
+
NAPI_EXTERN napi_status NAPI_CDECL
|
|
282
|
+
node_api_get_module_file_name(napi_env env, const char** result);
|
|
283
|
+
|
|
284
|
+
#endif // NAPI_EXPERIMENTAL
|
|
285
|
+
|
|
286
|
+
EXTERN_C_END
|
|
287
|
+
|
|
288
|
+
#endif // SRC_NODE_API_H_
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#ifndef SRC_NODE_API_INTERNALS_H_
|
|
2
|
+
#define SRC_NODE_API_INTERNALS_H_
|
|
3
|
+
|
|
4
|
+
#include "v8.h"
|
|
5
|
+
#define NAPI_EXPERIMENTAL
|
|
6
|
+
#include "env-inl.h"
|
|
7
|
+
#include "js_native_api_v8.h"
|
|
8
|
+
#include "node_api.h"
|
|
9
|
+
#include "util-inl.h"
|
|
10
|
+
|
|
11
|
+
struct node_napi_env__ : public napi_env__ {
|
|
12
|
+
node_napi_env__(v8::Local<v8::Context> context,
|
|
13
|
+
const std::string& module_filename);
|
|
14
|
+
~node_napi_env__();
|
|
15
|
+
|
|
16
|
+
bool can_call_into_js() const override;
|
|
17
|
+
v8::Maybe<bool> mark_arraybuffer_as_untransferable(
|
|
18
|
+
v8::Local<v8::ArrayBuffer> ab) const override;
|
|
19
|
+
void CallFinalizer(napi_finalize cb, void* data, void* hint) override;
|
|
20
|
+
template <bool enforceUncaughtExceptionPolicy>
|
|
21
|
+
void CallFinalizer(napi_finalize cb, void* data, void* hint);
|
|
22
|
+
|
|
23
|
+
void trigger_fatal_exception(v8::Local<v8::Value> local_err);
|
|
24
|
+
template <bool enforceUncaughtExceptionPolicy, typename T>
|
|
25
|
+
void CallbackIntoModule(T&& call);
|
|
26
|
+
|
|
27
|
+
inline node::Environment* node_env() const {
|
|
28
|
+
return node::Environment::GetCurrent(context());
|
|
29
|
+
}
|
|
30
|
+
inline const char* GetFilename() const { return filename.c_str(); }
|
|
31
|
+
|
|
32
|
+
std::string filename;
|
|
33
|
+
bool destructing = false;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
using node_napi_env = node_napi_env__*;
|
|
37
|
+
|
|
38
|
+
#endif // SRC_NODE_API_INTERNALS_H_
|
|
@@ -22,16 +22,13 @@ typedef enum {
|
|
|
22
22
|
} napi_threadsafe_function_call_mode;
|
|
23
23
|
#endif // NAPI_VERSION >= 4
|
|
24
24
|
|
|
25
|
-
typedef void
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
void* data);
|
|
25
|
+
typedef void(NAPI_CDECL* napi_async_execute_callback)(napi_env env, void* data);
|
|
26
|
+
typedef void(NAPI_CDECL* napi_async_complete_callback)(napi_env env,
|
|
27
|
+
napi_status status,
|
|
28
|
+
void* data);
|
|
30
29
|
#if NAPI_VERSION >= 4
|
|
31
|
-
typedef void
|
|
32
|
-
|
|
33
|
-
void* context,
|
|
34
|
-
void* data);
|
|
30
|
+
typedef void(NAPI_CDECL* napi_threadsafe_function_call_js)(
|
|
31
|
+
napi_env env, napi_value js_callback, void* context, void* data);
|
|
35
32
|
#endif // NAPI_VERSION >= 4
|
|
36
33
|
|
|
37
34
|
typedef struct {
|
|
@@ -41,4 +38,10 @@ typedef struct {
|
|
|
41
38
|
const char* release;
|
|
42
39
|
} napi_node_version;
|
|
43
40
|
|
|
41
|
+
#if NAPI_VERSION >= 8
|
|
42
|
+
typedef struct napi_async_cleanup_hook_handle__* napi_async_cleanup_hook_handle;
|
|
43
|
+
typedef void(NAPI_CDECL* napi_async_cleanup_hook)(
|
|
44
|
+
napi_async_cleanup_hook_handle handle, void* data);
|
|
45
|
+
#endif // NAPI_VERSION >= 8
|
|
46
|
+
|
|
44
47
|
#endif // SRC_NODE_API_TYPES_H_
|
|
File without changes
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
#ifndef SRC_NODE_BLOB_H_
|
|
2
|
+
#define SRC_NODE_BLOB_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "async_wrap.h"
|
|
7
|
+
#include "base_object.h"
|
|
8
|
+
#include "env.h"
|
|
9
|
+
#include "memory_tracker.h"
|
|
10
|
+
#include "node_internals.h"
|
|
11
|
+
#include "node_snapshotable.h"
|
|
12
|
+
#include "node_worker.h"
|
|
13
|
+
#include "v8.h"
|
|
14
|
+
|
|
15
|
+
#include <string>
|
|
16
|
+
#include <unordered_map>
|
|
17
|
+
#include <vector>
|
|
18
|
+
|
|
19
|
+
namespace node {
|
|
20
|
+
|
|
21
|
+
struct BlobEntry {
|
|
22
|
+
std::shared_ptr<v8::BackingStore> store;
|
|
23
|
+
size_t length;
|
|
24
|
+
size_t offset;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
class Blob : public BaseObject {
|
|
28
|
+
public:
|
|
29
|
+
static void RegisterExternalReferences(
|
|
30
|
+
ExternalReferenceRegistry* registry);
|
|
31
|
+
|
|
32
|
+
static void Initialize(
|
|
33
|
+
v8::Local<v8::Object> target,
|
|
34
|
+
v8::Local<v8::Value> unused,
|
|
35
|
+
v8::Local<v8::Context> context,
|
|
36
|
+
void* priv);
|
|
37
|
+
|
|
38
|
+
static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
39
|
+
static void ToArrayBuffer(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
40
|
+
static void ToSlice(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
41
|
+
static void StoreDataObject(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
42
|
+
static void GetDataObject(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
43
|
+
static void RevokeDataObject(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
44
|
+
|
|
45
|
+
static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
|
|
46
|
+
Environment* env);
|
|
47
|
+
|
|
48
|
+
static BaseObjectPtr<Blob> Create(
|
|
49
|
+
Environment* env,
|
|
50
|
+
const std::vector<BlobEntry> store,
|
|
51
|
+
size_t length);
|
|
52
|
+
|
|
53
|
+
static bool HasInstance(Environment* env, v8::Local<v8::Value> object);
|
|
54
|
+
|
|
55
|
+
const std::vector<BlobEntry> entries() const {
|
|
56
|
+
return store_;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
60
|
+
SET_MEMORY_INFO_NAME(Blob)
|
|
61
|
+
SET_SELF_SIZE(Blob)
|
|
62
|
+
|
|
63
|
+
// Copies the contents of the Blob into an ArrayBuffer.
|
|
64
|
+
v8::MaybeLocal<v8::Value> GetArrayBuffer(Environment* env);
|
|
65
|
+
|
|
66
|
+
BaseObjectPtr<Blob> Slice(Environment* env, size_t start, size_t end);
|
|
67
|
+
|
|
68
|
+
inline size_t length() const { return length_; }
|
|
69
|
+
|
|
70
|
+
class BlobTransferData : public worker::TransferData {
|
|
71
|
+
public:
|
|
72
|
+
explicit BlobTransferData(
|
|
73
|
+
const std::vector<BlobEntry>& store,
|
|
74
|
+
size_t length)
|
|
75
|
+
: store_(store),
|
|
76
|
+
length_(length) {}
|
|
77
|
+
|
|
78
|
+
BaseObjectPtr<BaseObject> Deserialize(
|
|
79
|
+
Environment* env,
|
|
80
|
+
v8::Local<v8::Context> context,
|
|
81
|
+
std::unique_ptr<worker::TransferData> self) override;
|
|
82
|
+
|
|
83
|
+
SET_MEMORY_INFO_NAME(BlobTransferData)
|
|
84
|
+
SET_SELF_SIZE(BlobTransferData)
|
|
85
|
+
SET_NO_MEMORY_INFO()
|
|
86
|
+
|
|
87
|
+
private:
|
|
88
|
+
std::vector<BlobEntry> store_;
|
|
89
|
+
size_t length_ = 0;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
BaseObject::TransferMode GetTransferMode() const override;
|
|
93
|
+
std::unique_ptr<worker::TransferData> CloneForMessaging() const override;
|
|
94
|
+
|
|
95
|
+
Blob(
|
|
96
|
+
Environment* env,
|
|
97
|
+
v8::Local<v8::Object> obj,
|
|
98
|
+
const std::vector<BlobEntry>& store,
|
|
99
|
+
size_t length);
|
|
100
|
+
|
|
101
|
+
private:
|
|
102
|
+
std::vector<BlobEntry> store_;
|
|
103
|
+
size_t length_ = 0;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
class FixedSizeBlobCopyJob : public AsyncWrap, public ThreadPoolWork {
|
|
107
|
+
public:
|
|
108
|
+
enum class Mode {
|
|
109
|
+
SYNC,
|
|
110
|
+
ASYNC
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
static void RegisterExternalReferences(
|
|
114
|
+
ExternalReferenceRegistry* registry);
|
|
115
|
+
static void Initialize(Environment* env, v8::Local<v8::Object> target);
|
|
116
|
+
static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
117
|
+
static void Run(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
118
|
+
|
|
119
|
+
bool IsNotIndicativeOfMemoryLeakAtExit() const override {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
void DoThreadPoolWork() override;
|
|
124
|
+
void AfterThreadPoolWork(int status) override;
|
|
125
|
+
|
|
126
|
+
Mode mode() const { return mode_; }
|
|
127
|
+
|
|
128
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
129
|
+
SET_MEMORY_INFO_NAME(FixedSizeBlobCopyJob)
|
|
130
|
+
SET_SELF_SIZE(FixedSizeBlobCopyJob)
|
|
131
|
+
|
|
132
|
+
private:
|
|
133
|
+
FixedSizeBlobCopyJob(
|
|
134
|
+
Environment* env,
|
|
135
|
+
v8::Local<v8::Object> object,
|
|
136
|
+
Blob* blob,
|
|
137
|
+
Mode mode = Mode::ASYNC);
|
|
138
|
+
|
|
139
|
+
Mode mode_;
|
|
140
|
+
std::vector<BlobEntry> source_;
|
|
141
|
+
std::shared_ptr<v8::BackingStore> destination_;
|
|
142
|
+
size_t length_ = 0;
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
class BlobBindingData : public SnapshotableObject {
|
|
146
|
+
public:
|
|
147
|
+
explicit BlobBindingData(Environment* env, v8::Local<v8::Object> wrap);
|
|
148
|
+
|
|
149
|
+
SERIALIZABLE_OBJECT_METHODS()
|
|
150
|
+
|
|
151
|
+
static constexpr FastStringKey type_name{"node::BlobBindingData"};
|
|
152
|
+
static constexpr EmbedderObjectType type_int =
|
|
153
|
+
EmbedderObjectType::k_blob_binding_data;
|
|
154
|
+
|
|
155
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
156
|
+
SET_SELF_SIZE(BlobBindingData)
|
|
157
|
+
SET_MEMORY_INFO_NAME(BlobBindingData)
|
|
158
|
+
|
|
159
|
+
struct StoredDataObject : public MemoryRetainer {
|
|
160
|
+
BaseObjectPtr<Blob> blob;
|
|
161
|
+
size_t length;
|
|
162
|
+
std::string type;
|
|
163
|
+
|
|
164
|
+
StoredDataObject() = default;
|
|
165
|
+
|
|
166
|
+
StoredDataObject(
|
|
167
|
+
const BaseObjectPtr<Blob>& blob_,
|
|
168
|
+
size_t length_,
|
|
169
|
+
const std::string& type_);
|
|
170
|
+
|
|
171
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
172
|
+
SET_SELF_SIZE(StoredDataObject)
|
|
173
|
+
SET_MEMORY_INFO_NAME(StoredDataObject)
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
void store_data_object(
|
|
177
|
+
const std::string& uuid,
|
|
178
|
+
const StoredDataObject& object);
|
|
179
|
+
|
|
180
|
+
void revoke_data_object(const std::string& uuid);
|
|
181
|
+
|
|
182
|
+
StoredDataObject get_data_object(const std::string& uuid);
|
|
183
|
+
|
|
184
|
+
private:
|
|
185
|
+
std::unordered_map<std::string, StoredDataObject> data_objects_;
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
} // namespace node
|
|
189
|
+
|
|
190
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
191
|
+
#endif // SRC_NODE_BLOB_H_
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#ifndef SRC_NODE_BOB_INL_H_
|
|
2
|
+
#define SRC_NODE_BOB_INL_H_
|
|
3
|
+
|
|
4
|
+
#include "node_bob.h"
|
|
5
|
+
|
|
6
|
+
#include <functional>
|
|
7
|
+
|
|
8
|
+
namespace node {
|
|
9
|
+
namespace bob {
|
|
10
|
+
|
|
11
|
+
template <typename T>
|
|
12
|
+
int SourceImpl<T>::Pull(
|
|
13
|
+
Next<T> next,
|
|
14
|
+
int options,
|
|
15
|
+
T* data,
|
|
16
|
+
size_t count,
|
|
17
|
+
size_t max_count_hint) {
|
|
18
|
+
|
|
19
|
+
int status;
|
|
20
|
+
if (eos_) {
|
|
21
|
+
status = bob::Status::STATUS_EOS;
|
|
22
|
+
std::move(next)(status, nullptr, 0, [](size_t len) {});
|
|
23
|
+
return status;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
status = DoPull(std::move(next), options, data, count, max_count_hint);
|
|
27
|
+
|
|
28
|
+
if (status == bob::Status::STATUS_END)
|
|
29
|
+
eos_ = true;
|
|
30
|
+
|
|
31
|
+
return status;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
} // namespace bob
|
|
35
|
+
} // namespace node
|
|
36
|
+
|
|
37
|
+
#endif // SRC_NODE_BOB_INL_H_
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#ifndef SRC_NODE_BOB_H_
|
|
2
|
+
#define SRC_NODE_BOB_H_
|
|
3
|
+
|
|
4
|
+
#include <functional>
|
|
5
|
+
|
|
6
|
+
namespace node {
|
|
7
|
+
namespace bob {
|
|
8
|
+
|
|
9
|
+
constexpr size_t kMaxCountHint = 16;
|
|
10
|
+
|
|
11
|
+
// Negative status codes indicate error conditions.
|
|
12
|
+
enum Status : int {
|
|
13
|
+
// Indicates that an attempt was made to pull after end.
|
|
14
|
+
STATUS_EOS = -1,
|
|
15
|
+
|
|
16
|
+
// Indicates the end of the stream. No additional
|
|
17
|
+
// data will be available and the consumer should stop
|
|
18
|
+
// pulling.
|
|
19
|
+
STATUS_END = 0,
|
|
20
|
+
|
|
21
|
+
// Indicates that there is additional data available
|
|
22
|
+
// and the consumer may continue to pull.
|
|
23
|
+
STATUS_CONTINUE = 1,
|
|
24
|
+
|
|
25
|
+
// Indicates that there is no additional data available
|
|
26
|
+
// but the stream has not ended. The consumer should not
|
|
27
|
+
// continue to pull but may resume pulling later when
|
|
28
|
+
// data is available.
|
|
29
|
+
STATUS_BLOCK = 2,
|
|
30
|
+
|
|
31
|
+
// Indicates that there is no additional data available
|
|
32
|
+
// but the stream has not ended and the source will call
|
|
33
|
+
// next again later when data is available. STATUS_WAIT
|
|
34
|
+
// must not be used with the OPTIONS_SYNC option.
|
|
35
|
+
STATUS_WAIT = 3,
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
enum Options : int {
|
|
39
|
+
OPTIONS_NONE = 0,
|
|
40
|
+
|
|
41
|
+
// Indicates that the consumer is requesting the end
|
|
42
|
+
// of the stream.
|
|
43
|
+
OPTIONS_END = 1,
|
|
44
|
+
|
|
45
|
+
// Indicates that the consumer requires the source to
|
|
46
|
+
// invoke Next synchronously. If the source is
|
|
47
|
+
// unable to provide data immediately but the
|
|
48
|
+
// stream has not yet ended, it should call Next
|
|
49
|
+
// using STATUS_BLOCK. When not set, the source
|
|
50
|
+
// may call Next asynchronously.
|
|
51
|
+
OPTIONS_SYNC = 2
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// There are Sources and there are Consumers.
|
|
55
|
+
//
|
|
56
|
+
// Consumers get data by calling Source::Pull,
|
|
57
|
+
// optionally passing along a status and allocated
|
|
58
|
+
// buffer space for the source to fill, and a Next
|
|
59
|
+
// function the Source will call when data is
|
|
60
|
+
// available.
|
|
61
|
+
//
|
|
62
|
+
// The source calls Next to deliver the data. It can
|
|
63
|
+
// choose to either use the allocated buffer space
|
|
64
|
+
// provided by the consumer or it can allocate its own
|
|
65
|
+
// buffers and push those instead. If it allocates
|
|
66
|
+
// its own, it can send a Done function that the
|
|
67
|
+
// Sink will call when it is done consuming the data.
|
|
68
|
+
using Done = std::function<void(size_t)>;
|
|
69
|
+
template <typename T>
|
|
70
|
+
using Next = std::function<void(int, const T*, size_t count, Done done)>;
|
|
71
|
+
|
|
72
|
+
template <typename T>
|
|
73
|
+
class Source {
|
|
74
|
+
public:
|
|
75
|
+
virtual int Pull(
|
|
76
|
+
Next<T> next,
|
|
77
|
+
int options,
|
|
78
|
+
T* data,
|
|
79
|
+
size_t count,
|
|
80
|
+
size_t max_count_hint = kMaxCountHint) = 0;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
template <typename T>
|
|
85
|
+
class SourceImpl : public Source<T> {
|
|
86
|
+
public:
|
|
87
|
+
int Pull(
|
|
88
|
+
Next<T> next,
|
|
89
|
+
int options,
|
|
90
|
+
T* data,
|
|
91
|
+
size_t count,
|
|
92
|
+
size_t max_count_hint = kMaxCountHint) override;
|
|
93
|
+
|
|
94
|
+
bool is_eos() const { return eos_; }
|
|
95
|
+
|
|
96
|
+
protected:
|
|
97
|
+
virtual int DoPull(
|
|
98
|
+
Next<T> next,
|
|
99
|
+
int options,
|
|
100
|
+
T* data,
|
|
101
|
+
size_t count,
|
|
102
|
+
size_t max_count_hint) = 0;
|
|
103
|
+
|
|
104
|
+
private:
|
|
105
|
+
bool eos_ = false;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
} // namespace bob
|
|
109
|
+
} // namespace node
|
|
110
|
+
|
|
111
|
+
#endif // SRC_NODE_BOB_H_
|