From 913ec56798de6c5cf5e78f2b860e2f0f19816eb9 Mon Sep 17 00:00:00 2001
From: pezhmanparsaee
Date: Thu, 25 Mar 2021 01:08:03 +0430
Subject: [PATCH 01/41] deps: cjs-module-lexer: cherry-pick 22093e765f
Original commit message:
fix "the the" typo in README.md file
Refs: https://github.com/guybedford/cjs-module-lexer/commit/22093e765f02d1c97c1bd9baf3ea21653ba92548
PR-URL: https://github.com/nodejs/node/pull/37895
Reviewed-By: Pooja D P
Reviewed-By: Antoine du Hamel
Reviewed-By: Harshitha K P
---
deps/cjs-module-lexer/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/deps/cjs-module-lexer/README.md b/deps/cjs-module-lexer/README.md
index 5e963988eac791..44e615177e204c 100755
--- a/deps/cjs-module-lexer/README.md
+++ b/deps/cjs-module-lexer/README.md
@@ -129,7 +129,7 @@ Spacing between tokens is taken to be any ECMA-262 whitespace, ECMA-262 block co
* The returned export names are taken to be the combination of:
1. All `IDENTIFIER` and `IDENTIFIER_STRING` slots for `EXPORTS_MEMBER` and `EXPORTS_LITERAL` matches.
2. The first `IDENTIFIER_STRING` slot for all `EXPORTS_DEFINE_VALUE` matches where that same string is not an `EXPORTS_DEFINE` match that is not also an `EXPORTS_DEFINE_VALUE` match.
-* The reexport specifiers are taken to be the the combination of:
+* The reexport specifiers are taken to be the combination of:
1. The `REQUIRE` matches of the last matched of either `MODULE_EXPORTS_ASSIGN` or `EXPORTS_LITERAL`.
2. All _top-level_ `EXPORT_STAR` `REQUIRE` matches and `EXPORTS_ASSIGN` matches whose `IDENTIFIER` also matches the first `IDENTIFIER` in `EXPORT_STAR_LIB`.
From 5e15ae05d070ea69699c1ef643e07464e80cf08a Mon Sep 17 00:00:00 2001
From: Rich Trott
Date: Sat, 27 Mar 2021 22:36:01 -0700
Subject: [PATCH 02/41] test: add DataView test case for v8 serdes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This completes code coverage for v8.js.
Refs: https://coverage.nodejs.org/coverage-290c158018ac0277/lib/v8.js.html#L240
PR-URL: https://github.com/nodejs/node/pull/37955
Reviewed-By: Anna Henningsen
Reviewed-By: Benjamin Gruenbaum
Reviewed-By: Michaël Zasso
Reviewed-By: Colin Ihrig
Reviewed-By: Luigi Pinca
---
test/parallel/test-v8-serdes.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/test/parallel/test-v8-serdes.js b/test/parallel/test-v8-serdes.js
index 7485aa19a7d3d9..9b153739c57270 100644
--- a/test/parallel/test-v8-serdes.js
+++ b/test/parallel/test-v8-serdes.js
@@ -16,6 +16,7 @@ const objects = [
{ bar: 'baz' },
new Uint8Array([1, 2, 3, 4]),
new Uint32Array([1, 2, 3, 4]),
+ new DataView(new ArrayBuffer(42)),
Buffer.from([1, 2, 3, 4]),
undefined,
null,
From 570fbcef93e33e2ebfae4e087c77fe81dd4d402d Mon Sep 17 00:00:00 2001
From: Darshan Sen
Date: Tue, 23 Mar 2021 22:23:11 +0530
Subject: [PATCH 03/41] url: forbid pipe in URL host
Fixes: https://github.com/nodejs/node/issues/37862
PR-URL: https://github.com/nodejs/node/pull/37877
Reviewed-By: James M Snell
Reviewed-By: Rich Trott
---
src/node_url.cc | 2 +-
test/cctest/test_url.cc | 5 ++
test/fixtures/wpt/README.md | 2 +-
.../wpt/url/resources/urltestdata.json | 68 ++++++++++++++++---
test/fixtures/wpt/versions.json | 2 +-
5 files changed, 67 insertions(+), 12 deletions(-)
diff --git a/src/node_url.cc b/src/node_url.cc
index 399c37638ad56c..554ee855848cc7 100644
--- a/src/node_url.cc
+++ b/src/node_url.cc
@@ -208,7 +208,7 @@ CHAR_TEST(8, IsForbiddenHostCodePoint,
ch == ' ' || ch == '#' || ch == '%' || ch == '/' ||
ch == ':' || ch == '?' || ch == '@' || ch == '[' ||
ch == '<' || ch == '>' || ch == '\\' || ch == ']' ||
- ch == '^')
+ ch == '^' || ch == '|')
// https://url.spec.whatwg.org/#windows-drive-letter
TWO_CHAR_STRING_TEST(8, IsWindowsDriveLetter,
diff --git a/test/cctest/test_url.cc b/test/cctest/test_url.cc
index aa2b380dd11eda..f2430b3d506ac1 100644
--- a/test/cctest/test_url.cc
+++ b/test/cctest/test_url.cc
@@ -44,6 +44,11 @@ TEST_F(URLTest, Simple2) {
EXPECT_EQ(simple.fragment(), "fragment");
}
+TEST_F(URLTest, ForbiddenHostCodePoint) {
+ URL error("https://exa|mple.org:81/a/b/c?query#fragment");
+ EXPECT_TRUE(error.flags() & URL_FLAGS_FAILED);
+}
+
TEST_F(URLTest, NoBase1) {
URL error("123noscheme");
EXPECT_TRUE(error.flags() & URL_FLAGS_FAILED);
diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md
index 9474d8a1963b7e..37d52a069aebc9 100644
--- a/test/fixtures/wpt/README.md
+++ b/test/fixtures/wpt/README.md
@@ -21,7 +21,7 @@ Last update:
- html/webappapis/timers: https://github.com/web-platform-tests/wpt/tree/5873f2d8f1/html/webappapis/timers
- interfaces: https://github.com/web-platform-tests/wpt/tree/79fa4cf76e/interfaces
- resources: https://github.com/web-platform-tests/wpt/tree/972ca5b669/resources
-- url: https://github.com/web-platform-tests/wpt/tree/33f2e3f2e7/url
+- url: https://github.com/web-platform-tests/wpt/tree/5eebfdb1f6/url
[Web Platform Tests]: https://github.com/web-platform-tests/wpt
[`git node wpt`]: https://github.com/nodejs/node-core-utils/blob/master/docs/git-node.md#git-node-wpt
diff --git a/test/fixtures/wpt/url/resources/urltestdata.json b/test/fixtures/wpt/url/resources/urltestdata.json
index b136020e8ba8ea..dfb226deacde13 100644
--- a/test/fixtures/wpt/url/resources/urltestdata.json
+++ b/test/fixtures/wpt/url/resources/urltestdata.json
@@ -4682,30 +4682,30 @@
},
"Allowed host code points",
{
- "input": "http://\u001F!\"$&'()*+,-.;=_`{|}~/",
+ "input": "http://\u001F!\"$&'()*+,-.;=_`{}~/",
"base": "about:blank",
- "href": "http://\u001F!\"$&'()*+,-.;=_`{|}~/",
- "origin": "http://\u001F!\"$&'()*+,-.;=_`{|}~",
+ "href": "http://\u001F!\"$&'()*+,-.;=_`{}~/",
+ "origin": "http://\u001F!\"$&'()*+,-.;=_`{}~",
"protocol": "http:",
"username": "",
"password": "",
- "host": "\u001F!\"$&'()*+,-.;=_`{|}~",
- "hostname": "\u001F!\"$&'()*+,-.;=_`{|}~",
+ "host": "\u001F!\"$&'()*+,-.;=_`{}~",
+ "hostname": "\u001F!\"$&'()*+,-.;=_`{}~",
"port": "",
"pathname": "/",
"search": "",
"hash": ""
},
{
- "input": "sc://\u001F!\"$&'()*+,-.;=_`{|}~/",
+ "input": "sc://\u001F!\"$&'()*+,-.;=_`{}~/",
"base": "about:blank",
- "href": "sc://%1F!\"$&'()*+,-.;=_`{|}~/",
+ "href": "sc://%1F!\"$&'()*+,-.;=_`{}~/",
"origin": "null",
"protocol": "sc:",
"username": "",
"password": "",
- "host": "%1F!\"$&'()*+,-.;=_`{|}~",
- "hostname": "%1F!\"$&'()*+,-.;=_`{|}~",
+ "host": "%1F!\"$&'()*+,-.;=_`{}~",
+ "hostname": "%1F!\"$&'()*+,-.;=_`{}~",
"port": "",
"pathname": "/",
"search": "",
@@ -5202,6 +5202,56 @@
"search": "",
"hash": ""
},
+ {
+ "input": "file://%43%3A",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "file://%43%7C",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "file://%43|",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "file://C%7C",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "file://%43%7C/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "https://%43%7C/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "asdf://%43|/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "asdf://%43%7C/",
+ "base": "about:blank",
+ "href": "asdf://%43%7C/",
+ "origin": "null",
+ "protocol": "asdf:",
+ "username": "",
+ "password": "",
+ "host": "%43%7C",
+ "hostname": "%43%7C",
+ "port": "",
+ "pathname": "/",
+ "search": "",
+ "hash": ""
+ },
"# file URLs relative to other file URLs (via https://github.com/jsdom/whatwg-url/pull/60)",
{
"input": "pix/submit.gif",
diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json
index 800f07c607bf4b..b637bc8a8ab344 100644
--- a/test/fixtures/wpt/versions.json
+++ b/test/fixtures/wpt/versions.json
@@ -44,7 +44,7 @@
"path": "resources"
},
"url": {
- "commit": "33f2e3f2e759bd51ebf8e4b9a01b067bc8281c5c",
+ "commit": "5eebfdb1f68059549b3efff380dd190bc6078266",
"path": "url"
}
}
\ No newline at end of file
From 13c3924af8f53f62b840765894384b82218b7a06 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Lucas=20Lucchetta?=
Date: Fri, 21 Aug 2020 18:11:38 -0300
Subject: [PATCH 04/41] doc: add Windows-specific info to subprocess.kill()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Clarify the inner workings of .kill on Windows,
since termination signals are not available there.
Fixes: https://github.com/nodejs/node/issues/34858
PR-URL: https://github.com/nodejs/node/pull/34867
Reviewed-By: Juan José Arboleda
Reviewed-By: James M Snell
Reviewed-By: Rich Trott
---
doc/api/child_process.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/doc/api/child_process.md b/doc/api/child_process.md
index 5284028a813458..6e1705386b8fc9 100644
--- a/doc/api/child_process.md
+++ b/doc/api/child_process.md
@@ -1277,6 +1277,11 @@ may not actually terminate the process.
See kill(2) for reference.
+On Windows, where POSIX signals do not exist, the `signal` argument will be
+ignored, and the process will be killed forcefully and abruptly (similar to
+`'SIGKILL'`).
+See [Signal Events][] for more details.
+
On Linux, child processes of child processes will not be terminated
when attempting to kill their parent. This is likely to happen when running a
new process in a shell or with the use of the `shell` option of `ChildProcess`:
@@ -1741,6 +1746,7 @@ or [`child_process.fork()`][].
[Default Windows shell]: #child_process_default_windows_shell
[HTML structured clone algorithm]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm
[Shell requirements]: #child_process_shell_requirements
+[Signal Events]: process.md#process_signal_events
[`'disconnect'`]: process.md#process_event_disconnect
[`'error'`]: #child_process_event_error
[`'exit'`]: #child_process_event_exit
From bbdcdad2c6d8cf05770531d102fbce58632f7bac Mon Sep 17 00:00:00 2001
From: Hassaan Pasha
Date: Thu, 25 Mar 2021 20:41:48 +0500
Subject: [PATCH 05/41] deps: upgrade openssl sources to 1.1.1k+quic
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This updates all sources in deps/openssl/openssl by:
$ git clone https://github.com/quictls/openssl
$ cd openssl
$ git checkout OpenSSL_1_1_1k+quic
$ cd ../node/deps/openssl
$ rm -rf openssl
$ cp -R ../openssl openssl
$ cd openssl && rm -rf .gitattributes .github/ .gitmodules .travis-apt-pin.preferences .travis-create-release.sh
$ cd ..
$ git add --all openssl
$ git commit openssl
PR-URL: https://github.com/nodejs/node/pull/37916
Fixes: https://github.com/nodejs/node/issues/37913
Reviewed-By: Tobias Nießen
Reviewed-By: James M Snell
Reviewed-By: Matteo Collina
---
deps/openssl/openssl/CHANGES | 44 +++++
.../openssl/Configurations/unix-Makefile.tmpl | 4 +-
deps/openssl/openssl/NEWS | 8 +
deps/openssl/openssl/README | 93 -----------
deps/openssl/openssl/README-OpenSSL.md | 4 +-
deps/openssl/openssl/README.md | 2 +-
deps/openssl/openssl/apps/s_cb.c | 5 +-
deps/openssl/openssl/apps/s_time.c | 5 +-
deps/openssl/openssl/crypto/asn1/asn1_par.c | 3 +-
deps/openssl/openssl/crypto/asn1/bio_ndef.c | 4 +-
.../openssl/crypto/engine/eng_devcrypto.c | 17 +-
deps/openssl/openssl/crypto/evp/evp_enc.c | 2 +-
deps/openssl/openssl/crypto/modes/cbc128.c | 8 +-
deps/openssl/openssl/crypto/modes/gcm128.c | 6 +-
deps/openssl/openssl/crypto/o_time.c | 6 +-
deps/openssl/openssl/crypto/rand/rand_lib.c | 8 +-
deps/openssl/openssl/crypto/rsa/rsa_ssl.c | 2 +-
deps/openssl/openssl/crypto/x509/x509_vfy.c | 12 +-
.../doc/man3/SSL_CTX_set_quic_method.pod | 10 +-
deps/openssl/openssl/fuzz/x509.c | 2 +-
deps/openssl/openssl/include/crypto/bn_conf.h | 1 -
.../openssl/openssl/include/crypto/dso_conf.h | 1 -
.../openssl/include/openssl/opensslconf.h | 1 -
.../openssl/include/openssl/opensslv.h | 6 +-
deps/openssl/openssl/include/openssl/ssl.h | 2 +
deps/openssl/openssl/ssl/s3_lib.c | 7 +-
deps/openssl/openssl/ssl/ssl_lib.c | 31 +++-
deps/openssl/openssl/ssl/ssl_quic.c | 107 ++++++++----
deps/openssl/openssl/ssl/statem/extensions.c | 4 +
.../openssl/ssl/statem/extensions_clnt.c | 16 +-
deps/openssl/openssl/ssl/statem/statem_clnt.c | 8 +-
deps/openssl/openssl/ssl/statem/statem_srvr.c | 29 +++-
deps/openssl/openssl/ssl/tls13_enc.c | 96 +++++++++--
.../test/recipes/70-test_renegotiation.t | 38 ++++-
deps/openssl/openssl/test/rsa_test.c | 2 +-
deps/openssl/openssl/test/sslapitest.c | 154 +++++++++++++++++-
deps/openssl/openssl/test/verify_extra_test.c | 16 +-
deps/openssl/openssl/tools/c_rehash.in | 4 +-
deps/openssl/openssl/util/libssl.num | 1 +
.../openssl/util/perl/TLSProxy/Message.pm | 39 ++++-
40 files changed, 600 insertions(+), 208 deletions(-)
delete mode 100644 deps/openssl/openssl/README
delete mode 100644 deps/openssl/openssl/include/crypto/bn_conf.h
delete mode 100644 deps/openssl/openssl/include/crypto/dso_conf.h
delete mode 100644 deps/openssl/openssl/include/openssl/opensslconf.h
diff --git a/deps/openssl/openssl/CHANGES b/deps/openssl/openssl/CHANGES
index a5a31ed2e5b5c4..5f67b2be02472c 100644
--- a/deps/openssl/openssl/CHANGES
+++ b/deps/openssl/openssl/CHANGES
@@ -7,6 +7,50 @@
https://github.com/openssl/openssl/commits/ and pick the appropriate
release branch.
+ Changes between 1.1.1j and 1.1.1k [25 Mar 2021]
+
+ *) Fixed a problem with verifying a certificate chain when using the
+ X509_V_FLAG_X509_STRICT flag. This flag enables additional security checks
+ of the certificates present in a certificate chain. It is not set by
+ default.
+
+ Starting from OpenSSL version 1.1.1h a check to disallow certificates in
+ the chain that have explicitly encoded elliptic curve parameters was added
+ as an additional strict check.
+
+ An error in the implementation of this check meant that the result of a
+ previous check to confirm that certificates in the chain are valid CA
+ certificates was overwritten. This effectively bypasses the check
+ that non-CA certificates must not be able to issue other certificates.
+
+ If a "purpose" has been configured then there is a subsequent opportunity
+ for checks that the certificate is a valid CA. All of the named "purpose"
+ values implemented in libcrypto perform this check. Therefore, where
+ a purpose is set the certificate chain will still be rejected even when the
+ strict flag has been used. A purpose is set by default in libssl client and
+ server certificate verification routines, but it can be overridden or
+ removed by an application.
+
+ In order to be affected, an application must explicitly set the
+ X509_V_FLAG_X509_STRICT verification flag and either not set a purpose
+ for the certificate verification or, in the case of TLS client or server
+ applications, override the default purpose.
+ (CVE-2021-3450)
+ [Tomáš Mráz]
+
+ *) Fixed an issue where an OpenSSL TLS server may crash if sent a maliciously
+ crafted renegotiation ClientHello message from a client. If a TLSv1.2
+ renegotiation ClientHello omits the signature_algorithms extension (where
+ it was present in the initial ClientHello), but includes a
+ signature_algorithms_cert extension then a NULL pointer dereference will
+ result, leading to a crash and a denial of service attack.
+
+ A server is only vulnerable if it has TLSv1.2 and renegotiation enabled
+ (which is the default configuration). OpenSSL TLS clients are not impacted
+ by this issue.
+ (CVE-2021-3449)
+ [Peter Kästle and Samuel Sapalski]
+
Changes between 1.1.1i and 1.1.1j [16 Feb 2021]
*) Fixed the X509_issuer_and_serial_hash() function. It attempts to
diff --git a/deps/openssl/openssl/Configurations/unix-Makefile.tmpl b/deps/openssl/openssl/Configurations/unix-Makefile.tmpl
index 3a24d551359bd0..41648c952667f3 100644
--- a/deps/openssl/openssl/Configurations/unix-Makefile.tmpl
+++ b/deps/openssl/openssl/Configurations/unix-Makefile.tmpl
@@ -917,8 +917,8 @@ errors:
done )
ordinals:
- ( b=`pwd`; cd $(SRCDIR); $(PERL) -I$$b util/mkdef.pl crypto update )
- ( b=`pwd`; cd $(SRCDIR); $(PERL) -I$$b util/mkdef.pl ssl update )
+ $(PERL) $(SRCDIR)/util/mkdef.pl crypto update
+ $(PERL) $(SRCDIR)/util/mkdef.pl ssl update
test_ordinals:
( cd test; \
diff --git a/deps/openssl/openssl/NEWS b/deps/openssl/openssl/NEWS
index 3cce525066457b..05991a0c214a96 100644
--- a/deps/openssl/openssl/NEWS
+++ b/deps/openssl/openssl/NEWS
@@ -5,6 +5,14 @@
This file gives a brief overview of the major changes between each OpenSSL
release. For more details please read the CHANGES file.
+ Major changes between OpenSSL 1.1.1j and OpenSSL 1.1.1k [25 Mar 2021]
+
+ o Fixed a problem with verifying a certificate chain when using the
+ X509_V_FLAG_X509_STRICT flag (CVE-2021-3450)
+ o Fixed an issue where an OpenSSL TLS server may crash if sent a
+ maliciously crafted renegotiation ClientHello message from a client
+ (CVE-2021-3449)
+
Major changes between OpenSSL 1.1.1i and OpenSSL 1.1.1j [16 Feb 2021]
o Fixed a NULL pointer deref in the X509_issuer_and_serial_hash()
diff --git a/deps/openssl/openssl/README b/deps/openssl/openssl/README
deleted file mode 100644
index da5629f92c8192..00000000000000
--- a/deps/openssl/openssl/README
+++ /dev/null
@@ -1,93 +0,0 @@
-
- OpenSSL 1.1.1j 16 Feb 2021
-
- Copyright (c) 1998-2020 The OpenSSL Project
- Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
- All rights reserved.
-
- DESCRIPTION
- -----------
-
- The OpenSSL Project is a collaborative effort to develop a robust,
- commercial-grade, fully featured, and Open Source toolkit implementing the
- Transport Layer Security (TLS) protocols (including SSLv3) as well as a
- full-strength general purpose cryptographic library.
-
- OpenSSL is descended from the SSLeay library developed by Eric A. Young
- and Tim J. Hudson. The OpenSSL toolkit is licensed under a dual-license (the
- OpenSSL license plus the SSLeay license), which means that you are free to
- get and use it for commercial and non-commercial purposes as long as you
- fulfill the conditions of both licenses.
-
- OVERVIEW
- --------
-
- The OpenSSL toolkit includes:
-
- libssl (with platform specific naming):
- Provides the client and server-side implementations for SSLv3 and TLS.
-
- libcrypto (with platform specific naming):
- Provides general cryptographic and X.509 support needed by SSL/TLS but
- not logically part of it.
-
- openssl:
- A command line tool that can be used for:
- Creation of key parameters
- Creation of X.509 certificates, CSRs and CRLs
- Calculation of message digests
- Encryption and decryption
- SSL/TLS client and server tests
- Handling of S/MIME signed or encrypted mail
- And more...
-
- INSTALLATION
- ------------
-
- See the appropriate file:
- INSTALL Linux, Unix, Windows, OpenVMS, ...
- NOTES.* INSTALL addendums for different platforms
-
- SUPPORT
- -------
-
- See the OpenSSL website www.openssl.org for details on how to obtain
- commercial technical support. Free community support is available through the
- openssl-users email list (see
- https://www.openssl.org/community/mailinglists.html for further details).
-
- If you have any problems with OpenSSL then please take the following steps
- first:
-
- - Download the latest version from the repository
- to see if the problem has already been addressed
- - Configure with no-asm
- - Remove compiler optimization flags
-
- If you wish to report a bug then please include the following information
- and create an issue on GitHub:
-
- - OpenSSL version: output of 'openssl version -a'
- - Configuration data: output of 'perl configdata.pm --dump'
- - OS Name, Version, Hardware platform
- - Compiler Details (name, version)
- - Application Details (name, version)
- - Problem Description (steps that will reproduce the problem, if known)
- - Stack Traceback (if the application dumps core)
-
- Just because something doesn't work the way you expect does not mean it
- is necessarily a bug in OpenSSL. Use the openssl-users email list for this type
- of query.
-
- HOW TO CONTRIBUTE TO OpenSSL
- ----------------------------
-
- See CONTRIBUTING
-
- LEGALITIES
- ----------
-
- A number of nations restrict the use or export of cryptography. If you
- are potentially subject to such restrictions you should seek competent
- professional legal advice before attempting to develop or distribute
- cryptographic code.
diff --git a/deps/openssl/openssl/README-OpenSSL.md b/deps/openssl/openssl/README-OpenSSL.md
index da5629f92c8192..b92a8bd3a4b599 100644
--- a/deps/openssl/openssl/README-OpenSSL.md
+++ b/deps/openssl/openssl/README-OpenSSL.md
@@ -1,7 +1,7 @@
- OpenSSL 1.1.1j 16 Feb 2021
+ OpenSSL 1.1.1k 25 Mar 2021
- Copyright (c) 1998-2020 The OpenSSL Project
+ Copyright (c) 1998-2021 The OpenSSL Project
Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
All rights reserved.
diff --git a/deps/openssl/openssl/README.md b/deps/openssl/openssl/README.md
index ef46c4b393a6c9..26defbc8cbf2ae 100644
--- a/deps/openssl/openssl/README.md
+++ b/deps/openssl/openssl/README.md
@@ -47,7 +47,7 @@ How are you keeping current with OpenSSL?
-----------------------------------------
(In other words, "What about rebasing?")
-Our plan it to always rebase on top of an upstream release tag. In particular:
+Our plan is to always rebase on top of an upstream release tag. In particular:
- The changes for QUIC will always be at the tip of the branch -- you will know what
is from the original OpenSSL and what is for QUIC.
- New versions are quickly created once upstream creates a new tag.
diff --git a/deps/openssl/openssl/apps/s_cb.c b/deps/openssl/openssl/apps/s_cb.c
index 6406ddfb9e1b20..dee1b2e5b4f65e 100644
--- a/deps/openssl/openssl/apps/s_cb.c
+++ b/deps/openssl/openssl/apps/s_cb.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -934,7 +934,8 @@ static int set_cert_cb(SSL *ssl, void *arg)
if (!SSL_build_cert_chain(ssl, 0))
return 0;
} else if (exc->chain != NULL) {
- SSL_set1_chain(ssl, exc->chain);
+ if (!SSL_set1_chain(ssl, exc->chain))
+ return 0;
}
}
exc = exc->prev;
diff --git a/deps/openssl/openssl/apps/s_time.c b/deps/openssl/openssl/apps/s_time.c
index 628e65b26e19c0..1235e545c20a51 100644
--- a/deps/openssl/openssl/apps/s_time.c
+++ b/deps/openssl/openssl/apps/s_time.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -263,7 +263,8 @@ int s_time_main(int argc, char **argv)
nConn, totalTime, ((double)nConn / totalTime), bytes_read);
printf
("%d connections in %ld real seconds, %ld bytes read per connection\n",
- nConn, (long)time(NULL) - finishtime + maxtime, bytes_read / nConn);
+ nConn, (long)time(NULL) - finishtime + maxtime,
+ nConn > 0 ? bytes_read / nConn : 0l);
/*
* Now loop and time connections using the same session id over and over
diff --git a/deps/openssl/openssl/crypto/asn1/asn1_par.c b/deps/openssl/openssl/crypto/asn1/asn1_par.c
index 3f10c7cb94c56d..a32fa47f2206bf 100644
--- a/deps/openssl/openssl/crypto/asn1/asn1_par.c
+++ b/deps/openssl/openssl/crypto/asn1/asn1_par.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -325,6 +325,7 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length,
}
if (BIO_puts(bp, "]") <= 0)
goto end;
+ dump_cont = 0;
}
if (!nl) {
diff --git a/deps/openssl/openssl/crypto/asn1/bio_ndef.c b/deps/openssl/openssl/crypto/asn1/bio_ndef.c
index 6222c99074de8d..d7d7d80eea912a 100644
--- a/deps/openssl/openssl/crypto/asn1/bio_ndef.c
+++ b/deps/openssl/openssl/crypto/asn1/bio_ndef.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2008-2018 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -113,6 +113,8 @@ static int ndef_prefix(BIO *b, unsigned char **pbuf, int *plen, void *parg)
ndef_aux = *(NDEF_SUPPORT **)parg;
derlen = ASN1_item_ndef_i2d(ndef_aux->val, NULL, ndef_aux->it);
+ if (derlen < 0)
+ return 0;
if ((p = OPENSSL_malloc(derlen)) == NULL) {
ASN1err(ASN1_F_NDEF_PREFIX, ERR_R_MALLOC_FAILURE);
return 0;
diff --git a/deps/openssl/openssl/crypto/engine/eng_devcrypto.c b/deps/openssl/openssl/crypto/engine/eng_devcrypto.c
index 49e9ce1af33b09..84a3b7dbec757a 100644
--- a/deps/openssl/openssl/crypto/engine/eng_devcrypto.c
+++ b/deps/openssl/openssl/crypto/engine/eng_devcrypto.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -758,8 +758,9 @@ static int devcrypto_unload(ENGINE *e)
void engine_load_devcrypto_int()
{
ENGINE *e = NULL;
+ int fd;
- if ((cfd = open("/dev/crypto", O_RDWR, 0)) < 0) {
+ if ((fd = open("/dev/crypto", O_RDWR, 0)) < 0) {
#ifndef ENGINE_DEVCRYPTO_DEBUG
if (errno != ENOENT)
#endif
@@ -767,6 +768,18 @@ void engine_load_devcrypto_int()
return;
}
+#ifdef CRIOGET
+ if (ioctl(fd, CRIOGET, &cfd) < 0) {
+ fprintf(stderr, "Could not create crypto fd: %s\n", strerror(errno));
+ close(fd);
+ cfd = -1;
+ return;
+ }
+ close(fd);
+#else
+ cfd = fd;
+#endif
+
if ((e = ENGINE_new()) == NULL
|| !ENGINE_set_destroy_function(e, devcrypto_unload)) {
ENGINE_free(e);
diff --git a/deps/openssl/openssl/crypto/evp/evp_enc.c b/deps/openssl/openssl/crypto/evp/evp_enc.c
index 0843caf4f0a4f3..e3c165d48e082d 100644
--- a/deps/openssl/openssl/crypto/evp/evp_enc.c
+++ b/deps/openssl/openssl/crypto/evp/evp_enc.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
diff --git a/deps/openssl/openssl/crypto/modes/cbc128.c b/deps/openssl/openssl/crypto/modes/cbc128.c
index c85e37c6a546d9..15a14be70872de 100644
--- a/deps/openssl/openssl/crypto/modes/cbc128.c
+++ b/deps/openssl/openssl/crypto/modes/cbc128.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2008-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -69,7 +69,8 @@ void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out,
in += 16;
out += 16;
}
- memcpy(ivec, iv, 16);
+ if (ivec != iv)
+ memcpy(ivec, iv, 16);
}
void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out,
@@ -114,7 +115,8 @@ void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out,
out += 16;
}
}
- memcpy(ivec, iv, 16);
+ if (ivec != iv)
+ memcpy(ivec, iv, 16);
} else {
if (STRICT_ALIGNMENT &&
((size_t)in | (size_t)out | (size_t)ivec) % sizeof(size_t) != 0) {
diff --git a/deps/openssl/openssl/crypto/modes/gcm128.c b/deps/openssl/openssl/crypto/modes/gcm128.c
index 0c0bf3cda5b5d1..8304efff48be03 100644
--- a/deps/openssl/openssl/crypto/modes/gcm128.c
+++ b/deps/openssl/openssl/crypto/modes/gcm128.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2010-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -1385,8 +1385,8 @@ int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx,
else
ctx->Yi.d[3] = ctr;
for (i = 0; i < 16 / sizeof(size_t); ++i) {
- size_t c = in[i];
- out[i] = c ^ ctx->EKi.t[i];
+ size_t c = in_t[i];
+ out_t[i] = c ^ ctx->EKi.t[i];
ctx->Xi.t[i] ^= c;
}
GCM_MUL(ctx);
diff --git a/deps/openssl/openssl/crypto/o_time.c b/deps/openssl/openssl/crypto/o_time.c
index 3502edda6238fa..3fa70c45af8332 100644
--- a/deps/openssl/openssl/crypto/o_time.c
+++ b/deps/openssl/openssl/crypto/o_time.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2001-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -133,8 +133,8 @@ int OPENSSL_gmtime_diff(int *pday, int *psec,
static int julian_adj(const struct tm *tm, int off_day, long offset_sec,
long *pday, int *psec)
{
- int offset_hms, offset_day;
- long time_jd;
+ int offset_hms;
+ long offset_day, time_jd;
int time_year, time_month, time_day;
/* split offset into days and day seconds */
offset_day = offset_sec / SECS_PER_DAY;
diff --git a/deps/openssl/openssl/crypto/rand/rand_lib.c b/deps/openssl/openssl/crypto/rand/rand_lib.c
index ba3a29e584685c..5c72fad8ca263b 100644
--- a/deps/openssl/openssl/crypto/rand/rand_lib.c
+++ b/deps/openssl/openssl/crypto/rand/rand_lib.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -432,9 +432,13 @@ int RAND_poll(void)
RAND_POOL *rand_pool_new(int entropy_requested, int secure,
size_t min_len, size_t max_len)
{
- RAND_POOL *pool = OPENSSL_zalloc(sizeof(*pool));
+ RAND_POOL *pool;
size_t min_alloc_size = RAND_POOL_MIN_ALLOCATION(secure);
+ if (!RUN_ONCE(&rand_init, do_rand_init))
+ return NULL;
+
+ pool = OPENSSL_zalloc(sizeof(*pool));
if (pool == NULL) {
RANDerr(RAND_F_RAND_POOL_NEW, ERR_R_MALLOC_FAILURE);
return NULL;
diff --git a/deps/openssl/openssl/crypto/rsa/rsa_ssl.c b/deps/openssl/openssl/crypto/rsa/rsa_ssl.c
index ecdb3cee1fa35d..e1c755ae460ba7 100644
--- a/deps/openssl/openssl/crypto/rsa/rsa_ssl.c
+++ b/deps/openssl/openssl/crypto/rsa/rsa_ssl.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
diff --git a/deps/openssl/openssl/crypto/x509/x509_vfy.c b/deps/openssl/openssl/crypto/x509/x509_vfy.c
index 0c71b2e8b4adc7..20a36e763c5dba 100644
--- a/deps/openssl/openssl/crypto/x509/x509_vfy.c
+++ b/deps/openssl/openssl/crypto/x509/x509_vfy.c
@@ -524,15 +524,19 @@ static int check_chain_extensions(X509_STORE_CTX *ctx)
ret = 1;
break;
}
- if ((ctx->param->flags & X509_V_FLAG_X509_STRICT) && num > 1) {
+ if (ret > 0
+ && (ctx->param->flags & X509_V_FLAG_X509_STRICT) && num > 1) {
/* Check for presence of explicit elliptic curve parameters */
ret = check_curve(x);
- if (ret < 0)
+ if (ret < 0) {
ctx->error = X509_V_ERR_UNSPECIFIED;
- else if (ret == 0)
+ ret = 0;
+ } else if (ret == 0) {
ctx->error = X509_V_ERR_EC_KEY_EXPLICIT_PARAMS;
+ }
}
- if ((x->ex_flags & EXFLAG_CA) == 0
+ if (ret > 0
+ && (x->ex_flags & EXFLAG_CA) == 0
&& x->ex_pathlen != -1
&& (ctx->param->flags & X509_V_FLAG_X509_STRICT)) {
ctx->error = X509_V_ERR_INVALID_EXTENSION;
diff --git a/deps/openssl/openssl/doc/man3/SSL_CTX_set_quic_method.pod b/deps/openssl/openssl/doc/man3/SSL_CTX_set_quic_method.pod
index 39ff3a8da45177..906c7591d9e55e 100644
--- a/deps/openssl/openssl/doc/man3/SSL_CTX_set_quic_method.pod
+++ b/deps/openssl/openssl/doc/man3/SSL_CTX_set_quic_method.pod
@@ -17,7 +17,8 @@ SSL_is_quic,
SSL_get_peer_quic_transport_version,
SSL_get_quic_transport_version,
SSL_set_quic_transport_version,
-SSL_set_quic_use_legacy_codepoint
+SSL_set_quic_use_legacy_codepoint,
+SSL_set_quic_early_data_enabled
- QUIC support
=head1 SYNOPSIS
@@ -47,6 +48,7 @@ SSL_set_quic_use_legacy_codepoint
void SSL_set_quic_transport_version(SSL *ssl, int version);
int SSL_get_quic_transport_version(const SSL *ssl);
int SSL_get_peer_quic_transport_version(const SSL *ssl);
+ void SSL_set_quic_early_data_enabled(SSL *ssl, int enabled);
=head1 DESCRIPTION
@@ -106,6 +108,12 @@ SSL_set_quic_transport_version().
SSL_get_peer_quic_transport_version() returns the version the that was
negotiated.
+SSL_set_quic_early_data_enabled() enables QUIC early data if a nonzero
+value is passed. Clients must set a resumed session before calling this
+function. Servers must additionally call SSL_CTX_set_max_early_data() or
+SSL_set_max_early_data() with 0xffffffffu as the argument, so that any
+issued session tickets indicate that server is able to accept early data.
+
=head1 NOTES
These APIs are implementations of BoringSSL's QUIC APIs.
diff --git a/deps/openssl/openssl/fuzz/x509.c b/deps/openssl/openssl/fuzz/x509.c
index 1a20ca21db543c..ceaec0797b438a 100644
--- a/deps/openssl/openssl/fuzz/x509.c
+++ b/deps/openssl/openssl/fuzz/x509.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL licenses, (the "License");
* you may not use this file except in compliance with the License.
diff --git a/deps/openssl/openssl/include/crypto/bn_conf.h b/deps/openssl/openssl/include/crypto/bn_conf.h
deleted file mode 100644
index 79400c6472a49c..00000000000000
--- a/deps/openssl/openssl/include/crypto/bn_conf.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/bn_conf.h"
diff --git a/deps/openssl/openssl/include/crypto/dso_conf.h b/deps/openssl/openssl/include/crypto/dso_conf.h
deleted file mode 100644
index e7f2afa9872320..00000000000000
--- a/deps/openssl/openssl/include/crypto/dso_conf.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/dso_conf.h"
diff --git a/deps/openssl/openssl/include/openssl/opensslconf.h b/deps/openssl/openssl/include/openssl/opensslconf.h
deleted file mode 100644
index 76c99d433ab886..00000000000000
--- a/deps/openssl/openssl/include/openssl/opensslconf.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../config/opensslconf.h"
diff --git a/deps/openssl/openssl/include/openssl/opensslv.h b/deps/openssl/openssl/include/openssl/opensslv.h
index b26acb3ded2904..44b464e5263f26 100644
--- a/deps/openssl/openssl/include/openssl/opensslv.h
+++ b/deps/openssl/openssl/include/openssl/opensslv.h
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -39,8 +39,8 @@ extern "C" {
* (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for
* major minor fix final patch/beta)
*/
-# define OPENSSL_VERSION_NUMBER 0x101010afL
-# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1j+quic 16 Feb 2021"
+# define OPENSSL_VERSION_NUMBER 0x101010bfL
+# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1k+quic 25 Mar 2021"
/*-
* The macros below are to be used for shared library (.so, .dll, ...)
diff --git a/deps/openssl/openssl/include/openssl/ssl.h b/deps/openssl/openssl/include/openssl/ssl.h
index 21d77d9ea8ad8d..c6f8e4d180106c 100644
--- a/deps/openssl/openssl/include/openssl/ssl.h
+++ b/deps/openssl/openssl/include/openssl/ssl.h
@@ -2488,6 +2488,8 @@ __owur int SSL_get_peer_quic_transport_version(const SSL *ssl);
int SSL_CIPHER_get_prf_nid(const SSL_CIPHER *c);
+void SSL_set_quic_early_data_enabled(SSL *ssl, int enabled);
+
# endif
# ifdef __cplusplus
diff --git a/deps/openssl/openssl/ssl/s3_lib.c b/deps/openssl/openssl/ssl/s3_lib.c
index 4511b52c9afcb5..b256a4b93503e0 100644
--- a/deps/openssl/openssl/ssl/s3_lib.c
+++ b/deps/openssl/openssl/ssl/s3_lib.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
* Copyright 2005 Nokia. All rights reserved.
*
@@ -4629,6 +4629,7 @@ int ssl_generate_master_secret(SSL *s, unsigned char *pms, size_t pmslen,
OPENSSL_clear_free(s->s3->tmp.psk, psklen);
s->s3->tmp.psk = NULL;
+ s->s3->tmp.psklen = 0;
if (!s->method->ssl3_enc->generate_master_secret(s,
s->session->master_key, pskpms, pskpmslen,
&s->session->master_key_length)) {
@@ -4658,8 +4659,10 @@ int ssl_generate_master_secret(SSL *s, unsigned char *pms, size_t pmslen,
else
OPENSSL_cleanse(pms, pmslen);
}
- if (s->server == 0)
+ if (s->server == 0) {
s->s3->tmp.pms = NULL;
+ s->s3->tmp.pmslen = 0;
+ }
return ret;
}
diff --git a/deps/openssl/openssl/ssl/ssl_lib.c b/deps/openssl/openssl/ssl/ssl_lib.c
index b35cf485539a10..ab0bf907b2b20f 100644
--- a/deps/openssl/openssl/ssl/ssl_lib.c
+++ b/deps/openssl/openssl/ssl/ssl_lib.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
* Copyright 2005 Nokia. All rights reserved.
*
@@ -779,8 +779,10 @@ SSL *SSL_new(SSL_CTX *ctx)
s->ext.ecpointformats =
OPENSSL_memdup(ctx->ext.ecpointformats,
ctx->ext.ecpointformats_len);
- if (!s->ext.ecpointformats)
+ if (!s->ext.ecpointformats) {
+ s->ext.ecpointformats_len = 0;
goto err;
+ }
s->ext.ecpointformats_len =
ctx->ext.ecpointformats_len;
}
@@ -789,8 +791,10 @@ SSL *SSL_new(SSL_CTX *ctx)
OPENSSL_memdup(ctx->ext.supportedgroups,
ctx->ext.supportedgroups_len
* sizeof(*ctx->ext.supportedgroups));
- if (!s->ext.supportedgroups)
+ if (!s->ext.supportedgroups) {
+ s->ext.supportedgroups_len = 0;
goto err;
+ }
s->ext.supportedgroups_len = ctx->ext.supportedgroups_len;
}
#endif
@@ -800,8 +804,10 @@ SSL *SSL_new(SSL_CTX *ctx)
if (s->ctx->ext.alpn) {
s->ext.alpn = OPENSSL_malloc(s->ctx->ext.alpn_len);
- if (s->ext.alpn == NULL)
+ if (s->ext.alpn == NULL) {
+ s->ext.alpn_len = 0;
goto err;
+ }
memcpy(s->ext.alpn, s->ctx->ext.alpn, s->ctx->ext.alpn_len);
s->ext.alpn_len = s->ctx->ext.alpn_len;
}
@@ -2870,6 +2876,7 @@ int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos,
OPENSSL_free(ctx->ext.alpn);
ctx->ext.alpn = OPENSSL_memdup(protos, protos_len);
if (ctx->ext.alpn == NULL) {
+ ctx->ext.alpn_len = 0;
SSLerr(SSL_F_SSL_CTX_SET_ALPN_PROTOS, ERR_R_MALLOC_FAILURE);
return 1;
}
@@ -2889,6 +2896,7 @@ int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos,
OPENSSL_free(ssl->ext.alpn);
ssl->ext.alpn = OPENSSL_memdup(protos, protos_len);
if (ssl->ext.alpn == NULL) {
+ ssl->ext.alpn_len = 0;
SSLerr(SSL_F_SSL_SET_ALPN_PROTOS, ERR_R_MALLOC_FAILURE);
return 1;
}
@@ -3705,6 +3713,21 @@ int SSL_do_handshake(SSL *s)
ret = s->handshake_func(s);
}
}
+#ifndef OPENSSL_NO_QUIC
+ if (SSL_IS_QUIC(s) && ret == 1) {
+ if (s->server) {
+ if (s->early_data_state == SSL_EARLY_DATA_ACCEPTING) {
+ s->early_data_state = SSL_EARLY_DATA_FINISHED_READING;
+ s->rwstate = SSL_READING;
+ ret = 0;
+ }
+ } else if (s->early_data_state == SSL_EARLY_DATA_CONNECTING) {
+ s->early_data_state = SSL_EARLY_DATA_WRITE_RETRY;
+ s->rwstate = SSL_READING;
+ ret = 0;
+ }
+ }
+#endif
return ret;
}
diff --git a/deps/openssl/openssl/ssl/ssl_quic.c b/deps/openssl/openssl/ssl/ssl_quic.c
index fc6ac521029400..c5f20c20af7eb5 100644
--- a/deps/openssl/openssl/ssl/ssl_quic.c
+++ b/deps/openssl/openssl/ssl/ssl_quic.c
@@ -143,6 +143,9 @@ int SSL_provide_quic_data(SSL *ssl, OSSL_ENCRYPTION_LEVEL level,
return 0;
}
+ if (len == 0)
+ return 1;
+
if (ssl->quic_buf == NULL) {
BUF_MEM *buf;
if ((buf = BUF_MEM_new()) == NULL) {
@@ -258,24 +261,49 @@ int quic_set_encryption_secrets(SSL *ssl, OSSL_ENCRYPTION_LEVEL level)
return 1;
}
- md = ssl_handshake_md(ssl);
- if (md == NULL) {
- /* May not have selected cipher, yet */
- const SSL_CIPHER *c = NULL;
-
- /*
- * It probably doesn't make sense to use an (external) PSK session,
- * but in theory some kinds of external session caches could be
- * implemented using it, so allow psksession to be used as well as
- * the regular session.
- */
- if (ssl->session != NULL)
- c = SSL_SESSION_get0_cipher(ssl->session);
- else if (ssl->psksession != NULL)
+ if (level == ssl_encryption_early_data) {
+ const SSL_CIPHER *c = SSL_SESSION_get0_cipher(ssl->session);
+ if (ssl->early_data_state == SSL_EARLY_DATA_CONNECTING
+ && ssl->max_early_data > 0
+ && ssl->session->ext.max_early_data == 0) {
+ if (!ossl_assert(ssl->psksession != NULL
+ && ssl->max_early_data
+ == ssl->psksession->ext.max_early_data)) {
+ SSLfatal(ssl, SSL_AD_INTERNAL_ERROR,
+ SSL_F_QUIC_SET_ENCRYPTION_SECRETS,
+ ERR_R_INTERNAL_ERROR);
+ return 0;
+ }
c = SSL_SESSION_get0_cipher(ssl->psksession);
+ }
+
+ if (c == NULL) {
+ SSLfatal(ssl, SSL_AD_INTERNAL_ERROR,
+ SSL_F_QUIC_SET_ENCRYPTION_SECRETS, ERR_R_INTERNAL_ERROR);
+ return 0;
+ }
- if (c != NULL)
- md = SSL_CIPHER_get_handshake_digest(c);
+ md = ssl_md(c->algorithm2);
+ } else {
+ md = ssl_handshake_md(ssl);
+ if (md == NULL) {
+ /* May not have selected cipher, yet */
+ const SSL_CIPHER *c = NULL;
+
+ /*
+ * It probably doesn't make sense to use an (external) PSK session,
+ * but in theory some kinds of external session caches could be
+ * implemented using it, so allow psksession to be used as well as
+ * the regular session.
+ */
+ if (ssl->session != NULL)
+ c = SSL_SESSION_get0_cipher(ssl->session);
+ else if (ssl->psksession != NULL)
+ c = SSL_SESSION_get0_cipher(ssl->psksession);
+
+ if (c != NULL)
+ md = SSL_CIPHER_get_handshake_digest(c);
+ }
}
if ((len = EVP_MD_size(md)) <= 0) {
@@ -313,20 +341,19 @@ int SSL_process_quic_post_handshake(SSL *ssl)
}
/* if there is no data, return success as BoringSSL */
- if (ssl->quic_input_data_head == NULL)
- return 1;
-
- /*
- * This is always safe (we are sure to be at a record boundary) because
- * SSL_read()/SSL_write() are never used for QUIC connections -- the
- * application data is handled at the QUIC layer instead.
- */
- ossl_statem_set_in_init(ssl, 1);
- ret = ssl->handshake_func(ssl);
- ossl_statem_set_in_init(ssl, 0);
+ while (ssl->quic_input_data_head != NULL) {
+ /*
+ * This is always safe (we are sure to be at a record boundary) because
+ * SSL_read()/SSL_write() are never used for QUIC connections -- the
+ * application data is handled at the QUIC layer instead.
+ */
+ ossl_statem_set_in_init(ssl, 1);
+ ret = ssl->handshake_func(ssl);
+ ossl_statem_set_in_init(ssl, 0);
- if (ret <= 0)
- return 0;
+ if (ret <= 0)
+ return 0;
+ }
return 1;
}
@@ -334,3 +361,25 @@ int SSL_is_quic(SSL* ssl)
{
return SSL_IS_QUIC(ssl);
}
+
+void SSL_set_quic_early_data_enabled(SSL *ssl, int enabled)
+{
+ if (!SSL_is_quic(ssl) || !SSL_in_before(ssl))
+ return;
+
+ if (!enabled) {
+ ssl->early_data_state = SSL_EARLY_DATA_NONE;
+ return;
+ }
+
+ if (ssl->server) {
+ ssl->early_data_state = SSL_EARLY_DATA_ACCEPTING;
+ return;
+ }
+
+ if ((ssl->session == NULL || ssl->session->ext.max_early_data == 0)
+ && ssl->psk_use_session_cb == NULL)
+ return;
+
+ ssl->early_data_state = SSL_EARLY_DATA_CONNECTING;
+}
diff --git a/deps/openssl/openssl/ssl/statem/extensions.c b/deps/openssl/openssl/ssl/statem/extensions.c
index ef75111ff2d1b8..b1d28bea4c9e47 100644
--- a/deps/openssl/openssl/ssl/statem/extensions.c
+++ b/deps/openssl/openssl/ssl/statem/extensions.c
@@ -341,6 +341,8 @@ static const EXTENSION_DEFINITION ext_defs[] = {
tls_construct_stoc_key_share, tls_construct_ctos_key_share,
final_key_share
},
+#else
+ INVALID_EXTENSION,
#endif
{
/* Must be after key_share */
@@ -1164,6 +1166,7 @@ static int init_sig_algs(SSL *s, unsigned int context)
/* Clear any signature algorithms extension received */
OPENSSL_free(s->s3->tmp.peer_sigalgs);
s->s3->tmp.peer_sigalgs = NULL;
+ s->s3->tmp.peer_sigalgslen = 0;
return 1;
}
@@ -1173,6 +1176,7 @@ static int init_sig_algs_cert(SSL *s, unsigned int context)
/* Clear any signature algorithms extension received */
OPENSSL_free(s->s3->tmp.peer_cert_sigalgs);
s->s3->tmp.peer_cert_sigalgs = NULL;
+ s->s3->tmp.peer_cert_sigalgslen = 0;
return 1;
}
diff --git a/deps/openssl/openssl/ssl/statem/extensions_clnt.c b/deps/openssl/openssl/ssl/statem/extensions_clnt.c
index ebfdeaf9a11d9f..2b403dda500905 100644
--- a/deps/openssl/openssl/ssl/statem/extensions_clnt.c
+++ b/deps/openssl/openssl/ssl/statem/extensions_clnt.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -816,6 +816,7 @@ EXT_RETURN tls_construct_ctos_early_data(SSL *s, WPACKET *pkt,
OPENSSL_free(s->psksession_id);
s->psksession_id = OPENSSL_memdup(id, idlen);
if (s->psksession_id == NULL) {
+ s->psksession_id_len = 0;
SSLfatal(s, SSL_AD_INTERNAL_ERROR,
SSL_F_TLS_CONSTRUCT_CTOS_EARLY_DATA, ERR_R_INTERNAL_ERROR);
return EXT_RETURN_FAIL;
@@ -1417,6 +1418,7 @@ int tls_parse_stoc_ec_pt_formats(SSL *s, PACKET *pkt, unsigned int context,
OPENSSL_free(s->ext.peer_ecpointformats);
s->ext.peer_ecpointformats = OPENSSL_malloc(ecpointformats_len);
if (s->ext.peer_ecpointformats == NULL) {
+ s->ext.peer_ecpointformats_len = 0;
SSLfatal(s, SSL_AD_INTERNAL_ERROR,
SSL_F_TLS_PARSE_STOC_EC_PT_FORMATS, ERR_R_INTERNAL_ERROR);
return 0;
@@ -1534,8 +1536,13 @@ int tls_parse_stoc_sct(SSL *s, PACKET *pkt, unsigned int context, X509 *x,
s->ext.scts_len = (uint16_t)size;
if (size > 0) {
s->ext.scts = OPENSSL_malloc(size);
- if (s->ext.scts == NULL
- || !PACKET_copy_bytes(pkt, s->ext.scts, size)) {
+ if (s->ext.scts == NULL) {
+ s->ext.scts_len = 0;
+ SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_PARSE_STOC_SCT,
+ ERR_R_MALLOC_FAILURE);
+ return 0;
+ }
+ if (!PACKET_copy_bytes(pkt, s->ext.scts, size)) {
SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_PARSE_STOC_SCT,
ERR_R_INTERNAL_ERROR);
return 0;
@@ -1634,6 +1641,7 @@ int tls_parse_stoc_npn(SSL *s, PACKET *pkt, unsigned int context, X509 *x,
OPENSSL_free(s->ext.npn);
s->ext.npn = OPENSSL_malloc(selected_len);
if (s->ext.npn == NULL) {
+ s->ext.npn_len = 0;
SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_PARSE_STOC_NPN,
ERR_R_INTERNAL_ERROR);
return 0;
@@ -1674,6 +1682,7 @@ int tls_parse_stoc_alpn(SSL *s, PACKET *pkt, unsigned int context, X509 *x,
OPENSSL_free(s->s3->alpn_selected);
s->s3->alpn_selected = OPENSSL_malloc(len);
if (s->s3->alpn_selected == NULL) {
+ s->s3->alpn_selected_len = 0;
SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_PARSE_STOC_ALPN,
ERR_R_INTERNAL_ERROR);
return 0;
@@ -1705,6 +1714,7 @@ int tls_parse_stoc_alpn(SSL *s, PACKET *pkt, unsigned int context, X509 *x,
s->session->ext.alpn_selected =
OPENSSL_memdup(s->s3->alpn_selected, s->s3->alpn_selected_len);
if (s->session->ext.alpn_selected == NULL) {
+ s->session->ext.alpn_selected_len = 0;
SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_PARSE_STOC_ALPN,
ERR_R_INTERNAL_ERROR);
return 0;
diff --git a/deps/openssl/openssl/ssl/statem/statem_clnt.c b/deps/openssl/openssl/ssl/statem/statem_clnt.c
index 5eaa572cdfedd1..b756cdd1e0ca69 100644
--- a/deps/openssl/openssl/ssl/statem/statem_clnt.c
+++ b/deps/openssl/openssl/ssl/statem/statem_clnt.c
@@ -2470,6 +2470,7 @@ MSG_PROCESS_RETURN tls_process_certificate_request(SSL *s, PACKET *pkt)
s->s3->tmp.ctype_len = 0;
OPENSSL_free(s->pha_context);
s->pha_context = NULL;
+ s->pha_context_len = 0;
if (!PACKET_get_length_prefixed_1(pkt, &reqctx) ||
!PACKET_memdup(&reqctx, &s->pha_context, &s->pha_context_len)) {
@@ -2779,16 +2780,17 @@ int tls_process_cert_status_body(SSL *s, PACKET *pkt)
}
s->ext.ocsp.resp = OPENSSL_malloc(resplen);
if (s->ext.ocsp.resp == NULL) {
+ s->ext.ocsp.resp_len = 0;
SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_PROCESS_CERT_STATUS_BODY,
ERR_R_MALLOC_FAILURE);
return 0;
}
+ s->ext.ocsp.resp_len = resplen;
if (!PACKET_copy_bytes(pkt, s->ext.ocsp.resp, resplen)) {
SSLfatal(s, SSL_AD_DECODE_ERROR, SSL_F_TLS_PROCESS_CERT_STATUS_BODY,
SSL_R_LENGTH_MISMATCH);
return 0;
}
- s->ext.ocsp.resp_len = resplen;
return 1;
}
@@ -2913,6 +2915,7 @@ static int tls_construct_cke_psk_preamble(SSL *s, WPACKET *pkt)
if (psklen > PSK_MAX_PSK_LEN) {
SSLfatal(s, SSL_AD_HANDSHAKE_FAILURE,
SSL_F_TLS_CONSTRUCT_CKE_PSK_PREAMBLE, ERR_R_INTERNAL_ERROR);
+ psklen = PSK_MAX_PSK_LEN; /* Avoid overrunning the array on cleanse */
goto err;
} else if (psklen == 0) {
SSLfatal(s, SSL_AD_HANDSHAKE_FAILURE,
@@ -3358,9 +3361,11 @@ int tls_construct_client_key_exchange(SSL *s, WPACKET *pkt)
err:
OPENSSL_clear_free(s->s3->tmp.pms, s->s3->tmp.pmslen);
s->s3->tmp.pms = NULL;
+ s->s3->tmp.pmslen = 0;
#ifndef OPENSSL_NO_PSK
OPENSSL_clear_free(s->s3->tmp.psk, s->s3->tmp.psklen);
s->s3->tmp.psk = NULL;
+ s->s3->tmp.psklen = 0;
#endif
return 0;
}
@@ -3435,6 +3440,7 @@ int tls_client_key_exchange_post_work(SSL *s)
err:
OPENSSL_clear_free(pms, pmslen);
s->s3->tmp.pms = NULL;
+ s->s3->tmp.pmslen = 0;
return 0;
}
diff --git a/deps/openssl/openssl/ssl/statem/statem_srvr.c b/deps/openssl/openssl/ssl/statem/statem_srvr.c
index 9f36acf24e3f29..7f5f0db0c73a2b 100644
--- a/deps/openssl/openssl/ssl/statem/statem_srvr.c
+++ b/deps/openssl/openssl/ssl/statem/statem_srvr.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
* Copyright 2005 Nokia. All rights reserved.
*
@@ -965,6 +965,16 @@ WORK_STATE ossl_statem_server_post_work(SSL *s, WORK_STATE wst)
SSL3_CC_APPLICATION | SSL3_CHANGE_CIPHER_SERVER_WRITE))
/* SSLfatal() already called */
return WORK_ERROR;
+
+#ifndef OPENSSL_NO_QUIC
+ if (SSL_IS_QUIC(s) && s->ext.early_data == SSL_EARLY_DATA_ACCEPTED) {
+ s->early_data_state = SSL_EARLY_DATA_FINISHED_READING;
+ if (!s->method->ssl3_enc->change_cipher_state(
+ s, SSL3_CC_HANDSHAKE | SSL3_CHANGE_CIPHER_SERVER_READ))
+ /* SSLfatal() already called */
+ return WORK_ERROR;
+ }
+#endif
}
break;
@@ -2179,6 +2189,7 @@ int tls_handle_alpn(SSL *s)
OPENSSL_free(s->s3->alpn_selected);
s->s3->alpn_selected = OPENSSL_memdup(selected, selected_len);
if (s->s3->alpn_selected == NULL) {
+ s->s3->alpn_selected_len = 0;
SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_HANDLE_ALPN,
ERR_R_INTERNAL_ERROR);
return 0;
@@ -2854,9 +2865,16 @@ int tls_construct_certificate_request(SSL *s, WPACKET *pkt)
if (s->post_handshake_auth == SSL_PHA_REQUEST_PENDING) {
OPENSSL_free(s->pha_context);
s->pha_context_len = 32;
- if ((s->pha_context = OPENSSL_malloc(s->pha_context_len)) == NULL
- || RAND_bytes(s->pha_context, s->pha_context_len) <= 0
- || !WPACKET_sub_memcpy_u8(pkt, s->pha_context, s->pha_context_len)) {
+ if ((s->pha_context = OPENSSL_malloc(s->pha_context_len)) == NULL) {
+ s->pha_context_len = 0;
+ SSLfatal(s, SSL_AD_INTERNAL_ERROR,
+ SSL_F_TLS_CONSTRUCT_CERTIFICATE_REQUEST,
+ ERR_R_INTERNAL_ERROR);
+ return 0;
+ }
+ if (RAND_bytes(s->pha_context, s->pha_context_len) <= 0
+ || !WPACKET_sub_memcpy_u8(pkt, s->pha_context,
+ s->pha_context_len)) {
SSLfatal(s, SSL_AD_INTERNAL_ERROR,
SSL_F_TLS_CONSTRUCT_CERTIFICATE_REQUEST,
ERR_R_INTERNAL_ERROR);
@@ -2970,6 +2988,7 @@ static int tls_process_cke_psk_preamble(SSL *s, PACKET *pkt)
OPENSSL_cleanse(psk, psklen);
if (s->s3->tmp.psk == NULL) {
+ s->s3->tmp.psklen = 0;
SSLfatal(s, SSL_AD_INTERNAL_ERROR,
SSL_F_TLS_PROCESS_CKE_PSK_PREAMBLE, ERR_R_MALLOC_FAILURE);
return 0;
@@ -3509,6 +3528,7 @@ MSG_PROCESS_RETURN tls_process_client_key_exchange(SSL *s, PACKET *pkt)
#ifndef OPENSSL_NO_PSK
OPENSSL_clear_free(s->s3->tmp.psk, s->s3->tmp.psklen);
s->s3->tmp.psk = NULL;
+ s->s3->tmp.psklen = 0;
#endif
return MSG_PROCESS_ERROR;
}
@@ -4118,6 +4138,7 @@ int tls_construct_new_session_ticket(SSL *s, WPACKET *pkt)
s->session->ext.alpn_selected =
OPENSSL_memdup(s->s3->alpn_selected, s->s3->alpn_selected_len);
if (s->session->ext.alpn_selected == NULL) {
+ s->session->ext.alpn_selected_len = 0;
SSLfatal(s, SSL_AD_INTERNAL_ERROR,
SSL_F_TLS_CONSTRUCT_NEW_SESSION_TICKET,
ERR_R_MALLOC_FAILURE);
diff --git a/deps/openssl/openssl/ssl/tls13_enc.c b/deps/openssl/openssl/ssl/tls13_enc.c
index f73b97fbe496bb..e4c72cdb28474f 100644
--- a/deps/openssl/openssl/ssl/tls13_enc.c
+++ b/deps/openssl/openssl/ssl/tls13_enc.c
@@ -468,21 +468,81 @@ static int quic_change_cipher_state(SSL *s, int which)
int is_server_write = ((which & SSL3_CHANGE_CIPHER_SERVER_WRITE) == SSL3_CHANGE_CIPHER_SERVER_WRITE);
int is_early = (which & SSL3_CC_EARLY);
- md = ssl_handshake_md(s);
- if (!ssl3_digest_cached_records(s, 1)
- || !ssl_handshake_hash(s, hash, sizeof(hash), &hashlen)) {
- /* SSLfatal() already called */;
- goto err;
- }
+ if (is_early) {
+ EVP_MD_CTX *mdctx = NULL;
+ long handlen;
+ void *hdata;
+ unsigned int hashlenui;
+ const SSL_CIPHER *sslcipher = SSL_SESSION_get0_cipher(s->session);
+
+ handlen = BIO_get_mem_data(s->s3->handshake_buffer, &hdata);
+ if (handlen <= 0) {
+ SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_QUIC_CHANGE_CIPHER_STATE,
+ SSL_R_BAD_HANDSHAKE_LENGTH);
+ goto err;
+ }
- /* Ensure cast to size_t is safe */
- hashleni = EVP_MD_size(md);
- if (!ossl_assert(hashleni >= 0)) {
- SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_QUIC_CHANGE_CIPHER_STATE,
- ERR_R_EVP_LIB);
- goto err;
+ if (s->early_data_state == SSL_EARLY_DATA_CONNECTING
+ && s->max_early_data > 0 && s->session->ext.max_early_data == 0) {
+ /*
+ * If we are attempting to send early data, and we've decided to
+ * actually do it but max_early_data in s->session is 0 then we
+ * must be using an external PSK.
+ */
+ if (!ossl_assert(s->psksession != NULL
+ && s->max_early_data
+ == s->psksession->ext.max_early_data)) {
+ SSLfatal(s, SSL_AD_INTERNAL_ERROR,
+ SSL_F_QUIC_CHANGE_CIPHER_STATE, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
+ sslcipher = SSL_SESSION_get0_cipher(s->psksession);
+ }
+ if (sslcipher == NULL) {
+ SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_QUIC_CHANGE_CIPHER_STATE,
+ SSL_R_BAD_PSK);
+ goto err;
+ }
+
+ /*
+ * We need to calculate the handshake digest using the digest from
+ * the session. We haven't yet selected our ciphersuite so we can't
+ * use ssl_handshake_md().
+ */
+ mdctx = EVP_MD_CTX_new();
+ if (mdctx == NULL) {
+ SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_QUIC_CHANGE_CIPHER_STATE,
+ ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
+ md = ssl_md(sslcipher->algorithm2);
+ if (md == NULL || !EVP_DigestInit_ex(mdctx, md, NULL)
+ || !EVP_DigestUpdate(mdctx, hdata, handlen)
+ || !EVP_DigestFinal_ex(mdctx, hash, &hashlenui)) {
+ SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_QUIC_CHANGE_CIPHER_STATE,
+ ERR_R_INTERNAL_ERROR);
+ EVP_MD_CTX_free(mdctx);
+ goto err;
+ }
+ hashlen = hashlenui;
+ EVP_MD_CTX_free(mdctx);
+ } else {
+ md = ssl_handshake_md(s);
+ if (!ssl3_digest_cached_records(s, 1)
+ || !ssl_handshake_hash(s, hash, sizeof(hash), &hashlen)) {
+ /* SSLfatal() already called */;
+ goto err;
+ }
+
+ /* Ensure cast to size_t is safe */
+ hashleni = EVP_MD_size(md);
+ if (!ossl_assert(hashleni >= 0)) {
+ SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_QUIC_CHANGE_CIPHER_STATE,
+ ERR_R_EVP_LIB);
+ goto err;
+ }
+ hashlen = (size_t)hashleni;
}
- hashlen = (size_t)hashleni;
if (is_client_read || is_server_write) {
if (is_handshake) {
@@ -588,10 +648,12 @@ static int quic_change_cipher_state(SSL *s, int which)
}
}
- if (s->server)
- s->quic_read_level = level;
- else
- s->quic_write_level = level;
+ if (level != ssl_encryption_early_data) {
+ if (s->server)
+ s->quic_read_level = level;
+ else
+ s->quic_write_level = level;
+ }
}
ret = 1;
diff --git a/deps/openssl/openssl/test/recipes/70-test_renegotiation.t b/deps/openssl/openssl/test/recipes/70-test_renegotiation.t
index 734f1cd21e6d05..a8162189edcdc4 100644
--- a/deps/openssl/openssl/test/recipes/70-test_renegotiation.t
+++ b/deps/openssl/openssl/test/recipes/70-test_renegotiation.t
@@ -1,5 +1,5 @@
#! /usr/bin/env perl
-# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -38,7 +38,7 @@ my $proxy = TLSProxy::Proxy->new(
$proxy->clientflags("-no_tls1_3");
$proxy->reneg(1);
$proxy->start() or plan skip_all => "Unable to start up Proxy for tests";
-plan tests => 3;
+plan tests => 4;
ok(TLSProxy::Message->success(), "Basic renegotiation");
#Test 2: Client does not send the Reneg SCSV. Reneg should fail
@@ -77,6 +77,20 @@ SKIP: {
"Check ClientHello version is the same");
}
+SKIP: {
+ skip "TLSv1.2 disabled", 1
+ if disabled("tls1_2");
+
+ #Test 4: Test for CVE-2021-3449. client_sig_algs instead of sig_algs in
+ # resumption ClientHello
+ $proxy->clear();
+ $proxy->filter(\&sigalgs_filter);
+ $proxy->clientflags("-tls1_2");
+ $proxy->reneg(1);
+ $proxy->start();
+ ok(TLSProxy::Message->fail(), "client_sig_algs instead of sig_algs");
+}
+
sub reneg_filter
{
my $proxy = shift;
@@ -96,3 +110,23 @@ sub reneg_filter
}
}
}
+
+sub sigalgs_filter
+{
+ my $proxy = shift;
+ my $cnt = 0;
+
+ # We're only interested in the second ClientHello message
+ foreach my $message (@{$proxy->message_list}) {
+ if ($message->mt == TLSProxy::Message::MT_CLIENT_HELLO) {
+ next if ($cnt++ == 0);
+
+ my $sigs = pack "C10", 0x00, 0x08,
+ # rsa_pkcs_sha{256,384,512,1}
+ 0x04, 0x01, 0x05, 0x01, 0x06, 0x01, 0x02, 0x01;
+ $message->set_extension(TLSProxy::Message::EXT_SIG_ALGS_CERT, $sigs);
+ $message->delete_extension(TLSProxy::Message::EXT_SIG_ALGS);
+ $message->repack();
+ }
+ }
+}
diff --git a/deps/openssl/openssl/test/rsa_test.c b/deps/openssl/openssl/test/rsa_test.c
index bdbab75f8f4e0e..be6db029410c30 100644
--- a/deps/openssl/openssl/test/rsa_test.c
+++ b/deps/openssl/openssl/test/rsa_test.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
diff --git a/deps/openssl/openssl/test/sslapitest.c b/deps/openssl/openssl/test/sslapitest.c
index 495766b93633bc..f00d5cb074dec8 100644
--- a/deps/openssl/openssl/test/sslapitest.c
+++ b/deps/openssl/openssl/test/sslapitest.c
@@ -6817,8 +6817,7 @@ static int test_quic_api_version(int clnt, int srvr)
goto end;
/* Deal with two NewSessionTickets */
- if (!TEST_true(SSL_process_quic_post_handshake(clientssl))
- || !TEST_true(SSL_process_quic_post_handshake(clientssl)))
+ if (!TEST_true(SSL_process_quic_post_handshake(clientssl)))
goto end;
/* Dummy handshake call should succeed */
@@ -6916,6 +6915,156 @@ static int test_quic_api(int tst)
serverssl = NULL;
return testresult;
}
+
+/*
+ * Helper method to setup objects for QUIC early data test. Caller
+ * frees objects on error.
+ */
+static int quic_setupearly_data_test(SSL_CTX **cctx, SSL_CTX **sctx,
+ SSL **clientssl, SSL **serverssl,
+ SSL_SESSION **sess, int idx)
+{
+ static const char *server_str = "SERVER";
+ static const char *client_str = "CLIENT";
+
+ if (*sctx == NULL
+ && (!TEST_true(create_ssl_ctx_pair(TLS_server_method(),
+ TLS_client_method(),
+ TLS1_3_VERSION, 0,
+ sctx, cctx, cert, privkey))
+ || !TEST_true(SSL_CTX_set_quic_method(*sctx, &quic_method))
+ || !TEST_true(SSL_CTX_set_quic_method(*cctx, &quic_method))
+ || !TEST_true(SSL_CTX_set_max_early_data(*sctx, 0xffffffffu))))
+ return 0;
+
+ if (idx == 1) {
+ /* When idx == 1 we repeat the tests with read_ahead set */
+ SSL_CTX_set_read_ahead(*cctx, 1);
+ SSL_CTX_set_read_ahead(*sctx, 1);
+ } else if (idx == 2) {
+ /* When idx == 2 we are doing early_data with a PSK. Set up callbacks */
+ SSL_CTX_set_psk_use_session_callback(*cctx, use_session_cb);
+ SSL_CTX_set_psk_find_session_callback(*sctx, find_session_cb);
+ use_session_cb_cnt = 0;
+ find_session_cb_cnt = 0;
+ srvid = pskid;
+ }
+
+ if (!TEST_true(create_ssl_objects(*sctx, *cctx, serverssl, clientssl,
+ NULL, NULL))
+ || !TEST_true(SSL_set_quic_transport_params(*serverssl,
+ (unsigned char*)server_str,
+ strlen(server_str)+1))
+ || !TEST_true(SSL_set_quic_transport_params(*clientssl,
+ (unsigned char*)client_str,
+ strlen(client_str)+1))
+ || !TEST_true(SSL_set_app_data(*serverssl, *clientssl))
+ || !TEST_true(SSL_set_app_data(*clientssl, *serverssl)))
+ return 0;
+
+ /*
+ * For one of the run throughs (doesn't matter which one), we'll try sending
+ * some SNI data in the initial ClientHello. This will be ignored (because
+ * there is no SNI cb set up by the server), so it should not impact
+ * early_data.
+ */
+ if (idx == 1
+ && !TEST_true(SSL_set_tlsext_host_name(*clientssl, "localhost")))
+ return 0;
+
+ if (idx == 2) {
+ clientpsk = create_a_psk(*clientssl);
+ if (!TEST_ptr(clientpsk)
+ || !TEST_true(SSL_SESSION_set_max_early_data(clientpsk,
+ 0xffffffffu))
+ || !TEST_true(SSL_SESSION_up_ref(clientpsk))) {
+ SSL_SESSION_free(clientpsk);
+ clientpsk = NULL;
+ return 0;
+ }
+ serverpsk = clientpsk;
+
+ if (sess != NULL) {
+ if (!TEST_true(SSL_SESSION_up_ref(clientpsk))) {
+ SSL_SESSION_free(clientpsk);
+ SSL_SESSION_free(serverpsk);
+ clientpsk = serverpsk = NULL;
+ return 0;
+ }
+ *sess = clientpsk;
+ }
+
+ SSL_set_quic_early_data_enabled(*serverssl, 1);
+ SSL_set_quic_early_data_enabled(*clientssl, 1);
+
+ return 1;
+ }
+
+ if (sess == NULL)
+ return 1;
+
+ if (!TEST_true(create_ssl_connection(*serverssl, *clientssl,
+ SSL_ERROR_NONE)))
+ return 0;
+
+ /* Deal with two NewSessionTickets */
+ if (!TEST_true(SSL_process_quic_post_handshake(*clientssl)))
+ return 0;
+
+ *sess = SSL_get1_session(*clientssl);
+ SSL_shutdown(*clientssl);
+ SSL_shutdown(*serverssl);
+ SSL_free(*serverssl);
+ SSL_free(*clientssl);
+ *serverssl = *clientssl = NULL;
+
+ if (!TEST_true(create_ssl_objects(*sctx, *cctx, serverssl,
+ clientssl, NULL, NULL))
+ || !TEST_true(SSL_set_session(*clientssl, *sess))
+ || !TEST_true(SSL_set_quic_transport_params(*serverssl,
+ (unsigned char*)server_str,
+ strlen(server_str)+1))
+ || !TEST_true(SSL_set_quic_transport_params(*clientssl,
+ (unsigned char*)client_str,
+ strlen(client_str)+1))
+ || !TEST_true(SSL_set_app_data(*serverssl, *clientssl))
+ || !TEST_true(SSL_set_app_data(*clientssl, *serverssl)))
+ return 0;
+
+ SSL_set_quic_early_data_enabled(*serverssl, 1);
+ SSL_set_quic_early_data_enabled(*clientssl, 1);
+
+ return 1;
+}
+
+static int test_quic_early_data(int tst)
+{
+ SSL_CTX *cctx = NULL, *sctx = NULL;
+ SSL *clientssl = NULL, *serverssl = NULL;
+ int testresult = 0;
+ SSL_SESSION *sess = NULL;
+
+ if (!TEST_true(quic_setupearly_data_test(&cctx, &sctx, &clientssl,
+ &serverssl, &sess, tst)))
+ goto end;
+
+ if (!TEST_true(create_ssl_connection(serverssl, clientssl, SSL_ERROR_NONE))
+ || !TEST_true(SSL_get_early_data_status(serverssl)))
+ goto end;
+
+ testresult = 1;
+
+ end:
+ SSL_SESSION_free(sess);
+ SSL_SESSION_free(clientpsk);
+ SSL_SESSION_free(serverpsk);
+ clientpsk = serverpsk = NULL;
+ SSL_free(serverssl);
+ SSL_free(clientssl);
+ SSL_CTX_free(sctx);
+ SSL_CTX_free(cctx);
+ return testresult;
+}
#endif
int setup_tests(void)
@@ -7046,6 +7195,7 @@ int setup_tests(void)
#endif
#ifndef OPENSSL_NO_QUIC
ADD_ALL_TESTS(test_quic_api, 9);
+ ADD_ALL_TESTS(test_quic_early_data, 3);
#endif
return 1;
}
diff --git a/deps/openssl/openssl/test/verify_extra_test.c b/deps/openssl/openssl/test/verify_extra_test.c
index 010403e74ac202..b9959e0c6665ce 100644
--- a/deps/openssl/openssl/test/verify_extra_test.c
+++ b/deps/openssl/openssl/test/verify_extra_test.c
@@ -140,10 +140,22 @@ static int test_alt_chains_cert_forgery(void)
i = X509_verify_cert(sctx);
- if (i == 0 && X509_STORE_CTX_get_error(sctx) == X509_V_ERR_INVALID_CA) {
+ if (i != 0 || X509_STORE_CTX_get_error(sctx) != X509_V_ERR_INVALID_CA)
+ goto err;
+
+ /* repeat with X509_V_FLAG_X509_STRICT */
+ X509_STORE_CTX_cleanup(sctx);
+ X509_STORE_set_flags(store, X509_V_FLAG_X509_STRICT);
+
+ if (!X509_STORE_CTX_init(sctx, store, x, untrusted))
+ goto err;
+
+ i = X509_verify_cert(sctx);
+
+ if (i == 0 && X509_STORE_CTX_get_error(sctx) == X509_V_ERR_INVALID_CA)
/* This is the result we were expecting: Test passed */
ret = 1;
- }
+
err:
X509_STORE_CTX_free(sctx);
X509_free(x);
diff --git a/deps/openssl/openssl/tools/c_rehash.in b/deps/openssl/openssl/tools/c_rehash.in
index 421fd892086f93..fa7c6c9fef91a9 100644
--- a/deps/openssl/openssl/tools/c_rehash.in
+++ b/deps/openssl/openssl/tools/c_rehash.in
@@ -1,7 +1,7 @@
#!{- $config{HASHBANGPERL} -}
# {- join("\n# ", @autowarntext) -}
-# Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -161,7 +161,7 @@ sub check_file {
sub link_hash_cert {
my $fname = $_[0];
- $fname =~ s/'/'\\''/g;
+ $fname =~ s/\"/\\\"/g;
my ($hash, $fprint) = `"$openssl" x509 $x509hash -fingerprint -noout -in "$fname"`;
chomp $hash;
chomp $fprint;
diff --git a/deps/openssl/openssl/util/libssl.num b/deps/openssl/openssl/util/libssl.num
index d27011d83fccc3..7c8f9463abff09 100644
--- a/deps/openssl/openssl/util/libssl.num
+++ b/deps/openssl/openssl/util/libssl.num
@@ -513,3 +513,4 @@ SSL_set_quic_use_legacy_codepoint 20011 1_1_1i EXIST::FUNCTION:QUIC
SSL_set_quic_transport_version 20012 1_1_1i EXIST::FUNCTION:QUIC
SSL_get_peer_quic_transport_version 20013 1_1_1i EXIST::FUNCTION:QUIC
SSL_get_quic_transport_version 20014 1_1_1i EXIST::FUNCTION:QUIC
+SSL_set_quic_early_data_enabled 20015 1_1_1j EXIST::FUNCTION:QUIC
diff --git a/deps/openssl/openssl/util/perl/TLSProxy/Message.pm b/deps/openssl/openssl/util/perl/TLSProxy/Message.pm
index 10b61560746a9d..c3c480669c66f7 100644
--- a/deps/openssl/openssl/util/perl/TLSProxy/Message.pm
+++ b/deps/openssl/openssl/util/perl/TLSProxy/Message.pm
@@ -1,4 +1,4 @@
-# Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the OpenSSL license (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
@@ -448,7 +448,7 @@ sub ciphersuite
}
#Update all the underlying records with the modified data from this message
-#Note: Only supports re-encrypting for TLSv1.3
+#Note: Only supports TLSv1.3 and ETM encryption
sub repack
{
my $self = shift;
@@ -490,15 +490,38 @@ sub repack
# (If a length override is ever needed to construct invalid packets,
# use an explicit override field instead.)
$rec->decrypt_len(length($rec->decrypt_data));
- $rec->len($rec->len + length($msgdata) - $old_length);
- # Only support re-encryption for TLSv1.3.
- if (TLSProxy::Proxy->is_tls13() && $rec->encrypted()) {
- #Add content type (1 byte) and 16 tag bytes
- $rec->data($rec->decrypt_data
- .pack("C", TLSProxy::Record::RT_HANDSHAKE).("\0"x16));
+ # Only support re-encryption for TLSv1.3 and ETM.
+ if ($rec->encrypted()) {
+ if (TLSProxy::Proxy->is_tls13()) {
+ #Add content type (1 byte) and 16 tag bytes
+ $rec->data($rec->decrypt_data
+ .pack("C", TLSProxy::Record::RT_HANDSHAKE).("\0"x16));
+ } elsif ($rec->etm()) {
+ my $data = $rec->decrypt_data;
+ #Add padding
+ my $padval = length($data) % 16;
+ $padval = 15 - $padval;
+ for (0..$padval) {
+ $data .= pack("C", $padval);
+ }
+
+ #Add MAC. Assumed to be 20 bytes
+ foreach my $macval (0..19) {
+ $data .= pack("C", $macval);
+ }
+
+ if ($rec->version() >= TLSProxy::Record::VERS_TLS_1_1) {
+ #Explicit IV
+ $data = ("\0"x16).$data;
+ }
+ $rec->data($data);
+ } else {
+ die "Unsupported encryption: No ETM";
+ }
} else {
$rec->data($rec->decrypt_data);
}
+ $rec->len(length($rec->data));
#Update the fragment len in case we changed it above
${$self->message_frag_lens}[0] = length($msgdata)
From f0e77149a47451db75af84c6ff65623abf165efb Mon Sep 17 00:00:00 2001
From: Hassaan Pasha
Date: Thu, 25 Mar 2021 21:10:14 +0500
Subject: [PATCH 06/41] deps: update archs files for OpenSSL-1.1.1k
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
After an OpenSSL source update, all the config files need to be
regenerated and committed by:
$ make -C deps/openssl/config
$ git add deps/openssl/config/archs
$ git add deps/openssl/openssl/include/crypto/bn_conf.h
$ git add deps/openssl/openssl/include/crypto/dso_conf.h
$ git add deps/openssl/openssl/include/openssl/opensslconf.h
$ git commit
PR-URL: https://github.com/nodejs/node/pull/37916
Fixes: https://github.com/nodejs/node/issues/37913
Reviewed-By: Tobias Nießen
Reviewed-By: James M Snell
Reviewed-By: Matteo Collina
---
deps/openssl/config/archs/BSD-x86/asm/configdata.pm | 4 ++--
deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm | 4 ++--
.../openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm | 4 ++--
deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm | 4 ++--
deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm | 4 ++--
.../config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm | 4 ++--
.../config/archs/BSD-x86_64/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/VC-WIN32/asm/configdata.pm | 6 +++---
deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm | 6 +++---
.../config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm | 6 +++---
deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm | 6 +++---
.../config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm | 6 +++---
deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm | 6 +++---
.../config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm | 6 +++---
.../openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/aix-gcc/asm/configdata.pm | 4 ++--
deps/openssl/config/archs/aix-gcc/asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/aix-gcc/asm_avx2/configdata.pm | 4 ++--
.../openssl/config/archs/aix-gcc/asm_avx2/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/aix-gcc/no-asm/configdata.pm | 4 ++--
deps/openssl/config/archs/aix-gcc/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/aix64-gcc/asm/configdata.pm | 4 ++--
deps/openssl/config/archs/aix64-gcc/asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/aix64-gcc/asm_avx2/configdata.pm | 4 ++--
.../config/archs/aix64-gcc/asm_avx2/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/aix64-gcc/no-asm/configdata.pm | 4 ++--
.../openssl/config/archs/aix64-gcc/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm | 4 ++--
.../config/archs/darwin-i386-cc/asm/crypto/buildinf.h | 2 +-
.../config/archs/darwin-i386-cc/asm_avx2/configdata.pm | 4 ++--
.../config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h | 2 +-
.../config/archs/darwin-i386-cc/no-asm/configdata.pm | 4 ++--
.../config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h | 2 +-
.../config/archs/darwin64-arm64-cc/asm/configdata.pm | 4 ++--
.../config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h | 2 +-
.../config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm | 4 ++--
.../archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h | 2 +-
.../config/archs/darwin64-arm64-cc/no-asm/configdata.pm | 4 ++--
.../config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h | 2 +-
.../config/archs/darwin64-x86_64-cc/asm/configdata.pm | 4 ++--
.../config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h | 2 +-
.../config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm | 4 ++--
.../archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h | 2 +-
.../config/archs/darwin64-x86_64-cc/no-asm/configdata.pm | 4 ++--
.../archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-aarch64/asm/configdata.pm | 4 ++--
.../config/archs/linux-aarch64/asm/crypto/buildinf.h | 2 +-
.../config/archs/linux-aarch64/asm_avx2/configdata.pm | 4 ++--
.../config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h | 2 +-
.../openssl/config/archs/linux-aarch64/no-asm/configdata.pm | 4 ++--
.../config/archs/linux-aarch64/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-armv4/asm/configdata.pm | 4 ++--
deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h | 2 +-
.../openssl/config/archs/linux-armv4/asm_avx2/configdata.pm | 4 ++--
.../config/archs/linux-armv4/asm_avx2/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm | 4 ++--
.../config/archs/linux-armv4/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-elf/asm/configdata.pm | 4 ++--
deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm | 4 ++--
.../config/archs/linux-elf/asm_avx2/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-elf/no-asm/configdata.pm | 4 ++--
.../openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-ppc/asm/configdata.pm | 4 ++--
deps/openssl/config/archs/linux-ppc/asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-ppc/asm_avx2/configdata.pm | 4 ++--
.../config/archs/linux-ppc/asm_avx2/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-ppc/no-asm/configdata.pm | 4 ++--
.../openssl/config/archs/linux-ppc/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-ppc64/asm/configdata.pm | 4 ++--
deps/openssl/config/archs/linux-ppc64/asm/crypto/buildinf.h | 2 +-
.../openssl/config/archs/linux-ppc64/asm_avx2/configdata.pm | 4 ++--
.../config/archs/linux-ppc64/asm_avx2/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-ppc64/no-asm/configdata.pm | 4 ++--
.../config/archs/linux-ppc64/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm | 4 ++--
.../config/archs/linux-ppc64le/asm/crypto/buildinf.h | 2 +-
.../config/archs/linux-ppc64le/asm_avx2/configdata.pm | 4 ++--
.../config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h | 2 +-
.../openssl/config/archs/linux-ppc64le/no-asm/configdata.pm | 4 ++--
.../config/archs/linux-ppc64le/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-x32/asm/configdata.pm | 4 ++--
deps/openssl/config/archs/linux-x32/asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-x32/asm_avx2/configdata.pm | 4 ++--
.../config/archs/linux-x32/asm_avx2/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-x32/no-asm/configdata.pm | 4 ++--
.../openssl/config/archs/linux-x32/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-x86_64/asm/configdata.pm | 4 ++--
.../openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h | 2 +-
.../config/archs/linux-x86_64/asm_avx2/configdata.pm | 4 ++--
.../config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm | 4 ++--
.../config/archs/linux-x86_64/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux32-s390x/asm/configdata.pm | 4 ++--
.../config/archs/linux32-s390x/asm/crypto/buildinf.h | 2 +-
.../config/archs/linux32-s390x/asm_avx2/configdata.pm | 4 ++--
.../config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h | 2 +-
.../openssl/config/archs/linux32-s390x/no-asm/configdata.pm | 4 ++--
.../config/archs/linux32-s390x/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux64-mips64/asm/configdata.pm | 4 ++--
.../config/archs/linux64-mips64/asm/crypto/buildinf.h | 2 +-
.../config/archs/linux64-mips64/asm_avx2/configdata.pm | 4 ++--
.../config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h | 2 +-
.../config/archs/linux64-mips64/no-asm/configdata.pm | 4 ++--
.../config/archs/linux64-mips64/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/linux64-s390x/asm/configdata.pm | 4 ++--
.../config/archs/linux64-s390x/asm/crypto/buildinf.h | 2 +-
.../config/archs/linux64-s390x/asm_avx2/configdata.pm | 4 ++--
.../config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h | 2 +-
.../openssl/config/archs/linux64-s390x/no-asm/configdata.pm | 4 ++--
.../config/archs/linux64-s390x/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm | 4 ++--
.../config/archs/solaris-x86-gcc/asm/crypto/buildinf.h | 2 +-
.../config/archs/solaris-x86-gcc/asm_avx2/configdata.pm | 4 ++--
.../config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h | 2 +-
.../config/archs/solaris-x86-gcc/no-asm/configdata.pm | 4 ++--
.../config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h | 2 +-
.../config/archs/solaris64-x86_64-gcc/asm/configdata.pm | 4 ++--
.../config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h | 2 +-
.../archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm | 4 ++--
.../archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h | 2 +-
.../config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm | 4 ++--
.../archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h | 2 +-
deps/openssl/openssl/include/crypto/bn_conf.h | 1 +
deps/openssl/openssl/include/crypto/dso_conf.h | 1 +
deps/openssl/openssl/include/openssl/opensslconf.h | 1 +
137 files changed, 211 insertions(+), 208 deletions(-)
create mode 100644 deps/openssl/openssl/include/crypto/bn_conf.h
create mode 100644 deps/openssl/openssl/include/crypto/dso_conf.h
create mode 100644 deps/openssl/openssl/include/openssl/opensslconf.h
diff --git a/deps/openssl/config/archs/BSD-x86/asm/configdata.pm b/deps/openssl/config/archs/BSD-x86/asm/configdata.pm
index ef4e64a9f48157..891b580c679939 100644
--- a/deps/openssl/config/archs/BSD-x86/asm/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86/asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "BSD-x86",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h
index 5eaef555a032ea..5b23c458770d44 100644
--- a/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: BSD-x86"
-#define DATE "built on: Thu Mar 4 14:45:54 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:42:28 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm b/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm
index 71235c6d5ee0fc..18feda61c80781 100644
--- a/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "BSD-x86",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h
index 4fa1b62712f546..34b4d42b16ae04 100644
--- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: BSD-x86"
-#define DATE "built on: Thu Mar 4 14:45:56 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:42:31 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm b/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm
index cdd614f13737a0..081bf31df4a04b 100644
--- a/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm
@@ -110,8 +110,8 @@ our %config = (
sourcedir => ".",
target => "BSD-x86",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h
index 421899d3dd3328..b8e59e8092e23e 100644
--- a/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: BSD-x86"
-#define DATE "built on: Thu Mar 4 14:45:59 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:42:33 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm
index 5376e3957a50b8..3c6977a5b85fdc 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "BSD-x86_64",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h
index ad70ed915cbf4b..a0e5ccbe413e99 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: BSD-x86_64"
-#define DATE "built on: Thu Mar 4 14:46:00 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:42:35 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm
index 5a8de227028be6..eba0c52540705c 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "BSD-x86_64",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h
index 4f852366e080cf..3bcc328ee3eda8 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: BSD-x86_64"
-#define DATE "built on: Thu Mar 4 14:46:08 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:42:41 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm
index cae0afd4f500d0..32460d7c9a9a64 100644
--- a/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm
@@ -110,8 +110,8 @@ our %config = (
sourcedir => ".",
target => "BSD-x86_64",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h
index e4f1beec36adff..54873e1e8dcc05 100644
--- a/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: BSD-x86_64"
-#define DATE "built on: Thu Mar 4 14:46:16 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:42:47 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm b/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm
index c4c41e7155640c..0d8074bb846700 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm
@@ -115,8 +115,8 @@ our %config = (
sourcedir => ".",
target => "VC-WIN32",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
@@ -132,7 +132,7 @@ our %target = (
LDFLAGS => "/nologo /debug",
MT => "mt",
MTFLAGS => "-nologo",
- RANLIB => "CODE(0x559dac12ef00)",
+ RANLIB => "CODE(0x55c51430d9f8)",
RC => "rc",
_conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/shared-info.pl" ],
aes_asm_src => "aes_core.c aes_cbc.c vpaes-x86.s aesni-x86.s",
diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h
index 12c049c14e2178..768c1c44d7236d 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: "
-#define DATE "built on: Thu Mar 4 14:48:58 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:45:00 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm
index ca9e8ea60258fb..a8c0bfe55105e7 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm
@@ -115,8 +115,8 @@ our %config = (
sourcedir => ".",
target => "VC-WIN32",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
@@ -132,7 +132,7 @@ our %target = (
LDFLAGS => "/nologo /debug",
MT => "mt",
MTFLAGS => "-nologo",
- RANLIB => "CODE(0x56163e49b440)",
+ RANLIB => "CODE(0x55ef1e4a36c8)",
RC => "rc",
_conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/shared-info.pl" ],
aes_asm_src => "aes_core.c aes_cbc.c vpaes-x86.s aesni-x86.s",
diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h
index 5c4be2c4c67029..0c0b25c25e0e19 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: "
-#define DATE "built on: Thu Mar 4 14:49:00 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:45:03 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm
index 7daf9402572031..e06bc02b014a7a 100644
--- a/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm
@@ -114,8 +114,8 @@ our %config = (
sourcedir => ".",
target => "VC-WIN32",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
@@ -131,7 +131,7 @@ our %target = (
LDFLAGS => "/nologo /debug",
MT => "mt",
MTFLAGS => "-nologo",
- RANLIB => "CODE(0x55c2ede54b90)",
+ RANLIB => "CODE(0x5643c93df2f8)",
RC => "rc",
_conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/shared-info.pl" ],
aes_asm_src => "aes_core.c aes_cbc.c",
diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h
index 632e3a35b14422..8ad926959a0150 100644
--- a/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: "
-#define DATE "built on: Thu Mar 4 14:49:02 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:45:05 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm
index c3226f60e0dea6..998036606f06c4 100644
--- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm
@@ -113,8 +113,8 @@ our %config = (
sourcedir => ".",
target => "VC-WIN64-ARM",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
@@ -128,7 +128,7 @@ our %target = (
LDFLAGS => "/nologo /debug",
MT => "mt",
MTFLAGS => "-nologo",
- RANLIB => "CODE(0x55ac7827a8e0)",
+ RANLIB => "CODE(0x564e049cb988)",
RC => "rc",
_conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/50-win-onecore.conf", "Configurations/shared-info.pl" ],
aes_asm_src => "aes_core.c aes_cbc.c",
diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h
index cc5036fb7ae650..22df0eea75ab77 100644
--- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: VC-WIN64-ARM"
-#define DATE "built on: Thu Mar 4 14:49:03 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:45:06 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm
index b2535e1b2d428c..b541f2036e6431 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm
@@ -116,8 +116,8 @@ our %config = (
sourcedir => ".",
target => "VC-WIN64A",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
@@ -133,7 +133,7 @@ our %target = (
LDFLAGS => "/nologo /debug",
MT => "mt",
MTFLAGS => "-nologo",
- RANLIB => "CODE(0x55a6ad443640)",
+ RANLIB => "CODE(0x55a7657f0078)",
RC => "rc",
_conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/shared-info.pl" ],
aes_asm_src => "aes_core.c aes_cbc.c vpaes-x86_64.s aesni-x86_64.s aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h
index 9fddf31355c8a2..aa50a0a939f520 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: "
-#define DATE "built on: Thu Mar 4 14:48:39 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:47 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm
index fbfc9cd5d7c34f..921c897a5a85b4 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm
@@ -116,8 +116,8 @@ our %config = (
sourcedir => ".",
target => "VC-WIN64A",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
@@ -133,7 +133,7 @@ our %target = (
LDFLAGS => "/nologo /debug",
MT => "mt",
MTFLAGS => "-nologo",
- RANLIB => "CODE(0x56435f462d50)",
+ RANLIB => "CODE(0x55ef6679a0b8)",
RC => "rc",
_conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/shared-info.pl" ],
aes_asm_src => "aes_core.c aes_cbc.c vpaes-x86_64.s aesni-x86_64.s aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h
index 71286220541562..ad961df2482f87 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: "
-#define DATE "built on: Thu Mar 4 14:48:48 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:53 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm
index f847069e7bd414..7aa782d1f68c6a 100644
--- a/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm
@@ -115,8 +115,8 @@ our %config = (
sourcedir => ".",
target => "VC-WIN64A",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
@@ -132,7 +132,7 @@ our %target = (
LDFLAGS => "/nologo /debug",
MT => "mt",
MTFLAGS => "-nologo",
- RANLIB => "CODE(0x55e799b0b810)",
+ RANLIB => "CODE(0x55f54c2a9d48)",
RC => "rc",
_conf_fname_int => [ "Configurations/00-base-templates.conf", "Configurations/00-base-templates.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/10-main.conf", "Configurations/shared-info.pl" ],
aes_asm_src => "aes_core.c aes_cbc.c",
diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h
index b86b0d717a42bc..f5c8515cac1e54 100644
--- a/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: "
-#define DATE "built on: Thu Mar 4 14:48:56 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:59 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/aix-gcc/asm/configdata.pm b/deps/openssl/config/archs/aix-gcc/asm/configdata.pm
index e73e1e2a95fdb9..e3b31e749c5d72 100644
--- a/deps/openssl/config/archs/aix-gcc/asm/configdata.pm
+++ b/deps/openssl/config/archs/aix-gcc/asm/configdata.pm
@@ -110,8 +110,8 @@ our %config = (
sourcedir => ".",
target => "aix-gcc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/aix-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/aix-gcc/asm/crypto/buildinf.h
index 34c3421f36b7a6..0e2113a8f0bab9 100644
--- a/deps/openssl/config/archs/aix-gcc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/aix-gcc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: aix-gcc"
-#define DATE "built on: Thu Mar 4 14:45:39 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:42:17 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/aix-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/aix-gcc/asm_avx2/configdata.pm
index 0d638ca8e956db..e8277af259ba22 100644
--- a/deps/openssl/config/archs/aix-gcc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/aix-gcc/asm_avx2/configdata.pm
@@ -110,8 +110,8 @@ our %config = (
sourcedir => ".",
target => "aix-gcc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/aix-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/aix-gcc/asm_avx2/crypto/buildinf.h
index d786b7f301bdfa..d2f178d52159c0 100644
--- a/deps/openssl/config/archs/aix-gcc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/aix-gcc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: aix-gcc"
-#define DATE "built on: Thu Mar 4 14:45:43 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:42:19 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/aix-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/aix-gcc/no-asm/configdata.pm
index 3e9c99d05e1cdb..c61120bb0d0b51 100644
--- a/deps/openssl/config/archs/aix-gcc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/aix-gcc/no-asm/configdata.pm
@@ -110,8 +110,8 @@ our %config = (
sourcedir => ".",
target => "aix-gcc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/aix-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/aix-gcc/no-asm/crypto/buildinf.h
index 87eb800c328c13..6bd902c5569f3c 100644
--- a/deps/openssl/config/archs/aix-gcc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/aix-gcc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: aix-gcc"
-#define DATE "built on: Thu Mar 4 14:45:46 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:42:21 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/aix64-gcc/asm/configdata.pm b/deps/openssl/config/archs/aix64-gcc/asm/configdata.pm
index aca8e6f6eccd00..6c7ea7a38ec34c 100644
--- a/deps/openssl/config/archs/aix64-gcc/asm/configdata.pm
+++ b/deps/openssl/config/archs/aix64-gcc/asm/configdata.pm
@@ -110,8 +110,8 @@ our %config = (
sourcedir => ".",
target => "aix64-gcc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/aix64-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc/asm/crypto/buildinf.h
index d8204828f78b4b..2a80fc8166172a 100644
--- a/deps/openssl/config/archs/aix64-gcc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/aix64-gcc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: aix64-gcc"
-#define DATE "built on: Thu Mar 4 14:45:47 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:42:22 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/aix64-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/aix64-gcc/asm_avx2/configdata.pm
index ec3e1af9475ae9..0053407cf93584 100644
--- a/deps/openssl/config/archs/aix64-gcc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/aix64-gcc/asm_avx2/configdata.pm
@@ -110,8 +110,8 @@ our %config = (
sourcedir => ".",
target => "aix64-gcc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/aix64-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc/asm_avx2/crypto/buildinf.h
index 4a031d4780d07a..2d01f3168aa2bc 100644
--- a/deps/openssl/config/archs/aix64-gcc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/aix64-gcc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: aix64-gcc"
-#define DATE "built on: Thu Mar 4 14:45:50 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:42:25 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/aix64-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/aix64-gcc/no-asm/configdata.pm
index dc44603a7f1b08..fb7ef022cef91c 100644
--- a/deps/openssl/config/archs/aix64-gcc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/aix64-gcc/no-asm/configdata.pm
@@ -110,8 +110,8 @@ our %config = (
sourcedir => ".",
target => "aix64-gcc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/aix64-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc/no-asm/crypto/buildinf.h
index e91a37a112a4f0..013c76ca1d63ba 100644
--- a/deps/openssl/config/archs/aix64-gcc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/aix64-gcc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: aix64-gcc"
-#define DATE "built on: Thu Mar 4 14:45:53 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:42:27 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm
index b41182337a7af5..b7c5d7fa62e389 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "darwin-i386-cc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h
index b7eb6990ebe207..ae0628c55c7793 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin-i386-cc"
-#define DATE "built on: Thu Mar 4 14:46:35 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:01 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm
index a0dcbf311ce45e..f0a31bbc8ff3e0 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "darwin-i386-cc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h
index f8e4a00d2e2add..87ddc3fa4f1c9f 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin-i386-cc"
-#define DATE "built on: Thu Mar 4 14:46:37 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:03 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm
index e48bd3cf31f0e3..73f0b61c96307b 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm
@@ -110,8 +110,8 @@ our %config = (
sourcedir => ".",
target => "darwin-i386-cc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h
index f666a1afae8cc6..e7a1caeea15b87 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin-i386-cc"
-#define DATE "built on: Thu Mar 4 14:46:39 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:06 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm
index dbbe581788751b..6da68da0953e42 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm
@@ -110,8 +110,8 @@ our %config = (
sourcedir => ".",
target => "darwin64-arm64-cc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h
index 216e0027b6ba11..1f03c3bcca2972 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin64-arm64-cc"
-#define DATE "built on: Thu Mar 4 14:46:41 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:07 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm
index 8541a827a903d5..572a4907b331e1 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm
@@ -110,8 +110,8 @@ our %config = (
sourcedir => ".",
target => "darwin64-arm64-cc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h
index e27b0940359f2d..b081faec060597 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin64-arm64-cc"
-#define DATE "built on: Thu Mar 4 14:46:43 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:09 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm
index c9c9d708b050b9..69fdbf3b880080 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm
@@ -110,8 +110,8 @@ our %config = (
sourcedir => ".",
target => "darwin64-arm64-cc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h
index c144c4b5e648d1..fbe71f645bc722 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin64-arm64-cc"
-#define DATE "built on: Thu Mar 4 14:46:46 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:12 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm
index dca1df8962203a..c8116442f719db 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "darwin64-x86_64-cc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h
index 94d45e2ca6144e..7060c8469173df 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin64-x86_64-cc"
-#define DATE "built on: Thu Mar 4 14:46:17 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:42:48 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm
index fa973b70c8aadf..7b61c9fe5b63b6 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "darwin64-x86_64-cc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h
index 39c181627763af..75200f3048a102 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin64-x86_64-cc"
-#define DATE "built on: Thu Mar 4 14:46:26 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:42:54 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm
index a37ec2a75bc59e..1779ec4383f3a8 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm
@@ -110,8 +110,8 @@ our %config = (
sourcedir => ".",
target => "darwin64-x86_64-cc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h
index 1c0dba6e4000b2..c6c0ea798acc6a 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: darwin64-x86_64-cc"
-#define DATE "built on: Thu Mar 4 14:46:33 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:42:59 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm b/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm
index c4076c011f5a7e..a6c6c6e370f08a 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-aarch64",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h
index 8365bd5ef43ee1..1c0a894bb2a8d7 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-aarch64"
-#define DATE "built on: Thu Mar 4 14:46:47 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:13 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm
index 2bf71290c6c2ec..fbadd519409e09 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-aarch64",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h
index 6889959dc33ce2..ef7d1e3dd74f8b 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-aarch64"
-#define DATE "built on: Thu Mar 4 14:46:50 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:15 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm b/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm
index 25cfe30fffc75a..50e5dee829a623 100644
--- a/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-aarch64",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h
index c39a9d53d1f3e6..3f5e680f11370e 100644
--- a/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-aarch64"
-#define DATE "built on: Thu Mar 4 14:46:52 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:17 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-armv4/asm/configdata.pm b/deps/openssl/config/archs/linux-armv4/asm/configdata.pm
index f20078a0497a29..de29511ca253c9 100644
--- a/deps/openssl/config/archs/linux-armv4/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-armv4/asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-armv4",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h
index 115d2d36209751..42947a5a11fe4f 100644
--- a/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-armv4"
-#define DATE "built on: Thu Mar 4 14:46:54 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:19 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm
index aa4beb2b550648..647045d8fb6b01 100644
--- a/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-armv4",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h
index b7d44c98c97ff2..c7f2bd129c07d7 100644
--- a/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-armv4"
-#define DATE "built on: Thu Mar 4 14:46:57 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:21 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm b/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm
index b7a806c56eccc4..a84e7866bd9154 100644
--- a/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-armv4",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h
index b43afc3cc1eee1..0348809834a246 100644
--- a/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-armv4"
-#define DATE "built on: Thu Mar 4 14:47:00 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:23 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-elf/asm/configdata.pm b/deps/openssl/config/archs/linux-elf/asm/configdata.pm
index 2f7e1139db6684..7e07cd4ee0f60b 100644
--- a/deps/openssl/config/archs/linux-elf/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-elf/asm/configdata.pm
@@ -112,8 +112,8 @@ our %config = (
sourcedir => ".",
target => "linux-elf",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h
index 75032dfa3987dd..91dc5e61c7f38f 100644
--- a/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-elf"
-#define DATE "built on: Thu Mar 4 14:47:01 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:25 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm
index d2901ad0015ec6..c5201185b74e82 100644
--- a/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm
@@ -112,8 +112,8 @@ our %config = (
sourcedir => ".",
target => "linux-elf",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h
index 177a13996fc122..cf9b0580ea3067 100644
--- a/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-elf"
-#define DATE "built on: Thu Mar 4 14:47:04 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:27 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm b/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm
index a4380cf8ad4cab..0572dd40c7dcc9 100644
--- a/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-elf",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h
index f29413cd984ce7..2b91e3fe231cbc 100644
--- a/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-elf"
-#define DATE "built on: Thu Mar 4 14:47:06 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:30 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-ppc/asm/configdata.pm b/deps/openssl/config/archs/linux-ppc/asm/configdata.pm
index 647090205ff378..6752de03934080 100644
--- a/deps/openssl/config/archs/linux-ppc/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-ppc/asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-ppc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-ppc/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc/asm/crypto/buildinf.h
index b48423b524177b..81d209b39b83ec 100644
--- a/deps/openssl/config/archs/linux-ppc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-ppc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-ppc"
-#define DATE "built on: Thu Mar 4 14:47:42 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:57 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-ppc/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-ppc/asm_avx2/configdata.pm
index 85130b2cd64425..9c5b00c42545f9 100644
--- a/deps/openssl/config/archs/linux-ppc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-ppc/asm_avx2/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-ppc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-ppc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc/asm_avx2/crypto/buildinf.h
index f8400f603865d7..ed5ea64d0b877d 100644
--- a/deps/openssl/config/archs/linux-ppc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-ppc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-ppc"
-#define DATE "built on: Thu Mar 4 14:47:45 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:59 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-ppc/no-asm/configdata.pm b/deps/openssl/config/archs/linux-ppc/no-asm/configdata.pm
index 1202e2b66afc5c..e3c18449a5229c 100644
--- a/deps/openssl/config/archs/linux-ppc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-ppc/no-asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-ppc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-ppc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc/no-asm/crypto/buildinf.h
index 05361b179c72a5..20b4252c666745 100644
--- a/deps/openssl/config/archs/linux-ppc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-ppc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-ppc"
-#define DATE "built on: Thu Mar 4 14:47:47 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:01 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-ppc64/asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64/asm/configdata.pm
index a5d4edc0e93120..1fd3577cf99a76 100644
--- a/deps/openssl/config/archs/linux-ppc64/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-ppc64/asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-ppc64",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-ppc64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64/asm/crypto/buildinf.h
index a4b0f82ef2dc9b..982aea519f7856 100644
--- a/deps/openssl/config/archs/linux-ppc64/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-ppc64/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-ppc64"
-#define DATE "built on: Thu Mar 4 14:47:49 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:02 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-ppc64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-ppc64/asm_avx2/configdata.pm
index fe86838d09c3e2..0a473a34e2a962 100644
--- a/deps/openssl/config/archs/linux-ppc64/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-ppc64/asm_avx2/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-ppc64",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-ppc64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64/asm_avx2/crypto/buildinf.h
index 028a46925ec960..6913869019afea 100644
--- a/deps/openssl/config/archs/linux-ppc64/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-ppc64/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-ppc64"
-#define DATE "built on: Thu Mar 4 14:47:51 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:05 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-ppc64/no-asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64/no-asm/configdata.pm
index 06beb7aef0a9bf..c77cd43a35217e 100644
--- a/deps/openssl/config/archs/linux-ppc64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-ppc64/no-asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-ppc64",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-ppc64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64/no-asm/crypto/buildinf.h
index bff1a18557e11d..03332a35a90468 100644
--- a/deps/openssl/config/archs/linux-ppc64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-ppc64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-ppc64"
-#define DATE "built on: Thu Mar 4 14:47:54 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:07 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm
index fecd22fa72d144..f99178de981d6b 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-ppc64le",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h
index cac047594c28dd..eda2983cd767a0 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-ppc64le"
-#define DATE "built on: Thu Mar 4 14:47:56 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:08 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm
index f569ae9ae8ecb0..4293853c6a9bb9 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-ppc64le",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h
index 51ce37f851c9a8..4452d4f6b32cb3 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-ppc64le"
-#define DATE "built on: Thu Mar 4 14:47:59 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:11 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm
index 650c07cf51fdcf..baf7b61efe537c 100644
--- a/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-ppc64le",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h
index 9a448f96fdfd74..7abdc41c9d8e51 100644
--- a/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-ppc64le"
-#define DATE "built on: Thu Mar 4 14:48:02 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:13 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-x32/asm/configdata.pm b/deps/openssl/config/archs/linux-x32/asm/configdata.pm
index b5bcfc28054846..0cf2081c2eccff 100644
--- a/deps/openssl/config/archs/linux-x32/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-x32/asm/configdata.pm
@@ -112,8 +112,8 @@ our %config = (
sourcedir => ".",
target => "linux-x32",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-x32/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-x32/asm/crypto/buildinf.h
index 5bbbc8f5d5f043..b70963f93daf41 100644
--- a/deps/openssl/config/archs/linux-x32/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-x32/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-x32"
-#define DATE "built on: Thu Mar 4 14:47:07 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:31 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-x32/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-x32/asm_avx2/configdata.pm
index 9eb0f46da37119..37e62c2838fa4e 100644
--- a/deps/openssl/config/archs/linux-x32/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-x32/asm_avx2/configdata.pm
@@ -112,8 +112,8 @@ our %config = (
sourcedir => ".",
target => "linux-x32",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-x32/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-x32/asm_avx2/crypto/buildinf.h
index 6944cd2994bf66..ac5cdad547d136 100644
--- a/deps/openssl/config/archs/linux-x32/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-x32/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-x32"
-#define DATE "built on: Thu Mar 4 14:47:15 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:37 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-x32/no-asm/configdata.pm b/deps/openssl/config/archs/linux-x32/no-asm/configdata.pm
index 5feec461f13ca1..626e5f4804284b 100644
--- a/deps/openssl/config/archs/linux-x32/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-x32/no-asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-x32",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-x32/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-x32/no-asm/crypto/buildinf.h
index 43607a375888d9..b27fe551cd541e 100644
--- a/deps/openssl/config/archs/linux-x32/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-x32/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-x32"
-#define DATE "built on: Thu Mar 4 14:47:23 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:43 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm b/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm
index fb3f4165bedea4..e9a02093852ff6 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm
@@ -112,8 +112,8 @@ our %config = (
sourcedir => ".",
target => "linux-x86_64",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h
index 16701f8dd78012..806bc7b0be0b27 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-x86_64"
-#define DATE "built on: Thu Mar 4 14:47:25 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:44 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm
index 138416e2655d49..902bc82300ade0 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm
@@ -112,8 +112,8 @@ our %config = (
sourcedir => ".",
target => "linux-x86_64",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h
index c4295495afd5f8..bbbad72d0e6db9 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-x86_64"
-#define DATE "built on: Thu Mar 4 14:47:33 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:50 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm b/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm
index bc1a9b85c44852..73805ab88375ab 100644
--- a/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux-x86_64",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h
index 3c13cf3454aafb..9a409a9312fd0f 100644
--- a/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux-x86_64"
-#define DATE "built on: Thu Mar 4 14:47:41 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:43:55 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm b/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm
index 60b384cdc65b36..fae651069d4eb4 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux32-s390x",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h
index 52dc4d184777d7..3e6aeb8da38d41 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux32-s390x"
-#define DATE "built on: Thu Mar 4 14:48:03 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:14 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm
index ba3f4c466bc4a8..67b341576a8ced 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux32-s390x",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h
index 2353345b375959..92bce59708af9a 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux32-s390x"
-#define DATE "built on: Thu Mar 4 14:48:04 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:16 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm b/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm
index 4a1efeb013160c..6fc9d28971f89f 100644
--- a/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux32-s390x",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h
index e1b84121fa954e..4991b2fa382916 100644
--- a/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux32-s390x"
-#define DATE "built on: Thu Mar 4 14:48:06 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:17 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm b/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm
index e5f2023d316692..8f08c123d5de3f 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux64-mips64",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h
index 0fec822ef1c756..ee4656b0a675b1 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux64-mips64"
-#define DATE "built on: Thu Mar 4 14:48:12 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:24 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm
index 81e9a1f80f4fd9..40aee3e9a067f8 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux64-mips64",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h
index 38207ed28129eb..ab40ae4230c835 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux64-mips64"
-#define DATE "built on: Thu Mar 4 14:48:13 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:25 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm
index 2aabfd99bfa5b4..81f1d6d1afbc7a 100644
--- a/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux64-mips64",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h
index 54f0c23d71a63b..d4c47016888189 100644
--- a/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux64-mips64"
-#define DATE "built on: Thu Mar 4 14:48:15 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:27 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm b/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm
index a23de771626c41..95a3b0def67e56 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux64-s390x",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h
index 3ec1016a2c788e..c002b48aac3e34 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux64-s390x"
-#define DATE "built on: Thu Mar 4 14:48:07 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:19 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm
index 3579ce09a86340..8f15cff9c3ea81 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux64-s390x",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h
index 1d6f65728d7dbc..9a75af1ec23a9c 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux64-s390x"
-#define DATE "built on: Thu Mar 4 14:48:09 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:20 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm
index a4ee4a5818cdb7..67f1f71b7de603 100644
--- a/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "linux64-s390x",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h
index c779ab80d05fc5..187943708784f9 100644
--- a/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: linux64-s390x"
-#define DATE "built on: Thu Mar 4 14:48:10 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:22 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm
index f5ef975ab25454..3861816e21501d 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "solaris-x86-gcc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h
index 2f483b8466ebac..45e08014daa4e1 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: solaris-x86-gcc"
-#define DATE "built on: Thu Mar 4 14:48:16 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:28 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm
index 370d8e3d04ea42..a531022015b1cb 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "solaris-x86-gcc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h
index 64f68adc0c9815..e2bf12b071fc72 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: solaris-x86-gcc"
-#define DATE "built on: Thu Mar 4 14:48:18 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:31 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm
index 55092be9cffdcd..01ec53c68e9bea 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm
@@ -110,8 +110,8 @@ our %config = (
sourcedir => ".",
target => "solaris-x86-gcc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h
index 8539d9f14de736..71a3c8005bd80b 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: solaris-x86-gcc"
-#define DATE "built on: Thu Mar 4 14:48:20 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:33 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm
index 2991e7e75d91a7..fe897ccea532b4 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "solaris64-x86_64-gcc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h
index fba9aa0c174e16..42ace5b9c85156 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: solaris64-x86_64-gcc"
-#define DATE "built on: Thu Mar 4 14:48:22 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:34 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm
index ccd36007970c88..6eba11c7528875 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm
@@ -111,8 +111,8 @@ our %config = (
sourcedir => ".",
target => "solaris64-x86_64-gcc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h
index d89cd79b0bdb00..2002a92d98cf7b 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: solaris64-x86_64-gcc"
-#define DATE "built on: Thu Mar 4 14:48:30 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:40 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm
index 6c9f917cb2276b..1b7266967e3b4b 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm
@@ -110,8 +110,8 @@ our %config = (
sourcedir => ".",
target => "solaris64-x86_64-gcc",
tdirs => [ "ossl_shim" ],
- version => "1.1.1j+quic",
- version_num => "0x101010afL",
+ version => "1.1.1k+quic",
+ version_num => "0x101010bfL",
);
our %target = (
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h
index dc843bd603809c..7feca299a49af0 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
*/
#define PLATFORM "platform: solaris64-x86_64-gcc"
-#define DATE "built on: Thu Mar 4 14:48:38 2021 UTC"
+#define DATE "built on: Thu Mar 25 15:44:46 2021 UTC"
/*
* Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/openssl/include/crypto/bn_conf.h b/deps/openssl/openssl/include/crypto/bn_conf.h
new file mode 100644
index 00000000000000..79400c6472a49c
--- /dev/null
+++ b/deps/openssl/openssl/include/crypto/bn_conf.h
@@ -0,0 +1 @@
+#include "../../../config/bn_conf.h"
diff --git a/deps/openssl/openssl/include/crypto/dso_conf.h b/deps/openssl/openssl/include/crypto/dso_conf.h
new file mode 100644
index 00000000000000..e7f2afa9872320
--- /dev/null
+++ b/deps/openssl/openssl/include/crypto/dso_conf.h
@@ -0,0 +1 @@
+#include "../../../config/dso_conf.h"
diff --git a/deps/openssl/openssl/include/openssl/opensslconf.h b/deps/openssl/openssl/include/openssl/opensslconf.h
new file mode 100644
index 00000000000000..76c99d433ab886
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/opensslconf.h
@@ -0,0 +1 @@
+#include "../../config/opensslconf.h"
From f3fabb57cfabe6b52fabe958eeb2fd5459b6dcf5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?=
Date: Fri, 26 Mar 2021 13:24:02 +0100
Subject: [PATCH 07/41] doc: add missing cleanup step in OpenSSL upgrade
Refs: https://github.com/nodejs/node/pull/37916
PR-URL: https://github.com/nodejs/node/pull/37927
Reviewed-By: Richard Lau
Reviewed-By: James M Snell
Reviewed-By: Colin Ihrig
Reviewed-By: Jiawen Geng
---
doc/guides/maintaining-openssl.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/doc/guides/maintaining-openssl.md b/doc/guides/maintaining-openssl.md
index 510568c2c9db7f..32b38430ce6c01 100644
--- a/doc/guides/maintaining-openssl.md
+++ b/doc/guides/maintaining-openssl.md
@@ -65,6 +65,7 @@ release).
% cd ../node/deps/openssl
% rm -rf openssl
% cp -R ../../../openssl openssl
+% rm -rf openssl/.git* openssl/.travis*
% git add --all openssl
% git commit openssl
```
@@ -72,7 +73,7 @@ release).
The commit message can be written as (with the openssl version set
to the relevant value):
```text
-deps: upgrade openssl sources to 1.1.0h
+deps: upgrade openssl sources to OpenSSL_1_1_1j
This updates all sources in deps/openssl/openssl by:
$ git clone https://github.com/quictls/openssl
@@ -81,6 +82,7 @@ This updates all sources in deps/openssl/openssl by:
$ cd ../node/deps/openssl
$ rm -rf openssl
$ cp -R ../openssl openssl
+ $ rm -rf openssl/.git* openssl/.travis*
$ git add --all openssl
$ git commit openssl
```
From a57dc06adf53d9f3f46c844470474283cd26d8fd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Zasso?=
Date: Sat, 27 Mar 2021 14:26:39 +0100
Subject: [PATCH 08/41] doc: improve Buffer's encoding documentation
- Add a paragraph about case-insensitivity of encoding options.
- Document "utf-8", "utf-16le" and "ucs-2" aliases.
- Always use "utf8" in documentation for defaults and examples.
PR-URL: https://github.com/nodejs/node/pull/37945
Reviewed-By: Antoine du Hamel
Reviewed-By: Colin Ihrig
Reviewed-By: James M Snell
Reviewed-By: Luigi Pinca
---
doc/api/buffer.md | 30 +++++++++++++++++-------------
doc/api/http.md | 4 ++--
doc/api/stream.md | 2 +-
3 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/doc/api/buffer.md b/doc/api/buffer.md
index 3334c260125338..086df183c59d85 100644
--- a/doc/api/buffer.md
+++ b/doc/api/buffer.md
@@ -79,17 +79,21 @@ console.log(Buffer.from('fhqwhgads', 'utf16le'));
// Prints:
```
+Node.js buffers accept all case variations of encoding strings that they
+receive. For example, UTF-8 can be specified as `'utf8'`, `'UTF8'` or `'uTf8'`.
+
The character encodings currently supported by Node.js are the following:
-* `'utf8'`: Multi-byte encoded Unicode characters. Many web pages and other
- document formats use [UTF-8][]. This is the default character encoding.
- When decoding a `Buffer` into a string that does not exclusively contain
- valid UTF-8 data, the Unicode replacement character `U+FFFD` � will be used
- to represent those errors.
+* `'utf8'` (alias: `'utf-8'`): Multi-byte encoded Unicode characters. Many web
+ pages and other document formats use [UTF-8][]. This is the default character
+ encoding. When decoding a `Buffer` into a string that does not exclusively
+ contain valid UTF-8 data, the Unicode replacement character `U+FFFD` � will be
+ used to represent those errors.
-* `'utf16le'`: Multi-byte encoded Unicode characters. Unlike `'utf8'`, each
- character in the string will be encoded using either 2 or 4 bytes.
- Node.js only supports the [little-endian][endianness] variant of [UTF-16][].
+* `'utf16le'` (alias: `'utf-16le'`): Multi-byte encoded Unicode characters.
+ Unlike `'utf8'`, each character in the string will be encoded using either 2
+ or 4 bytes. Node.js only supports the [little-endian][endianness] variant of
+ [UTF-16][].
* `'latin1'`: Latin-1 stands for [ISO-8859-1][]. This character encoding only
supports the Unicode characters from `U+0000` to `U+00FF`. Each character is
@@ -132,11 +136,11 @@ The following legacy character encodings are also supported:
* `'binary'`: Alias for `'latin1'`. See [binary strings][] for more background
on this topic. The name of this encoding can be very misleading, as all of the
encodings listed here convert between strings and binary data. For converting
- between strings and `Buffer`s, typically `'utf-8'` is the right choice.
+ between strings and `Buffer`s, typically `'utf8'` is the right choice.
-* `'ucs2'`: Alias of `'utf16le'`. UCS-2 used to refer to a variant of UTF-16
- that did not support characters that had code points larger than U+FFFF.
- In Node.js, these code points are always supported.
+* `'ucs2'`, `'ucs-2'`: Aliases of `'utf16le'`. UCS-2 used to refer to a variant
+ of UTF-16 that did not support characters that had code points larger than
+ U+FFFF. In Node.js, these code points are always supported.
```js
Buffer.from('1ag', 'hex');
@@ -900,7 +904,7 @@ Returns `true` if `encoding` is the name of a supported character encoding,
or `false` otherwise.
```js
-console.log(Buffer.isEncoding('utf-8'));
+console.log(Buffer.isEncoding('utf8'));
// Prints: true
console.log(Buffer.isEncoding('hex'));
diff --git a/doc/api/http.md b/doc/api/http.md
index 93e754b82f484e..ff24f36d1eb36f 100644
--- a/doc/api/http.md
+++ b/doc/api/http.md
@@ -2323,7 +2323,7 @@ changes:
-->
* `chunk` {string | Buffer}
-* `encoding` {string} Optional, **Default**: `utf-8`
+* `encoding` {string} Optional, **Default**: `utf8`
* `callback` {Function} Optional
* Returns: {this}
@@ -2565,7 +2565,7 @@ changes:
-->
* `chunk` {string | Buffer}
-* `encoding` {string} **Default**: `utf-8`
+* `encoding` {string} **Default**: `utf8`
* `callback` {Function}
* Returns {boolean}
diff --git a/doc/api/stream.md b/doc/api/stream.md
index 26a04be24c6f35..4e35340c04812d 100644
--- a/doc/api/stream.md
+++ b/doc/api/stream.md
@@ -2759,7 +2759,7 @@ const fs = require('fs');
pipeline(
fs.createReadStream('object.json')
- .setEncoding('utf-8'),
+ .setEncoding('utf8'),
new Transform({
decodeStrings: false, // Accept string input rather than Buffers
construct(callback) {
From d86aca9a77e1b9eb693d242cd6a9804f369f08a3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Zasso?=
Date: Mon, 29 Mar 2021 18:18:47 +0200
Subject: [PATCH 09/41] http: optimize debug function correctly
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Exporting a variable that will be mutated later doesn't work.
Refs: https://github.com/nodejs/node/issues/37937
PR-URL: https://github.com/nodejs/node/pull/37966
Reviewed-By: Matteo Collina
Reviewed-By: Anna Henningsen
Reviewed-By: Gerhard Stöbich
Reviewed-By: Colin Ihrig
Reviewed-By: Luigi Pinca
---
lib/_http_client.js | 5 ++++-
lib/_http_common.js | 1 -
lib/_http_outgoing.js | 6 +++++-
lib/_http_server.js | 5 ++++-
4 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/lib/_http_client.js b/lib/_http_client.js
index 57a36183405170..4d8584326ef13f 100644
--- a/lib/_http_client.js
+++ b/lib/_http_client.js
@@ -47,7 +47,6 @@ const assert = require('internal/assert');
const { once } = require('internal/util');
const {
_checkIsHttpToken: checkIsHttpToken,
- debug,
freeParser,
parsers,
HTTPParser,
@@ -79,6 +78,10 @@ const {
const { addAbortSignal, finished } = require('stream');
+let debug = require('internal/util/debuglog').debuglog('http', (fn) => {
+ debug = fn;
+});
+
const INVALID_PATH_REGEX = /[^\u0021-\u00ff]/;
const kError = Symbol('kError');
diff --git a/lib/_http_common.js b/lib/_http_common.js
index 0d4bdcff05f56b..229353ec735288 100644
--- a/lib/_http_common.js
+++ b/lib/_http_common.js
@@ -269,7 +269,6 @@ module.exports = {
chunkExpression: /(?:^|\W)chunked(?:$|\W)/i,
continueExpression: /(?:^|\W)100-continue(?:$|\W)/i,
CRLF: '\r\n',
- debug,
freeParser,
methods,
parsers,
diff --git a/lib/_http_outgoing.js b/lib/_http_outgoing.js
index b7f0a9d5e67a15..4d2500f068f513 100644
--- a/lib/_http_outgoing.js
+++ b/lib/_http_outgoing.js
@@ -79,8 +79,12 @@ const {
const { validateString } = require('internal/validators');
const { isUint8Array } = require('internal/util/types');
+let debug = require('internal/util/debuglog').debuglog('http', (fn) => {
+ debug = fn;
+});
+
const HIGH_WATER_MARK = getDefaultHighWaterMark();
-const { CRLF, debug } = common;
+const { CRLF } = common;
const kCorked = Symbol('corked');
diff --git a/lib/_http_server.js b/lib/_http_server.js
index 8bff29fa803833..77bfed0b6f90b7 100644
--- a/lib/_http_server.js
+++ b/lib/_http_server.js
@@ -45,7 +45,6 @@ const assert = require('internal/assert');
const {
parsers,
freeParser,
- debug,
CRLF,
continueExpression,
chunkExpression,
@@ -93,6 +92,10 @@ const { observerCounts, constants } = internalBinding('performance');
const { setTimeout, clearTimeout } = require('timers');
const { NODE_PERFORMANCE_ENTRY_TYPE_HTTP } = constants;
+let debug = require('internal/util/debuglog').debuglog('http', (fn) => {
+ debug = fn;
+});
+
const dc = require('diagnostics_channel');
const onRequestStartChannel = dc.channel('http.server.request.start');
const onResponseFinishChannel = dc.channel('http.server.response.finish');
From a94cc27cbefd9f7b0e7f96dc685fa3bed9b702ac Mon Sep 17 00:00:00 2001
From: Akhil Marsonya
Date: Wed, 24 Mar 2021 23:16:34 +0530
Subject: [PATCH 10/41] path: refactor to use more primordials
PR-URL: https://github.com/nodejs/node/pull/37893
Reviewed-By: Pooja D P
Reviewed-By: Antoine du Hamel
Reviewed-By: Darshan Sen
Reviewed-By: Luigi Pinca
Reviewed-By: Trivikram Kamat
Reviewed-By: Zijian Liu
---
lib/path.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/path.js b/lib/path.js
index f3d7f42fc1f433..6001b0ba8301a7 100644
--- a/lib/path.js
+++ b/lib/path.js
@@ -163,7 +163,7 @@ const win32 = {
// Verify that a cwd was found and that it actually points
// to our drive. If not, default to the drive's root.
if (path === undefined ||
- (StringPrototypeSlice(path, 0, 2).toLowerCase() !==
+ (StringPrototypeToLowerCase(StringPrototypeSlice(path, 0, 2)) !==
StringPrototypeToLowerCase(resolvedDevice) &&
StringPrototypeCharCodeAt(path, 2) === CHAR_BACKWARD_SLASH)) {
path = `${resolvedDevice}\\`;
@@ -1321,7 +1321,7 @@ const posix = {
return StringPrototypeSlice(path, startDot, end);
},
- format: _format.bind(null, '/'),
+ format: FunctionPrototypeBind(_format, null, '/'),
parse(path) {
validateString(path, 'path');
From 4ef102d34e972d047f9dd6e6689eca4b4113e240 Mon Sep 17 00:00:00 2001
From: Guy Bedford
Date: Tue, 30 Mar 2021 20:37:01 +0200
Subject: [PATCH 11/41] deps: update to cjs-module-lexer@1.1.1
PR-URL: https://github.com/nodejs/node/pull/37992
Reviewed-By: Antoine du Hamel
Reviewed-By: Jiawen Geng
---
deps/cjs-module-lexer/CHANGELOG.md | 4 ++++
deps/cjs-module-lexer/README.md | 6 +++---
deps/cjs-module-lexer/dist/lexer.js | 2 +-
deps/cjs-module-lexer/dist/lexer.mjs | 4 ++--
deps/cjs-module-lexer/lexer.js | 30 +++++++++++++++++++++-------
deps/cjs-module-lexer/package.json | 2 +-
doc/api/esm.md | 2 +-
7 files changed, 35 insertions(+), 15 deletions(-)
diff --git a/deps/cjs-module-lexer/CHANGELOG.md b/deps/cjs-module-lexer/CHANGELOG.md
index 74c74426305944..f71631cab5d7ff 100644
--- a/deps/cjs-module-lexer/CHANGELOG.md
+++ b/deps/cjs-module-lexer/CHANGELOG.md
@@ -1,3 +1,7 @@
+1.1.1
+- Better support for Babel reexport getter function forms (https://github.com/guybedford/cjs-module-lexer/issues/50)
+- Support Babel interopRequireWildcard reexports patterns (https://github.com/guybedford/cjs-module-lexer/issues/52)
+
1.1.0
- Support for Babel reexport conflict filter (https://github.com/guybedford/cjs-module-lexer/issues/36, @nicolo-ribaudo)
- Support trailing commas in getter patterns (https://github.com/guybedford/cjs-module-lexer/issues/31)
diff --git a/deps/cjs-module-lexer/README.md b/deps/cjs-module-lexer/README.md
index 44e615177e204c..290af176f0885f 100755
--- a/deps/cjs-module-lexer/README.md
+++ b/deps/cjs-module-lexer/README.md
@@ -92,7 +92,7 @@ EXPORTS_DEFINE_VALUE: EXPORTS_DEFINE `, {`
(`enumerable: true,`)?
(
`value:` |
- `get` (`: function` IDENTIFIER? )? `()` {` return IDENTIFIER (`.` IDENTIFIER | `[` IDENTIFIER_STRING `]`)? `;`? `}` `,`?
+ `get` (`: function` IDENTIFIER? )? `() {` return IDENTIFIER (`.` IDENTIFIER | `[` IDENTIFIER_STRING `]`)? `;`? `}` `,`?
)
`})`
@@ -100,7 +100,7 @@ EXPORTS_LITERAL: MODULE_EXPORTS `=` `{` (EXPORTS_LITERAL_PROP | EXPORTS_SPREAD)
REQUIRE: `require` `(` STRING_LITERAL `)`
-EXPORTS_ASSIGN: (`var` | `const` | `let`) IDENTIFIER `=` REQUIRE
+EXPORTS_ASSIGN: (`var` | `const` | `let`) IDENTIFIER `=` (`_interopRequireWildcard (`)? REQUIRE
MODULE_EXPORTS_ASSIGN: MODULE_EXPORTS `=` REQUIRE
@@ -119,7 +119,7 @@ EXPORT_STAR_LIB: `Object.keys(` IDENTIFIER$1 `).forEach(function (` IDENTIFIER$2
)
(
EXPORTS_IDENTIFIER `[` IDENTIFIER$2 `] =` IDENTIFIER$1 `[` IDENTIFIER$2 `]` `;`? |
- `Object.defineProperty(` EXPORTS_IDENTIFIER `, ` IDENTIFIER$2 `, { enumerable: true, get: function () { return ` IDENTIFIER$1 `[` IDENTIFIER$2 `]` `;`? `}` `,`? `})` `;`?
+ `Object.defineProperty(` EXPORTS_IDENTIFIER `, ` IDENTIFIER$2 `, { enumerable: true, get` (`: function` IDENTIFIER? )? `() { return ` IDENTIFIER$1 `[` IDENTIFIER$2 `]` `;`? `}` `,`? `})` `;`?
)
`})`
```
diff --git a/deps/cjs-module-lexer/dist/lexer.js b/deps/cjs-module-lexer/dist/lexer.js
index c344ef86d1fafb..a1466ee81ae77d 100644
--- a/deps/cjs-module-lexer/dist/lexer.js
+++ b/deps/cjs-module-lexer/dist/lexer.js
@@ -1 +1 @@
-"use strict";exports.parse=parse;exports.init=init;const A=new Set(["implements","interface","let","package","private","protected","public","static","yield","enum"]);let Q;const B=1===new Uint8Array(new Uint16Array([1]).buffer)[0];function parse(g,I="@"){if(!Q)throw new Error("Not initialized");const D=g.length+1,N=(Q.__heap_base.value||Q.__heap_base)+4*D-Q.memory.buffer.byteLength;N>0&&Q.memory.grow(Math.ceil(N/65536));const k=Q.sa(D);if((B?C:E)(g,new Uint16Array(Q.memory.buffer,k,D)),!Q.parseCJS(k,g.length,0,0,0))throw Object.assign(new Error(`Parse error ${I}${Q.e()}:${g.slice(0,Q.e()).split("\n").length}:${Q.e()-g.lastIndexOf("\n",Q.e()-1)}`),{idx:Q.e()});let w=new Set,J=new Set,H=new Set;for(;Q.rre();)J.add(g.slice(Q.res(),Q.ree()));for(;Q.ru();)H.add(g.slice(Q.us(),Q.ue()));for(;Q.re();){let B=g.slice(Q.es(),Q.ee());A.has(B)||H.has(B)||w.add(B)}return{exports:[...w],reexports:[...J]}}function E(A,Q){const B=A.length;let E=0;for(;E>>8}}function C(A,Q){const B=A.length;let E=0;for(;E{const A=await WebAssembly.compile((B="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DQFBACAAQQxqNgK8oAEQJxAtRQ0BAkACQAJAECciAEHbAEYNACAAQS5HDQJBAEEAKAK8oAFBAmo2ArygARAnEC0NAQwEC0EAQQAoArygAUECajYCvKABAkACQBAnIgBBIkYNACAAQSdHDQUQHQwBCxAVC0EAQQAoArygAUECajYCvKABECdB3QBHDQNBAEEAKAK8oAFBAmo2ArygAQsQJyEACwJAIABBO0cNAEEAQQAoArygAUECajYCvKABECchAAsgAEH9AEcNAUEAQQAoArygAUECajYCvKABAkAQJyIAQSxHDQBBAEEAKAK8oAFBAmo2ArygARAnIQALIABB/QBHDQFBAEEAKAK8oAFBAmo2ArygARAnQSlHDQEgAyACQQAoApwfEQAADwsgAkHrAEcNASAARQ0BQQAoArygASIALwECQeUARw0BIAAvAQRB+QBHDQEgAC8BBkHzAEcNASAAQQZqIQFBACAAQQhqNgK8oAEQJ0EoRw0BQQBBACgCvKABQQJqNgK8oAEQJyEAQQAoArygASECIAAQLUUNAUEAKAK8oAEhABAnQSlHDQFBAEEAKAK8oAEiAUECajYCvKABECdBLkcNAUEAQQAoArygAUECajYCvKABECdB5gBHDQFBACgCvKABIgNBAmpB7wBB8gBBxQBB4QBB4wBB6AAQJkUNAUEAIANBDmo2ArygARAnIQNBACgCvKABIgRBfmohASADQShHDQFBACAEQQJqNgK8oAEQJ0HmAEcNAUEAKAK8oAEiA0ECakH1AEHuAEHjAEH0AEHpAEHvAEHuABAjRQ0BQQAgA0EQajYCvKABECdBKEcNAUEAQQAoArygAUECajYCvKABECchA0EAKAK8oAEhBCADEC1FDQFBACgCvKABIQMQJ0EpRw0BQQBBACgCvKABQQJqNgK8oAEQJ0H7AEcNAUEAQQAoArygAUECajYCvKABECdB6QBHDQFBACgCvKABIgUvAQJB5gBHDQFBACAFQQRqNgK8oAEQJ0EoRw0BQQBBACgCvKABQQJqNgK8oAEQJxpBACgCvKABIgUgBCADIARrIgMQQQ0BIAAgAmsiBkEBdSEHQQAgBSADQQF1IghBAXRqNgK8oAECQAJAAkAQJyIAQSFGDQAgAEE9Rw0EQQAoArygASIALwECQT1HDQQgAC8BBEE9Rw0EQQAgAEEG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ai8BABAlIQULIAULhQEBAn8gABA+IgAQKiEBAkACQCAAQdwARg0AQQAhAiABRQ0BC0EAKAK8oAFBAkEEIABBgIAESRtqIQACQANAQQAgADYCvKABIAAvAQAQPiIBRQ0BAkAgARApRQ0AIABBAkEEIAFBgIAESRtqIQAMAQsLQQAhAiABQdwARg0BC0EBIQILIAIL9gMBBH9BACgCvKABIgBBfmohAQNAQQAgAEECajYCvKABAkACQAJAIABBACgCwKABTw0AECchAEEAKAK8oAEhAgJAAkAgABAtRQ0AQQAoArygASEDAkACQBAnIgBBOkcNAEEAQQAoArygAUECajYCvKABECcQLUUNAUEAKAK8oAEvAQAhAAsgAiADQQAoApwfEQAADAILQQAgATYCvKABDwsCQAJAIABBIkYNACAAQS5GDQEgAEEnRw0EC0EAQQAoArygASICQQJqIgM2ArygASACLwECEC1FDQFBACgCvKABIgIvAQAgAEcNAUEAIAJBAmo2ArygARAnIgBBOkcNAUEAQQAoArygAUECajYCvKABAkAQJxAtRQ0AQQAoArygAS8BACEAIAMgAkEAKAKcHxEAAAwCC0EAIAE2ArygAQ8LQQAoArygASIALwECQS5HDQIgAC8BBEEuRw0CQQAgAEEGajYCvKABAkACQAJAIAAvAQYiAEHyAEcNAEEBEBAhAEEAKAK8oAEhAiAADQEgAi8BACEACyAAQf//A3EQLQ0BQQAgATYCvKABDwtBACACQQJqNgK8oAELECchAAsgAEH//wNxIgBBLEYNAiAAQf0ARg0AQQAgATYCvKABCw8LQQAgATYCvKABDwtBACgCvKABIQAMAAsLjwEBAX9BACEOAkAgAC8BACABRw0AIAAvAQIgAkcNACAALwEEIANHDQAgAC8BBiAERw0AIAAvAQggBUcNACAALwEKIAZHDQAgAC8BDCAHRw0AIAAvAQ4gCEcNACAALwEQIAlHDQAgAC8BEiAKRw0AIAAvARQgC0cNACAALwEWIAxHDQAgAC8BGCANRiEOCyAOC6gBAQJ/QQAhAUEAKAK8oAEhAgJAAkAgAEHtAEcNACACQQJqQe8AQeQAQfUAQewAQeUAEBNFDQFBACACQQxqNgK8oAECQBAnQS5GDQBBACEBDAILQQBBACgCvKABQQJqNgK8oAEQJyEA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AAADAAAAAwAAAAIAAAAAAAAAAgAAAAEAAAANAAAACQAAAHgAAAAGAAAAAwAAAAYAAAAEAAAAAAAAAB0AAAAJAAAAKQAAAAYAAAACAAAAAwAAAAkAAAAAAAAACgAAAAoAAAAvAAAADwAAAJYBAAAHAAAAAgAAAAcAAAARAAAACQAAADkAAAAVAAAAAgAAAA0AAAB7AAAABQAAAAQAAAAAAAAAAgAAAAEAAAACAAAABgAAAAIAAAAAAAAACQAAAAkAAAAxAAAABAAAAAIAAAABAAAAAgAAAAQAAAAJAAAACQAAAEoBAAADAAAAaksAAAkAAACHAAAABAAAADwAAAAGAAAAGgAAAAkAAAD2AwAAAAAAAAIAAAA2AAAACAAAAAMAAABSAAAAAAAAAAwAAAABAAAArEwAAAEAAADHFAAABAAAAAQAAAAFAAAACQAAAAcAAAADAAAABgAAAB8AAAADAAAAlQAAAAIAAACKBQAAMQAAAAECAAA2AAAABQAAADEAAAAJAAAAAAAAAA8AAAAAAAAAFwAAAAQAAAACAAAADgAAAFEFAAAGAAAAAgAAABAAAAADAAAABgAAAAIAAAABAAAAAgAAAAQAAAAGAQAABgAAAAoAAAAJAAAAowEAAA0AAADXBQAABgAAAG4AAAAGAAAABgAAAAkAAACXEgAACQAAAAcFDADvAAAAAEGYHwscUIwAAAEAAAACAAAAAwAAAAQAAAAABAAA8B8AAA==","undefined"!=typeof window&&"function"==typeof atob?Uint8Array.from(atob(B),A=>A.charCodeAt(0)):Buffer.from(B,"base64")));var B;const{exports:E}=await WebAssembly.instantiate(A);Q=E})())}
\ No newline at end of file
+"use strict";exports.parse=parse;exports.init=init;const A=new Set(["implements","interface","let","package","private","protected","public","static","yield","enum"]);let Q;const B=1===new Uint8Array(new Uint16Array([1]).buffer)[0];function parse(g,I="@"){if(!Q)throw new Error("Not initialized");const D=g.length+1,N=(Q.__heap_base.value||Q.__heap_base)+4*D-Q.memory.buffer.byteLength;N>0&&Q.memory.grow(Math.ceil(N/65536));const k=Q.sa(D);if((B?C:E)(g,new Uint16Array(Q.memory.buffer,k,D)),!Q.parseCJS(k,g.length,0,0,0))throw Object.assign(new Error(`Parse error ${I}${Q.e()}:${g.slice(0,Q.e()).split("\n").length}:${Q.e()-g.lastIndexOf("\n",Q.e()-1)}`),{idx:Q.e()});let o=new Set,K=new Set,w=new Set;for(;Q.rre();)K.add(g.slice(Q.res(),Q.ree()));for(;Q.ru();)w.add(g.slice(Q.us(),Q.ue()));for(;Q.re();){let B=g.slice(Q.es(),Q.ee());A.has(B)||w.has(B)||o.add(B)}return{exports:[...o],reexports:[...K]}}function E(A,Q){const B=A.length;let E=0;for(;E>>8}}function C(A,Q){const B=A.length;let E=0;for(;E{const A=await WebAssembly.compile((B="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vKABEChB5gBHDQJBACgCvKABIgBBAmpB9QBB7gBB4wBB9ABB6QBB7wBB7gAQJEUNAkEAIABBEGoiADYCvKABAkAQKCIEQShGDQAgAEEAKAK8oAFGDQMgBBAuRQ0DCxAoIQALIABBKEcNAUEAQQAoArygAUECajYCvKABEChBKUcNAUEAQQAoArygAUECajYCvKABEChB+wBHDQFBAEEAKAK8oAFBAmo2ArygARAoQfIARw0BQQAoArygASIAQQJqQeUAQfQAQfUAQfIAQe4AEBNFDQFBACAAQQxqNgK8oAEQKBAuRQ0BAkACQAJAECgiAEHbAEYNACAAQS5HDQJBAEEAKAK8oAFBAmo2ArygARAoEC4NAQwEC0EAQQAoArygAUECajYCvKABAkACQBAoIgBBIkYNACAAQSdHDQUQHQwBCxAVC0EAQQAoArygAUECajYCvKABEChB3QBHDQNBAEEAKAK8oAFBAmo2ArygAQsQKCEACwJAIABBO0cNAEEAQQAoArygAUECajYCvKABECghAAsgAEH9AEcNAUEAQQAoArygAUECajYCvKABAkAQKCIAQSxHDQBBAEEAKAK8oAFBAmo2ArygARAoIQALIABB/QBHDQFBAEEAKAK8oAFBAmo2ArygARAoQSlHDQEgAyACQQAoApwfEQAADwsgAkHrAEcNASAARQ0BQQAoArygASIALwECQeUARw0BIAAvAQRB+QBHDQEgAC8BBkHzAEcNASAAQQZqIQFBACAAQQhqNgK8oAEQKEEoRw0BQQBBACgCvKABQQJqNgK8oAEQKCEAQQAoArygASECIAAQLkUNAUEAKAK8oAEhABAoQSlHDQFBAEEAKAK8oAEiAUECajYCvKABEChBLkcNAUEAQQAoArygAUECajYCvKABEChB5gBHDQFBACgCvKABIgNBAmpB7wBB8gBBxQBB4QBB4wBB6AAQJ0UNAUEAIANBDmo2ArygARAoIQNBACgCvKABIgRBfmohASADQShHDQFBACAEQQJqNgK8oAEQKEHmAEcNAUEAKAK8oAEiA0ECakH1AEHuAEHjAEH0AEHpAEHvAEHuABAkRQ0BQQAgA0EQajYCvKABEChBKEcNAUEAQQAoArygAUECajYCvKABECghA0EAKAK8oAEhBCADEC5FDQFBACgCvKABIQMQKEEpRw0BQQBBACgC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BEEAIABBEGoiADYCvKABAkAQKCIFQShGDQAgAEEAKAK8oAFGDQUgBRAuRQ0FCxAoIQALIABBKEcNA0EAQQAoArygAUECajYCvKABEChBKUcNA0EAQQAoArygAUECajYCvKABEChB+wBHDQNBAEEAKAK8oAFBAmo2ArygARAoQfIARw0DQQAoArygASIAQQJqQeUAQfQAQfUAQfIAQe4AEBNFDQNBACAAQQxqNgK8oAEQKBpBACgCvKABIgAgAiAGEEINA0EAIAAgB0EBdGo2ArygARAoQdsARw0DQQBBACgCvKABQQJqNgK8oAEQKBpBACgCvKABIgAgBCADEEINA0EAIAAgCEEBdGo2ArygARAoQd0ARw0DQQBBACgCvKABQQJqNgK8oAECQBAoIgBBO0cNAEEAQQAoArygAUECajYCvKABECghAAsgAEH9AEcNA0EAQQAoArygAUECajYCvKABAkAQKCIAQSxHDQBBAEEAKAK8oAFBAmo2ArygARAoIQALIABB/QBHDQNBAEEAKAK8oAFBAmo2ArygARAoQSlHDQNBAEEAKAK8oAFBAmo2ArygARAoIgBBO0cNAUEAQQAoArygAUECajYCvKABCxAoIQALIABB/QBHDQFBAEEAKAK8oAFBAmo2ArygARAoQSlHDQFBACgCtKABIQRBgCAhAANAAkACQCAEIABGDQAgByAAQQxqKAIAIABBCGooAgAiA2tBAXVHDQEgAiADIAYQQg0BIAAoAgAgAEEEaigCAEEAKAKgHxEAAEEAIAE2ArygAQsPCyAAQRBqIQAMAAsLIAMgAkEAKAKkHxEAAAtBACABNgK8oAELlQEBBH9BACgCvKABIQBBACgCwKABIQECQANAIAAiAkECaiEAIAIgAU8NAQJAIAAvAQAiA0HcAEYNAAJAIANBdmoiAkEDTQ0AIANBIkcNAkEAIAA2ArygAQ8LIAIOBAIBAQICCyACQQRqIQAgAi8BBEENRw0AIAJBBmogACACLwEGQQpGGyEADAALC0EAIAA2ArygARAeC1MBBH9BACgCvKABQQJqIQBBACgCwKABIQECQANAIAAiAkF+aiABTw0BIAJBAmohACACLwEAQXZqIgNBA0sNACADDgQBAAABAQsLQQAgAjYCvKABC3wBAn9BAEEAKAK8oAEiAEECajYCvKABIABBBmohAEEA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","undefined"!=typeof window&&"function"==typeof atob?Uint8Array.from(atob(B),A=>A.charCodeAt(0)):Buffer.from(B,"base64")));var B;const{exports:E}=await WebAssembly.instantiate(A);Q=E})())}
\ No newline at end of file
diff --git a/deps/cjs-module-lexer/dist/lexer.mjs b/deps/cjs-module-lexer/dist/lexer.mjs
index 6a28641494658c..42c77ef82ae71b 100644
--- a/deps/cjs-module-lexer/dist/lexer.mjs
+++ b/deps/cjs-module-lexer/dist/lexer.mjs
@@ -1,2 +1,2 @@
-/* cjs-module-lexer 1.1.0 */
-const A=new Set(["implements","interface","let","package","private","protected","public","static","yield","enum"]);let Q;const B=1===new Uint8Array(new Uint16Array([1]).buffer)[0];export function parse(g,I="@"){if(!Q)throw new Error("Not initialized");const D=g.length+1,N=(Q.__heap_base.value||Q.__heap_base)+4*D-Q.memory.buffer.byteLength;N>0&&Q.memory.grow(Math.ceil(N/65536));const k=Q.sa(D);if((B?C:E)(g,new Uint16Array(Q.memory.buffer,k,D)),!Q.parseCJS(k,g.length,0,0,0))throw Object.assign(new Error(`Parse error ${I}${Q.e()}:${g.slice(0,Q.e()).split("\n").length}:${Q.e()-g.lastIndexOf("\n",Q.e()-1)}`),{idx:Q.e()});let w=new Set,J=new Set,H=new Set;for(;Q.rre();)J.add(g.slice(Q.res(),Q.ree()));for(;Q.ru();)H.add(g.slice(Q.us(),Q.ue()));for(;Q.re();){let B=g.slice(Q.es(),Q.ee());A.has(B)||H.has(B)||w.add(B)}return{exports:[...w],reexports:[...J]}}function E(A,Q){const B=A.length;let E=0;for(;E>>8}}function C(A,Q){const B=A.length;let E=0;for(;E{const A=await WebAssembly.compile((B="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DQFBACAAQQxqNgK8oAEQJxAtRQ0BAkACQAJAECciAEHbAEYNACAAQS5HDQJBAEEAKAK8oAFBAmo2ArygARAnEC0NAQwEC0EAQQAoArygAUECajYCvKABAkACQBAnIgBBIkYNACAAQSdHDQUQHQwBCxAVC0EAQQAoArygAUECajYCvKABECdB3QBHDQNBAEEAKAK8oAFBAmo2ArygAQsQJyEACwJAIABBO0cNAEEAQQAoArygAUECajYCvKABECchAAsgAEH9AEcNAUEAQQAoArygAUECajYCvKABAkAQJyIAQSxHDQBBAEEAKAK8oAFBAmo2ArygARAnIQALIABB/QBHDQFBAEEAKAK8oAFBAmo2ArygARAnQSlHDQEgAyACQQAoApwfEQAADwsgAkHrAEcNASAARQ0BQQAoArygASIALwECQeUARw0BIAAvAQRB+QBHDQEgAC8BBkHzAEcNASAAQQZqIQFBACAAQQhqNgK8oAEQJ0EoRw0BQQBBACgCvKABQQJqNgK8oAEQJyEAQQAoArygASECIAAQLUUNAUEAKAK8oAEhABAnQSlHDQFBAEEAKAK8oAEiAUECajYCvKABECdBLkcNAUEAQQAoArygAUECajYCvKABECdB5gBHDQFBACgCvKABIgNBAmpB7wBB8gBBxQBB4QBB4wBB6AAQJkUNAUEAIANBDmo2ArygARAnIQNBACgCvKABIgRBfmohASADQShHDQFBACAEQQJqNgK8oAEQJ0HmAEcNAUEAKAK8oAEiA0ECakH1AEHuAEHjAEH0AEHpAEHvAEHuABAjRQ0BQQAgA0EQajYCvKABECdBKEcNAUEAQQAoArygAUECajYCvKABECchA0EAKAK8oAEhBCADEC1FDQFBACgCvKABIQMQJ0EpRw0BQQBBACgCvKABQQJqNgK8oAEQJ0H7AEcNAUEAQQAoArygAUECajYCvKABECdB6QBHDQFBACgCvKABIgUvAQJB5gBHDQFBACAFQQRqNgK8oAEQJ0EoRw0BQQBBACgCvKABQQJqNgK8oAEQJxpBACgCvKABIgUgBCADIARrIgMQQQ0BIAAgAmsiBkEBdSEHQQAgBSADQQF1IghBAXRqNgK8oAECQAJAAkAQJyIAQSFGDQAgAEE9Rw0EQQAoArygASIALwECQT1HDQQgAC8BBEE9Rw0EQQAgAEEG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ai8BABAlIQULIAULhQEBAn8gABA+IgAQKiEBAkACQCAAQdwARg0AQQAhAiABRQ0BC0EAKAK8oAFBAkEEIABBgIAESRtqIQACQANAQQAgADYCvKABIAAvAQAQPiIBRQ0BAkAgARApRQ0AIABBAkEEIAFBgIAESRtqIQAMAQsLQQAhAiABQdwARg0BC0EBIQILIAIL9gMBBH9BACgCvKABIgBBfmohAQNAQQAgAEECajYCvKABAkACQAJAIABBACgCwKABTw0AECchAEEAKAK8oAEhAgJAAkAgABAtRQ0AQQAoArygASEDAkACQBAnIgBBOkcNAEEAQQAoArygAUECajYCvKABECcQLUUNAUEAKAK8oAEvAQAhAAsgAiADQQAoApwfEQAADAILQQAgATYCvKABDwsCQAJAIABBIkYNACAAQS5GDQEgAEEnRw0EC0EAQQAoArygASICQQJqIgM2ArygASACLwECEC1FDQFBACgCvKABIgIvAQAgAEcNAUEAIAJBAmo2ArygARAnIgBBOkcNAUEAQQAoArygAUECajYCvKABAkAQJxAtRQ0AQQAoArygAS8BACEAIAMgAkEAKAKcHxEAAAwCC0EAIAE2ArygAQ8LQQAoArygASIALwECQS5HDQIgAC8BBEEuRw0CQQAgAEEGajYCvKABAkACQAJAIAAvAQYiAEHyAEcNAEEBEBAhAEEAKAK8oAEhAiAADQEgAi8BACEACyAAQf//A3EQLQ0BQQAgATYCvKABDwtBACACQQJqNgK8oAELECchAAsgAEH//wNxIgBBLEYNAiAAQf0ARg0AQQAgATYCvKABCw8LQQAgATYCvKABDwtBACgCvKABIQAMAAsLjwEBAX9BACEOAkAgAC8BACABRw0AIAAvAQIgAkcNACAALwEEIANHDQAgAC8BBiAERw0AIAAvAQggBUcNACAALwEKIAZHDQAgAC8BDCAHRw0AIAAvAQ4gCEcNACAALwEQIAlHDQAgAC8BEiAKRw0AIAAvARQgC0cNACAALwEWIAxHDQAgAC8BGCANRiEOCyAOC6gBAQJ/QQAhAUEAKAK8oAEhAgJAAkAgAEHtAEcNACACQQJqQe8AQeQAQfUAQewAQeUAEBNFDQFBACACQQxqNgK8oAECQBAnQS5GDQBBACEBDAILQQBBACgCvKABQQJqNgK8oAEQJyEA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AAADAAAAAwAAAAIAAAAAAAAAAgAAAAEAAAANAAAACQAAAHgAAAAGAAAAAwAAAAYAAAAEAAAAAAAAAB0AAAAJAAAAKQAAAAYAAAACAAAAAwAAAAkAAAAAAAAACgAAAAoAAAAvAAAADwAAAJYBAAAHAAAAAgAAAAcAAAARAAAACQAAADkAAAAVAAAAAgAAAA0AAAB7AAAABQAAAAQAAAAAAAAAAgAAAAEAAAACAAAABgAAAAIAAAAAAAAACQAAAAkAAAAxAAAABAAAAAIAAAABAAAAAgAAAAQAAAAJAAAACQAAAEoBAAADAAAAaksAAAkAAACHAAAABAAAADwAAAAGAAAAGgAAAAkAAAD2AwAAAAAAAAIAAAA2AAAACAAAAAMAAABSAAAAAAAAAAwAAAABAAAArEwAAAEAAADHFAAABAAAAAQAAAAFAAAACQAAAAcAAAADAAAABgAAAB8AAAADAAAAlQAAAAIAAACKBQAAMQAAAAECAAA2AAAABQAAADEAAAAJAAAAAAAAAA8AAAAAAAAAFwAAAAQAAAACAAAADgAAAFEFAAAGAAAAAgAAABAAAAADAAAABgAAAAIAAAABAAAAAgAAAAQAAAAGAQAABgAAAAoAAAAJAAAAowEAAA0AAADXBQAABgAAAG4AAAAGAAAABgAAAAkAAACXEgAACQAAAAcFDADvAAAAAEGYHwscUIwAAAEAAAACAAAAAwAAAAQAAAAABAAA8B8AAA==","undefined"!=typeof window&&"function"==typeof atob?Uint8Array.from(atob(B),A=>A.charCodeAt(0)):Buffer.from(B,"base64")));var B;const{exports:E}=await WebAssembly.instantiate(A);Q=E})())}
\ No newline at end of file
+/* cjs-module-lexer 1.1.1 */
+const A=new Set(["implements","interface","let","package","private","protected","public","static","yield","enum"]);let Q;const B=1===new Uint8Array(new Uint16Array([1]).buffer)[0];export function parse(g,I="@"){if(!Q)throw new Error("Not initialized");const D=g.length+1,N=(Q.__heap_base.value||Q.__heap_base)+4*D-Q.memory.buffer.byteLength;N>0&&Q.memory.grow(Math.ceil(N/65536));const k=Q.sa(D);if((B?C:E)(g,new Uint16Array(Q.memory.buffer,k,D)),!Q.parseCJS(k,g.length,0,0,0))throw Object.assign(new Error(`Parse error ${I}${Q.e()}:${g.slice(0,Q.e()).split("\n").length}:${Q.e()-g.lastIndexOf("\n",Q.e()-1)}`),{idx:Q.e()});let o=new Set,K=new Set,w=new Set;for(;Q.rre();)K.add(g.slice(Q.res(),Q.ree()));for(;Q.ru();)w.add(g.slice(Q.us(),Q.ue()));for(;Q.re();){let B=g.slice(Q.es(),Q.ee());A.has(B)||w.has(B)||o.add(B)}return{exports:[...o],reexports:[...K]}}function E(A,Q){const B=A.length;let E=0;for(;E>>8}}function C(A,Q){const B=A.length;let E=0;for(;E{const A=await WebAssembly.compile((B="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vKABEChB5gBHDQJBACgCvKABIgBBAmpB9QBB7gBB4wBB9ABB6QBB7wBB7gAQJEUNAkEAIABBEGoiADYCvKABAkAQKCIEQShGDQAgAEEAKAK8oAFGDQMgBBAuRQ0DCxAoIQALIABBKEcNAUEAQQAoArygAUECajYCvKABEChBKUcNAUEAQQAoArygAUECajYCvKABEChB+wBHDQFBAEEAKAK8oAFBAmo2ArygARAoQfIARw0BQQAoArygASIAQQJqQeUAQfQAQfUAQfIAQe4AEBNFDQFBACAAQQxqNgK8oAEQKBAuRQ0BAkACQAJAECgiAEHbAEYNACAAQS5HDQJBAEEAKAK8oAFBAmo2ArygARAoEC4NAQwEC0EAQQAoArygAUECajYCvKABAkACQBAoIgBBIkYNACAAQSdHDQUQHQwBCxAVC0EAQQAoArygAUECajYCvKABEChB3QBHDQNBAEEAKAK8oAFBAmo2ArygAQsQKCEACwJAIABBO0cNAEEAQQAoArygAUECajYCvKABECghAAsgAEH9AEcNAUEAQQAoArygAUECajYCvKABAkAQKCIAQSxHDQBBAEEAKAK8oAFBAmo2ArygARAoIQALIABB/QBHDQFBAEEAKAK8oAFBAmo2ArygARAoQSlHDQEgAyACQQAoApwfEQAADwsgAkHrAEcNASAARQ0BQQAoArygASIALwECQeUARw0BIAAvAQRB+QBHDQEgAC8BBkHzAEcNASAAQQZqIQFBACAAQQhqNgK8oAEQKEEoRw0BQQBBACgCvKABQQJqNgK8oAEQKCEAQQAoArygASECIAAQLkUNAUEAKAK8oAEhABAoQSlHDQFBAEEAKAK8oAEiAUECajYCvKABEChBLkcNAUEAQQAoArygAUECajYCvKABEChB5gBHDQFBACgCvKABIgNBAmpB7wBB8gBBxQBB4QBB4wBB6AAQJ0UNAUEAIANBDmo2ArygARAoIQNBACgCvKABIgRBfmohASADQShHDQFBACAEQQJqNgK8oAEQKEHmAEcNAUEAKAK8oAEiA0ECakH1AEHuAEHjAEH0AEHpAEHvAEHuABAkRQ0BQQAgA0EQajYCvKABEChBKEcNAUEAQQAoArygAUECajYCvKABECghA0EAKAK8oAEhBCADEC5FDQFBACgCvKABIQMQKEEpRw0BQQBBACgC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BEEAIABBEGoiADYCvKABAkAQKCIFQShGDQAgAEEAKAK8oAFGDQUgBRAuRQ0FCxAoIQALIABBKEcNA0EAQQAoArygAUECajYCvKABEChBKUcNA0EAQQAoArygAUECajYCvKABEChB+wBHDQNBAEEAKAK8oAFBAmo2ArygARAoQfIARw0DQQAoArygASIAQQJqQeUAQfQAQfUAQfIAQe4AEBNFDQNBACAAQQxqNgK8oAEQKBpBACgCvKABIgAgAiAGEEINA0EAIAAgB0EBdGo2ArygARAoQdsARw0DQQBBACgCvKABQQJqNgK8oAEQKBpBACgCvKABIgAgBCADEEINA0EAIAAgCEEBdGo2ArygARAoQd0ARw0DQQBBACgCvKABQQJqNgK8oAECQBAoIgBBO0cNAEEAQQAoArygAUECajYCvKABECghAAsgAEH9AEcNA0EAQQAoArygAUECajYCvKABAkAQKCIAQSxHDQBBAEEAKAK8oAFBAmo2ArygARAoIQALIABB/QBHDQNBAEEAKAK8oAFBAmo2ArygARAoQSlHDQNBAEEAKAK8oAFBAmo2ArygARAoIgBBO0cNAUEAQQAoArygAUECajYCvKABCxAoIQALIABB/QBHDQFBAEEAKAK8oAFBAmo2ArygARAoQSlHDQFBACgCtKABIQRBgCAhAANAAkACQCAEIABGDQAgByAAQQxqKAIAIABBCGooAgAiA2tBAXVHDQEgAiADIAYQQg0BIAAoAgAgAEEEaigCAEEAKAKgHxEAAEEAIAE2ArygAQsPCyAAQRBqIQAMAAsLIAMgAkEAKAKkHxEAAAtBACABNgK8oAELlQEBBH9BACgCvKABIQBBACgCwKABIQECQANAIAAiAkECaiEAIAIgAU8NAQJAIAAvAQAiA0HcAEYNAAJAIANBdmoiAkEDTQ0AIANBIkcNAkEAIAA2ArygAQ8LIAIOBAIBAQICCyACQQRqIQAgAi8BBEENRw0AIAJBBmogACACLwEGQQpGGyEADAALC0EAIAA2ArygARAeC1MBBH9BACgCvKABQQJqIQBBACgCwKABIQECQANAIAAiAkF+aiABTw0BIAJBAmohACACLwEAQXZqIgNBA0sNACADDgQBAAABAQsLQQAgAjYCvKABC3wBAn9BAEEAKAK8oAEiAEECajYCvKABIABBBmohAEEA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","undefined"!=typeof window&&"function"==typeof atob?Uint8Array.from(atob(B),A=>A.charCodeAt(0)):Buffer.from(B,"base64")));var B;const{exports:E}=await WebAssembly.instantiate(A);Q=E})())}
\ No newline at end of file
diff --git a/deps/cjs-module-lexer/lexer.js b/deps/cjs-module-lexer/lexer.js
index 2659ecb2661167..5e61e8291ea40e 100755
--- a/deps/cjs-module-lexer/lexer.js
+++ b/deps/cjs-module-lexer/lexer.js
@@ -97,7 +97,18 @@ function parseSource (cjsSource) {
lastTokenPos = pos;
continue;
case 95/*_*/:
- if (source.startsWith('_export', pos + 1) && (keywordStart(pos) || source.charCodeAt(pos - 1) === 46/*.*/)) {
+ if (source.startsWith('interopRequireWildcard', pos + 1) && (keywordStart(pos) || source.charCodeAt(pos - 1) === 46/*.*/)) {
+ const startPos = pos;
+ pos += 23;
+ if (source.charCodeAt(pos) === 40/*(*/) {
+ pos++;
+ openTokenPosStack[openTokenDepth++] = lastTokenPos;
+ if (tryParseRequire(Import) && keywordStart(startPos)) {
+ tryBacktrackAddStarExportBinding(startPos - 1);
+ }
+ }
+ }
+ else if (source.startsWith('_export', pos + 1) && (keywordStart(pos) || source.charCodeAt(pos - 1) === 46/*.*/)) {
pos += 8;
if (source.startsWith('Star', pos))
pos += 4;
@@ -724,12 +735,17 @@ function tryParseObjectDefineOrKeys (keys) {
if (ch !== 103/*g*/ || !source.startsWith('et', pos + 1)) break;
pos += 3;
ch = commentWhitespace();
- if (ch !== 58/*:*/) break;
- pos++;
- ch = commentWhitespace();
- if (ch !== 102/*f*/ || !source.startsWith('unction', pos + 1)) break;
- pos += 8;
- ch = commentWhitespace();
+ if (ch === 58/*:*/) {
+ pos++;
+ ch = commentWhitespace();
+ if (ch !== 102/*f*/) break;
+ if (!source.startsWith('unction', pos + 1)) break;
+ pos += 8;
+ let lastPos = pos;
+ ch = commentWhitespace();
+ if (ch !== 40 && (lastPos === pos || !identifier())) break;
+ ch = commentWhitespace();
+ }
if (ch !== 40/*(*/) break;
pos++;
ch = commentWhitespace();
diff --git a/deps/cjs-module-lexer/package.json b/deps/cjs-module-lexer/package.json
index 4f32411d998832..8860d897ebeeb0 100755
--- a/deps/cjs-module-lexer/package.json
+++ b/deps/cjs-module-lexer/package.json
@@ -1,6 +1,6 @@
{
"name": "cjs-module-lexer",
- "version": "1.1.0",
+ "version": "1.1.1",
"description": "Lexes CommonJS modules, returning their named exports metadata",
"main": "lexer.js",
"exports": {
diff --git a/doc/api/esm.md b/doc/api/esm.md
index cc390aeb24de62..7212309a02c551 100644
--- a/doc/api/esm.md
+++ b/doc/api/esm.md
@@ -1324,7 +1324,7 @@ success!
[`transformSource` hook]: #esm_transformsource_source_context_defaulttransformsource
[`string`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String
[`util.TextDecoder`]: util.md#util_class_util_textdecoder
-[cjs-module-lexer]: https://github.com/guybedford/cjs-module-lexer/tree/1.1.0
+[cjs-module-lexer]: https://github.com/guybedford/cjs-module-lexer/tree/1.1.1
[custom https loader]: #esm_https_loader
[special scheme]: https://url.spec.whatwg.org/#special-scheme
[the official standard format]: https://tc39.github.io/ecma262/#sec-modules
From 51e7a33d54c25aff42e4c825fdab733e6e484729 Mon Sep 17 00:00:00 2001
From: Antoine du Hamel
Date: Sat, 27 Mar 2021 19:22:03 +0100
Subject: [PATCH 12/41] tools,doc: add "legacy" badge in the TOC
PR-URL: https://github.com/nodejs/node/pull/37949
Reviewed-By: Anna Henningsen
Reviewed-By: James M Snell
---
doc/api_assets/style.css | 8 ++++++++
tools/doc/html.js | 6 +++---
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/doc/api_assets/style.css b/doc/api_assets/style.css
index 04299595ca80d6..3176b7db252049 100644
--- a/doc/api_assets/style.css
+++ b/doc/api_assets/style.css
@@ -515,6 +515,14 @@ hr {
padding: 1px 3px;
border-radius: 3px;
}
+#toc .stability_3::after {
+ background-color: var(--blue1);
+ color: var(--white);
+ content: "legacy";
+ margin-left: .25rem;
+ padding: 1px 3px;
+ border-radius: 3px;
+}
#apicontent li {
margin-bottom: .5rem;
diff --git a/tools/doc/html.js b/tools/doc/html.js
index 9089ce7e443232..671cb4adf62065 100644
--- a/tools/doc/html.js
+++ b/tools/doc/html.js
@@ -265,9 +265,9 @@ function preprocessElements({ filename }) {
const [, prefix, number, explication] =
text.value.match(STABILITY_RE);
- const isStabilityIndex =
- index - 2 === headingIndex || // General.
- index - 3 === headingIndex; // With api_metadata block.
+ // Stability indices are never more than 3 nodes away from their
+ // heading.
+ const isStabilityIndex = index - headingIndex <= 3;
if (heading && isStabilityIndex) {
heading.stability = number;
From 062541aae5b49eac463ee3b3151521bff0963752 Mon Sep 17 00:00:00 2001
From: Anna Henningsen
Date: Fri, 26 Mar 2021 21:48:39 +0100
Subject: [PATCH 13/41] http2: add specific error code for custom frames
As suggested in
https://github.com/nodejs/node/issues/37849#issuecomment-805049586
improve the error presented when encountering a large number of
invalid frames by giving this situation a specific error code (which we
should have had from the beginning).
PR-URL: https://github.com/nodejs/node/pull/37936
Reviewed-By: James M Snell
Reviewed-By: Yongsheng Zhang
---
doc/api/errors.md | 9 +++
lib/internal/errors.js | 1 +
lib/internal/http2/core.js | 4 +-
lib/internal/http2/util.js | 13 +++--
src/node_http2.cc | 58 ++++++++++++-------
src/node_http2.h | 8 ++-
.../test-http2-empty-frame-without-eof.js | 8 ++-
7 files changed, 70 insertions(+), 31 deletions(-)
diff --git a/doc/api/errors.md b/doc/api/errors.md
index 453c0616935947..8b3bc962c8a940 100644
--- a/doc/api/errors.md
+++ b/doc/api/errors.md
@@ -1364,6 +1364,15 @@ When setting the priority for an HTTP/2 stream, the stream may be marked as
a dependency for a parent stream. This error code is used when an attempt is
made to mark a stream and dependent of itself.
+
+### `ERR_HTTP2_TOO_MANY_INVALID_FRAMES`
+
+
+The limit of acceptable invalid HTTP/2 protocol frames sent by the peer,
+as specified through the `maxSessionInvalidFrames` option, has been exceeded.
+
### `ERR_HTTP2_TRAILERS_ALREADY_SENT`
diff --git a/lib/internal/errors.js b/lib/internal/errors.js
index 08bfe0875669f9..5180f6792e620c 100644
--- a/lib/internal/errors.js
+++ b/lib/internal/errors.js
@@ -971,6 +971,7 @@ E('ERR_HTTP2_STREAM_CANCEL', function(error) {
E('ERR_HTTP2_STREAM_ERROR', 'Stream closed with error code %s', Error);
E('ERR_HTTP2_STREAM_SELF_DEPENDENCY',
'A stream cannot depend on itself', Error);
+E('ERR_HTTP2_TOO_MANY_INVALID_FRAMES', 'Too many invalid HTTP/2 frames', Error);
E('ERR_HTTP2_TRAILERS_ALREADY_SENT',
'Trailing headers have already been sent', Error);
E('ERR_HTTP2_TRAILERS_NOT_READY',
diff --git a/lib/internal/http2/core.js b/lib/internal/http2/core.js
index bfdb45ab7ba216..6c938be3bae038 100644
--- a/lib/internal/http2/core.js
+++ b/lib/internal/http2/core.js
@@ -777,9 +777,9 @@ const setAndValidatePriorityOptions = hideStackFrames((options) => {
// When an error occurs internally at the binding level, immediately
// destroy the session.
-function onSessionInternalError(code) {
+function onSessionInternalError(integerCode, customErrorCode) {
if (this[kOwner] !== undefined)
- this[kOwner].destroy(new NghttpError(code));
+ this[kOwner].destroy(new NghttpError(integerCode, customErrorCode));
}
function settingsCallback(cb, ack, duration) {
diff --git a/lib/internal/http2/util.js b/lib/internal/http2/util.js
index bde89f8a3d1869..f8252fffba65f5 100644
--- a/lib/internal/http2/util.js
+++ b/lib/internal/http2/util.js
@@ -29,6 +29,7 @@ const {
ERR_INVALID_HTTP_TOKEN
},
addCodeToName,
+ getMessage,
hideStackFrames
} = require('internal/errors');
@@ -543,11 +544,13 @@ function mapToHeaders(map,
}
class NghttpError extends Error {
- constructor(ret) {
- super(binding.nghttp2ErrorString(ret));
- this.code = 'ERR_HTTP2_ERROR';
- this.errno = ret;
- addCodeToName(this, super.name, 'ERR_HTTP2_ERROR');
+ constructor(integerCode, customErrorCode) {
+ super(customErrorCode ?
+ getMessage(customErrorCode, [], null) :
+ binding.nghttp2ErrorString(integerCode));
+ this.code = customErrorCode || 'ERR_HTTP2_ERROR';
+ this.errno = integerCode;
+ addCodeToName(this, super.name, this.code);
}
toString() {
diff --git a/src/node_http2.cc b/src/node_http2.cc
index 004bc8df22a567..fe512e17cd95d8 100644
--- a/src/node_http2.cc
+++ b/src/node_http2.cc
@@ -32,6 +32,7 @@ using v8::Integer;
using v8::Isolate;
using v8::Local;
using v8::MaybeLocal;
+using v8::NewStringType;
using v8::Number;
using v8::Object;
using v8::ObjectTemplate;
@@ -732,7 +733,7 @@ ssize_t Http2Session::OnMaxFrameSizePadding(size_t frameLen,
// various callback functions. Each of these will typically result in a call
// out to JavaScript so this particular function is rather hot and can be
// quite expensive. This is a potential performance optimization target later.
-ssize_t Http2Session::ConsumeHTTP2Data() {
+void Http2Session::ConsumeHTTP2Data() {
CHECK_NOT_NULL(stream_buf_.base);
CHECK_LE(stream_buf_offset_, stream_buf_.len);
size_t read_len = stream_buf_.len - stream_buf_offset_;
@@ -742,12 +743,14 @@ ssize_t Http2Session::ConsumeHTTP2Data() {
read_len,
nghttp2_session_want_read(session_.get()));
set_receive_paused(false);
+ custom_recv_error_code_ = nullptr;
ssize_t ret =
nghttp2_session_mem_recv(session_.get(),
reinterpret_cast(stream_buf_.base) +
stream_buf_offset_,
read_len);
CHECK_NE(ret, NGHTTP2_ERR_NOMEM);
+ CHECK_IMPLIES(custom_recv_error_code_ != nullptr, ret < 0);
if (is_receive_paused()) {
CHECK(is_reading_stopped());
@@ -759,7 +762,7 @@ ssize_t Http2Session::ConsumeHTTP2Data() {
// Even if all bytes were received, a paused stream may delay the
// nghttp2_on_frame_recv_callback which may have an END_STREAM flag.
stream_buf_offset_ += ret;
- return ret;
+ goto done;
}
// We are done processing the current input chunk.
@@ -769,14 +772,34 @@ ssize_t Http2Session::ConsumeHTTP2Data() {
stream_buf_allocation_.clear();
stream_buf_ = uv_buf_init(nullptr, 0);
- if (ret < 0)
- return ret;
-
// Send any data that was queued up while processing the received data.
- if (!is_destroyed()) {
+ if (ret >= 0 && !is_destroyed()) {
SendPendingData();
}
- return ret;
+
+done:
+ if (UNLIKELY(ret < 0)) {
+ Isolate* isolate = env()->isolate();
+ Debug(this,
+ "fatal error receiving data: %d (%s)",
+ ret,
+ custom_recv_error_code_ != nullptr ?
+ custom_recv_error_code_ : "(no custom error code)");
+ Local args[] = {
+ Integer::New(isolate, static_cast(ret)),
+ Null(isolate)
+ };
+ if (custom_recv_error_code_ != nullptr) {
+ args[1] = String::NewFromUtf8(
+ isolate,
+ custom_recv_error_code_,
+ NewStringType::kInternalized).ToLocalChecked();
+ }
+ MakeCallback(
+ env()->http2session_on_error_function(),
+ arraysize(args),
+ args);
+ }
}
@@ -900,14 +923,17 @@ int Http2Session::OnInvalidFrame(nghttp2_session* handle,
int lib_error_code,
void* user_data) {
Http2Session* session = static_cast(user_data);
+ const uint32_t max_invalid_frames = session->js_fields_->max_invalid_frames;
Debug(session,
"invalid frame received (%u/%u), code: %d",
session->invalid_frame_count_,
- session->js_fields_->max_invalid_frames,
+ max_invalid_frames,
lib_error_code);
- if (session->invalid_frame_count_++ > session->js_fields_->max_invalid_frames)
+ if (session->invalid_frame_count_++ > max_invalid_frames) {
+ session->custom_recv_error_code_ = "ERR_HTTP2_TOO_MANY_INVALID_FRAMES";
return 1;
+ }
// If the error is fatal or if error code is ERR_STREAM_CLOSED... emit error
if (nghttp2_is_fatal(lib_error_code) ||
@@ -1286,6 +1312,7 @@ int Http2Session::HandleDataFrame(const nghttp2_frame* frame) {
stream->EmitRead(UV_EOF);
} else if (frame->hd.length == 0) {
if (invalid_frame_count_++ > js_fields_->max_invalid_frames) {
+ custom_recv_error_code_ = "ERR_HTTP2_TOO_MANY_INVALID_FRAMES";
Debug(this, "rejecting empty-frame-without-END_STREAM flood\n");
// Consider a flood of 0-length frames without END_STREAM an error.
return 1;
@@ -1470,7 +1497,7 @@ void Http2Session::OnStreamAfterWrite(WriteWrap* w, int status) {
ConsumeHTTP2Data();
}
- if (!is_write_scheduled()) {
+ if (!is_write_scheduled() && !is_destroyed()) {
// Schedule a new write if nghttp2 wants to send data.
MaybeScheduleWrite();
}
@@ -1798,21 +1825,12 @@ void Http2Session::OnStreamRead(ssize_t nread, const uv_buf_t& buf_) {
// offset of a DATA frame's data into the socket read buffer.
stream_buf_ = uv_buf_init(buf.data(), static_cast(nread));
- Isolate* isolate = env()->isolate();
-
// Store this so we can create an ArrayBuffer for read data from it.
// DATA frames will be emitted as slices of that ArrayBuffer to avoid having
// to copy memory.
stream_buf_allocation_ = std::move(buf);
- ssize_t ret = ConsumeHTTP2Data();
-
- if (UNLIKELY(ret < 0)) {
- Debug(this, "fatal error receiving data: %d", ret);
- Local arg = Integer::New(isolate, static_cast(ret));
- MakeCallback(env()->http2session_on_error_function(), 1, &arg);
- return;
- }
+ ConsumeHTTP2Data();
MaybeStopReading();
}
diff --git a/src/node_http2.h b/src/node_http2.h
index 9c7ffce2c41955..110528224f8f93 100644
--- a/src/node_http2.h
+++ b/src/node_http2.h
@@ -660,8 +660,9 @@ class Http2Session : public AsyncWrap,
// Indicates whether there currently exist outgoing buffers for this stream.
bool HasWritesOnSocketForStream(Http2Stream* stream);
- // Write data from stream_buf_ to the session
- ssize_t ConsumeHTTP2Data();
+ // Write data from stream_buf_ to the session.
+ // This will call the error callback if an error occurs.
+ void ConsumeHTTP2Data();
void MemoryInfo(MemoryTracker* tracker) const override;
SET_MEMORY_INFO_NAME(Http2Session)
@@ -895,6 +896,9 @@ class Http2Session : public AsyncWrap,
v8::Global stream_buf_ab_;
AllocatedBuffer stream_buf_allocation_;
size_t stream_buf_offset_ = 0;
+ // Custom error code for errors that originated inside one of the callbacks
+ // called by nghttp2_session_mem_recv.
+ const char* custom_recv_error_code_ = nullptr;
size_t max_outstanding_pings_ = kDefaultMaxPings;
std::queue> outstanding_pings_;
diff --git a/test/parallel/test-http2-empty-frame-without-eof.js b/test/parallel/test-http2-empty-frame-without-eof.js
index 02da78d940a92d..fe65f26bb31d49 100644
--- a/test/parallel/test-http2-empty-frame-without-eof.js
+++ b/test/parallel/test-http2-empty-frame-without-eof.js
@@ -26,8 +26,12 @@ async function main() {
stream.on('error', common.mustNotCall());
client.on('error', common.mustNotCall());
} else {
- stream.on('error', common.mustCall());
- client.on('error', common.mustCall());
+ const expected = {
+ code: 'ERR_HTTP2_TOO_MANY_INVALID_FRAMES',
+ message: 'Too many invalid HTTP/2 frames'
+ };
+ stream.on('error', common.expectsError(expected));
+ client.on('error', common.expectsError(expected));
}
stream.resume();
await once(stream, 'end');
From 8792c7c96b86dee046f897d459f218ae9a3068a9 Mon Sep 17 00:00:00 2001
From: Anna Henningsen
Date: Mon, 29 Mar 2021 13:57:47 +0200
Subject: [PATCH 14/41] doc: add missing events.on metadata
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This was missed in the original PR.
Refs: https://github.com/nodejs/node/pull/34912
PR-URL: https://github.com/nodejs/node/pull/37965
Reviewed-By: Michaël Zasso
Reviewed-By: Luigi Pinca
Reviewed-By: Colin Ihrig
Reviewed-By: Darshan Sen
Reviewed-By: Anto Aravinth
Reviewed-By: James M Snell
---
doc/api/events.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/doc/api/events.md b/doc/api/events.md
index cd2d7fc6137945..06e8203479fec8 100644
--- a/doc/api/events.md
+++ b/doc/api/events.md
@@ -849,6 +849,10 @@ const { getEventListeners, EventEmitter } = require('events');
added:
- v11.13.0
- v10.16.0
+changes:
+ - version: v15.0.0
+ pr-url: https://github.com/nodejs/node/pull/34912
+ description: The `signal` option is supported now.
-->
* `emitter` {EventEmitter}
From 669b81c68bd7b9befc9c55f364b802bce59abf74 Mon Sep 17 00:00:00 2001
From: Nitzan Uziely
Date: Sat, 13 Mar 2021 01:13:36 +0200
Subject: [PATCH 15/41] net,tls: add abort signal support to connect
Add documentation for net.connect AbortSignal,
and add the support to tls.connect as well
PR-URL: https://github.com/nodejs/node/pull/37735
Reviewed-By: Benjamin Gruenbaum
Reviewed-By: James M Snell
---
doc/api/net.md | 6 ++
lib/_tls_wrap.js | 2 +
test/parallel/test-http2-client-destroy.js | 45 +++++++++
test/parallel/test-https-abortcontroller.js | 55 +++++++++++
.../test-https-agent-abort-controller.js | 87 +++++++++++++++++
.../test-net-connect-abort-controller.js | 96 ++++++++++++++++++
.../test-tls-connect-abort-controller.js | 97 +++++++++++++++++++
7 files changed, 388 insertions(+)
create mode 100644 test/parallel/test-https-agent-abort-controller.js
create mode 100644 test/parallel/test-net-connect-abort-controller.js
create mode 100644 test/parallel/test-tls-connect-abort-controller.js
diff --git a/doc/api/net.md b/doc/api/net.md
index 231dde85428a9c..50ea9ab6c45bc3 100644
--- a/doc/api/net.md
+++ b/doc/api/net.md
@@ -496,6 +496,10 @@ it to interact with the client.
### `new net.Socket([options])`
* `options` {Object} Available options are:
@@ -508,6 +512,8 @@ added: v0.3.4
otherwise ignored. **Default:** `false`.
* `writable` {boolean} Allow writes on the socket when an `fd` is passed,
otherwise ignored. **Default:** `false`.
+ * `signal` {AbortSignal} An Abort signal that may be used to destroy the
+ socket.
* Returns: {net.Socket}
Creates a new socket object.
diff --git a/lib/_tls_wrap.js b/lib/_tls_wrap.js
index c31d69117c6bd4..869bbda42f7898 100644
--- a/lib/_tls_wrap.js
+++ b/lib/_tls_wrap.js
@@ -515,6 +515,7 @@ function TLSSocket(socket, opts) {
manualStart: true,
highWaterMark: tlsOptions.highWaterMark,
onread: !socket ? tlsOptions.onread : null,
+ signal: tlsOptions.signal,
}]);
// Proxy for API compatibility
@@ -1627,6 +1628,7 @@ exports.connect = function connect(...args) {
pskCallback: options.pskCallback,
highWaterMark: options.highWaterMark,
onread: options.onread,
+ signal: options.signal,
});
tlssock[kConnectOptions] = options;
diff --git a/test/parallel/test-http2-client-destroy.js b/test/parallel/test-http2-client-destroy.js
index 52b0744cd2190d..189a6f55a596da 100644
--- a/test/parallel/test-http2-client-destroy.js
+++ b/test/parallel/test-http2-client-destroy.js
@@ -240,3 +240,48 @@ const { getEventListeners } = require('events');
req.on('close', common.mustCall(() => server.close()));
}));
}
+
+
+// Destroy ClientHttpSession with AbortSignal
+{
+ function testH2ConnectAbort(secure) {
+ const server = secure ? h2.createSecureServer() : h2.createServer();
+ const controller = new AbortController();
+
+ server.on('stream', common.mustNotCall());
+ server.listen(0, common.mustCall(() => {
+ const { signal } = controller;
+ const protocol = secure ? 'https' : 'http';
+ const client = h2.connect(`${protocol}://localhost:${server.address().port}`, {
+ signal,
+ });
+ client.on('close', common.mustCall());
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 1);
+
+ client.on('error', common.mustCall(common.mustCall((err) => {
+ assert.strictEqual(err.code, 'ABORT_ERR');
+ assert.strictEqual(err.name, 'AbortError');
+ })));
+
+ const req = client.request({}, {});
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 1);
+
+ req.on('error', common.mustCall((err) => {
+ assert.strictEqual(err.code, 'ERR_HTTP2_STREAM_CANCEL');
+ assert.strictEqual(err.name, 'Error');
+ assert.strictEqual(req.aborted, false);
+ assert.strictEqual(req.destroyed, true);
+ }));
+ req.on('close', common.mustCall(() => server.close()));
+
+ assert.strictEqual(req.aborted, false);
+ assert.strictEqual(req.destroyed, false);
+ // Signal listener attached
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 1);
+
+ controller.abort();
+ }));
+ }
+ testH2ConnectAbort(false);
+ testH2ConnectAbort(true);
+}
diff --git a/test/parallel/test-https-abortcontroller.js b/test/parallel/test-https-abortcontroller.js
index 19aa9a6fca2bdf..420bf9217e8f5b 100644
--- a/test/parallel/test-https-abortcontroller.js
+++ b/test/parallel/test-https-abortcontroller.js
@@ -14,6 +14,7 @@ const options = {
cert: fixtures.readKey('agent1-cert.pem')
};
+// Check async post-aborted
(async () => {
const { port, server } = await new Promise((resolve) => {
const server = https.createServer(options, () => {});
@@ -38,3 +39,57 @@ const options = {
server.close();
}
})().then(common.mustCall());
+
+// Check sync post-aborted signal
+(async () => {
+ const { port, server } = await new Promise((resolve) => {
+ const server = https.createServer(options, () => {});
+ server.listen(0, () => resolve({ port: server.address().port, server }));
+ });
+ try {
+ const ac = new AbortController();
+ const { signal } = ac;
+ const req = https.request({
+ host: 'localhost',
+ port,
+ path: '/',
+ method: 'GET',
+ rejectUnauthorized: false,
+ signal,
+ });
+ assert.strictEqual(getEventListeners(ac.signal, 'abort').length, 1);
+ ac.abort();
+ const [ err ] = await once(req, 'error');
+ assert.strictEqual(err.name, 'AbortError');
+ assert.strictEqual(err.code, 'ABORT_ERR');
+ } finally {
+ server.close();
+ }
+})().then(common.mustCall());
+
+// Check pre-aborted signal
+(async () => {
+ const { port, server } = await new Promise((resolve) => {
+ const server = https.createServer(options, () => {});
+ server.listen(0, () => resolve({ port: server.address().port, server }));
+ });
+ try {
+ const ac = new AbortController();
+ const { signal } = ac;
+ ac.abort();
+ const req = https.request({
+ host: 'localhost',
+ port,
+ path: '/',
+ method: 'GET',
+ rejectUnauthorized: false,
+ signal,
+ });
+ assert.strictEqual(getEventListeners(ac.signal, 'abort').length, 0);
+ const [ err ] = await once(req, 'error');
+ assert.strictEqual(err.name, 'AbortError');
+ assert.strictEqual(err.code, 'ABORT_ERR');
+ } finally {
+ server.close();
+ }
+})().then(common.mustCall());
diff --git a/test/parallel/test-https-agent-abort-controller.js b/test/parallel/test-https-agent-abort-controller.js
new file mode 100644
index 00000000000000..14331e7036d66d
--- /dev/null
+++ b/test/parallel/test-https-agent-abort-controller.js
@@ -0,0 +1,87 @@
+'use strict';
+const common = require('../common');
+if (!common.hasCrypto)
+ common.skip('missing crypto');
+
+const assert = require('assert');
+const https = require('https');
+const { once } = require('events');
+const Agent = https.Agent;
+const fixtures = require('../common/fixtures');
+
+const { getEventListeners } = require('events');
+const agent = new Agent();
+
+const options = {
+ key: fixtures.readKey('agent1-key.pem'),
+ cert: fixtures.readKey('agent1-cert.pem')
+};
+
+const server = https.createServer(options);
+
+server.listen(0, common.mustCall(async () => {
+ const port = server.address().port;
+ const host = 'localhost';
+ const options = {
+ port: port,
+ host: host,
+ rejectUnauthorized: false,
+ _agentKey: agent.getName({ port, host })
+ };
+
+ async function postCreateConnection() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ const connection = agent.createConnection({ ...options, signal });
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 1);
+ ac.abort();
+ const [err] = await once(connection, 'error');
+ assert.strictEqual(err.name, 'AbortError');
+ }
+
+ async function preCreateConnection() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ ac.abort();
+ const connection = agent.createConnection({ ...options, signal });
+ const [err] = await once(connection, 'error');
+ assert.strictEqual(err.name, 'AbortError');
+ }
+
+
+ async function agentAsParam() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ const request = https.get({
+ port: server.address().port,
+ path: '/hello',
+ agent: agent,
+ signal,
+ });
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 1);
+ ac.abort();
+ const [err] = await once(request, 'error');
+ assert.strictEqual(err.name, 'AbortError');
+ }
+
+ async function agentAsParamPreAbort() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ ac.abort();
+ const request = https.get({
+ port: server.address().port,
+ path: '/hello',
+ agent: agent,
+ signal,
+ });
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 0);
+ const [err] = await once(request, 'error');
+ assert.strictEqual(err.name, 'AbortError');
+ }
+
+ await postCreateConnection();
+ await preCreateConnection();
+ await agentAsParam();
+ await agentAsParamPreAbort();
+ server.close();
+}));
diff --git a/test/parallel/test-net-connect-abort-controller.js b/test/parallel/test-net-connect-abort-controller.js
new file mode 100644
index 00000000000000..9c259cc3fc2c15
--- /dev/null
+++ b/test/parallel/test-net-connect-abort-controller.js
@@ -0,0 +1,96 @@
+'use strict';
+const common = require('../common');
+const net = require('net');
+const assert = require('assert');
+const server = net.createServer();
+const { getEventListeners, once } = require('events');
+
+const liveConnections = new Set();
+
+server.listen(0, common.mustCall(async () => {
+ const port = server.address().port;
+ const host = 'localhost';
+ const socketOptions = (signal) => ({ port, host, signal });
+ server.on('connection', (connection) => {
+ liveConnections.add(connection);
+ connection.on('close', () => {
+ liveConnections.delete(connection);
+ });
+ });
+
+ const assertAbort = async (socket, testName) => {
+ try {
+ await once(socket, 'close');
+ assert.fail(`close ${testName} should have thrown`);
+ } catch (err) {
+ assert.strictEqual(err.name, 'AbortError');
+ }
+ };
+
+ async function postAbort() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ const socket = net.connect(socketOptions(signal));
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 1);
+ ac.abort();
+ await assertAbort(socket, 'postAbort');
+ }
+
+ async function preAbort() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ ac.abort();
+ const socket = net.connect(socketOptions(signal));
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 0);
+ await assertAbort(socket, 'preAbort');
+ }
+
+ async function tickAbort() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ setImmediate(() => ac.abort());
+ const socket = net.connect(socketOptions(signal));
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 1);
+ await assertAbort(socket, 'tickAbort');
+ }
+
+ async function testConstructor() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ ac.abort();
+ const socket = new net.Socket(socketOptions(signal));
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 0);
+ await assertAbort(socket, 'testConstructor');
+ }
+
+ async function testConstructorPost() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ const socket = new net.Socket(socketOptions(signal));
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 1);
+ ac.abort();
+ await assertAbort(socket, 'testConstructorPost');
+ }
+
+ async function testConstructorPostTick() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ const socket = new net.Socket(socketOptions(signal));
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 1);
+ setImmediate(() => ac.abort());
+ await assertAbort(socket, 'testConstructorPostTick');
+ }
+
+ await postAbort();
+ await preAbort();
+ await tickAbort();
+ await testConstructor();
+ await testConstructorPost();
+ await testConstructorPostTick();
+
+ // Killing the net.socket without connecting hangs the server.
+ for (const connection of liveConnections) {
+ connection.destroy();
+ }
+ server.close(common.mustCall());
+}));
diff --git a/test/parallel/test-tls-connect-abort-controller.js b/test/parallel/test-tls-connect-abort-controller.js
new file mode 100644
index 00000000000000..f9a37f1603a7e3
--- /dev/null
+++ b/test/parallel/test-tls-connect-abort-controller.js
@@ -0,0 +1,97 @@
+'use strict';
+const common = require('../common');
+if (!common.hasCrypto)
+ common.skip('missing crypto');
+
+const tls = require('tls');
+const assert = require('assert');
+const fixtures = require('../common/fixtures');
+const { getEventListeners, once } = require('events');
+
+const serverOptions = {
+ key: fixtures.readKey('agent1-key.pem'),
+ cert: fixtures.readKey('agent1-cert.pem')
+};
+const server = tls.createServer(serverOptions);
+server.listen(0, common.mustCall(async () => {
+ const port = server.address().port;
+ const host = 'localhost';
+ const connectOptions = (signal) => ({
+ port,
+ host,
+ signal,
+ rejectUnauthorized: false,
+ });
+
+ const assertAbort = async (socket, testName) => {
+ try {
+ await once(socket, 'close');
+ assert.fail(`close ${testName} should have thrown`);
+ } catch (err) {
+ assert.strictEqual(err.name, 'AbortError');
+ }
+ };
+
+ async function postAbort() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ const socket = tls.connect(connectOptions(signal));
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 1);
+ ac.abort();
+ await assertAbort(socket, 'postAbort');
+ }
+
+ async function preAbort() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ ac.abort();
+ const socket = tls.connect(connectOptions(signal));
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 0);
+ await assertAbort(socket, 'preAbort');
+ }
+
+ async function tickAbort() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ const socket = tls.connect(connectOptions(signal));
+ setImmediate(() => ac.abort());
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 1);
+ await assertAbort(socket, 'tickAbort');
+ }
+
+ async function testConstructor() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ ac.abort();
+ const socket = new tls.TLSSocket(undefined, connectOptions(signal));
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 0);
+ await assertAbort(socket, 'testConstructor');
+ }
+
+ async function testConstructorPost() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ const socket = new tls.TLSSocket(undefined, connectOptions(signal));
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 1);
+ ac.abort();
+ await assertAbort(socket, 'testConstructorPost');
+ }
+
+ async function testConstructorPostTick() {
+ const ac = new AbortController();
+ const { signal } = ac;
+ const socket = new tls.TLSSocket(undefined, connectOptions(signal));
+ setImmediate(() => ac.abort());
+ assert.strictEqual(getEventListeners(signal, 'abort').length, 1);
+ await assertAbort(socket, 'testConstructorPostTick');
+ }
+
+ await postAbort();
+ await preAbort();
+ await tickAbort();
+ await testConstructor();
+ await testConstructorPost();
+ await testConstructorPostTick();
+
+ server.close(common.mustCall());
+}));
From a1123f0a29471169ede46ef2a582cd7f2f59ddf5 Mon Sep 17 00:00:00 2001
From: Nitzan Uziely
Date: Fri, 26 Mar 2021 19:30:00 +0300
Subject: [PATCH 16/41] readline: add AbortSignal support to interface
Add abort signal support to Interface
PR-URL: https://github.com/nodejs/node/pull/37932
Reviewed-By: Benjamin Gruenbaum
Reviewed-By: James M Snell
---
doc/api/readline.md | 5 +++
lib/readline.js | 19 +++++++-
test/parallel/test-readline-interface.js | 57 +++++++++++++++++++++++-
3 files changed, 79 insertions(+), 2 deletions(-)
diff --git a/doc/api/readline.md b/doc/api/readline.md
index 4a8d8f20ac03c6..5081dc713fe8a4 100644
--- a/doc/api/readline.md
+++ b/doc/api/readline.md
@@ -544,6 +544,9 @@ the current position of the cursor down.
+### `new net.SocketAddress([options])`
+
+
+* `options` {Object}
+ * `address` {string} The network address as either an IPv4 or IPv6 string.
+ **Default**: `'127.0.0.1'` if `family` is `'ipv4'`; `'::'` if `family` is
+ `'ipv6'`.
+ * `family` {string} One of either `'ipv4'` or 'ipv6'`. **Default**: `'ipv4'`.
+ * `flowlabel` {number} An IPv6 flow-label used only if `family` is `'ipv6'`.
+ * `port` {number} An IP port.
+
+### `socketaddress.address`
+
+
+* Type {string}
+
+### `socketaddress.family`
+
+
+* Type {string} Either `'ipv4'` or `'ipv6'`.
+
+### `socketaddress.flowlabel`
+
+
+* Type {number}
+
+### `socketaddress.port`
+
+
+* Type {number}
+
## Class: `net.Server`
-* `address` {string} An IPv4 or IPv6 address.
+* `address` {string|net.SocketAddress} An IPv4 or IPv6 address.
* `type` {string} Either `'ipv4'` or `'ipv6'`. **Default:** `'ipv4'`.
Adds a rule to block the given IP address.
@@ -79,8 +79,9 @@ Adds a rule to block the given IP address.
added: v15.0.0
-->
-* `start` {string} The starting IPv4 or IPv6 address in the range.
-* `end` {string} The ending IPv4 or IPv6 address in the range.
+* `start` {string|net.SocketAddress} The starting IPv4 or IPv6 address in the
+ range.
+* `end` {string|net.SocketAddress} The ending IPv4 or IPv6 address in the range.
* `type` {string} Either `'ipv4'` or `'ipv6'`. **Default:** `'ipv4'`.
Adds a rule to block a range of IP addresses from `start` (inclusive) to
@@ -91,7 +92,7 @@ Adds a rule to block a range of IP addresses from `start` (inclusive) to
added: v15.0.0
-->
-* `net` {string} The network IPv4 or IPv6 address.
+* `net` {string|net.SocketAddress} The network IPv4 or IPv6 address.
* `prefix` {number} The number of CIDR prefix bits. For IPv4, this
must be a value between `0` and `32`. For IPv6, this must be between
`0` and `128`.
@@ -104,7 +105,7 @@ Adds a rule to block a range of IP addresses specified as a subnet mask.
added: v15.0.0
-->
-* `address` {string} The IP address to check
+* `address` {string|net.SocketAddress} The IP address to check
* `type` {string} Either `'ipv4'` or `'ipv6'`. **Default:** `'ipv4'`.
* Returns: {boolean}
diff --git a/lib/internal/blocklist.js b/lib/internal/blocklist.js
index ecd1eec5bb92fc..a73f3f19de07ff 100644
--- a/lib/internal/blocklist.js
+++ b/lib/internal/blocklist.js
@@ -8,14 +8,17 @@ const {
const {
BlockList: BlockListHandle,
- AF_INET,
- AF_INET6,
} = internalBinding('block_list');
const {
customInspectSymbol: kInspect,
} = require('internal/util');
+const {
+ SocketAddress,
+ kHandle: kSocketAddressHandle,
+} = require('internal/socketaddress');
+
const {
JSTransferable,
kClone,
@@ -55,56 +58,76 @@ class BlockList extends JSTransferable {
}
addAddress(address, family = 'ipv4') {
- validateString(address, 'address');
- validateString(family, 'family');
- family = family.toLowerCase();
- if (family !== 'ipv4' && family !== 'ipv6')
- throw new ERR_INVALID_ARG_VALUE('family', family);
- const type = family === 'ipv4' ? AF_INET : AF_INET6;
- this[kHandle].addAddress(address, type);
+ if (!SocketAddress.isSocketAddress(address)) {
+ validateString(address, 'address');
+ validateString(family, 'family');
+ address = new SocketAddress({
+ address,
+ family,
+ });
+ }
+ this[kHandle].addAddress(address[kSocketAddressHandle]);
}
addRange(start, end, family = 'ipv4') {
- validateString(start, 'start');
- validateString(end, 'end');
- validateString(family, 'family');
- family = family.toLowerCase();
- if (family !== 'ipv4' && family !== 'ipv6')
- throw new ERR_INVALID_ARG_VALUE('family', family);
- const type = family === 'ipv4' ? AF_INET : AF_INET6;
- const ret = this[kHandle].addRange(start, end, type);
+ if (!SocketAddress.isSocketAddress(start)) {
+ validateString(start, 'start');
+ validateString(family, 'family');
+ start = new SocketAddress({
+ address: start,
+ family,
+ });
+ }
+ if (!SocketAddress.isSocketAddress(end)) {
+ validateString(end, 'end');
+ validateString(family, 'family');
+ end = new SocketAddress({
+ address: end,
+ family,
+ });
+ }
+ const ret = this[kHandle].addRange(
+ start[kSocketAddressHandle],
+ end[kSocketAddressHandle]);
if (ret === false)
throw new ERR_INVALID_ARG_VALUE('start', start, 'must come before end');
}
addSubnet(network, prefix, family = 'ipv4') {
- validateString(network, 'network');
- validateString(family, 'family');
- family = family.toLowerCase();
- let type;
- switch (family) {
+ if (!SocketAddress.isSocketAddress(network)) {
+ validateString(network, 'network');
+ validateString(family, 'family');
+ network = new SocketAddress({
+ address: network,
+ family,
+ });
+ }
+ switch (network.family) {
case 'ipv4':
- type = AF_INET;
validateInt32(prefix, 'prefix', 0, 32);
break;
case 'ipv6':
- type = AF_INET6;
validateInt32(prefix, 'prefix', 0, 128);
break;
- default:
- throw new ERR_INVALID_ARG_VALUE('family', family);
}
- this[kHandle].addSubnet(network, type, prefix);
+ this[kHandle].addSubnet(network[kSocketAddressHandle], prefix);
}
check(address, family = 'ipv4') {
- validateString(address, 'address');
- validateString(family, 'family');
- family = family.toLowerCase();
- if (family !== 'ipv4' && family !== 'ipv6')
- throw new ERR_INVALID_ARG_VALUE('family', family);
- const type = family === 'ipv4' ? AF_INET : AF_INET6;
- return Boolean(this[kHandle].check(address, type));
+ if (!SocketAddress.isSocketAddress(address)) {
+ validateString(address, 'address');
+ validateString(family, 'family');
+ try {
+ address = new SocketAddress({
+ address,
+ family,
+ });
+ } catch {
+ // Ignore the error. If it's not a valid address, return false.
+ return false;
+ }
+ }
+ return Boolean(this[kHandle].check(address[kSocketAddressHandle]));
}
get rules() {
diff --git a/lib/internal/socketaddress.js b/lib/internal/socketaddress.js
index d341abb297a69c..f3603e0521e96b 100644
--- a/lib/internal/socketaddress.js
+++ b/lib/internal/socketaddress.js
@@ -47,14 +47,16 @@ class SocketAddress extends JSTransferable {
constructor(options = {}) {
super();
validateObject(options, 'options');
+ let { family = 'ipv4' } = options;
const {
- family = 'ipv4',
address = (family === 'ipv4' ? '127.0.0.1' : '::'),
port = 0,
flowlabel = 0,
} = options;
let type;
+ if (typeof family?.toLowerCase === 'function')
+ family = family.toLowerCase();
switch (family) {
case 'ipv4':
type = AF_INET;
@@ -63,7 +65,7 @@ class SocketAddress extends JSTransferable {
type = AF_INET6;
break;
default:
- throw new ERR_INVALID_ARG_VALUE('options.family', family);
+ throw new ERR_INVALID_ARG_VALUE('options.family', options.family);
}
validateString(address, 'options.address');
@@ -150,4 +152,5 @@ ObjectSetPrototypeOf(InternalSocketAddress.prototype, SocketAddress.prototype);
module.exports = {
SocketAddress,
InternalSocketAddress,
+ kHandle,
};
diff --git a/src/node_sockaddr.cc b/src/node_sockaddr.cc
index e745589b1258ce..b15b6ab47194c1 100644
--- a/src/node_sockaddr.cc
+++ b/src/node_sockaddr.cc
@@ -392,18 +392,18 @@ SocketAddressBlockList::SocketAddressBlockList(
: parent_(parent) {}
void SocketAddressBlockList::AddSocketAddress(
- const SocketAddress& address) {
+ const std::shared_ptr& address) {
Mutex::ScopedLock lock(mutex_);
std::unique_ptr rule =
std::make_unique(address);
rules_.emplace_front(std::move(rule));
- address_rules_[address] = rules_.begin();
+ address_rules_[*address.get()] = rules_.begin();
}
void SocketAddressBlockList::RemoveSocketAddress(
- const SocketAddress& address) {
+ const std::shared_ptr& address) {
Mutex::ScopedLock lock(mutex_);
- auto it = address_rules_.find(address);
+ auto it = address_rules_.find(*address.get());
if (it != std::end(address_rules_)) {
rules_.erase(it->second);
address_rules_.erase(it);
@@ -411,8 +411,8 @@ void SocketAddressBlockList::RemoveSocketAddress(
}
void SocketAddressBlockList::AddSocketAddressRange(
- const SocketAddress& start,
- const SocketAddress& end) {
+ const std::shared_ptr& start,
+ const std::shared_ptr& end) {
Mutex::ScopedLock lock(mutex_);
std::unique_ptr rule =
std::make_unique(start, end);
@@ -420,7 +420,7 @@ void SocketAddressBlockList::AddSocketAddressRange(
}
void SocketAddressBlockList::AddSocketAddressMask(
- const SocketAddress& network,
+ const std::shared_ptr& network,
int prefix) {
Mutex::ScopedLock lock(mutex_);
std::unique_ptr rule =
@@ -428,7 +428,8 @@ void SocketAddressBlockList::AddSocketAddressMask(
rules_.emplace_front(std::move(rule));
}
-bool SocketAddressBlockList::Apply(const SocketAddress& address) {
+bool SocketAddressBlockList::Apply(
+ const std::shared_ptr& address) {
Mutex::ScopedLock lock(mutex_);
for (const auto& rule : rules_) {
if (rule->Apply(address))
@@ -438,59 +439,60 @@ bool SocketAddressBlockList::Apply(const SocketAddress& address) {
}
SocketAddressBlockList::SocketAddressRule::SocketAddressRule(
- const SocketAddress& address_)
+ const std::shared_ptr& address_)
: address(address_) {}
SocketAddressBlockList::SocketAddressRangeRule::SocketAddressRangeRule(
- const SocketAddress& start_,
- const SocketAddress& end_)
+ const std::shared_ptr& start_,
+ const std::shared_ptr& end_)
: start(start_),
end(end_) {}
SocketAddressBlockList::SocketAddressMaskRule::SocketAddressMaskRule(
- const SocketAddress& network_,
+ const std::shared_ptr& network_,
int prefix_)
: network(network_),
prefix(prefix_) {}
bool SocketAddressBlockList::SocketAddressRule::Apply(
- const SocketAddress& address) {
- return this->address.is_match(address);
+ const std::shared_ptr& address) {
+ return this->address->is_match(*address.get());
}
std::string SocketAddressBlockList::SocketAddressRule::ToString() {
std::string ret = "Address: ";
- ret += address.family() == AF_INET ? "IPv4" : "IPv6";
+ ret += address->family() == AF_INET ? "IPv4" : "IPv6";
ret += " ";
- ret += address.address();
+ ret += address->address();
return ret;
}
bool SocketAddressBlockList::SocketAddressRangeRule::Apply(
- const SocketAddress& address) {
- return address >= start && address <= end;
+ const std::shared_ptr& address) {
+ return *address.get() >= *start.get() &&
+ *address.get() <= *end.get();
}
std::string SocketAddressBlockList::SocketAddressRangeRule::ToString() {
std::string ret = "Range: ";
- ret += start.family() == AF_INET ? "IPv4" : "IPv6";
+ ret += start->family() == AF_INET ? "IPv4" : "IPv6";
ret += " ";
- ret += start.address();
+ ret += start->address();
ret += "-";
- ret += end.address();
+ ret += end->address();
return ret;
}
bool SocketAddressBlockList::SocketAddressMaskRule::Apply(
- const SocketAddress& address) {
- return address.is_in_network(network, prefix);
+ const std::shared_ptr& address) {
+ return address->is_in_network(*network.get(), prefix);
}
std::string SocketAddressBlockList::SocketAddressMaskRule::ToString() {
std::string ret = "Subnet: ";
- ret += network.family() == AF_INET ? "IPv4" : "IPv6";
+ ret += network->family() == AF_INET ? "IPv4" : "IPv6";
ret += " ";
- ret += network.address();
+ ret += network->address();
ret += "/" + std::to_string(prefix);
return ret;
}
@@ -591,20 +593,11 @@ void SocketAddressBlockListWrap::AddAddress(
SocketAddressBlockListWrap* wrap;
ASSIGN_OR_RETURN_UNWRAP(&wrap, args.Holder());
- CHECK(args[0]->IsString());
- CHECK(args[1]->IsInt32());
-
- sockaddr_storage address;
- Utf8Value value(args.GetIsolate(), args[0]);
- int32_t family;
- if (!args[1]->Int32Value(env->context()).To(&family))
- return;
-
- if (!SocketAddress::ToSockAddr(family, *value, 0, &address))
- return;
+ CHECK(SocketAddressBase::HasInstance(env, args[0]));
+ SocketAddressBase* addr;
+ ASSIGN_OR_RETURN_UNWRAP(&addr, args[0]);
- wrap->blocklist_->AddSocketAddress(
- SocketAddress(reinterpret_cast(&address)));
+ wrap->blocklist_->AddSocketAddress(addr->address());
args.GetReturnValue().Set(true);
}
@@ -615,30 +608,21 @@ void SocketAddressBlockListWrap::AddRange(
SocketAddressBlockListWrap* wrap;
ASSIGN_OR_RETURN_UNWRAP(&wrap, args.Holder());
- CHECK(args[0]->IsString());
- CHECK(args[1]->IsString());
- CHECK(args[2]->IsInt32());
-
- sockaddr_storage address[2];
- Utf8Value start(args.GetIsolate(), args[0]);
- Utf8Value end(args.GetIsolate(), args[1]);
- int32_t family;
- if (!args[2]->Int32Value(env->context()).To(&family))
- return;
-
- if (!SocketAddress::ToSockAddr(family, *start, 0, &address[0]) ||
- !SocketAddress::ToSockAddr(family, *end, 0, &address[1])) {
- return;
- }
+ CHECK(SocketAddressBase::HasInstance(env, args[0]));
+ CHECK(SocketAddressBase::HasInstance(env, args[1]));
- SocketAddress start_addr(reinterpret_cast(&address[0]));
- SocketAddress end_addr(reinterpret_cast(&address[1]));
+ SocketAddressBase* start_addr;
+ SocketAddressBase* end_addr;
+ ASSIGN_OR_RETURN_UNWRAP(&start_addr, args[0]);
+ ASSIGN_OR_RETURN_UNWRAP(&end_addr, args[1]);
// Starting address must come before the end address
- if (start_addr > end_addr)
+ if (*start_addr->address().get() > *end_addr->address().get())
return args.GetReturnValue().Set(false);
- wrap->blocklist_->AddSocketAddressRange(start_addr, end_addr);
+ wrap->blocklist_->AddSocketAddressRange(
+ start_addr->address(),
+ end_addr->address());
args.GetReturnValue().Set(true);
}
@@ -649,29 +633,22 @@ void SocketAddressBlockListWrap::AddSubnet(
SocketAddressBlockListWrap* wrap;
ASSIGN_OR_RETURN_UNWRAP(&wrap, args.Holder());
- CHECK(args[0]->IsString());
+ CHECK(SocketAddressBase::HasInstance(env, args[0]));
CHECK(args[1]->IsInt32());
- CHECK(args[2]->IsInt32());
- sockaddr_storage address;
- Utf8Value network(args.GetIsolate(), args[0]);
- int32_t family;
+ SocketAddressBase* addr;
+ ASSIGN_OR_RETURN_UNWRAP(&addr, args[0]);
+
int32_t prefix;
- if (!args[1]->Int32Value(env->context()).To(&family) ||
- !args[2]->Int32Value(env->context()).To(&prefix)) {
+ if (!args[1]->Int32Value(env->context()).To(&prefix)) {
return;
}
- if (!SocketAddress::ToSockAddr(family, *network, 0, &address))
- return;
-
- CHECK_IMPLIES(family == AF_INET, prefix <= 32);
- CHECK_IMPLIES(family == AF_INET6, prefix <= 128);
+ CHECK_IMPLIES(addr->address()->family() == AF_INET, prefix <= 32);
+ CHECK_IMPLIES(addr->address()->family() == AF_INET6, prefix <= 128);
CHECK_GE(prefix, 0);
- wrap->blocklist_->AddSocketAddressMask(
- SocketAddress(reinterpret_cast(&address)),
- prefix);
+ wrap->blocklist_->AddSocketAddressMask(addr->address(), prefix);
args.GetReturnValue().Set(true);
}
@@ -682,21 +659,11 @@ void SocketAddressBlockListWrap::Check(
SocketAddressBlockListWrap* wrap;
ASSIGN_OR_RETURN_UNWRAP(&wrap, args.Holder());
- CHECK(args[0]->IsString());
- CHECK(args[1]->IsInt32());
+ CHECK(SocketAddressBase::HasInstance(env, args[0]));
+ SocketAddressBase* addr;
+ ASSIGN_OR_RETURN_UNWRAP(&addr, args[0]);
- sockaddr_storage address;
- Utf8Value value(args.GetIsolate(), args[0]);
- int32_t family;
- if (!args[1]->Int32Value(env->context()).To(&family))
- return;
-
- if (!SocketAddress::ToSockAddr(family, *value, 0, &address))
- return;
-
- args.GetReturnValue().Set(
- wrap->blocklist_->Apply(
- SocketAddress(reinterpret_cast(&address))));
+ args.GetReturnValue().Set(wrap->blocklist_->Apply(addr->address()));
}
void SocketAddressBlockListWrap::GetRules(
@@ -869,7 +836,6 @@ void SocketAddressBase::Detail(const FunctionCallbackInfo& args) {
}
void SocketAddressBase::GetFlowLabel(const FunctionCallbackInfo& args) {
- Environment* env = Environment::GetCurrent(args);
SocketAddressBase* base;
ASSIGN_OR_RETURN_UNWRAP(&base, args.Holder());
args.GetReturnValue().Set(base->address_->flow_label());
diff --git a/src/node_sockaddr.h b/src/node_sockaddr.h
index 62dcab6badd2c1..704fe0c5116f8f 100644
--- a/src/node_sockaddr.h
+++ b/src/node_sockaddr.h
@@ -168,6 +168,10 @@ class SocketAddressBase : public BaseObject {
v8::Local wrap,
std::shared_ptr address);
+ inline const std::shared_ptr& address() const {
+ return address_;
+ }
+
void MemoryInfo(MemoryTracker* tracker) const override;
SET_MEMORY_INFO_NAME(SocketAddressBase);
SET_SELF_SIZE(SocketAddressBase);
@@ -246,38 +250,36 @@ class SocketAddressBlockList : public MemoryRetainer {
std::shared_ptr parent = {});
~SocketAddressBlockList() = default;
- void AddSocketAddress(
- const SocketAddress& address);
+ void AddSocketAddress(const std::shared_ptr& address);
- void RemoveSocketAddress(
- const SocketAddress& address);
+ void RemoveSocketAddress(const std::shared_ptr& address);
void AddSocketAddressRange(
- const SocketAddress& start,
- const SocketAddress& end);
+ const std::shared_ptr& start,
+ const std::shared_ptr& end);
void AddSocketAddressMask(
- const SocketAddress& address,
+ const std::shared_ptr& address,
int prefix);
- bool Apply(const SocketAddress& address);
+ bool Apply(const std::shared_ptr& address);
size_t size() const { return rules_.size(); }
v8::MaybeLocal ListRules(Environment* env);
struct Rule : public MemoryRetainer {
- virtual bool Apply(const SocketAddress& address) = 0;
+ virtual bool Apply(const std::shared_ptr& address) = 0;
inline v8::MaybeLocal ToV8String(Environment* env);
virtual std::string ToString() = 0;
};
struct SocketAddressRule final : Rule {
- SocketAddress address;
+ std::shared_ptr address;
- explicit SocketAddressRule(const SocketAddress& address);
+ explicit SocketAddressRule(const std::shared_ptr& address);
- bool Apply(const SocketAddress& address) override;
+ bool Apply(const std::shared_ptr& address) override;
std::string ToString() override;
void MemoryInfo(node::MemoryTracker* tracker) const override;
@@ -286,14 +288,14 @@ class SocketAddressBlockList : public MemoryRetainer {
};
struct SocketAddressRangeRule final : Rule {
- SocketAddress start;
- SocketAddress end;
+ std::shared_ptr start;
+ std::shared_ptr end;
SocketAddressRangeRule(
- const SocketAddress& start,
- const SocketAddress& end);
+ const std::shared_ptr& start,
+ const std::shared_ptr& end);
- bool Apply(const SocketAddress& address) override;
+ bool Apply(const std::shared_ptr& address) override;
std::string ToString() override;
void MemoryInfo(node::MemoryTracker* tracker) const override;
@@ -302,14 +304,14 @@ class SocketAddressBlockList : public MemoryRetainer {
};
struct SocketAddressMaskRule final : Rule {
- SocketAddress network;
+ std::shared_ptr network;
int prefix;
SocketAddressMaskRule(
- const SocketAddress& address,
+ const std::shared_ptr& address,
int prefix);
- bool Apply(const SocketAddress& address) override;
+ bool Apply(const std::shared_ptr& address) override;
std::string ToString() override;
void MemoryInfo(node::MemoryTracker* tracker) const override;
diff --git a/test/cctest/test_sockaddr.cc b/test/cctest/test_sockaddr.cc
index 036dfae78a5ed2..bd80d59f821e5d 100644
--- a/test/cctest/test_sockaddr.cc
+++ b/test/cctest/test_sockaddr.cc
@@ -197,8 +197,12 @@ TEST(SocketAddressBlockList, Simple) {
sockaddr_storage storage[2];
SocketAddress::ToSockAddr(AF_INET, "10.0.0.1", 0, &storage[0]);
SocketAddress::ToSockAddr(AF_INET, "10.0.0.2", 0, &storage[1]);
- SocketAddress addr1(reinterpret_cast(&storage[0]));
- SocketAddress addr2(reinterpret_cast(&storage[1]));
+ std::shared_ptr addr1 =
+ std::make_shared(
+ reinterpret_cast(&storage[0]));
+ std::shared_ptr addr2 =
+ std::make_shared(
+ reinterpret_cast(&storage[1]));
bl.AddSocketAddress(addr1);
bl.AddSocketAddress(addr2);
diff --git a/test/parallel/test-blocklist.js b/test/parallel/test-blocklist.js
index 18b5e550bf322c..1f54c92621a257 100644
--- a/test/parallel/test-blocklist.js
+++ b/test/parallel/test-blocklist.js
@@ -2,7 +2,10 @@
require('../common');
-const { BlockList } = require('net');
+const {
+ BlockList,
+ SocketAddress,
+} = require('net');
const assert = require('assert');
const util = require('util');
@@ -65,6 +68,36 @@ const util = require('util');
assert(!blockList.check('::1', 'ipv6'));
}
+{
+ const blockList = new BlockList();
+ const sa1 = new SocketAddress({ address: '1.1.1.1' });
+ const sa2 = new SocketAddress({
+ address: '8592:757c:efae:4e45:fb5d:d62a:0d00:8e17',
+ family: 'ipv6'
+ });
+ const sa3 = new SocketAddress({ address: '1.1.1.2' });
+
+ blockList.addAddress(sa1);
+ blockList.addAddress(sa2);
+ blockList.addAddress('::ffff:1.1.1.2', 'ipv6');
+
+ assert(blockList.check('1.1.1.1'));
+ assert(blockList.check(sa1));
+ assert(!blockList.check('1.1.1.1', 'ipv6'));
+ assert(!blockList.check('8592:757c:efae:4e45:fb5d:d62a:0d00:8e17'));
+ assert(blockList.check('8592:757c:efae:4e45:fb5d:d62a:0d00:8e17', 'ipv6'));
+ assert(blockList.check(sa2));
+
+ assert(blockList.check('::ffff:1.1.1.1', 'ipv6'));
+ assert(blockList.check('::ffff:1.1.1.1', 'IPV6'));
+
+ assert(blockList.check('1.1.1.2'));
+ assert(blockList.check(sa3));
+
+ assert(!blockList.check('1.2.3.4'));
+ assert(!blockList.check('::1', 'ipv6'));
+}
+
{
const blockList = new BlockList();
blockList.addRange('1.1.1.1', '1.1.1.10');
@@ -83,6 +116,29 @@ const util = require('util');
assert(!blockList.check('::10', 'ipv6'));
}
+{
+ const blockList = new BlockList();
+ const sa1 = new SocketAddress({ address: '1.1.1.1' });
+ const sa2 = new SocketAddress({ address: '1.1.1.10' });
+ const sa3 = new SocketAddress({ address: '::1', family: 'ipv6' });
+ const sa4 = new SocketAddress({ address: '::f', family: 'ipv6' });
+
+ blockList.addRange(sa1, sa2);
+ blockList.addRange(sa3, sa4);
+
+ assert(!blockList.check('1.1.1.0'));
+ for (let n = 1; n <= 10; n++)
+ assert(blockList.check(`1.1.1.${n}`));
+ assert(!blockList.check('1.1.1.11'));
+
+ assert(!blockList.check('::0', 'ipv6'));
+ for (let n = 0x1; n <= 0xf; n++) {
+ assert(blockList.check(`::${n.toString(16)}`, 'ipv6'),
+ `::${n.toString(16)} check failed`);
+ }
+ assert(!blockList.check('::10', 'ipv6'));
+}
+
{
const blockList = new BlockList();
blockList.addSubnet('1.1.1.0', 16);
@@ -98,6 +154,23 @@ const util = require('util');
assert(!blockList.check('8592:757c:efae:4f45::f', 'ipv6'));
}
+{
+ const blockList = new BlockList();
+ const sa1 = new SocketAddress({ address: '1.1.1.0' });
+ const sa2 = new SocketAddress({ address: '1.1.1.1' });
+ blockList.addSubnet(sa1, 16);
+ blockList.addSubnet('8592:757c:efae:4e45::', 64, 'ipv6');
+
+ assert(blockList.check('1.1.0.1'));
+ assert(blockList.check(sa2));
+ assert(!blockList.check('1.2.0.1'));
+ assert(blockList.check('::ffff:1.1.0.1', 'ipv6'));
+
+ assert(blockList.check('8592:757c:efae:4e45:f::', 'ipv6'));
+ assert(blockList.check('8592:757c:efae:4e45::f', 'ipv6'));
+ assert(!blockList.check('8592:757c:efae:4f45::f', 'ipv6'));
+}
+
{
const blockList = new BlockList();
blockList.addAddress('1.1.1.1');
@@ -110,7 +183,6 @@ const util = require('util');
'Address: IPv4 1.1.1.1'
];
assert.deepStrictEqual(blockList.rules, rulesCheck);
- console.log(blockList);
assert(blockList.check('1.1.1.1'));
assert(blockList.check('10.0.0.5'));
@@ -145,23 +217,27 @@ const util = require('util');
{
const blockList = new BlockList();
assert.throws(() => blockList.addSubnet(1), /ERR_INVALID_ARG_TYPE/);
- assert.throws(() => blockList.addSubnet('', ''), /ERR_INVALID_ARG_TYPE/);
- assert.throws(() => blockList.addSubnet('', NaN), /ERR_OUT_OF_RANGE/);
+ assert.throws(() => blockList.addSubnet('1.1.1.1', ''),
+ /ERR_INVALID_ARG_TYPE/);
+ assert.throws(() => blockList.addSubnet('1.1.1.1', NaN), /ERR_OUT_OF_RANGE/);
assert.throws(() => blockList.addSubnet('', 1, 1), /ERR_INVALID_ARG_TYPE/);
assert.throws(() => blockList.addSubnet('', 1, ''), /ERR_INVALID_ARG_VALUE/);
- assert.throws(() => blockList.addSubnet('', -1, 'ipv4'), /ERR_OUT_OF_RANGE/);
- assert.throws(() => blockList.addSubnet('', 33, 'ipv4'), /ERR_OUT_OF_RANGE/);
+ assert.throws(() => blockList.addSubnet('1.1.1.1', -1, 'ipv4'),
+ /ERR_OUT_OF_RANGE/);
+ assert.throws(() => blockList.addSubnet('1.1.1.1', 33, 'ipv4'),
+ /ERR_OUT_OF_RANGE/);
- assert.throws(() => blockList.addSubnet('', -1, 'ipv6'), /ERR_OUT_OF_RANGE/);
- assert.throws(() => blockList.addSubnet('', 129, 'ipv6'), /ERR_OUT_OF_RANGE/);
+ assert.throws(() => blockList.addSubnet('::', -1, 'ipv6'),
+ /ERR_OUT_OF_RANGE/);
+ assert.throws(() => blockList.addSubnet('::', 129, 'ipv6'),
+ /ERR_OUT_OF_RANGE/);
}
{
const blockList = new BlockList();
assert.throws(() => blockList.check(1), /ERR_INVALID_ARG_TYPE/);
assert.throws(() => blockList.check('', 1), /ERR_INVALID_ARG_TYPE/);
- assert.throws(() => blockList.check('', ''), /ERR_INVALID_ARG_VALUE/);
}
{
diff --git a/tools/doc/type-parser.js b/tools/doc/type-parser.js
index c53628679594d4..a77a93a3008451 100644
--- a/tools/doc/type-parser.js
+++ b/tools/doc/type-parser.js
@@ -175,6 +175,7 @@ const customTypesMap = {
'net.BlockList': 'net.html#net_class_net_blocklist',
'net.Server': 'net.html#net_class_net_server',
'net.Socket': 'net.html#net_class_net_socket',
+ 'net.SocketAddress': 'net.html#net_class_net_socketaddress',
'NodeEventTarget':
'events.html#events_class_nodeeventtarget',
From 4d50975cd7357787761e3ddd89e51bf2ef6bfa0a Mon Sep 17 00:00:00 2001
From: Darkripper214
Date: Thu, 1 Apr 2021 00:28:25 +0800
Subject: [PATCH 24/41] test: improve clarity of ALS-enable-disable.js
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The last als.run() will reactivate the als,
hence the test should test for getting the object,
not undefined
PR-URL: https://github.com/nodejs/node/pull/38008
Reviewed-By: Gerhard Stöbich
Reviewed-By: James M Snell
Reviewed-By: Colin Ihrig
---
test/async-hooks/test-async-local-storage-enable-disable.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/test/async-hooks/test-async-local-storage-enable-disable.js b/test/async-hooks/test-async-local-storage-enable-disable.js
index 15ab2f5d9ebbb2..c7248d6cec40a8 100644
--- a/test/async-hooks/test-async-local-storage-enable-disable.js
+++ b/test/async-hooks/test-async-local-storage-enable-disable.js
@@ -24,8 +24,8 @@ asyncLocalStorage.run(new Map(), () => {
process.nextTick(() => {
assert.strictEqual(asyncLocalStorage.getStore(), undefined);
- asyncLocalStorage.run(new Map(), () => {
- assert.notStrictEqual(asyncLocalStorage.getStore(), undefined);
+ asyncLocalStorage.run(new Map().set('bar', 'foo'), () => {
+ assert.strictEqual(asyncLocalStorage.getStore().get('bar'), 'foo');
});
});
});
From ce140804739ee324cad45ced639505c3491c91b9 Mon Sep 17 00:00:00 2001
From: Peter Marshall
Date: Wed, 31 Mar 2021 11:54:48 +1100
Subject: [PATCH 25/41] doc: move psmarshall to collaborators emeriti
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
PR-URL: https://github.com/nodejs/node/pull/37994
Reviewed-By: Luigi Pinca
Reviewed-By: Michael Dawson
Reviewed-By: Colin Ihrig
Reviewed-By: Gerhard Stöbich
Reviewed-By: Rich Trott
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index ccc71e9014320d..13c1c80a8e1642 100644
--- a/README.md
+++ b/README.md
@@ -389,8 +389,6 @@ For information about the governance of the Node.js project, see
**Filip Skokan** <panva.ip@gmail.com>
* [PoojaDurgad](https://github.com/PoojaDurgad) -
**Pooja D P** <Pooja.D.P@ibm.com> (she/her)
-* [psmarshall](https://github.com/psmarshall) -
-**Peter Marshall** <petermarshall@chromium.org> (he/him)
* [puzpuzpuz](https://github.com/puzpuzpuz) -
**Andrey Pechkurov** <apechkurov@gmail.com> (he/him)
* [Qard](https://github.com/Qard) -
@@ -550,6 +548,8 @@ For information about the governance of the Node.js project, see
**Minqi Pan** <pmq2001@gmail.com>
* [princejwesley](https://github.com/princejwesley) -
**Prince John Wesley** <princejohnwesley@gmail.com>
+* [psmarshall](https://github.com/psmarshall) -
+**Peter Marshall** <petermarshall@chromium.org> (he/him)
* [rlidwka](https://github.com/rlidwka) -
**Alex Kocharin** <alex@kocharin.ru>
* [rmg](https://github.com/rmg) -
From ad7e34446ca500384a603ecd06889304d2340840 Mon Sep 17 00:00:00 2001
From: Darshan Sen
Date: Wed, 31 Mar 2021 18:44:52 +0530
Subject: [PATCH 26/41] fs: fix chown abort
This syncs the type assertion introduced in the referenced PR in the C++
side. Since chown, lchown, and fchown can accept -1 as a value for uid
and gid, we should also accept signed integers from the JS side.
Fixes: https://github.com/nodejs/node/issues/37995
Refs: https://github.com/nodejs/node/pull/31694
PR-URL: https://github.com/nodejs/node/pull/38004
Reviewed-By: Anna Henningsen
Reviewed-By: Rich Trott
---
lib/internal/fs/promises.js | 16 +++++++++-------
src/node_file.cc | 25 ++++++++++++-------------
test/parallel/test-fs-promises.js | 8 ++++----
3 files changed, 25 insertions(+), 24 deletions(-)
diff --git a/lib/internal/fs/promises.js b/lib/internal/fs/promises.js
index 5db2f7759c5238..1eac04665d85fc 100644
--- a/lib/internal/fs/promises.js
+++ b/lib/internal/fs/promises.js
@@ -8,6 +8,9 @@ const kReadFileBufferLength = 512 * 1024;
const kReadFileUnknownBufferLength = 64 * 1024;
const kWriteFileMaxChunkSize = 512 * 1024;
+// 2 ** 32 - 1
+const kMaxUserId = 4294967295;
+
const {
ArrayPrototypePush,
Error,
@@ -71,7 +74,6 @@ const {
validateBoolean,
validateBuffer,
validateInteger,
- validateUint32
} = require('internal/validators');
const pathModule = require('path');
const { promisify } = require('internal/util');
@@ -615,22 +617,22 @@ async function lchmod(path, mode) {
async function lchown(path, uid, gid) {
path = getValidatedPath(path);
- validateUint32(uid, 'uid');
- validateUint32(gid, 'gid');
+ validateInteger(uid, 'uid', -1, kMaxUserId);
+ validateInteger(gid, 'gid', -1, kMaxUserId);
return binding.lchown(pathModule.toNamespacedPath(path),
uid, gid, kUsePromises);
}
async function fchown(handle, uid, gid) {
- validateUint32(uid, 'uid');
- validateUint32(gid, 'gid');
+ validateInteger(uid, 'uid', -1, kMaxUserId);
+ validateInteger(gid, 'gid', -1, kMaxUserId);
return binding.fchown(handle.fd, uid, gid, kUsePromises);
}
async function chown(path, uid, gid) {
path = getValidatedPath(path);
- validateUint32(uid, 'uid');
- validateUint32(gid, 'gid');
+ validateInteger(uid, 'uid', -1, kMaxUserId);
+ validateInteger(gid, 'gid', -1, kMaxUserId);
return binding.chown(pathModule.toNamespacedPath(path),
uid, gid, kUsePromises);
}
diff --git a/src/node_file.cc b/src/node_file.cc
index 0eb882b49a88bf..7a61ce22af1c70 100644
--- a/src/node_file.cc
+++ b/src/node_file.cc
@@ -71,7 +71,6 @@ using v8::ObjectTemplate;
using v8::Promise;
using v8::String;
using v8::Symbol;
-using v8::Uint32;
using v8::Undefined;
using v8::Value;
@@ -2184,11 +2183,11 @@ static void Chown(const FunctionCallbackInfo& args) {
BufferValue path(env->isolate(), args[0]);
CHECK_NOT_NULL(*path);
- CHECK(args[1]->IsUint32());
- const uv_uid_t uid = static_cast(args[1].As()->Value());
+ CHECK(IsSafeJsInt(args[1]));
+ const uv_uid_t uid = static_cast(args[1].As()->Value());
- CHECK(args[2]->IsUint32());
- const uv_gid_t gid = static_cast(args[2].As()->Value());
+ CHECK(IsSafeJsInt(args[2]));
+ const uv_gid_t gid = static_cast(args[2].As()->Value());
FSReqBase* req_wrap_async = GetReqWrap(args, 3);
if (req_wrap_async != nullptr) { // chown(path, uid, gid, req)
@@ -2217,11 +2216,11 @@ static void FChown(const FunctionCallbackInfo& args) {
CHECK(args[0]->IsInt32());
const int fd = args[0].As()->Value();
- CHECK(args[1]->IsUint32());
- const uv_uid_t uid = static_cast(args[1].As()->Value());
+ CHECK(IsSafeJsInt(args[1]));
+ const uv_uid_t uid = static_cast(args[1].As()->Value());
- CHECK(args[2]->IsUint32());
- const uv_gid_t gid = static_cast(args[2].As()->Value());
+ CHECK(IsSafeJsInt(args[2]));
+ const uv_gid_t gid = static_cast(args[2].As()->Value());
FSReqBase* req_wrap_async = GetReqWrap(args, 3);
if (req_wrap_async != nullptr) { // fchown(fd, uid, gid, req)
@@ -2247,11 +2246,11 @@ static void LChown(const FunctionCallbackInfo& args) {
BufferValue path(env->isolate(), args[0]);
CHECK_NOT_NULL(*path);
- CHECK(args[1]->IsUint32());
- const uv_uid_t uid = static_cast(args[1].As()->Value());
+ CHECK(IsSafeJsInt(args[1]));
+ const uv_uid_t uid = static_cast(args[1].As()->Value());
- CHECK(args[2]->IsUint32());
- const uv_gid_t gid = static_cast(args[2].As()->Value());
+ CHECK(IsSafeJsInt(args[2]));
+ const uv_gid_t gid = static_cast(args[2].As()->Value());
FSReqBase* req_wrap_async = GetReqWrap(args, 3);
if (req_wrap_async != nullptr) { // lchown(path, uid, gid, req)
diff --git a/test/parallel/test-fs-promises.js b/test/parallel/test-fs-promises.js
index e01fc2ec6ad1e7..bb9a3257e11fae 100644
--- a/test/parallel/test-fs-promises.js
+++ b/test/parallel/test-fs-promises.js
@@ -191,24 +191,24 @@ async function getHandle(dest) {
assert.rejects(
async () => {
- await chown(dest, 1, -1);
+ await chown(dest, 1, -2);
},
{
code: 'ERR_OUT_OF_RANGE',
name: 'RangeError',
message: 'The value of "gid" is out of range. ' +
- 'It must be >= 0 && < 4294967296. Received -1'
+ 'It must be >= -1 && <= 4294967295. Received -2'
});
assert.rejects(
async () => {
- await handle.chown(1, -1);
+ await handle.chown(1, -2);
},
{
code: 'ERR_OUT_OF_RANGE',
name: 'RangeError',
message: 'The value of "gid" is out of range. ' +
- 'It must be >= 0 && < 4294967296. Received -1'
+ 'It must be >= -1 && <= 4294967295. Received -2'
});
await handle.close();
From 6ad0b6f0f5b942b19ad9a07302b879e46fed68f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?=
Date: Thu, 1 Apr 2021 17:31:45 +0200
Subject: [PATCH 27/41] src: fix error handling for CryptoJob::ToResult
PR-URL: https://github.com/nodejs/node/pull/37076
Reviewed-By: James M Snell
Reviewed-By: Anna Henningsen
Reviewed-By: Rich Trott
---
src/crypto/crypto_keygen.h | 11 ++++++----
src/crypto/crypto_keys.cc | 14 +++++++++----
src/crypto/crypto_util.h | 23 +++++++++++++++++++--
test/parallel/test-crypto-keygen.js | 31 +++++++++++++++++++++++++++++
4 files changed, 69 insertions(+), 10 deletions(-)
diff --git a/src/crypto/crypto_keygen.h b/src/crypto/crypto_keygen.h
index e96d850cee1b5a..59e7e2ce7cec4e 100644
--- a/src/crypto/crypto_keygen.h
+++ b/src/crypto/crypto_keygen.h
@@ -96,10 +96,13 @@ class KeyGenJob final : public CryptoJob {
Environment* env = AsyncWrap::env();
CryptoErrorStore* errors = CryptoJob::errors();
AdditionalParams* params = CryptoJob::params();
- if (status_ == KeyGenJobStatus::OK &&
- LIKELY(!KeyGenTraits::EncodeKey(env, params, result).IsNothing())) {
- *err = Undefined(env->isolate());
- return v8::Just(true);
+
+ if (status_ == KeyGenJobStatus::OK) {
+ v8::Maybe ret = KeyGenTraits::EncodeKey(env, params, result);
+ if (ret.IsJust() && ret.FromJust()) {
+ *err = Undefined(env->isolate());
+ }
+ return ret;
}
if (errors->Empty())
diff --git a/src/crypto/crypto_keys.cc b/src/crypto/crypto_keys.cc
index f72ca8322db960..4e8408086e9bff 100644
--- a/src/crypto/crypto_keys.cc
+++ b/src/crypto/crypto_keys.cc
@@ -602,6 +602,11 @@ size_t ManagedEVPPKey::size_of_public_key() const {
pkey_.get(), nullptr, &len) == 1) ? len : 0;
}
+// This maps true to Just(true) and false to Nothing().
+static inline Maybe Tristate(bool b) {
+ return b ? Just(true) : Nothing();
+}
+
Maybe ManagedEVPPKey::ToEncodedPublicKey(
Environment* env,
ManagedEVPPKey key,
@@ -613,9 +618,10 @@ Maybe ManagedEVPPKey::ToEncodedPublicKey(
// private key.
std::shared_ptr data =
KeyObjectData::CreateAsymmetric(kKeyTypePublic, std::move(key));
- return Just(KeyObjectHandle::Create(env, data).ToLocal(out));
+ return Tristate(KeyObjectHandle::Create(env, data).ToLocal(out));
}
- return Just(WritePublicKey(env, key.get(), config).ToLocal(out));
+
+ return Tristate(WritePublicKey(env, key.get(), config).ToLocal(out));
}
Maybe ManagedEVPPKey::ToEncodedPrivateKey(
@@ -627,10 +633,10 @@ Maybe ManagedEVPPKey::ToEncodedPrivateKey(
if (config.output_key_object_) {
std::shared_ptr data =
KeyObjectData::CreateAsymmetric(kKeyTypePrivate, std::move(key));
- return Just(KeyObjectHandle::Create(env, data).ToLocal(out));
+ return Tristate(KeyObjectHandle::Create(env, data).ToLocal(out));
}
- return Just(WritePrivateKey(env, key.get(), config).ToLocal(out));
+ return Tristate(WritePrivateKey(env, key.get(), config).ToLocal(out));
}
NonCopyableMaybe
diff --git a/src/crypto/crypto_util.h b/src/crypto/crypto_util.h
index 928c0cd38969be..27bb6310b884d1 100644
--- a/src/crypto/crypto_util.h
+++ b/src/crypto/crypto_util.h
@@ -349,9 +349,27 @@ class CryptoJob : public AsyncWrap, public ThreadPoolWork {
if (status == UV_ECANCELED) return;
v8::HandleScope handle_scope(env->isolate());
v8::Context::Scope context_scope(env->context());
+
+ // TODO(tniessen): Remove the exception handling logic here as soon as we
+ // can verify that no code path in ToResult will ever throw an exception.
+ v8::Local exception;
v8::Local args[2];
- if (ptr->ToResult(&args[0], &args[1]).FromJust())
+ {
+ node::errors::TryCatchScope try_catch(env);
+ v8::Maybe ret = ptr->ToResult(&args[0], &args[1]);
+ if (!ret.IsJust()) {
+ CHECK(try_catch.HasCaught());
+ exception = try_catch.Exception();
+ } else if (!ret.FromJust()) {
+ return;
+ }
+ }
+
+ if (exception.IsEmpty()) {
ptr->MakeCallback(env->ondone_string(), arraysize(args), args);
+ } else {
+ ptr->MakeCallback(env->ondone_string(), 1, &exception);
+ }
}
virtual v8::Maybe ToResult(
@@ -384,7 +402,8 @@ class CryptoJob : public AsyncWrap, public ThreadPoolWork {
v8::Local ret[2];
env->PrintSyncTrace();
job->DoThreadPoolWork();
- if (job->ToResult(&ret[0], &ret[1]).FromJust()) {
+ v8::Maybe result = job->ToResult(&ret[0], &ret[1]);
+ if (result.IsJust() && result.FromJust()) {
args.GetReturnValue().Set(
v8::Array::New(env->isolate(), ret, arraysize(ret)));
}
diff --git a/test/parallel/test-crypto-keygen.js b/test/parallel/test-crypto-keygen.js
index e5c8a107ba58a1..8f3727771306ef 100644
--- a/test/parallel/test-crypto-keygen.js
+++ b/test/parallel/test-crypto-keygen.js
@@ -12,6 +12,7 @@ const {
createVerify,
generateKeyPair,
generateKeyPairSync,
+ getCurves,
publicEncrypt,
privateDecrypt,
sign,
@@ -1314,3 +1315,33 @@ if (!common.hasOpenSSL3) {
);
}
}
+
+{
+ // This test creates EC key pairs on curves without associated OIDs.
+ // Specifying a key encoding should not crash.
+
+ if (process.versions.openssl >= '1.1.1i') {
+ for (const namedCurve of ['Oakley-EC2N-3', 'Oakley-EC2N-4']) {
+ if (!getCurves().includes(namedCurve))
+ continue;
+
+ const params = {
+ namedCurve,
+ publicKeyEncoding: {
+ format: 'der',
+ type: 'spki'
+ }
+ };
+
+ assert.throws(() => {
+ generateKeyPairSync('ec', params);
+ }, {
+ code: 'ERR_OSSL_EC_MISSING_OID'
+ });
+
+ generateKeyPair('ec', params, common.mustCall((err) => {
+ assert.strictEqual(err.code, 'ERR_OSSL_EC_MISSING_OID');
+ }));
+ }
+ }
+}
From 6d28a24f1cf1e9984ea87b986b3b48415d6217d7 Mon Sep 17 00:00:00 2001
From: Luigi Pinca
Date: Tue, 30 Mar 2021 08:24:00 +0200
Subject: [PATCH 28/41] tools: update ESLint to 7.23.0
PR-URL: https://github.com/nodejs/node/pull/37979
Reviewed-By: Colin Ihrig
Reviewed-By: Beth Griggs
Reviewed-By: Rich Trott
---
.../node_modules/bail/package.json | 98 +-
.../character-entities-legacy/package.json | 92 +-
.../character-entities/package.json | 94 +-
.../character-reference-invalid/package.json | 94 +-
.../collapse-white-space/package.json | 94 +-
.../node_modules/extend/package.json | 92 +-
.../node_modules/inherits/package.json | 35 +-
.../node_modules/is-alphabetical/package.json | 98 +-
.../is-alphanumerical/package.json | 102 +-
.../node_modules/is-buffer/package.json | 13 +-
.../node_modules/is-decimal/package.json | 98 +-
.../node_modules/is-hexadecimal/package.json | 98 +-
.../node_modules/is-plain-obj/package.json | 33 +-
.../is-whitespace-character/package.json | 102 +-
.../is-word-character/package.json | 98 +-
.../markdown-escapes/package.json | 96 +-
.../node_modules/parse-entities/package.json | 96 +-
.../node_modules/remark-parse/package.json | 64 +-
.../node_modules/repeat-string/package.json | 78 +-
.../node_modules/replace-ext/package.json | 69 +-
.../node_modules/state-toggle/package.json | 94 +-
.../trim-trailing-lines/package.json | 86 +-
.../node_modules/trim/package.json | 30 +-
.../node_modules/trough/package.json | 94 +-
.../node_modules/unherit/package.json | 84 +-
.../node_modules/unified/package.json | 90 +-
.../node_modules/unist-util-is/package.json | 100 +-
.../unist-util-remove-position/package.json | 98 +-
.../package.json | 90 +-
.../unist-util-visit-parents/package.json | 80 +-
.../unist-util-visit/package.json | 104 +-
.../node_modules/vfile-location/package.json | 86 +-
.../node_modules/vfile-message/package.json | 78 +-
.../node_modules/vfile/package.json | 119 +-
.../node_modules/x-is-string/package.json | 46 +-
.../node_modules/xtend/package.json | 60 +-
.../eslint-plugin-markdown/package.json | 77 +-
tools/node_modules/eslint/README.md | 2 +-
tools/node_modules/eslint/lib/cli.js | 13 +-
tools/node_modules/eslint/lib/options.js | 47 +
.../eslint/lib/rules/no-mixed-operators.js | 29 +-
.../eslint/lib/rules/no-sequences.js | 35 +-
.../eslint/lib/rules/object-curly-newline.js | 2 +-
.../eslint/lib/shared/runtime-info.js | 4 +-
.../@babel/code-frame/package.json | 34 +-
.../helper-validator-identifier/package.json | 30 +-
.../node_modules/ansi-styles/index.js | 165 ++
.../node_modules/ansi-styles/license | 0
.../node_modules/ansi-styles/package.json | 56 +
.../node_modules/ansi-styles/readme.md | 33 +-
.../highlight/node_modules/chalk/package.json | 149 +-
.../node_modules/color-convert/LICENSE | 0
.../node_modules/color-convert/README.md | 0
.../node_modules/color-convert/conversions.js | 591 +++---
.../node_modules/color-convert/index.js | 78 +
.../node_modules/color-convert/package.json | 58 +-
.../node_modules/color-convert/route.js | 44 +-
.../node_modules/color-name/LICENSE | 0
.../node_modules/color-name/README.md | 0
.../node_modules/color-name/index.js | 0
.../node_modules/color-name/package.json | 25 +
.../highlight/node_modules/has-flag/index.js | 8 +
.../highlight}/node_modules/has-flag/license | 0
.../node_modules/has-flag/package.json | 41 +-
.../node_modules/has-flag/readme.md | 19 -
.../node_modules/supports-color/browser.js | 0
.../node_modules/supports-color/index.js | 52 +-
.../node_modules/supports-color/license | 0
.../node_modules/supports-color/package.json | 53 +
.../node_modules/supports-color/readme.md | 16 +-
.../@babel/highlight/package.json | 36 +-
.../node_modules/globals/package.json | 111 +-
.../eslintrc/node_modules/type-fest}/license | 0
.../node_modules/type-fest/package.json | 51 +
.../node_modules/type-fest/readme.md | 51 +-
.../@eslint/eslintrc/package.json | 91 +-
.../node_modules/acorn-jsx/package.json | 29 +-
.../eslint/node_modules/acorn/package.json | 33 +-
.../eslint/node_modules/ajv/package.json | 132 +-
.../node_modules/ansi-colors/package.json | 74 +-
.../node_modules/ansi-regex/package.json | 117 +-
.../eslint/node_modules/ansi-styles/index.js | 136 +-
.../node_modules/ansi-styles/package.json | 119 +-
.../eslint/node_modules/ansi-styles/readme.md | 33 +-
.../eslint/node_modules/argparse/package.json | 55 +-
.../node_modules/astral-regex/package.json | 73 +-
.../node_modules/balanced-match/package.json | 41 +-
.../node_modules/brace-expansion/package.json | 43 +-
.../eslint/node_modules/call-bind/LICENSE | 21 +
.../eslint/node_modules/call-bind/README.md | 2 +
.../node_modules/call-bind/callBound.js | 15 +
.../eslint/node_modules/call-bind/index.js | 47 +
.../node_modules/call-bind/package.json | 80 +
.../node_modules/callsites/package.json | 85 +-
.../chalk/node_modules/ansi-styles/index.js | 163 --
.../node_modules/ansi-styles/package.json | 65 -
.../chalk/node_modules/ansi-styles/readme.md | 152 --
.../node_modules/color-convert/conversions.js | 839 --------
.../chalk/node_modules/color-convert/index.js | 81 -
.../chalk/node_modules/color-convert/route.js | 97 -
.../node_modules/color-name/package.json | 33 -
.../chalk/node_modules/has-flag/index.js | 8 -
.../node_modules/supports-color/package.json | 62 -
.../eslint/node_modules/chalk/package.json | 143 +-
.../node_modules/color-convert/conversions.js | 591 +++---
.../node_modules/color-convert/index.js | 51 +-
.../node_modules/color-convert/package.json | 58 +-
.../node_modules/color-convert/route.js | 44 +-
.../node_modules/color-name/package.json | 58 +-
.../node_modules/concat-map/package.json | 104 +-
.../node_modules/cross-spawn/package.json | 94 +-
.../eslint/node_modules/debug/package.json | 87 +-
.../eslint/node_modules/deep-is/package.json | 46 +-
.../eslint/node_modules/doctrine/package.json | 72 +-
.../node_modules/emoji-regex/package.json | 60 +-
.../eslint/node_modules/enquirer/package.json | 64 +-
.../escape-string-regexp/package.json | 51 +-
.../node_modules/eslint-scope/package.json | 57 +-
.../eslint-visitor-keys/package.json | 54 +-
.../node_modules/eslint-utils/package.json | 64 +-
.../eslint-visitor-keys/package.json | 52 +-
.../eslint-visitor-keys/package.json | 54 +-
.../eslint/node_modules/espree/package.json | 54 +-
.../eslint/node_modules/esprima/package.json | 116 +-
.../node_modules/estraverse/package.json | 47 +-
.../eslint/node_modules/esquery/package.json | 103 +-
.../node_modules/estraverse/package.json | 47 +-
.../node_modules/esrecurse/package.json | 55 +-
.../node_modules/estraverse/package.json | 47 +-
.../eslint/node_modules/esutils/package.json | 49 +-
.../node_modules/fast-deep-equal/package.json | 72 +-
.../fast-json-stable-stringify/package.json | 47 +-
.../fast-levenshtein/package.json | 48 +-
.../file-entry-cache/package.json | 99 +-
.../node_modules/flat-cache/package.json | 111 +-
.../eslint/node_modules/flatted/package.json | 70 +-
.../node_modules/fs.realpath/package.json | 44 +-
.../node_modules/function-bind/.jscs.json | 176 ++
.../eslint/node_modules/function-bind/LICENSE | 20 +
.../node_modules/function-bind/README.md | 48 +
.../function-bind/implementation.js | 52 +
.../node_modules/function-bind/index.js | 5 +
.../node_modules/function-bind/package.json | 63 +
.../functional-red-black-tree/package.json | 39 +-
.../eslint/node_modules/get-intrinsic/LICENSE | 21 +
.../node_modules/get-intrinsic/README.md | 65 +
.../node_modules/get-intrinsic/index.js | 330 ++++
.../node_modules/get-intrinsic/package.json | 78 +
.../node_modules/glob-parent/package.json | 69 +-
.../eslint/node_modules/glob/package.json | 58 +-
.../eslint/node_modules/globals/globals.json | 2 +
.../globals/node_modules/type-fest/license | 9 -
.../node_modules/type-fest/package.json | 67 -
.../eslint/node_modules/globals/package.json | 117 +-
.../eslint/node_modules/has-flag/index.js | 10 +-
.../eslint/node_modules/has-flag/package.json | 97 +-
.../eslint/node_modules/has-flag/readme.md | 19 +
.../eslint/node_modules/has-symbols/LICENSE | 21 +
.../eslint/node_modules/has-symbols/README.md | 40 +
.../eslint/node_modules/has-symbols/index.js | 13 +
.../node_modules/has-symbols/package.json | 96 +
.../eslint/node_modules/has-symbols/shams.js | 42 +
.../eslint/node_modules/has/LICENSE-MIT | 22 +
.../eslint/node_modules/has/README.md | 18 +
.../eslint/node_modules/has/package.json | 48 +
.../eslint/node_modules/has/src/index.js | 5 +
.../eslint/node_modules/ignore/package.json | 81 +-
.../node_modules/import-fresh/package.json | 93 +-
.../node_modules/imurmurhash/package.json | 46 +-
.../eslint/node_modules/inflight/package.json | 40 +-
.../eslint/node_modules/inherits/package.json | 35 +-
.../node_modules/is-boolean-object/LICENSE | 22 +
.../node_modules/is-boolean-object/README.md | 58 +
.../node_modules/is-boolean-object/index.js | 26 +
.../is-boolean-object/package.json | 83 +
.../node_modules/is-extglob/package.json | 46 +-
.../is-fullwidth-code-point/package.json | 91 +-
.../eslint/node_modules/is-glob/package.json | 63 +-
.../node_modules/is-number-object/LICENSE | 22 +
.../node_modules/is-number-object/README.md | 52 +
.../node_modules/is-number-object/index.js | 24 +
.../is-number-object/package.json | 76 +
.../eslint/node_modules/is-string/LICENSE | 22 +
.../eslint/node_modules/is-string/README.md | 57 +
.../eslint/node_modules/is-string/index.js | 24 +
.../node_modules/is-string/package.json | 76 +
.../eslint/node_modules/isexe/package.json | 40 +-
.../node_modules/js-tokens/package.json | 47 +-
.../eslint/node_modules/js-yaml/package.json | 79 +-
.../json-schema-traverse/package.json | 48 +-
.../package.json | 60 +-
.../eslint/node_modules/levn/package.json | 51 +-
.../LICENSE | 28 +-
.../node_modules/lodash.clonedeep/README.md | 18 +
.../node_modules/lodash.clonedeep/index.js | 1748 +++++++++++++++++
.../lodash.clonedeep/package.json | 17 +
.../node_modules/lodash.flatten/LICENSE | 47 +
.../node_modules/lodash.flatten/README.md | 18 +
.../node_modules/lodash.flatten/index.js | 349 ++++
.../node_modules/lodash.flatten/package.json | 17 +
.../node_modules/lodash.truncate/LICENSE | 47 +
.../node_modules/lodash.truncate/README.md | 18 +
.../node_modules/lodash.truncate/index.js | 632 ++++++
.../node_modules/lodash.truncate/package.json | 17 +
.../eslint/node_modules/lodash/package.json | 45 +-
.../node_modules/lru-cache/package.json | 60 +-
.../node_modules/minimatch/package.json | 48 +-
.../eslint/node_modules/ms/package.json | 49 +-
.../node_modules/natural-compare/package.json | 56 +-
.../eslint/node_modules/once/package.json | 40 +-
.../node_modules/optionator/package.json | 59 +-
.../node_modules/parent-module/package.json | 99 +-
.../path-is-absolute/package.json | 33 +-
.../eslint/node_modules/path-key/package.json | 85 +-
.../node_modules/prelude-ls/package.json | 51 +-
.../eslint/node_modules/progress/package.json | 55 +-
.../eslint/node_modules/punycode/package.json | 74 +-
.../eslint/node_modules/regexpp/package.json | 83 +-
.../require-from-string/package.json | 39 +-
.../node_modules/resolve-from/package.json | 75 +-
.../eslint/node_modules/rimraf/package.json | 53 +-
.../eslint/node_modules/semver/package.json | 51 +-
.../node_modules/semver/ranges/subset.js | 74 +-
.../node_modules/shebang-command/package.json | 75 +-
.../node_modules/shebang-regex/package.json | 77 +-
.../node_modules/ansi-styles/index.js | 163 --
.../node_modules/ansi-styles/package.json | 65 -
.../node_modules/color-convert/README.md | 68 -
.../node_modules/color-convert/index.js | 81 -
.../node_modules/color-convert/package.json | 60 -
.../node_modules/color-name/LICENSE | 8 -
.../node_modules/color-name/README.md | 11 -
.../node_modules/color-name/index.js | 152 --
.../node_modules/color-name/package.json | 33 -
.../node_modules/slice-ansi/package.json | 111 +-
.../node_modules/sprintf-js/package.json | 51 +-
.../node_modules/string-width/package.json | 119 +-
.../node_modules/strip-ansi/package.json | 115 +-
.../strip-json-comments/package.json | 101 +-
.../node_modules/supports-color/index.js | 52 +-
.../node_modules/supports-color/package.json | 113 +-
.../node_modules/supports-color/readme.md | 16 +-
.../node_modules/table/dist/alignString.js | 13 +-
.../table/dist/alignString.js.flow | 9 +-
.../node_modules/table/dist/alignTableData.js | 3 +-
.../table/dist/calculateCellHeight.js | 7 +-
.../table/dist/calculateCellHeight.js.flow | 4 +-
.../table/dist/calculateCellWidthIndex.js | 3 +-
.../dist/calculateMaximumColumnWidthIndex.js | 3 +-
.../table/dist/calculateRowHeightIndex.js | 15 +-
.../dist/calculateRowHeightIndex.js.flow | 9 +-
.../node_modules/table/dist/createStream.js | 9 +-
.../table/dist/createStream.js.flow | 5 +-
.../node_modules/table/dist/drawBorder.js | 3 +-
.../eslint/node_modules/table/dist/drawRow.js | 3 +-
.../node_modules/table/dist/drawTable.js | 3 +-
.../table/dist/getBorderCharacters.js | 3 +-
.../eslint/node_modules/table/dist/index.js | 3 +-
.../node_modules/table/dist/makeConfig.js | 19 +-
.../table/dist/makeConfig.js.flow | 10 +-
.../table/dist/makeStreamConfig.js | 18 +-
.../table/dist/makeStreamConfig.js.flow | 10 +-
.../table/dist/mapDataUsingRowHeightIndex.js | 11 +-
.../dist/mapDataUsingRowHeightIndex.js.flow | 6 +-
.../node_modules/table/dist/padTableData.js | 3 +-
.../table/dist/stringifyTableData.js | 3 +-
.../eslint/node_modules/table/dist/table.js | 3 +-
.../table/dist/truncateTableData.js | 7 +-
.../table/dist/truncateTableData.js.flow | 4 +-
.../node_modules/table/dist/validateConfig.js | 5 +-
.../table/dist/validateConfig.js.flow | 1 -
.../table/dist/validateTableData.js | 3 +-
.../node_modules/table/dist/validators.js | 357 ++--
.../node_modules/table/dist/wrapCell.js | 3 +-
.../node_modules/table/dist/wrapString.js | 3 +-
.../node_modules/table/dist/wrapWord.js | 3 +-
.../table/node_modules/ajv/.tonic_example.js | 5 +-
.../table/node_modules/ajv/README.md | 245 +--
.../table/node_modules/ajv/dist/2019.js | 23 +-
.../table/node_modules/ajv/dist/2020.js | 49 +
.../table/node_modules/ajv/dist/ajv.js | 23 +-
.../node_modules/ajv/dist/compile/context.js | 240 ---
.../node_modules/ajv/dist/compile/equal.js | 5 -
.../ajv/dist/compile/error_classes.js | 25 -
.../node_modules/ajv/dist/compile/errors.js | 64 +-
.../node_modules/ajv/dist/compile/index.js | 9 +-
.../ajv/dist/compile/jtd/parse.js | 14 +-
.../ajv/dist/compile/jtd/serialize.js | 13 +-
.../node_modules/ajv/dist/compile/names.js | 2 +-
.../ajv/dist/compile/ref_error.js | 12 +
.../node_modules/ajv/dist/compile/util.js | 46 +-
.../ajv/dist/compile/validate/boolSchema.js | 2 +-
.../ajv/dist/compile/validate/dataType.js | 6 +-
.../ajv/dist/compile/validate/defaults.js | 4 +-
.../ajv/dist/compile/validate/index.js | 360 +++-
.../ajv/dist/compile/validate/iterate.js | 109 -
.../ajv/dist/compile/validate/keyword.js | 60 +-
.../dist/compile/{ => validate}/subschema.js | 40 +-
.../table/node_modules/ajv/dist/core.js | 76 +-
.../table/node_modules/ajv/dist/jtd.js | 24 +-
.../dist/refs/json-schema-2019-09/index.js | 24 +-
.../dist/refs/json-schema-2020-12/index.js | 30 +
.../json-schema-2020-12/meta/applicator.json | 48 +
.../json-schema-2020-12/meta/content.json | 17 +
.../refs/json-schema-2020-12/meta/core.json | 51 +
.../meta/format-annotation.json | 14 +
.../json-schema-2020-12/meta/meta-data.json | 37 +
.../json-schema-2020-12/meta/unevaluated.json | 15 +
.../json-schema-2020-12/meta/validation.json | 90 +
.../dist/refs/json-schema-2020-12/schema.json | 55 +
.../node_modules/ajv/dist/runtime/equal.js | 7 +
.../ajv/dist/runtime/parseJson.js | 7 +-
.../node_modules/ajv/dist/runtime/quote.js | 1 +
.../dist/{compile => runtime}/timestamp.js | 3 +-
.../dist/{compile => runtime}/ucs2length.js | 1 +
.../ajv/dist/runtime/validation_error.js | 11 +
.../applicator/additionalItems.js | 50 +-
.../applicator/additionalProperties.js | 5 +-
.../ajv/dist/vocabularies/applicator/anyOf.js | 4 +-
.../dist/vocabularies/applicator/contains.js | 12 +-
.../vocabularies/applicator/dependencies.js | 2 +-
.../ajv/dist/vocabularies/applicator/if.js | 5 +-
.../ajv/dist/vocabularies/applicator/index.js | 45 +-
.../ajv/dist/vocabularies/applicator/items.js | 70 +-
.../dist/vocabularies/applicator/items2020.js | 30 +
.../ajv/dist/vocabularies/applicator/not.js | 4 +-
.../ajv/dist/vocabularies/applicator/oneOf.js | 6 +-
.../applicator/patternProperties.js | 11 +-
.../vocabularies/applicator/prefixItems.js | 12 +
.../vocabularies/applicator/properties.js | 4 +-
.../vocabularies/applicator/propertyNames.js | 2 +-
.../dist/vocabularies/applicator/thenElse.js | 4 +-
.../ajv/dist/vocabularies/code.js | 9 +-
.../ajv/dist/vocabularies/core/ref.js | 21 +-
.../dist/vocabularies/discriminator/index.js | 93 +
.../dist/vocabularies/discriminator/types.js | 9 +
.../ajv/dist/vocabularies/draft2020.js | 23 +
.../ajv/dist/vocabularies/draft7.js | 2 +-
.../vocabularies/dynamic/recursiveAnchor.js | 4 +-
.../ajv/dist/vocabularies/format/format.js | 6 +-
.../dist/vocabularies/jtd/discriminator.js | 55 +-
.../ajv/dist/vocabularies/jtd/elements.js | 8 +-
.../ajv/dist/vocabularies/jtd/enum.js | 20 +-
.../ajv/dist/vocabularies/jtd/error.js | 20 +
.../ajv/dist/vocabularies/jtd/index.js | 1 -
.../ajv/dist/vocabularies/jtd/nullable.js | 2 +-
.../vocabularies/jtd/optionalProperties.js | 1 +
.../ajv/dist/vocabularies/jtd/properties.js | 42 +-
.../ajv/dist/vocabularies/jtd/ref.js | 6 +-
.../ajv/dist/vocabularies/jtd/type.js | 10 +-
.../ajv/dist/vocabularies/jtd/union.js | 1 +
.../ajv/dist/vocabularies/jtd/values.js | 13 +-
.../unevaluated/unevaluatedItems.js | 5 +-
.../unevaluated/unevaluatedProperties.js | 5 +-
.../ajv/dist/vocabularies/validation/const.js | 12 +-
.../ajv/dist/vocabularies/validation/enum.js | 10 +-
.../vocabularies/validation/limitContains.js | 4 +-
.../vocabularies/validation/limitItems.js | 2 +-
.../vocabularies/validation/limitLength.js | 17 +-
.../vocabularies/validation/limitNumber.js | 2 +-
.../validation/limitProperties.js | 2 +-
.../vocabularies/validation/multipleOf.js | 2 +-
.../dist/vocabularies/validation/pattern.js | 2 +-
.../dist/vocabularies/validation/required.js | 6 +-
.../vocabularies/validation/uniqueItems.js | 12 +-
.../node_modules/ajv/lib/compile/equal.js | 3 -
.../json-schema-2020-12/meta/applicator.json | 48 +
.../json-schema-2020-12/meta/content.json | 17 +
.../refs/json-schema-2020-12/meta/core.json | 51 +
.../meta/format-annotation.json | 14 +
.../json-schema-2020-12/meta/meta-data.json | 37 +
.../json-schema-2020-12/meta/unevaluated.json | 15 +
.../json-schema-2020-12/meta/validation.json | 90 +
.../lib/refs/json-schema-2020-12/schema.json | 55 +
.../table/node_modules/ajv/package.json | 143 +-
.../node_modules/ajv/scripts/get-ajv-packages | 20 +
.../ajv/scripts/get-contributors.js | 57 +
.../node_modules/ajv/scripts/jsontests.js | 1 +
.../node_modules/ajv/scripts/prepare-site | 17 +
.../node_modules/ajv/scripts/publish-site | 11 +-
.../json-schema-traverse/package.json | 50 +-
.../eslint/node_modules/table/package.json | 34 +-
.../node_modules/text-table/package.json | 92 +-
.../node_modules/type-check/package.json | 51 +-
.../eslint/node_modules/type-fest/license | 2 +-
.../node_modules/type-fest/package.json | 116 +-
.../eslint/node_modules/type-fest/readme.md | 51 +-
.../eslint/node_modules/uri-js/package.json | 79 +-
.../v8-compile-cache/package.json | 49 +-
.../eslint/node_modules/which/package.json | 56 +-
.../node_modules/word-wrap/package.json | 95 +-
.../eslint/node_modules/wrappy/package.json | 42 +-
.../eslint/node_modules/yallist/package.json | 42 +-
tools/node_modules/eslint/package.json | 106 +-
394 files changed, 13054 insertions(+), 10514 deletions(-)
create mode 100644 tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/index.js
rename tools/node_modules/eslint/node_modules/{chalk => @babel/highlight}/node_modules/ansi-styles/license (100%)
create mode 100644 tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/package.json
rename tools/node_modules/eslint/node_modules/{slice-ansi => @babel/highlight}/node_modules/ansi-styles/readme.md (77%)
rename tools/node_modules/eslint/node_modules/{chalk => @babel/highlight}/node_modules/color-convert/LICENSE (100%)
rename tools/node_modules/eslint/node_modules/{chalk => @babel/highlight}/node_modules/color-convert/README.md (100%)
rename tools/node_modules/eslint/node_modules/{slice-ansi => @babel/highlight}/node_modules/color-convert/conversions.js (51%)
create mode 100644 tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/index.js
rename tools/node_modules/eslint/node_modules/{chalk => @babel/highlight}/node_modules/color-convert/package.json (53%)
rename tools/node_modules/eslint/node_modules/{slice-ansi => @babel/highlight}/node_modules/color-convert/route.js (59%)
rename tools/node_modules/eslint/node_modules/{chalk => @babel/highlight}/node_modules/color-name/LICENSE (100%)
rename tools/node_modules/eslint/node_modules/{chalk => @babel/highlight}/node_modules/color-name/README.md (100%)
rename tools/node_modules/eslint/node_modules/{chalk => @babel/highlight}/node_modules/color-name/index.js (100%)
create mode 100644 tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/package.json
create mode 100644 tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/index.js
rename tools/node_modules/eslint/node_modules/{chalk => @babel/highlight}/node_modules/has-flag/license (100%)
rename tools/node_modules/eslint/node_modules/{chalk => @babel/highlight}/node_modules/has-flag/package.json (53%)
rename tools/node_modules/eslint/node_modules/{chalk => @babel/highlight}/node_modules/has-flag/readme.md (61%)
rename tools/node_modules/eslint/node_modules/{chalk => @babel/highlight}/node_modules/supports-color/browser.js (100%)
rename tools/node_modules/eslint/node_modules/{chalk => @babel/highlight}/node_modules/supports-color/index.js (62%)
rename tools/node_modules/eslint/node_modules/{chalk => @babel/highlight}/node_modules/supports-color/license (100%)
create mode 100644 tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/package.json
rename tools/node_modules/eslint/node_modules/{chalk => @babel/highlight}/node_modules/supports-color/readme.md (67%)
rename tools/node_modules/eslint/node_modules/{slice-ansi/node_modules/ansi-styles => @eslint/eslintrc/node_modules/type-fest}/license (100%)
create mode 100644 tools/node_modules/eslint/node_modules/@eslint/eslintrc/node_modules/type-fest/package.json
rename tools/node_modules/eslint/node_modules/{globals => @eslint/eslintrc}/node_modules/type-fest/readme.md (86%)
create mode 100644 tools/node_modules/eslint/node_modules/call-bind/LICENSE
create mode 100644 tools/node_modules/eslint/node_modules/call-bind/README.md
create mode 100644 tools/node_modules/eslint/node_modules/call-bind/callBound.js
create mode 100644 tools/node_modules/eslint/node_modules/call-bind/index.js
create mode 100644 tools/node_modules/eslint/node_modules/call-bind/package.json
delete mode 100644 tools/node_modules/eslint/node_modules/chalk/node_modules/ansi-styles/index.js
delete mode 100644 tools/node_modules/eslint/node_modules/chalk/node_modules/ansi-styles/package.json
delete mode 100644 tools/node_modules/eslint/node_modules/chalk/node_modules/ansi-styles/readme.md
delete mode 100644 tools/node_modules/eslint/node_modules/chalk/node_modules/color-convert/conversions.js
delete mode 100644 tools/node_modules/eslint/node_modules/chalk/node_modules/color-convert/index.js
delete mode 100644 tools/node_modules/eslint/node_modules/chalk/node_modules/color-convert/route.js
delete mode 100644 tools/node_modules/eslint/node_modules/chalk/node_modules/color-name/package.json
delete mode 100644 tools/node_modules/eslint/node_modules/chalk/node_modules/has-flag/index.js
delete mode 100644 tools/node_modules/eslint/node_modules/chalk/node_modules/supports-color/package.json
create mode 100644 tools/node_modules/eslint/node_modules/function-bind/.jscs.json
create mode 100644 tools/node_modules/eslint/node_modules/function-bind/LICENSE
create mode 100644 tools/node_modules/eslint/node_modules/function-bind/README.md
create mode 100644 tools/node_modules/eslint/node_modules/function-bind/implementation.js
create mode 100644 tools/node_modules/eslint/node_modules/function-bind/index.js
create mode 100644 tools/node_modules/eslint/node_modules/function-bind/package.json
create mode 100644 tools/node_modules/eslint/node_modules/get-intrinsic/LICENSE
create mode 100644 tools/node_modules/eslint/node_modules/get-intrinsic/README.md
create mode 100644 tools/node_modules/eslint/node_modules/get-intrinsic/index.js
create mode 100644 tools/node_modules/eslint/node_modules/get-intrinsic/package.json
delete mode 100644 tools/node_modules/eslint/node_modules/globals/node_modules/type-fest/license
delete mode 100644 tools/node_modules/eslint/node_modules/globals/node_modules/type-fest/package.json
create mode 100644 tools/node_modules/eslint/node_modules/has-symbols/LICENSE
create mode 100644 tools/node_modules/eslint/node_modules/has-symbols/README.md
create mode 100644 tools/node_modules/eslint/node_modules/has-symbols/index.js
create mode 100644 tools/node_modules/eslint/node_modules/has-symbols/package.json
create mode 100644 tools/node_modules/eslint/node_modules/has-symbols/shams.js
create mode 100644 tools/node_modules/eslint/node_modules/has/LICENSE-MIT
create mode 100644 tools/node_modules/eslint/node_modules/has/README.md
create mode 100644 tools/node_modules/eslint/node_modules/has/package.json
create mode 100644 tools/node_modules/eslint/node_modules/has/src/index.js
create mode 100644 tools/node_modules/eslint/node_modules/is-boolean-object/LICENSE
create mode 100644 tools/node_modules/eslint/node_modules/is-boolean-object/README.md
create mode 100644 tools/node_modules/eslint/node_modules/is-boolean-object/index.js
create mode 100644 tools/node_modules/eslint/node_modules/is-boolean-object/package.json
create mode 100644 tools/node_modules/eslint/node_modules/is-number-object/LICENSE
create mode 100644 tools/node_modules/eslint/node_modules/is-number-object/README.md
create mode 100644 tools/node_modules/eslint/node_modules/is-number-object/index.js
create mode 100644 tools/node_modules/eslint/node_modules/is-number-object/package.json
create mode 100644 tools/node_modules/eslint/node_modules/is-string/LICENSE
create mode 100644 tools/node_modules/eslint/node_modules/is-string/README.md
create mode 100644 tools/node_modules/eslint/node_modules/is-string/index.js
create mode 100644 tools/node_modules/eslint/node_modules/is-string/package.json
rename tools/node_modules/eslint/node_modules/{slice-ansi/node_modules/color-convert => lodash.clonedeep}/LICENSE (52%)
create mode 100644 tools/node_modules/eslint/node_modules/lodash.clonedeep/README.md
create mode 100644 tools/node_modules/eslint/node_modules/lodash.clonedeep/index.js
create mode 100644 tools/node_modules/eslint/node_modules/lodash.clonedeep/package.json
create mode 100644 tools/node_modules/eslint/node_modules/lodash.flatten/LICENSE
create mode 100644 tools/node_modules/eslint/node_modules/lodash.flatten/README.md
create mode 100644 tools/node_modules/eslint/node_modules/lodash.flatten/index.js
create mode 100644 tools/node_modules/eslint/node_modules/lodash.flatten/package.json
create mode 100644 tools/node_modules/eslint/node_modules/lodash.truncate/LICENSE
create mode 100644 tools/node_modules/eslint/node_modules/lodash.truncate/README.md
create mode 100644 tools/node_modules/eslint/node_modules/lodash.truncate/index.js
create mode 100644 tools/node_modules/eslint/node_modules/lodash.truncate/package.json
delete mode 100644 tools/node_modules/eslint/node_modules/slice-ansi/node_modules/ansi-styles/index.js
delete mode 100644 tools/node_modules/eslint/node_modules/slice-ansi/node_modules/ansi-styles/package.json
delete mode 100644 tools/node_modules/eslint/node_modules/slice-ansi/node_modules/color-convert/README.md
delete mode 100644 tools/node_modules/eslint/node_modules/slice-ansi/node_modules/color-convert/index.js
delete mode 100644 tools/node_modules/eslint/node_modules/slice-ansi/node_modules/color-convert/package.json
delete mode 100644 tools/node_modules/eslint/node_modules/slice-ansi/node_modules/color-name/LICENSE
delete mode 100644 tools/node_modules/eslint/node_modules/slice-ansi/node_modules/color-name/README.md
delete mode 100644 tools/node_modules/eslint/node_modules/slice-ansi/node_modules/color-name/index.js
delete mode 100644 tools/node_modules/eslint/node_modules/slice-ansi/node_modules/color-name/package.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/2020.js
delete mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/compile/context.js
delete mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/compile/equal.js
delete mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/compile/error_classes.js
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/compile/ref_error.js
delete mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/compile/validate/iterate.js
rename tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/compile/{ => validate}/subschema.js (68%)
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/index.js
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/refs/json-schema-2020-12/schema.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/runtime/equal.js
rename tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/{compile => runtime}/timestamp.js (87%)
rename tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/{compile => runtime}/ucs2length.js (86%)
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/runtime/validation_error.js
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/items2020.js
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/index.js
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/vocabularies/discriminator/types.js
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/vocabularies/draft2020.js
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/dist/vocabularies/jtd/error.js
delete mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/lib/compile/equal.js
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/applicator.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/content.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/core.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/format-annotation.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/meta-data.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/unevaluated.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/meta/validation.json
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/lib/refs/json-schema-2020-12/schema.json
create mode 100755 tools/node_modules/eslint/node_modules/table/node_modules/ajv/scripts/get-ajv-packages
create mode 100644 tools/node_modules/eslint/node_modules/table/node_modules/ajv/scripts/get-contributors.js
create mode 100755 tools/node_modules/eslint/node_modules/table/node_modules/ajv/scripts/prepare-site
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/bail/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/bail/package.json
index 1544ac972fde04..8f8539d32b89b6 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/bail/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/bail/package.json
@@ -1,23 +1,29 @@
{
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- },
- "bugs": {
- "url": "https://github.com/wooorm/bail/issues"
+ "name": "bail",
+ "version": "1.0.5",
+ "description": "Throw a given error",
+ "license": "MIT",
+ "keywords": [
+ "fail",
+ "bail",
+ "throw",
+ "callback",
+ "error"
+ ],
+ "repository": "wooorm/bail",
+ "bugs": "https://github.com/wooorm/bail/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
},
- "bundleDependencies": false,
+ "author": "Titus Wormer (https://wooorm.com)",
"contributors": [
- {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- }
+ "Titus Wormer (https://wooorm.com)"
+ ],
+ "files": [
+ "index.js"
],
"dependencies": {},
- "deprecated": false,
- "description": "Throw a given error",
"devDependencies": {
"browserify": "^16.0.0",
"nyc": "^15.0.0",
@@ -28,28 +34,14 @@
"tinyify": "^2.0.0",
"xo": "^0.25.0"
},
- "files": [
- "index.js"
- ],
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- },
- "homepage": "https://github.com/wooorm/bail#readme",
- "keywords": [
- "fail",
- "bail",
- "throw",
- "callback",
- "error"
- ],
- "license": "MIT",
- "name": "bail",
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify index.js -s bail -o bail.js",
+ "build-mangle": "browserify index.js -s bail -p tinyify -o bail.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test": "npm run format && npm run build && npm run test-coverage"
},
"prettier": {
"tabWidth": 2,
@@ -59,30 +51,22 @@
"semi": false,
"trailingComma": "none"
},
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wooorm/bail.git"
- },
- "scripts": {
- "build": "npm run build-bundle && npm run build-mangle",
- "build-bundle": "browserify index.js -s bail -o bail.js",
- "build-mangle": "browserify index.js -s bail -p tinyify -o bail.min.js",
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "test": "npm run format && npm run build && npm run test-coverage",
- "test-api": "node test",
- "test-coverage": "nyc --reporter lcov tape test.js"
- },
- "version": "1.0.5",
"xo": {
"prettier": true,
"esnext": false,
"ignores": [
"bail.js"
]
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
}
-}
\ No newline at end of file
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/character-entities-legacy/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/character-entities-legacy/package.json
index 701c76396e0c2f..e532b8714df3e8 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/character-entities-legacy/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/character-entities-legacy/package.json
@@ -1,23 +1,32 @@
{
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- },
- "bugs": {
- "url": "https://github.com/wooorm/character-entities-legacy/issues"
+ "name": "character-entities-legacy",
+ "version": "1.1.4",
+ "description": "HTML legacy character entity information",
+ "license": "MIT",
+ "keywords": [
+ "html",
+ "entity",
+ "entities",
+ "character",
+ "reference",
+ "name",
+ "replacement"
+ ],
+ "repository": "wooorm/character-entities-legacy",
+ "bugs": "https://github.com/wooorm/character-entities-legacy/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
},
- "bundleDependencies": false,
+ "author": "Titus Wormer (https://wooorm.com)",
"contributors": [
- {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- }
+ "Titus Wormer (https://wooorm.com)"
+ ],
+ "main": "index.json",
+ "files": [
+ "index.json"
],
"dependencies": {},
- "deprecated": false,
- "description": "HTML legacy character entity information",
"devDependencies": {
"bail": "^1.0.0",
"browserify": "^16.0.0",
@@ -29,26 +38,15 @@
"tinyify": "^2.0.0",
"xo": "^0.25.0"
},
- "files": [
- "index.json"
- ],
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "scripts": {
+ "generate": "node build",
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify index.json -s characterEntitiesLegacy -o character-entities-legacy.js",
+ "build-mangle": "browserify index.json -s characterEntitiesLegacy -p tinyify -o character-entities-legacy.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test": "npm run generate && npm run format && npm run build && npm run test-api"
},
- "homepage": "https://github.com/wooorm/character-entities-legacy#readme",
- "keywords": [
- "html",
- "entity",
- "entities",
- "character",
- "reference",
- "name",
- "replacement"
- ],
- "license": "MIT",
- "main": "index.json",
- "name": "character-entities-legacy",
"prettier": {
"tabWidth": 2,
"useTabs": false,
@@ -57,30 +55,16 @@
"semi": false,
"trailingComma": "none"
},
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wooorm/character-entities-legacy.git"
- },
- "scripts": {
- "build": "npm run build-bundle && npm run build-mangle",
- "build-bundle": "browserify index.json -s characterEntitiesLegacy -o character-entities-legacy.js",
- "build-mangle": "browserify index.json -s characterEntitiesLegacy -p tinyify -o character-entities-legacy.min.js",
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "generate": "node build",
- "test": "npm run generate && npm run format && npm run build && npm run test-api",
- "test-api": "node test"
- },
- "version": "1.1.4",
"xo": {
"prettier": true,
"esnext": false,
"ignores": [
"character-entities-legacy.js"
]
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
}
-}
\ No newline at end of file
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/character-entities/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/character-entities/package.json
index 62ea9531be971e..e1151d249e23dd 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/character-entities/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/character-entities/package.json
@@ -1,23 +1,32 @@
{
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- },
- "bugs": {
- "url": "https://github.com/wooorm/character-entities/issues"
+ "name": "character-entities",
+ "version": "1.2.4",
+ "description": "HTML character entity information",
+ "license": "MIT",
+ "keywords": [
+ "html",
+ "entity",
+ "entities",
+ "character",
+ "reference",
+ "name",
+ "replacement"
+ ],
+ "repository": "wooorm/character-entities",
+ "bugs": "https://github.com/wooorm/character-entities/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
},
- "bundleDependencies": false,
+ "author": "Titus Wormer (https://wooorm.com)",
"contributors": [
- {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- }
+ "Titus Wormer (https://wooorm.com)"
+ ],
+ "main": "index.json",
+ "files": [
+ "index.json"
],
"dependencies": {},
- "deprecated": false,
- "description": "HTML character entity information",
"devDependencies": {
"bail": "^1.0.0",
"browserify": "^16.0.0",
@@ -29,26 +38,16 @@
"tinyify": "^2.0.0",
"xo": "^0.25.0"
},
- "files": [
- "index.json"
- ],
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "scripts": {
+ "generate": "node build",
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify index.json -s characterEntities -o character-entities.js",
+ "build-mangle": "browserify index.json -s characterEntities -p tinyify -o character-entities.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "lint": "xo",
+ "test-api": "node test",
+ "test": "npm run generate && npm run format && npm run build && npm run test-api"
},
- "homepage": "https://github.com/wooorm/character-entities#readme",
- "keywords": [
- "html",
- "entity",
- "entities",
- "character",
- "reference",
- "name",
- "replacement"
- ],
- "license": "MIT",
- "main": "index.json",
- "name": "character-entities",
"prettier": {
"tabWidth": 2,
"useTabs": false,
@@ -57,31 +56,16 @@
"semi": false,
"trailingComma": "none"
},
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wooorm/character-entities.git"
- },
- "scripts": {
- "build": "npm run build-bundle && npm run build-mangle",
- "build-bundle": "browserify index.json -s characterEntities -o character-entities.js",
- "build-mangle": "browserify index.json -s characterEntities -p tinyify -o character-entities.min.js",
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "generate": "node build",
- "lint": "xo",
- "test": "npm run generate && npm run format && npm run build && npm run test-api",
- "test-api": "node test"
- },
- "version": "1.2.4",
"xo": {
"prettier": true,
"esnext": false,
"ignores": [
"character-entities.js"
]
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
}
-}
\ No newline at end of file
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/character-reference-invalid/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/character-reference-invalid/package.json
index 52c4e1361f7c8e..069dc4b2b53901 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/character-reference-invalid/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/character-reference-invalid/package.json
@@ -1,23 +1,33 @@
{
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- },
- "bugs": {
- "url": "https://github.com/wooorm/character-reference-invalid/issues"
+ "name": "character-reference-invalid",
+ "version": "1.1.4",
+ "description": "HTML invalid numeric character reference information",
+ "license": "MIT",
+ "keywords": [
+ "html",
+ "entity",
+ "numeric",
+ "character",
+ "reference",
+ "replacement",
+ "invalid",
+ "name"
+ ],
+ "repository": "wooorm/character-reference-invalid",
+ "bugs": "https://github.com/wooorm/character-reference-invalid/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
},
- "bundleDependencies": false,
+ "author": "Titus Wormer (https://wooorm.com)",
"contributors": [
- {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- }
+ "Titus Wormer (https://wooorm.com)"
+ ],
+ "main": "index.json",
+ "files": [
+ "index.json"
],
"dependencies": {},
- "deprecated": false,
- "description": "HTML invalid numeric character reference information",
"devDependencies": {
"bail": "^1.0.0",
"browserify": "^16.0.0",
@@ -32,27 +42,15 @@
"unified": "^8.0.0",
"xo": "^0.25.0"
},
- "files": [
- "index.json"
- ],
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "scripts": {
+ "generate": "node build",
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify index.json -s characterReferenceInvalid -o character-reference-invalid.js",
+ "build-mangle": "browserify index.json -s characterReferenceInvalid -p tinyify -o character-reference-invalid.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test": "npm run generate && npm run format && npm run build && npm run test-api"
},
- "homepage": "https://github.com/wooorm/character-reference-invalid#readme",
- "keywords": [
- "html",
- "entity",
- "numeric",
- "character",
- "reference",
- "replacement",
- "invalid",
- "name"
- ],
- "license": "MIT",
- "main": "index.json",
- "name": "character-reference-invalid",
"prettier": {
"tabWidth": 2,
"useTabs": false,
@@ -61,30 +59,16 @@
"semi": false,
"trailingComma": "none"
},
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wooorm/character-reference-invalid.git"
- },
- "scripts": {
- "build": "npm run build-bundle && npm run build-mangle",
- "build-bundle": "browserify index.json -s characterReferenceInvalid -o character-reference-invalid.js",
- "build-mangle": "browserify index.json -s characterReferenceInvalid -p tinyify -o character-reference-invalid.min.js",
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "generate": "node build",
- "test": "npm run generate && npm run format && npm run build && npm run test-api",
- "test-api": "node test"
- },
- "version": "1.1.4",
"xo": {
"prettier": true,
"esnext": false,
"ignores": [
"character-reference-invalid.js"
]
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
}
-}
\ No newline at end of file
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/collapse-white-space/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/collapse-white-space/package.json
index fd02ee65e2ed13..6c9e8f348f4bc1 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/collapse-white-space/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/collapse-white-space/package.json
@@ -1,23 +1,27 @@
{
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- },
- "bugs": {
- "url": "https://github.com/wooorm/collapse-white-space/issues"
+ "name": "collapse-white-space",
+ "version": "1.0.6",
+ "description": "Replace multiple white-space characters with a single space",
+ "license": "MIT",
+ "keywords": [
+ "collapse",
+ "white",
+ "space"
+ ],
+ "repository": "wooorm/collapse-white-space",
+ "bugs": "https://github.com/wooorm/collapse-white-space/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
},
- "bundleDependencies": false,
+ "author": "Titus Wormer (https://wooorm.com)",
"contributors": [
- {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- }
+ "Titus Wormer (https://wooorm.com)"
+ ],
+ "files": [
+ "index.js"
],
"dependencies": {},
- "deprecated": false,
- "description": "Replace multiple white-space characters with a single space",
"devDependencies": {
"browserify": "^16.0.0",
"nyc": "^15.0.0",
@@ -28,26 +32,14 @@
"tinyify": "^2.0.0",
"xo": "^0.25.0"
},
- "files": [
- "index.js"
- ],
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- },
- "homepage": "https://github.com/wooorm/collapse-white-space#readme",
- "keywords": [
- "collapse",
- "white",
- "space"
- ],
- "license": "MIT",
- "name": "collapse-white-space",
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify . -s collapseWhiteSpace -o collapse-white-space.js",
+ "build-mangle": "browserify . -s collapseWhiteSpace -p tinyify -o collapse-white-space.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test": "npm run format && npm run build && npm run test-coverage"
},
"prettier": {
"tabWidth": 2,
@@ -57,30 +49,22 @@
"semi": false,
"trailingComma": "none"
},
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wooorm/collapse-white-space.git"
- },
- "scripts": {
- "build": "npm run build-bundle && npm run build-mangle",
- "build-bundle": "browserify . -s collapseWhiteSpace -o collapse-white-space.js",
- "build-mangle": "browserify . -s collapseWhiteSpace -p tinyify -o collapse-white-space.min.js",
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "test": "npm run format && npm run build && npm run test-coverage",
- "test-api": "node test",
- "test-coverage": "nyc --reporter lcov tape test.js"
- },
- "version": "1.0.6",
"xo": {
"prettier": true,
"esnext": false,
"ignores": [
"collapse-white-space.js"
]
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
}
-}
\ No newline at end of file
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/extend/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/extend/package.json
index 429364c0c37d04..85279f78054e5c 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/extend/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/extend/package.json
@@ -1,52 +1,42 @@
{
- "author": {
- "name": "Stefan Thomas",
- "email": "justmoon@members.fsf.org",
- "url": "http://www.justmoon.net"
- },
- "bugs": {
- "url": "https://github.com/justmoon/node-extend/issues"
- },
- "bundleDependencies": false,
- "contributors": [
- {
- "name": "Jordan Harband",
- "url": "https://github.com/ljharb"
- }
- ],
- "dependencies": {},
- "deprecated": false,
- "description": "Port of jQuery.extend for node.js and the browser",
- "devDependencies": {
- "@ljharb/eslint-config": "^12.2.1",
- "covert": "^1.1.0",
- "eslint": "^4.19.1",
- "jscs": "^3.0.7",
- "tape": "^4.9.1"
- },
- "homepage": "https://github.com/justmoon/node-extend#readme",
- "keywords": [
- "extend",
- "clone",
- "merge"
- ],
- "license": "MIT",
- "main": "index",
- "name": "extend",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/justmoon/node-extend.git"
- },
- "scripts": {
- "coverage": "covert test/index.js",
- "coverage-quiet": "covert test/index.js --quiet",
- "eslint": "eslint *.js */*.js",
- "jscs": "jscs *.js */*.js",
- "lint": "npm run jscs && npm run eslint",
- "posttest": "npm run coverage-quiet",
- "pretest": "npm run lint",
- "test": "npm run tests-only",
- "tests-only": "node test"
- },
- "version": "3.0.2"
-}
\ No newline at end of file
+ "name": "extend",
+ "author": "Stefan Thomas (http://www.justmoon.net)",
+ "version": "3.0.2",
+ "description": "Port of jQuery.extend for node.js and the browser",
+ "main": "index",
+ "scripts": {
+ "pretest": "npm run lint",
+ "test": "npm run tests-only",
+ "posttest": "npm run coverage-quiet",
+ "tests-only": "node test",
+ "coverage": "covert test/index.js",
+ "coverage-quiet": "covert test/index.js --quiet",
+ "lint": "npm run jscs && npm run eslint",
+ "jscs": "jscs *.js */*.js",
+ "eslint": "eslint *.js */*.js"
+ },
+ "contributors": [
+ {
+ "name": "Jordan Harband",
+ "url": "https://github.com/ljharb"
+ }
+ ],
+ "keywords": [
+ "extend",
+ "clone",
+ "merge"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/justmoon/node-extend.git"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "@ljharb/eslint-config": "^12.2.1",
+ "covert": "^1.1.0",
+ "eslint": "^4.19.1",
+ "jscs": "^3.0.7",
+ "tape": "^4.9.1"
+ },
+ "license": "MIT"
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/inherits/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/inherits/package.json
index 9642125b71d65f..37b4366b83e63e 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/inherits/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/inherits/package.json
@@ -1,19 +1,7 @@
{
- "browser": "./inherits_browser.js",
- "bugs": {
- "url": "https://github.com/isaacs/inherits/issues"
- },
- "bundleDependencies": false,
- "deprecated": false,
+ "name": "inherits",
"description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
- "devDependencies": {
- "tap": "^14.2.4"
- },
- "files": [
- "inherits.js",
- "inherits_browser.js"
- ],
- "homepage": "https://github.com/isaacs/inherits#readme",
+ "version": "2.0.4",
"keywords": [
"inheritance",
"class",
@@ -24,15 +12,18 @@
"browser",
"browserify"
],
- "license": "ISC",
"main": "./inherits.js",
- "name": "inherits",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/inherits.git"
- },
+ "browser": "./inherits_browser.js",
+ "repository": "git://github.com/isaacs/inherits",
+ "license": "ISC",
"scripts": {
"test": "tap"
},
- "version": "2.0.4"
-}
\ No newline at end of file
+ "devDependencies": {
+ "tap": "^14.2.4"
+ },
+ "files": [
+ "inherits.js",
+ "inherits_browser.js"
+ ]
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/is-alphabetical/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/is-alphabetical/package.json
index 312a56e6e0add2..c7764f2a09e8c8 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/is-alphabetical/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/is-alphabetical/package.json
@@ -1,23 +1,29 @@
{
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- },
- "bugs": {
- "url": "https://github.com/wooorm/is-alphabetical/issues"
+ "name": "is-alphabetical",
+ "version": "1.0.4",
+ "description": "Check if a character is alphabetical",
+ "license": "MIT",
+ "keywords": [
+ "string",
+ "character",
+ "char",
+ "code",
+ "alphabetical"
+ ],
+ "repository": "wooorm/is-alphabetical",
+ "bugs": "https://github.com/wooorm/is-alphabetical/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
},
- "bundleDependencies": false,
+ "author": "Titus Wormer (https://wooorm.com)",
"contributors": [
- {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- }
+ "Titus Wormer (https://wooorm.com)"
+ ],
+ "files": [
+ "index.js"
],
"dependencies": {},
- "deprecated": false,
- "description": "Check if a character is alphabetical",
"devDependencies": {
"browserify": "^16.0.0",
"nyc": "^15.0.0",
@@ -28,28 +34,14 @@
"tinyify": "^2.0.0",
"xo": "^0.25.0"
},
- "files": [
- "index.js"
- ],
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- },
- "homepage": "https://github.com/wooorm/is-alphabetical#readme",
- "keywords": [
- "string",
- "character",
- "char",
- "code",
- "alphabetical"
- ],
- "license": "MIT",
- "name": "is-alphabetical",
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify -s isAlphabetical -o is-alphabetical.js",
+ "build-mangle": "browserify -s isAlphabetical -p tinyify -o is-alphabetical.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test": "npm run format && npm run build && npm run test-coverage"
},
"prettier": {
"tabWidth": 2,
@@ -59,25 +51,6 @@
"semi": false,
"trailingComma": "none"
},
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wooorm/is-alphabetical.git"
- },
- "scripts": {
- "build": "npm run build-bundle && npm run build-mangle",
- "build-bundle": "browserify -s isAlphabetical -o is-alphabetical.js",
- "build-mangle": "browserify -s isAlphabetical -p tinyify -o is-alphabetical.min.js",
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "test": "npm run format && npm run build && npm run test-coverage",
- "test-api": "node test",
- "test-coverage": "nyc --reporter lcov tape test.js"
- },
- "version": "1.0.4",
"xo": {
"prettier": true,
"esnext": false,
@@ -87,5 +60,16 @@
"ignores": [
"is-alphabetical.js"
]
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
}
-}
\ No newline at end of file
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/is-alphanumerical/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/is-alphanumerical/package.json
index 09c2212afe3978..edaa31e66f0ea1 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/is-alphanumerical/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/is-alphanumerical/package.json
@@ -1,26 +1,34 @@
{
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- },
- "bugs": {
- "url": "https://github.com/wooorm/is-alphanumerical/issues"
+ "name": "is-alphanumerical",
+ "version": "1.0.4",
+ "description": "Check if a character is alphanumerical",
+ "license": "MIT",
+ "keywords": [
+ "string",
+ "character",
+ "char",
+ "code",
+ "alphabetical",
+ "numerical",
+ "alphanumerical"
+ ],
+ "repository": "wooorm/is-alphanumerical",
+ "bugs": "https://github.com/wooorm/is-alphanumerical/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
},
- "bundleDependencies": false,
+ "author": "Titus Wormer (https://wooorm.com)",
"contributors": [
- {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- }
+ "Titus Wormer (https://wooorm.com)"
+ ],
+ "files": [
+ "index.js"
],
"dependencies": {
"is-alphabetical": "^1.0.0",
"is-decimal": "^1.0.0"
},
- "deprecated": false,
- "description": "Check if a character is alphanumerical",
"devDependencies": {
"browserify": "^16.0.0",
"nyc": "^15.0.0",
@@ -31,30 +39,14 @@
"tinyify": "^2.0.0",
"xo": "^0.25.0"
},
- "files": [
- "index.js"
- ],
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- },
- "homepage": "https://github.com/wooorm/is-alphanumerical#readme",
- "keywords": [
- "string",
- "character",
- "char",
- "code",
- "alphabetical",
- "numerical",
- "alphanumerical"
- ],
- "license": "MIT",
- "name": "is-alphanumerical",
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify . -s isAlphanumerical -o is-alphanumerical.js",
+ "build-mangle": "browserify . -s isAlphanumerical -p tinyify -o is-alphanumerical.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test": "npm run format && npm run build && npm run test-coverage"
},
"prettier": {
"tabWidth": 2,
@@ -64,30 +56,22 @@
"semi": false,
"trailingComma": "none"
},
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wooorm/is-alphanumerical.git"
- },
- "scripts": {
- "build": "npm run build-bundle && npm run build-mangle",
- "build-bundle": "browserify . -s isAlphanumerical -o is-alphanumerical.js",
- "build-mangle": "browserify . -s isAlphanumerical -p tinyify -o is-alphanumerical.min.js",
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "test": "npm run format && npm run build && npm run test-coverage",
- "test-api": "node test",
- "test-coverage": "nyc --reporter lcov tape test.js"
- },
- "version": "1.0.4",
"xo": {
"prettier": true,
"esnext": false,
"ignores": [
"is-alphanumerical.js"
]
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
}
-}
\ No newline at end of file
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/is-buffer/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/is-buffer/package.json
index ccde4062936080..ea12137a63cf0f 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/is-buffer/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/is-buffer/package.json
@@ -1,4 +1,7 @@
{
+ "name": "is-buffer",
+ "description": "Determine if an object is a Buffer",
+ "version": "1.1.6",
"author": {
"name": "Feross Aboukhadijeh",
"email": "feross@feross.org",
@@ -7,16 +10,12 @@
"bugs": {
"url": "https://github.com/feross/is-buffer/issues"
},
- "bundleDependencies": false,
"dependencies": {},
- "deprecated": false,
- "description": "Determine if an object is a Buffer",
"devDependencies": {
"standard": "*",
"tape": "^4.0.0",
"zuul": "^3.0.0"
},
- "homepage": "https://github.com/feross/is-buffer#readme",
"keywords": [
"buffer",
"buffers",
@@ -36,7 +35,6 @@
],
"license": "MIT",
"main": "index.js",
- "name": "is-buffer",
"repository": {
"type": "git",
"url": "git://github.com/feross/is-buffer.git"
@@ -49,6 +47,5 @@
},
"testling": {
"files": "test/*.js"
- },
- "version": "1.1.6"
-}
\ No newline at end of file
+ }
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/is-decimal/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/is-decimal/package.json
index 9c9d45e06dc51d..5589c2a4f1f1b7 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/is-decimal/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/is-decimal/package.json
@@ -1,23 +1,29 @@
{
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- },
- "bugs": {
- "url": "https://github.com/wooorm/is-decimal/issues"
+ "name": "is-decimal",
+ "version": "1.0.4",
+ "description": "Check if a character is decimal",
+ "license": "MIT",
+ "keywords": [
+ "string",
+ "character",
+ "char",
+ "code",
+ "decimal"
+ ],
+ "repository": "wooorm/is-decimal",
+ "bugs": "https://github.com/wooorm/is-decimal/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
},
- "bundleDependencies": false,
+ "author": "Titus Wormer (https://wooorm.com)",
"contributors": [
- {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- }
+ "Titus Wormer (https://wooorm.com)"
+ ],
+ "files": [
+ "index.js"
],
"dependencies": {},
- "deprecated": false,
- "description": "Check if a character is decimal",
"devDependencies": {
"browserify": "^16.0.0",
"nyc": "^15.0.0",
@@ -28,28 +34,14 @@
"tinyify": "^2.0.0",
"xo": "^0.25.0"
},
- "files": [
- "index.js"
- ],
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- },
- "homepage": "https://github.com/wooorm/is-decimal#readme",
- "keywords": [
- "string",
- "character",
- "char",
- "code",
- "decimal"
- ],
- "license": "MIT",
- "name": "is-decimal",
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify . -s isDecimal -o is-decimal.js",
+ "build-mangle": "browserify . -s isDecimal -p tinyify -o is-decimal.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test": "npm run format && npm run build && npm run test-coverage"
},
"prettier": {
"tabWidth": 2,
@@ -59,30 +51,22 @@
"semi": false,
"trailingComma": "none"
},
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wooorm/is-decimal.git"
- },
- "scripts": {
- "build": "npm run build-bundle && npm run build-mangle",
- "build-bundle": "browserify . -s isDecimal -o is-decimal.js",
- "build-mangle": "browserify . -s isDecimal -p tinyify -o is-decimal.min.js",
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "test": "npm run format && npm run build && npm run test-coverage",
- "test-api": "node test",
- "test-coverage": "nyc --reporter lcov tape test.js"
- },
- "version": "1.0.4",
"xo": {
"prettier": true,
"esnext": false,
"ignores": [
"is-decimal.js"
]
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
}
-}
\ No newline at end of file
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/is-hexadecimal/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/is-hexadecimal/package.json
index acd830adc42206..b8741fe102945a 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/is-hexadecimal/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/is-hexadecimal/package.json
@@ -1,23 +1,29 @@
{
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- },
- "bugs": {
- "url": "https://github.com/wooorm/is-hexadecimal/issues"
+ "name": "is-hexadecimal",
+ "version": "1.0.4",
+ "description": "Check if a character is hexadecimal",
+ "license": "MIT",
+ "keywords": [
+ "string",
+ "character",
+ "char",
+ "code",
+ "hexadecimal"
+ ],
+ "repository": "wooorm/is-hexadecimal",
+ "bugs": "https://github.com/wooorm/is-hexadecimal/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
},
- "bundleDependencies": false,
+ "author": "Titus Wormer (https://wooorm.com)",
"contributors": [
- {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- }
+ "Titus Wormer (https://wooorm.com)"
+ ],
+ "files": [
+ "index.js"
],
"dependencies": {},
- "deprecated": false,
- "description": "Check if a character is hexadecimal",
"devDependencies": {
"browserify": "^16.0.0",
"nyc": "^15.0.0",
@@ -28,28 +34,14 @@
"tinyify": "^2.0.0",
"xo": "^0.25.0"
},
- "files": [
- "index.js"
- ],
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- },
- "homepage": "https://github.com/wooorm/is-hexadecimal#readme",
- "keywords": [
- "string",
- "character",
- "char",
- "code",
- "hexadecimal"
- ],
- "license": "MIT",
- "name": "is-hexadecimal",
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify . -s isHexadecimal -o is-hexadecimal.js",
+ "build-mangle": "browserify . -s isHexadecimal -p tinyify -o is-hexadecimal.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test": "npm run format && npm run build && npm run test-coverage"
},
"prettier": {
"tabWidth": 2,
@@ -59,30 +51,22 @@
"semi": false,
"trailingComma": "none"
},
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wooorm/is-hexadecimal.git"
- },
- "scripts": {
- "build": "npm run build-bundle && npm run build-mangle",
- "build-bundle": "browserify . -s isHexadecimal -o is-hexadecimal.js",
- "build-mangle": "browserify . -s isHexadecimal -p tinyify -o is-hexadecimal.min.js",
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "test": "npm run format && npm run build && npm run test-coverage",
- "test-api": "node test",
- "test-coverage": "nyc --reporter lcov tape test.js"
- },
- "version": "1.0.4",
"xo": {
"prettier": true,
"esnext": false,
"ignores": [
"is-hexadecimal.js"
]
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
}
-}
\ No newline at end of file
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/is-plain-obj/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/is-plain-obj/package.json
index 64475946dac06c..d331f6e8169900 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/is-plain-obj/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/is-plain-obj/package.json
@@ -1,25 +1,23 @@
{
+ "name": "is-plain-obj",
+ "version": "1.1.0",
+ "description": "Check if a value is a plain object",
+ "license": "MIT",
+ "repository": "sindresorhus/is-plain-obj",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
},
- "bugs": {
- "url": "https://github.com/sindresorhus/is-plain-obj/issues"
- },
- "bundleDependencies": false,
- "deprecated": false,
- "description": "Check if a value is a plain object",
- "devDependencies": {
- "ava": "0.0.4"
- },
"engines": {
"node": ">=0.10.0"
},
+ "scripts": {
+ "test": "node test.js"
+ },
"files": [
"index.js"
],
- "homepage": "https://github.com/sindresorhus/is-plain-obj#readme",
"keywords": [
"obj",
"object",
@@ -32,14 +30,7 @@
"pure",
"simple"
],
- "license": "MIT",
- "name": "is-plain-obj",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/sindresorhus/is-plain-obj.git"
- },
- "scripts": {
- "test": "node test.js"
- },
- "version": "1.1.0"
-}
\ No newline at end of file
+ "devDependencies": {
+ "ava": "0.0.4"
+ }
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/is-whitespace-character/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/is-whitespace-character/package.json
index 6a7a6597798e5e..d6b35d9a0b5df4 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/is-whitespace-character/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/is-whitespace-character/package.json
@@ -1,23 +1,31 @@
{
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- },
- "bugs": {
- "url": "https://github.com/wooorm/is-whitespace-character/issues"
+ "name": "is-whitespace-character",
+ "version": "1.0.4",
+ "description": "Check if a character is a whitespace character",
+ "license": "MIT",
+ "keywords": [
+ "string",
+ "character",
+ "char",
+ "code",
+ "whitespace",
+ "white",
+ "space"
+ ],
+ "repository": "wooorm/is-whitespace-character",
+ "bugs": "https://github.com/wooorm/is-whitespace-character/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
},
- "bundleDependencies": false,
+ "author": "Titus Wormer (https://wooorm.com)",
"contributors": [
- {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- }
+ "Titus Wormer (https://wooorm.com)"
+ ],
+ "files": [
+ "index.js"
],
"dependencies": {},
- "deprecated": false,
- "description": "Check if a character is a whitespace character",
"devDependencies": {
"browserify": "^16.0.0",
"nyc": "^15.0.0",
@@ -28,30 +36,14 @@
"tinyify": "^2.0.0",
"xo": "^0.25.0"
},
- "files": [
- "index.js"
- ],
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- },
- "homepage": "https://github.com/wooorm/is-whitespace-character#readme",
- "keywords": [
- "string",
- "character",
- "char",
- "code",
- "whitespace",
- "white",
- "space"
- ],
- "license": "MIT",
- "name": "is-whitespace-character",
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify . -s isWhitespaceCharacter -o is-whitespace-character.js",
+ "build-mangle": "browserify . -s isWhitespaceCharacter -p tinyify -o is-whitespace-character.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test": "npm run format && npm run build && npm run test-coverage"
},
"prettier": {
"tabWidth": 2,
@@ -61,30 +53,22 @@
"semi": false,
"trailingComma": "none"
},
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wooorm/is-whitespace-character.git"
- },
- "scripts": {
- "build": "npm run build-bundle && npm run build-mangle",
- "build-bundle": "browserify . -s isWhitespaceCharacter -o is-whitespace-character.js",
- "build-mangle": "browserify . -s isWhitespaceCharacter -p tinyify -o is-whitespace-character.min.js",
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "test": "npm run format && npm run build && npm run test-coverage",
- "test-api": "node test",
- "test-coverage": "nyc --reporter lcov tape test.js"
- },
- "version": "1.0.4",
"xo": {
"prettier": true,
"esnext": false,
"ignores": [
"is-whitespace-character.js"
]
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
}
-}
\ No newline at end of file
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/is-word-character/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/is-word-character/package.json
index b2fc0a1558ce2d..42c262cf64fa63 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/is-word-character/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/is-word-character/package.json
@@ -1,23 +1,29 @@
{
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- },
- "bugs": {
- "url": "https://github.com/wooorm/is-word-character/issues"
+ "name": "is-word-character",
+ "version": "1.0.4",
+ "description": "Check if a character is a word character",
+ "license": "MIT",
+ "keywords": [
+ "string",
+ "character",
+ "char",
+ "code",
+ "word"
+ ],
+ "repository": "wooorm/is-word-character",
+ "bugs": "https://github.com/wooorm/is-word-character/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
},
- "bundleDependencies": false,
+ "author": "Titus Wormer (https://wooorm.com)",
"contributors": [
- {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- }
+ "Titus Wormer (https://wooorm.com)"
+ ],
+ "files": [
+ "index.js"
],
"dependencies": {},
- "deprecated": false,
- "description": "Check if a character is a word character",
"devDependencies": {
"browserify": "^16.0.0",
"nyc": "^15.0.0",
@@ -28,28 +34,14 @@
"tinyify": "^2.0.0",
"xo": "^0.25.0"
},
- "files": [
- "index.js"
- ],
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- },
- "homepage": "https://github.com/wooorm/is-word-character#readme",
- "keywords": [
- "string",
- "character",
- "char",
- "code",
- "word"
- ],
- "license": "MIT",
- "name": "is-word-character",
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify . -s isWordCharacter -o is-word-character.js",
+ "build-mangle": "browserify . -s isWordCharacter -p tinyify -o is-word-character.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test": "npm run format && npm run build && npm run test-coverage"
},
"prettier": {
"tabWidth": 2,
@@ -59,30 +51,22 @@
"semi": false,
"trailingComma": "none"
},
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wooorm/is-word-character.git"
- },
- "scripts": {
- "build": "npm run build-bundle && npm run build-mangle",
- "build-bundle": "browserify . -s isWordCharacter -o is-word-character.js",
- "build-mangle": "browserify . -s isWordCharacter -p tinyify -o is-word-character.min.js",
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "test": "npm run format && npm run build && npm run test-coverage",
- "test-api": "node test",
- "test-coverage": "nyc --reporter lcov tape test.js"
- },
- "version": "1.0.4",
"xo": {
"prettier": true,
"esnext": false,
"ignores": [
"is-word-character.js"
]
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
}
-}
\ No newline at end of file
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/markdown-escapes/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/markdown-escapes/package.json
index 0e4eed169f2b65..7f94d86ad7acc9 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/markdown-escapes/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/markdown-escapes/package.json
@@ -1,23 +1,29 @@
{
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- },
- "bugs": {
- "url": "https://github.com/wooorm/markdown-escapes/issues"
+ "name": "markdown-escapes",
+ "version": "1.0.4",
+ "description": "List of escapable characters in markdown",
+ "license": "MIT",
+ "keywords": [
+ "markdown",
+ "escape",
+ "pedantic",
+ "gfm",
+ "commonmark"
+ ],
+ "repository": "wooorm/markdown-escapes",
+ "bugs": "https://github.com/wooorm/markdown-escapes/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
},
- "bundleDependencies": false,
+ "author": "Titus Wormer (https://wooorm.com)",
"contributors": [
- {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- }
+ "Titus Wormer (https://wooorm.com)"
+ ],
+ "files": [
+ "index.js"
],
"dependencies": {},
- "deprecated": false,
- "description": "List of escapable characters in markdown",
"devDependencies": {
"browserify": "^16.0.0",
"nyc": "^14.0.0",
@@ -28,28 +34,19 @@
"tinyify": "^2.0.0",
"xo": "^0.25.0"
},
- "files": [
- "index.js"
- ],
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify . -s markdownEscapes -o markdown-escapes.js",
+ "build-mangle": "browserify . -s markdownEscapes -p tinyify -o markdown-escapes.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test": "npm run format && npm run build && npm run test-coverage"
},
- "homepage": "https://github.com/wooorm/markdown-escapes#readme",
- "keywords": [
- "markdown",
- "escape",
- "pedantic",
- "gfm",
- "commonmark"
- ],
- "license": "MIT",
- "name": "markdown-escapes",
- "nyc": {
- "check-coverage": true,
- "lines": 100,
- "functions": 100,
- "branches": 100
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
},
"prettier": {
"tabWidth": 2,
@@ -59,30 +56,17 @@
"semi": false,
"trailingComma": "none"
},
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wooorm/markdown-escapes.git"
- },
- "scripts": {
- "build": "npm run build-bundle && npm run build-mangle",
- "build-bundle": "browserify . -s markdownEscapes -o markdown-escapes.js",
- "build-mangle": "browserify . -s markdownEscapes -p tinyify -o markdown-escapes.min.js",
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "test": "npm run format && npm run build && npm run test-coverage",
- "test-api": "node test",
- "test-coverage": "nyc --reporter lcov tape test.js"
- },
- "version": "1.0.4",
"xo": {
"prettier": true,
"esnext": false,
"ignores": [
"markdown-escapes.js"
]
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
}
-}
\ No newline at end of file
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/parse-entities/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/parse-entities/package.json
index f2eee3452e6f79..a5e1bc46f6a9ba 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/parse-entities/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/parse-entities/package.json
@@ -1,22 +1,32 @@
{
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- },
+ "name": "parse-entities",
+ "version": "1.2.2",
+ "description": "Parse HTML character references: fast, spec-compliant, positional information",
+ "license": "MIT",
+ "keywords": [
+ "parse",
+ "html",
+ "character",
+ "reference",
+ "entity",
+ "entities"
+ ],
+ "repository": "wooorm/parse-entities",
+ "bugs": "https://github.com/wooorm/parse-entities/issues",
+ "author": "Titus Wormer (https://wooorm.com)",
+ "contributors": [
+ "Titus Wormer (https://wooorm.com)"
+ ],
"browser": {
"./decode-entity.js": "./decode-entity.browser.js"
},
- "bugs": {
- "url": "https://github.com/wooorm/parse-entities/issues"
+ "react-native": {
+ "./decode-entity.js": "./decode-entity.js"
},
- "bundleDependencies": false,
- "contributors": [
- {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- }
+ "files": [
+ "index.js",
+ "decode-entity.js",
+ "decode-entity.browser.js"
],
"dependencies": {
"character-entities": "^1.0.0",
@@ -26,8 +36,6 @@
"is-decimal": "^1.0.0",
"is-hexadecimal": "^1.0.0"
},
- "deprecated": false,
- "description": "Parse HTML character references: fast, spec-compliant, positional information",
"devDependencies": {
"browserify": "^16.0.0",
"nyc": "^14.0.0",
@@ -39,22 +47,16 @@
"tinyify": "^2.4.3",
"xo": "^0.24.0"
},
- "files": [
- "index.js",
- "decode-entity.js",
- "decode-entity.browser.js"
- ],
- "homepage": "https://github.com/wooorm/parse-entities#readme",
- "keywords": [
- "parse",
- "html",
- "character",
- "reference",
- "entity",
- "entities"
- ],
- "license": "MIT",
- "name": "parse-entities",
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify . -s parseEntities > parse-entities.js",
+ "build-mangle": "browserify . -s parseEntities -p tinyify > parse-entities.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test-browser": "browserify test.js | tape-run",
+ "test": "npm run format && npm run build && npm run test-coverage && npm run test-browser"
+ },
"nyc": {
"check-coverage": true,
"lines": 100,
@@ -69,29 +71,6 @@
"semi": false,
"trailingComma": "none"
},
- "react-native": {
- "./decode-entity.js": "./decode-entity.js"
- },
- "remarkConfig": {
- "plugins": [
- "preset-wooorm"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wooorm/parse-entities.git"
- },
- "scripts": {
- "build": "npm run build-bundle && npm run build-mangle",
- "build-bundle": "browserify . -s parseEntities > parse-entities.js",
- "build-mangle": "browserify . -s parseEntities -p tinyify > parse-entities.min.js",
- "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
- "test": "npm run format && npm run build && npm run test-coverage && npm run test-browser",
- "test-api": "node test",
- "test-browser": "browserify test.js | tape-run",
- "test-coverage": "nyc --reporter lcov tape test.js"
- },
- "version": "1.2.2",
"xo": {
"prettier": true,
"esnext": false,
@@ -103,5 +82,10 @@
"ignores": [
"parse-entities.js"
]
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
}
-}
\ No newline at end of file
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/remark-parse/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/remark-parse/package.json
index b47866c95b256b..822420cb25200a 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/remark-parse/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/remark-parse/package.json
@@ -1,23 +1,27 @@
{
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "http://wooorm.com"
- },
- "bugs": {
- "url": "https://github.com/remarkjs/remark/issues"
- },
- "bundleDependencies": false,
+ "name": "remark-parse",
+ "version": "5.0.0",
+ "description": "Markdown parser for remark",
+ "license": "MIT",
+ "keywords": [
+ "markdown",
+ "abstract",
+ "syntax",
+ "tree",
+ "ast",
+ "parse"
+ ],
+ "homepage": "http://remark.js.org",
+ "repository": "https://github.com/remarkjs/remark/tree/master/packages/remark-parse",
+ "bugs": "https://github.com/remarkjs/remark/issues",
+ "author": "Titus Wormer (http://wooorm.com)",
"contributors": [
- {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "http://wooorm.com"
- },
- {
- "name": "Eugene Sharygin",
- "email": "eush77@gmail.com"
- }
+ "Titus Wormer (http://wooorm.com)",
+ "Eugene Sharygin "
+ ],
+ "files": [
+ "index.js",
+ "lib"
],
"dependencies": {
"collapse-white-space": "^1.0.2",
@@ -36,27 +40,5 @@
"vfile-location": "^2.0.0",
"xtend": "^4.0.1"
},
- "deprecated": false,
- "description": "Markdown parser for remark",
- "files": [
- "index.js",
- "lib"
- ],
- "homepage": "http://remark.js.org",
- "keywords": [
- "markdown",
- "abstract",
- "syntax",
- "tree",
- "ast",
- "parse"
- ],
- "license": "MIT",
- "name": "remark-parse",
- "repository": {
- "type": "git",
- "url": "https://github.com/remarkjs/remark/tree/master/packages/remark-parse"
- },
- "version": "5.0.0",
"xo": false
-}
\ No newline at end of file
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/repeat-string/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/repeat-string/package.json
index 90fa9a34d8afb7..09f889299b6683 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/repeat-string/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/repeat-string/package.json
@@ -1,41 +1,31 @@
{
- "author": {
- "name": "Jon Schlinkert",
- "url": "http://github.com/jonschlinkert"
- },
+ "name": "repeat-string",
+ "description": "Repeat the given string n times. Fastest implementation for repeating a string.",
+ "version": "1.6.1",
+ "homepage": "https://github.com/jonschlinkert/repeat-string",
+ "author": "Jon Schlinkert (http://github.com/jonschlinkert)",
+ "contributors": [
+ "Brian Woodward (https://github.com/doowb)",
+ "Jon Schlinkert (http://twitter.com/jonschlinkert)",
+ "Linus Unnebäck (http://linus.unnebäck.se)",
+ "Thijs Busser (http://tbusser.net)",
+ "Titus (wooorm.com)"
+ ],
+ "repository": "jonschlinkert/repeat-string",
"bugs": {
"url": "https://github.com/jonschlinkert/repeat-string/issues"
},
- "bundleDependencies": false,
- "contributors": [
- {
- "name": "Brian Woodward",
- "email": "brian.woodward@gmail.com",
- "url": "https://github.com/doowb"
- },
- {
- "name": "Jon Schlinkert",
- "email": "jon.schlinkert@sellside.com",
- "url": "http://twitter.com/jonschlinkert"
- },
- {
- "name": "Linus Unnebäck",
- "email": "linus@folkdatorn.se",
- "url": "http://linus.unnebäck.se"
- },
- {
- "name": "Thijs Busser",
- "email": "tbusser@gmail.com",
- "url": "http://tbusser.net"
- },
- {
- "name": "Titus",
- "email": "tituswormer@gmail.com",
- "url": "wooorm.com"
- }
+ "license": "MIT",
+ "files": [
+ "index.js"
],
- "deprecated": false,
- "description": "Repeat the given string n times. Fastest implementation for repeating a string.",
+ "main": "index.js",
+ "engines": {
+ "node": ">=0.10"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
"devDependencies": {
"ansi-cyan": "^0.1.1",
"benchmarked": "^0.2.5",
@@ -46,13 +36,6 @@
"text-table": "^0.2.0",
"yargs-parser": "^4.0.2"
},
- "engines": {
- "node": ">=0.10"
- },
- "files": [
- "index.js"
- ],
- "homepage": "https://github.com/jonschlinkert/repeat-string",
"keywords": [
"fast",
"fastest",
@@ -70,16 +53,6 @@
"string",
"times"
],
- "license": "MIT",
- "main": "index.js",
- "name": "repeat-string",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/jonschlinkert/repeat-string.git"
- },
- "scripts": {
- "test": "mocha"
- },
"verb": {
"toc": false,
"layout": "default",
@@ -100,6 +73,5 @@
"reflinks": [
"verb"
]
- },
- "version": "1.6.1"
-}
\ No newline at end of file
+ }
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/replace-ext/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/replace-ext/package.json
index e616e7c2258223..27dbe31042d0ff 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/replace-ext/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/replace-ext/package.json
@@ -1,26 +1,30 @@
{
- "author": {
- "name": "Gulp Team",
- "email": "team@gulpjs.com",
- "url": "http://gulpjs.com/"
- },
- "bugs": {
- "url": "https://github.com/gulpjs/replace-ext/issues"
- },
- "bundleDependencies": false,
+ "name": "replace-ext",
+ "version": "1.0.0",
+ "description": "Replaces a file extension with another one",
+ "author": "Gulp Team (http://gulpjs.com/)",
"contributors": [
- {
- "name": "Eric Schoffstall",
- "email": "yo@contra.io"
- },
- {
- "name": "Blaine Bublitz",
- "email": "blaine.bublitz@gmail.com"
- }
+ "Eric Schoffstall ",
+ "Blaine Bublitz "
+ ],
+ "repository": "gulpjs/replace-ext",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ },
+ "main": "index.js",
+ "files": [
+ "LICENSE",
+ "index.js"
],
+ "scripts": {
+ "lint": "eslint . && jscs index.js test/",
+ "pretest": "npm run lint",
+ "test": "mocha --async-only",
+ "cover": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly",
+ "coveralls": "npm run cover && istanbul-coveralls"
+ },
"dependencies": {},
- "deprecated": false,
- "description": "Replaces a file extension with another one",
"devDependencies": {
"eslint": "^1.10.3",
"eslint-config-gulp": "^2.0.0",
@@ -31,33 +35,10 @@
"jscs-preset-gulp": "^1.0.0",
"mocha": "^2.4.5"
},
- "engines": {
- "node": ">= 0.10"
- },
- "files": [
- "LICENSE",
- "index.js"
- ],
- "homepage": "https://github.com/gulpjs/replace-ext#readme",
"keywords": [
"gulp",
"extensions",
"filepath",
"basename"
- ],
- "license": "MIT",
- "main": "index.js",
- "name": "replace-ext",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/gulpjs/replace-ext.git"
- },
- "scripts": {
- "cover": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly",
- "coveralls": "npm run cover && istanbul-coveralls",
- "lint": "eslint . && jscs index.js test/",
- "pretest": "npm run lint",
- "test": "mocha --async-only"
- },
- "version": "1.0.0"
-}
\ No newline at end of file
+ ]
+}
diff --git a/tools/node_modules/eslint-plugin-markdown/node_modules/state-toggle/package.json b/tools/node_modules/eslint-plugin-markdown/node_modules/state-toggle/package.json
index 573df7117bfe98..1111db063669a9 100644
--- a/tools/node_modules/eslint-plugin-markdown/node_modules/state-toggle/package.json
+++ b/tools/node_modules/eslint-plugin-markdown/node_modules/state-toggle/package.json
@@ -1,23 +1,27 @@
{
- "author": {
- "name": "Titus Wormer",
- "email": "tituswormer@gmail.com",
- "url": "https://wooorm.com"
- },
- "bugs": {
- "url": "https://github.com/wooorm/state-toggle/issues"
+ "name": "state-toggle",
+ "version": "1.0.3",
+ "description": "Enter/exit a state",
+ "license": "MIT",
+ "keywords": [
+ "enter",
+ "exit",
+ "state"
+ ],
+ "repository": "wooorm/state-toggle",
+ "bugs": "https://github.com/wooorm/state-toggle/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
},
- "bundleDependencies": false,
+ "author": "Titus Wormer