@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
|
@@ -38,6 +38,7 @@ namespace node {
|
|
|
38
38
|
V(ELDHISTOGRAM) \
|
|
39
39
|
V(FILEHANDLE) \
|
|
40
40
|
V(FILEHANDLECLOSEREQ) \
|
|
41
|
+
V(FIXEDSIZEBLOBCOPY) \
|
|
41
42
|
V(FSEVENTWRAP) \
|
|
42
43
|
V(FSREQCALLBACK) \
|
|
43
44
|
V(FSREQPROMISE) \
|
|
@@ -51,6 +52,7 @@ namespace node {
|
|
|
51
52
|
V(HTTPINCOMINGMESSAGE) \
|
|
52
53
|
V(HTTPCLIENTREQUEST) \
|
|
53
54
|
V(JSSTREAM) \
|
|
55
|
+
V(JSUDPWRAP) \
|
|
54
56
|
V(MESSAGEPORT) \
|
|
55
57
|
V(PIPECONNECTWRAP) \
|
|
56
58
|
V(PIPESERVERWRAP) \
|
|
@@ -76,11 +78,20 @@ namespace node {
|
|
|
76
78
|
|
|
77
79
|
#if HAVE_OPENSSL
|
|
78
80
|
#define NODE_ASYNC_CRYPTO_PROVIDER_TYPES(V) \
|
|
81
|
+
V(CHECKPRIMEREQUEST) \
|
|
79
82
|
V(PBKDF2REQUEST) \
|
|
80
83
|
V(KEYPAIRGENREQUEST) \
|
|
84
|
+
V(KEYGENREQUEST) \
|
|
85
|
+
V(KEYEXPORTREQUEST) \
|
|
86
|
+
V(CIPHERREQUEST) \
|
|
87
|
+
V(DERIVEBITSREQUEST) \
|
|
88
|
+
V(HASHREQUEST) \
|
|
81
89
|
V(RANDOMBYTESREQUEST) \
|
|
90
|
+
V(RANDOMPRIMEREQUEST) \
|
|
82
91
|
V(SCRYPTREQUEST) \
|
|
83
|
-
V(
|
|
92
|
+
V(SIGNREQUEST) \
|
|
93
|
+
V(TLSWRAP) \
|
|
94
|
+
V(VERIFYREQUEST)
|
|
84
95
|
#else
|
|
85
96
|
#define NODE_ASYNC_CRYPTO_PROVIDER_TYPES(V)
|
|
86
97
|
#endif // HAVE_OPENSSL
|
|
@@ -99,6 +110,7 @@ namespace node {
|
|
|
99
110
|
|
|
100
111
|
class Environment;
|
|
101
112
|
class DestroyParam;
|
|
113
|
+
class ExternalReferenceRegistry;
|
|
102
114
|
|
|
103
115
|
class AsyncWrap : public BaseObject {
|
|
104
116
|
public:
|
|
@@ -128,6 +140,7 @@ class AsyncWrap : public BaseObject {
|
|
|
128
140
|
static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
|
|
129
141
|
Environment* env);
|
|
130
142
|
|
|
143
|
+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
|
|
131
144
|
static void Initialize(v8::Local<v8::Object> target,
|
|
132
145
|
v8::Local<v8::Value> unused,
|
|
133
146
|
v8::Local<v8::Context> context,
|
|
@@ -136,10 +149,16 @@ class AsyncWrap : public BaseObject {
|
|
|
136
149
|
static void GetAsyncId(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
137
150
|
static void PushAsyncContext(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
138
151
|
static void PopAsyncContext(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
152
|
+
static void ExecutionAsyncResource(
|
|
153
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
154
|
+
static void ClearAsyncIdStack(
|
|
155
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
139
156
|
static void AsyncReset(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
140
157
|
static void GetProviderType(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
141
158
|
static void QueueDestroyAsyncId(
|
|
142
159
|
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
160
|
+
static void SetCallbackTrampoline(
|
|
161
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
143
162
|
|
|
144
163
|
static void EmitAsyncInit(Environment* env,
|
|
145
164
|
v8::Local<v8::Object> object,
|
|
@@ -208,11 +227,16 @@ class AsyncWrap : public BaseObject {
|
|
|
208
227
|
ProviderType provider,
|
|
209
228
|
double execution_async_id,
|
|
210
229
|
bool silent);
|
|
230
|
+
AsyncWrap(Environment* env,
|
|
231
|
+
v8::Local<v8::Object> promise,
|
|
232
|
+
ProviderType provider,
|
|
233
|
+
double execution_async_id,
|
|
234
|
+
double trigger_async_id);
|
|
211
235
|
ProviderType provider_type_ = PROVIDER_NONE;
|
|
212
236
|
bool init_hook_ran_ = false;
|
|
213
237
|
// Because the values may be Reset(), cannot be made const.
|
|
214
238
|
double async_id_ = kInvalidAsyncId;
|
|
215
|
-
double trigger_async_id_;
|
|
239
|
+
double trigger_async_id_ = kInvalidAsyncId;
|
|
216
240
|
};
|
|
217
241
|
|
|
218
242
|
} // namespace node
|
|
@@ -1,50 +1,12 @@
|
|
|
1
|
-
#ifndef
|
|
2
|
-
#define
|
|
1
|
+
#ifndef SRC_BASE64_INL_H_
|
|
2
|
+
#define SRC_BASE64_INL_H_
|
|
3
3
|
|
|
4
4
|
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
5
|
|
|
6
|
+
#include "base64.h"
|
|
6
7
|
#include "util.h"
|
|
7
8
|
|
|
8
|
-
#include <cstddef>
|
|
9
|
-
#include <cstdint>
|
|
10
|
-
|
|
11
9
|
namespace node {
|
|
12
|
-
//// Base 64 ////
|
|
13
|
-
static inline constexpr size_t base64_encoded_size(size_t size) {
|
|
14
|
-
return ((size + 2 - ((size + 2) % 3)) / 3 * 4);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// Doesn't check for padding at the end. Can be 1-2 bytes over.
|
|
18
|
-
static inline size_t base64_decoded_size_fast(size_t size) {
|
|
19
|
-
size_t remainder = size % 4;
|
|
20
|
-
|
|
21
|
-
size = (size / 4) * 3;
|
|
22
|
-
if (remainder) {
|
|
23
|
-
if (size == 0 && remainder == 1) {
|
|
24
|
-
// special case: 1-byte input cannot be decoded
|
|
25
|
-
size = 0;
|
|
26
|
-
} else {
|
|
27
|
-
// non-padded input, add 1 or 2 extra bytes
|
|
28
|
-
size += 1 + (remainder == 3);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return size;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
template <typename TypeName>
|
|
36
|
-
size_t base64_decoded_size(const TypeName* src, size_t size) {
|
|
37
|
-
if (size == 0)
|
|
38
|
-
return 0;
|
|
39
|
-
|
|
40
|
-
if (src[size - 1] == '=')
|
|
41
|
-
size--;
|
|
42
|
-
if (size > 0 && src[size - 1] == '=')
|
|
43
|
-
size--;
|
|
44
|
-
|
|
45
|
-
return base64_decoded_size_fast(size);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
10
|
|
|
49
11
|
extern const int8_t unbase64_table[256];
|
|
50
12
|
|
|
@@ -54,27 +16,36 @@ inline static int8_t unbase64(uint8_t x) {
|
|
|
54
16
|
}
|
|
55
17
|
|
|
56
18
|
|
|
19
|
+
inline uint32_t ReadUint32BE(const unsigned char* p) {
|
|
20
|
+
return static_cast<uint32_t>(p[0] << 24U) |
|
|
21
|
+
static_cast<uint32_t>(p[1] << 16U) |
|
|
22
|
+
static_cast<uint32_t>(p[2] << 8U) |
|
|
23
|
+
static_cast<uint32_t>(p[3]);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
#ifdef _MSC_VER
|
|
27
|
+
#pragma warning(push)
|
|
28
|
+
// MSVC C4003: not enough actual parameters for macro 'identifier'
|
|
29
|
+
#pragma warning(disable : 4003)
|
|
30
|
+
#endif
|
|
31
|
+
|
|
57
32
|
template <typename TypeName>
|
|
58
33
|
bool base64_decode_group_slow(char* const dst, const size_t dstlen,
|
|
59
34
|
const TypeName* const src, const size_t srclen,
|
|
60
35
|
size_t* const i, size_t* const k) {
|
|
61
36
|
uint8_t hi;
|
|
62
37
|
uint8_t lo;
|
|
63
|
-
#define V(expr)
|
|
64
|
-
for (;;) {
|
|
65
|
-
const uint8_t c = src[*i];
|
|
66
|
-
lo = unbase64(c);
|
|
67
|
-
*i += 1;
|
|
68
|
-
if (lo < 64)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
if (*i >= srclen) \
|
|
75
|
-
return false; \
|
|
76
|
-
if (*k >= dstlen) \
|
|
77
|
-
return false; \
|
|
38
|
+
#define V(expr) \
|
|
39
|
+
for (;;) { \
|
|
40
|
+
const uint8_t c = static_cast<uint8_t>(src[*i]); \
|
|
41
|
+
lo = unbase64(c); \
|
|
42
|
+
*i += 1; \
|
|
43
|
+
if (lo < 64) break; /* Legal character. */ \
|
|
44
|
+
if (c == '=' || *i >= srclen) return false; /* Stop decoding. */ \
|
|
45
|
+
} \
|
|
46
|
+
expr; \
|
|
47
|
+
if (*i >= srclen) return false; \
|
|
48
|
+
if (*k >= dstlen) return false; \
|
|
78
49
|
hi = lo;
|
|
79
50
|
V(/* Nothing. */);
|
|
80
51
|
V(dst[(*k)++] = ((hi & 0x3F) << 2) | ((lo & 0x30) >> 4));
|
|
@@ -84,6 +55,9 @@ bool base64_decode_group_slow(char* const dst, const size_t dstlen,
|
|
|
84
55
|
return true; // Continue decoding.
|
|
85
56
|
}
|
|
86
57
|
|
|
58
|
+
#ifdef _MSC_VER
|
|
59
|
+
#pragma warning(pop)
|
|
60
|
+
#endif
|
|
87
61
|
|
|
88
62
|
template <typename TypeName>
|
|
89
63
|
size_t base64_decode_fast(char* const dst, const size_t dstlen,
|
|
@@ -95,11 +69,14 @@ size_t base64_decode_fast(char* const dst, const size_t dstlen,
|
|
|
95
69
|
size_t i = 0;
|
|
96
70
|
size_t k = 0;
|
|
97
71
|
while (i < max_i && k < max_k) {
|
|
98
|
-
const
|
|
99
|
-
unbase64(src[i + 0])
|
|
100
|
-
unbase64(src[i + 1])
|
|
101
|
-
unbase64(src[i + 2])
|
|
102
|
-
unbase64(src[i + 3])
|
|
72
|
+
const unsigned char txt[] = {
|
|
73
|
+
static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 0]))),
|
|
74
|
+
static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 1]))),
|
|
75
|
+
static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 2]))),
|
|
76
|
+
static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 3]))),
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
const uint32_t v = ReadUint32BE(txt);
|
|
103
80
|
// If MSB is set, input contains whitespace or is not valid base64.
|
|
104
81
|
if (v & 0x80808080) {
|
|
105
82
|
if (!base64_decode_group_slow(dst, dstlen, src, srclen, &i, &k))
|
|
@@ -120,6 +97,21 @@ size_t base64_decode_fast(char* const dst, const size_t dstlen,
|
|
|
120
97
|
}
|
|
121
98
|
|
|
122
99
|
|
|
100
|
+
template <typename TypeName>
|
|
101
|
+
size_t base64_decoded_size(const TypeName* src, size_t size) {
|
|
102
|
+
// 1-byte input cannot be decoded
|
|
103
|
+
if (size < 2)
|
|
104
|
+
return 0;
|
|
105
|
+
|
|
106
|
+
if (src[size - 1] == '=') {
|
|
107
|
+
size--;
|
|
108
|
+
if (src[size - 1] == '=')
|
|
109
|
+
size--;
|
|
110
|
+
}
|
|
111
|
+
return base64_decoded_size_fast(size);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
|
|
123
115
|
template <typename TypeName>
|
|
124
116
|
size_t base64_decode(char* const dst, const size_t dstlen,
|
|
125
117
|
const TypeName* const src, const size_t srclen) {
|
|
@@ -127,15 +119,17 @@ size_t base64_decode(char* const dst, const size_t dstlen,
|
|
|
127
119
|
return base64_decode_fast(dst, dstlen, src, srclen, decoded_size);
|
|
128
120
|
}
|
|
129
121
|
|
|
130
|
-
|
|
122
|
+
|
|
123
|
+
inline size_t base64_encode(const char* src,
|
|
131
124
|
size_t slen,
|
|
132
125
|
char* dst,
|
|
133
|
-
size_t dlen
|
|
126
|
+
size_t dlen,
|
|
127
|
+
Base64Mode mode) {
|
|
134
128
|
// We know how much we'll write, just make sure that there's space.
|
|
135
|
-
CHECK(dlen >= base64_encoded_size(slen) &&
|
|
129
|
+
CHECK(dlen >= base64_encoded_size(slen, mode) &&
|
|
136
130
|
"not enough space provided for base64 encode");
|
|
137
131
|
|
|
138
|
-
dlen = base64_encoded_size(slen);
|
|
132
|
+
dlen = base64_encoded_size(slen, mode);
|
|
139
133
|
|
|
140
134
|
unsigned a;
|
|
141
135
|
unsigned b;
|
|
@@ -144,9 +138,7 @@ static size_t base64_encode(const char* src,
|
|
|
144
138
|
unsigned k;
|
|
145
139
|
unsigned n;
|
|
146
140
|
|
|
147
|
-
|
|
148
|
-
"abcdefghijklmnopqrstuvwxyz"
|
|
149
|
-
"0123456789+/";
|
|
141
|
+
const char* table = base64_select_table(mode);
|
|
150
142
|
|
|
151
143
|
i = 0;
|
|
152
144
|
k = 0;
|
|
@@ -166,32 +158,32 @@ static size_t base64_encode(const char* src,
|
|
|
166
158
|
k += 4;
|
|
167
159
|
}
|
|
168
160
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
161
|
+
switch (slen - n) {
|
|
162
|
+
case 1:
|
|
163
|
+
a = src[i + 0] & 0xff;
|
|
164
|
+
dst[k + 0] = table[a >> 2];
|
|
165
|
+
dst[k + 1] = table[(a & 3) << 4];
|
|
166
|
+
if (mode == Base64Mode::NORMAL) {
|
|
175
167
|
dst[k + 2] = '=';
|
|
176
168
|
dst[k + 3] = '=';
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
169
|
+
}
|
|
170
|
+
break;
|
|
171
|
+
case 2:
|
|
172
|
+
a = src[i + 0] & 0xff;
|
|
173
|
+
b = src[i + 1] & 0xff;
|
|
174
|
+
dst[k + 0] = table[a >> 2];
|
|
175
|
+
dst[k + 1] = table[((a & 3) << 4) | (b >> 4)];
|
|
176
|
+
dst[k + 2] = table[(b & 0x0f) << 2];
|
|
177
|
+
if (mode == Base64Mode::NORMAL)
|
|
185
178
|
dst[k + 3] = '=';
|
|
186
|
-
|
|
187
|
-
}
|
|
179
|
+
break;
|
|
188
180
|
}
|
|
189
181
|
|
|
190
182
|
return dlen;
|
|
191
183
|
}
|
|
192
|
-
} // namespace node
|
|
193
184
|
|
|
185
|
+
} // namespace node
|
|
194
186
|
|
|
195
187
|
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
196
188
|
|
|
197
|
-
#endif //
|
|
189
|
+
#endif // SRC_BASE64_INL_H_
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#ifndef SRC_BASE64_H_
|
|
2
|
+
#define SRC_BASE64_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "util.h"
|
|
7
|
+
|
|
8
|
+
#include <cmath>
|
|
9
|
+
#include <cstddef>
|
|
10
|
+
#include <cstdint>
|
|
11
|
+
|
|
12
|
+
namespace node {
|
|
13
|
+
//// Base 64 ////
|
|
14
|
+
|
|
15
|
+
enum class Base64Mode {
|
|
16
|
+
NORMAL,
|
|
17
|
+
URL
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
static constexpr char base64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
21
|
+
"abcdefghijklmnopqrstuvwxyz"
|
|
22
|
+
"0123456789+/";
|
|
23
|
+
|
|
24
|
+
static constexpr char base64_table_url[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
25
|
+
"abcdefghijklmnopqrstuvwxyz"
|
|
26
|
+
"0123456789-_";
|
|
27
|
+
|
|
28
|
+
static inline const char* base64_select_table(Base64Mode mode) {
|
|
29
|
+
switch (mode) {
|
|
30
|
+
case Base64Mode::NORMAL: return base64_table;
|
|
31
|
+
case Base64Mode::URL: return base64_table_url;
|
|
32
|
+
default: UNREACHABLE();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
static inline constexpr size_t base64_encoded_size(
|
|
37
|
+
size_t size,
|
|
38
|
+
Base64Mode mode = Base64Mode::NORMAL) {
|
|
39
|
+
return mode == Base64Mode::NORMAL ? ((size + 2) / 3 * 4)
|
|
40
|
+
: static_cast<size_t>(std::ceil(
|
|
41
|
+
static_cast<double>(size * 4) / 3));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Doesn't check for padding at the end. Can be 1-2 bytes over.
|
|
45
|
+
static inline constexpr size_t base64_decoded_size_fast(size_t size) {
|
|
46
|
+
// 1-byte input cannot be decoded
|
|
47
|
+
return size > 1 ? (size / 4) * 3 + (size % 4 + 1) / 2 : 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
inline uint32_t ReadUint32BE(const unsigned char* p);
|
|
51
|
+
|
|
52
|
+
template <typename TypeName>
|
|
53
|
+
size_t base64_decoded_size(const TypeName* src, size_t size);
|
|
54
|
+
|
|
55
|
+
template <typename TypeName>
|
|
56
|
+
size_t base64_decode(char* const dst, const size_t dstlen,
|
|
57
|
+
const TypeName* const src, const size_t srclen);
|
|
58
|
+
|
|
59
|
+
inline size_t base64_encode(const char* src,
|
|
60
|
+
size_t slen,
|
|
61
|
+
char* dst,
|
|
62
|
+
size_t dlen,
|
|
63
|
+
Base64Mode mode = Base64Mode::NORMAL);
|
|
64
|
+
} // namespace node
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
68
|
+
|
|
69
|
+
#endif // SRC_BASE64_H_
|
|
@@ -28,14 +28,7 @@
|
|
|
28
28
|
#include "env-inl.h"
|
|
29
29
|
#include "util.h"
|
|
30
30
|
|
|
31
|
-
#if (__GNUC__ >= 8) && !defined(__clang__)
|
|
32
|
-
#pragma GCC diagnostic push
|
|
33
|
-
#pragma GCC diagnostic ignored "-Wcast-function-type"
|
|
34
|
-
#endif
|
|
35
31
|
#include "v8.h"
|
|
36
|
-
#if (__GNUC__ >= 8) && !defined(__clang__)
|
|
37
|
-
#pragma GCC diagnostic pop
|
|
38
|
-
#endif
|
|
39
32
|
|
|
40
33
|
namespace node {
|
|
41
34
|
|
|
@@ -90,7 +83,8 @@ v8::Local<v8::Object> BaseObject::object() const {
|
|
|
90
83
|
v8::Local<v8::Object> BaseObject::object(v8::Isolate* isolate) const {
|
|
91
84
|
v8::Local<v8::Object> handle = object();
|
|
92
85
|
|
|
93
|
-
DCHECK_EQ(handle->
|
|
86
|
+
DCHECK_EQ(handle->GetCreationContext().ToLocalChecked()->GetIsolate(),
|
|
87
|
+
isolate);
|
|
94
88
|
DCHECK_EQ(env()->isolate(), isolate);
|
|
95
89
|
|
|
96
90
|
return handle;
|
|
@@ -100,15 +94,16 @@ Environment* BaseObject::env() const {
|
|
|
100
94
|
return env_;
|
|
101
95
|
}
|
|
102
96
|
|
|
103
|
-
BaseObject* BaseObject::FromJSObject(v8::Local<v8::
|
|
104
|
-
|
|
97
|
+
BaseObject* BaseObject::FromJSObject(v8::Local<v8::Value> value) {
|
|
98
|
+
v8::Local<v8::Object> obj = value.As<v8::Object>();
|
|
99
|
+
DCHECK_GE(obj->InternalFieldCount(), BaseObject::kSlot);
|
|
105
100
|
return static_cast<BaseObject*>(
|
|
106
101
|
obj->GetAlignedPointerFromInternalField(BaseObject::kSlot));
|
|
107
102
|
}
|
|
108
103
|
|
|
109
104
|
|
|
110
105
|
template <typename T>
|
|
111
|
-
T* BaseObject::FromJSObject(v8::Local<v8::
|
|
106
|
+
T* BaseObject::FromJSObject(v8::Local<v8::Value> object) {
|
|
112
107
|
return static_cast<T*>(FromJSObject(object));
|
|
113
108
|
}
|
|
114
109
|
|
|
@@ -145,16 +140,26 @@ void BaseObject::ClearWeak() {
|
|
|
145
140
|
persistent_handle_.ClearWeak();
|
|
146
141
|
}
|
|
147
142
|
|
|
143
|
+
bool BaseObject::IsWeakOrDetached() const {
|
|
144
|
+
if (persistent_handle_.IsWeak()) return true;
|
|
145
|
+
|
|
146
|
+
if (!has_pointer_data()) return false;
|
|
147
|
+
const PointerData* pd = const_cast<BaseObject*>(this)->pointer_data();
|
|
148
|
+
return pd->wants_weak_jsobj || pd->is_detached;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
void BaseObject::LazilyInitializedJSTemplateConstructor(
|
|
152
|
+
const v8::FunctionCallbackInfo<v8::Value>& args) {
|
|
153
|
+
DCHECK(args.IsConstructCall());
|
|
154
|
+
DCHECK_GT(args.This()->InternalFieldCount(), 0);
|
|
155
|
+
args.This()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr);
|
|
156
|
+
}
|
|
148
157
|
|
|
149
158
|
v8::Local<v8::FunctionTemplate>
|
|
150
159
|
BaseObject::MakeLazilyInitializedJSTemplate(Environment* env) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
args.This()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr);
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
v8::Local<v8::FunctionTemplate> t = env->NewFunctionTemplate(constructor);
|
|
160
|
+
v8::Local<v8::FunctionTemplate> t =
|
|
161
|
+
env->NewFunctionTemplate(LazilyInitializedJSTemplateConstructor);
|
|
162
|
+
t->Inherit(BaseObject::GetConstructorTemplate(env));
|
|
158
163
|
t->InstanceTemplate()->SetInternalFieldCount(
|
|
159
164
|
BaseObject::kInternalFieldCount);
|
|
160
165
|
return t;
|
|
@@ -198,7 +203,7 @@ void BaseObject::decrease_refcount() {
|
|
|
198
203
|
unsigned int new_refcount = --metadata->strong_ptr_count;
|
|
199
204
|
if (new_refcount == 0) {
|
|
200
205
|
if (metadata->is_detached) {
|
|
201
|
-
|
|
206
|
+
OnGCCollect();
|
|
202
207
|
} else if (metadata->wants_weak_jsobj && !persistent_handle_.IsEmpty()) {
|
|
203
208
|
MakeWeak();
|
|
204
209
|
}
|
|
@@ -216,20 +221,22 @@ BaseObject::PointerData*
|
|
|
216
221
|
BaseObjectPtrImpl<T, kIsWeak>::pointer_data() const {
|
|
217
222
|
if (kIsWeak) {
|
|
218
223
|
return data_.pointer_data;
|
|
219
|
-
} else {
|
|
220
|
-
if (get_base_object() == nullptr) return nullptr;
|
|
221
|
-
return get_base_object()->pointer_data();
|
|
222
224
|
}
|
|
225
|
+
if (get_base_object() == nullptr) {
|
|
226
|
+
return nullptr;
|
|
227
|
+
}
|
|
228
|
+
return get_base_object()->pointer_data();
|
|
223
229
|
}
|
|
224
230
|
|
|
225
231
|
template <typename T, bool kIsWeak>
|
|
226
232
|
BaseObject* BaseObjectPtrImpl<T, kIsWeak>::get_base_object() const {
|
|
227
233
|
if (kIsWeak) {
|
|
228
|
-
if (pointer_data() == nullptr)
|
|
234
|
+
if (pointer_data() == nullptr) {
|
|
235
|
+
return nullptr;
|
|
236
|
+
}
|
|
229
237
|
return pointer_data()->self;
|
|
230
|
-
} else {
|
|
231
|
-
return data_.target;
|
|
232
238
|
}
|
|
239
|
+
return data_.target;
|
|
233
240
|
}
|
|
234
241
|
|
|
235
242
|
template <typename T, bool kIsWeak>
|
|
@@ -334,6 +341,20 @@ BaseObjectPtrImpl<T, kIsWeak>::operator bool() const {
|
|
|
334
341
|
return get() != nullptr;
|
|
335
342
|
}
|
|
336
343
|
|
|
344
|
+
template <typename T, bool kIsWeak>
|
|
345
|
+
template <typename U, bool kW>
|
|
346
|
+
bool BaseObjectPtrImpl<T, kIsWeak>::operator ==(
|
|
347
|
+
const BaseObjectPtrImpl<U, kW>& other) const {
|
|
348
|
+
return get() == other.get();
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
template <typename T, bool kIsWeak>
|
|
352
|
+
template <typename U, bool kW>
|
|
353
|
+
bool BaseObjectPtrImpl<T, kIsWeak>::operator !=(
|
|
354
|
+
const BaseObjectPtrImpl<U, kW>& other) const {
|
|
355
|
+
return get() != other.get();
|
|
356
|
+
}
|
|
357
|
+
|
|
337
358
|
template <typename T, typename... Args>
|
|
338
359
|
BaseObjectPtr<T> MakeBaseObject(Args&&... args) {
|
|
339
360
|
return BaseObjectPtr<T>(new T(std::forward<Args>(args)...));
|