visaljs 0.0.10 → 0.0.11
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/README.md +12 -4
- package/THIRD_PARTY_LICENSES +31 -1
- package/cli.js +962 -68
- package/node/include/js_node.h +11 -1
- package/node/prelude/_http_common.js +29 -0
- package/node/prelude/async_hooks.js +50 -11
- package/node/prelude/child_process.js +31 -4
- package/node/prelude/console.js +311 -143
- package/node/prelude/crypto.js +6 -4
- package/node/prelude/dgram.js +1169 -0
- package/node/prelude/diagnostics_channel.js +3 -1
- package/node/prelude/dns.js +250 -45
- package/node/prelude/dns_promises.js +8 -2
- package/node/prelude/fs_promises.js +9 -1
- package/node/prelude/http.js +395 -86
- package/node/prelude/https.js +13 -4
- package/node/prelude/internal/console_class.js +7 -0
- package/node/prelude/internal/console_global.js +25 -0
- package/node/prelude/internal/crypto/key_encryption.js +217 -0
- package/node/prelude/internal/crypto/keys.js +161 -26
- package/node/prelude/internal/crypto/random.js +24 -0
- package/node/prelude/internal/crypto/util.js +2 -1
- package/node/prelude/internal/crypto_x509.js +161 -0
- package/node/prelude/internal/dns_classes.js +6 -0
- package/node/prelude/internal/dns_resolver.js +371 -0
- package/node/prelude/internal/errors.js +9 -0
- package/node/prelude/internal/events_on.js +82 -37
- package/node/prelude/internal/features.js +8 -4
- package/node/prelude/internal/fs_filehandle.js +10 -4
- package/node/prelude/internal/perf_histogram.js +1 -1
- package/node/prelude/internal/process_more.js +32 -17
- package/node/prelude/internal/process_signals.js +8 -2
- package/node/prelude/internal/punycode.ts +163 -0
- package/node/prelude/internal/readline.js +648 -274
- package/node/prelude/internal/readline_editor.js +1240 -0
- package/node/prelude/internal/string_width.js +43 -0
- package/node/prelude/internal/tls/common.js +145 -33
- package/node/prelude/internal/tls/wrap.js +182 -49
- package/node/prelude/internal/tls/x509.js +4 -1
- package/node/prelude/internal/udp.js +177 -0
- package/node/prelude/net.js +13 -1
- package/node/prelude/os.js +24 -6
- package/node/prelude/perf_hooks.js +37 -2
- package/node/prelude/punycode.js +2 -130
- package/node/prelude/readline.js +113 -4
- package/node/prelude/readline_promises.js +56 -32
- package/node/prelude/tls.js +21 -4
- package/node/prelude/util.js +3 -16
- package/node/src/host_dns.c +623 -0
- package/node/src/host_http.c +12 -0
- package/node/src/host_net.c +46 -0
- package/node/src/host_os.c +1 -6
- package/node/src/host_sys.c +70 -0
- package/node/src/host_udp.c +418 -0
- package/node/third_party/c-ares/LICENSE.md +24 -0
- package/node/third_party/c-ares/config/darwin/ares_config.h +573 -0
- package/node/third_party/c-ares/config/freebsd/ares_config.h +573 -0
- package/node/third_party/c-ares/config/linux/ares_config.h +573 -0
- package/node/third_party/c-ares/config/openbsd/ares_config.h +583 -0
- package/node/third_party/c-ares/include/ares.h +1237 -0
- package/node/third_party/c-ares/include/ares_build.h +202 -0
- package/node/third_party/c-ares/include/ares_dns.h +127 -0
- package/node/third_party/c-ares/include/ares_dns_record.h +1119 -0
- package/node/third_party/c-ares/include/ares_nameser.h +510 -0
- package/node/third_party/c-ares/include/ares_version.h +47 -0
- package/node/third_party/c-ares/src/lib/ares_addrinfo2hostent.c +305 -0
- package/node/third_party/c-ares/src/lib/ares_addrinfo_localhost.c +245 -0
- package/node/third_party/c-ares/src/lib/ares_android.c +496 -0
- package/node/third_party/c-ares/src/lib/ares_android.h +38 -0
- package/node/third_party/c-ares/src/lib/ares_cancel.c +87 -0
- package/node/third_party/c-ares/src/lib/ares_close_sockets.c +137 -0
- package/node/third_party/c-ares/src/lib/ares_conn.c +511 -0
- package/node/third_party/c-ares/src/lib/ares_conn.h +202 -0
- package/node/third_party/c-ares/src/lib/ares_cookie.c +461 -0
- package/node/third_party/c-ares/src/lib/ares_data.c +168 -0
- package/node/third_party/c-ares/src/lib/ares_data.h +92 -0
- package/node/third_party/c-ares/src/lib/ares_destroy.c +159 -0
- package/node/third_party/c-ares/src/lib/ares_free_hostent.c +54 -0
- package/node/third_party/c-ares/src/lib/ares_free_string.c +33 -0
- package/node/third_party/c-ares/src/lib/ares_freeaddrinfo.c +67 -0
- package/node/third_party/c-ares/src/lib/ares_getaddrinfo.c +806 -0
- package/node/third_party/c-ares/src/lib/ares_getenv.c +38 -0
- package/node/third_party/c-ares/src/lib/ares_getenv.h +34 -0
- package/node/third_party/c-ares/src/lib/ares_gethostbyaddr.c +229 -0
- package/node/third_party/c-ares/src/lib/ares_gethostbyname.c +341 -0
- package/node/third_party/c-ares/src/lib/ares_getnameinfo.c +437 -0
- package/node/third_party/c-ares/src/lib/ares_hosts_file.c +960 -0
- package/node/third_party/c-ares/src/lib/ares_inet_net_pton.h +31 -0
- package/node/third_party/c-ares/src/lib/ares_init.c +631 -0
- package/node/third_party/c-ares/src/lib/ares_ipv6.h +115 -0
- package/node/third_party/c-ares/src/lib/ares_library_init.c +190 -0
- package/node/third_party/c-ares/src/lib/ares_metrics.c +261 -0
- package/node/third_party/c-ares/src/lib/ares_options.c +492 -0
- package/node/third_party/c-ares/src/lib/ares_parse_into_addrinfo.c +179 -0
- package/node/third_party/c-ares/src/lib/ares_private.h +648 -0
- package/node/third_party/c-ares/src/lib/ares_process.c +1649 -0
- package/node/third_party/c-ares/src/lib/ares_qcache.c +442 -0
- package/node/third_party/c-ares/src/lib/ares_query.c +151 -0
- package/node/third_party/c-ares/src/lib/ares_search.c +623 -0
- package/node/third_party/c-ares/src/lib/ares_send.c +300 -0
- package/node/third_party/c-ares/src/lib/ares_set_socket_functions.c +590 -0
- package/node/third_party/c-ares/src/lib/ares_setup.h +224 -0
- package/node/third_party/c-ares/src/lib/ares_socket.c +427 -0
- package/node/third_party/c-ares/src/lib/ares_socket.h +163 -0
- package/node/third_party/c-ares/src/lib/ares_sortaddrinfo.c +447 -0
- package/node/third_party/c-ares/src/lib/ares_strerror.c +91 -0
- package/node/third_party/c-ares/src/lib/ares_sysconfig.c +642 -0
- package/node/third_party/c-ares/src/lib/ares_sysconfig_files.c +851 -0
- package/node/third_party/c-ares/src/lib/ares_sysconfig_mac.c +373 -0
- package/node/third_party/c-ares/src/lib/ares_sysconfig_win.c +673 -0
- package/node/third_party/c-ares/src/lib/ares_timeout.c +162 -0
- package/node/third_party/c-ares/src/lib/ares_update_servers.c +1376 -0
- package/node/third_party/c-ares/src/lib/ares_version.c +36 -0
- package/node/third_party/c-ares/src/lib/config-dos.h +114 -0
- package/node/third_party/c-ares/src/lib/config-win32.h +396 -0
- package/node/third_party/c-ares/src/lib/dsa/ares_array.c +409 -0
- package/node/third_party/c-ares/src/lib/dsa/ares_htable.c +451 -0
- package/node/third_party/c-ares/src/lib/dsa/ares_htable.h +174 -0
- package/node/third_party/c-ares/src/lib/dsa/ares_htable_asvp.c +224 -0
- package/node/third_party/c-ares/src/lib/dsa/ares_htable_dict.c +230 -0
- package/node/third_party/c-ares/src/lib/dsa/ares_htable_strvp.c +210 -0
- package/node/third_party/c-ares/src/lib/dsa/ares_htable_szvp.c +188 -0
- package/node/third_party/c-ares/src/lib/dsa/ares_htable_vpstr.c +186 -0
- package/node/third_party/c-ares/src/lib/dsa/ares_htable_vpvp.c +194 -0
- package/node/third_party/c-ares/src/lib/dsa/ares_llist.c +385 -0
- package/node/third_party/c-ares/src/lib/dsa/ares_slist.c +479 -0
- package/node/third_party/c-ares/src/lib/dsa/ares_slist.h +207 -0
- package/node/third_party/c-ares/src/lib/event/ares_event.h +191 -0
- package/node/third_party/c-ares/src/lib/event/ares_event_configchg.c +746 -0
- package/node/third_party/c-ares/src/lib/event/ares_event_epoll.c +192 -0
- package/node/third_party/c-ares/src/lib/event/ares_event_kqueue.c +248 -0
- package/node/third_party/c-ares/src/lib/event/ares_event_poll.c +140 -0
- package/node/third_party/c-ares/src/lib/event/ares_event_select.c +159 -0
- package/node/third_party/c-ares/src/lib/event/ares_event_thread.c +575 -0
- package/node/third_party/c-ares/src/lib/event/ares_event_wake_pipe.c +172 -0
- package/node/third_party/c-ares/src/lib/event/ares_event_win32.c +981 -0
- package/node/third_party/c-ares/src/lib/event/ares_event_win32.h +161 -0
- package/node/third_party/c-ares/src/lib/include/ares_array.h +276 -0
- package/node/third_party/c-ares/src/lib/include/ares_buf.h +732 -0
- package/node/third_party/c-ares/src/lib/include/ares_htable_asvp.h +130 -0
- package/node/third_party/c-ares/src/lib/include/ares_htable_dict.h +123 -0
- package/node/third_party/c-ares/src/lib/include/ares_htable_strvp.h +130 -0
- package/node/third_party/c-ares/src/lib/include/ares_htable_szvp.h +118 -0
- package/node/third_party/c-ares/src/lib/include/ares_htable_vpstr.h +111 -0
- package/node/third_party/c-ares/src/lib/include/ares_htable_vpvp.h +128 -0
- package/node/third_party/c-ares/src/lib/include/ares_llist.h +239 -0
- package/node/third_party/c-ares/src/lib/include/ares_mem.h +41 -0
- package/node/third_party/c-ares/src/lib/include/ares_str.h +261 -0
- package/node/third_party/c-ares/src/lib/inet_net_pton.c +451 -0
- package/node/third_party/c-ares/src/lib/inet_ntop.c +219 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_create_query.c +78 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_expand_name.c +99 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_expand_string.c +107 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_fds.c +80 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_getsock.c +85 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_parse_a_reply.c +107 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
- package/node/third_party/c-ares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
- package/node/third_party/c-ares/src/lib/record/ares_dns_mapping.c +982 -0
- package/node/third_party/c-ares/src/lib/record/ares_dns_multistring.c +309 -0
- package/node/third_party/c-ares/src/lib/record/ares_dns_multistring.h +72 -0
- package/node/third_party/c-ares/src/lib/record/ares_dns_name.c +736 -0
- package/node/third_party/c-ares/src/lib/record/ares_dns_parse.c +1360 -0
- package/node/third_party/c-ares/src/lib/record/ares_dns_private.h +273 -0
- package/node/third_party/c-ares/src/lib/record/ares_dns_record.c +1701 -0
- package/node/third_party/c-ares/src/lib/record/ares_dns_write.c +1229 -0
- package/node/third_party/c-ares/src/lib/str/ares_buf.c +1510 -0
- package/node/third_party/c-ares/src/lib/str/ares_str.c +562 -0
- package/node/third_party/c-ares/src/lib/str/ares_strsplit.c +90 -0
- package/node/third_party/c-ares/src/lib/str/ares_strsplit.h +51 -0
- package/node/third_party/c-ares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
- package/node/third_party/c-ares/src/lib/util/ares_iface_ips.c +640 -0
- package/node/third_party/c-ares/src/lib/util/ares_iface_ips.h +140 -0
- package/node/third_party/c-ares/src/lib/util/ares_math.c +167 -0
- package/node/third_party/c-ares/src/lib/util/ares_math.h +58 -0
- package/node/third_party/c-ares/src/lib/util/ares_rand.c +389 -0
- package/node/third_party/c-ares/src/lib/util/ares_rand.h +36 -0
- package/node/third_party/c-ares/src/lib/util/ares_threads.c +613 -0
- package/node/third_party/c-ares/src/lib/util/ares_threads.h +60 -0
- package/node/third_party/c-ares/src/lib/util/ares_time.h +49 -0
- package/node/third_party/c-ares/src/lib/util/ares_timeval.c +95 -0
- package/node/third_party/c-ares/src/lib/util/ares_uri.c +1627 -0
- package/node/third_party/c-ares/src/lib/util/ares_uri.h +252 -0
- package/node/third_party/c-ares/src/lib/windows_port.c +29 -0
- package/package.json +1 -1
- package/prebuilt/darwin-arm64/cares-a6286c65ca9374a3.a +0 -0
- package/prebuilt/darwin-x64/cares-a6286c65ca9374a3.a +0 -0
- package/prebuilt/linux-arm64/cares-4ba05ac8e948af8e.a +0 -0
- package/prebuilt/linux-arm64-musl/cares-4ba05ac8e948af8e.a +0 -0
- package/prebuilt/linux-x64/cares-4ba05ac8e948af8e.a +0 -0
- package/prebuilt/linux-x64-musl/cares-4ba05ac8e948af8e.a +0 -0
- package/prebuilt/win32-x64/boringssl-ce573858472b7fc9.a +0 -0
- package/prebuilt/win32-x64/brotli-20d86a61f30baeb3.a +0 -0
- package/prebuilt/win32-x64/cares-49c9ec95162b912d.a +0 -0
- package/prebuilt/win32-x64/uv-b11bae65d7fced82.a +0 -0
- package/prebuilt/win32-x64/zlib-4ce2317a4c3f5fb5.a +0 -0
- package/prebuilt/win32-x64/zstd-015315ac7c784c73.a +0 -0
- package/runtime/include/js_builtins.h +5 -0
- package/runtime/include/js_crypto.h +11 -0
- package/runtime/include/js_gc.h +13 -10
- package/runtime/include/js_jobs.h +2 -0
- package/runtime/include/js_object.h +58 -0
- package/runtime/include/jscontext.h +1 -0
- package/runtime/src/crypto_internal.h +1 -0
- package/runtime/src/crypto_subtle.c +66 -7
- package/runtime/src/crypto_tls.c +265 -19
- package/runtime/src/gc.c +73 -92
- package/runtime/src/inspect.c +18 -1
- package/runtime/src/jobs.c +37 -22
- package/runtime/src/object.c +49 -2
- package/runtime/src/os.c +16 -6
- package/runtime/src/os.h +2 -0
- package/runtime/src/process.c +97 -10
package/runtime/src/process.c
CHANGED
|
@@ -197,7 +197,7 @@ static JSValue specific_type(JSContext *ctx, JSValue v) {
|
|
|
197
197
|
JSValue s = js_concat(ctx, prefix, quoted);
|
|
198
198
|
return js_is_exception(s) ? s : js_concat(ctx, s, suffix);
|
|
199
199
|
}
|
|
200
|
-
const char *type = js_is_number(v) ? "number" : js_is_bool(v) ? "boolean" : "symbol";
|
|
200
|
+
const char *type = js_is_number(v) ? "number" : js_is_bool(v) ? "boolean" : js_is_symbol(v) ? "symbol" : "bigint";
|
|
201
201
|
JSValue shown = js_is_symbol(v) ? js_symbol_descriptive_string(ctx, v) : js_inspect(ctx, v);
|
|
202
202
|
if (js_is_exception(shown)) return shown;
|
|
203
203
|
snprintf(buf, sizeof buf, "type %s (", type);
|
|
@@ -293,8 +293,7 @@ NATIVE(process_getgid) { UNUSED_ARGS; (void)ctx, (void)argc, (void)argv; return
|
|
|
293
293
|
NATIVE(process_getegid) { UNUSED_ARGS; (void)ctx, (void)argc, (void)argv; return js_number((double)getegid()); }
|
|
294
294
|
#endif
|
|
295
295
|
|
|
296
|
-
/* nextTick(callback, ...args):
|
|
297
|
-
* with them. */
|
|
296
|
+
/* nextTick(callback, ...args): on the tick queue, which runs before the promise jobs */
|
|
298
297
|
NATIVE(process_next_tick) {
|
|
299
298
|
UNUSED_ARGS;
|
|
300
299
|
if (!js_is_callable(ARG(0))) return invalid_arg_type(ctx, "callback", "of type function", ARG(0));
|
|
@@ -304,7 +303,7 @@ NATIVE(process_next_tick) {
|
|
|
304
303
|
if (js_is_exception(args)) return args;
|
|
305
304
|
}
|
|
306
305
|
JSJob job = { JS_JOB_CALLBACK, NULL, argv[0], args, JS_UNDEFINED, JS_UNDEFINED };
|
|
307
|
-
|
|
306
|
+
js_enqueue_tick(ctx, &job);
|
|
308
307
|
return JS_UNDEFINED;
|
|
309
308
|
}
|
|
310
309
|
|
|
@@ -467,6 +466,88 @@ static const char *arch(void) {
|
|
|
467
466
|
#endif
|
|
468
467
|
}
|
|
469
468
|
|
|
469
|
+
/* ---- process.env ------------------------------------------------------------------------------ */
|
|
470
|
+
|
|
471
|
+
/* Node's process.env interceptors (src/node_env_var.cc): a value is stored as a string and set in
|
|
472
|
+
* the C environment, a delete unsets it, and only plain data properties are accepted. Reads are
|
|
473
|
+
* ordinary (no get_own_property hook), so they stay as fast as a plain object's; writes aren't
|
|
474
|
+
* cached, so each reaches env_define. */
|
|
475
|
+
static bool env_populating; /* new_process copying environ in: nothing to set */
|
|
476
|
+
|
|
477
|
+
static char *env_utf8(JSContext *ctx, JSValue s) {
|
|
478
|
+
JSStrView v = js_string_view(ctx, s);
|
|
479
|
+
size_t n = js_view_to_utf8(v, NULL, 0);
|
|
480
|
+
char *out = malloc(n + 1);
|
|
481
|
+
if (!out) js_fatal("out of memory in process.env");
|
|
482
|
+
js_view_to_utf8(v, out, n + 1);
|
|
483
|
+
out[n] = '\0';
|
|
484
|
+
return out;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
static void env_apply(JSContext *ctx, JSValue key, JSValue value) {
|
|
488
|
+
char *k = env_utf8(ctx, key);
|
|
489
|
+
if (js_is_undefined(value)) {
|
|
490
|
+
#ifdef _WIN32
|
|
491
|
+
_putenv_s(k, "");
|
|
492
|
+
#else
|
|
493
|
+
unsetenv(k);
|
|
494
|
+
#endif
|
|
495
|
+
} else {
|
|
496
|
+
char *v = env_utf8(ctx, value);
|
|
497
|
+
#ifdef _WIN32
|
|
498
|
+
_putenv_s(k, v);
|
|
499
|
+
#else
|
|
500
|
+
setenv(k, v, 1);
|
|
501
|
+
#endif
|
|
502
|
+
free(v);
|
|
503
|
+
}
|
|
504
|
+
if (strcmp(k, "TZ") == 0) js_os_timezone_changed();
|
|
505
|
+
free(k);
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
static int env_define(JSContext *ctx, JSObject *o, JSValue key, const JSPropertyDescriptor *desc, bool throw_on_fail) {
|
|
509
|
+
(void)throw_on_fail;
|
|
510
|
+
if (env_populating) return JS_ORDINARY;
|
|
511
|
+
if (js_is_symbol(key)) {
|
|
512
|
+
js_discard(js_throw_type_error(ctx, "Cannot convert a Symbol value to a string"));
|
|
513
|
+
return -1;
|
|
514
|
+
}
|
|
515
|
+
if (desc->has & (JS_DESC_GET | JS_DESC_SET)) {
|
|
516
|
+
js_discard(throw_with_code(ctx, JS_TYPE_ERROR, "ERR_INVALID_OBJECT_DEFINE_PROPERTY",
|
|
517
|
+
js_new_string_cstr(ctx, "'process.env' does not accept an accessor(getter/setter) descriptor")));
|
|
518
|
+
return -1;
|
|
519
|
+
}
|
|
520
|
+
const uint8_t all = JS_DESC_WRITABLE | JS_DESC_ENUMERABLE | JS_DESC_CONFIGURABLE;
|
|
521
|
+
bool full = (desc->has & JS_DESC_VALUE) && (desc->has & all) == all && (desc->attrs & JS_PROP_DEFAULT) == JS_PROP_DEFAULT;
|
|
522
|
+
/* an assignment to a variable already set: [[Set]] redefines it with the value alone */
|
|
523
|
+
JSPropertyDescriptor existing;
|
|
524
|
+
bool assign = (desc->has & JS_DESC_VALUE) && !(desc->has & all) && js_ordinary_get_own_property(ctx, o, key, &existing) == 1;
|
|
525
|
+
if (!full && !assign) {
|
|
526
|
+
js_discard(throw_with_code(ctx, JS_TYPE_ERROR, "ERR_INVALID_OBJECT_DEFINE_PROPERTY",
|
|
527
|
+
js_new_string_cstr(ctx, "'process.env' only accepts a configurable, writable, and enumerable data descriptor")));
|
|
528
|
+
return -1;
|
|
529
|
+
}
|
|
530
|
+
JSValue value = js_to_string(ctx, desc->value);
|
|
531
|
+
if (js_is_exception(value)) return -1;
|
|
532
|
+
JSValue name = js_to_string(ctx, key);
|
|
533
|
+
if (js_is_exception(name)) return -1;
|
|
534
|
+
if (js_string_length(name) == 0) return 1; /* as Node's: setenv refuses an empty name, nothing is stored */
|
|
535
|
+
env_apply(ctx, name, value);
|
|
536
|
+
JSPropertyDescriptor d = js_data_descriptor(value, JS_PROP_DEFAULT);
|
|
537
|
+
return js_ordinary_define_own_property(ctx, o, key, &d, true);
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
static int env_delete(JSContext *ctx, JSObject *o, JSValue key, bool throw_on_fail) {
|
|
541
|
+
(void)o, (void)throw_on_fail;
|
|
542
|
+
if (env_populating || js_is_symbol(key)) return JS_ORDINARY;
|
|
543
|
+
JSValue name = js_to_string(ctx, key);
|
|
544
|
+
if (js_is_exception(name)) return -1;
|
|
545
|
+
env_apply(ctx, name, JS_UNDEFINED);
|
|
546
|
+
return JS_ORDINARY;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
static const JSClass env_class = { "Object", sizeof(JSObject), NULL, env_define, env_delete, NULL, NULL, NULL, NULL };
|
|
550
|
+
|
|
470
551
|
static JSValue new_process(JSContext *ctx) {
|
|
471
552
|
JSValue process = js_new_object(ctx);
|
|
472
553
|
if (js_is_exception(process)) return process;
|
|
@@ -494,9 +575,11 @@ static JSValue new_process(JSContext *ctx) {
|
|
|
494
575
|
define(ctx, p, "execArgv", js_new_array(ctx, 0)); /* Node's own options: a compiled program has none */
|
|
495
576
|
define(ctx, p, "execPath", exec);
|
|
496
577
|
|
|
497
|
-
/* env:
|
|
498
|
-
|
|
499
|
-
|
|
578
|
+
/* env: the environment as it was at startup, in an object whose writes and deletes reach the C
|
|
579
|
+
* environment (env_class) */
|
|
580
|
+
JSValue env = js_object_value(js_alloc_object(ctx, JS_CELL_OBJECT, js_shape_root(ctx, &env_class,
|
|
581
|
+
ctx->intrinsics[JS_INTRINSIC_OBJECT_PROTOTYPE], JS_DEFAULT_INLINE_SLOTS)));
|
|
582
|
+
env_populating = true;
|
|
500
583
|
for (size_t i = 0; environ && environ[i]; i++) {
|
|
501
584
|
const char *eq = strchr(environ[i] + 1, '=');
|
|
502
585
|
if (!eq) continue;
|
|
@@ -507,6 +590,7 @@ static JSValue new_process(JSContext *ctx) {
|
|
|
507
590
|
if (js_is_exception(key)) return key;
|
|
508
591
|
js_define_data(ctx, js_as_object(env), key, value, JS_PROP_DEFAULT);
|
|
509
592
|
}
|
|
593
|
+
env_populating = false;
|
|
510
594
|
define(ctx, p, "env", env);
|
|
511
595
|
define(ctx, p, "pid", js_int32((int32_t)getpid()));
|
|
512
596
|
/* version and versions: the Node API implemented, and visaljs's own; read-only, as Node's,
|
|
@@ -516,13 +600,16 @@ static JSValue new_process(JSContext *ctx) {
|
|
|
516
600
|
if (js_is_exception(versions)) return versions;
|
|
517
601
|
js_define_data(ctx, js_as_object(versions), js_atom_from_cstr(ctx, "node"), js_new_string_cstr(ctx, JS_NODE_VERSION), JS_PROP_ENUMERABLE | JS_PROP_CONFIGURABLE);
|
|
518
602
|
js_define_data(ctx, js_as_object(versions), js_atom_from_cstr(ctx, "visaljs"), js_new_string_cstr(ctx, JS_VISALJS_VERSION), JS_PROP_ENUMERABLE | JS_PROP_CONFIGURABLE);
|
|
603
|
+
/* Node 24.21's OpenSSL: crypto is BoringSSL, but behaves as Node's (its errors and limits), so programs
|
|
604
|
+
and Node's tests see the Node they expect. Node's own check for crypto is Boolean(process.versions.openssl). */
|
|
605
|
+
js_define_data(ctx, js_as_object(versions), js_atom_from_cstr(ctx, "openssl"), js_new_string_cstr(ctx, "3.5.5"), JS_PROP_ENUMERABLE | JS_PROP_CONFIGURABLE);
|
|
519
606
|
js_define_data(ctx, p, js_atom_from_cstr(ctx, "versions"), versions, JS_PROP_ENUMERABLE | JS_PROP_CONFIGURABLE);
|
|
520
|
-
/* features: what this build has, in Node 24's names. No inspector, TLS
|
|
521
|
-
|
|
607
|
+
/* features: what this build has, in Node 24's names. No inspector, TLS without OCSP stapling, require()
|
|
608
|
+
of ES modules, no QUIC, no type stripping; openssl_is_boringssl false, as crypto behaves as OpenSSL's */
|
|
522
609
|
static const struct { const char *name; bool on; } features[] = {
|
|
523
610
|
{ "inspector", false }, { "debug", false }, { "uv", true }, { "ipv6", true },
|
|
524
611
|
{ "tls_alpn", true }, { "tls_sni", true }, { "tls_ocsp", false }, { "tls", true },
|
|
525
|
-
{ "openssl_is_boringssl",
|
|
612
|
+
{ "openssl_is_boringssl", false }, { "cached_builtins", true }, { "require_module", true }, { "quic", false },
|
|
526
613
|
{ "typescript", false },
|
|
527
614
|
};
|
|
528
615
|
JSValue feats = js_new_object(ctx);
|