@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
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
#ifndef SRC_JS_NATIVE_API_V8_H_
|
|
2
2
|
#define SRC_JS_NATIVE_API_V8_H_
|
|
3
3
|
|
|
4
|
-
// This file needs to be compatible with C compilers.
|
|
5
|
-
#include <string.h> // NOLINT(modernize-deprecated-headers)
|
|
6
4
|
#include "js_native_api_types.h"
|
|
7
5
|
#include "js_native_api_v8_internals.h"
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
inline napi_status napi_clear_last_error(node_api_basic_env env);
|
|
10
8
|
|
|
11
9
|
namespace v8impl {
|
|
12
10
|
|
|
11
|
+
// Base class to track references and finalizers in a doubly linked list.
|
|
13
12
|
class RefTracker {
|
|
14
13
|
public:
|
|
15
|
-
RefTracker
|
|
16
|
-
virtual ~RefTracker() {}
|
|
17
|
-
virtual void Finalize(bool isEnvTeardown) {}
|
|
14
|
+
using RefList = RefTracker;
|
|
18
15
|
|
|
19
|
-
|
|
16
|
+
RefTracker() = default;
|
|
17
|
+
virtual ~RefTracker() = default;
|
|
18
|
+
virtual void Finalize() {}
|
|
20
19
|
|
|
21
20
|
inline void Link(RefList* list) {
|
|
22
21
|
prev_ = list;
|
|
@@ -40,7 +39,7 @@ class RefTracker {
|
|
|
40
39
|
|
|
41
40
|
static void FinalizeAll(RefList* list) {
|
|
42
41
|
while (list->next_ != nullptr) {
|
|
43
|
-
list->next_->Finalize(
|
|
42
|
+
list->next_->Finalize();
|
|
44
43
|
}
|
|
45
44
|
}
|
|
46
45
|
|
|
@@ -52,14 +51,13 @@ class RefTracker {
|
|
|
52
51
|
} // end of namespace v8impl
|
|
53
52
|
|
|
54
53
|
struct napi_env__ {
|
|
55
|
-
explicit napi_env__(v8::Local<v8::Context> context
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
explicit napi_env__(v8::Local<v8::Context> context,
|
|
55
|
+
int32_t module_api_version)
|
|
56
|
+
: isolate(context->GetIsolate()),
|
|
57
|
+
context_persistent(isolate, context),
|
|
58
|
+
module_api_version(module_api_version) {
|
|
58
59
|
napi_clear_last_error(this);
|
|
59
60
|
}
|
|
60
|
-
virtual ~napi_env__() { FinalizeAll(); }
|
|
61
|
-
v8::Isolate* const isolate; // Shortcut for context()->GetIsolate()
|
|
62
|
-
v8impl::Persistent<v8::Context> context_persistent;
|
|
63
61
|
|
|
64
62
|
inline v8::Local<v8::Context> context() const {
|
|
65
63
|
return v8impl::PersistentToLocal::Strong(context_persistent);
|
|
@@ -67,19 +65,26 @@ struct napi_env__ {
|
|
|
67
65
|
|
|
68
66
|
inline void Ref() { refs++; }
|
|
69
67
|
inline void Unref() {
|
|
70
|
-
if (--refs == 0)
|
|
68
|
+
if (--refs == 0) DeleteMe();
|
|
71
69
|
}
|
|
72
70
|
|
|
73
71
|
virtual bool can_call_into_js() const { return true; }
|
|
74
|
-
virtual v8::Maybe<bool> mark_arraybuffer_as_untransferable(
|
|
75
|
-
v8::Local<v8::ArrayBuffer> ab) const {
|
|
76
|
-
return v8::Just(true);
|
|
77
|
-
}
|
|
78
72
|
|
|
79
73
|
static inline void HandleThrow(napi_env env, v8::Local<v8::Value> value) {
|
|
74
|
+
if (env->terminatedOrTerminating()) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
80
77
|
env->isolate->ThrowException(value);
|
|
81
78
|
}
|
|
82
79
|
|
|
80
|
+
// i.e. whether v8 exited or is about to exit
|
|
81
|
+
inline bool terminatedOrTerminating() {
|
|
82
|
+
return this->isolate->IsExecutionTerminating() || !can_call_into_js();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// v8 uses a special exception to indicate termination, the
|
|
86
|
+
// `handle_exception` callback should identify such case using
|
|
87
|
+
// terminatedOrTerminating() before actually handle the exception
|
|
83
88
|
template <typename T, typename U = decltype(HandleThrow)>
|
|
84
89
|
inline void CallIntoModule(T&& call, U&& handle_exception = HandleThrow) {
|
|
85
90
|
int open_handle_scopes_before = open_handle_scopes;
|
|
@@ -94,14 +99,26 @@ struct napi_env__ {
|
|
|
94
99
|
}
|
|
95
100
|
}
|
|
96
101
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
+
virtual void CallFinalizer(napi_finalize cb, void* data, void* hint) = 0;
|
|
103
|
+
|
|
104
|
+
// Invoke finalizer from V8 garbage collector.
|
|
105
|
+
void InvokeFinalizerFromGC(v8impl::RefTracker* finalizer);
|
|
106
|
+
|
|
107
|
+
// Enqueue the finalizer to the napi_env's own queue of the second pass
|
|
108
|
+
// weak callback.
|
|
109
|
+
// Implementation should drain the queue at the time it is safe to call
|
|
110
|
+
// into JavaScript.
|
|
111
|
+
virtual void EnqueueFinalizer(v8impl::RefTracker* finalizer) {
|
|
112
|
+
pending_finalizers.emplace(finalizer);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Remove the finalizer from the scheduled second pass weak callback queue.
|
|
116
|
+
// The finalizer can be deleted after this call.
|
|
117
|
+
virtual void DequeueFinalizer(v8impl::RefTracker* finalizer) {
|
|
118
|
+
pending_finalizers.erase(finalizer);
|
|
102
119
|
}
|
|
103
120
|
|
|
104
|
-
void
|
|
121
|
+
virtual void DeleteMe() {
|
|
105
122
|
// First we must finalize those references that have `napi_finalizer`
|
|
106
123
|
// callbacks. The reason is that addons might store other references which
|
|
107
124
|
// they delete during their `napi_finalizer` callbacks. If we deleted such
|
|
@@ -109,8 +126,25 @@ struct napi_env__ {
|
|
|
109
126
|
// `napi_finalizer` deleted them subsequently.
|
|
110
127
|
v8impl::RefTracker::FinalizeAll(&finalizing_reflist);
|
|
111
128
|
v8impl::RefTracker::FinalizeAll(&reflist);
|
|
129
|
+
delete this;
|
|
112
130
|
}
|
|
113
131
|
|
|
132
|
+
void CheckGCAccess() {
|
|
133
|
+
if (module_api_version == NAPI_VERSION_EXPERIMENTAL && in_gc_finalizer) {
|
|
134
|
+
v8impl::OnFatalError(
|
|
135
|
+
nullptr,
|
|
136
|
+
"Finalizer is calling a function that may affect GC state.\n"
|
|
137
|
+
"The finalizers are run directly from GC and must not affect GC "
|
|
138
|
+
"state.\n"
|
|
139
|
+
"Use `node_api_post_finalizer` from inside of the finalizer to work "
|
|
140
|
+
"around this issue.\n"
|
|
141
|
+
"It schedules the call as a new task in the event loop.");
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
v8::Isolate* const isolate; // Shortcut for context()->GetIsolate()
|
|
146
|
+
v8impl::Persistent<v8::Context> context_persistent;
|
|
147
|
+
|
|
114
148
|
v8impl::Persistent<v8::Value> last_exception;
|
|
115
149
|
|
|
116
150
|
// We store references in two different lists, depending on whether they have
|
|
@@ -118,54 +152,36 @@ struct napi_env__ {
|
|
|
118
152
|
// have such a callback. See `~napi_env__()` above for details.
|
|
119
153
|
v8impl::RefTracker::RefList reflist;
|
|
120
154
|
v8impl::RefTracker::RefList finalizing_reflist;
|
|
155
|
+
// The invocation order of the finalizers is not determined.
|
|
156
|
+
std::unordered_set<v8impl::RefTracker*> pending_finalizers;
|
|
121
157
|
napi_extended_error_info last_error;
|
|
122
158
|
int open_handle_scopes = 0;
|
|
123
159
|
int open_callback_scopes = 0;
|
|
124
160
|
int refs = 1;
|
|
125
161
|
void* instance_data = nullptr;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
// This class is used to keep a napi_env live in a way that
|
|
129
|
-
// is exception safe versus calling Ref/Unref directly
|
|
130
|
-
class EnvRefHolder {
|
|
131
|
-
public:
|
|
132
|
-
explicit EnvRefHolder(napi_env env) : _env(env) { _env->Ref(); }
|
|
133
|
-
|
|
134
|
-
explicit EnvRefHolder(const EnvRefHolder& other) : _env(other.env()) {
|
|
135
|
-
_env->Ref();
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
EnvRefHolder(EnvRefHolder&& other) {
|
|
139
|
-
_env = other._env;
|
|
140
|
-
other._env = nullptr;
|
|
141
|
-
}
|
|
162
|
+
int32_t module_api_version = NODE_API_DEFAULT_MODULE_API_VERSION;
|
|
163
|
+
bool in_gc_finalizer = false;
|
|
142
164
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
napi_env env(void) const { return _env; }
|
|
150
|
-
|
|
151
|
-
private:
|
|
152
|
-
napi_env _env;
|
|
165
|
+
protected:
|
|
166
|
+
// Should not be deleted directly. Delete with `napi_env__::DeleteMe()`
|
|
167
|
+
// instead.
|
|
168
|
+
virtual ~napi_env__() = default;
|
|
153
169
|
};
|
|
154
170
|
|
|
155
|
-
|
|
171
|
+
inline napi_status napi_clear_last_error(node_api_basic_env basic_env) {
|
|
172
|
+
napi_env env = const_cast<napi_env>(basic_env);
|
|
156
173
|
env->last_error.error_code = napi_ok;
|
|
157
|
-
|
|
158
|
-
// TODO(boingoing): Should this be a callback?
|
|
159
174
|
env->last_error.engine_error_code = 0;
|
|
160
175
|
env->last_error.engine_reserved = nullptr;
|
|
161
176
|
env->last_error.error_message = nullptr;
|
|
162
177
|
return napi_ok;
|
|
163
178
|
}
|
|
164
179
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
180
|
+
inline napi_status napi_set_last_error(node_api_basic_env basic_env,
|
|
181
|
+
napi_status error_code,
|
|
182
|
+
uint32_t engine_error_code = 0,
|
|
183
|
+
void* engine_reserved = nullptr) {
|
|
184
|
+
napi_env env = const_cast<napi_env>(basic_env);
|
|
169
185
|
env->last_error.error_code = error_code;
|
|
170
186
|
env->last_error.engine_error_code = engine_error_code;
|
|
171
187
|
env->last_error.engine_reserved = engine_reserved;
|
|
@@ -194,6 +210,12 @@ static inline napi_status napi_set_last_error(napi_env env,
|
|
|
194
210
|
} \
|
|
195
211
|
} while (0)
|
|
196
212
|
|
|
213
|
+
#define CHECK_ENV_NOT_IN_GC(env) \
|
|
214
|
+
do { \
|
|
215
|
+
CHECK_ENV((env)); \
|
|
216
|
+
(env)->CheckGCAccess(); \
|
|
217
|
+
} while (0)
|
|
218
|
+
|
|
197
219
|
#define CHECK_ARG(env, arg) \
|
|
198
220
|
RETURN_STATUS_IF_FALSE((env), ((arg) != nullptr), napi_invalid_arg)
|
|
199
221
|
|
|
@@ -209,11 +231,14 @@ static inline napi_status napi_set_last_error(napi_env env,
|
|
|
209
231
|
|
|
210
232
|
// NAPI_PREAMBLE is not wrapped in do..while: try_catch must have function scope
|
|
211
233
|
#define NAPI_PREAMBLE(env) \
|
|
212
|
-
|
|
234
|
+
CHECK_ENV_NOT_IN_GC((env)); \
|
|
213
235
|
RETURN_STATUS_IF_FALSE( \
|
|
214
|
-
(env),
|
|
215
|
-
|
|
216
|
-
|
|
236
|
+
(env), (env)->last_exception.IsEmpty(), napi_pending_exception); \
|
|
237
|
+
RETURN_STATUS_IF_FALSE((env), \
|
|
238
|
+
(env)->can_call_into_js(), \
|
|
239
|
+
(env->module_api_version == NAPI_VERSION_EXPERIMENTAL \
|
|
240
|
+
? napi_cannot_run_js \
|
|
241
|
+
: napi_pending_exception)); \
|
|
217
242
|
napi_clear_last_error((env)); \
|
|
218
243
|
v8impl::TryCatch try_catch((env))
|
|
219
244
|
|
|
@@ -264,17 +289,15 @@ static inline napi_status napi_set_last_error(napi_env env,
|
|
|
264
289
|
} \
|
|
265
290
|
} while (0)
|
|
266
291
|
|
|
267
|
-
#define RETURN_STATUS_IF_FALSE_WITH_PREAMBLE(env, condition, status) \
|
|
268
|
-
do { \
|
|
269
|
-
if (!(condition)) { \
|
|
270
|
-
return napi_set_last_error( \
|
|
271
|
-
(env), try_catch.HasCaught() ? napi_pending_exception : (status)); \
|
|
272
|
-
} \
|
|
273
|
-
} while (0)
|
|
274
|
-
|
|
275
292
|
#define CHECK_MAYBE_EMPTY_WITH_PREAMBLE(env, maybe, status) \
|
|
276
293
|
RETURN_STATUS_IF_FALSE_WITH_PREAMBLE((env), !((maybe).IsEmpty()), (status))
|
|
277
294
|
|
|
295
|
+
#define STATUS_CALL(call) \
|
|
296
|
+
do { \
|
|
297
|
+
napi_status status = (call); \
|
|
298
|
+
if (status != napi_ok) return status; \
|
|
299
|
+
} while (0)
|
|
300
|
+
|
|
278
301
|
namespace v8impl {
|
|
279
302
|
|
|
280
303
|
//=== Conversion between V8 Handles and napi_value ========================
|
|
@@ -297,48 +320,27 @@ inline v8::Local<v8::Value> V8LocalValueFromJsValue(napi_value v) {
|
|
|
297
320
|
// Adapter for napi_finalize callbacks.
|
|
298
321
|
class Finalizer {
|
|
299
322
|
public:
|
|
300
|
-
// Some Finalizers are run during shutdown when the napi_env is destroyed,
|
|
301
|
-
// and some need to keep an explicit reference to the napi_env because they
|
|
302
|
-
// are run independently.
|
|
303
|
-
enum EnvReferenceMode { kNoEnvReference, kKeepEnvReference };
|
|
304
|
-
|
|
305
|
-
protected:
|
|
306
323
|
Finalizer(napi_env env,
|
|
307
324
|
napi_finalize finalize_callback,
|
|
308
325
|
void* finalize_data,
|
|
309
|
-
void* finalize_hint
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
_finalize_hint(finalize_hint),
|
|
315
|
-
_has_env_reference(refmode == kKeepEnvReference) {
|
|
316
|
-
if (_has_env_reference) _env->Ref();
|
|
317
|
-
}
|
|
326
|
+
void* finalize_hint)
|
|
327
|
+
: env_(env),
|
|
328
|
+
finalize_callback_(finalize_callback),
|
|
329
|
+
finalize_data_(finalize_data),
|
|
330
|
+
finalize_hint_(finalize_hint) {}
|
|
318
331
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
public:
|
|
324
|
-
static Finalizer* New(napi_env env,
|
|
325
|
-
napi_finalize finalize_callback = nullptr,
|
|
326
|
-
void* finalize_data = nullptr,
|
|
327
|
-
void* finalize_hint = nullptr,
|
|
328
|
-
EnvReferenceMode refmode = kNoEnvReference) {
|
|
329
|
-
return new Finalizer(
|
|
330
|
-
env, finalize_callback, finalize_data, finalize_hint, refmode);
|
|
331
|
-
}
|
|
332
|
+
napi_env env() { return env_; }
|
|
333
|
+
void* data() { return finalize_data_; }
|
|
332
334
|
|
|
333
|
-
|
|
335
|
+
void ResetEnv();
|
|
336
|
+
void ResetFinalizer();
|
|
337
|
+
void CallFinalizer();
|
|
334
338
|
|
|
335
|
-
|
|
336
|
-
napi_env
|
|
337
|
-
napi_finalize
|
|
338
|
-
void*
|
|
339
|
-
void*
|
|
340
|
-
bool _finalize_ran = false;
|
|
341
|
-
bool _has_env_reference = false;
|
|
339
|
+
private:
|
|
340
|
+
napi_env env_;
|
|
341
|
+
napi_finalize finalize_callback_;
|
|
342
|
+
void* finalize_data_;
|
|
343
|
+
void* finalize_hint_;
|
|
342
344
|
};
|
|
343
345
|
|
|
344
346
|
class TryCatch : public v8::TryCatch {
|
|
@@ -355,86 +357,129 @@ class TryCatch : public v8::TryCatch {
|
|
|
355
357
|
napi_env _env;
|
|
356
358
|
};
|
|
357
359
|
|
|
358
|
-
// Wrapper around
|
|
359
|
-
class
|
|
360
|
-
protected:
|
|
361
|
-
RefBase(napi_env env,
|
|
362
|
-
uint32_t initial_refcount,
|
|
363
|
-
bool delete_self,
|
|
364
|
-
napi_finalize finalize_callback,
|
|
365
|
-
void* finalize_data,
|
|
366
|
-
void* finalize_hint);
|
|
367
|
-
|
|
360
|
+
// Wrapper around Finalizer that can be tracked.
|
|
361
|
+
class TrackedFinalizer final : public RefTracker {
|
|
368
362
|
public:
|
|
369
|
-
static
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
void* finalize_hint);
|
|
363
|
+
static TrackedFinalizer* New(napi_env env,
|
|
364
|
+
napi_finalize finalize_callback,
|
|
365
|
+
void* finalize_data,
|
|
366
|
+
void* finalize_hint);
|
|
367
|
+
~TrackedFinalizer() override;
|
|
375
368
|
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
virtual ~RefBase();
|
|
379
|
-
void* Data();
|
|
380
|
-
uint32_t Ref();
|
|
381
|
-
uint32_t Unref();
|
|
382
|
-
uint32_t RefCount();
|
|
369
|
+
void* data() { return finalizer_.data(); }
|
|
383
370
|
|
|
384
|
-
|
|
385
|
-
|
|
371
|
+
private:
|
|
372
|
+
TrackedFinalizer(napi_env env,
|
|
373
|
+
napi_finalize finalize_callback,
|
|
374
|
+
void* finalize_data,
|
|
375
|
+
void* finalize_hint);
|
|
376
|
+
void Finalize() override;
|
|
386
377
|
|
|
387
378
|
private:
|
|
388
|
-
|
|
389
|
-
bool _delete_self;
|
|
379
|
+
Finalizer finalizer_;
|
|
390
380
|
};
|
|
391
381
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
382
|
+
// Ownership of a reference.
|
|
383
|
+
enum class ReferenceOwnership : uint8_t {
|
|
384
|
+
// The reference is owned by the runtime. No userland call is needed to
|
|
385
|
+
// destruct the reference.
|
|
386
|
+
kRuntime,
|
|
387
|
+
// The reference is owned by the userland. User code is responsible to delete
|
|
388
|
+
// the reference with appropriate node-api calls.
|
|
389
|
+
kUserland,
|
|
390
|
+
};
|
|
398
391
|
|
|
392
|
+
// Wrapper around v8impl::Persistent.
|
|
393
|
+
class Reference : public RefTracker {
|
|
399
394
|
public:
|
|
400
395
|
static Reference* New(napi_env env,
|
|
401
396
|
v8::Local<v8::Value> value,
|
|
402
397
|
uint32_t initial_refcount,
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
void* finalize_data = nullptr,
|
|
406
|
-
void* finalize_hint = nullptr);
|
|
398
|
+
ReferenceOwnership ownership);
|
|
399
|
+
~Reference() override;
|
|
407
400
|
|
|
408
|
-
virtual ~Reference();
|
|
409
401
|
uint32_t Ref();
|
|
410
402
|
uint32_t Unref();
|
|
411
|
-
v8::Local<v8::Value> Get();
|
|
403
|
+
v8::Local<v8::Value> Get(napi_env env);
|
|
404
|
+
|
|
405
|
+
virtual void ResetFinalizer() {}
|
|
406
|
+
virtual void* Data() { return nullptr; }
|
|
407
|
+
|
|
408
|
+
uint32_t refcount() const { return refcount_; }
|
|
409
|
+
ReferenceOwnership ownership() { return ownership_; }
|
|
412
410
|
|
|
413
411
|
protected:
|
|
414
|
-
|
|
412
|
+
Reference(napi_env env,
|
|
413
|
+
v8::Local<v8::Value> value,
|
|
414
|
+
uint32_t initial_refcount,
|
|
415
|
+
ReferenceOwnership ownership);
|
|
416
|
+
virtual void CallUserFinalizer() {}
|
|
417
|
+
virtual void InvokeFinalizerFromGC();
|
|
415
418
|
|
|
416
419
|
private:
|
|
417
|
-
void
|
|
420
|
+
static void WeakCallback(const v8::WeakCallbackInfo<Reference>& data);
|
|
418
421
|
void SetWeak();
|
|
422
|
+
void Finalize() override;
|
|
423
|
+
|
|
424
|
+
private:
|
|
425
|
+
v8impl::Persistent<v8::Value> persistent_;
|
|
426
|
+
uint32_t refcount_;
|
|
427
|
+
ReferenceOwnership ownership_;
|
|
428
|
+
bool can_be_weak_;
|
|
429
|
+
};
|
|
419
430
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
431
|
+
// Reference that can store additional data.
|
|
432
|
+
class ReferenceWithData final : public Reference {
|
|
433
|
+
public:
|
|
434
|
+
static ReferenceWithData* New(napi_env env,
|
|
435
|
+
v8::Local<v8::Value> value,
|
|
436
|
+
uint32_t initial_refcount,
|
|
437
|
+
ReferenceOwnership ownership,
|
|
438
|
+
void* data);
|
|
424
439
|
|
|
425
|
-
|
|
426
|
-
SecondPassCallParameterRef* _secondPassParameter;
|
|
427
|
-
bool _secondPassScheduled;
|
|
440
|
+
void* Data() override { return data_; }
|
|
428
441
|
|
|
429
|
-
|
|
442
|
+
private:
|
|
443
|
+
ReferenceWithData(napi_env env,
|
|
444
|
+
v8::Local<v8::Value> value,
|
|
445
|
+
uint32_t initial_refcount,
|
|
446
|
+
ReferenceOwnership ownership,
|
|
447
|
+
void* data);
|
|
448
|
+
|
|
449
|
+
private:
|
|
450
|
+
void* data_;
|
|
430
451
|
};
|
|
431
452
|
|
|
432
|
-
|
|
453
|
+
// Reference that has a user finalizer callback.
|
|
454
|
+
class ReferenceWithFinalizer final : public Reference {
|
|
455
|
+
public:
|
|
456
|
+
static ReferenceWithFinalizer* New(napi_env env,
|
|
457
|
+
v8::Local<v8::Value> value,
|
|
458
|
+
uint32_t initial_refcount,
|
|
459
|
+
ReferenceOwnership ownership,
|
|
460
|
+
napi_finalize finalize_callback,
|
|
461
|
+
void* finalize_data,
|
|
462
|
+
void* finalize_hint);
|
|
463
|
+
~ReferenceWithFinalizer() override;
|
|
464
|
+
|
|
465
|
+
void ResetFinalizer() override { finalizer_.ResetFinalizer(); }
|
|
466
|
+
void* Data() override { return finalizer_.data(); }
|
|
433
467
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
468
|
+
private:
|
|
469
|
+
ReferenceWithFinalizer(napi_env env,
|
|
470
|
+
v8::Local<v8::Value> value,
|
|
471
|
+
uint32_t initial_refcount,
|
|
472
|
+
ReferenceOwnership ownership,
|
|
473
|
+
napi_finalize finalize_callback,
|
|
474
|
+
void* finalize_data,
|
|
475
|
+
void* finalize_hint);
|
|
476
|
+
void CallUserFinalizer() override;
|
|
477
|
+
void InvokeFinalizerFromGC() override;
|
|
478
|
+
|
|
479
|
+
private:
|
|
480
|
+
Finalizer finalizer_;
|
|
481
|
+
};
|
|
482
|
+
|
|
483
|
+
} // end of namespace v8impl
|
|
439
484
|
|
|
440
485
|
#endif // SRC_JS_NATIVE_API_V8_H_
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
#include "env.h"
|
|
19
19
|
#include "gtest/gtest_prod.h"
|
|
20
|
+
#include "node_errors.h"
|
|
20
21
|
#include "node_internals.h"
|
|
21
22
|
|
|
22
23
|
#define NAPI_ARRAYSIZE(array) node::arraysize((array))
|
|
@@ -34,6 +35,11 @@ using Persistent = v8::Global<T>;
|
|
|
34
35
|
|
|
35
36
|
using PersistentToLocal = node::PersistentToLocal;
|
|
36
37
|
|
|
38
|
+
[[noreturn]] inline void OnFatalError(const char* location,
|
|
39
|
+
const char* message) {
|
|
40
|
+
node::OnFatalError(location, message);
|
|
41
|
+
}
|
|
42
|
+
|
|
37
43
|
} // end of namespace v8impl
|
|
38
44
|
|
|
39
45
|
#endif // SRC_JS_NATIVE_API_V8_INTERNALS_H_
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#ifndef SRC_JSON_PARSER_H_
|
|
2
|
+
#define SRC_JSON_PARSER_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include <memory>
|
|
7
|
+
#include <optional>
|
|
8
|
+
#include <string>
|
|
9
|
+
#include <unordered_map>
|
|
10
|
+
#include "util.h"
|
|
11
|
+
#include "v8.h"
|
|
12
|
+
|
|
13
|
+
namespace node {
|
|
14
|
+
// This is intended to be used to get some top-level fields out of a JSON
|
|
15
|
+
// without having to spin up a full Node.js environment that unnecessarily
|
|
16
|
+
// complicates things.
|
|
17
|
+
class JSONParser {
|
|
18
|
+
public:
|
|
19
|
+
using StringDict = std::unordered_map<std::string, std::string>;
|
|
20
|
+
JSONParser();
|
|
21
|
+
~JSONParser() = default;
|
|
22
|
+
bool Parse(const std::string& content);
|
|
23
|
+
std::optional<std::string> GetTopLevelStringField(std::string_view field);
|
|
24
|
+
std::optional<bool> GetTopLevelBoolField(std::string_view field);
|
|
25
|
+
std::optional<StringDict> GetTopLevelStringDict(std::string_view field);
|
|
26
|
+
|
|
27
|
+
private:
|
|
28
|
+
// We might want a lighter-weight JSON parser for this use case. But for now
|
|
29
|
+
// using V8 is good enough.
|
|
30
|
+
RAIIIsolateWithoutEntering isolate_;
|
|
31
|
+
|
|
32
|
+
v8::Global<v8::Context> context_;
|
|
33
|
+
v8::Global<v8::Object> content_;
|
|
34
|
+
bool parsed_ = false;
|
|
35
|
+
};
|
|
36
|
+
} // namespace node
|
|
37
|
+
|
|
38
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
39
|
+
|
|
40
|
+
#endif // SRC_JSON_PARSER_H_
|
|
@@ -4,13 +4,21 @@
|
|
|
4
4
|
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
5
|
|
|
6
6
|
#include <iomanip>
|
|
7
|
-
#include <ostream>
|
|
8
7
|
#include <limits>
|
|
8
|
+
#include <ostream>
|
|
9
9
|
#include <string>
|
|
10
|
+
#include <string_view>
|
|
10
11
|
|
|
11
12
|
namespace node {
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
constexpr bool NeedsJsonEscape(std::string_view str) {
|
|
15
|
+
for (const char c : str) {
|
|
16
|
+
if (c == '\\' || c == '"' || c < 0x20) return true;
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
std::string EscapeJsonChars(std::string_view str);
|
|
14
22
|
std::string Reindent(const std::string& str, int indentation);
|
|
15
23
|
|
|
16
24
|
// JSON compiler definitions.
|
|
@@ -128,24 +136,27 @@ class JSONWriter {
|
|
|
128
136
|
typename test_for_number = typename std::
|
|
129
137
|
enable_if<std::numeric_limits<T>::is_specialized, bool>::type>
|
|
130
138
|
inline void write_value(T number) {
|
|
131
|
-
if (std::is_same<T, bool>::value)
|
|
139
|
+
if constexpr (std::is_same<T, bool>::value)
|
|
132
140
|
out_ << (number ? "true" : "false");
|
|
133
141
|
else
|
|
134
142
|
out_ << number;
|
|
135
143
|
}
|
|
136
144
|
|
|
137
145
|
inline void write_value(Null null) { out_ << "null"; }
|
|
138
|
-
inline void write_value(
|
|
139
|
-
inline void write_value(const std::string& str) { write_string(str); }
|
|
146
|
+
inline void write_value(std::string_view str) { write_string(str); }
|
|
140
147
|
|
|
141
148
|
inline void write_value(const ForeignJSON& json) {
|
|
142
149
|
out_ << Reindent(json.as_string, indent_);
|
|
143
150
|
}
|
|
144
151
|
|
|
145
|
-
inline void write_string(
|
|
146
|
-
out_ << '"'
|
|
152
|
+
inline void write_string(std::string_view str) {
|
|
153
|
+
out_ << '"';
|
|
154
|
+
if (NeedsJsonEscape(str)) // only create temporary std::string if necessary
|
|
155
|
+
out_ << EscapeJsonChars(str);
|
|
156
|
+
else
|
|
157
|
+
out_ << str;
|
|
158
|
+
out_ << '"';
|
|
147
159
|
}
|
|
148
|
-
inline void write_string(const char* str) { write_string(std::string(str)); }
|
|
149
160
|
|
|
150
161
|
enum JSONState { kObjectStart, kAfterValue };
|
|
151
162
|
std::ostream& out_;
|