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
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
// node:readline/promises
|
|
2
|
-
// cursor moves queued and written by commit().
|
|
3
|
-
|
|
1
|
+
// node:readline/promises (Node's lib/readline/promises.js and internal/readline/promises.js):
|
|
2
|
+
// Interface with question() as a promise, and Readline, cursor moves queued and written by commit().
|
|
3
|
+
// Ported from Node.js (Copyright Node.js contributors, MIT): node/third_party/nodejs/LICENSE.
|
|
4
|
+
import { invalidArgType, outOfRange } from "./internal/errors.js";
|
|
4
5
|
import {
|
|
5
|
-
|
|
6
|
+
abortError, addAbortListener, CSI, Interface as BaseInterface, kQuestion, kQuestionCancel, kQuestionReject, validateAbortSignal,
|
|
6
7
|
} from "./internal/readline.js";
|
|
7
8
|
|
|
9
|
+
const kEmptyObject = Object.freeze({ __proto__: null });
|
|
10
|
+
|
|
8
11
|
export class Interface extends BaseInterface {
|
|
9
|
-
|
|
10
|
-
question(query, options = {}) {
|
|
12
|
+
question(query, options = kEmptyObject) {
|
|
11
13
|
return new Promise((resolve, reject) => {
|
|
12
14
|
let cb = resolve;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (signal
|
|
16
|
-
throw codeError(TypeError, "ERR_INVALID_ARG_TYPE", 'The "options.signal" property must be an instance of AbortSignal.');
|
|
17
|
-
}
|
|
18
|
-
if (signal.aborted) return reject(abortError(signal));
|
|
15
|
+
if (options?.signal) {
|
|
16
|
+
validateAbortSignal(options.signal, "options.signal");
|
|
17
|
+
if (options.signal.aborted) return reject(abortError(undefined, { cause: options.signal.reason }));
|
|
19
18
|
const onAbort = () => {
|
|
20
19
|
this[kQuestionCancel]();
|
|
21
|
-
reject(abortError(signal));
|
|
20
|
+
reject(abortError(undefined, { cause: options.signal.reason }));
|
|
22
21
|
};
|
|
23
|
-
signal
|
|
22
|
+
const disposable = addAbortListener(options.signal, onAbort);
|
|
24
23
|
cb = (answer) => {
|
|
25
|
-
|
|
24
|
+
disposable[Symbol.dispose]();
|
|
26
25
|
resolve(answer);
|
|
27
26
|
};
|
|
28
27
|
}
|
|
28
|
+
this[kQuestionReject] = reject;
|
|
29
29
|
this[kQuestion](query, cb);
|
|
30
30
|
});
|
|
31
31
|
}
|
|
@@ -35,48 +35,72 @@ export function createInterface(input, output, completer, terminal) {
|
|
|
35
35
|
return new Interface(input, output, completer, terminal);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
function validateInteger(value, name, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {
|
|
39
|
+
if (typeof value !== "number") throw invalidArgType(name, "of type number", value);
|
|
40
|
+
if (!Number.isInteger(value)) throw outOfRange(name, "an integer", value);
|
|
41
|
+
if (value < min || value > max) throw outOfRange(name, `>= ${min} && <= ${max}`, value);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Node's isWritable: a stream that can still be written */
|
|
45
|
+
const isWritable = (stream) => stream !== null && typeof stream === "object" && typeof stream.write === "function" &&
|
|
46
|
+
stream.writable !== false && !stream.writableEnded && !stream.destroyed;
|
|
47
|
+
|
|
39
48
|
export class Readline {
|
|
49
|
+
#autoCommit = false;
|
|
40
50
|
#stream;
|
|
41
51
|
#todo = [];
|
|
42
|
-
#autoCommit;
|
|
43
52
|
|
|
44
53
|
constructor(stream, options = undefined) {
|
|
45
|
-
if (stream
|
|
46
|
-
throw codeError(TypeError, "ERR_INVALID_ARG_TYPE", 'The "stream" argument must be an instance of Writable.');
|
|
47
|
-
}
|
|
54
|
+
if (!isWritable(stream)) throw invalidArgType("stream", "an instance of Writable", stream);
|
|
48
55
|
this.#stream = stream;
|
|
49
|
-
|
|
56
|
+
if (options?.autoCommit != null) {
|
|
57
|
+
if (typeof options.autoCommit !== "boolean") throw invalidArgType("options.autoCommit", "of type boolean", options.autoCommit);
|
|
58
|
+
this.#autoCommit = options.autoCommit;
|
|
59
|
+
}
|
|
50
60
|
}
|
|
51
61
|
|
|
52
|
-
#
|
|
62
|
+
#queue(data) {
|
|
53
63
|
if (this.#autoCommit) process.nextTick(() => this.#stream.write(data));
|
|
54
64
|
else this.#todo.push(data);
|
|
55
|
-
return this;
|
|
56
65
|
}
|
|
57
66
|
|
|
58
67
|
cursorTo(x, y = undefined) {
|
|
59
|
-
|
|
68
|
+
validateInteger(x, "x");
|
|
69
|
+
if (y != null) validateInteger(y, "y");
|
|
70
|
+
this.#queue(y == null ? CSI`${x + 1}G` : CSI`${y + 1};${x + 1}H`);
|
|
71
|
+
return this;
|
|
60
72
|
}
|
|
61
73
|
|
|
62
74
|
moveCursor(dx, dy) {
|
|
63
|
-
if (
|
|
64
|
-
|
|
75
|
+
if (dx || dy) {
|
|
76
|
+
validateInteger(dx, "dx");
|
|
77
|
+
validateInteger(dy, "dy");
|
|
78
|
+
let data = "";
|
|
79
|
+
if (dx < 0) data += CSI`${-dx}D`;
|
|
80
|
+
else if (dx > 0) data += CSI`${dx}C`;
|
|
81
|
+
if (dy < 0) data += CSI`${-dy}A`;
|
|
82
|
+
else if (dy > 0) data += CSI`${dy}B`;
|
|
83
|
+
this.#queue(data);
|
|
84
|
+
}
|
|
85
|
+
return this;
|
|
65
86
|
}
|
|
66
87
|
|
|
67
88
|
clearLine(dir) {
|
|
68
|
-
|
|
89
|
+
validateInteger(dir, "dir", -1, 1);
|
|
90
|
+
this.#queue(dir < 0 ? CSI.kClearToLineBeginning : dir > 0 ? CSI.kClearToLineEnd : CSI.kClearLine);
|
|
91
|
+
return this;
|
|
69
92
|
}
|
|
70
93
|
|
|
71
94
|
clearScreenDown() {
|
|
72
|
-
|
|
95
|
+
this.#queue(CSI.kClearScreenDown);
|
|
96
|
+
return this;
|
|
73
97
|
}
|
|
74
98
|
|
|
75
|
-
/** Writes what's queued: resolved once written. */
|
|
76
99
|
commit() {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
100
|
+
return new Promise((resolve) => {
|
|
101
|
+
this.#stream.write(this.#todo.join(""), resolve);
|
|
102
|
+
this.#todo = [];
|
|
103
|
+
});
|
|
80
104
|
}
|
|
81
105
|
|
|
82
106
|
rollback() {
|
package/node/prelude/tls.js
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
// Ported from Node.js (Copyright Node.js contributors, MIT): node/third_party/nodejs/LICENSE.
|
|
6
6
|
import { fsReadFile, tlsRootCertificates } from "visaljs:host";
|
|
7
7
|
import { EventEmitter } from "./events.js";
|
|
8
|
-
import { invalidArgType, invalidArgValue, validateString } from "./internal/errors.js";
|
|
8
|
+
import { codeError, invalidArgType, invalidArgValue, validateString } from "./internal/errors.js";
|
|
9
9
|
import { cipherNames, createSecureContext, defaults, extraCAs, SecureContext } from "./internal/tls/common.js";
|
|
10
10
|
import { checkServerIdentity, connect, convertALPNProtocols, createServer, Server, TLSSocket } from "./internal/tls/wrap.js";
|
|
11
|
-
import { toPem } from "./internal/tls/x509.js";
|
|
11
|
+
import { certificatesOf, parseCertificate, toPem } from "./internal/tls/x509.js";
|
|
12
12
|
import { Duplex } from "./stream.js";
|
|
13
13
|
|
|
14
14
|
export { checkServerIdentity, connect, convertALPNProtocols, createSecureContext, createServer, SecureContext, Server, TLSSocket };
|
|
@@ -18,6 +18,10 @@ export const CLIENT_RENEG_WINDOW = 600;
|
|
|
18
18
|
|
|
19
19
|
export const getCiphers = () => cipherNames();
|
|
20
20
|
|
|
21
|
+
/* RFC 8879's: none (BoringSSL takes the algorithms from its user, and visaljs gives it none) */
|
|
22
|
+
const compressionAlgorithms = [];
|
|
23
|
+
export const getCertificateCompressionAlgorithms = () => compressionAlgorithms;
|
|
24
|
+
|
|
21
25
|
let bundled;
|
|
22
26
|
const bundledRoots = () => (bundled ??= Object.freeze(tlsRootCertificates()));
|
|
23
27
|
|
|
@@ -66,7 +70,20 @@ export function setDefaultCACertificates(certs) {
|
|
|
66
70
|
throw invalidArgType(`certs[${i}]`, "of type string or an instance of ArrayBufferView", certs[i]);
|
|
67
71
|
}
|
|
68
72
|
}
|
|
69
|
-
|
|
73
|
+
/* as Node's store: each certificate once, re-encoded; one OpenSSL can't read, or none of those given, changes nothing */
|
|
74
|
+
const ders = new Map();
|
|
75
|
+
for (const cert of certs) {
|
|
76
|
+
for (const der of certificatesOf(cert)) {
|
|
77
|
+
try {
|
|
78
|
+
parseCertificate(der);
|
|
79
|
+
} catch {
|
|
80
|
+
throw codeError(Error, "ERR_OSSL_PEM_ASN1_LIB", "error:0480000D:PEM routines::ASN1 lib");
|
|
81
|
+
}
|
|
82
|
+
ders.set(der.toString("latin1"), der);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (certs.length > 0 && ders.size === 0) throw codeError(Error, "ERR_CRYPTO_OPERATION_FAILED", "No valid certificates found in the provided array");
|
|
86
|
+
defaults.defaultCA = [...ders.values()].map((der) => toPem(der));
|
|
70
87
|
defaultPems = undefined;
|
|
71
88
|
}
|
|
72
89
|
|
|
@@ -127,7 +144,7 @@ const tls = {
|
|
|
127
144
|
set DEFAULT_MIN_VERSION(v) { defaults.DEFAULT_MIN_VERSION = v; },
|
|
128
145
|
get DEFAULT_MAX_VERSION() { return defaults.DEFAULT_MAX_VERSION; },
|
|
129
146
|
set DEFAULT_MAX_VERSION(v) { defaults.DEFAULT_MAX_VERSION = v; },
|
|
130
|
-
getCiphers,
|
|
147
|
+
getCiphers, getCertificateCompressionAlgorithms,
|
|
131
148
|
get rootCertificates() { return bundledRoots(); },
|
|
132
149
|
getCACertificates, setDefaultCACertificates, convertALPNProtocols, checkServerIdentity, createSecureContext, SecureContext,
|
|
133
150
|
TLSSocket, Server, createServer, connect, createSecurePair,
|
package/node/prelude/util.js
CHANGED
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
// TextDecoder, the globals (the runtime's encoding component).
|
|
7
7
|
import { utilFormat, utilFormatWithOptions, utilInspect } from "visaljs:host";
|
|
8
8
|
import { isDeepStrictEqual } from "./internal/comparisons.js";
|
|
9
|
-
import { validateFunction
|
|
9
|
+
import { validateFunction } from "./internal/errors.js";
|
|
10
10
|
import { lazyClass, lazyFunction } from "./internal/features.js";
|
|
11
|
+
import { stripVTControlCharacters } from "./internal/string_width.js";
|
|
11
12
|
import types, { isPromise } from "./util_types.js";
|
|
12
13
|
|
|
13
14
|
export { types };
|
|
@@ -32,15 +33,7 @@ export const format = utilFormat;
|
|
|
32
33
|
export const formatWithOptions = utilFormatWithOptions;
|
|
33
34
|
export const TextEncoder = globalThis.TextEncoder;
|
|
34
35
|
export const TextDecoder = globalThis.TextDecoder;
|
|
35
|
-
|
|
36
|
-
/* ANSI escape codes, as Node's internal/util/inspect.js matches them: an OSC sequence (a terminal
|
|
37
|
-
hyperlink: ESC ] … BEL) whole, or a CSI sequence */
|
|
38
|
-
const ansi = new RegExp(
|
|
39
|
-
"(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))" +
|
|
40
|
-
"|[\\u001B\\u009B][[\\]()#;?]*" +
|
|
41
|
-
"(?:\\d{1,4}(?:[;:]\\d{0,4})*)?" +
|
|
42
|
-
"[\\dA-PR-TZcf-nq-uy=><~]", "g",
|
|
43
|
-
);
|
|
36
|
+
export { stripVTControlCharacters };
|
|
44
37
|
|
|
45
38
|
const kCustomPromisifiedSymbol = Symbol.for("nodejs.util.promisify.custom");
|
|
46
39
|
/* names to make an object of when the callback gets several values, e.g. ['bytesRead', 'buffer'] */
|
|
@@ -93,12 +86,6 @@ export function promisify(original) {
|
|
|
93
86
|
|
|
94
87
|
promisify.custom = kCustomPromisifiedSymbol;
|
|
95
88
|
|
|
96
|
-
/** The string without its ANSI escape codes (colors, cursor movements, …). */
|
|
97
|
-
export function stripVTControlCharacters(str) {
|
|
98
|
-
validateString(str, "str");
|
|
99
|
-
if (!str.includes("\u001B") && !str.includes("\u009B")) return str; /* no escape introducer */
|
|
100
|
-
return str.replace(ansi, "");
|
|
101
|
-
}
|
|
102
89
|
|
|
103
90
|
const codesWarned = new Set();
|
|
104
91
|
|