Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v16.19.0 proposal #45791

Merged
merged 50 commits into from Dec 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
03dcbe3
build: fix bad upstream merge
sgallagher Sep 14, 2022
499750f
test: update list of known globals
aduh95 Oct 31, 2022
c80cf97
deps: update corepack to 0.14.2
nodejs-github-bot Oct 8, 2022
2901abe
deps: update undici to 5.11.0
nodejs-github-bot Oct 9, 2022
cd54bce
deps: update timezone
nodejs-github-bot Oct 18, 2022
ac24c80
build: remove redundant condition from common.gypi
richardlau Oct 19, 2022
1149ead
deps: upgrade openssl sources to OpenSSL_1_1_1s
RafaelGSS Nov 1, 2022
7c0da6a
deps: update archs files for OpenSSL-1.1.1s
RafaelGSS Nov 1, 2022
db31de6
readline: refactor to avoid unsafe regex primordials
aduh95 Oct 8, 2022
254358c
tools: refactor `avoid-prototype-pollution` lint rule
aduh95 Jun 17, 2022
cc819b4
tools: fix typo in `avoid-prototype-pollution` lint rule
aduh95 Aug 30, 2022
e7ed56f
tools: make license-builder.sh comply with shellcheck 0.8.0
Trott Dec 22, 2021
6f541d9
tools: have test-asan use ubuntu-20.04
panva Nov 22, 2022
1e0dcd1
cli: add `--watch`
MoLow Oct 3, 2022
97f6caf
test: split watch mode inspector tests to sequential
MoLow Oct 3, 2022
543d3d2
test: deflake watch mode tests
MoLow Oct 3, 2022
6d736a5
test: fix watch mode test flake
MoLow Oct 3, 2022
38202d3
deps: update undici to 5.12.0
nodejs-github-bot Oct 30, 2022
42e9d80
test: fix textdecoder test for small-icu builds
richardlau Oct 30, 2022
af9d821
deps: V8: cherry-pick b95354290941
legendecas Oct 10, 2022
e972ff7
deps: V8: backport bbd800c6e359
legendecas Oct 10, 2022
54608d8
src: split property helpers from node::Environment
legendecas Aug 1, 2022
87e3d00
deps: update corepack to 0.15.0
nodejs-github-bot Oct 30, 2022
9fbc8b2
deps: update corepack to 0.15.1
nodejs-github-bot Nov 7, 2022
3b2b70d
deps: upgrade npm to 8.19.3
npm-cli-bot Nov 7, 2022
5a0efa0
node-api: handle no support for external buffers
mhdawson Oct 25, 2022
cc2c764
build: support Python 3.11
lpinca Oct 26, 2022
749a4b3
tools: use Python 3.11 in GitHub Actions workflows
lpinca Oct 26, 2022
8c73279
util: add default value option to parsearg
Eomm Oct 7, 2022
c708d9b
doc: fix typo in parseArgs default value
tniessen Oct 20, 2022
33707dc
dgram: add dgram send queue info
theanarkh Aug 17, 2022
bbef3c4
build: add version info to timezone update PR
RaisinTen Oct 18, 2022
58c30dd
tools: update gr2m/create-or-update-pull-request-action
lpinca Oct 19, 2022
c77f660
tools: fix `create-or-update-pull-request-action` hash on GHA
aduh95 Oct 25, 2022
197df63
test: add a test to ensure the correctness of timezone upgrades
RaisinTen Nov 10, 2022
543493c
tools: fix timezone update tool
RaisinTen Oct 3, 2022
891368c
tools: remove faulty early termination logic from update-timezone.mjs
RaisinTen Oct 3, 2022
5a776d4
deps: update timezone to 2022f
richardlau Nov 24, 2022
37e9092
test_runner: support programmatically running `--test`
MoLow Oct 3, 2022
99ee5e4
test_runner: fix `duration_ms` to be milliseconds
MoLow Oct 3, 2022
64d343a
test_runner: support using `--inspect` with `--test`
MoLow Oct 3, 2022
02a18ea
test: fix test-runner-inspect
MoLow Oct 3, 2022
96d1316
cluster: use inspector utils
MoLow Sep 13, 2022
821d832
test: mark test-watch-mode* as flaky on all platforms
pbo-linaro Oct 20, 2022
0ae5694
tools: update certdata.txt
lpinca Nov 16, 2022
7048360
crypto: update root certificates
lpinca Nov 16, 2022
6733556
test: add test to validate changelogs for releases
richardlau Nov 15, 2022
953072d
src: let http2 streams end after session close
santigimeno Oct 27, 2022
fbc52e5
src: disambiguate terms used to refer to builtins and addons
joyeecheung Aug 4, 2022
2adea16
2022-12-13, Version 16.19.0 'Gallium' (LTS)
richardlau Dec 8, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Validating CODEOWNERS rules …
Expand Up @@ -108,7 +108,7 @@
/benchmark/misc/startup.js @nodejs/startup
/src/node.cc @nodejs/startup
/src/node_code_cache_stub.cc @nodejs/startup
/src/node_native_module* @nodejs/startup
/src/node_builtins* @nodejs/startup
/src/node_snapshot* @nodejs/startup
/lib/internal/bootstrap/* @nodejs/startup
/tools/code_cache/* @nodejs/startup
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/authors.yml
Expand Up @@ -19,7 +19,7 @@ jobs:
fetch-depth: '0' # This is required to actually get all the authors
persist-credentials: false
- run: tools/update-authors.mjs # Run the AUTHORS tool
- uses: gr2m/create-or-update-pull-request-action@6720400cad8e74d7adc64640e4e6ea6748b83d8f
- uses: gr2m/create-or-update-pull-request-action@dc1726cbf4dd3ce766af4ec29cfb660e0125e8ee
# Creates a PR or update the Action's existing PR, or
# no-op if the base branch is already up-to-date.
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-tarball.yml
Expand Up @@ -28,7 +28,7 @@ concurrency:
cancel-in-progress: true

env:
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
FLAKY_TESTS: keep_retrying

permissions:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-windows.yml
Expand Up @@ -23,7 +23,7 @@ concurrency:
cancel-in-progress: true

env:
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
FLAKY_TESTS: keep_retrying

permissions:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/coverage-linux.yml
Expand Up @@ -26,7 +26,7 @@ concurrency:
cancel-in-progress: true

env:
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
FLAKY_TESTS: keep_retrying

permissions:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/coverage-windows.yml
Expand Up @@ -28,7 +28,7 @@ concurrency:
cancel-in-progress: true

env:
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
FLAKY_TESTS: keep_retrying

permissions:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/find-inactive-collaborators.yml
Expand Up @@ -33,7 +33,7 @@ jobs:
run: tools/find-inactive-collaborators.mjs

- name: Open pull request
uses: gr2m/create-or-update-pull-request-action@6720400cad8e74d7adc64640e4e6ea6748b83d8f
uses: gr2m/create-or-update-pull-request-action@dc1726cbf4dd3ce766af4ec29cfb660e0125e8ee
# Creates a PR or update the Action's existing PR, or
# no-op if the base branch is already up-to-date.
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/find-inactive-tsc.yml
Expand Up @@ -42,7 +42,7 @@ jobs:
run: tools/find-inactive-tsc.mjs >> $GITHUB_ENV

- name: Open pull request
uses: gr2m/create-or-update-pull-request-action@6720400cad8e74d7adc64640e4e6ea6748b83d8f
uses: gr2m/create-or-update-pull-request-action@dc1726cbf4dd3ce766af4ec29cfb660e0125e8ee
# Creates a PR or update the Action's existing PR, or
# no-op if the base branch is already up-to-date.
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/license-builder.yml
Expand Up @@ -21,7 +21,7 @@ jobs:
with:
persist-credentials: false
- run: ./tools/license-builder.sh # Run the license builder tool
- uses: gr2m/create-or-update-pull-request-action@6720400cad8e74d7adc64640e4e6ea6748b83d8f
- uses: gr2m/create-or-update-pull-request-action@dc1726cbf4dd3ce766af4ec29cfb660e0125e8ee
# Creates a PR or update the Action's existing PR, or
# no-op if the base branch is already up-to-date.
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/linters.yml
Expand Up @@ -14,7 +14,7 @@ concurrency:
cancel-in-progress: true

env:
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
NODE_VERSION: lts/*

permissions:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test-asan.yml
Expand Up @@ -30,7 +30,7 @@ concurrency:

env:
ASAN_OPTIONS: intercept_tls_get_addr=0
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
FLAKY_TESTS: keep_retrying

permissions:
Expand All @@ -39,7 +39,7 @@ permissions:
jobs:
test-asan:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
env:
CC: clang
CXX: clang++
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-internet.yml
Expand Up @@ -21,7 +21,7 @@ concurrency:
cancel-in-progress: true

env:
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
FLAKY_TESTS: keep_retrying

permissions:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-linux.yml
Expand Up @@ -23,7 +23,7 @@ concurrency:
cancel-in-progress: true

env:
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
FLAKY_TESTS: keep_retrying

permissions:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-macos.yml
Expand Up @@ -29,7 +29,7 @@ concurrency:
cancel-in-progress: true

env:
PYTHON_VERSION: '3.10'
PYTHON_VERSION: '3.11'
FLAKY_TESTS: keep_retrying

permissions:
Expand Down
12 changes: 9 additions & 3 deletions .github/workflows/timezone-update.yml
Expand Up @@ -31,10 +31,16 @@ jobs:
persist-credentials: false
repository: unicode-org/icu-data

- name: Record new version
run: echo "new_version=$(ls icu-data/tzdata/icunew | tail -1)" >> $GITHUB_ENV

- run: ./tools/update-timezone.mjs

- name: Update the expected timezone version in test
run: echo "${{ env.new_version }}" > test/fixtures/tz-version.txt

- name: Open Pull Request
uses: gr2m/create-or-update-pull-request-action@6720400cad8e74d7adc64640e4e6ea6748b83d8f # Create a PR or update the Action's existing PR
uses: gr2m/create-or-update-pull-request-action@dc1726cbf4dd3ce766af4ec29cfb660e0125e8ee # Create a PR or update the Action's existing PR
env:
GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }}
with:
Expand All @@ -49,7 +55,7 @@ jobs:
console.log(process.versions.tz)
```
branch: actions/timezone-update
commit-message: 'deps: update timezone'
commit-message: 'deps: update timezone to ${{ env.new_version }}'
labels: dependencies
title: 'deps: update timezone'
title: 'deps: update timezone to ${{ env.new_version }}'
reviewers: \@nodejs/i18n-api
2 changes: 1 addition & 1 deletion .github/workflows/tools.yml
Expand Up @@ -65,7 +65,7 @@ jobs:
with:
persist-credentials: false
- run: ${{ matrix.run }}
- uses: gr2m/create-or-update-pull-request-action@6720400cad8e74d7adc64640e4e6ea6748b83d8f
- uses: gr2m/create-or-update-pull-request-action@dc1726cbf4dd3ce766af4ec29cfb660e0125e8ee
# Creates a PR or update the Action's existing PR, or
# no-op if the base branch is already up-to-date.
env:
Expand Down
6 changes: 3 additions & 3 deletions BUILDING.md
Expand Up @@ -237,7 +237,7 @@ The Node.js project supports Python >= 3 for building and testing.

* `gcc` and `g++` >= 8.3 or newer
* GNU Make 3.81 or newer
* Python 3.6, 3.7, 3.8, 3.9, or 3.10 (see note above)
* Python >=3.6 <=3.11 (see note above)
* For test coverage, your Python installation must include pip.

Installation via Linux package manager can be achieved with:
Expand All @@ -253,7 +253,7 @@ FreeBSD and OpenBSD users may also need to install `libexecinfo`.
#### macOS prerequisites

* Xcode Command Line Tools >= 11 for macOS
* Python 3.6, 3.7, 3.8, 3.9, or 3.10 (see note above)
* Python >=3.6 <=3.11 (see note above)
* For test coverage, your Python installation must include pip.

macOS users can install the `Xcode Command Line Tools` by running
Expand Down Expand Up @@ -577,7 +577,7 @@ to run it again before invoking `make -j4`.

##### Option 1: Manual install

* [Python 3.10](https://www.microsoft.com/en-us/p/python-310/9pjpw5ldxlz5)
* [Python 3.11](https://apps.microsoft.com/store/detail/python-311/9NRWMJP3717K)
* The "Desktop development with C++" workload from
[Visual Studio 2019](https://visualstudio.microsoft.com/vs/older-downloads/#visual-studio-2019-and-other-products) or
the "C++ build tools" workload from the
Expand Down
3 changes: 2 additions & 1 deletion CHANGELOG.md
Expand Up @@ -32,7 +32,8 @@ release.
</tr>
<tr>
<td valign="top">
<b><a href="doc/changelogs/CHANGELOG_V16.md#16.18.1">16.18.1</a></b><br/>
<b><a href="doc/changelogs/CHANGELOG_V16.md#16.19.0">16.19.0</a></b><br/>
<a href="doc/changelogs/CHANGELOG_V16.md#16.18.1">16.18.1</a><br/>
<a href="doc/changelogs/CHANGELOG_V16.md#16.18.0">16.18.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V16.md#16.17.1">16.17.1</a><br/>
<a href="doc/changelogs/CHANGELOG_V16.md#16.17.0">16.17.0</a><br/>
Expand Down
175 changes: 124 additions & 51 deletions LICENSE
Expand Up @@ -763,56 +763,129 @@ The externally maintained libraries used by Node.js are:

- OpenSSL, located at deps/openssl, is licensed as follows:
"""
Copyright (c) 1998-2019 The OpenSSL Project. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.

3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
"This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit. (http://www.openssl.org/)"

4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
endorse or promote products derived from this software without
prior written permission. For written permission, please contact
openssl-core@openssl.org.

5. Products derived from this software may not be called "OpenSSL"
nor may "OpenSSL" appear in their names without prior written
permission of the OpenSSL Project.

6. Redistributions of any form whatsoever must retain the following
acknowledgment:
"This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/)"

THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
====================================================================

This product includes cryptographic software written by Eric Young
(eay@cryptsoft.com). This product includes software written by Tim
Hudson (tjh@cryptsoft.com).
LICENSE ISSUES
==============

The OpenSSL toolkit stays under a double license, i.e. both the conditions of
the OpenSSL License and the original SSLeay license apply to the toolkit.
See below for the actual license texts.

OpenSSL License
---------------

/* ====================================================================
* Copyright (c) 1998-2019 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
*
*/

Original SSLeay License
-----------------------

/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
"""

- Punycode.js, located at lib/punycode.js, is licensed as follows:
Expand Down Expand Up @@ -1340,7 +1413,7 @@ The externally maintained libraries used by Node.js are:

- ESLint, located at tools/node_modules/eslint, is licensed as follows:
"""
Copyright JS Foundation and other contributors, https://js.foundation
Copyright OpenJS Foundation and other contributors, <www.openjsf.org>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down