+
npm-access
- @11.9.0
+ @11.11.0
Set access level on published packages
+
npm-adduser
- @11.9.0
+ @11.11.0
Add a registry user account
+
npm-audit
- @11.9.0
+ @11.11.0
Run a security audit
+
npm-bugs
- @11.9.0
+ @11.11.0
Report bugs for a package in a web browser
+
npm-cache
- @11.9.0
+ @11.11.0
Manipulates packages cache
+
npm-ci
- @11.9.0
+ @11.11.0
Clean install a project
+
npm-completion
- @11.9.0
+ @11.11.0
Tab Completion for npm
+
npm-config
- @11.9.0
+ @11.11.0
Manage the npm configuration files
+
npm-dedupe
- @11.9.0
+ @11.11.0
Reduce duplication in the package tree
+
npm-deprecate
- @11.9.0
+ @11.11.0
Deprecate a version of a package
+
npm-diff
- @11.9.0
+ @11.11.0
The registry diff command
+
npm-dist-tag
- @11.9.0
+ @11.11.0
Modify package distribution tags
+
npm-docs
- @11.9.0
+ @11.11.0
Open documentation for a package in a web browser
+
npm-doctor
- @11.9.0
+ @11.11.0
Check the health of your npm environment
+
npm-edit
- @11.9.0
+ @11.11.0
Edit an installed package
+
npm-exec
- @11.9.0
+ @11.11.0
Run a command from a local or remote npm package
+
npm-explain
- @11.9.0
+ @11.11.0
Explain installed packages
+
npm-explore
- @11.9.0
+ @11.11.0
Browse an installed package
+
npm-find-dupes
- @11.9.0
+ @11.11.0
Find duplication in the package tree
+
npm-fund
- @11.9.0
+ @11.11.0
Retrieve funding information
+ npm-get + @11.11.0 +
+Get a value from the npm configuration +Table of contents
+ +Synopsis
+npm get [<key> ...] (See `npm config`)
+
+Note: This command is unaware of workspaces.
+Description
+Get a value from the npm configuration
+Configuration
+long
+-
+
- Default: false +
- Type: Boolean +
Show extended information in ls, search, and help-search.
See Also
+
+
npm-help-search
- @11.9.0
+ @11.11.0
Search npm help documentation
+
npm-help
- @11.9.0
+ @11.11.0
Get help on npm
+
npm-init
- @11.9.0
+ @11.11.0
Create a package.json file
+
npm-install-ci-test
- @11.9.0
+ @11.11.0
Install a project with a clean slate and run tests
+
npm-install-test
- @11.9.0
+ @11.11.0
Install package(s) and run tests
Table of contents
-- Synopsis
- Description
- Configuration
savesave-exactglobalinstall-strategylegacy-bundlingglobal-styleomitincludestrict-peer-depsprefer-dedupepackage-lockpackage-lock-onlyforeground-scriptsignore-scriptsallow-gitauditbeforebin-linksfunddry-runcpuoslibcworkspaceworkspacesinclude-workspace-rootinstall-links- See Also
- Synopsis
- Description
- Configuration
savesave-exactglobalinstall-strategylegacy-bundlingglobal-styleomitincludestrict-peer-depsprefer-dedupepackage-lockpackage-lock-onlyforeground-scriptsignore-scriptsallow-gitauditbeforemin-release-agebin-linksfunddry-runcpuoslibcworkspaceworkspacesinclude-workspace-rootinstall-links- See Also
Synopsis
@@ -344,6 +389,19 @@before
--before filter, the most recent version less than or equal to that tag
will be used. For example, foo@latest might install foo@1.2 even though
latest is 2.0.
+This config cannot be used with: min-release-age
min-release-age
+-
+
- Default: null +
- Type: null or Number +
If set, npm will build the npm tree such that only versions that were +available more than the given number of days ago will be installed. If there +are no versions available for the current set of dependencies, the command +will error.
+This flag is a complement to before, which accepts an exact date instead
+of a relative number of days.
This config cannot be used with: before
bin-links
- Default: true diff --git a/deps/npm/docs/output/commands/npm-install.html b/deps/npm/docs/output/commands/npm-install.html index 4f73d9c724da86..b0d72b6006cece 100644 --- a/deps/npm/docs/output/commands/npm-install.html +++ b/deps/npm/docs/output/commands/npm-install.html @@ -123,6 +123,51 @@ margin: 3em 0 4em 0; padding-top: 2em; } + +table { + width: 100%; + margin: 1em 0; + border-radius: 6px; + border: 1px solid #e1e4e8; + overflow: hidden; + border-collapse: separate; + border-spacing: 0; +} + +table thead { + background-color: #f6f8fa; +} + +table tbody { + background-color: #ffffff; +} + +table th, +table td { + padding: 0.75em; + text-align: left; + border-right: 1px solid #e1e4e8; + border-bottom: 1px solid #e1e4e8; +} + +table th:last-child, +table td:last-child { + border-right: none; +} + +table tbody tr:last-child td { + border-bottom: none; +} + +table th { + font-weight: 600; + background-color: #f6f8fa; +} + +table code { + white-space: nowrap; +} + @@ -141,16 +186,16 @@
- Synopsis
- Description
- Configuration
savesave-exactglobalinstall-strategylegacy-bundlingglobal-styleomitincludestrict-peer-depsprefer-dedupepackage-lockpackage-lock-onlyforeground-scriptsignore-scriptsallow-gitauditbeforebin-linksfunddry-runcpuoslibcworkspaceworkspacesinclude-workspace-rootinstall-links- Algorithm
- See Also
- Synopsis
- Description
- Configuration
savesave-exactglobalinstall-strategylegacy-bundlingglobal-styleomitincludestrict-peer-depsprefer-dedupepackage-lockpackage-lock-onlyforeground-scriptsignore-scriptsallow-gitauditbeforemin-release-agebin-linksfunddry-runcpuoslibcworkspaceworkspacesinclude-workspace-rootinstall-links- Algorithm
- See Also
- Default: null +
- Type: null or Number +
- Default: true diff --git a/deps/npm/docs/output/commands/npm-link.html b/deps/npm/docs/output/commands/npm-link.html index 218266435a99c2..857eff466dab14 100644 --- a/deps/npm/docs/output/commands/npm-link.html +++ b/deps/npm/docs/output/commands/npm-link.html @@ -123,6 +123,51 @@ margin: 3em 0 4em 0; padding-top: 2em; } + +table { + width: 100%; + margin: 1em 0; + border-radius: 6px; + border: 1px solid #e1e4e8; + overflow: hidden; + border-collapse: separate; + border-spacing: 0; +} + +table thead { + background-color: #f6f8fa; +} + +table tbody { + background-color: #ffffff; +} + +table th, +table td { + padding: 0.75em; + text-align: left; + border-right: 1px solid #e1e4e8; + border-bottom: 1px solid #e1e4e8; +} + +table th:last-child, +table td:last-child { + border-right: none; +} + +table tbody tr:last-child td { + border-bottom: none; +} + +table th { + font-weight: 600; + background-color: #f6f8fa; +} + +table code { + white-space: nowrap; +} + @@ -141,9 +186,9 @@
- Default: false +
- Type: Boolean +
- Default: false +
- Type: Boolean +
- In
npm pkg setit enables parsing set values with JSON.parse() before +saving them to yourpackage.json.
+ - Default: false +
- Type: Boolean +
- Default: false +
- Type: Boolean +
- Default: false +
- Type: Boolean +
- packages are installed into the
{prefix}/lib/node_modulesfolder, instead +of the current working directory.
+ - bin files are linked to
{prefix}/bin
+ - man pages are linked to
{prefix}/share/man
+ - Default:
Infinityif--allis set; otherwise,0
+ - Type: null or Number +
- Default: 'dev' if the
NODE_ENVenvironment variable is set to +'production'; otherwise, empty.
+ - Type: "dev", "optional", or "peer" (can be set multiple times) +
- Default: +
- Type: "prod", "dev", "optional", or "peer" (can be set multiple times) +
- Default: false +
- Type: Boolean +
- Default: false +
- Type: Boolean +
- Default: false on windows, true on mac/unix systems with a unicode locale,
+as defined by the
LC_ALL,LC_CTYPE, orLANGenvironment variables.
+ - Type: Boolean +
- Default: +
- Type: String (can be set multiple times) +
- Workspace names +
- Path to a workspace directory +
- Path to a parent workspace directory (will result in selecting all +workspaces within that folder) +
- Default: null +
- Type: null or Boolean +
- Commands that operate on the
node_modulestree (install, update, etc.) +will link workspaces into thenode_modulesfolder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in theworkspaceconfig.
+ - Default: false +
- Type: Boolean +
- Default: false +
- Type: Boolean +
- Default: null +
- Type: null or Number +
- package spec diff --git a/deps/npm/docs/output/commands/npm-owner.html b/deps/npm/docs/output/commands/npm-owner.html index c29650dc924105..418a012852bbba 100644 --- a/deps/npm/docs/output/commands/npm-owner.html +++ b/deps/npm/docs/output/commands/npm-owner.html @@ -123,6 +123,51 @@ margin: 3em 0 4em 0; padding-top: 2em; } + +table { + width: 100%; + margin: 1em 0; + border-radius: 6px; + border: 1px solid #e1e4e8; + overflow: hidden; + border-collapse: separate; + border-spacing: 0; +} + +table thead { + background-color: #f6f8fa; +} + +table tbody { + background-color: #ffffff; +} + +table th, +table td { + padding: 0.75em; + text-align: left; + border-right: 1px solid #e1e4e8; + border-bottom: 1px solid #e1e4e8; +} + +table th:last-child, +table td:last-child { + border-right: none; +} + +table tbody tr:last-child td { + border-bottom: none; +} + +table th { + font-weight: 600; + background-color: #f6f8fa; +} + +table code { + white-space: nowrap; +} + @@ -141,9 +186,9 @@
- Default: false +
- Type: Boolean +
- packages are installed into the
{prefix}/lib/node_modulesfolder, instead +of the current working directory.
+ - bin files are linked to
{prefix}/bin
+ - man pages are linked to
{prefix}/share/man
+ - Default: "user" unless
--globalis passed, which will also set this value +to "global"
+ - Type: "global", "user", or "project" +
- packages are installed into the
{prefix}/lib/node_modulesfolder, instead +of the current working directory.
+ - bin files are linked to
{prefix}/bin
+ - man pages are linked to
{prefix}/share/man
+ - npm version:
npm@11.10.0or above is required. Usenpm install -g npm@^11.10.0to update if needed.
+ - Write permissions on the package: You must have write access to the package you're configuring. +
- 2FA enabled on account: Two-factor authentication must be enabled at the account level. Even if it's not currently enabled, you must enable it to use trust commands. +
- Supported authentication methods: Granular Access Tokens (GAT) with the bypass 2FA option are not supported. Legacy basic auth (username and password) credentials will not work for trust commands or endpoints. +
- Package must exist: The package you're configuring must already exist on the npm registry. +
- Use
npm trust list [package]to view the ID of the existing trusted publisher
+ - Use
npm trust revoke --id <id> [package]to remove the existing configuration
+ - Then create your new trust relationship +
- Synopsis
- Description
- Example
- Caret Dependencies
- Tilde Dependencies
- Caret Dependencies below 1.0.0
- Subdependencies
- Updating Globally-Installed Packages
- Configuration
saveglobalinstall-strategylegacy-bundlingglobal-styleomitincludestrict-peer-depspackage-lockforeground-scriptsignore-scriptsauditbeforebin-linksfunddry-runworkspaceworkspacesinclude-workspace-rootinstall-links- See Also
- Synopsis
- Description
- Example
- Caret Dependencies
- Tilde Dependencies
- Caret Dependencies below 1.0.0
- Subdependencies
- Updating Globally-Installed Packages
- Configuration
saveglobalinstall-strategylegacy-bundlingglobal-styleomitincludestrict-peer-depspackage-lockforeground-scriptsignore-scriptsauditbeforemin-release-agebin-linksfunddry-runworkspaceworkspacesinclude-workspace-rootinstall-links- See Also
- Default: null +
- Type: null or Number +
- Default: true diff --git a/deps/npm/docs/output/commands/npm-version.html b/deps/npm/docs/output/commands/npm-version.html index def26114efa130..afc26227983beb 100644 --- a/deps/npm/docs/output/commands/npm-version.html +++ b/deps/npm/docs/output/commands/npm-version.html @@ -123,6 +123,51 @@ margin: 3em 0 4em 0; padding-top: 2em; } + +table { + width: 100%; + margin: 1em 0; + border-radius: 6px; + border: 1px solid #e1e4e8; + overflow: hidden; + border-collapse: separate; + border-spacing: 0; +} + +table thead { + background-color: #f6f8fa; +} + +table tbody { + background-color: #ffffff; +} + +table th, +table td { + padding: 0.75em; + text-align: left; + border-right: 1px solid #e1e4e8; + border-bottom: 1px solid #e1e4e8; +} + +table th:last-child, +table td:last-child { + border-right: none; +} + +table tbody tr:last-child td { + border-bottom: none; +} + +table th { + font-weight: 600; + background-color: #f6f8fa; +} + +table code { + white-space: nowrap; +} + @@ -141,9 +186,9 @@
- npm folders diff --git a/deps/npm/docs/output/configuring-npm/package-json.html b/deps/npm/docs/output/configuring-npm/package-json.html index 9b15c851a9b962..5b6c4ae33b70c8 100644 --- a/deps/npm/docs/output/configuring-npm/package-json.html +++ b/deps/npm/docs/output/configuring-npm/package-json.html @@ -123,6 +123,51 @@ margin: 3em 0 4em 0; padding-top: 2em; } + +table { + width: 100%; + margin: 1em 0; + border-radius: 6px; + border: 1px solid #e1e4e8; + overflow: hidden; + border-collapse: separate; + border-spacing: 0; +} + +table thead { + background-color: #f6f8fa; +} + +table tbody { + background-color: #ffffff; +} + +table th, +table td { + padding: 0.75em; + text-align: left; + border-right: 1px solid #e1e4e8; + border-bottom: 1px solid #e1e4e8; +} + +table th:last-child, +table td:last-child { + border-right: none; +} + +table tbody tr:last-child td { + border-bottom: none; +} + +table th { + font-weight: 600; + background-color: #f6f8fa; +} + +table code { + white-space: nowrap; +} + @@ -141,9 +186,9 @@
- Description
- Shorthands and Other CLI Niceties
- Config Settings
_authaccessallallow-gitallow-same-versionauditaudit-levelauth-typebeforebin-linksbrowserbypass-2facacachecafilecallcidrcolorcommit-hookscpudepthdescriptiondiffdiff-dst-prefixdiff-ignore-all-spacediff-name-onlydiff-no-prefixdiff-src-prefixdiff-textdiff-unifieddry-runeditorengine-strictexpect-result-countexpect-resultsexpiresfetch-retriesfetch-retry-factorfetch-retry-maxtimeoutfetch-retry-mintimeoutfetch-timeoutforceforeground-scriptsformat-package-lockfundgitgit-tag-versionglobalglobalconfigheadinghttps-proxyif-presentignore-scriptsincludeinclude-stagedinclude-workspace-rootinit-author-emailinit-author-nameinit-author-urlinit-licenseinit-moduleinit-privateinit-typeinit-versioninstall-linksinstall-strategyjsonlegacy-peer-depslibclinklocal-addresslocationlockfile-versionloglevellogs-dirlogs-maxlongmaxsocketsmessagenamenode-gypnode-optionsnoproxyofflineomitomit-lockfile-registry-resolvedorgsorgs-permissionosotppack-destinationpackagepackage-lockpackage-lock-onlypackagespackages-allpackages-and-scopes-permissionparseablepasswordprefer-dedupeprefer-offlineprefer-onlineprefixpreidprogressprovenanceprovenance-fileproxyread-onlyrebuild-bundleregistryreplace-registry-hostsavesave-bundlesave-devsave-exactsave-optionalsave-peersave-prefixsave-prodsbom-formatsbom-typescopescopesscript-shellsearchexcludesearchlimitsearchoptssearchstalenessshellsign-git-commitsign-git-tagstrict-peer-depsstrict-ssltagtag-version-prefixtimingtoken-descriptionumaskunicodeupdate-notifierusageuser-agentuserconfigversionversionsviewerwhichworkspaceworkspacesworkspaces-updateyesalsocache-maxcache-mincertdevglobal-styleinit.author.emailinit.author.nameinit.author.urlinit.licenseinit.moduleinit.versionkeylegacy-bundlingonlyoptionalproductionshrinkwrap- See also
- Description
- Shorthands and Other CLI Niceties
- Config Settings
_authaccessallallow-gitallow-same-versionauditaudit-levelauth-typebeforebin-linksbrowserbypass-2facacachecafilecallcidrcolorcommit-hookscpudepthdescriptiondiffdiff-dst-prefixdiff-ignore-all-spacediff-name-onlydiff-no-prefixdiff-src-prefixdiff-textdiff-unifieddry-runeditorengine-strictexpect-result-countexpect-resultsexpiresfetch-retriesfetch-retry-factorfetch-retry-maxtimeoutfetch-retry-mintimeoutfetch-timeoutforceforeground-scriptsformat-package-lockfundgitgit-tag-versionglobalglobalconfigheadinghttps-proxyif-presentignore-scriptsincludeinclude-stagedinclude-workspace-rootinit-author-emailinit-author-nameinit-author-urlinit-licenseinit-moduleinit-privateinit-typeinit-versioninstall-linksinstall-strategyjsonlegacy-peer-depslibclinklocal-addresslocationlockfile-versionloglevellogs-dirlogs-maxlongmaxsocketsmessagemin-release-agenamenode-gypnode-optionsnoproxyofflineomitomit-lockfile-registry-resolvedorgsorgs-permissionosotppack-destinationpackagepackage-lockpackage-lock-onlypackagespackages-allpackages-and-scopes-permissionparseablepasswordprefer-dedupeprefer-offlineprefer-onlineprefixpreidprogressprovenanceprovenance-fileproxyread-onlyrebuild-bundleregistryreplace-registry-hostsavesave-bundlesave-devsave-exactsave-optionalsave-peersave-prefixsave-prodsbom-formatsbom-typescopescopesscript-shellsearchexcludesearchlimitsearchoptssearchstalenessshellsign-git-commitsign-git-tagstrict-peer-depsstrict-ssltagtag-version-prefixtimingtoken-descriptionumaskunicodeupdate-notifierusageuser-agentuserconfigversionversionsviewerwhichworkspaceworkspacesworkspaces-updateyesalsocache-maxcache-mincertdevglobal-styleinit.author.emailinit.author.nameinit.author.urlinit.licenseinit.moduleinit.versionkeylegacy-bundlingonlyoptionalproductionshrinkwrap- See also
- Default: true @@ -925,6 +971,18 @@
- Default: null +
- Type: null or Number +
- Default: null diff --git a/deps/npm/docs/output/using-npm/dependency-selectors.html b/deps/npm/docs/output/using-npm/dependency-selectors.html index 110ad2f97dc8f5..d05e6b11d01bce 100644 --- a/deps/npm/docs/output/using-npm/dependency-selectors.html +++ b/deps/npm/docs/output/using-npm/dependency-selectors.html @@ -1,6 +1,6 @@ -
:missingwhen a dependency is not found on disk:semver(<spec>, [selector], [function])match a validnode-semverversion or range to a selector:path(<path>)glob matching based on dependencies path relative to the project
-:type(<type>)based on currently recognized types
+:type(<type>)based on currently recognized types. You can also use the aggregate type ofregistryfor any registry dependency (e.g. tag, version, range, alias):outdated(<type>)when a dependency is outdated:vuln(<selector>)when a dependency has a known vulnerability
+
npm-install
- @11.9.0
+ @11.11.0
Install a package
Table of contents
-Synopsis
@@ -619,6 +664,19 @@before
--before filter, the most recent version less than or equal to that tag
will be used. For example, foo@latest might install foo@1.2 even though
latest is 2.0.
+This config cannot be used with: min-release-age
min-release-age
+-
+
If set, npm will build the npm tree such that only versions that were +available more than the given number of days ago will be installed. If there +are no versions available for the current set of dependencies, the command +will error.
+This flag is a complement to before, which accepts an exact date instead
+of a relative number of days.
This config cannot be used with: before
bin-links
+
npm-link
- @11.9.0
+ @11.11.0
Symlink a package folder
+ npm-ll + @11.11.0 +
+List installed packages +Table of contents
+ +Synopsis
+npm ll [[<@scope>/]<pkg> ...]
+
+alias: la
+
+Description
+List installed packages
+Configuration
+all
+-
+
When running npm outdated and npm ls, setting --all will show all
+outdated or installed packages, rather than only those directly depended
+upon by the current project.
json
+-
+
Whether or not to output JSON data, rather than the normal output.
+-
+
Not supported by all npm commands.
+long
+-
+
Show extended information in ls, search, and help-search.
parseable
+-
+
Output parseable results from commands that write to standard output. For
+npm search, this will be tab-separated table format.
global
+-
+
Operates in "global" mode, so that packages are installed into the prefix
+folder instead of the current working directory. See
+folders for more on the differences in behavior.
-
+
depth
+-
+
The depth to go when recursing packages for npm ls.
If not set, npm ls will show only the immediate dependencies of the root
+project. If --all is set, then npm will show all dependencies by default.
omit
+-
+
Dependency types to omit from the installation tree on disk.
+Note that these dependencies are still resolved and added to the
+package-lock.json or npm-shrinkwrap.json file. They are just not
+physically installed on disk.
If a package type appears in both the --include and --omit lists, then
+it will be included.
If the resulting omit list includes 'dev', then the NODE_ENV environment
+variable will be set to 'production' for all lifecycle scripts.
include
+-
+
Option that allows for defining which types of dependencies to install.
+This is the inverse of --omit=<type>.
Dependency types specified in --include will not be omitted, regardless of
+the order in which omit/include are specified on the command-line.
link
+-
+
Used with npm ls, limiting output to only those packages that are linked.
package-lock-only
+-
+
If set to true, the current operation will only use the package-lock.json,
+ignoring node_modules.
For update this means only the package-lock.json will be updated,
+instead of checking node_modules and downloading dependencies.
For list this means the output will be based on the tree described by the
+package-lock.json, rather than the contents of node_modules.
unicode
+-
+
When set to true, npm uses unicode characters in the tree output. When +false, it uses ascii characters instead of unicode glyphs.
+workspace
+-
+
Enable running a command in the context of the configured workspaces of the +current project while filtering by running only the workspaces defined by +this configuration option.
+Valid values for the workspace config are either:
-
+
When set for the npm init command, this may be set to the folder of a
+workspace which does not yet exist, to create the folder and set it up as a
+brand new workspace within the project.
This value is not exported to the environment for child processes.
+workspaces
+-
+
Set to true to run the command in the context of all configured +workspaces.
+Explicitly setting this to false will cause commands like install to
+ignore workspaces altogether. When not set explicitly:
-
+
This value is not exported to the environment for child processes.
+include-workspace-root
+-
+
Include the workspace root when workspaces are enabled for a command.
+When false, specifying individual workspaces via the workspace config, or
+all workspaces via the workspaces flag, will cause npm to operate only on
+the specified workspaces, and not on the root project.
This value is not exported to the environment for child processes.
+install-links
+-
+
When set file: protocol dependencies will be packed and installed as regular +dependencies instead of creating a symlink. This option has no effect on +workspaces.
+See Also
+
+
npm-login
- @11.9.0
+ @11.11.0
Login to a registry user account
+
npm-logout
- @11.9.0
+ @11.11.0
Log out of the registry
+
npm-ls
- @11.9.0
+ @11.11.0
List installed packages
Description
Positional arguments are name@version-range identifiers, which will limit the results to only the paths to the packages named.
Note that nested packages will also show the paths to the specified packages.
For example, running npm ls promzard in npm's source tree will show:
npm@11.9.0 /path/to/npm
+npm@11.11.0 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5
diff --git a/deps/npm/docs/output/commands/npm-org.html b/deps/npm/docs/output/commands/npm-org.html
index 751ea80aabe5e2..f12c24ccd08677 100644
--- a/deps/npm/docs/output/commands/npm-org.html
+++ b/deps/npm/docs/output/commands/npm-org.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-org
- @11.9.0
+ @11.11.0
Manage orgs
diff --git a/deps/npm/docs/output/commands/npm-outdated.html b/deps/npm/docs/output/commands/npm-outdated.html
index 43da9712f64cb4..85013138e96410 100644
--- a/deps/npm/docs/output/commands/npm-outdated.html
+++ b/deps/npm/docs/output/commands/npm-outdated.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,16 +186,16 @@
-
+
npm-outdated
- @11.9.0
+ @11.11.0
Check for outdated packages
Table of contents
-
+
Synopsis
@@ -283,6 +328,19 @@ before
--before filter, the most recent version less than or equal to that tag
will be used. For example, foo@latest might install foo@1.2 even though
latest is 2.0.
+This config cannot be used with: min-release-age
+min-release-age
+
+
+If set, npm will build the npm tree such that only versions that were
+available more than the given number of days ago will be installed. If there
+are no versions available for the current set of dependencies, the command
+will error.
+This flag is a complement to before, which accepts an exact date instead
+of a relative number of days.
+This config cannot be used with: before
See Also
-
+
npm-owner
- @11.9.0
+ @11.11.0
Manage package owners
diff --git a/deps/npm/docs/output/commands/npm-pack.html b/deps/npm/docs/output/commands/npm-pack.html
index 557957f2576548..9e7bc2495c4953 100644
--- a/deps/npm/docs/output/commands/npm-pack.html
+++ b/deps/npm/docs/output/commands/npm-pack.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-pack
- @11.9.0
+ @11.11.0
Create a tarball from a package
diff --git a/deps/npm/docs/output/commands/npm-ping.html b/deps/npm/docs/output/commands/npm-ping.html
index cbc09575ebddb8..5d4cf7159bd5f5 100644
--- a/deps/npm/docs/output/commands/npm-ping.html
+++ b/deps/npm/docs/output/commands/npm-ping.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-ping
- @11.9.0
+ @11.11.0
Ping npm registry
diff --git a/deps/npm/docs/output/commands/npm-pkg.html b/deps/npm/docs/output/commands/npm-pkg.html
index 5b969756e85d53..e7f28ef03626a1 100644
--- a/deps/npm/docs/output/commands/npm-pkg.html
+++ b/deps/npm/docs/output/commands/npm-pkg.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-pkg
- @11.9.0
+ @11.11.0
Manages your package.json
diff --git a/deps/npm/docs/output/commands/npm-prefix.html b/deps/npm/docs/output/commands/npm-prefix.html
index 1fa84497d5431d..a296f1c2e6b4dd 100644
--- a/deps/npm/docs/output/commands/npm-prefix.html
+++ b/deps/npm/docs/output/commands/npm-prefix.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-prefix
- @11.9.0
+ @11.11.0
Display prefix
diff --git a/deps/npm/docs/output/commands/npm-profile.html b/deps/npm/docs/output/commands/npm-profile.html
index 100df963676466..c33cc5765687ca 100644
--- a/deps/npm/docs/output/commands/npm-profile.html
+++ b/deps/npm/docs/output/commands/npm-profile.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-profile
- @11.9.0
+ @11.11.0
Change settings on your registry profile
diff --git a/deps/npm/docs/output/commands/npm-prune.html b/deps/npm/docs/output/commands/npm-prune.html
index b0c0f81932eead..7294045e9ffe65 100644
--- a/deps/npm/docs/output/commands/npm-prune.html
+++ b/deps/npm/docs/output/commands/npm-prune.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-prune
- @11.9.0
+ @11.11.0
Remove extraneous packages
diff --git a/deps/npm/docs/output/commands/npm-publish.html b/deps/npm/docs/output/commands/npm-publish.html
index ef6973b02b9b13..6aab3b9374a5e2 100644
--- a/deps/npm/docs/output/commands/npm-publish.html
+++ b/deps/npm/docs/output/commands/npm-publish.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-publish
- @11.9.0
+ @11.11.0
Publish a package
diff --git a/deps/npm/docs/output/commands/npm-query.html b/deps/npm/docs/output/commands/npm-query.html
index aa30ac76a35f71..56c1b211099f28 100644
--- a/deps/npm/docs/output/commands/npm-query.html
+++ b/deps/npm/docs/output/commands/npm-query.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-query
- @11.9.0
+ @11.11.0
Dependency selector query
diff --git a/deps/npm/docs/output/commands/npm-rebuild.html b/deps/npm/docs/output/commands/npm-rebuild.html
index c3aee26c5275ee..26d26ffe16f47b 100644
--- a/deps/npm/docs/output/commands/npm-rebuild.html
+++ b/deps/npm/docs/output/commands/npm-rebuild.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-rebuild
- @11.9.0
+ @11.11.0
Rebuild a package
diff --git a/deps/npm/docs/output/commands/npm-repo.html b/deps/npm/docs/output/commands/npm-repo.html
index ad6540a3c2869a..ef019253fa5109 100644
--- a/deps/npm/docs/output/commands/npm-repo.html
+++ b/deps/npm/docs/output/commands/npm-repo.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-repo
- @11.9.0
+ @11.11.0
Open package repository page in the browser
diff --git a/deps/npm/docs/output/commands/npm-restart.html b/deps/npm/docs/output/commands/npm-restart.html
index 4685bd958617e8..123e15d48d85b4 100644
--- a/deps/npm/docs/output/commands/npm-restart.html
+++ b/deps/npm/docs/output/commands/npm-restart.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-restart
- @11.9.0
+ @11.11.0
Restart a package
diff --git a/deps/npm/docs/output/commands/npm-root.html b/deps/npm/docs/output/commands/npm-root.html
index a3a8856b1b6172..c87ed80cc733ad 100644
--- a/deps/npm/docs/output/commands/npm-root.html
+++ b/deps/npm/docs/output/commands/npm-root.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-root
- @11.9.0
+ @11.11.0
Display npm root
diff --git a/deps/npm/docs/output/commands/npm-run.html b/deps/npm/docs/output/commands/npm-run.html
index 11345b9c93ebf8..363590f8443e2d 100644
--- a/deps/npm/docs/output/commands/npm-run.html
+++ b/deps/npm/docs/output/commands/npm-run.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-run
- @11.9.0
+ @11.11.0
Run arbitrary package scripts
diff --git a/deps/npm/docs/output/commands/npm-sbom.html b/deps/npm/docs/output/commands/npm-sbom.html
index cca11e4f1fd0de..66cfa902200837 100644
--- a/deps/npm/docs/output/commands/npm-sbom.html
+++ b/deps/npm/docs/output/commands/npm-sbom.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-sbom
- @11.9.0
+ @11.11.0
Generate a Software Bill of Materials (SBOM)
diff --git a/deps/npm/docs/output/commands/npm-search.html b/deps/npm/docs/output/commands/npm-search.html
index a9482d48a3fcb2..17af8e24ab6979 100644
--- a/deps/npm/docs/output/commands/npm-search.html
+++ b/deps/npm/docs/output/commands/npm-search.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-search
- @11.9.0
+ @11.11.0
Search for packages
diff --git a/deps/npm/docs/output/commands/npm-set.html b/deps/npm/docs/output/commands/npm-set.html
new file mode 100644
index 00000000000000..c106498372d977
--- /dev/null
+++ b/deps/npm/docs/output/commands/npm-set.html
@@ -0,0 +1,255 @@
+
+
+npm-set
+
+
+
+
+
+
+
+
+ npm-set
+ @11.11.0
+
+Set a value in the npm configuration
+
+
+
+Table of contents
+
+
+
+Synopsis
+npm set <key>=<value> [<key>=<value> ...] (See `npm config`)
+
+Note: This command is unaware of workspaces.
+Description
+Set a value in the npm configuration
+Configuration
+global
+
+
+Operates in "global" mode, so that packages are installed into the prefix
+folder instead of the current working directory. See
+folders for more on the differences in behavior.
+
+
+location
+
+
+When passed to npm config this refers to which config file to use.
+When set to "global" mode, packages are installed into the prefix folder
+instead of the current working directory. See
+folders for more on the differences in behavior.
+
+
+See Also
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/deps/npm/docs/output/commands/npm-shrinkwrap.html b/deps/npm/docs/output/commands/npm-shrinkwrap.html
index 83929137a39b17..2c9592acf95945 100644
--- a/deps/npm/docs/output/commands/npm-shrinkwrap.html
+++ b/deps/npm/docs/output/commands/npm-shrinkwrap.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-shrinkwrap
- @11.9.0
+ @11.11.0
Lock down dependency versions for publication
diff --git a/deps/npm/docs/output/commands/npm-star.html b/deps/npm/docs/output/commands/npm-star.html
index 26511206a26c22..b922de136847bb 100644
--- a/deps/npm/docs/output/commands/npm-star.html
+++ b/deps/npm/docs/output/commands/npm-star.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-star
- @11.9.0
+ @11.11.0
Mark your favorite packages
diff --git a/deps/npm/docs/output/commands/npm-stars.html b/deps/npm/docs/output/commands/npm-stars.html
index 4d8b99572ac59d..b2bcb0584e61f0 100644
--- a/deps/npm/docs/output/commands/npm-stars.html
+++ b/deps/npm/docs/output/commands/npm-stars.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-stars
- @11.9.0
+ @11.11.0
View packages marked as favorites
diff --git a/deps/npm/docs/output/commands/npm-start.html b/deps/npm/docs/output/commands/npm-start.html
index fdaf54fc3fd77c..577e283ca51278 100644
--- a/deps/npm/docs/output/commands/npm-start.html
+++ b/deps/npm/docs/output/commands/npm-start.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-start
- @11.9.0
+ @11.11.0
Start a package
diff --git a/deps/npm/docs/output/commands/npm-stop.html b/deps/npm/docs/output/commands/npm-stop.html
index bcbcf51f73dbb6..2b54db5b7463f3 100644
--- a/deps/npm/docs/output/commands/npm-stop.html
+++ b/deps/npm/docs/output/commands/npm-stop.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-stop
- @11.9.0
+ @11.11.0
Stop a package
diff --git a/deps/npm/docs/output/commands/npm-team.html b/deps/npm/docs/output/commands/npm-team.html
index 837570bdce568d..3c7eae9e8967bb 100644
--- a/deps/npm/docs/output/commands/npm-team.html
+++ b/deps/npm/docs/output/commands/npm-team.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-team
- @11.9.0
+ @11.11.0
Manage organization teams and team memberships
diff --git a/deps/npm/docs/output/commands/npm-test.html b/deps/npm/docs/output/commands/npm-test.html
index 3e6e800e488840..2bd1be34b98cd1 100644
--- a/deps/npm/docs/output/commands/npm-test.html
+++ b/deps/npm/docs/output/commands/npm-test.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-test
- @11.9.0
+ @11.11.0
Test a package
diff --git a/deps/npm/docs/output/commands/npm-token.html b/deps/npm/docs/output/commands/npm-token.html
index 538050266b88f0..4e1121c7dab2b4 100644
--- a/deps/npm/docs/output/commands/npm-token.html
+++ b/deps/npm/docs/output/commands/npm-token.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-token
- @11.9.0
+ @11.11.0
Manage your authentication tokens
diff --git a/deps/npm/docs/output/commands/npm-trust.html b/deps/npm/docs/output/commands/npm-trust.html
new file mode 100644
index 00000000000000..777b1b91529baf
--- /dev/null
+++ b/deps/npm/docs/output/commands/npm-trust.html
@@ -0,0 +1,510 @@
+
+
+npm-trust
+
+
+
+
+
+
+
+
+ npm-trust
+ @11.11.0
+
+Manage trusted publishing relationships between packages and CI/CD providers
+
+
+
+Table of contents
+
+
+
+Synopsis
+npm trust
+
+Note: This command is unaware of workspaces.
+Prerequisites
+Before using npm trust commands, ensure the following requirements are met:
+
+
+Description
+Configure trust relationships between npm packages and CI/CD providers using OpenID Connect (OIDC). This is the command-line equivalent of managing trusted publisher configurations on the npm website.
+For a comprehensive overview of trusted publishing, see the npm trusted publishers documentation.
+The [package] argument specifies the package name. If omitted, npm will use the name from the package.json in the current directory.
+Each trust relationship has its own set of configuration options and flags based on the OIDC claims provided by that provider. OIDC claims come from the CI/CD provider and include information such as repository name, workflow file, or environment. Since each provider's claims differ, the available flags and configuration keys are not universal—npm matches the claims supported by each provider's OIDC configuration. For specific details on which claims and flags are supported for a given provider, use npm trust <provider> --help.
+The required options depend on the CI/CD provider you're configuring. Detailed information about each option is available in the managing trusted publisher configurations section of the npm documentation. If a provider is repository-based and the option is not provided, npm will use the repository.url field from your package.json, if available.
+Currently, the registry only supports one configuration per package. If you attempt to create a new trust relationship when one already exists, it will result in an error. To replace an existing configuration:
+
+
+Bulk Usage
+For maintainers managing a large number of packages, you can configure trusted publishing in bulk using bash scripting. Create a loop that iterates through package names and their corresponding configuration details, executing the npm trust <provider> command with the --yes flag for each package.
+The first request will require two-factor authentication. During two-factor authentication, you'll see an option on the npm website to skip two-factor authentication for the next 5 minutes. Enabling this option will allow subsequent npm trust <provider> commands to proceed without two-factor authentication, streamlining the bulk configuration process.
+We recommend adding a 2-second sleep between each call to avoid rate limiting. With this approach, you can configure approximately 80 packages within the 5-minute two-factor authentication skip window.
+Configuration
+npm trust github
+Create a trusted relationship between a package and GitHub Actions
+Synopsis
+npm trust github [package] --file [--repo|--repository] [--env|--environment] [-y|--yes]
+
+Flags
+
+
+
+Flag
+Default
+Type
+Description
+
+
+
+
+--file
+null
+String (required)
+Name of workflow file within a repositories .GitHub folder (must end in yaml, yml)
+
+
+--repository, --repo
+null
+String
+Name of the repository in the format owner/repo
+
+
+--environment, --env
+null
+String
+CI environment name
+
+
+--dry-run
+false
+Boolean
+Indicates that you don't want npm to make any changes and that it should only report what it would have done. This can be passed into any of the commands that modify your local installation, eg, install, update, dedupe, uninstall, as well as pack and publish. Note: This is NOT honored by other network related commands, eg dist-tags, owner, etc.
+
+
+--json
+false
+Boolean
+Whether or not to output JSON data, rather than the normal output. * In npm pkg set it enables parsing set values with JSON.parse() before saving them to your package.json. Not supported by all npm commands.
+
+
+--registry
+"https://registry.npmjs.org/"
+URL
+The base URL of the npm registry.
+
+
+--yes, -y
+null
+null or Boolean
+Automatically answer "yes" to any prompts that npm might print on the command line.
+
+
+
+npm trust gitlab
+Create a trusted relationship between a package and GitLab CI/CD
+Synopsis
+npm trust gitlab [package] --file [--project|--repo|--repository] [--env|--environment] [-y|--yes]
+
+Flags
+
+
+
+Flag
+Default
+Type
+Description
+
+
+
+
+--file
+null
+String (required)
+Name of pipeline file (e.g., .gitlab-ci.yml)
+
+
+--project
+null
+String
+Name of the project in the format group/project or group/subgroup/project
+
+
+--environment, --env
+null
+String
+CI environment name
+
+
+--dry-run
+false
+Boolean
+Indicates that you don't want npm to make any changes and that it should only report what it would have done. This can be passed into any of the commands that modify your local installation, eg, install, update, dedupe, uninstall, as well as pack and publish. Note: This is NOT honored by other network related commands, eg dist-tags, owner, etc.
+
+
+--json
+false
+Boolean
+Whether or not to output JSON data, rather than the normal output. * In npm pkg set it enables parsing set values with JSON.parse() before saving them to your package.json. Not supported by all npm commands.
+
+
+--registry
+"https://registry.npmjs.org/"
+URL
+The base URL of the npm registry.
+
+
+--yes, -y
+null
+null or Boolean
+Automatically answer "yes" to any prompts that npm might print on the command line.
+
+
+
+npm trust circleci
+Create a trusted relationship between a package and CircleCI
+Synopsis
+npm trust circleci [package] --org-id <uuid> --project-id <uuid> --pipeline-definition-id <uuid> --vcs-origin <origin> [--context-id <uuid>...] [-y|--yes]
+
+Flags
+
+
+
+Flag
+Default
+Type
+Description
+
+
+
+
+--org-id
+null
+String (required)
+CircleCI organization UUID
+
+
+--project-id
+null
+String (required)
+CircleCI project UUID
+
+
+--pipeline-definition-id
+null
+String (required)
+CircleCI pipeline definition UUID
+
+
+--vcs-origin
+null
+String (required)
+CircleCI repository origin in format 'provider/owner/repo'
+
+
+--context-id
+null
+null or String (can be set multiple times)
+CircleCI context UUID to match
+
+
+--dry-run
+false
+Boolean
+Indicates that you don't want npm to make any changes and that it should only report what it would have done. This can be passed into any of the commands that modify your local installation, eg, install, update, dedupe, uninstall, as well as pack and publish. Note: This is NOT honored by other network related commands, eg dist-tags, owner, etc.
+
+
+--json
+false
+Boolean
+Whether or not to output JSON data, rather than the normal output. * In npm pkg set it enables parsing set values with JSON.parse() before saving them to your package.json. Not supported by all npm commands.
+
+
+--registry
+"https://registry.npmjs.org/"
+URL
+The base URL of the npm registry.
+
+
+--yes, -y
+null
+null or Boolean
+Automatically answer "yes" to any prompts that npm might print on the command line.
+
+
+
+npm trust list
+List trusted relationships for a package
+Synopsis
+npm trust list [package]
+
+Flags
+
+
+
+Flag
+Default
+Type
+Description
+
+
+
+
+--json
+false
+Boolean
+Whether or not to output JSON data, rather than the normal output. * In npm pkg set it enables parsing set values with JSON.parse() before saving them to your package.json. Not supported by all npm commands.
+
+
+--registry
+"https://registry.npmjs.org/"
+URL
+The base URL of the npm registry.
+
+
+
+npm trust revoke
+Revoke a trusted relationship for a package
+Synopsis
+npm trust revoke [package] --id=<trust-id>
+
+Flags
+
+
+
+Flag
+Default
+Type
+Description
+
+
+
+
+--id
+null
+String (required)
+ID of the trusted relationship to revoke
+
+
+--dry-run
+false
+Boolean
+Indicates that you don't want npm to make any changes and that it should only report what it would have done. This can be passed into any of the commands that modify your local installation, eg, install, update, dedupe, uninstall, as well as pack and publish. Note: This is NOT honored by other network related commands, eg dist-tags, owner, etc.
+
+
+--registry
+"https://registry.npmjs.org/"
+URL
+The base URL of the npm registry.
+
+
+
+See Also
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/deps/npm/docs/output/commands/npm-undeprecate.html b/deps/npm/docs/output/commands/npm-undeprecate.html
index b4be55e168b585..961da2379eee38 100644
--- a/deps/npm/docs/output/commands/npm-undeprecate.html
+++ b/deps/npm/docs/output/commands/npm-undeprecate.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-undeprecate
- @11.9.0
+ @11.11.0
Undeprecate a version of a package
diff --git a/deps/npm/docs/output/commands/npm-uninstall.html b/deps/npm/docs/output/commands/npm-uninstall.html
index 44e9cf7c2aa3ed..70dff9cfcfb4cc 100644
--- a/deps/npm/docs/output/commands/npm-uninstall.html
+++ b/deps/npm/docs/output/commands/npm-uninstall.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-uninstall
- @11.9.0
+ @11.11.0
Remove a package
diff --git a/deps/npm/docs/output/commands/npm-unpublish.html b/deps/npm/docs/output/commands/npm-unpublish.html
index 2e22356936185c..b31d1337409445 100644
--- a/deps/npm/docs/output/commands/npm-unpublish.html
+++ b/deps/npm/docs/output/commands/npm-unpublish.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-unpublish
- @11.9.0
+ @11.11.0
Remove a package from the registry
diff --git a/deps/npm/docs/output/commands/npm-unstar.html b/deps/npm/docs/output/commands/npm-unstar.html
index 8ecc9dd29d998a..2b66840d5d748e 100644
--- a/deps/npm/docs/output/commands/npm-unstar.html
+++ b/deps/npm/docs/output/commands/npm-unstar.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-unstar
- @11.9.0
+ @11.11.0
Remove an item from your favorite packages
diff --git a/deps/npm/docs/output/commands/npm-update.html b/deps/npm/docs/output/commands/npm-update.html
index 36918bdfe28faa..062f516cdcc1e7 100644
--- a/deps/npm/docs/output/commands/npm-update.html
+++ b/deps/npm/docs/output/commands/npm-update.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,16 +186,16 @@
-
+
npm-update
- @11.9.0
+ @11.11.0
Update packages
Table of contents
-
+
Synopsis
@@ -384,6 +429,19 @@ before
--before filter, the most recent version less than or equal to that tag
will be used. For example, foo@latest might install foo@1.2 even though
latest is 2.0.
+This config cannot be used with: min-release-age
+min-release-age
+
+
+If set, npm will build the npm tree such that only versions that were
+available more than the given number of days ago will be installed. If there
+are no versions available for the current set of dependencies, the command
+will error.
+This flag is a complement to before, which accepts an exact date instead
+of a relative number of days.
+This config cannot be used with: before
bin-links
-
+
npm-version
- @11.9.0
+ @11.11.0
Bump a package version
diff --git a/deps/npm/docs/output/commands/npm-view.html b/deps/npm/docs/output/commands/npm-view.html
index ff28bddcc77722..962fb3e917a597 100644
--- a/deps/npm/docs/output/commands/npm-view.html
+++ b/deps/npm/docs/output/commands/npm-view.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-view
- @11.9.0
+ @11.11.0
View registry info
diff --git a/deps/npm/docs/output/commands/npm-whoami.html b/deps/npm/docs/output/commands/npm-whoami.html
index 90eefca7360055..bbe839b749e927 100644
--- a/deps/npm/docs/output/commands/npm-whoami.html
+++ b/deps/npm/docs/output/commands/npm-whoami.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-whoami
- @11.9.0
+ @11.11.0
Display npm username
diff --git a/deps/npm/docs/output/commands/npm.html b/deps/npm/docs/output/commands/npm.html
index 3236401d1e4096..f2426536a0a57e 100644
--- a/deps/npm/docs/output/commands/npm.html
+++ b/deps/npm/docs/output/commands/npm.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm
- @11.9.0
+ @11.11.0
javascript package manager
@@ -158,7 +203,7 @@ Table of contents
Note: This command is unaware of workspaces.
Version
-11.9.0
+11.11.0
Description
npm is the package manager for the Node JavaScript platform.
It puts modules in place so that node can find them, and manages dependency conflicts intelligently.
diff --git a/deps/npm/docs/output/commands/npx.html b/deps/npm/docs/output/commands/npx.html
index c3ab304803e6b4..1d8e36310c207d 100644
--- a/deps/npm/docs/output/commands/npx.html
+++ b/deps/npm/docs/output/commands/npx.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npx
- @11.9.0
+ @11.11.0
Run a command from a local or remote npm package
diff --git a/deps/npm/docs/output/configuring-npm/folders.html b/deps/npm/docs/output/configuring-npm/folders.html
index ad588e49d6601c..47da8cc4d77d2e 100644
--- a/deps/npm/docs/output/configuring-npm/folders.html
+++ b/deps/npm/docs/output/configuring-npm/folders.html
@@ -1,6 +1,6 @@
-folders
+Folders
@@ -141,11 +186,11 @@
-
- folders
- @11.9.0
+
+ Folders
+ @11.11.0
-Folder Structures Used by npm
+Folder structures used by npm
diff --git a/deps/npm/docs/output/configuring-npm/install.html b/deps/npm/docs/output/configuring-npm/install.html
index 75075d822fad4d..ff278db8f72ece 100644
--- a/deps/npm/docs/output/configuring-npm/install.html
+++ b/deps/npm/docs/output/configuring-npm/install.html
@@ -1,6 +1,6 @@
-install
+Install
@@ -141,9 +186,9 @@
-
- install
- @11.9.0
+
+ Install
+ @11.11.0
Download and install node and npm
diff --git a/deps/npm/docs/output/configuring-npm/npm-global.html b/deps/npm/docs/output/configuring-npm/npm-global.html
index ad588e49d6601c..47da8cc4d77d2e 100644
--- a/deps/npm/docs/output/configuring-npm/npm-global.html
+++ b/deps/npm/docs/output/configuring-npm/npm-global.html
@@ -1,6 +1,6 @@
-folders
+Folders
@@ -141,11 +186,11 @@
-
- folders
- @11.9.0
+
+ Folders
+ @11.11.0
-Folder Structures Used by npm
+Folder structures used by npm
diff --git a/deps/npm/docs/output/configuring-npm/npm-json.html b/deps/npm/docs/output/configuring-npm/npm-json.html
index 9b15c851a9b962..5b6c4ae33b70c8 100644
--- a/deps/npm/docs/output/configuring-npm/npm-json.html
+++ b/deps/npm/docs/output/configuring-npm/npm-json.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
package.json
- @11.9.0
+ @11.11.0
Specifics of npm's package.json handling
diff --git a/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html b/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html
index 644718fa76ad24..6576d09f77fbd1 100644
--- a/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html
+++ b/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
npm-shrinkwrap.json
- @11.9.0
+ @11.11.0
A publishable lockfile
diff --git a/deps/npm/docs/output/configuring-npm/npmrc.html b/deps/npm/docs/output/configuring-npm/npmrc.html
index c2afe2c28d0505..34b344f7da087c 100644
--- a/deps/npm/docs/output/configuring-npm/npmrc.html
+++ b/deps/npm/docs/output/configuring-npm/npmrc.html
@@ -1,6 +1,6 @@
-npmrc
+.npmrc
@@ -141,16 +186,16 @@
-
- npmrc
- @11.9.0
+
+ .npmrc
+ @11.11.0
The npm config files
Table of contents
-
+
Description
@@ -224,6 +269,25 @@ Auth related configuration
If the credential is meant for any request to a registry on a single host, the scope may look like //registry.npmjs.org/:.
If it must be scoped to a specific path on the host that path may also be provided, such as
//my-custom-registry.org/unique/path:.
+Unsupported Custom Configuration Keys
+Starting in npm v11.2.0, npm warns when unknown configuration keys are defined in .npmrc. In a future major version of npm, these unknown keys may no longer be accepted.
+Only configuration keys that npm officially supports are recognized. Custom keys intended for third-party tools (for example, electron-builder) should not be placed in .npmrc.
+If you need package-level configuration for use in scripts, use the config field in your package.json instead:
+{
+ "name": "my-package",
+ "config": {
+ "mirror": "https://example.com/"
+ }
+}
+
+
+Values defined in package.json#config are exposed to scripts as environment variables prefixed with npm_package_config_. For example:
+npm_package_config_mirror
+
+If you need to pass arguments to a script command, use -- to separate npm arguments from script arguments:
+npm run build -- --customFlag
+
+Using environment variables is also recommended for cross-platform configuration instead of defining unsupported keys in .npmrc.
; bad config
_authToken=MYTOKEN
@@ -241,6 +305,24 @@ Auth related configuration
; would apply only to @another
//somewhere-else.com/another/:_authToken=MYTOKEN2
+Custom / third-party config keys
+npm only recognizes its own configuration options.
+If your .npmrc contains keys that are not part of npm's config definitions
+(for example, electron_mirror or sass_binary_site), npm will emit a
+warning:
+warn Unknown user config "electron_mirror".
+This will stop working in the next major version of npm.
+
+These keys were historically tolerated but are not officially supported.
+A future major version of npm will treat unknown top-level keys as errors.
+Some tools (such as @electron/get or node-sass) read their own
+configuration from environment variables or from .npmrc by convention.
+You can set these values as environment variables instead:
+export ELECTRON_MIRROR="https://mirrorexample.npmjs.org/mirrors/electron/"
+export ELECTRON_CUSTOM_DIR="{{ version }}"
+
+Environment variables are the most portable approach and work regardless
+of .npmrc format.
See also
-
+
package.json
- @11.9.0
+ @11.11.0
Specifics of npm's package.json handling
diff --git a/deps/npm/docs/output/configuring-npm/package-lock-json.html b/deps/npm/docs/output/configuring-npm/package-lock-json.html
index f087d02ec1dbc4..1b6398d7315a41 100644
--- a/deps/npm/docs/output/configuring-npm/package-lock-json.html
+++ b/deps/npm/docs/output/configuring-npm/package-lock-json.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,9 +186,9 @@
-
+
package-lock.json
- @11.9.0
+ @11.11.0
A manifestation of the manifest
diff --git a/deps/npm/docs/output/using-npm/config.html b/deps/npm/docs/output/using-npm/config.html
index bb3eb98f9d8a63..c80f9aef29940a 100644
--- a/deps/npm/docs/output/using-npm/config.html
+++ b/deps/npm/docs/output/using-npm/config.html
@@ -1,6 +1,6 @@
-config
+Config
@@ -141,16 +186,16 @@
-
- config
- @11.9.0
+
+ Config
+ @11.11.0
-More than you probably want to know about npm configuration
+About npm configuration
Table of contents
-
+
Description
@@ -335,6 +380,7 @@ before
--before filter, the most recent version less than or equal to that tag
will be used. For example, foo@latest might install foo@1.2 even though
latest is 2.0.
+This config cannot be used with: min-release-age
bin-links
message
Commit message which is used by npm version when creating version commit.
Any "%s" in the message will be replaced with the version number.
+min-release-age
+
+
+If set, npm will build the npm tree such that only versions that were
+available more than the given number of days ago will be installed. If there
+are no versions available for the current set of dependencies, the command
+will error.
+This flag is a complement to before, which accepts an exact date instead
+of a relative number of days.
+This config cannot be used with: before
name
Dependency Selector Syntax & Querying
+Dependency Selectors
@@ -141,9 +186,9 @@
-
- Dependency Selector Syntax & Querying
- @11.9.0
+
+ Dependency Selectors
+ @11.11.0
Dependency Selector Syntax & Querying
@@ -210,7 +255,7 @@ Pseudo Selectors
diff --git a/deps/npm/docs/output/using-npm/developers.html b/deps/npm/docs/output/using-npm/developers.html
index 1c80eedc91856e..30cc68a686b84e 100644
--- a/deps/npm/docs/output/using-npm/developers.html
+++ b/deps/npm/docs/output/using-npm/developers.html
@@ -1,6 +1,6 @@
-developers
+Developers
@@ -141,11 +186,11 @@
-
- developers
- @11.9.0
+
+ Developers
+ @11.11.0
-Developer Guide
+Developer guide
diff --git a/deps/npm/docs/output/using-npm/logging.html b/deps/npm/docs/output/using-npm/logging.html
index 3fbbf62f4e8597..1169069dd85831 100644
--- a/deps/npm/docs/output/using-npm/logging.html
+++ b/deps/npm/docs/output/using-npm/logging.html
@@ -123,6 +123,51 @@
margin: 3em 0 4em 0;
padding-top: 2em;
}
+
+table {
+ width: 100%;
+ margin: 1em 0;
+ border-radius: 6px;
+ border: 1px solid #e1e4e8;
+ overflow: hidden;
+ border-collapse: separate;
+ border-spacing: 0;
+}
+
+table thead {
+ background-color: #f6f8fa;
+}
+
+table tbody {
+ background-color: #ffffff;
+}
+
+table th,
+table td {
+ padding: 0.75em;
+ text-align: left;
+ border-right: 1px solid #e1e4e8;
+ border-bottom: 1px solid #e1e4e8;
+}
+
+table th:last-child,
+table td:last-child {
+ border-right: none;
+}
+
+table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+table th {
+ font-weight: 600;
+ background-color: #f6f8fa;
+}
+
+table code {
+ white-space: nowrap;
+}
+
@@ -141,11 +186,11 @@
-
+
Logging
- @11.9.0
+ @11.11.0
-Why, What & How We Log
+Why, What & How we Log
diff --git a/deps/npm/docs/output/using-npm/orgs.html b/deps/npm/docs/output/using-npm/orgs.html
index 074617cd25acd3..103db8e1b477ea 100644
--- a/deps/npm/docs/output/using-npm/orgs.html
+++ b/deps/npm/docs/output/using-npm/orgs.html
@@ -1,6 +1,6 @@
-orgs
+Organizations
@@ -141,11 +186,11 @@
-
- orgs
- @11.9.0
+
+ Organizations
+ @11.11.0
-Working with Teams & Orgs
+Working with teams & organizations
diff --git a/deps/npm/docs/output/using-npm/package-spec.html b/deps/npm/docs/output/using-npm/package-spec.html
index 1427e7f0ecc37d..9ca82242a8fee0 100644
--- a/deps/npm/docs/output/using-npm/package-spec.html
+++ b/deps/npm/docs/output/using-npm/package-spec.html
@@ -1,6 +1,6 @@
-package-spec
+Package spec
@@ -141,9 +186,9 @@
-
- package-spec
- @11.9.0
+
+ Package spec
+ @11.11.0
Package name specifier
diff --git a/deps/npm/docs/output/using-npm/registry.html b/deps/npm/docs/output/using-npm/registry.html
index 398a1a72ba0c07..63d5d7f6c48b43 100644
--- a/deps/npm/docs/output/using-npm/registry.html
+++ b/deps/npm/docs/output/using-npm/registry.html
@@ -1,6 +1,6 @@
-registry
+Registry
@@ -141,9 +186,9 @@
-
- registry
- @11.9.0
+
+ Registry
+ @11.11.0
The JavaScript Package Registry
diff --git a/deps/npm/docs/output/using-npm/removal.html b/deps/npm/docs/output/using-npm/removal.html
index 88329fcc203e59..330f6bd6467780 100644
--- a/deps/npm/docs/output/using-npm/removal.html
+++ b/deps/npm/docs/output/using-npm/removal.html
@@ -1,6 +1,6 @@
-removal
+Removal
@@ -141,11 +186,11 @@
-
- removal
- @11.9.0
+
+ Removal
+ @11.11.0
-Cleaning the Slate
+Cleaning the slate
diff --git a/deps/npm/docs/output/using-npm/scope.html b/deps/npm/docs/output/using-npm/scope.html
index 3cab822c180f36..59a73ec4c0a501 100644
--- a/deps/npm/docs/output/using-npm/scope.html
+++ b/deps/npm/docs/output/using-npm/scope.html
@@ -1,6 +1,6 @@
-scope
+Scope
@@ -141,9 +186,9 @@
-
- scope
- @11.9.0
+
+ Scope
+ @11.11.0
Scoped packages
diff --git a/deps/npm/docs/output/using-npm/scripts.html b/deps/npm/docs/output/using-npm/scripts.html
index e47dfd682231de..0b8857e3799fb8 100644
--- a/deps/npm/docs/output/using-npm/scripts.html
+++ b/deps/npm/docs/output/using-npm/scripts.html
@@ -1,6 +1,6 @@
-scripts
+Scripts
@@ -141,9 +186,9 @@
-
- scripts
- @11.9.0
+
+ Scripts
+ @11.11.0
How npm handles the "scripts" field
diff --git a/deps/npm/docs/output/using-npm/workspaces.html b/deps/npm/docs/output/using-npm/workspaces.html
index a6cb16a60173a0..9b4982f2a0de29 100644
--- a/deps/npm/docs/output/using-npm/workspaces.html
+++ b/deps/npm/docs/output/using-npm/workspaces.html
@@ -1,6 +1,6 @@
-workspaces
+Workspaces
@@ -141,9 +186,9 @@
-
- workspaces
- @11.9.0
+
+ Workspaces
+ @11.11.0
Working with workspaces
diff --git a/deps/npm/lib/base-cmd.js b/deps/npm/lib/base-cmd.js
index 3e6c4758cbd587..8b846316a4b96f 100644
--- a/deps/npm/lib/base-cmd.js
+++ b/deps/npm/lib/base-cmd.js
@@ -1,4 +1,6 @@
const { log } = require('proc-log')
+const { definitions, shorthands } = require('@npmcli/config/lib/definitions')
+const nopt = require('nopt')
class BaseCommand {
// these defaults can be overridden by individual commands
@@ -10,39 +12,76 @@ class BaseCommand {
static name = null
static description = null
static params = null
+ static definitions = null
+ static subcommands = null
+ // Number of expected positional arguments (null = unlimited/unchecked)
+ static positionals = null
// this is a static so that we can read from it without instantiating a command
// which would require loading the config
static get describeUsage () {
- const { definitions } = require('@npmcli/config/lib/definitions')
+ return this.getUsage()
+ }
+
+ static getUsage (parentName = null, includeDescriptions = true) {
const { aliases: cmdAliases } = require('./utils/cmd-list')
const seenExclusive = new Set()
const wrapWidth = 80
- const { description, usage = [''], name, params } = this
+ const { description, usage = [''], name } = this
+
+ // Resolve to a definitions array: if the command has its own definitions, use
+ // those directly; otherwise resolve params from the global definitions pool.
+ let cmdDefs
+ if (this.definitions) {
+ cmdDefs = this.definitions
+ } else if (this.params) {
+ cmdDefs = this.params.map(p => definitions[p]).filter(Boolean)
+ }
+
+ // If this is a subcommand, prepend parent name
+ const fullCommandName = parentName ? `${parentName} ${name}` : name
const fullUsage = [
`${description}`,
'',
'Usage:',
- ...usage.map(u => `npm ${name} ${u}`.trim()),
+ ...usage.map(u => `npm ${fullCommandName} ${u}`.trim()),
]
- if (params) {
+ if (this.subcommands) {
+ fullUsage.push('')
+ fullUsage.push('Subcommands:')
+ const subcommandEntries = Object.entries(this.subcommands)
+ for (let i = 0; i < subcommandEntries.length; i++) {
+ const [subName, SubCommand] = subcommandEntries[i]
+ fullUsage.push(` ${subName}`)
+ if (SubCommand.description) {
+ fullUsage.push(` ${SubCommand.description}`)
+ }
+ // Add space between subcommands except after the last one
+ if (i < subcommandEntries.length - 1) {
+ fullUsage.push('')
+ }
+ }
+ fullUsage.push('')
+ fullUsage.push(`Run "npm ${name} --help" for more info on a subcommand.`)
+ }
+
+ if (cmdDefs) {
let results = ''
let line = ''
- for (const param of params) {
+ for (const def of cmdDefs) {
/* istanbul ignore next */
- if (seenExclusive.has(param)) {
+ if (seenExclusive.has(def.key)) {
continue
}
- const { exclusive } = definitions[param]
- let paramUsage = `${definitions[param].usage}`
- if (exclusive) {
+ let paramUsage = def.usage
+ if (def.exclusive) {
const exclusiveParams = [paramUsage]
- seenExclusive.add(param)
- for (const e of exclusive) {
+ for (const e of def.exclusive) {
seenExclusive.add(e)
- exclusiveParams.push(definitions[e].usage)
+ const eDef = cmdDefs.find(d => d.key === e) || definitions[e]
+ exclusiveParams.push(eDef?.usage)
}
paramUsage = `${exclusiveParams.join('|')}`
}
@@ -56,6 +95,24 @@ class BaseCommand {
fullUsage.push('')
fullUsage.push('Options:')
fullUsage.push([results, line].filter(Boolean).join('\n'))
+
+ // Add flag descriptions
+ if (cmdDefs.length > 0 && includeDescriptions) {
+ fullUsage.push('')
+ for (const def of cmdDefs) {
+ if (def.description) {
+ const desc = def.description.trim().split('\n')[0]
+ const shortcuts = def.short ? `-${def.short}` : ''
+ const aliases = (def.alias || []).map(v => `--${v}`).join('|')
+ const mainFlag = `--${def.key}`
+ const flagName = [shortcuts, mainFlag, aliases].filter(Boolean).join('|')
+ const requiredNote = def.required ? ' (required)' : ''
+ fullUsage.push(` ${flagName}${requiredNote}`)
+ fullUsage.push(` ${desc}`)
+ fullUsage.push('')
+ }
+ }
+ }
}
const aliases = Object.entries(cmdAliases).reduce((p, [k, v]) => {
@@ -76,8 +133,9 @@ class BaseCommand {
constructor (npm) {
this.npm = npm
+ this.commandArgs = null
- const { config } = this.npm
+ const { config } = this
if (!this.constructor.skipConfigValidation) {
config.validate()
@@ -88,6 +146,11 @@ class BaseCommand {
}
}
+ get config () {
+ // Return command-specific config if it exists, otherwise use npm's config
+ return this.npm.config
+ }
+
get name () {
return this.constructor.name
}
@@ -209,6 +272,163 @@ class BaseCommand {
this.workspaceNames = [...ws.keys()]
this.workspacePaths = [...ws.values()]
}
+
+ flags (depth = 1) {
+ const commandDefinitions = this.constructor.definitions || []
+
+ // Build types, shorthands, and defaults from definitions
+ const types = {}
+ const defaults = {}
+ const cmdShorthands = {}
+ const aliasMap = {} // Track which aliases map to which main keys
+
+ for (const def of commandDefinitions) {
+ defaults[def.key] = def.default
+ types[def.key] = def.type
+
+ // Handle aliases defined in the definition
+ if (def.alias && Array.isArray(def.alias)) {
+ for (const aliasKey of def.alias) {
+ types[aliasKey] = def.type // Needed for nopt to parse aliases
+ if (!aliasMap[def.key]) {
+ aliasMap[def.key] = []
+ }
+ aliasMap[def.key].push(aliasKey)
+ }
+ }
+
+ // Handle short options
+ if (def.short) {
+ const shorts = Array.isArray(def.short) ? def.short : [def.short]
+ for (const short of shorts) {
+ cmdShorthands[short] = [`--${def.key}`]
+ }
+ }
+ }
+
+ // Parse args
+ let parsed = {}
+ let remains = []
+ const argv = this.config.argv
+ if (argv && argv.length > 0) {
+ // config.argv contains the full command line including node, npm, and command names
+ // Format: ['node', 'npm', 'command', 'subcommand', 'positional', '--flags']
+ // depth tells us how many command names to skip (1 for top-level, 2 for subcommand, etc.)
+ const offset = 2 + depth // Skip 'node', 'npm', and all command/subcommand names
+ parsed = nopt(types, cmdShorthands, argv, offset)
+ remains = parsed.argv.remain
+ delete parsed.argv
+ }
+
+ // Validate flags - only if command has definitions (new system)
+ if (this.constructor.definitions && this.constructor.definitions.length > 0) {
+ this.#validateFlags(parsed, commandDefinitions, remains)
+ }
+
+ // Check for conflicts between main flags and their aliases
+ // Also map aliases back to their main keys
+ for (const [mainKey, aliases] of Object.entries(aliasMap)) {
+ const providedKeys = []
+ if (mainKey in parsed) {
+ providedKeys.push(mainKey)
+ }
+ for (const alias of aliases) {
+ if (alias in parsed) {
+ providedKeys.push(alias)
+ }
+ }
+ if (providedKeys.length > 1) {
+ const flagList = providedKeys.map(k => `--${k}`).join(' or ')
+ throw new Error(`Please provide only one of ${flagList}`)
+ }
+
+ // If an alias was provided, map it to the main key
+ if (providedKeys.length === 1 && providedKeys[0] !== mainKey) {
+ const aliasKey = providedKeys[0]
+ parsed[mainKey] = parsed[aliasKey]
+ delete parsed[aliasKey]
+ }
+ }
+
+ // Only include keys that are defined in commandDefinitions (main keys only)
+ const filtered = {}
+ for (const def of commandDefinitions) {
+ if (def.key in parsed) {
+ filtered[def.key] = parsed[def.key]
+ }
+ }
+ return [{ ...defaults, ...filtered }, remains]
+ }
+
+ // Validate flags and throw errors for unknown flags or unexpected positionals
+ #validateFlags (parsed, commandDefinitions, remains) {
+ // Build a set of all valid flag names (global + command-specific + shorthands)
+ const validFlags = new Set([
+ ...Object.keys(definitions),
+ ...commandDefinitions.map(d => d.key),
+ ...Object.keys(shorthands), // Add global shorthands like 'verbose', 'dd', etc.
+ ])
+
+ // Add aliases to valid flags
+ for (const def of commandDefinitions) {
+ if (def.alias && Array.isArray(def.alias)) {
+ for (const alias of def.alias) {
+ validFlags.add(alias)
+ }
+ }
+ }
+
+ // Check parsed flags against valid flags
+ const unknownFlags = []
+ for (const key of Object.keys(parsed)) {
+ if (!validFlags.has(key)) {
+ unknownFlags.push(key)
+ }
+ }
+
+ // Throw error if unknown flags were found
+ if (unknownFlags.length > 0) {
+ const flagList = unknownFlags.map(f => `--${f}`).join(', ')
+ throw this.usageError(`Unknown flag${unknownFlags.length > 1 ? 's' : ''}: ${flagList}`)
+ }
+
+ // Remove warnings for command-specific definitions that npm's global config
+ // doesn't know about (these were queued as "unknown" during config.load())
+ for (const def of commandDefinitions) {
+ this.npm.config.removeWarning(def.key)
+ if (def.alias && Array.isArray(def.alias)) {
+ for (const alias of def.alias) {
+ this.npm.config.removeWarning(alias)
+ }
+ }
+ }
+
+ // Remove warnings for unknown positionals that were actually consumed as flag values
+ // by command-specific definitions (e.g., --id where --id is command-specific)
+ const remainsSet = new Set(remains)
+ for (const unknownPos of this.npm.config.getUnknownPositionals()) {
+ if (!remainsSet.has(unknownPos)) {
+ // This value was consumed as a flag value, not truly a positional
+ this.npm.config.removeUnknownPositional(unknownPos)
+ }
+ }
+
+ // Warn about extra positional arguments beyond what the command expects
+ const expectedPositionals = this.constructor.positionals
+ if (expectedPositionals !== null && remains.length > expectedPositionals) {
+ const extraPositionals = remains.slice(expectedPositionals)
+ for (const extra of extraPositionals) {
+ throw new Error(`Unknown positional argument: ${extra}`)
+ }
+ }
+
+ this.npm.config.logWarnings()
+ }
+
+ async exec () {
+ // This method should be overridden by commands
+ // Subcommand routing is handled in npm.js #exec
+ }
}
module.exports = BaseCommand
diff --git a/deps/npm/lib/commands/cache.js b/deps/npm/lib/commands/cache.js
index 7aaf3564cb9fc7..580997b66c6f71 100644
--- a/deps/npm/lib/commands/cache.js
+++ b/deps/npm/lib/commands/cache.js
@@ -363,7 +363,7 @@ class Cache extends BaseCommand {
if (valid) {
output.standard(results.join('\n'))
}
- output.standard('')
+ output.standard()
}
}
}
diff --git a/deps/npm/lib/commands/completion.js b/deps/npm/lib/commands/completion.js
index ae459aaaf31ce5..bfb01b8d08843b 100644
--- a/deps/npm/lib/commands/completion.js
+++ b/deps/npm/lib/commands/completion.js
@@ -40,13 +40,13 @@ const BaseCommand = require('../base-cmd.js')
const fileExists = (file) => fs.stat(file).then(s => s.isFile()).catch(() => false)
-const configNames = Object.keys(definitions)
-const shorthandNames = Object.keys(shorthands)
-const allConfs = configNames.concat(shorthandNames)
-
class Completion extends BaseCommand {
static description = 'Tab Completion for npm'
static name = 'completion'
+ // Completion command uses args differently - they represent the command line
+ // being completed, not actual arguments to this command, so we use an empty
+ // definitions object to prevent flag validation
+ static definitions = []
// completion for the completion command
static async completion (opts) {
@@ -90,15 +90,17 @@ class Completion extends BaseCommand {
// if the point isn't at the end.
// ie, tabbing at: npm foo b|ar
const w = +COMP_CWORD
- const words = args.map(unescape)
- const word = words[w]
const line = COMP_LINE
+ // Use COMP_LINE to get words if args doesn't include flags (e.g., in tests)
+ const hasFlags = line.includes(' -') && !args.some(arg => arg.startsWith('-'))
+ const words = (hasFlags ? line.split(/\s+/) : args).map(unescape)
+ const word = words[w] || ''
const point = +COMP_POINT
const partialLine = line.slice(0, point)
const partialWords = words.slice(0, w)
// figure out where in that last word the point is.
- const partialWordRaw = args[w]
+ const partialWordRaw = args[w] || ''
let i = partialWordRaw.length
while (partialWordRaw.slice(0, i) !== partialLine.slice(-1 * i) && i > 0) {
i--
@@ -121,33 +123,32 @@ class Completion extends BaseCommand {
raw: args,
}
+ // try to find the npm command and subcommand early for flag completion
+ // this helps with custom command definitions from subcommands
+ const types = Object.entries(definitions).reduce((acc, [key, def]) => {
+ acc[key] = def.type
+ return acc
+ }, {})
+ const parsed = opts.conf =
+ nopt(types, shorthands, partialWords.slice(0, -1), 0)
+ const cmd = parsed.argv.remain[1]
+ const subCmd = parsed.argv.remain[2]
+
if (partialWords.slice(0, -1).indexOf('--') === -1) {
- if (word.charAt(0) === '-') {
- return this.wrap(opts, configCompl(opts))
+ if (word && word.charAt(0) === '-') {
+ return this.wrap(opts, configCompl(opts, cmd, subCmd, this.npm))
}
if (words[w - 1] &&
words[w - 1].charAt(0) === '-' &&
- !isFlag(words[w - 1])) {
+ !isFlag(words[w - 1], cmd, subCmd, this.npm)) {
// awaiting a value for a non-bool config.
// don't even try to do this for now
return this.wrap(opts, configValueCompl(opts))
}
}
- // try to find the npm command.
- // it's the first thing after all the configs.
- // take a little shortcut and use npm's arg parsing logic.
- // don't have to worry about the last arg being implicitly
- // boolean'ed, since the last block will catch that.
- const types = Object.entries(definitions).reduce((acc, [key, def]) => {
- acc[key] = def.type
- return acc
- }, {})
- const parsed = opts.conf =
- nopt(types, shorthands, partialWords.slice(0, -1), 0)
// check if there's a command already.
- const cmd = parsed.argv.remain[1]
if (!cmd) {
return this.wrap(opts, cmdCompl(opts, this.npm))
}
@@ -234,16 +235,66 @@ const dumpScript = async (p) => {
const unescape = w => w.charAt(0) === '\'' ? w.replace(/^'|'$/g, '')
: w.replace(/\\ /g, ' ')
+// Helper to get custom definitions from a command/subcommand
+const getCustomDefinitions = (cmd, subCmd) => {
+ if (!cmd) {
+ return []
+ }
+
+ try {
+ const command = Npm.cmd(cmd)
+
+ // Check if the command has subcommands
+ if (subCmd && command.subcommands && command.subcommands[subCmd]) {
+ const subcommand = command.subcommands[subCmd]
+ // All subcommands have definitions
+ return subcommand.definitions
+ }
+
+ // Check if the command itself has definitions
+ if (command.definitions) {
+ return command.definitions
+ }
+ } catch {
+ // Command not found or no definitions
+ }
+
+ return []
+}
+
+// Helper to get all config names including aliases from custom definitions
+const getCustomConfigNames = (customDefs) => {
+ const names = new Set()
+ for (const def of customDefs) {
+ names.add(def.key)
+ if (def.alias && Array.isArray(def.alias)) {
+ def.alias.forEach(a => names.add(a))
+ }
+ }
+ return [...names]
+}
+
// the current word has a dash. Return the config names,
// with the same number of dashes as the current word has.
-const configCompl = opts => {
+const configCompl = (opts, cmd, subCmd, npm) => {
const word = opts.word
const split = word.match(/^(-+)((?:no-)*)(.*)$/)
const dashes = split[1]
const no = split[2]
- const flags = configNames.filter(isFlag)
- return allConfs.map(c => dashes + c)
- .concat(flags.map(f => dashes + (no || 'no-') + f))
+
+ // Get custom definitions from the command/subcommand
+ const customDefs = getCustomDefinitions(cmd, subCmd, npm)
+ const customNames = getCustomConfigNames(customDefs)
+
+ // If there are custom definitions, return only those (new feature)
+ // Otherwise, return empty array (historical behavior - no global flag completion)
+ if (customNames.length > 0) {
+ const flags = customNames.filter(name => isFlag(name, cmd, subCmd, npm))
+ return customNames.map(c => dashes + c)
+ .concat(flags.map(f => dashes + (no || 'no-') + f))
+ }
+
+ return []
}
// expand with the valid values of various config values.
@@ -251,16 +302,37 @@ const configCompl = opts => {
const configValueCompl = () => []
// check if the thing is a flag or not.
-const isFlag = word => {
+const isFlag = (word, cmd, subCmd, npm) => {
// shorthands never take args.
const split = word.match(/^(-*)((?:no-)+)?(.*)$/)
const no = split[2]
const conf = split[3]
- const { type } = definitions[conf]
- return no ||
- type === Boolean ||
- (Array.isArray(type) && type.includes(Boolean)) ||
- shorthands[conf]
+
+ // Check custom definitions first
+ const customDefs = getCustomDefinitions(cmd, subCmd, npm)
+
+ // Check if conf is in custom definitions or is an alias
+ let customDef = customDefs.find(d => d.key === conf)
+ if (!customDef) {
+ // Check if conf is an alias for any of the custom definitions
+ for (const def of customDefs) {
+ if (def.alias && Array.isArray(def.alias) && def.alias.includes(conf)) {
+ customDef = def
+ break
+ }
+ }
+ }
+
+ if (customDef) {
+ const { type } = customDef
+ return no ||
+ type === Boolean ||
+ (Array.isArray(type) && type.includes(Boolean))
+ }
+
+ // No custom definitions found, should not reach here in normal flow
+ // since configCompl returns empty array when no custom defs exist
+ return false
}
// complete against the npm commands
diff --git a/deps/npm/lib/commands/doctor.js b/deps/npm/lib/commands/doctor.js
index a537478bee3fe1..0d948da231187b 100644
--- a/deps/npm/lib/commands/doctor.js
+++ b/deps/npm/lib/commands/doctor.js
@@ -27,7 +27,7 @@ const maskLabel = mask => {
return label.join(', ')
}
-const subcommands = [
+const checks = [
{
// Ping is left in as a legacy command but is listed as "connection" to
// make more sense to more people
@@ -100,12 +100,10 @@ class Doctor extends BaseCommand {
static name = 'doctor'
static params = ['registry']
static ignoreImplicitWorkspace = false
- static usage = [`[${subcommands.flatMap(s => s.groups)
+ static usage = [`[${checks.flatMap(s => s.groups)
.filter((value, index, self) => self.indexOf(value) === index && value !== 'ping')
.join('] [')}]`]
- static subcommands = subcommands
-
async exec (args) {
log.info('doctor', 'Running checkup')
let allOk = true
@@ -331,7 +329,7 @@ class Doctor extends BaseCommand {
}
actions (params) {
- return this.constructor.subcommands.filter(subcmd => {
+ return checks.filter(subcmd => {
if (process.platform === 'win32' && subcmd.windows === false) {
return false
}
diff --git a/deps/npm/lib/commands/edit.js b/deps/npm/lib/commands/edit.js
index b2c2ec8d2a39a0..1140c59efa3e40 100644
--- a/deps/npm/lib/commands/edit.js
+++ b/deps/npm/lib/commands/edit.js
@@ -33,8 +33,6 @@ class Edit extends BaseCommand {
static params = ['editor']
static ignoreImplicitWorkspace = false
- // TODO
- /* istanbul ignore next */
static async completion (opts, npm) {
return completion(npm, opts)
}
diff --git a/deps/npm/lib/commands/explain.js b/deps/npm/lib/commands/explain.js
index 5f37ba9925f410..3b843e3bbff6c9 100644
--- a/deps/npm/lib/commands/explain.js
+++ b/deps/npm/lib/commands/explain.js
@@ -17,8 +17,6 @@ class Explain extends ArboristWorkspaceCmd {
static ignoreImplicitWorkspace = false
- // TODO
- /* istanbul ignore next */
static async completion (opts, npm) {
const completion = require('../utils/installed-deep.js')
return completion(npm, opts)
diff --git a/deps/npm/lib/commands/explore.js b/deps/npm/lib/commands/explore.js
index 184af2bdc5a161..d0d2e5c3ef8912 100644
--- a/deps/npm/lib/commands/explore.js
+++ b/deps/npm/lib/commands/explore.js
@@ -14,8 +14,6 @@ class Explore extends BaseCommand {
static params = ['shell']
static ignoreImplicitWorkspace = false
- // TODO
- /* istanbul ignore next */
static async completion (opts, npm) {
return completion(npm, opts)
}
diff --git a/deps/npm/lib/commands/fund.js b/deps/npm/lib/commands/fund.js
index 8c194dac80b49b..a281912d77b326 100644
--- a/deps/npm/lib/commands/fund.js
+++ b/deps/npm/lib/commands/fund.js
@@ -34,8 +34,6 @@ class Fund extends ArboristWorkspaceCmd {
return `${msg}\``
}
- // TODO
- /* istanbul ignore next */
static async completion (opts, npm) {
const completion = require('../utils/installed-deep.js')
return completion(npm, opts)
diff --git a/deps/npm/lib/commands/get.js b/deps/npm/lib/commands/get.js
index 4191f2c973e7d3..e111d7f2f54c84 100644
--- a/deps/npm/lib/commands/get.js
+++ b/deps/npm/lib/commands/get.js
@@ -8,8 +8,6 @@ class Get extends BaseCommand {
static params = ['long']
static ignoreImplicitWorkspace = false
- // TODO
- /* istanbul ignore next */
static async completion (opts) {
const Config = Npm.cmd('config')
return Config.completion(opts)
diff --git a/deps/npm/lib/commands/install.js b/deps/npm/lib/commands/install.js
index 707848a43d48f8..43647c6bf7e88d 100644
--- a/deps/npm/lib/commands/install.js
+++ b/deps/npm/lib/commands/install.js
@@ -31,6 +31,7 @@ class Install extends ArboristWorkspaceCmd {
'allow-git',
'audit',
'before',
+ 'min-release-age',
'bin-links',
'fund',
'dry-run',
diff --git a/deps/npm/lib/commands/ls.js b/deps/npm/lib/commands/ls.js
index bc8beb007e8093..0ea8704a50573a 100644
--- a/deps/npm/lib/commands/ls.js
+++ b/deps/npm/lib/commands/ls.js
@@ -39,8 +39,6 @@ class LS extends ArboristWorkspaceCmd {
...super.params,
]
- // TODO
- /* istanbul ignore next */
static async completion (opts, npm) {
const completion = require('../utils/installed-deep.js')
return completion(npm, opts)
diff --git a/deps/npm/lib/commands/rebuild.js b/deps/npm/lib/commands/rebuild.js
index 1c19836106e063..a23df39f1560be 100644
--- a/deps/npm/lib/commands/rebuild.js
+++ b/deps/npm/lib/commands/rebuild.js
@@ -17,8 +17,6 @@ class Rebuild extends ArboristWorkspaceCmd {
static usage = ['[] ...]']
- // TODO
- /* istanbul ignore next */
static async completion (opts, npm) {
const completion = require('../utils/installed-deep.js')
return completion(npm, opts)
diff --git a/deps/npm/lib/commands/run.js b/deps/npm/lib/commands/run.js
index d89cb4d93bb7fa..bed82a6a08701b 100644
--- a/deps/npm/lib/commands/run.js
+++ b/deps/npm/lib/commands/run.js
@@ -57,7 +57,7 @@ class RunScript extends BaseCommand {
if (!args.length) {
const newline = await this.#list(path, { workspace })
if (newline && !last) {
- output.standard('')
+ output.standard()
}
continue
}
diff --git a/deps/npm/lib/commands/set.js b/deps/npm/lib/commands/set.js
index 2e61762ba9dcd4..9a90e2a50ea1e6 100644
--- a/deps/npm/lib/commands/set.js
+++ b/deps/npm/lib/commands/set.js
@@ -8,8 +8,6 @@ class Set extends BaseCommand {
static params = ['global', 'location']
static ignoreImplicitWorkspace = false
- // TODO
- /* istanbul ignore next */
static async completion (opts) {
const Config = Npm.cmd('config')
return Config.completion(opts)
diff --git a/deps/npm/lib/commands/team.js b/deps/npm/lib/commands/team.js
index 089e917909d10a..98f5d2d16b0084 100644
--- a/deps/npm/lib/commands/team.js
+++ b/deps/npm/lib/commands/team.js
@@ -1,4 +1,3 @@
-const columns = require('cli-columns')
const libteam = require('libnpmteam')
const { output } = require('proc-log')
const { otplease } = require('../utils/auth.js')
@@ -131,9 +130,11 @@ class Team extends BaseCommand {
output.standard(users.join('\n'))
} else if (!this.npm.silent) {
const plural = users.length === 1 ? '' : 's'
- const more = users.length === 0 ? '' : ':\n'
- output.standard(`\n@${entity} has ${users.length} user${plural}${more}`)
- output.standard(columns(users, { padding: 1 }))
+ const more = users.length === 0 ? '' : ':'
+ output.standard(`@${entity} has ${users.length} user${plural}${more}`)
+ for (const user of users) {
+ output.standard(user)
+ }
}
}
@@ -145,9 +146,11 @@ class Team extends BaseCommand {
output.standard(teams.join('\n'))
} else if (!this.npm.silent) {
const plural = teams.length === 1 ? '' : 's'
- const more = teams.length === 0 ? '' : ':\n'
- output.standard(`\n@${entity} has ${teams.length} team${plural}${more}`)
- output.standard(columns(teams.map(t => `@${t}`), { padding: 1 }))
+ const more = teams.length === 0 ? '' : ':'
+ output.standard(`@${entity} has ${teams.length} team${plural}${more}`)
+ for (const team of teams) {
+ output.standard(`@${team}`)
+ }
}
}
}
diff --git a/deps/npm/lib/commands/trust/circleci.js b/deps/npm/lib/commands/trust/circleci.js
new file mode 100644
index 00000000000000..34d25b80182688
--- /dev/null
+++ b/deps/npm/lib/commands/trust/circleci.js
@@ -0,0 +1,179 @@
+const Definition = require('@npmcli/config/lib/definitions/definition.js')
+const globalDefinitions = require('@npmcli/config/lib/definitions/definitions.js')
+const TrustCommand = require('../../trust-cmd.js')
+
+// UUID validation regex
+const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i
+
+class TrustCircleCI extends TrustCommand {
+ static description = 'Create a trusted relationship between a package and CircleCI'
+ static name = 'circleci'
+ static positionals = 1 // expects at most 1 positional (package name)
+ static providerName = 'CircleCI'
+ static providerEntity = 'CircleCI pipeline'
+
+ static usage = [
+ '[package] --org-id --project-id --pipeline-definition-id --vcs-origin [--context-id ...] [-y|--yes]',
+ ]
+
+ static definitions = [
+ new Definition('org-id', {
+ default: null,
+ type: String,
+ required: true,
+ description: 'CircleCI organization UUID',
+ }),
+ new Definition('project-id', {
+ default: null,
+ type: String,
+ required: true,
+ description: 'CircleCI project UUID',
+ }),
+ new Definition('pipeline-definition-id', {
+ default: null,
+ type: String,
+ required: true,
+ description: 'CircleCI pipeline definition UUID',
+ }),
+ new Definition('vcs-origin', {
+ default: null,
+ type: String,
+ required: true,
+ description: "CircleCI repository origin in format 'provider/owner/repo'",
+ }),
+ new Definition('context-id', {
+ default: null,
+ type: [null, String, Array],
+ description: 'CircleCI context UUID to match',
+ }),
+ // globals are alphabetical
+ globalDefinitions['dry-run'],
+ globalDefinitions.json,
+ globalDefinitions.registry,
+ globalDefinitions.yes,
+ ]
+
+ validateUuid (value, fieldName) {
+ if (!UUID_REGEX.test(value)) {
+ throw new Error(`${fieldName} must be a valid UUID`)
+ }
+ }
+
+ validateVcsOrigin (value) {
+ // Expected format: provider/owner/repo (e.g., github.com/owner/repo, bitbucket.org/owner/repo)
+ if (value.includes('://')) {
+ throw new Error("vcs-origin must not include a scheme (e.g., use 'github.com/owner/repo' not 'https://github.com/owner/repo')")
+ }
+ const parts = value.split('/')
+ if (parts.length < 3) {
+ throw new Error("vcs-origin must be in format 'provider/owner/repo'")
+ }
+ }
+
+ // Generate a URL from vcs-origin (e.g., github.com/npm/repo -> https://github.com/npm/repo)
+ getVcsOriginUrl (vcsOrigin) {
+ if (!vcsOrigin) {
+ return null
+ }
+ // vcs-origin format: github.com/owner/repo or bitbucket.org/owner/repo
+ return `https://${vcsOrigin}`
+ }
+
+ static optionsToBody (options) {
+ const { orgId, projectId, pipelineDefinitionId, vcsOrigin, contextIds } = options
+ const trustConfig = {
+ type: 'circleci',
+ claims: {
+ 'oidc.circleci.com/org-id': orgId,
+ 'oidc.circleci.com/project-id': projectId,
+ 'oidc.circleci.com/pipeline-definition-id': pipelineDefinitionId,
+ 'oidc.circleci.com/vcs-origin': vcsOrigin,
+ },
+ }
+ if (contextIds && contextIds.length > 0) {
+ trustConfig.claims['oidc.circleci.com/context-ids'] = contextIds
+ }
+ return trustConfig
+ }
+
+ static bodyToOptions (body) {
+ return {
+ ...(body.id) && { id: body.id },
+ ...(body.type) && { type: body.type },
+ ...(body.claims?.['oidc.circleci.com/org-id']) && { orgId: body.claims['oidc.circleci.com/org-id'] },
+ ...(body.claims?.['oidc.circleci.com/project-id']) && { projectId: body.claims['oidc.circleci.com/project-id'] },
+ ...(body.claims?.['oidc.circleci.com/pipeline-definition-id']) && {
+ pipelineDefinitionId: body.claims['oidc.circleci.com/pipeline-definition-id'],
+ },
+ ...(body.claims?.['oidc.circleci.com/vcs-origin']) && { vcsOrigin: body.claims['oidc.circleci.com/vcs-origin'] },
+ ...(body.claims?.['oidc.circleci.com/context-ids']) && { contextIds: body.claims['oidc.circleci.com/context-ids'] },
+ }
+ }
+
+ // Override flagsToOptions since CircleCI doesn't use file/entity pattern
+ async flagsToOptions ({ positionalArgs, flags }) {
+ const content = await this.optionalPkgJson()
+ const pkgName = positionalArgs[0] || content.name
+
+ if (!pkgName) {
+ throw new Error('Package name must be specified either as an argument or in package.json file')
+ }
+
+ const orgId = flags['org-id']
+ const projectId = flags['project-id']
+ const pipelineDefinitionId = flags['pipeline-definition-id']
+ const vcsOrigin = flags['vcs-origin']
+ const contextIds = flags['context-id']
+
+ // Validate required flags
+ if (!orgId) {
+ throw new Error('org-id is required')
+ }
+ if (!projectId) {
+ throw new Error('project-id is required')
+ }
+ if (!pipelineDefinitionId) {
+ throw new Error('pipeline-definition-id is required')
+ }
+ if (!vcsOrigin) {
+ throw new Error('vcs-origin is required')
+ }
+
+ // Validate formats
+ this.validateUuid(orgId, 'org-id')
+ this.validateUuid(projectId, 'project-id')
+ this.validateUuid(pipelineDefinitionId, 'pipeline-definition-id')
+ this.validateVcsOrigin(vcsOrigin)
+ if (contextIds?.length > 0) {
+ for (const contextId of contextIds) {
+ this.validateUuid(contextId, 'context-id')
+ }
+ }
+
+ return {
+ values: {
+ package: pkgName,
+ orgId,
+ projectId,
+ pipelineDefinitionId,
+ vcsOrigin,
+ ...(contextIds?.length > 0 && { contextIds }),
+ },
+ fromPackageJson: {},
+ warnings: [],
+ urls: {
+ package: this.getFrontendUrl({ pkgName }),
+ vcsOrigin: this.getVcsOriginUrl(vcsOrigin),
+ },
+ }
+ }
+
+ async exec (positionalArgs, flags) {
+ await this.createConfigCommand({
+ positionalArgs,
+ flags,
+ })
+ }
+}
+
+module.exports = TrustCircleCI
diff --git a/deps/npm/lib/commands/trust/github.js b/deps/npm/lib/commands/trust/github.js
new file mode 100644
index 00000000000000..870314b717a759
--- /dev/null
+++ b/deps/npm/lib/commands/trust/github.js
@@ -0,0 +1,104 @@
+const Definition = require('@npmcli/config/lib/definitions/definition.js')
+const globalDefinitions = require('@npmcli/config/lib/definitions/definitions.js')
+const TrustCommand = require('../../trust-cmd.js')
+const path = require('node:path')
+
+class TrustGitHub extends TrustCommand {
+ static description = 'Create a trusted relationship between a package and GitHub Actions'
+ static name = 'github'
+ static positionals = 1 // expects at most 1 positional (package name)
+ static providerName = 'GitHub Actions'
+ static providerEntity = 'GitHub repository'
+ static providerFile = 'GitHub Actions Workflow'
+ static providerHostname = 'https://github.com'
+
+ // entity means project / repository
+ static entityKey = 'repository'
+
+ static usage = [
+ '[package] --file [--repo|--repository] [--env|--environment] [-y|--yes]',
+ ]
+
+ static definitions = [
+ new Definition('file', {
+ default: null,
+ type: String,
+ required: true,
+ description: 'Name of workflow file within a repositories .GitHub folder (must end in yaml, yml)',
+ }),
+ new Definition('repository', {
+ default: null,
+ type: String,
+ description: 'Name of the repository in the format owner/repo',
+ alias: ['repo'],
+ }),
+ new Definition('environment', {
+ default: null,
+ type: String,
+ description: 'CI environment name',
+ alias: ['env'],
+ }),
+ // globals are alphabetical
+ globalDefinitions['dry-run'],
+ globalDefinitions.json,
+ globalDefinitions.registry,
+ globalDefinitions.yes,
+ ]
+
+ getEntityUrl ({ providerHostname, file, entity }) {
+ if (file) {
+ return new URL(`${entity}/blob/HEAD/.github/workflows/${file}`, providerHostname).toString()
+ }
+ return new URL(entity, providerHostname).toString()
+ }
+
+ validateEntity (entity) {
+ if (entity.split('/').length !== 2) {
+ throw new Error(`${this.constructor.providerEntity} must be specified in the format owner/repository`)
+ }
+ }
+
+ validateFile (file) {
+ if (file !== path.basename(file)) {
+ throw new Error('GitHub Actions workflow must be just a file not a path')
+ }
+ }
+
+ static optionsToBody (options) {
+ const { file, repository, environment } = options
+ const trustConfig = {
+ type: 'github',
+ claims: {
+ repository,
+ workflow_ref: {
+ file,
+ },
+ ...(environment) && { environment },
+ },
+ }
+ return trustConfig
+ }
+
+ // Convert API response body to options
+ static bodyToOptions (body) {
+ const file = body.claims?.workflow_ref?.file
+ const repository = body.claims?.repository
+ const environment = body.claims?.environment
+ return {
+ ...(body.id) && { id: body.id },
+ ...(body.type) && { type: body.type },
+ ...(file) && { file },
+ ...(repository) && { repository },
+ ...(environment) && { environment },
+ }
+ }
+
+ async exec (positionalArgs, flags) {
+ await this.createConfigCommand({
+ positionalArgs,
+ flags,
+ })
+ }
+}
+
+module.exports = TrustGitHub
diff --git a/deps/npm/lib/commands/trust/gitlab.js b/deps/npm/lib/commands/trust/gitlab.js
new file mode 100644
index 00000000000000..e6456244ea1850
--- /dev/null
+++ b/deps/npm/lib/commands/trust/gitlab.js
@@ -0,0 +1,105 @@
+const Definition = require('@npmcli/config/lib/definitions/definition.js')
+const globalDefinitions = require('@npmcli/config/lib/definitions/definitions.js')
+const TrustCommand = require('../../trust-cmd.js')
+const path = require('node:path')
+
+class TrustGitLab extends TrustCommand {
+ static description = 'Create a trusted relationship between a package and GitLab CI/CD'
+ static name = 'gitlab'
+ static positionals = 1 // expects at most 1 positional (package name)
+ static providerName = 'GitLab CI/CD'
+ static providerEntity = 'GitLab project'
+ static providerFile = 'GitLab CI/CD Pipeline'
+ static providerHostname = 'https://gitlab.com'
+
+ // entity means project / repository
+ static entityKey = 'project'
+
+ static usage = [
+ '[package] --file [--project|--repo|--repository] [--env|--environment] [-y|--yes]',
+ ]
+
+ static definitions = [
+ new Definition('file', {
+ default: null,
+ type: String,
+ required: true,
+ description: 'Name of pipeline file (e.g., .gitlab-ci.yml)',
+ }),
+ new Definition('project', {
+ default: null,
+ type: String,
+ description: 'Name of the project in the format group/project or group/subgroup/project',
+ }),
+ new Definition('environment', {
+ default: null,
+ type: String,
+ description: 'CI environment name',
+ alias: ['env'],
+ }),
+ // globals are alphabetical
+ globalDefinitions['dry-run'],
+ globalDefinitions.json,
+ globalDefinitions.registry,
+ globalDefinitions.yes,
+ ]
+
+ getEntityUrl ({ providerHostname, file, entity }) {
+ if (file) {
+ return new URL(`${entity}/-/blob/HEAD/${file}`, providerHostname).toString()
+ }
+ return new URL(entity, providerHostname).toString()
+ }
+
+ validateEntity (entity) {
+ if (entity.split('/').length < 2) {
+ throw new Error(`${this.constructor.providerEntity} must be specified in the format group/project or group/subgroup/project`)
+ }
+ }
+
+ validateFile (file) {
+ if (file !== path.basename(file)) {
+ throw new Error('GitLab CI/CD pipeline file must be just a file not a path')
+ }
+ }
+
+ static optionsToBody (options) {
+ const { file, project, environment } = options
+ const trustConfig = {
+ type: 'gitlab',
+ claims: {
+ project_path: project,
+ // this looks off, but this is correct
+ /** The ref path to the top-level pipeline definition, for example, gitlab.example.com/my-group/my-project//.gitlab-ci.yml@refs/heads/main. Introduced in GitLab 16.2. This claim is null unless the pipeline definition is located in the same project. */
+ ci_config_ref_uri: {
+ file,
+ },
+ ...(environment) && { environment },
+ },
+ }
+ return trustConfig
+ }
+
+ // Convert API response body to options
+ static bodyToOptions (body) {
+ const file = body.claims?.ci_config_ref_uri?.file
+ const project = body.claims?.project_path
+ const environment = body.claims?.environment
+ return {
+ ...(body.id) && { id: body.id },
+ ...(body.type) && { type: body.type },
+ ...(file) && { file },
+ ...(project) && { project },
+ ...(environment) && { environment },
+ }
+ }
+
+ async exec (positionalArgs, flags) {
+ await this.createConfigCommand({
+ positionalArgs,
+ flags,
+ })
+ }
+}
+
+module.exports = TrustGitLab
diff --git a/deps/npm/lib/commands/trust/index.js b/deps/npm/lib/commands/trust/index.js
new file mode 100644
index 00000000000000..9c3bf070a4ce1a
--- /dev/null
+++ b/deps/npm/lib/commands/trust/index.js
@@ -0,0 +1,24 @@
+const BaseCommand = require('../../base-cmd.js')
+
+class Trust extends BaseCommand {
+ static description = 'Create a trusted relationship between a package and a OIDC provider'
+ static name = 'trust'
+
+ static subcommands = {
+ github: require('./github.js'),
+ gitlab: require('./gitlab.js'),
+ circleci: require('./circleci.js'),
+ list: require('./list.js'),
+ revoke: require('./revoke.js'),
+ }
+
+ static async completion (opts) {
+ const argv = opts.conf.argv.remain
+ if (argv.length === 2) {
+ return Object.keys(Trust.subcommands)
+ }
+ return []
+ }
+}
+
+module.exports = Trust
diff --git a/deps/npm/lib/commands/trust/list.js b/deps/npm/lib/commands/trust/list.js
new file mode 100644
index 00000000000000..3d5c3aeb0dbc1a
--- /dev/null
+++ b/deps/npm/lib/commands/trust/list.js
@@ -0,0 +1,50 @@
+const { otplease } = require('../../utils/auth.js')
+const npmFetch = require('npm-registry-fetch')
+const npa = require('npm-package-arg')
+const TrustCircleCI = require('./circleci.js')
+const TrustGithub = require('./github.js')
+const TrustGitlab = require('./gitlab.js')
+const TrustCommand = require('../../trust-cmd.js')
+const globalDefinitions = require('@npmcli/config/lib/definitions/definitions.js')
+
+class TrustList extends TrustCommand {
+ static description = 'List trusted relationships for a package'
+ static name = 'list'
+ static positionals = 1 // expects at most 1 positional (package name)
+
+ static usage = [
+ '[package]',
+ ]
+
+ static definitions = [
+ globalDefinitions.json,
+ globalDefinitions.registry,
+ ]
+
+ static bodyToOptions (body) {
+ if (body.type === 'circleci') {
+ return TrustCircleCI.bodyToOptions(body)
+ } else if (body.type === 'github') {
+ return TrustGithub.bodyToOptions(body)
+ } else if (body.type === 'gitlab') {
+ return TrustGitlab.bodyToOptions(body)
+ }
+ return TrustCommand.bodyToOptions(body)
+ }
+
+ async exec (positionalArgs) {
+ const packageName = positionalArgs[0] || (await this.optionalPkgJson()).name
+ if (!packageName) {
+ throw new Error('Package name must be specified either as an argument or in the package.json file')
+ }
+ const spec = npa(packageName)
+ const uri = `/-/package/${spec.escapedName}/trust`
+ const body = await otplease(this.npm, this.npm.flatOptions, opts => npmFetch.json(uri, {
+ ...opts,
+ method: 'GET',
+ }))
+ this.displayResponseBody({ body, packageName })
+ }
+}
+
+module.exports = TrustList
diff --git a/deps/npm/lib/commands/trust/revoke.js b/deps/npm/lib/commands/trust/revoke.js
new file mode 100644
index 00000000000000..0f555c0386bc05
--- /dev/null
+++ b/deps/npm/lib/commands/trust/revoke.js
@@ -0,0 +1,52 @@
+const globalDefinitions = require('@npmcli/config/lib/definitions/definitions.js')
+const Definition = require('@npmcli/config/lib/definitions/definition.js')
+const { otplease } = require('../../utils/auth.js')
+const npmFetch = require('npm-registry-fetch')
+const npa = require('npm-package-arg')
+const TrustCommand = require('../../trust-cmd.js')
+
+class TrustRevoke extends TrustCommand {
+ static description = 'Revoke a trusted relationship for a package'
+ static name = 'revoke'
+ static positionals = 1 // expects at most 1 positional (package name)
+
+ static usage = [
+ '[package] --id=',
+ ]
+
+ static definitions = [
+ new Definition('id', {
+ default: null,
+ type: String,
+ description: 'ID of the trusted relationship to revoke',
+ required: true,
+ }),
+ globalDefinitions['dry-run'],
+ globalDefinitions.registry,
+ ]
+
+ async exec (positionalArgs, flags) {
+ const dryRun = this.config.get('dry-run')
+ const pkgName = positionalArgs[0] || (await this.optionalPkgJson()).name
+ if (!pkgName) {
+ throw new Error('Package name must be specified either as an argument or in the package.json file')
+ }
+ const { id } = flags
+ if (!id) {
+ throw new Error('ID of the trusted relationship to revoke must be specified with the --id option')
+ }
+ this.dialogue`Attempting to revoke trusted configuration for package ${pkgName} with id ${id}`
+ if (dryRun) {
+ return
+ }
+ const spec = npa(pkgName)
+ const uri = `/-/package/${spec.escapedName}/trust/${encodeURIComponent(id)}`
+ await otplease(this.npm, this.npm.flatOptions, opts => npmFetch(uri, {
+ ...opts,
+ method: 'DELETE',
+ }))
+ this.dialogue`Revoked trusted configuration for package ${pkgName} with id ${id}`
+ }
+}
+
+module.exports = TrustRevoke
diff --git a/deps/npm/lib/commands/uninstall.js b/deps/npm/lib/commands/uninstall.js
index f9baebe3bc2e28..a369158d99c524 100644
--- a/deps/npm/lib/commands/uninstall.js
+++ b/deps/npm/lib/commands/uninstall.js
@@ -11,8 +11,6 @@ class Uninstall extends ArboristWorkspaceCmd {
static usage = ['[<@scope>/]...']
static ignoreImplicitWorkspace = false
- // TODO
- /* istanbul ignore next */
static async completion (opts, npm) {
return completion(npm, opts)
}
diff --git a/deps/npm/lib/commands/update.js b/deps/npm/lib/commands/update.js
index 0d2fc324d92453..38e83f3f6bb953 100644
--- a/deps/npm/lib/commands/update.js
+++ b/deps/npm/lib/commands/update.js
@@ -29,8 +29,6 @@ class Update extends ArboristWorkspaceCmd {
static usage = ['[...]']
- // TODO
- /* istanbul ignore next */
static async completion (opts, npm) {
const completion = require('../utils/installed-deep.js')
return completion(npm, opts)
diff --git a/deps/npm/lib/commands/view.js b/deps/npm/lib/commands/view.js
index dd563cb2d52b9a..44b94dfccb05a6 100644
--- a/deps/npm/lib/commands/view.js
+++ b/deps/npm/lib/commands/view.js
@@ -1,4 +1,3 @@
-const columns = require('cli-columns')
const { readFile } = require('node:fs/promises')
const jsonParse = require('json-parse-even-better-errors')
const { log, output, META } = require('proc-log')
@@ -333,7 +332,7 @@ class View extends BaseCommand {
if (deps.length) {
const maxDeps = 24
res.push('\ndependencies:')
- res.push(columns(deps.slice(0, maxDeps), { padding: 1 }))
+ res.push(deps.slice(0, maxDeps).join(', '))
if (deps.length > maxDeps) {
res.push(chalk.dim(`(...and ${deps.length - maxDeps} more.)`))
}
@@ -349,8 +348,8 @@ class View extends BaseCommand {
}
res.push('\ndist-tags:')
- const maxTags = 12
- res.push(columns(distTags.slice(0, maxTags), { padding: 1, sort: false }))
+ const maxTags = 5
+ res.push(distTags.slice(0, maxTags).join('\n'))
if (distTags.length > maxTags) {
res.push(chalk.dim(`(...and ${distTags.length - maxTags} more.)`))
}
diff --git a/deps/npm/lib/npm.js b/deps/npm/lib/npm.js
index c635f3e05a7b3a..d30554d400f07f 100644
--- a/deps/npm/lib/npm.js
+++ b/deps/npm/lib/npm.js
@@ -26,7 +26,7 @@ class Npm {
command: c,
})
}
- return require(`./commands/${command}.js`)
+ return require(`./commands/${command}`)
}
unrefPromises = []
@@ -72,6 +72,7 @@ class Npm {
shorthands,
argv: [...process.argv, ...argv],
excludeNpmCwd,
+ warn: false,
})
}
@@ -227,8 +228,64 @@ class Npm {
process.env.npm_command = this.command
}
+ // Only log warnings for legacy commands without definitions or subcommands
+ // Commands with definitions will handle warnings in base-cmd flags()
+ // Commands with subcommands will delegate to the subcommand to handle warnings
+ if (!Command.definitions && !Command.subcommands) {
+ this.config.logWarnings()
+ }
+
+ // this needs to be rest after because some commands run
+ // this.npm.config.checkUnknown('publishConfig', key)
+ this.config.warn = true
+
+ return this.execCommandClass(command, args, [cmd])
+ }
+
+ // Unified command execution for both top-level commands and subcommands
+ // Supports n-depth subcommands, workspaces, and definitions
+ async execCommandClass (commandInstance, args, commandPath = []) {
+ const Command = commandInstance.constructor
+ const commandName = commandPath.join(':')
+
+ // Handle subcommands if present
+ if (Command.subcommands) {
+ const subcommandName = args[0]
+
+ // If help is requested without a subcommand, show main command help
+ if (this.config.get('usage') && !subcommandName) {
+ return output.standard(commandInstance.usage)
+ }
+
+ // If no subcommand provided, show usage error
+ if (!subcommandName) {
+ throw commandInstance.usageError()
+ }
+
+ // Check if the subcommand exists
+ const SubCommand = Command.subcommands[subcommandName]
+ if (!SubCommand) {
+ throw commandInstance.usageError(`Unknown subcommand: ${subcommandName}`)
+ }
+
+ // Check if help is requested for the subcommand
+ if (this.config.get('usage')) {
+ const parentName = commandPath[0]
+ return output.standard(SubCommand.getUsage(parentName))
+ }
+
+ // Create subcommand instance and recurse
+ const subcommandInstance = new SubCommand(this)
+ const subcommandArgs = args.slice(1) // Remove subcommand name from args
+ const subcommandPath = [...commandPath, subcommandName]
+
+ return time.start(`command:${subcommandPath.join(':')}`, () =>
+ this.execCommandClass(subcommandInstance, subcommandArgs, subcommandPath))
+ }
+
+ // No subcommands - execute this command
if (this.config.get('usage')) {
- return output.standard(command.usage)
+ return output.standard(commandInstance.usage)
}
let execWorkspaces = false
@@ -248,12 +305,26 @@ class Npm {
execWorkspaces = true
}
- if (command.checkDevEngines && !this.global) {
- await command.checkDevEngines()
+ // Check dev engines if needed
+ if (commandInstance.checkDevEngines && !this.global) {
+ await commandInstance.checkDevEngines()
}
- return time.start(`command:${cmd}`, () =>
- execWorkspaces ? command.execWorkspaces(args) : command.exec(args))
+ // Execute command with or without definitions
+ if (Command.definitions) {
+ // config.argv contains the full argv with flags (set by Config in production, by MockNpm in tests)
+ // Pass depth so flags() knows how many command names to skip
+ const [flags, positionalArgs] = commandInstance.flags(commandPath.length)
+ return time.start(`command:${commandName}`, () =>
+ execWorkspaces
+ ? commandInstance.execWorkspaces(positionalArgs, flags)
+ : commandInstance.exec(positionalArgs, flags))
+ } else {
+ // Legacy commands without definitions
+ this.config.logWarnings()
+ return time.start(`command:${commandName}`, () =>
+ execWorkspaces ? commandInstance.execWorkspaces(args) : commandInstance.exec(args))
+ }
}
// This gets called at the end of the exit handler and
diff --git a/deps/npm/lib/trust-cmd.js b/deps/npm/lib/trust-cmd.js
new file mode 100644
index 00000000000000..5fab8df1d21aa2
--- /dev/null
+++ b/deps/npm/lib/trust-cmd.js
@@ -0,0 +1,284 @@
+const BaseCommand = require('./base-cmd.js')
+const { otplease } = require('./utils/auth.js')
+const npmFetch = require('npm-registry-fetch')
+const npa = require('npm-package-arg')
+const { read: _read } = require('read')
+const { input, output, log, META } = require('proc-log')
+const gitinfo = require('hosted-git-info')
+const pkgJson = require('@npmcli/package-json')
+
+const NPM_FRONTEND = 'https://www.npmjs.com'
+
+class TrustCommand extends BaseCommand {
+ // Helper to format template strings with color
+ // Blue text with reset color for interpolated values
+ warnString (strings, ...values) {
+ const chalk = this.npm.chalk
+ const message = strings.reduce((result, str, i) => {
+ return result + chalk.blue(str) + (values[i] ? chalk.reset(values[i]) : '')
+ }, '')
+ return message
+ }
+
+ // Log a warning message with blue formatting
+ warn (strings, ...values) {
+ log.warn('trust', this.warnString(strings, ...values))
+ }
+
+ // dialogue is non-log text that is different from our usual npm prefix logging
+ // it should always show to the user unless --json is specified
+ // it's not controled by log levels
+ dialogue (strings, ...values) {
+ const json = this.config.get('json')
+ if (!json) {
+ output.standard(this.warnString(strings, ...values))
+ }
+ }
+
+ createConfig (pkg, body) {
+ const spec = npa(pkg)
+ const uri = `/-/package/${spec.escapedName}/trust`
+ return otplease(this.npm, this.npm.flatOptions, opts => npmFetch(uri, {
+ ...opts,
+ method: 'POST',
+ body: body,
+ }))
+ }
+
+ logOptions (options, pad = true) {
+ const { values, warnings, fromPackageJson, urls } = { warnings: [], ...options }
+ if (warnings && warnings.length > 0) {
+ for (const warningMsg of warnings) {
+ log.warn('trust', warningMsg)
+ }
+ }
+
+ const json = this.config.get('json')
+ if (json) {
+ // Disable redaction: trust config values (e.g. CircleCI UUIDs) are not secrets
+ output.standard(JSON.stringify(options.values, null, 2), { [META]: true, redact: false })
+ return
+ }
+
+ const chalk = this.npm.chalk
+ const { type, id, ...rest } = values || {}
+
+ if (values) {
+ const lines = []
+ if (type) {
+ lines.push(`type: ${chalk.green(type)}`)
+ }
+ if (id) {
+ lines.push(`id: ${chalk.green(id)}`)
+ }
+ for (const [key, value] of Object.entries(rest)) {
+ if (value !== null && value !== undefined) {
+ const parts = [
+ `${chalk.reset(key)}: ${chalk.green(value)}`,
+ ]
+ if (fromPackageJson && fromPackageJson[key]) {
+ parts.push(`(${chalk.yellow(`from package.json`)})`)
+ }
+ lines.push(parts.join(' '))
+ }
+ }
+ if (pad) {
+ output.standard()
+ }
+ output.standard(lines.join('\n'), { [META]: true, redact: false })
+ // Print URLs on their own lines after config, following the same order as rest keys
+ if (urls) {
+ const urlLines = []
+ for (const key of Object.keys(rest)) {
+ if (urls[key]) {
+ urlLines.push(chalk.blue(urls[key]))
+ }
+ }
+ if (urlLines.length > 0) {
+ output.standard()
+ output.standard(urlLines.join('\n'), { [META]: true, redact: false })
+ }
+ }
+ if (pad) {
+ output.standard()
+ }
+ }
+ }
+
+ async confirmOperation (yes) {
+ // Ask for confirmation unless --yes flag is set
+ if (yes === true) {
+ return
+ }
+ if (yes === false) {
+ throw new Error('User cancelled operation')
+ }
+ const confirm = await input.read(
+ () => _read({ prompt: 'Do you want to proceed? (y/N) ', default: 'n' })
+ )
+ const normalized = confirm.toLowerCase()
+ if (['y', 'yes'].includes(normalized)) {
+ return
+ }
+ throw new Error('User cancelled operation')
+ }
+
+ getFrontendUrl ({ pkgName }) {
+ if (this.registryIsDefault) {
+ return new URL(`/package/${pkgName}`, NPM_FRONTEND).toString()
+ }
+ return null
+ }
+
+ getRepositoryFromPackageJson (pkg) {
+ const info = gitinfo.fromUrl(pkg.repository?.url || pkg?.repository)
+ if (!info) {
+ return null
+ }
+ const repository = info.user + '/' + info.project
+ const type = info.type
+ return { repository, type }
+ }
+
+ async optionalPkgJson () {
+ try {
+ const { content } = await pkgJson.normalize(this.npm.prefix)
+ return content
+ } catch (err) {
+ return {}
+ }
+ }
+
+ get registryIsDefault () {
+ return this.npm.config.defaults.registry === this.npm.config.get('registry')
+ }
+
+ // generic
+ static bodyToOptions (body) {
+ return {
+ ...(body.id) && { id: body.id },
+ ...(body.type) && { type: body.type },
+ }
+ }
+
+ async createConfigCommand ({ positionalArgs, flags }) {
+ const { providerName, providerEntity, providerHostname } = this.constructor
+ const dryRun = this.config.get('dry-run')
+ const yes = this.config.get('yes') // deep-lore this allows for --no-yes
+ const options = await this.flagsToOptions({ positionalArgs, flags, providerHostname })
+ this.dialogue`Establishing trust between ${options.values.package} package and ${providerName}`
+ this.dialogue`Anyone with ${providerEntity} write access can publish to ${options.values.package}`
+ this.dialogue`Two-factor authentication is required for this operation`
+ if (!this.registryIsDefault) {
+ this.warn`Registry ${this.npm.config.get('registry')} may not support trusted publishing`
+ }
+ this.logOptions(options)
+ if (dryRun) {
+ return
+ }
+ await this.confirmOperation(yes)
+ const trustConfig = this.constructor.optionsToBody(options.values)
+ const response = await this.createConfig(options.values.package, [trustConfig])
+ const body = await response.json()
+ this.dialogue`Trust configuration created successfully for ${options.values.package} with the following settings:`
+ this.displayResponseBody({ body, packageName: options.values.package })
+ }
+
+ async flagsToOptions ({ positionalArgs, flags, providerHostname }) {
+ const { entityKey, name, providerEntity, providerFile } = this.constructor
+ const content = await this.optionalPkgJson()
+ const pkgPositional = positionalArgs[0]
+ const pkgJsonName = content.name
+ const git = this.getRepositoryFromPackageJson(content)
+ // the provided positional matches package.json name or no positional provided
+ const matchPkg = (!pkgPositional || pkgPositional === pkgJsonName)
+ const pkgName = pkgPositional || pkgJsonName
+ const usedPkgNameFromPkgJson = !pkgPositional && Boolean(pkgJsonName)
+ const invalidPkgJsonProviderType = matchPkg && git && git?.type !== name
+
+ let entity
+ let entitySource
+
+ if (flags[entityKey]) {
+ entity = flags[entityKey]
+ entitySource = 'flag'
+ } else if (!invalidPkgJsonProviderType && git?.repository) {
+ entity = git.repository
+ entitySource = 'package.json'
+ }
+ const mismatchPkgJsonRepository = matchPkg && git && entity !== git.repository
+ const usedRepositoryInPkgJson = entitySource === 'package.json'
+
+ const warnings = []
+ if (!pkgName) {
+ throw new Error('Package name must be specified either as an argument or in package.json file')
+ }
+
+ if (!flags.file) {
+ throw new Error(`${providerFile} must be specified with the file option`)
+ }
+ if (!flags.file.endsWith('.yml') && !flags.file.endsWith('.yaml')) {
+ throw new Error(`${providerFile} must end in .yml or .yaml`)
+ }
+
+ this.validateFile?.(flags.file)
+
+ if (invalidPkgJsonProviderType) {
+ const message = this.warnString`Repository in package.json is not a ${providerEntity}`
+ if (!flags[entityKey]) {
+ throw new Error(message)
+ } else {
+ warnings.push(message)
+ }
+ } else {
+ if (mismatchPkgJsonRepository) {
+ warnings.push(this.warnString`Repository in package.json (${git.repository}) differs from provided ${providerEntity} (${entity})`)
+ }
+ }
+
+ if (!entity && matchPkg) {
+ throw new Error(`${providerEntity} must be specified with ${entityKey} option or inferred from the package.json repository field`)
+ }
+ if (!entity) {
+ throw new Error(`${providerEntity} must be specified with ${entityKey} option`)
+ }
+
+ this.validateEntity(entity)
+
+ return {
+ values: {
+ package: pkgName,
+ file: flags.file,
+ [entityKey]: entity,
+ ...(flags.environment && { environment: flags.environment }),
+ },
+ fromPackageJson: {
+ [entityKey]: usedRepositoryInPkgJson,
+ package: usedPkgNameFromPkgJson,
+ },
+ warnings: warnings,
+ urls: {
+ package: this.getFrontendUrl({ pkgName }),
+ [entityKey]: this.getEntityUrl({ providerHostname, entity }),
+ file: this.getEntityUrl({ providerHostname, entity, file: flags.file }),
+ },
+ }
+ }
+
+ displayResponseBody ({ body, packageName }) {
+ if (!body || body.length === 0) {
+ this.dialogue`No trust configurations found for package (${packageName})`
+ return
+ }
+ const items = Array.isArray(body) ? body : [body]
+ for (const config of items) {
+ const values = this.constructor.bodyToOptions(config)
+ output.standard()
+ this.logOptions({ values }, false)
+ }
+ output.standard()
+ }
+}
+
+module.exports = TrustCommand
+module.exports.NPM_FRONTEND = NPM_FRONTEND
diff --git a/deps/npm/lib/utils/cmd-list.js b/deps/npm/lib/utils/cmd-list.js
index 61f64f77678e2c..ec1d50dcc0c560 100644
--- a/deps/npm/lib/utils/cmd-list.js
+++ b/deps/npm/lib/utils/cmd-list.js
@@ -62,6 +62,7 @@ const commands = [
'team',
'test',
'token',
+ 'trust',
'undeprecate',
'uninstall',
'unpublish',
diff --git a/deps/npm/lib/utils/display.js b/deps/npm/lib/utils/display.js
index dff16ceebef6fd..122a7f6e8c577a 100644
--- a/deps/npm/lib/utils/display.js
+++ b/deps/npm/lib/utils/display.js
@@ -337,7 +337,7 @@ class Display {
log.resume()
// For silent prompts (like password), add newline to preserve output
if (meta?.silent) {
- output.standard('')
+ output.standard()
}
output.flush()
this.#progress.resume()
@@ -360,7 +360,7 @@ class Display {
})
.catch((error) => {
// If user hits ctrl+c, add newline to preserve output.
- output.standard('')
+ output.standard()
input.end()
rej(error)
})
diff --git a/deps/npm/lib/utils/npm-usage.js b/deps/npm/lib/utils/npm-usage.js
index 1bd790ca601bcd..e01a1956e10545 100644
--- a/deps/npm/lib/utils/npm-usage.js
+++ b/deps/npm/lib/utils/npm-usage.js
@@ -62,7 +62,7 @@ const cmdUsages = (Npm) => {
let maxLen = 0
const set = []
for (const c of commands) {
- set.push([c, Npm.cmd(c).describeUsage.split('\n')])
+ set.push([c, Npm.cmd(c).getUsage(null, false).split('\n')])
maxLen = Math.max(maxLen, c.length)
}
diff --git a/deps/npm/lib/utils/oidc.js b/deps/npm/lib/utils/oidc.js
index 24524f4b4bf72d..690bc96dba4a4a 100644
--- a/deps/npm/lib/utils/oidc.js
+++ b/deps/npm/lib/utils/oidc.js
@@ -8,8 +8,8 @@ const libaccess = require('libnpmaccess')
/**
* Handles OpenID Connect (OIDC) token retrieval and exchange for CI environments.
*
- * This function is designed to work in Continuous Integration (CI) environments such as GitHub Actions
- * and GitLab. It retrieves an OIDC token from the CI environment, exchanges it for an npm token, and
+ * This function is designed to work in Continuous Integration (CI) environments such as GitHub Actions,
+ * GitLab, and CircleCI. It retrieves an OIDC token from the CI environment, exchanges it for an npm token, and
* sets the token in the provided configuration for authentication with the npm registry.
*
* This function is intended to never throw, as it mutates the state of the `opts` and `config` objects on success.
@@ -17,6 +17,7 @@ const libaccess = require('libnpmaccess')
*
* @see https://github.com/watson/ci-info for CI environment detection.
* @see https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect for GitHub Actions OIDC.
+ * @see https://circleci.com/docs/openid-connect-tokens/ for CircleCI OIDC.
*/
async function oidc ({ packageName, registry, opts, config }) {
/*
@@ -29,7 +30,9 @@ async function oidc ({ packageName, registry, opts, config }) {
/** @see https://github.com/watson/ci-info/blob/v4.2.0/vendors.json#L152 */
ciInfo.GITHUB_ACTIONS ||
/** @see https://github.com/watson/ci-info/blob/v4.2.0/vendors.json#L161C13-L161C22 */
- ciInfo.GITLAB
+ ciInfo.GITLAB ||
+ /** @see https://github.com/watson/ci-info/blob/v4.2.0/vendors.json#L78 */
+ ciInfo.CIRCLE
)) {
return undefined
}
@@ -143,7 +146,8 @@ async function oidc ({ packageName, registry, opts, config }) {
try {
const isDefaultProvenance = config.isDefault('provenance')
- if (isDefaultProvenance) {
+ // CircleCI doesn't support provenance yet, so skip the auto-enable logic
+ if (isDefaultProvenance && !ciInfo.CIRCLE) {
const [headerB64, payloadB64] = idToken.split('.')
if (headerB64 && payloadB64) {
const payloadJson = Buffer.from(payloadB64, 'base64').toString('utf8')
diff --git a/deps/npm/lib/utils/reify-output.js b/deps/npm/lib/utils/reify-output.js
index f4a8442e9427ff..48a5525d87f802 100644
--- a/deps/npm/lib/utils/reify-output.js
+++ b/deps/npm/lib/utils/reify-output.js
@@ -215,7 +215,7 @@ const packagesFundingMessage = (npm, { funding }) => {
return
}
- output.standard('')
+ output.standard()
const pkg = funding === 1 ? 'package' : 'packages'
const is = funding === 1 ? 'is' : 'are'
output.standard(`${funding} ${pkg} ${is} looking for funding`)
diff --git a/deps/npm/lib/utils/sbom-cyclonedx.js b/deps/npm/lib/utils/sbom-cyclonedx.js
index 0cd170fbbcbee0..f8283397989d5b 100644
--- a/deps/npm/lib/utils/sbom-cyclonedx.js
+++ b/deps/npm/lib/utils/sbom-cyclonedx.js
@@ -84,15 +84,20 @@ const toCyclonedxItem = (node, { packageType }) => {
node.package = toNormalize.content
}
- let parsedLicense
- try {
- let license = node.package?.license
- if (license) {
- if (typeof license === 'object') {
- license = license.type
- }
+ let license = node.package?.license
+ if (license) {
+ if (typeof license === 'object') {
+ license = license.type
}
+ } else if (Array.isArray(node.package?.licenses)) {
+ license = node.package.licenses
+ .map(l => (typeof l === 'object' ? l.type : l))
+ .filter(Boolean)
+ .join(' OR ')
+ }
+ let parsedLicense
+ try {
parsedLicense = parseLicense(license)
} catch {
parsedLicense = null
@@ -158,7 +163,7 @@ const toCyclonedxItem = (node, { packageType }) => {
component.licenses = [{ license: { id: parsedLicense.license } }]
// If license is a conjunction, use the expression field
} else if (parsedLicense?.conjunction) {
- component.licenses = [{ expression: node.package.license }]
+ component.licenses = [{ expression: license }]
}
return component
diff --git a/deps/npm/lib/utils/sbom-spdx.js b/deps/npm/lib/utils/sbom-spdx.js
index 074a6f57f98bf0..38824f263681d0 100644
--- a/deps/npm/lib/utils/sbom-spdx.js
+++ b/deps/npm/lib/utils/sbom-spdx.js
@@ -110,6 +110,11 @@ const toSpdxItem = (node, { packageType }) => {
if (typeof license === 'object') {
license = license.type
}
+ } else if (Array.isArray(node.package?.licenses)) {
+ license = node.package.licenses
+ .map(l => (typeof l === 'object' ? l.type : l))
+ .filter(Boolean)
+ .join(' OR ')
}
const pkg = {
diff --git a/deps/npm/lib/utils/verify-signatures.js b/deps/npm/lib/utils/verify-signatures.js
index baadb2b1227d94..c9b39591eadc8a 100644
--- a/deps/npm/lib/utils/verify-signatures.js
+++ b/deps/npm/lib/utils/verify-signatures.js
@@ -45,7 +45,7 @@ class VerifySignatures {
// Didn't find any dependencies that could be verified, e.g. only local
// deps, missing version, not on a registry etc.
- if (!this.auditedWithKeysCount) {
+ if (!this.auditedWithKeysCount && !this.verifiedAttestationCount) {
throw new Error('found no dependencies to audit that were installed from ' +
'a supported registry')
}
@@ -70,7 +70,7 @@ class VerifySignatures {
const timing = `audited ${this.auditedWithKeysCount} package${auditedPlural} in ` +
`${Math.floor(Number(elapsed) / 1e9)}s`
output.standard(timing)
- output.standard('')
+ output.standard()
const verifiedBold = this.npm.chalk.bold('verified')
if (this.verifiedSignatureCount) {
@@ -79,7 +79,7 @@ class VerifySignatures {
} else {
output.standard(`${this.verifiedSignatureCount} packages have ${verifiedBold} registry signatures`)
}
- output.standard('')
+ output.standard()
}
if (this.verifiedAttestationCount) {
@@ -88,7 +88,7 @@ class VerifySignatures {
} else {
output.standard(`${this.verifiedAttestationCount} packages have ${verifiedBold} attestations`)
}
- output.standard('')
+ output.standard()
}
if (missing.length) {
@@ -98,7 +98,7 @@ class VerifySignatures {
} else {
output.standard(`${missing.length} packages have ${missingClr} registry signatures but the registry is providing signing keys:`)
}
- output.standard('')
+ output.standard()
missing.map(m =>
output.standard(`${this.npm.chalk.red(`${m.name}@${m.version}`)} (${m.registry})`)
)
@@ -106,7 +106,7 @@ class VerifySignatures {
if (invalid.length) {
if (missing.length) {
- output.standard('')
+ output.standard()
}
const invalidClr = this.npm.chalk.redBright('invalid')
// We can have either invalid signatures or invalid provenance
@@ -117,11 +117,11 @@ class VerifySignatures {
} else {
output.standard(`${invalidSignatures.length} packages have ${invalidClr} registry signatures:`)
}
- output.standard('')
+ output.standard()
invalidSignatures.map(i =>
output.standard(`${this.npm.chalk.red(`${i.name}@${i.version}`)} (${i.registry})`)
)
- output.standard('')
+ output.standard()
}
const invalidAttestations = this.invalid.filter(i => i.code === 'EATTESTATIONVERIFY')
@@ -131,11 +131,11 @@ class VerifySignatures {
} else {
output.standard(`${invalidAttestations.length} packages have ${invalidClr} attestations:`)
}
- output.standard('')
+ output.standard()
invalidAttestations.map(i =>
output.standard(`${this.npm.chalk.red(`${i.name}@${i.version}`)} (${i.registry})`)
)
- output.standard('')
+ output.standard()
}
if (invalid.length === 1) {
@@ -143,7 +143,7 @@ class VerifySignatures {
} else {
output.standard(`Someone might have tampered with these packages since they were published on the registry!`)
}
- output.standard('')
+ output.standard()
}
}
diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1
index 5362d690bb960f..56bda5adf7c1a7 100644
--- a/deps/npm/man/man1/npm-access.1
+++ b/deps/npm/man/man1/npm-access.1
@@ -1,4 +1,4 @@
-.TH "NPM-ACCESS" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-ACCESS" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-access\fR - Set access level on published packages
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1
index 1b51494c83ff8b..b0a8a368f157a6 100644
--- a/deps/npm/man/man1/npm-adduser.1
+++ b/deps/npm/man/man1/npm-adduser.1
@@ -1,4 +1,4 @@
-.TH "NPM-ADDUSER" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-ADDUSER" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-adduser\fR - Add a registry user account
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-audit.1 b/deps/npm/man/man1/npm-audit.1
index 6ca08ffeb00041..ae1e4ff9c846ed 100644
--- a/deps/npm/man/man1/npm-audit.1
+++ b/deps/npm/man/man1/npm-audit.1
@@ -1,4 +1,4 @@
-.TH "NPM-AUDIT" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-AUDIT" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-audit\fR - Run a security audit
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1
index 98d937f58a5f7f..24106ee21fe71e 100644
--- a/deps/npm/man/man1/npm-bugs.1
+++ b/deps/npm/man/man1/npm-bugs.1
@@ -1,4 +1,4 @@
-.TH "NPM-BUGS" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-BUGS" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-bugs\fR - Report bugs for a package in a web browser
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-cache.1 b/deps/npm/man/man1/npm-cache.1
index 2773d51316952b..ac8ce843afa6ef 100644
--- a/deps/npm/man/man1/npm-cache.1
+++ b/deps/npm/man/man1/npm-cache.1
@@ -1,4 +1,4 @@
-.TH "NPM-CACHE" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-CACHE" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-cache\fR - Manipulates packages cache
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-ci.1 b/deps/npm/man/man1/npm-ci.1
index e359d05a149681..7c1a4c33f5a5fb 100644
--- a/deps/npm/man/man1/npm-ci.1
+++ b/deps/npm/man/man1/npm-ci.1
@@ -1,4 +1,4 @@
-.TH "NPM-CI" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-CI" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-ci\fR - Clean install a project
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1
index 3eb22ba152f04c..858399832a39e1 100644
--- a/deps/npm/man/man1/npm-completion.1
+++ b/deps/npm/man/man1/npm-completion.1
@@ -1,4 +1,4 @@
-.TH "NPM-COMPLETION" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-COMPLETION" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-completion\fR - Tab Completion for npm
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1
index ca22066fde3dfc..4cb726ffd2cdab 100644
--- a/deps/npm/man/man1/npm-config.1
+++ b/deps/npm/man/man1/npm-config.1
@@ -1,4 +1,4 @@
-.TH "NPM-CONFIG" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-CONFIG" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-config\fR - Manage the npm configuration files
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1
index 68097b27eee691..69b8f89e831765 100644
--- a/deps/npm/man/man1/npm-dedupe.1
+++ b/deps/npm/man/man1/npm-dedupe.1
@@ -1,4 +1,4 @@
-.TH "NPM-DEDUPE" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-DEDUPE" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-dedupe\fR - Reduce duplication in the package tree
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1
index a0138a3ffad78a..c81e6f048c0e2a 100644
--- a/deps/npm/man/man1/npm-deprecate.1
+++ b/deps/npm/man/man1/npm-deprecate.1
@@ -1,4 +1,4 @@
-.TH "NPM-DEPRECATE" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-DEPRECATE" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-deprecate\fR - Deprecate a version of a package
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-diff.1 b/deps/npm/man/man1/npm-diff.1
index 987e048df17132..e502ea264ef881 100644
--- a/deps/npm/man/man1/npm-diff.1
+++ b/deps/npm/man/man1/npm-diff.1
@@ -1,4 +1,4 @@
-.TH "NPM-DIFF" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-DIFF" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-diff\fR - The registry diff command
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1
index 0ff3d44fefd2ec..8e3f3c1ca8eb15 100644
--- a/deps/npm/man/man1/npm-dist-tag.1
+++ b/deps/npm/man/man1/npm-dist-tag.1
@@ -1,4 +1,4 @@
-.TH "NPM-DIST-TAG" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-DIST-TAG" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-dist-tag\fR - Modify package distribution tags
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1
index fa081d88184438..ad43cda739b107 100644
--- a/deps/npm/man/man1/npm-docs.1
+++ b/deps/npm/man/man1/npm-docs.1
@@ -1,4 +1,4 @@
-.TH "NPM-DOCS" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-DOCS" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-docs\fR - Open documentation for a package in a web browser
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-doctor.1 b/deps/npm/man/man1/npm-doctor.1
index 9c71d876643ec0..8d5bda4832eb20 100644
--- a/deps/npm/man/man1/npm-doctor.1
+++ b/deps/npm/man/man1/npm-doctor.1
@@ -1,4 +1,4 @@
-.TH "NPM-DOCTOR" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-DOCTOR" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-doctor\fR - Check the health of your npm environment
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1
index 8bd8cf3b1138d4..35c025535a70fc 100644
--- a/deps/npm/man/man1/npm-edit.1
+++ b/deps/npm/man/man1/npm-edit.1
@@ -1,4 +1,4 @@
-.TH "NPM-EDIT" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-EDIT" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-edit\fR - Edit an installed package
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-exec.1 b/deps/npm/man/man1/npm-exec.1
index 172b94faa2619a..c4ae1db70f6f0d 100644
--- a/deps/npm/man/man1/npm-exec.1
+++ b/deps/npm/man/man1/npm-exec.1
@@ -1,4 +1,4 @@
-.TH "NPM-EXEC" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-EXEC" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-exec\fR - Run a command from a local or remote npm package
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-explain.1 b/deps/npm/man/man1/npm-explain.1
index 16e0f5c2f649a7..99b4f567a5a4bb 100644
--- a/deps/npm/man/man1/npm-explain.1
+++ b/deps/npm/man/man1/npm-explain.1
@@ -1,4 +1,4 @@
-.TH "NPM-EXPLAIN" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-EXPLAIN" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-explain\fR - Explain installed packages
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1
index 024095265ba87f..6d508bbaf80d46 100644
--- a/deps/npm/man/man1/npm-explore.1
+++ b/deps/npm/man/man1/npm-explore.1
@@ -1,4 +1,4 @@
-.TH "NPM-EXPLORE" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-EXPLORE" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-explore\fR - Browse an installed package
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-find-dupes.1 b/deps/npm/man/man1/npm-find-dupes.1
index e3642618ebdfcc..afea51be5d5864 100644
--- a/deps/npm/man/man1/npm-find-dupes.1
+++ b/deps/npm/man/man1/npm-find-dupes.1
@@ -1,4 +1,4 @@
-.TH "NPM-FIND-DUPES" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-FIND-DUPES" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-find-dupes\fR - Find duplication in the package tree
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-fund.1 b/deps/npm/man/man1/npm-fund.1
index b22112a8ce1113..a4d9c91b177fe1 100644
--- a/deps/npm/man/man1/npm-fund.1
+++ b/deps/npm/man/man1/npm-fund.1
@@ -1,4 +1,4 @@
-.TH "NPM-FUND" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-FUND" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-fund\fR - Retrieve funding information
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-get.1 b/deps/npm/man/man1/npm-get.1
new file mode 100644
index 00000000000000..7c436651daa492
--- /dev/null
+++ b/deps/npm/man/man1/npm-get.1
@@ -0,0 +1,31 @@
+.TH "NPM-GET" "1" "February 2026" "NPM@11.11.0" ""
+.SH "NAME"
+\fBnpm-get\fR - Get a value from the npm configuration
+.SS "Synopsis"
+.P
+.RS 2
+.nf
+npm get \[lB] ...\[rB] (See `npm config`)
+.fi
+.RE
+.P
+Note: This command is unaware of workspaces.
+.SS "Description"
+.P
+Get a value from the npm configuration
+.SS "Configuration"
+.SS "\fBlong\fR"
+.RS 0
+.IP \(bu 4
+Default: false
+.IP \(bu 4
+Type: Boolean
+.RE 0
+
+.P
+Show extended information in \fBls\fR, \fBsearch\fR, and \fBhelp-search\fR.
+.SS "See Also"
+.RS 0
+.IP \(bu 4
+npm help "help config"
+.RE 0
diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1
index 4e84d4fc4a89cc..c49353ee685556 100644
--- a/deps/npm/man/man1/npm-help-search.1
+++ b/deps/npm/man/man1/npm-help-search.1
@@ -1,4 +1,4 @@
-.TH "NPM-HELP-SEARCH" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-HELP-SEARCH" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-help-search\fR - Search npm help documentation
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1
index fbcfcc69c36a59..7c208d49e76a57 100644
--- a/deps/npm/man/man1/npm-help.1
+++ b/deps/npm/man/man1/npm-help.1
@@ -1,4 +1,4 @@
-.TH "NPM-HELP" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-HELP" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-help\fR - Get help on npm
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1
index 14c91671e8650d..16f1d1980b4725 100644
--- a/deps/npm/man/man1/npm-init.1
+++ b/deps/npm/man/man1/npm-init.1
@@ -1,4 +1,4 @@
-.TH "NPM-INIT" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-INIT" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-init\fR - Create a package.json file
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-install-ci-test.1 b/deps/npm/man/man1/npm-install-ci-test.1
index 0542364079f461..45ef15113df761 100644
--- a/deps/npm/man/man1/npm-install-ci-test.1
+++ b/deps/npm/man/man1/npm-install-ci-test.1
@@ -1,4 +1,4 @@
-.TH "NPM-INSTALL-CI-TEST" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-INSTALL-CI-TEST" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-install-ci-test\fR - Install a project with a clean slate and run tests
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1
index f348a3cfeeecbe..82e58aaf14e043 100644
--- a/deps/npm/man/man1/npm-install-test.1
+++ b/deps/npm/man/man1/npm-install-test.1
@@ -1,4 +1,4 @@
-.TH "NPM-INSTALL-TEST" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-INSTALL-TEST" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-install-test\fR - Install package(s) and run tests
.SS "Synopsis"
@@ -227,6 +227,22 @@ Type: null or Date
If passed to \fBnpm install\fR, will rebuild the npm tree such that only versions that were available \fBon or before\fR the given date are installed. If there are no versions available for the current set of dependencies, the command will error.
.P
If the requested version is a \fBdist-tag\fR and the given tag does not pass the \fB--before\fR filter, the most recent version less than or equal to that tag will be used. For example, \fBfoo@latest\fR might install \fBfoo@1.2\fR even though \fBlatest\fR is \fB2.0\fR.
+.P
+This config cannot be used with: \fBmin-release-age\fR
+.SS "\fBmin-release-age\fR"
+.RS 0
+.IP \(bu 4
+Default: null
+.IP \(bu 4
+Type: null or Number
+.RE 0
+
+.P
+If set, npm will build the npm tree such that only versions that were available more than the given number of days ago will be installed. If there are no versions available for the current set of dependencies, the command will error.
+.P
+This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days.
+.P
+This config cannot be used with: \fBbefore\fR
.SS "\fBbin-links\fR"
.RS 0
.IP \(bu 4
diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1
index 390a1f7a60d67e..3b40d3633608b2 100644
--- a/deps/npm/man/man1/npm-install.1
+++ b/deps/npm/man/man1/npm-install.1
@@ -1,4 +1,4 @@
-.TH "NPM-INSTALL" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-INSTALL" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-install\fR - Install a package
.SS "Synopsis"
@@ -617,6 +617,22 @@ Type: null or Date
If passed to \fBnpm install\fR, will rebuild the npm tree such that only versions that were available \fBon or before\fR the given date are installed. If there are no versions available for the current set of dependencies, the command will error.
.P
If the requested version is a \fBdist-tag\fR and the given tag does not pass the \fB--before\fR filter, the most recent version less than or equal to that tag will be used. For example, \fBfoo@latest\fR might install \fBfoo@1.2\fR even though \fBlatest\fR is \fB2.0\fR.
+.P
+This config cannot be used with: \fBmin-release-age\fR
+.SS "\fBmin-release-age\fR"
+.RS 0
+.IP \(bu 4
+Default: null
+.IP \(bu 4
+Type: null or Number
+.RE 0
+
+.P
+If set, npm will build the npm tree such that only versions that were available more than the given number of days ago will be installed. If there are no versions available for the current set of dependencies, the command will error.
+.P
+This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days.
+.P
+This config cannot be used with: \fBbefore\fR
.SS "\fBbin-links\fR"
.RS 0
.IP \(bu 4
diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1
index d5cef0abde1b45..4b554a2492751a 100644
--- a/deps/npm/man/man1/npm-link.1
+++ b/deps/npm/man/man1/npm-link.1
@@ -1,4 +1,4 @@
-.TH "NPM-LINK" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-LINK" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-link\fR - Symlink a package folder
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-ll.1 b/deps/npm/man/man1/npm-ll.1
new file mode 100644
index 00000000000000..712a4b96c37cb5
--- /dev/null
+++ b/deps/npm/man/man1/npm-ll.1
@@ -0,0 +1,231 @@
+.TH "NPM-LL" "1" "February 2026" "NPM@11.11.0" ""
+.SH "NAME"
+\fBnpm-ll\fR - List installed packages
+.SS "Synopsis"
+.P
+.RS 2
+.nf
+npm ll \[lB]\[lB]<@scope>/\[rB] ...\[rB]
+
+alias: la
+.fi
+.RE
+.SS "Description"
+.P
+List installed packages
+.SS "Configuration"
+.SS "\fBall\fR"
+.RS 0
+.IP \(bu 4
+Default: false
+.IP \(bu 4
+Type: Boolean
+.RE 0
+
+.P
+When running \fBnpm outdated\fR and \fBnpm ls\fR, setting \fB--all\fR will show all outdated or installed packages, rather than only those directly depended upon by the current project.
+.SS "\fBjson\fR"
+.RS 0
+.IP \(bu 4
+Default: false
+.IP \(bu 4
+Type: Boolean
+.RE 0
+
+.P
+Whether or not to output JSON data, rather than the normal output.
+.RS 0
+.IP \(bu 4
+In \fBnpm pkg set\fR it enables parsing set values with JSON.parse() before saving them to your \fBpackage.json\fR.
+.RE 0
+
+.P
+Not supported by all npm commands.
+.SS "\fBlong\fR"
+.RS 0
+.IP \(bu 4
+Default: false
+.IP \(bu 4
+Type: Boolean
+.RE 0
+
+.P
+Show extended information in \fBls\fR, \fBsearch\fR, and \fBhelp-search\fR.
+.SS "\fBparseable\fR"
+.RS 0
+.IP \(bu 4
+Default: false
+.IP \(bu 4
+Type: Boolean
+.RE 0
+
+.P
+Output parseable results from commands that write to standard output. For \fBnpm search\fR, this will be tab-separated table format.
+.SS "\fBglobal\fR"
+.RS 0
+.IP \(bu 4
+Default: false
+.IP \(bu 4
+Type: Boolean
+.RE 0
+
+.P
+Operates in "global" mode, so that packages are installed into the \fBprefix\fR folder instead of the current working directory. See npm help folders for more on the differences in behavior.
+.RS 0
+.IP \(bu 4
+packages are installed into the \fB{prefix}/lib/node_modules\fR folder, instead of the current working directory.
+.IP \(bu 4
+bin files are linked to \fB{prefix}/bin\fR
+.IP \(bu 4
+man pages are linked to \fB{prefix}/share/man\fR
+.RE 0
+
+.SS "\fBdepth\fR"
+.RS 0
+.IP \(bu 4
+Default: \fBInfinity\fR if \fB--all\fR is set; otherwise, \fB0\fR
+.IP \(bu 4
+Type: null or Number
+.RE 0
+
+.P
+The depth to go when recursing packages for \fBnpm ls\fR.
+.P
+If not set, \fBnpm ls\fR will show only the immediate dependencies of the root project. If \fB--all\fR is set, then npm will show all dependencies by default.
+.SS "\fBomit\fR"
+.RS 0
+.IP \(bu 4
+Default: 'dev' if the \fBNODE_ENV\fR environment variable is set to 'production'; otherwise, empty.
+.IP \(bu 4
+Type: "dev", "optional", or "peer" (can be set multiple times)
+.RE 0
+
+.P
+Dependency types to omit from the installation tree on disk.
+.P
+Note that these dependencies \fIare\fR still resolved and added to the \fBpackage-lock.json\fR or \fBnpm-shrinkwrap.json\fR file. They are just not physically installed on disk.
+.P
+If a package type appears in both the \fB--include\fR and \fB--omit\fR lists, then it will be included.
+.P
+If the resulting omit list includes \fB'dev'\fR, then the \fBNODE_ENV\fR environment variable will be set to \fB'production'\fR for all lifecycle scripts.
+.SS "\fBinclude\fR"
+.RS 0
+.IP \(bu 4
+Default:
+.IP \(bu 4
+Type: "prod", "dev", "optional", or "peer" (can be set multiple times)
+.RE 0
+
+.P
+Option that allows for defining which types of dependencies to install.
+.P
+This is the inverse of \fB--omit=\fR.
+.P
+Dependency types specified in \fB--include\fR will not be omitted, regardless of the order in which omit/include are specified on the command-line.
+.SS "\fBlink\fR"
+.RS 0
+.IP \(bu 4
+Default: false
+.IP \(bu 4
+Type: Boolean
+.RE 0
+
+.P
+Used with \fBnpm ls\fR, limiting output to only those packages that are linked.
+.SS "\fBpackage-lock-only\fR"
+.RS 0
+.IP \(bu 4
+Default: false
+.IP \(bu 4
+Type: Boolean
+.RE 0
+
+.P
+If set to true, the current operation will only use the \fBpackage-lock.json\fR, ignoring \fBnode_modules\fR.
+.P
+For \fBupdate\fR this means only the \fBpackage-lock.json\fR will be updated, instead of checking \fBnode_modules\fR and downloading dependencies.
+.P
+For \fBlist\fR this means the output will be based on the tree described by the \fBpackage-lock.json\fR, rather than the contents of \fBnode_modules\fR.
+.SS "\fBunicode\fR"
+.RS 0
+.IP \(bu 4
+Default: false on windows, true on mac/unix systems with a unicode locale, as defined by the \fBLC_ALL\fR, \fBLC_CTYPE\fR, or \fBLANG\fR environment variables.
+.IP \(bu 4
+Type: Boolean
+.RE 0
+
+.P
+When set to true, npm uses unicode characters in the tree output. When false, it uses ascii characters instead of unicode glyphs.
+.SS "\fBworkspace\fR"
+.RS 0
+.IP \(bu 4
+Default:
+.IP \(bu 4
+Type: String (can be set multiple times)
+.RE 0
+
+.P
+Enable running a command in the context of the configured workspaces of the current project while filtering by running only the workspaces defined by this configuration option.
+.P
+Valid values for the \fBworkspace\fR config are either:
+.RS 0
+.IP \(bu 4
+Workspace names
+.IP \(bu 4
+Path to a workspace directory
+.IP \(bu 4
+Path to a parent workspace directory (will result in selecting all workspaces within that folder)
+.RE 0
+
+.P
+When set for the \fBnpm init\fR command, this may be set to the folder of a workspace which does not yet exist, to create the folder and set it up as a brand new workspace within the project.
+.P
+This value is not exported to the environment for child processes.
+.SS "\fBworkspaces\fR"
+.RS 0
+.IP \(bu 4
+Default: null
+.IP \(bu 4
+Type: null or Boolean
+.RE 0
+
+.P
+Set to true to run the command in the context of \fBall\fR configured workspaces.
+.P
+Explicitly setting this to false will cause commands like \fBinstall\fR to ignore workspaces altogether. When not set explicitly:
+.RS 0
+.IP \(bu 4
+Commands that operate on the \fBnode_modules\fR tree (install, update, etc.) will link workspaces into the \fBnode_modules\fR folder. - Commands that do other things (test, exec, publish, etc.) will operate on the root project, \fIunless\fR one or more workspaces are specified in the \fBworkspace\fR config.
+.RE 0
+
+.P
+This value is not exported to the environment for child processes.
+.SS "\fBinclude-workspace-root\fR"
+.RS 0
+.IP \(bu 4
+Default: false
+.IP \(bu 4
+Type: Boolean
+.RE 0
+
+.P
+Include the workspace root when workspaces are enabled for a command.
+.P
+When false, specifying individual workspaces via the \fBworkspace\fR config, or all workspaces via the \fBworkspaces\fR flag, will cause npm to operate only on the specified workspaces, and not on the root project.
+.P
+This value is not exported to the environment for child processes.
+.SS "\fBinstall-links\fR"
+.RS 0
+.IP \(bu 4
+Default: false
+.IP \(bu 4
+Type: Boolean
+.RE 0
+
+.P
+When set file: protocol dependencies will be packed and installed as regular dependencies instead of creating a symlink. This option has no effect on workspaces.
+.SS "See Also"
+.RS 0
+.IP \(bu 4
+npm help "help config"
+.RE 0
diff --git a/deps/npm/man/man1/npm-login.1 b/deps/npm/man/man1/npm-login.1
index e2586baee4b997..84ee231156b786 100644
--- a/deps/npm/man/man1/npm-login.1
+++ b/deps/npm/man/man1/npm-login.1
@@ -1,4 +1,4 @@
-.TH "NPM-LOGIN" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-LOGIN" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-login\fR - Login to a registry user account
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1
index 170f89f7524871..35fe68417a461e 100644
--- a/deps/npm/man/man1/npm-logout.1
+++ b/deps/npm/man/man1/npm-logout.1
@@ -1,4 +1,4 @@
-.TH "NPM-LOGOUT" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-LOGOUT" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-logout\fR - Log out of the registry
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1
index c1e323ae19cd76..b3028b8dd393ed 100644
--- a/deps/npm/man/man1/npm-ls.1
+++ b/deps/npm/man/man1/npm-ls.1
@@ -1,4 +1,4 @@
-.TH "NPM-LS" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-LS" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-ls\fR - List installed packages
.SS "Synopsis"
@@ -20,7 +20,7 @@ Positional arguments are \fBname@version-range\fR identifiers, which will limit
.P
.RS 2
.nf
-npm@11.9.0 /path/to/npm
+npm@11.11.0 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5
.fi
diff --git a/deps/npm/man/man1/npm-org.1 b/deps/npm/man/man1/npm-org.1
index 0d8bb3255d6fb7..83fb117858ec88 100644
--- a/deps/npm/man/man1/npm-org.1
+++ b/deps/npm/man/man1/npm-org.1
@@ -1,4 +1,4 @@
-.TH "NPM-ORG" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-ORG" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-org\fR - Manage orgs
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1
index 5fc2ef4a0d1cf0..3c0e64bdf84935 100644
--- a/deps/npm/man/man1/npm-outdated.1
+++ b/deps/npm/man/man1/npm-outdated.1
@@ -1,4 +1,4 @@
-.TH "NPM-OUTDATED" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-OUTDATED" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-outdated\fR - Check for outdated packages
.SS "Synopsis"
@@ -179,6 +179,22 @@ Type: null or Date
If passed to \fBnpm install\fR, will rebuild the npm tree such that only versions that were available \fBon or before\fR the given date are installed. If there are no versions available for the current set of dependencies, the command will error.
.P
If the requested version is a \fBdist-tag\fR and the given tag does not pass the \fB--before\fR filter, the most recent version less than or equal to that tag will be used. For example, \fBfoo@latest\fR might install \fBfoo@1.2\fR even though \fBlatest\fR is \fB2.0\fR.
+.P
+This config cannot be used with: \fBmin-release-age\fR
+.SS "\fBmin-release-age\fR"
+.RS 0
+.IP \(bu 4
+Default: null
+.IP \(bu 4
+Type: null or Number
+.RE 0
+
+.P
+If set, npm will build the npm tree such that only versions that were available more than the given number of days ago will be installed. If there are no versions available for the current set of dependencies, the command will error.
+.P
+This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days.
+.P
+This config cannot be used with: \fBbefore\fR
.SS "See Also"
.RS 0
.IP \(bu 4
diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1
index 7a8f50a73b9624..81b2fec8ff27ac 100644
--- a/deps/npm/man/man1/npm-owner.1
+++ b/deps/npm/man/man1/npm-owner.1
@@ -1,4 +1,4 @@
-.TH "NPM-OWNER" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-OWNER" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-owner\fR - Manage package owners
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1
index 848f68a220ec26..8f5488d7a3b7a6 100644
--- a/deps/npm/man/man1/npm-pack.1
+++ b/deps/npm/man/man1/npm-pack.1
@@ -1,4 +1,4 @@
-.TH "NPM-PACK" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-PACK" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-pack\fR - Create a tarball from a package
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-ping.1 b/deps/npm/man/man1/npm-ping.1
index 0c52252a6bb335..a80faff74ff914 100644
--- a/deps/npm/man/man1/npm-ping.1
+++ b/deps/npm/man/man1/npm-ping.1
@@ -1,4 +1,4 @@
-.TH "NPM-PING" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-PING" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-ping\fR - Ping npm registry
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-pkg.1 b/deps/npm/man/man1/npm-pkg.1
index 48e1e16ab0f265..8667ddbe27c6ff 100644
--- a/deps/npm/man/man1/npm-pkg.1
+++ b/deps/npm/man/man1/npm-pkg.1
@@ -1,4 +1,4 @@
-.TH "NPM-PKG" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-PKG" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-pkg\fR - Manages your package.json
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-prefix.1 b/deps/npm/man/man1/npm-prefix.1
index c7437b27f60907..6cd9f675b34fb5 100644
--- a/deps/npm/man/man1/npm-prefix.1
+++ b/deps/npm/man/man1/npm-prefix.1
@@ -1,4 +1,4 @@
-.TH "NPM-PREFIX" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-PREFIX" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-prefix\fR - Display prefix
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-profile.1 b/deps/npm/man/man1/npm-profile.1
index bee2dcfd4f5b9f..67b1c3170e518f 100644
--- a/deps/npm/man/man1/npm-profile.1
+++ b/deps/npm/man/man1/npm-profile.1
@@ -1,4 +1,4 @@
-.TH "NPM-PROFILE" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-PROFILE" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-profile\fR - Change settings on your registry profile
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1
index 0c6bfda9c62fd4..2569575bbb1a28 100644
--- a/deps/npm/man/man1/npm-prune.1
+++ b/deps/npm/man/man1/npm-prune.1
@@ -1,4 +1,4 @@
-.TH "NPM-PRUNE" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-PRUNE" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-prune\fR - Remove extraneous packages
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1
index 3aa7010746ec0e..bab2c123579bb1 100644
--- a/deps/npm/man/man1/npm-publish.1
+++ b/deps/npm/man/man1/npm-publish.1
@@ -1,4 +1,4 @@
-.TH "NPM-PUBLISH" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-PUBLISH" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-publish\fR - Publish a package
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-query.1 b/deps/npm/man/man1/npm-query.1
index d2ec010c735cf8..0811845c1c4ae2 100644
--- a/deps/npm/man/man1/npm-query.1
+++ b/deps/npm/man/man1/npm-query.1
@@ -1,4 +1,4 @@
-.TH "NPM-QUERY" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-QUERY" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-query\fR - Dependency selector query
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1
index 35d34945cbde1d..d138bf51dc91c4 100644
--- a/deps/npm/man/man1/npm-rebuild.1
+++ b/deps/npm/man/man1/npm-rebuild.1
@@ -1,4 +1,4 @@
-.TH "NPM-REBUILD" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-REBUILD" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-rebuild\fR - Rebuild a package
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1
index 3b0061f59c7728..8746de5cc2ea39 100644
--- a/deps/npm/man/man1/npm-repo.1
+++ b/deps/npm/man/man1/npm-repo.1
@@ -1,4 +1,4 @@
-.TH "NPM-REPO" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-REPO" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-repo\fR - Open package repository page in the browser
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-restart.1 b/deps/npm/man/man1/npm-restart.1
index 0bdd96dfe7ff97..81a86e23397605 100644
--- a/deps/npm/man/man1/npm-restart.1
+++ b/deps/npm/man/man1/npm-restart.1
@@ -1,4 +1,4 @@
-.TH "NPM-RESTART" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-RESTART" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-restart\fR - Restart a package
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1
index 9a925000cf2686..537d4c306a120f 100644
--- a/deps/npm/man/man1/npm-root.1
+++ b/deps/npm/man/man1/npm-root.1
@@ -1,4 +1,4 @@
-.TH "NPM-ROOT" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-ROOT" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-root\fR - Display npm root
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-run.1 b/deps/npm/man/man1/npm-run.1
index 1584521bbe7008..20a5032fe62a85 100644
--- a/deps/npm/man/man1/npm-run.1
+++ b/deps/npm/man/man1/npm-run.1
@@ -1,4 +1,4 @@
-.TH "NPM-RUN" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-RUN" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-run\fR - Run arbitrary package scripts
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-sbom.1 b/deps/npm/man/man1/npm-sbom.1
index f30ab1dd916749..7894164e892e64 100644
--- a/deps/npm/man/man1/npm-sbom.1
+++ b/deps/npm/man/man1/npm-sbom.1
@@ -1,4 +1,4 @@
-.TH "NPM-SBOM" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-SBOM" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-sbom\fR - Generate a Software Bill of Materials (SBOM)
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1
index d267f1383f1e4f..22ef258454ae15 100644
--- a/deps/npm/man/man1/npm-search.1
+++ b/deps/npm/man/man1/npm-search.1
@@ -1,4 +1,4 @@
-.TH "NPM-SEARCH" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-SEARCH" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-search\fR - Search for packages
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-set.1 b/deps/npm/man/man1/npm-set.1
new file mode 100644
index 00000000000000..ef485c3521738e
--- /dev/null
+++ b/deps/npm/man/man1/npm-set.1
@@ -0,0 +1,61 @@
+.TH "NPM-SET" "1" "February 2026" "NPM@11.11.0" ""
+.SH "NAME"
+\fBnpm-set\fR - Set a value in the npm configuration
+.SS "Synopsis"
+.P
+.RS 2
+.nf
+npm set = \[lB]= ...\[rB] (See `npm config`)
+.fi
+.RE
+.P
+Note: This command is unaware of workspaces.
+.SS "Description"
+.P
+Set a value in the npm configuration
+.SS "Configuration"
+.SS "\fBglobal\fR"
+.RS 0
+.IP \(bu 4
+Default: false
+.IP \(bu 4
+Type: Boolean
+.RE 0
+
+.P
+Operates in "global" mode, so that packages are installed into the \fBprefix\fR folder instead of the current working directory. See npm help folders for more on the differences in behavior.
+.RS 0
+.IP \(bu 4
+packages are installed into the \fB{prefix}/lib/node_modules\fR folder, instead of the current working directory.
+.IP \(bu 4
+bin files are linked to \fB{prefix}/bin\fR
+.IP \(bu 4
+man pages are linked to \fB{prefix}/share/man\fR
+.RE 0
+
+.SS "\fBlocation\fR"
+.RS 0
+.IP \(bu 4
+Default: "user" unless \fB--global\fR is passed, which will also set this value to "global"
+.IP \(bu 4
+Type: "global", "user", or "project"
+.RE 0
+
+.P
+When passed to \fBnpm config\fR this refers to which config file to use.
+.P
+When set to "global" mode, packages are installed into the \fBprefix\fR folder instead of the current working directory. See npm help folders for more on the differences in behavior.
+.RS 0
+.IP \(bu 4
+packages are installed into the \fB{prefix}/lib/node_modules\fR folder, instead of the current working directory.
+.IP \(bu 4
+bin files are linked to \fB{prefix}/bin\fR
+.IP \(bu 4
+man pages are linked to \fB{prefix}/share/man\fR
+.RE 0
+
+.SS "See Also"
+.RS 0
+.IP \(bu 4
+npm help "help config"
+.RE 0
diff --git a/deps/npm/man/man1/npm-shrinkwrap.1 b/deps/npm/man/man1/npm-shrinkwrap.1
index fdcae4f7d35b79..846b7affa62b6c 100644
--- a/deps/npm/man/man1/npm-shrinkwrap.1
+++ b/deps/npm/man/man1/npm-shrinkwrap.1
@@ -1,4 +1,4 @@
-.TH "NPM-SHRINKWRAP" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-SHRINKWRAP" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-shrinkwrap\fR - Lock down dependency versions for publication
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-star.1 b/deps/npm/man/man1/npm-star.1
index 89c6c5bf908ffe..bdc27193d061c1 100644
--- a/deps/npm/man/man1/npm-star.1
+++ b/deps/npm/man/man1/npm-star.1
@@ -1,4 +1,4 @@
-.TH "NPM-STAR" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-STAR" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-star\fR - Mark your favorite packages
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1
index f03099894f8f69..6a49b6305e4dd4 100644
--- a/deps/npm/man/man1/npm-stars.1
+++ b/deps/npm/man/man1/npm-stars.1
@@ -1,4 +1,4 @@
-.TH "NPM-STARS" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-STARS" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-stars\fR - View packages marked as favorites
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-start.1 b/deps/npm/man/man1/npm-start.1
index 6451a45c812829..5f783b75308e67 100644
--- a/deps/npm/man/man1/npm-start.1
+++ b/deps/npm/man/man1/npm-start.1
@@ -1,4 +1,4 @@
-.TH "NPM-START" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-START" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-start\fR - Start a package
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1
index f7e164c779da55..b417dd8a7e5e13 100644
--- a/deps/npm/man/man1/npm-stop.1
+++ b/deps/npm/man/man1/npm-stop.1
@@ -1,4 +1,4 @@
-.TH "NPM-STOP" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-STOP" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-stop\fR - Stop a package
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1
index 753f6f24d3dcd9..b48019f33e5249 100644
--- a/deps/npm/man/man1/npm-team.1
+++ b/deps/npm/man/man1/npm-team.1
@@ -1,4 +1,4 @@
-.TH "NPM-TEAM" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-TEAM" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-team\fR - Manage organization teams and team memberships
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1
index 8633adfb9c6c3f..b06b0b1ff8eb11 100644
--- a/deps/npm/man/man1/npm-test.1
+++ b/deps/npm/man/man1/npm-test.1
@@ -1,4 +1,4 @@
-.TH "NPM-TEST" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-TEST" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-test\fR - Test a package
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-token.1 b/deps/npm/man/man1/npm-token.1
index 7f02acf3763021..c31030d09f1e59 100644
--- a/deps/npm/man/man1/npm-token.1
+++ b/deps/npm/man/man1/npm-token.1
@@ -1,4 +1,4 @@
-.TH "NPM-TOKEN" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-TOKEN" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-token\fR - Manage your authentication tokens
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-trust.1 b/deps/npm/man/man1/npm-trust.1
new file mode 100644
index 00000000000000..2b2223c9384307
--- /dev/null
+++ b/deps/npm/man/man1/npm-trust.1
@@ -0,0 +1,136 @@
+.TH "NPM-TRUST" "1" "February 2026" "NPM@11.11.0" ""
+.SH "NAME"
+\fBnpm-trust\fR - Manage trusted publishing relationships between packages and CI/CD providers
+.SS "Synopsis"
+.P
+.RS 2
+.nf
+npm trust
+.fi
+.RE
+.P
+Note: This command is unaware of workspaces.
+.SS "Prerequisites"
+.P
+Before using npm trust commands, ensure the following requirements are met:
+.RS 0
+.IP \(bu 4
+\fBnpm version\fR: \fBnpm@11.10.0\fR or above is required. Use \fBnpm install -g npm@^11.10.0\fR to update if needed.
+.IP \(bu 4
+\fBWrite permissions on the package\fR: You must have write access to the package you're configuring.
+.IP \(bu 4
+\fB2FA enabled on account\fR: Two-factor authentication must be enabled at the account level. Even if it's not currently enabled, you must enable it to use trust commands.
+.IP \(bu 4
+\fBSupported authentication methods\fR: Granular Access Tokens (GAT) with the bypass 2FA option are not supported. Legacy basic auth (username and password) credentials will not work for trust commands or endpoints.
+.IP \(bu 4
+\fBPackage must exist\fR: The package you're configuring must already exist on the npm registry.
+.RE 0
+
+.SS "Description"
+.P
+Configure trust relationships between npm packages and CI/CD providers using OpenID Connect (OIDC). This is the command-line equivalent of managing trusted publisher configurations on the npm website.
+.P
+For a comprehensive overview of trusted publishing, see the \fBnpm trusted publishers documentation\fR \fI\(lahttps://docs.npmjs.com/trusted-publishers\(ra\fR.
+.P
+The \fB\[lB]package\[rB]\fR argument specifies the package name. If omitted, npm will use the name from the \fBpackage.json\fR in the current directory.
+.P
+Each trust relationship has its own set of configuration options and flags based on the OIDC claims provided by that provider. OIDC claims come from the CI/CD provider and include information such as repository name, workflow file, or environment. Since each provider's claims differ, the available flags and configuration keys are not universal\[em]npm matches the claims supported by each provider's OIDC configuration. For specific details on which claims and flags are supported for a given provider, use \fBnpm trust --help\fR.
+.P
+The required options depend on the CI/CD provider you're configuring. Detailed information about each option is available in the \fBmanaging trusted publisher configurations\fR \fI\(lahttps://docs.npmjs.com/trusted-publishers#managing-trusted-publisher-configurations\(ra\fR section of the npm documentation. If a provider is repository-based and the option is not provided, npm will use the \fBrepository.url\fR field from your \fBpackage.json\fR, if available.
+.P
+Currently, the registry only supports one configuration per package. If you attempt to create a new trust relationship when one already exists, it will result in an error. To replace an existing configuration:
+.RS 0
+.IP 1. 4
+Use \fBnpm trust list \[lB]package\[rB]\fR to view the ID of the existing trusted publisher
+.IP 2. 4
+Use \fBnpm trust revoke --id \[lB]package\[rB]\fR to remove the existing configuration
+.IP 3. 4
+Then create your new trust relationship
+.RE 0
+
+.SS "Bulk Usage"
+.P
+For maintainers managing a large number of packages, you can configure trusted publishing in bulk using bash scripting. Create a loop that iterates through package names and their corresponding configuration details, executing the \fBnpm trust \fR command with the \fB--yes\fR flag for each package.
+.P
+The first request will require two-factor authentication. During two-factor authentication, you'll see an option on the npm website to skip two-factor authentication for the next 5 minutes. Enabling this option will allow subsequent \fBnpm trust \fR commands to proceed without two-factor authentication, streamlining the bulk configuration process.
+.P
+We recommend adding a 2-second sleep between each call to avoid rate limiting. With this approach, you can configure approximately 80 packages within the 5-minute two-factor authentication skip window.
+.SS "Configuration"
+.SS "\fBnpm trust github\fR"
+.P
+Create a trusted relationship between a package and GitHub Actions
+.SS "Synopsis"
+.P
+.RS 2
+.nf
+npm trust github \[lB]package\[rB] --file \[lB]--repo|--repository\[rB] \[lB]--env|--environment\[rB] \[lB]-y|--yes\[rB]
+.fi
+.RE
+.SS "Flags"
+.P
+| Flag | Default | Type | Description | | --- | --- | --- | --- | | \fB--file\fR | null | String (required) | Name of workflow file within a repositories .GitHub folder (must end in yaml, yml) | | \fB--repository\fR, \fB--repo\fR | null | String | Name of the repository in the format owner/repo | | \fB--environment\fR, \fB--env\fR | null | String | CI environment name | | \fB--dry-run\fR | false | Boolean | Indicates that you don't want npm to make any changes and that it should only report what it would have done. This can be passed into any of the commands that modify your local installation, eg, \fBinstall\fR, \fBupdate\fR, \fBdedupe\fR, \fBuninstall\fR, as well as \fBpack\fR and \fBpublish\fR. Note: This is NOT honored by other network related commands, eg \fBdist-tags\fR, \fBowner\fR, etc. | | \fB--json\fR | false | Boolean | Whether or not to output JSON data, rather than the normal output. * In \fBnpm pkg set\fR it enables parsing set values with JSON.parse() before saving them to your \fBpackage.json\fR. Not supported by all npm commands. | | \fB--registry\fR | "https://registry.npmjs.org/" | URL | The base URL of the npm registry. | | \fB--yes\fR, \fB-y\fR | null | null or Boolean | Automatically answer "yes" to any prompts that npm might print on the command line. |
+.SS "\fBnpm trust gitlab\fR"
+.P
+Create a trusted relationship between a package and GitLab CI/CD
+.SS "Synopsis"
+.P
+.RS 2
+.nf
+npm trust gitlab \[lB]package\[rB] --file \[lB]--project|--repo|--repository\[rB] \[lB]--env|--environment\[rB] \[lB]-y|--yes\[rB]
+.fi
+.RE
+.SS "Flags"
+.P
+| Flag | Default | Type | Description | | --- | --- | --- | --- | | \fB--file\fR | null | String (required) | Name of pipeline file (e.g., .gitlab-ci.yml) | | \fB--project\fR | null | String | Name of the project in the format group/project or group/subgroup/project | | \fB--environment\fR, \fB--env\fR | null | String | CI environment name | | \fB--dry-run\fR | false | Boolean | Indicates that you don't want npm to make any changes and that it should only report what it would have done. This can be passed into any of the commands that modify your local installation, eg, \fBinstall\fR, \fBupdate\fR, \fBdedupe\fR, \fBuninstall\fR, as well as \fBpack\fR and \fBpublish\fR. Note: This is NOT honored by other network related commands, eg \fBdist-tags\fR, \fBowner\fR, etc. | | \fB--json\fR | false | Boolean | Whether or not to output JSON data, rather than the normal output. * In \fBnpm pkg set\fR it enables parsing set values with JSON.parse() before saving them to your \fBpackage.json\fR. Not supported by all npm commands. | | \fB--registry\fR | "https://registry.npmjs.org/" | URL | The base URL of the npm registry. | | \fB--yes\fR, \fB-y\fR | null | null or Boolean | Automatically answer "yes" to any prompts that npm might print on the command line. |
+.SS "\fBnpm trust circleci\fR"
+.P
+Create a trusted relationship between a package and CircleCI
+.SS "Synopsis"
+.P
+.RS 2
+.nf
+npm trust circleci \[lB]package\[rB] --org-id --project-id --pipeline-definition-id --vcs-origin \[lB]--context-id ...\[rB] \[lB]-y|--yes\[rB]
+.fi
+.RE
+.SS "Flags"
+.P
+| Flag | Default | Type | Description | | --- | --- | --- | --- | | \fB--org-id\fR | null | String (required) | CircleCI organization UUID | | \fB--project-id\fR | null | String (required) | CircleCI project UUID | | \fB--pipeline-definition-id\fR | null | String (required) | CircleCI pipeline definition UUID | | \fB--vcs-origin\fR | null | String (required) | CircleCI repository origin in format 'provider/owner/repo' | | \fB--context-id\fR | null | null or String (can be set multiple times) | CircleCI context UUID to match | | \fB--dry-run\fR | false | Boolean | Indicates that you don't want npm to make any changes and that it should only report what it would have done. This can be passed into any of the commands that modify your local installation, eg, \fBinstall\fR, \fBupdate\fR, \fBdedupe\fR, \fBuninstall\fR, as well as \fBpack\fR and \fBpublish\fR. Note: This is NOT honored by other network related commands, eg \fBdist-tags\fR, \fBowner\fR, etc. | | \fB--json\fR | false | Boolean | Whether or not to output JSON data, rather than the normal output. * In \fBnpm pkg set\fR it enables parsing set values with JSON.parse() before saving them to your \fBpackage.json\fR. Not supported by all npm commands. | | \fB--registry\fR | "https://registry.npmjs.org/" | URL | The base URL of the npm registry. | | \fB--yes\fR, \fB-y\fR | null | null or Boolean | Automatically answer "yes" to any prompts that npm might print on the command line. |
+.SS "\fBnpm trust list\fR"
+.P
+List trusted relationships for a package
+.SS "Synopsis"
+.P
+.RS 2
+.nf
+npm trust list \[lB]package\[rB]
+.fi
+.RE
+.SS "Flags"
+.P
+| Flag | Default | Type | Description | | --- | --- | --- | --- | | \fB--json\fR | false | Boolean | Whether or not to output JSON data, rather than the normal output. * In \fBnpm pkg set\fR it enables parsing set values with JSON.parse() before saving them to your \fBpackage.json\fR. Not supported by all npm commands. | | \fB--registry\fR | "https://registry.npmjs.org/" | URL | The base URL of the npm registry. |
+.SS "\fBnpm trust revoke\fR"
+.P
+Revoke a trusted relationship for a package
+.SS "Synopsis"
+.P
+.RS 2
+.nf
+npm trust revoke \[lB]package\[rB] --id=
+.fi
+.RE
+.SS "Flags"
+.P
+| Flag | Default | Type | Description | | --- | --- | --- | --- | | \fB--id\fR | null | String (required) | ID of the trusted relationship to revoke | | \fB--dry-run\fR | false | Boolean | Indicates that you don't want npm to make any changes and that it should only report what it would have done. This can be passed into any of the commands that modify your local installation, eg, \fBinstall\fR, \fBupdate\fR, \fBdedupe\fR, \fBuninstall\fR, as well as \fBpack\fR and \fBpublish\fR. Note: This is NOT honored by other network related commands, eg \fBdist-tags\fR, \fBowner\fR, etc. | | \fB--registry\fR | "https://registry.npmjs.org/" | URL | The base URL of the npm registry. |
+.SS "See Also"
+.RS 0
+.IP \(bu 4
+npm help publish
+.IP \(bu 4
+npm help token
+.IP \(bu 4
+npm help access
+.IP \(bu 4
+npm help config
+.IP \(bu 4
+npm help registry
+.RE 0
diff --git a/deps/npm/man/man1/npm-undeprecate.1 b/deps/npm/man/man1/npm-undeprecate.1
index eece58dcaa5451..7fccdf4d79b87b 100644
--- a/deps/npm/man/man1/npm-undeprecate.1
+++ b/deps/npm/man/man1/npm-undeprecate.1
@@ -1,4 +1,4 @@
-.TH "NPM-UNDEPRECATE" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-UNDEPRECATE" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-undeprecate\fR - Undeprecate a version of a package
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1
index d51f4f757640f3..8c2645515bf469 100644
--- a/deps/npm/man/man1/npm-uninstall.1
+++ b/deps/npm/man/man1/npm-uninstall.1
@@ -1,4 +1,4 @@
-.TH "NPM-UNINSTALL" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-UNINSTALL" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-uninstall\fR - Remove a package
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-unpublish.1 b/deps/npm/man/man1/npm-unpublish.1
index 4a4df7ca4ceb1f..debc77cae0b8cd 100644
--- a/deps/npm/man/man1/npm-unpublish.1
+++ b/deps/npm/man/man1/npm-unpublish.1
@@ -1,4 +1,4 @@
-.TH "NPM-UNPUBLISH" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-UNPUBLISH" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-unpublish\fR - Remove a package from the registry
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-unstar.1 b/deps/npm/man/man1/npm-unstar.1
index 78a1fe792cc718..48f1e1e60112e4 100644
--- a/deps/npm/man/man1/npm-unstar.1
+++ b/deps/npm/man/man1/npm-unstar.1
@@ -1,4 +1,4 @@
-.TH "NPM-UNSTAR" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-UNSTAR" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-unstar\fR - Remove an item from your favorite packages
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1
index b8e1f2c00a6057..6444774c6aee1e 100644
--- a/deps/npm/man/man1/npm-update.1
+++ b/deps/npm/man/man1/npm-update.1
@@ -1,4 +1,4 @@
-.TH "NPM-UPDATE" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-UPDATE" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-update\fR - Update packages
.SS "Synopsis"
@@ -299,6 +299,22 @@ Type: null or Date
If passed to \fBnpm install\fR, will rebuild the npm tree such that only versions that were available \fBon or before\fR the given date are installed. If there are no versions available for the current set of dependencies, the command will error.
.P
If the requested version is a \fBdist-tag\fR and the given tag does not pass the \fB--before\fR filter, the most recent version less than or equal to that tag will be used. For example, \fBfoo@latest\fR might install \fBfoo@1.2\fR even though \fBlatest\fR is \fB2.0\fR.
+.P
+This config cannot be used with: \fBmin-release-age\fR
+.SS "\fBmin-release-age\fR"
+.RS 0
+.IP \(bu 4
+Default: null
+.IP \(bu 4
+Type: null or Number
+.RE 0
+
+.P
+If set, npm will build the npm tree such that only versions that were available more than the given number of days ago will be installed. If there are no versions available for the current set of dependencies, the command will error.
+.P
+This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days.
+.P
+This config cannot be used with: \fBbefore\fR
.SS "\fBbin-links\fR"
.RS 0
.IP \(bu 4
diff --git a/deps/npm/man/man1/npm-version.1 b/deps/npm/man/man1/npm-version.1
index 98facf40835a7a..fa5c13186c76fd 100644
--- a/deps/npm/man/man1/npm-version.1
+++ b/deps/npm/man/man1/npm-version.1
@@ -1,4 +1,4 @@
-.TH "NPM-VERSION" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-VERSION" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-version\fR - Bump a package version
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-view.1 b/deps/npm/man/man1/npm-view.1
index 1c4def17b18941..a8b7f368ddd0c4 100644
--- a/deps/npm/man/man1/npm-view.1
+++ b/deps/npm/man/man1/npm-view.1
@@ -1,4 +1,4 @@
-.TH "NPM-VIEW" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-VIEW" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-view\fR - View registry info
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm-whoami.1 b/deps/npm/man/man1/npm-whoami.1
index e150e300f18f8a..ee79598fadc52f 100644
--- a/deps/npm/man/man1/npm-whoami.1
+++ b/deps/npm/man/man1/npm-whoami.1
@@ -1,4 +1,4 @@
-.TH "NPM-WHOAMI" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-WHOAMI" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-whoami\fR - Display npm username
.SS "Synopsis"
diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1
index 5d5d24a0917c41..8c2522323757ea 100644
--- a/deps/npm/man/man1/npm.1
+++ b/deps/npm/man/man1/npm.1
@@ -1,4 +1,4 @@
-.TH "NPM" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPM" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm\fR - javascript package manager
.SS "Synopsis"
@@ -12,7 +12,7 @@ npm
Note: This command is unaware of workspaces.
.SS "Version"
.P
-11.9.0
+11.11.0
.SS "Description"
.P
npm is the package manager for the Node JavaScript platform. It puts modules in place so that node can find them, and manages dependency conflicts intelligently.
diff --git a/deps/npm/man/man1/npx.1 b/deps/npm/man/man1/npx.1
index 6857e549b7993c..ac1e6a4b2a30e6 100644
--- a/deps/npm/man/man1/npx.1
+++ b/deps/npm/man/man1/npx.1
@@ -1,4 +1,4 @@
-.TH "NPX" "1" "February 2026" "NPM@11.9.0" ""
+.TH "NPX" "1" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpx\fR - Run a command from a local or remote npm package
.SS "Synopsis"
diff --git a/deps/npm/man/man5/folders.5 b/deps/npm/man/man5/folders.5
index 98825654a7ec7e..dfbffb819d79b6 100644
--- a/deps/npm/man/man5/folders.5
+++ b/deps/npm/man/man5/folders.5
@@ -1,6 +1,6 @@
-.TH "FOLDERS" "5" "February 2026" "NPM@11.9.0" ""
+.TH "FOLDERS" "5" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
-\fBfolders\fR - Folder Structures Used by npm
+\fBFolders\fR - Folder structures used by npm
.SS "Description"
.P
npm puts various things on your computer. That's its job.
diff --git a/deps/npm/man/man5/install.5 b/deps/npm/man/man5/install.5
index 19e268dc14c86c..1ed6027eb63623 100644
--- a/deps/npm/man/man5/install.5
+++ b/deps/npm/man/man5/install.5
@@ -1,6 +1,6 @@
-.TH "INSTALL" "5" "February 2026" "NPM@11.9.0" ""
+.TH "INSTALL" "5" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
-\fBinstall\fR - Download and install node and npm
+\fBInstall\fR - Download and install node and npm
.SS "Description"
.P
To publish and install packages to and from the public npm registry, you must install Node.js and the npm command line interface using either a Node version manager or a Node installer. \fBWe strongly recommend using a Node version manager to install Node.js and npm.\fR We do not recommend using a Node installer, since the Node installation process installs npm in a directory with local permissions and can cause permissions errors when you run npm packages globally.
diff --git a/deps/npm/man/man5/npm-global.5 b/deps/npm/man/man5/npm-global.5
index 98825654a7ec7e..dfbffb819d79b6 100644
--- a/deps/npm/man/man5/npm-global.5
+++ b/deps/npm/man/man5/npm-global.5
@@ -1,6 +1,6 @@
-.TH "FOLDERS" "5" "February 2026" "NPM@11.9.0" ""
+.TH "FOLDERS" "5" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
-\fBfolders\fR - Folder Structures Used by npm
+\fBFolders\fR - Folder structures used by npm
.SS "Description"
.P
npm puts various things on your computer. That's its job.
diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5
index cc78b4c28906d1..bae7f6290e798a 100644
--- a/deps/npm/man/man5/npm-json.5
+++ b/deps/npm/man/man5/npm-json.5
@@ -1,4 +1,4 @@
-.TH "PACKAGE.JSON" "5" "February 2026" "NPM@11.9.0" ""
+.TH "PACKAGE.JSON" "5" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBpackage.json\fR - Specifics of npm's package.json handling
.SS "Description"
diff --git a/deps/npm/man/man5/npm-shrinkwrap-json.5 b/deps/npm/man/man5/npm-shrinkwrap-json.5
index 1410d2d58b57a8..4a6d0d279330a0 100644
--- a/deps/npm/man/man5/npm-shrinkwrap-json.5
+++ b/deps/npm/man/man5/npm-shrinkwrap-json.5
@@ -1,4 +1,4 @@
-.TH "NPM-SHRINKWRAP.JSON" "5" "February 2026" "NPM@11.9.0" ""
+.TH "NPM-SHRINKWRAP.JSON" "5" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBnpm-shrinkwrap.json\fR - A publishable lockfile
.SS "Description"
diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5
index 27ea3965d5b5c8..f788802907bef4 100644
--- a/deps/npm/man/man5/npmrc.5
+++ b/deps/npm/man/man5/npmrc.5
@@ -1,6 +1,6 @@
-.TH "NPMRC" "5" "February 2026" "NPM@11.9.0" ""
+.TH ".NPMRC" "5" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
-\fBnpmrc\fR - The npm config files
+\fB.npmrc\fR - The npm config files
.SS "Description"
.P
npm gets its config settings from the command line, environment variables, and \fBnpmrc\fR files.
@@ -99,6 +99,43 @@ The full list is:
.P
In order to scope these values, they must be prefixed by a URI fragment. If the credential is meant for any request to a registry on a single host, the scope may look like \fB//registry.npmjs.org/:\fR. If it must be scoped to a specific path on the host that path may also be provided, such as \fB//my-custom-registry.org/unique/path:\fR.
+.SS "Unsupported Custom Configuration Keys"
+.P
+Starting in npm v11.2.0, npm warns when unknown configuration keys are defined in \fB.npmrc\fR. In a future major version of npm, these unknown keys may no longer be accepted.
+.P
+Only configuration keys that npm officially supports are recognized. Custom keys intended for third-party tools (for example, \fBelectron-builder\fR) should not be placed in \fB.npmrc\fR.
+.P
+If you need package-level configuration for use in scripts, use the \fBconfig\fR field in your \fBpackage.json\fR instead:
+.P
+.RS 2
+.nf
+{
+ "name": "my-package",
+ "config": {
+ "mirror": "https://example.com/"
+ }
+}
+
+.fi
+.RE
+.P
+Values defined in \fBpackage.json#config\fR are exposed to scripts as environment variables prefixed with \fBnpm_package_config_\fR. For example:
+.P
+.RS 2
+.nf
+npm_package_config_mirror
+.fi
+.RE
+.P
+If you need to pass arguments to a script command, use \fB--\fR to separate npm arguments from script arguments:
+.P
+.RS 2
+.nf
+npm run build -- --customFlag
+.fi
+.RE
+.P
+Using environment variables is also recommended for cross-platform configuration instead of defining unsupported keys in \fB.npmrc\fR.
.P
.RS 2
.nf
@@ -120,6 +157,29 @@ _authToken=MYTOKEN
//somewhere-else.com/another/:_authToken=MYTOKEN2
.fi
.RE
+.SS "Custom / third-party config keys"
+.P
+npm only recognizes its own npm help "configuration options". If your \fB.npmrc\fR contains keys that are not part of npm's config definitions (for example, \fBelectron_mirror\fR or \fBsass_binary_site\fR), npm will emit a warning:
+.P
+.RS 2
+.nf
+warn Unknown user config "electron_mirror".
+This will stop working in the next major version of npm.
+.fi
+.RE
+.P
+These keys were historically tolerated but are not officially supported. A future major version of npm will treat unknown top-level keys as errors.
+.P
+Some tools (such as \fB@electron/get\fR or \fBnode-sass\fR) read their own configuration from environment variables or from \fB.npmrc\fR by convention. You can set these values as environment variables instead:
+.P
+.RS 2
+.nf
+export ELECTRON_MIRROR="https://mirrorexample.npmjs.org/mirrors/electron/"
+export ELECTRON_CUSTOM_DIR="{{ version }}"
+.fi
+.RE
+.P
+Environment variables are the most portable approach and work regardless of \fB.npmrc\fR format.
.SS "See also"
.RS 0
.IP \(bu 4
diff --git a/deps/npm/man/man5/package-json.5 b/deps/npm/man/man5/package-json.5
index cc78b4c28906d1..bae7f6290e798a 100644
--- a/deps/npm/man/man5/package-json.5
+++ b/deps/npm/man/man5/package-json.5
@@ -1,4 +1,4 @@
-.TH "PACKAGE.JSON" "5" "February 2026" "NPM@11.9.0" ""
+.TH "PACKAGE.JSON" "5" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBpackage.json\fR - Specifics of npm's package.json handling
.SS "Description"
diff --git a/deps/npm/man/man5/package-lock-json.5 b/deps/npm/man/man5/package-lock-json.5
index cac4c31904017a..d95af3d209fe33 100644
--- a/deps/npm/man/man5/package-lock-json.5
+++ b/deps/npm/man/man5/package-lock-json.5
@@ -1,4 +1,4 @@
-.TH "PACKAGE-LOCK.JSON" "5" "February 2026" "NPM@11.9.0" ""
+.TH "PACKAGE-LOCK.JSON" "5" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
\fBpackage-lock.json\fR - A manifestation of the manifest
.SS "Description"
diff --git a/deps/npm/man/man7/config.7 b/deps/npm/man/man7/config.7
index 4bb01187c4bd98..6fa65fc4a6cf9a 100644
--- a/deps/npm/man/man7/config.7
+++ b/deps/npm/man/man7/config.7
@@ -1,6 +1,6 @@
-.TH "CONFIG" "7" "February 2026" "NPM@11.9.0" ""
+.TH "CONFIG" "7" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
-\fBconfig\fR - More than you probably want to know about npm configuration
+\fBConfig\fR - About npm configuration
.SS "Description"
.P
This article details npm configuration in general. To learn about the \fBconfig\fR command, see npm help config.
@@ -258,6 +258,8 @@ Type: null or Date
If passed to \fBnpm install\fR, will rebuild the npm tree such that only versions that were available \fBon or before\fR the given date are installed. If there are no versions available for the current set of dependencies, the command will error.
.P
If the requested version is a \fBdist-tag\fR and the given tag does not pass the \fB--before\fR filter, the most recent version less than or equal to that tag will be used. For example, \fBfoo@latest\fR might install \fBfoo@1.2\fR even though \fBlatest\fR is \fB2.0\fR.
+.P
+This config cannot be used with: \fBmin-release-age\fR
.SS "\fBbin-links\fR"
.RS 0
.IP \(bu 4
@@ -1093,6 +1095,20 @@ Type: String
Commit message which is used by \fBnpm version\fR when creating version commit.
.P
Any "%s" in the message will be replaced with the version number.
+.SS "\fBmin-release-age\fR"
+.RS 0
+.IP \(bu 4
+Default: null
+.IP \(bu 4
+Type: null or Number
+.RE 0
+
+.P
+If set, npm will build the npm tree such that only versions that were available more than the given number of days ago will be installed. If there are no versions available for the current set of dependencies, the command will error.
+.P
+This flag is a complement to \fBbefore\fR, which accepts an exact date instead of a relative number of days.
+.P
+This config cannot be used with: \fBbefore\fR
.SS "\fBname\fR"
.RS 0
.IP \(bu 4
diff --git a/deps/npm/man/man7/dependency-selectors.7 b/deps/npm/man/man7/dependency-selectors.7
index 911720c8096a6e..6f81407c07bea7 100644
--- a/deps/npm/man/man7/dependency-selectors.7
+++ b/deps/npm/man/man7/dependency-selectors.7
@@ -1,6 +1,6 @@
-.TH "QUERYING" "7" "February 2026" "NPM@11.9.0" ""
+.TH "SELECTORS" "7" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
-\fBQuerying\fR - Dependency Selector Syntax & Querying
+\fBSelectors\fR - Dependency Selector Syntax & Querying
.SS "Description"
.P
The npm help query command exposes a new dependency selector syntax (informed by & respecting many aspects of the \fBCSS Selectors 4 Spec\fR \fI\(lahttps://dev.w3.org/csswg/selectors4/#relational\(ra\fR) which:
@@ -99,7 +99,7 @@ the term "dependencies" is in reference to any \fBNode\fR found in a \fBtree\fR
.IP \(bu 4
\fB:path()\fR \fBglob\fR \fI\(lahttps://www.npmjs.com/package/glob\(ra\fR matching based on dependencies path relative to the project
.IP \(bu 4
-\fB:type()\fR \fBbased on currently recognized types\fR \fI\(lahttps://github.com/npm/npm-package-arg#result-object\(ra\fR
+\fB:type()\fR \fBbased on currently recognized types\fR \fI\(lahttps://github.com/npm/npm-package-arg#result-object\(ra\fR. You can also use the aggregate type of \fBregistry\fR for any registry dependency (e.g. tag, version, range, alias)
.IP \(bu 4
\fB:outdated()\fR when a dependency is outdated
.IP \(bu 4
diff --git a/deps/npm/man/man7/developers.7 b/deps/npm/man/man7/developers.7
index 183d99855d3a44..888e6ab1e0f981 100644
--- a/deps/npm/man/man7/developers.7
+++ b/deps/npm/man/man7/developers.7
@@ -1,6 +1,6 @@
-.TH "DEVELOPERS" "7" "February 2026" "NPM@11.9.0" ""
+.TH "DEVELOPERS" "7" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
-\fBdevelopers\fR - Developer Guide
+\fBDevelopers\fR - Developer guide
.SS "Description"
.P
So, you've decided to use npm to develop (and maybe publish/deploy) your project.
diff --git a/deps/npm/man/man7/logging.7 b/deps/npm/man/man7/logging.7
index 90b8f5a4d0e81f..41b6b0b1799c12 100644
--- a/deps/npm/man/man7/logging.7
+++ b/deps/npm/man/man7/logging.7
@@ -1,6 +1,6 @@
-.TH "LOGGING" "7" "February 2026" "NPM@11.9.0" ""
+.TH "LOGGING" "7" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
-\fBLogging\fR - Why, What & How We Log
+\fBLogging\fR - Why, What & How we Log
.SS "Description"
.P
The \fBnpm\fR CLI has various mechanisms for showing different levels of information back to end-users for certain commands, configurations & environments.
diff --git a/deps/npm/man/man7/orgs.7 b/deps/npm/man/man7/orgs.7
index bd9ad434ebfc7f..dbebbe0bd09973 100644
--- a/deps/npm/man/man7/orgs.7
+++ b/deps/npm/man/man7/orgs.7
@@ -1,6 +1,6 @@
-.TH "ORGS" "7" "February 2026" "NPM@11.9.0" ""
+.TH "ORGANIZATIONS" "7" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
-\fBorgs\fR - Working with Teams & Orgs
+\fBOrganizations\fR - Working with teams & organizations
.SS "Description"
.P
There are three levels of org users:
diff --git a/deps/npm/man/man7/package-spec.7 b/deps/npm/man/man7/package-spec.7
index a781d999dbf9da..2e4c1e0ddf5035 100644
--- a/deps/npm/man/man7/package-spec.7
+++ b/deps/npm/man/man7/package-spec.7
@@ -1,6 +1,6 @@
-.TH "PACKAGE-SPEC" "7" "February 2026" "NPM@11.9.0" ""
+.TH "SPEC" "7" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
-\fBpackage-spec\fR - Package name specifier
+\fBspec\fR - Package name specifier
.SS "Description"
.P
Commands like \fBnpm install\fR and the dependency sections in the \fBpackage.json\fR use a package name specifier. This can be many different things that all refer to a "package". Examples include a package name, git url, tarball, or local directory. These will generally be referred to as \fB\fR in the help output for the npm commands that use this package name specifier.
diff --git a/deps/npm/man/man7/registry.7 b/deps/npm/man/man7/registry.7
index 73e1a90337b58a..7ea6e6ced1a911 100644
--- a/deps/npm/man/man7/registry.7
+++ b/deps/npm/man/man7/registry.7
@@ -1,6 +1,6 @@
-.TH "REGISTRY" "7" "February 2026" "NPM@11.9.0" ""
+.TH "REGISTRY" "7" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
-\fBregistry\fR - The JavaScript Package Registry
+\fBRegistry\fR - The JavaScript Package Registry
.SS "Description"
.P
To resolve packages by name and version, npm talks to a registry website that implements the CommonJS Package Registry specification for reading package info.
diff --git a/deps/npm/man/man7/removal.7 b/deps/npm/man/man7/removal.7
index f36cc64049494e..2e9b4ea94e581a 100644
--- a/deps/npm/man/man7/removal.7
+++ b/deps/npm/man/man7/removal.7
@@ -1,6 +1,6 @@
-.TH "REMOVAL" "7" "February 2026" "NPM@11.9.0" ""
+.TH "REMOVAL" "7" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
-\fBremoval\fR - Cleaning the Slate
+\fBRemoval\fR - Cleaning the slate
.SS "Synopsis"
.P
So sad to see you go.
diff --git a/deps/npm/man/man7/scope.7 b/deps/npm/man/man7/scope.7
index 7512e6f2c86c9d..70f869a059961e 100644
--- a/deps/npm/man/man7/scope.7
+++ b/deps/npm/man/man7/scope.7
@@ -1,6 +1,6 @@
-.TH "SCOPE" "7" "February 2026" "NPM@11.9.0" ""
+.TH "SCOPE" "7" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
-\fBscope\fR - Scoped packages
+\fBScope\fR - Scoped packages
.SS "Description"
.P
All npm packages have a name. Some package names also have a scope. A scope follows the usual rules for package names (URL-safe characters, no leading dots or underscores). When used in package names, scopes are preceded by an \fB@\fR symbol and followed by a slash, e.g.
diff --git a/deps/npm/man/man7/scripts.7 b/deps/npm/man/man7/scripts.7
index 188e535be58fdb..561bea6c784a7e 100644
--- a/deps/npm/man/man7/scripts.7
+++ b/deps/npm/man/man7/scripts.7
@@ -1,6 +1,6 @@
-.TH "SCRIPTS" "7" "February 2026" "NPM@11.9.0" ""
+.TH "SCRIPTS" "7" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
-\fBscripts\fR - How npm handles the "scripts" field
+\fBScripts\fR - How npm handles the "scripts" field
.SS "Description"
.P
The \fB"scripts"\fR property of your \fBpackage.json\fR file supports a number of built-in scripts and their preset life cycle events as well as arbitrary scripts. These all can be executed by running \fBnpm run \fR. \fIPre\fR and \fIpost\fR commands with matching names will be run for those as well (e.g. \fBpremyscript\fR, \fBmyscript\fR, \fBpostmyscript\fR). Scripts from dependencies can be run with \fBnpm explore -- npm run \fR.
diff --git a/deps/npm/man/man7/workspaces.7 b/deps/npm/man/man7/workspaces.7
index b719ae79d6fd2f..a8a8c4b0c8cedd 100644
--- a/deps/npm/man/man7/workspaces.7
+++ b/deps/npm/man/man7/workspaces.7
@@ -1,6 +1,6 @@
-.TH "WORKSPACES" "7" "February 2026" "NPM@11.9.0" ""
+.TH "WORKSPACES" "7" "February 2026" "NPM@11.11.0" ""
.SH "NAME"
-\fBworkspaces\fR - Working with workspaces
+\fBWorkspaces\fR - Working with workspaces
.SS "Description"
.P
\fBWorkspaces\fR is a generic term that refers to the set of features in the npm cli that provides support for managing multiple packages from your local file system from within a singular top-level, root package.
diff --git a/deps/npm/node_modules/encoding/LICENSE b/deps/npm/node_modules/@gar/promise-retry/LICENSE
similarity index 76%
rename from deps/npm/node_modules/encoding/LICENSE
rename to deps/npm/node_modules/@gar/promise-retry/LICENSE
index 33f5a9a366f605..db5e914de1f585 100644
--- a/deps/npm/node_modules/encoding/LICENSE
+++ b/deps/npm/node_modules/@gar/promise-retry/LICENSE
@@ -1,16 +1,19 @@
-Copyright (c) 2012-2014 Andris Reinman
+Copyright (c) 2014 IndigoUnited
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/deps/npm/node_modules/@gar/promise-retry/lib/index.js b/deps/npm/node_modules/@gar/promise-retry/lib/index.js
new file mode 100644
index 00000000000000..9033419793aaf6
--- /dev/null
+++ b/deps/npm/node_modules/@gar/promise-retry/lib/index.js
@@ -0,0 +1,28 @@
+const retry = require('retry')
+
+const isRetryError = (err) => err?.code === 'EPROMISERETRY' && Object.hasOwn(err, 'retried')
+
+async function promiseRetry (fn, options = {}) {
+ const operation = retry.operation(options)
+
+ return new Promise(function (resolve, reject) {
+ operation.attempt(async number => {
+ try {
+ const result = await fn(err => {
+ throw Object.assign(new Error('Retrying'), { code: 'EPROMISERETRY', retried: err })
+ }, number, operation)
+ return resolve(result)
+ } catch (err) {
+ if (isRetryError(err)) {
+ if (operation.retry(err.retried || new Error())) {
+ return
+ }
+ return reject(err.retried)
+ }
+ return reject(err)
+ }
+ })
+ })
+}
+
+module.exports = { promiseRetry }
diff --git a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/License b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/License
new file mode 100644
index 00000000000000..0b58de379fb308
--- /dev/null
+++ b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/License
@@ -0,0 +1,21 @@
+Copyright (c) 2011:
+Tim Koschützki (tim@debuggable.com)
+Felix Geisendörfer (felix@debuggable.com)
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
diff --git a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/example/dns.js b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/example/dns.js
new file mode 100644
index 00000000000000..446729b6f9af6b
--- /dev/null
+++ b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/example/dns.js
@@ -0,0 +1,31 @@
+var dns = require('dns');
+var retry = require('../lib/retry');
+
+function faultTolerantResolve(address, cb) {
+ var opts = {
+ retries: 2,
+ factor: 2,
+ minTimeout: 1 * 1000,
+ maxTimeout: 2 * 1000,
+ randomize: true
+ };
+ var operation = retry.operation(opts);
+
+ operation.attempt(function(currentAttempt) {
+ dns.resolve(address, function(err, addresses) {
+ if (operation.retry(err)) {
+ return;
+ }
+
+ cb(operation.mainError(), operation.errors(), addresses);
+ });
+ });
+}
+
+faultTolerantResolve('nodejs.org', function(err, errors, addresses) {
+ console.warn('err:');
+ console.log(err);
+
+ console.warn('addresses:');
+ console.log(addresses);
+});
\ No newline at end of file
diff --git a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/example/stop.js b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/example/stop.js
new file mode 100644
index 00000000000000..e1ceafeebafc51
--- /dev/null
+++ b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/example/stop.js
@@ -0,0 +1,40 @@
+var retry = require('../lib/retry');
+
+function attemptAsyncOperation(someInput, cb) {
+ var opts = {
+ retries: 2,
+ factor: 2,
+ minTimeout: 1 * 1000,
+ maxTimeout: 2 * 1000,
+ randomize: true
+ };
+ var operation = retry.operation(opts);
+
+ operation.attempt(function(currentAttempt) {
+ failingAsyncOperation(someInput, function(err, result) {
+
+ if (err && err.message === 'A fatal error') {
+ operation.stop();
+ return cb(err);
+ }
+
+ if (operation.retry(err)) {
+ return;
+ }
+
+ cb(operation.mainError(), operation.errors(), result);
+ });
+ });
+}
+
+attemptAsyncOperation('test input', function(err, errors, result) {
+ console.warn('err:');
+ console.log(err);
+
+ console.warn('result:');
+ console.log(result);
+});
+
+function failingAsyncOperation(input, cb) {
+ return setImmediate(cb.bind(null, new Error('A fatal error')));
+}
diff --git a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/index.js b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/index.js
new file mode 100644
index 00000000000000..ee62f3a112c28b
--- /dev/null
+++ b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/index.js
@@ -0,0 +1 @@
+module.exports = require('./lib/retry');
\ No newline at end of file
diff --git a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/lib/retry.js b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/lib/retry.js
new file mode 100644
index 00000000000000..5e85e79197d36c
--- /dev/null
+++ b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/lib/retry.js
@@ -0,0 +1,100 @@
+var RetryOperation = require('./retry_operation');
+
+exports.operation = function(options) {
+ var timeouts = exports.timeouts(options);
+ return new RetryOperation(timeouts, {
+ forever: options && (options.forever || options.retries === Infinity),
+ unref: options && options.unref,
+ maxRetryTime: options && options.maxRetryTime
+ });
+};
+
+exports.timeouts = function(options) {
+ if (options instanceof Array) {
+ return [].concat(options);
+ }
+
+ var opts = {
+ retries: 10,
+ factor: 2,
+ minTimeout: 1 * 1000,
+ maxTimeout: Infinity,
+ randomize: false
+ };
+ for (var key in options) {
+ opts[key] = options[key];
+ }
+
+ if (opts.minTimeout > opts.maxTimeout) {
+ throw new Error('minTimeout is greater than maxTimeout');
+ }
+
+ var timeouts = [];
+ for (var i = 0; i < opts.retries; i++) {
+ timeouts.push(this.createTimeout(i, opts));
+ }
+
+ if (options && options.forever && !timeouts.length) {
+ timeouts.push(this.createTimeout(i, opts));
+ }
+
+ // sort the array numerically ascending
+ timeouts.sort(function(a,b) {
+ return a - b;
+ });
+
+ return timeouts;
+};
+
+exports.createTimeout = function(attempt, opts) {
+ var random = (opts.randomize)
+ ? (Math.random() + 1)
+ : 1;
+
+ var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));
+ timeout = Math.min(timeout, opts.maxTimeout);
+
+ return timeout;
+};
+
+exports.wrap = function(obj, options, methods) {
+ if (options instanceof Array) {
+ methods = options;
+ options = null;
+ }
+
+ if (!methods) {
+ methods = [];
+ for (var key in obj) {
+ if (typeof obj[key] === 'function') {
+ methods.push(key);
+ }
+ }
+ }
+
+ for (var i = 0; i < methods.length; i++) {
+ var method = methods[i];
+ var original = obj[method];
+
+ obj[method] = function retryWrapper(original) {
+ var op = exports.operation(options);
+ var args = Array.prototype.slice.call(arguments, 1);
+ var callback = args.pop();
+
+ args.push(function(err) {
+ if (op.retry(err)) {
+ return;
+ }
+ if (err) {
+ arguments[0] = op.mainError();
+ }
+ callback.apply(this, arguments);
+ });
+
+ op.attempt(function() {
+ original.apply(obj, args);
+ });
+ }.bind(obj, original);
+ obj[method].options = options;
+ }
+};
diff --git a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/lib/retry_operation.js b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/lib/retry_operation.js
new file mode 100644
index 00000000000000..105ce72b2be8e1
--- /dev/null
+++ b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/lib/retry_operation.js
@@ -0,0 +1,162 @@
+function RetryOperation(timeouts, options) {
+ // Compatibility for the old (timeouts, retryForever) signature
+ if (typeof options === 'boolean') {
+ options = { forever: options };
+ }
+
+ this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));
+ this._timeouts = timeouts;
+ this._options = options || {};
+ this._maxRetryTime = options && options.maxRetryTime || Infinity;
+ this._fn = null;
+ this._errors = [];
+ this._attempts = 1;
+ this._operationTimeout = null;
+ this._operationTimeoutCb = null;
+ this._timeout = null;
+ this._operationStart = null;
+ this._timer = null;
+
+ if (this._options.forever) {
+ this._cachedTimeouts = this._timeouts.slice(0);
+ }
+}
+module.exports = RetryOperation;
+
+RetryOperation.prototype.reset = function() {
+ this._attempts = 1;
+ this._timeouts = this._originalTimeouts.slice(0);
+}
+
+RetryOperation.prototype.stop = function() {
+ if (this._timeout) {
+ clearTimeout(this._timeout);
+ }
+ if (this._timer) {
+ clearTimeout(this._timer);
+ }
+
+ this._timeouts = [];
+ this._cachedTimeouts = null;
+};
+
+RetryOperation.prototype.retry = function(err) {
+ if (this._timeout) {
+ clearTimeout(this._timeout);
+ }
+
+ if (!err) {
+ return false;
+ }
+ var currentTime = new Date().getTime();
+ if (err && currentTime - this._operationStart >= this._maxRetryTime) {
+ this._errors.push(err);
+ this._errors.unshift(new Error('RetryOperation timeout occurred'));
+ return false;
+ }
+
+ this._errors.push(err);
+
+ var timeout = this._timeouts.shift();
+ if (timeout === undefined) {
+ if (this._cachedTimeouts) {
+ // retry forever, only keep last error
+ this._errors.splice(0, this._errors.length - 1);
+ timeout = this._cachedTimeouts.slice(-1);
+ } else {
+ return false;
+ }
+ }
+
+ var self = this;
+ this._timer = setTimeout(function() {
+ self._attempts++;
+
+ if (self._operationTimeoutCb) {
+ self._timeout = setTimeout(function() {
+ self._operationTimeoutCb(self._attempts);
+ }, self._operationTimeout);
+
+ if (self._options.unref) {
+ self._timeout.unref();
+ }
+ }
+
+ self._fn(self._attempts);
+ }, timeout);
+
+ if (this._options.unref) {
+ this._timer.unref();
+ }
+
+ return true;
+};
+
+RetryOperation.prototype.attempt = function(fn, timeoutOps) {
+ this._fn = fn;
+
+ if (timeoutOps) {
+ if (timeoutOps.timeout) {
+ this._operationTimeout = timeoutOps.timeout;
+ }
+ if (timeoutOps.cb) {
+ this._operationTimeoutCb = timeoutOps.cb;
+ }
+ }
+
+ var self = this;
+ if (this._operationTimeoutCb) {
+ this._timeout = setTimeout(function() {
+ self._operationTimeoutCb();
+ }, self._operationTimeout);
+ }
+
+ this._operationStart = new Date().getTime();
+
+ this._fn(this._attempts);
+};
+
+RetryOperation.prototype.try = function(fn) {
+ console.log('Using RetryOperation.try() is deprecated');
+ this.attempt(fn);
+};
+
+RetryOperation.prototype.start = function(fn) {
+ console.log('Using RetryOperation.start() is deprecated');
+ this.attempt(fn);
+};
+
+RetryOperation.prototype.start = RetryOperation.prototype.try;
+
+RetryOperation.prototype.errors = function() {
+ return this._errors;
+};
+
+RetryOperation.prototype.attempts = function() {
+ return this._attempts;
+};
+
+RetryOperation.prototype.mainError = function() {
+ if (this._errors.length === 0) {
+ return null;
+ }
+
+ var counts = {};
+ var mainError = null;
+ var mainErrorCount = 0;
+
+ for (var i = 0; i < this._errors.length; i++) {
+ var error = this._errors[i];
+ var message = error.message;
+ var count = (counts[message] || 0) + 1;
+
+ counts[message] = count;
+
+ if (count >= mainErrorCount) {
+ mainError = error;
+ mainErrorCount = count;
+ }
+ }
+
+ return mainError;
+};
diff --git a/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/package.json b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/package.json
new file mode 100644
index 00000000000000..48f35e8cff2859
--- /dev/null
+++ b/deps/npm/node_modules/@gar/promise-retry/node_modules/retry/package.json
@@ -0,0 +1,36 @@
+{
+ "author": "Tim Koschützki (http://debuggable.com/)",
+ "name": "retry",
+ "description": "Abstraction for exponential and custom retry strategies for failed operations.",
+ "license": "MIT",
+ "version": "0.13.1",
+ "homepage": "https://github.com/tim-kos/node-retry",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/tim-kos/node-retry.git"
+ },
+ "files": [
+ "lib",
+ "example"
+ ],
+ "directories": {
+ "lib": "./lib"
+ },
+ "main": "index.js",
+ "engines": {
+ "node": ">= 4"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "fake": "0.2.0",
+ "istanbul": "^0.4.5",
+ "tape": "^4.8.0"
+ },
+ "scripts": {
+ "test": "./node_modules/.bin/istanbul cover ./node_modules/tape/bin/tape ./test/integration/*.js",
+ "release:major": "env SEMANTIC=major npm run release",
+ "release:minor": "env SEMANTIC=minor npm run release",
+ "release:patch": "env SEMANTIC=patch npm run release",
+ "release": "npm version ${SEMANTIC:-patch} -m \"Release %s\" && git push && git push --tags && npm publish"
+ }
+}
diff --git a/deps/npm/node_modules/@gar/promise-retry/package.json b/deps/npm/node_modules/@gar/promise-retry/package.json
new file mode 100644
index 00000000000000..0bd8e31a2aa021
--- /dev/null
+++ b/deps/npm/node_modules/@gar/promise-retry/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "@gar/promise-retry",
+ "version": "1.0.2",
+ "description": "Retries a function that returns a promise, leveraging the power of the retry module.",
+ "main": "./lib/index.js",
+ "files": [
+ "lib"
+ ],
+ "type": "commonjs",
+ "exports": {
+ ".": [
+ {
+ "default": "./lib/index.js",
+ "types": "./lib/index.d.ts"
+ },
+ "./lib/index.js"
+ ]
+ },
+ "scripts": {
+ "lint": "npx standard",
+ "lint:fix": "npx standard --fix",
+ "test": "node --test --experimental-test-coverage --test-coverage-lines=100 --test-coverage-functions=100 --test-coverage-branches=100",
+ "typelint": "npx -p typescript tsc ./lib/index.d.ts",
+ "posttest": "npm run lint",
+ "postlint": "npm run typelint"
+ },
+ "bugs": {
+ "url": "https://github.com/wraithgar/node-promise-retry/issues/"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/wraithgar/node-promise-retry.git"
+ },
+ "keywords": [
+ "retry",
+ "promise",
+ "backoff",
+ "repeat",
+ "replay"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "retry": "^0.13.1"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+}
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js
index b4319fab6bd37c..a256b79049eba6 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js
@@ -339,7 +339,8 @@ module.exports = cls => class IdealTreeBuilder extends cls {
filter: node => node,
visit: node => {
for (const edge of node.edgesOut.values()) {
- if ((!edge.to && edge.type !== 'peerOptional') || !edge.valid) {
+ const skipPeerOptional = edge.type === 'peerOptional' && this.options.save === false
+ if (!skipPeerOptional && (!edge.to || !edge.valid)) {
this.#depsQueue.push(node)
break // no need to continue the loop after the first hit
}
@@ -966,9 +967,17 @@ This is a one-time fix-up, please be patient...
continue
}
const { from, valid, peerConflicted } = edgeIn
- if (!peerConflicted && !valid && !this.#depsSeen.has(from)) {
- this.addTracker('idealTree', from.name, from.location)
- this.#depsQueue.push(edgeIn.from)
+ if (!peerConflicted && !valid) {
+ if (this.#depsSeen.has(from) && this.options.save) {
+ // Re-queue already-processed nodes when a newly placed dep creates an invalid edge during npm install (save=true).
+ // This handles the case where a peerOptional dep was valid (missing) when the node was first processed, but becomes invalid when the dep is later placed by another path with a version that doesn't satisfy the peer spec.
+ // See npm/cli#8726.
+ this.#depsSeen.delete(from)
+ this.#depsQueue.push(from)
+ } else if (!this.#depsSeen.has(from)) {
+ this.addTracker('idealTree', from.name, from.location)
+ this.#depsQueue.push(from)
+ }
}
}
} else {
@@ -1165,9 +1174,13 @@ This is a one-time fix-up, please be patient...
continue
}
- // If the edge has an error, there's a problem.
+ // If the edge has an error, there's a problem, unless it's peerOptional and we're not saving (e.g. npm ci), in which case we trust the lockfile and skip re-resolution.
+ // When saving (npm install), peerOptional invalid edges ARE treated as problems so the lockfile gets fixed.
+ // See npm/cli#8726.
if (!edge.valid) {
- problems.push(edge)
+ if (edge.type !== 'peerOptional' || this.options.save !== false) {
+ problems.push(edge)
+ }
continue
}
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js
index 9822645d2527c0..8da64ce965b7ea 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js
@@ -105,7 +105,7 @@ module.exports = cls => class IsolatedReifier extends cls {
node.root.path,
'node_modules',
'.store',
- `${node.name}@${node.version}`
+ `${node.packageName}@${node.version}`
)
mkdirSync(dir, { recursive: true })
// TODO this approach feels wrong
@@ -145,6 +145,21 @@ module.exports = cls => class IsolatedReifier extends cls {
const optionalDeps = edges.filter(e => e.optional).map(e => e.to.target)
const nonOptionalDeps = edges.filter(e => !e.optional).map(e => e.to.target)
+ // When legacyPeerDeps is enabled, peer dep edges are not created on the
+ // node. Resolve them from the tree so they get symlinked in the store.
+ const peerDeps = node.package.peerDependencies
+ if (peerDeps && node.legacyPeerDeps) {
+ const edgeNames = new Set(edges.map(e => e.name))
+ for (const peerName of Object.keys(peerDeps)) {
+ if (!edgeNames.has(peerName)) {
+ const resolved = node.resolve(peerName)
+ if (resolved && resolved !== node && !resolved.inert) {
+ nonOptionalDeps.push(resolved)
+ }
+ }
+ }
+ }
+
result.localDependencies = await Promise.all(nonOptionalDeps.filter(n => n.isWorkspace).map(this.workspaceProxyMemo))
result.externalDependencies = await Promise.all(nonOptionalDeps.filter(n => !n.isWorkspace && !n.inert).map(this.externalProxyMemo))
result.externalOptionalDependencies = await Promise.all(optionalDeps.filter(n => !n.inert).map(this.externalProxyMemo))
@@ -155,7 +170,9 @@ module.exports = cls => class IsolatedReifier extends cls {
]
result.root = this.rootNode
result.id = this.counter++
- result.name = node.name
+ /* istanbul ignore next - packageName is always set for real packages */
+ result.name = result.isWorkspace ? (node.packageName || node.name) : node.name
+ result.packageName = node.packageName || node.name
result.package = { ...node.package }
result.package.bundleDependencies = undefined
result.hasInstallScript = node.hasInstallScript
@@ -228,7 +245,7 @@ module.exports = cls => class IsolatedReifier extends cls {
getChildren: node => node.dependencies,
filter: node => node,
visit: node => {
- branch.push(`${node.name}@${node.version}`)
+ branch.push(`${node.packageName}@${node.version}`)
deps.push(`${branch.join('->')}::${node.resolved}`)
},
leave: () => {
@@ -246,7 +263,7 @@ module.exports = cls => class IsolatedReifier extends cls {
}
const getKey = (idealTreeNode) => {
- return `${idealTreeNode.name}@${idealTreeNode.version}-${treeHash(idealTreeNode)}`
+ return `${idealTreeNode.packageName}@${idealTreeNode.version}-${treeHash(idealTreeNode)}`
}
const root = {
@@ -301,7 +318,7 @@ module.exports = cls => class IsolatedReifier extends cls {
isProjectRoot: false,
isTop: false,
location,
- name: node.name,
+ name: node.packageName || node.name,
optional: node.optional,
top: { path: proxiedIdealTree.root.localPath },
children: [],
@@ -335,7 +352,7 @@ module.exports = cls => class IsolatedReifier extends cls {
return
}
processed.add(key)
- const location = join('node_modules', '.store', key, 'node_modules', c.name)
+ const location = join('node_modules', '.store', key, 'node_modules', c.packageName)
generateChild(c, location, c.package, true)
})
bundledTree.nodes.forEach(node => {
@@ -361,13 +378,17 @@ module.exports = cls => class IsolatedReifier extends cls {
let from, nmFolder
if (externalEdge) {
- const fromLocation = join('node_modules', '.store', key, 'node_modules', node.name)
+ const fromLocation = join('node_modules', '.store', key, 'node_modules', node.packageName)
from = root.children.find(c => c.location === fromLocation)
nmFolder = join('node_modules', '.store', key, 'node_modules')
} else {
from = node.isProjectRoot ? root : root.fsChildren.find(c => c.location === node.localLocation)
nmFolder = join(node.localLocation, 'node_modules')
}
+ /* istanbul ignore next - strict-peer-deps can exclude nodes from the tree */
+ if (!from) {
+ return
+ }
const processDeps = (dep, optional, external) => {
optional = !!optional
@@ -379,12 +400,16 @@ module.exports = cls => class IsolatedReifier extends cls {
let target
if (external) {
- const toLocation = join('node_modules', '.store', toKey, 'node_modules', dep.name)
+ const toLocation = join('node_modules', '.store', toKey, 'node_modules', dep.packageName)
target = root.children.find(c => c.location === toLocation)
} else {
target = root.fsChildren.find(c => c.location === dep.localLocation)
}
// TODO: we should no-op is an edge has already been created with the same fromKey and toKey
+ /* istanbul ignore next - strict-peer-deps can exclude nodes from the tree */
+ if (!target) {
+ return
+ }
binNames.forEach(bn => {
target.binPaths.push(join(from.realpath, 'node_modules', '.bin', bn))
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js
index eef557208208d9..317cfc1df8a728 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js
@@ -295,12 +295,12 @@ module.exports = cls => class Builder extends cls {
devOptional,
package: pkg,
location,
- isStoreLink,
} = node.target
// skip any that we know we'll be deleting
- // or storeLinks
- if (this[_trashList].has(path) || isStoreLink) {
+ // or links to store entries (their scripts run on the store
+ // entry itself, not through the link)
+ if (this[_trashList].has(path) || (node.isLink && node.target?.isInStore)) {
return
}
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js
index defbdb1d255b56..5f376e94a4cecf 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js
@@ -422,7 +422,7 @@ module.exports = cls => class Reifier extends cls {
if (includeWorkspaces) {
// add all ws nodes to filterNodes
for (const ws of this.options.workspaces) {
- const ideal = this.idealTree.children.get(ws)
+ const ideal = this.idealTree.children.get && this.idealTree.children.get(ws)
if (ideal) {
filterNodes.push(ideal)
}
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/dep-valid.js b/deps/npm/node_modules/@npmcli/arborist/lib/dep-valid.js
index 6571c0b5fae6c9..bee7ce2768c4d9 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/dep-valid.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/dep-valid.js
@@ -82,7 +82,7 @@ const depValid = (child, requested, requestor) => {
const resRepo = npa(child.resolved || '')
const resHost = resRepo.hosted
const reqHost = requested.hosted
- const reqCommit = /^[a-fA-F0-9]{40}$/.test(requested.gitCommittish || '')
+ const reqCommit = /^[a-fA-F0-9]{40,64}$/.test(requested.gitCommittish || '')
const nc = { noCommittish: !reqCommit }
if (!resHost) {
if (resRepo.fetchSpec !== requested.fetchSpec) {
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/query-selector-all.js b/deps/npm/node_modules/@npmcli/arborist/lib/query-selector-all.js
index db0d8ea2edb113..71cfee736d9ccb 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/query-selector-all.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/query-selector-all.js
@@ -427,11 +427,19 @@ class Results {
if (!this.currentAstNode.typeValue) {
return this.initialItems
}
+ // TODO this differs subtly with `:type()` because it now iterates on edgesIn, which means extraneous deps won't show up
+ // note how "@npmcli/abbrev@2.0.0-beta.45" is in the `:type()` results in the test but not in any of the other results.
return this.initialItems
.flatMap(node => {
const found = []
+ const { typeValue } = this.currentAstNode
for (const edge of node.edgesIn) {
- if (npa(`${edge.name}@${edge.spec}`).type === this.currentAstNode.typeValue) {
+ const parsedArg = npa(`${edge.name}@${edge.spec}`)
+ if (typeValue === 'registry') {
+ if (parsedArg.registry) {
+ found.push(edge.to)
+ }
+ } else if (parsedArg.type === typeValue) {
found.push(edge.to)
}
}
diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/shrinkwrap.js b/deps/npm/node_modules/@npmcli/arborist/lib/shrinkwrap.js
index 8313e05d61c376..751c549fed63bc 100644
--- a/deps/npm/node_modules/@npmcli/arborist/lib/shrinkwrap.js
+++ b/deps/npm/node_modules/@npmcli/arborist/lib/shrinkwrap.js
@@ -95,6 +95,7 @@ const pkgMetaKeys = [
'engines',
'os',
'cpu',
+ 'libc',
'_integrity',
'license',
'_hasShrinkwrap',
diff --git a/deps/npm/node_modules/@npmcli/arborist/package.json b/deps/npm/node_modules/@npmcli/arborist/package.json
index 4f4df390ffedd0..3b49201fe966b8 100644
--- a/deps/npm/node_modules/@npmcli/arborist/package.json
+++ b/deps/npm/node_modules/@npmcli/arborist/package.json
@@ -1,6 +1,6 @@
{
"name": "@npmcli/arborist",
- "version": "9.2.0",
+ "version": "9.4.0",
"description": "Manage node_modules trees",
"dependencies": {
"@isaacs/string-locale-compare": "^1.1.0",
@@ -40,7 +40,7 @@
"devDependencies": {
"@npmcli/eslint-config": "^5.0.1",
"@npmcli/mock-registry": "^1.0.0",
- "@npmcli/template-oss": "4.25.1",
+ "@npmcli/template-oss": "4.29.0",
"benchmark": "^2.1.4",
"minify-registry-metadata": "^4.0.0",
"nock": "^13.3.3",
@@ -92,7 +92,7 @@
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.25.1",
+ "version": "4.29.0",
"content": "../../scripts/template-oss/index.js"
}
}
diff --git a/deps/npm/node_modules/@npmcli/config/lib/definitions/definition.js b/deps/npm/node_modules/@npmcli/config/lib/definitions/definition.js
index 26ba0c0bc14b9a..c151506b244763 100644
--- a/deps/npm/node_modules/@npmcli/config/lib/definitions/definition.js
+++ b/deps/npm/node_modules/@npmcli/config/lib/definitions/definition.js
@@ -22,6 +22,8 @@ const allowed = [
'typeDescription',
'usage',
'envExport',
+ 'alias',
+ 'required',
]
const {
diff --git a/deps/npm/node_modules/@npmcli/config/lib/definitions/definitions.js b/deps/npm/node_modules/@npmcli/config/lib/definitions/definitions.js
index 5f86c3e94fed48..0de8142d3ca77b 100644
--- a/deps/npm/node_modules/@npmcli/config/lib/definitions/definitions.js
+++ b/deps/npm/node_modules/@npmcli/config/lib/definitions/definitions.js
@@ -246,6 +246,7 @@ const definitions = {
default: null,
hint: '',
type: [null, Date],
+ exclusive: ['min-release-age'],
description: `
If passed to \`npm install\`, will rebuild the npm tree such that only
versions that were available **on or before** the given date are
@@ -1347,6 +1348,28 @@ const definitions = {
`,
flatten,
}),
+ 'min-release-age': new Definition('min-release-age', {
+ default: null,
+ hint: '',
+ type: [null, Number],
+ exclusive: ['before'],
+ description: `
+ If set, npm will build the npm tree such that only versions that were
+ available more than the given number of days ago will be installed. If
+ there are no versions available for the current set of dependencies, the
+ command will error.
+
+ This flag is a complement to \`before\`, which accepts an exact date
+ instead of a relative number of days.
+ `,
+ flatten: (key, obj, flatOptions) => {
+ if (obj['min-release-age'] !== null) {
+ flatOptions.before = new Date(Date.now() - (86400000 * obj['min-release-age']))
+ obj.before = flatOptions.before
+ delete obj['min-release-age']
+ }
+ },
+ }),
'node-gyp': new Definition('node-gyp', {
default: (() => {
try {
diff --git a/deps/npm/node_modules/@npmcli/config/lib/index.js b/deps/npm/node_modules/@npmcli/config/lib/index.js
index 0ad716ccb069ff..8520a02b6ed77c 100644
--- a/deps/npm/node_modules/@npmcli/config/lib/index.js
+++ b/deps/npm/node_modules/@npmcli/config/lib/index.js
@@ -59,6 +59,7 @@ class Config {
#flatten
// populated the first time we flatten the object
#flatOptions = null
+ #warnings = []
static get typeDefs () {
return typeDefs
@@ -78,20 +79,13 @@ class Config {
execPath = process.execPath,
cwd = process.cwd(),
excludeNpmCwd = false,
+ warn = true,
}) {
this.nerfDarts = nerfDarts
this.definitions = definitions
// turn the definitions into nopt's weirdo syntax
- const types = {}
- const defaults = {}
- this.deprecated = {}
- for (const [key, def] of Object.entries(definitions)) {
- defaults[key] = def.default
- types[key] = def.type
- if (def.deprecated) {
- this.deprecated[key] = def.deprecated.trim().replace(/\n +/, '\n')
- }
- }
+ const { types, defaults, deprecated } = getTypesFromDefinitions(definitions)
+ this.deprecated = deprecated
this.#flatten = flatten
this.types = types
@@ -137,6 +131,7 @@ class Config {
}
this.#loaded = false
+ this.warn = warn
}
get list () {
@@ -369,7 +364,7 @@ class Config {
}
nopt.invalidHandler = (k, val, type) =>
this.invalidHandler(k, val, type, 'command line options', 'cli')
- nopt.unknownHandler = this.unknownHandler
+ nopt.unknownHandler = (k, next) => this.unknownHandler(k, next)
nopt.abbrevHandler = this.abbrevHandler
const conf = nopt(this.types, this.shorthands, this.argv)
nopt.invalidHandler = null
@@ -545,7 +540,7 @@ class Config {
unknownHandler (key, next) {
if (next) {
- log.warn(`"${next}" is being parsed as a normal command line argument.`)
+ this.queueWarning(`unknown:${next}`, `"${next}" is being parsed as a normal command line argument.`)
}
}
@@ -613,13 +608,16 @@ class Config {
if (internalEnv.includes(key)) {
return
}
+ const hint = where !== 'cli'
+ ? ' See `npm help npmrc` for supported config options.'
+ : ''
if (!key.includes(':')) {
- log.warn(`Unknown ${where} config "${where === 'cli' ? '--' : ''}${key}". This will stop working in the next major version of npm.`)
+ this.queueWarning(key, `Unknown ${where} config "${where === 'cli' ? '--' : ''}${key}". This will stop working in the next major version of npm.${hint}`)
return
}
const baseKey = key.split(':').pop()
if (!this.definitions[baseKey] && !this.nerfDarts.includes(baseKey)) {
- log.warn(`Unknown ${where} config "${baseKey}" (${key}). This will stop working in the next major version of npm.`)
+ this.queueWarning(baseKey, `Unknown ${where} config "${baseKey}" (${key}). This will stop working in the next major version of npm.${hint}`)
}
}
}
@@ -923,6 +921,35 @@ class Config {
setEnvs () {
setEnvs(this)
}
+
+ removeWarning (key) {
+ this.#warnings = this.#warnings.filter(w => w.type !== key)
+ }
+
+ getUnknownPositionals () {
+ return this.#warnings
+ .filter(w => w.type.startsWith('unknown:'))
+ .map(w => w.type.slice('unknown:'.length))
+ }
+
+ removeUnknownPositional (value) {
+ this.removeWarning(`unknown:${value}`)
+ }
+
+ queueWarning (type, ...args) {
+ if (!this.warn) {
+ this.#warnings.push({ type, args })
+ } else {
+ log.warn(...args)
+ }
+ }
+
+ logWarnings () {
+ for (const warning of this.#warnings) {
+ log.warn(...warning.args)
+ }
+ this.#warnings = []
+ }
}
const _loadError = Symbol('loadError')
@@ -980,4 +1007,21 @@ class ConfigData {
}
}
+const getTypesFromDefinitions = (definitions) => {
+ const types = {}
+ const defaults = {}
+ const deprecated = {}
+
+ for (const [key, def] of Object.entries(definitions)) {
+ defaults[key] = def.default
+ types[key] = def.type
+ if (def.deprecated) {
+ deprecated[key] = def.deprecated.trim().replace(/\n +/, '\n')
+ }
+ }
+
+ return { types, defaults, deprecated }
+}
+
module.exports = Config
+module.exports.getTypesFromDefinitions = getTypesFromDefinitions
diff --git a/deps/npm/node_modules/@npmcli/config/package.json b/deps/npm/node_modules/@npmcli/config/package.json
index b11a01a8ba8137..980a53d738b48d 100644
--- a/deps/npm/node_modules/@npmcli/config/package.json
+++ b/deps/npm/node_modules/@npmcli/config/package.json
@@ -1,6 +1,6 @@
{
"name": "@npmcli/config",
- "version": "10.6.0",
+ "version": "10.7.1",
"files": [
"bin/",
"lib/"
@@ -33,7 +33,7 @@
"devDependencies": {
"@npmcli/eslint-config": "^5.0.1",
"@npmcli/mock-globals": "^1.0.0",
- "@npmcli/template-oss": "4.25.1",
+ "@npmcli/template-oss": "4.29.0",
"tap": "^16.3.8"
},
"dependencies": {
@@ -51,7 +51,7 @@
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.25.1",
+ "version": "4.29.0",
"content": "../../scripts/template-oss/index.js"
}
}
diff --git a/deps/npm/node_modules/@npmcli/git/lib/spawn.js b/deps/npm/node_modules/@npmcli/git/lib/spawn.js
index 03c1cbde215477..e4abd420098eec 100644
--- a/deps/npm/node_modules/@npmcli/git/lib/spawn.js
+++ b/deps/npm/node_modules/@npmcli/git/lib/spawn.js
@@ -1,5 +1,5 @@
const spawn = require('@npmcli/promise-spawn')
-const promiseRetry = require('promise-retry')
+const { promiseRetry } = require('@gar/promise-retry')
const { log } = require('proc-log')
const makeError = require('./make-error.js')
const makeOpts = require('./opts.js')
diff --git a/deps/npm/node_modules/@npmcli/git/package.json b/deps/npm/node_modules/@npmcli/git/package.json
index 78d077513dd81a..6a8083ba80df81 100644
--- a/deps/npm/node_modules/@npmcli/git/package.json
+++ b/deps/npm/node_modules/@npmcli/git/package.json
@@ -1,6 +1,6 @@
{
"name": "@npmcli/git",
- "version": "7.0.1",
+ "version": "7.0.2",
"main": "lib/index.js",
"files": [
"bin/",
@@ -38,12 +38,12 @@
"tap": "^16.0.1"
},
"dependencies": {
+ "@gar/promise-retry": "^1.0.0",
"@npmcli/promise-spawn": "^9.0.0",
"ini": "^6.0.0",
"lru-cache": "^11.2.1",
"npm-pick-manifest": "^11.0.1",
"proc-log": "^6.0.0",
- "promise-retry": "^2.0.1",
"semver": "^7.3.5",
"which": "^6.0.0"
},
diff --git a/deps/npm/node_modules/@npmcli/package-json/lib/license.js b/deps/npm/node_modules/@npmcli/package-json/lib/license.js
new file mode 100644
index 00000000000000..6428e83730550e
--- /dev/null
+++ b/deps/npm/node_modules/@npmcli/package-json/lib/license.js
@@ -0,0 +1,27 @@
+// This is an implementation of the validForNewPackage flag in validate-npm-package-license, which is no longer maintained
+
+const parse = require('spdx-expression-parse')
+
+function usesLicenseRef (ast) {
+ if (Object.hasOwn(ast, 'license')) {
+ return ast.license.startsWith('LicenseRef') || ast.license.startsWith('DocumentRef')
+ } else {
+ return usesLicenseRef(ast.left) || usesLicenseRef(ast.right)
+ }
+}
+
+// license should be a valid SPDX license expression (without "LicenseRef"), "UNLICENSED", or "SEE LICENSE IN "
+module.exports = function licenseValidForNewPackage (argument) {
+ if (argument === 'UNLICENSED' || argument === 'UNLICENCED') {
+ return true
+ }
+ if (/^SEE LICEN[CS]E IN ./.test(argument)) {
+ return true
+ }
+ try {
+ const ast = parse(argument)
+ return !usesLicenseRef(ast)
+ } catch {
+ return false
+ }
+}
diff --git a/deps/npm/node_modules/@npmcli/package-json/lib/normalize-data.js b/deps/npm/node_modules/@npmcli/package-json/lib/normalize-data.js
index 1c1a36984c5e9b..7bd86b5f5bb64c 100644
--- a/deps/npm/node_modules/@npmcli/package-json/lib/normalize-data.js
+++ b/deps/npm/node_modules/@npmcli/package-json/lib/normalize-data.js
@@ -2,7 +2,7 @@
const { URL } = require('node:url')
const hostedGitInfo = require('hosted-git-info')
-const validateLicense = require('validate-npm-package-license')
+const validateLicense = require('./license.js')
const typos = {
dependancies: 'dependencies',
@@ -230,7 +230,7 @@ function normalizeData (data, changes) {
changes?.push('No license field.')
} else if (typeof (license) !== 'string' || license.length < 1 || license.trim() === '') {
changes?.push('license should be a valid SPDX license expression')
- } else if (!validateLicense(license).validForNewPackages) {
+ } else if (!validateLicense(license)) {
changes?.push('license should be a valid SPDX license expression')
}
// fixPeople
diff --git a/deps/npm/node_modules/@npmcli/package-json/package.json b/deps/npm/node_modules/@npmcli/package-json/package.json
index 31aa68a6654dce..fe46d77edcb4d5 100644
--- a/deps/npm/node_modules/@npmcli/package-json/package.json
+++ b/deps/npm/node_modules/@npmcli/package-json/package.json
@@ -1,6 +1,6 @@
{
"name": "@npmcli/package-json",
- "version": "7.0.4",
+ "version": "7.0.5",
"description": "Programmatic API to update package.json",
"keywords": [
"npm",
@@ -35,11 +35,11 @@
"json-parse-even-better-errors": "^5.0.0",
"proc-log": "^6.0.0",
"semver": "^7.5.3",
- "validate-npm-package-license": "^3.0.4"
+ "spdx-expression-parse": "^4.0.0"
},
"devDependencies": {
"@npmcli/eslint-config": "^6.0.0",
- "@npmcli/template-oss": "4.28.0",
+ "@npmcli/template-oss": "4.28.1",
"tap": "^16.0.1"
},
"engines": {
@@ -47,7 +47,7 @@
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.28.0",
+ "version": "4.28.1",
"publish": "true"
},
"tap": {
diff --git a/deps/npm/node_modules/ansi-regex/index.js b/deps/npm/node_modules/ansi-regex/index.js
deleted file mode 100644
index 616ff837d3ff01..00000000000000
--- a/deps/npm/node_modules/ansi-regex/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict';
-
-module.exports = ({onlyFirst = false} = {}) => {
- const pattern = [
- '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)',
- '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'
- ].join('|');
-
- return new RegExp(pattern, onlyFirst ? undefined : 'g');
-};
diff --git a/deps/npm/node_modules/ansi-regex/license b/deps/npm/node_modules/ansi-regex/license
deleted file mode 100644
index e7af2f77107d73..00000000000000
--- a/deps/npm/node_modules/ansi-regex/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) Sindre Sorhus (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/deps/npm/node_modules/ansi-regex/package.json b/deps/npm/node_modules/ansi-regex/package.json
deleted file mode 100644
index 017f53116a9e28..00000000000000
--- a/deps/npm/node_modules/ansi-regex/package.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "name": "ansi-regex",
- "version": "5.0.1",
- "description": "Regular expression for matching ANSI escape codes",
- "license": "MIT",
- "repository": "chalk/ansi-regex",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd",
- "view-supported": "node fixtures/view-codes.js"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "ansi",
- "styles",
- "color",
- "colour",
- "colors",
- "terminal",
- "console",
- "cli",
- "string",
- "tty",
- "escape",
- "formatting",
- "rgb",
- "256",
- "shell",
- "xterm",
- "command-line",
- "text",
- "regex",
- "regexp",
- "re",
- "match",
- "test",
- "find",
- "pattern"
- ],
- "devDependencies": {
- "ava": "^2.4.0",
- "tsd": "^0.9.0",
- "xo": "^0.25.3"
- }
-}
diff --git a/deps/npm/node_modules/@isaacs/balanced-match/LICENSE.md b/deps/npm/node_modules/balanced-match/LICENSE.md
similarity index 100%
rename from deps/npm/node_modules/@isaacs/balanced-match/LICENSE.md
rename to deps/npm/node_modules/balanced-match/LICENSE.md
diff --git a/deps/npm/node_modules/@isaacs/balanced-match/dist/commonjs/index.js b/deps/npm/node_modules/balanced-match/dist/commonjs/index.js
similarity index 100%
rename from deps/npm/node_modules/@isaacs/balanced-match/dist/commonjs/index.js
rename to deps/npm/node_modules/balanced-match/dist/commonjs/index.js
diff --git a/deps/npm/node_modules/@isaacs/balanced-match/dist/commonjs/package.json b/deps/npm/node_modules/balanced-match/dist/commonjs/package.json
similarity index 100%
rename from deps/npm/node_modules/@isaacs/balanced-match/dist/commonjs/package.json
rename to deps/npm/node_modules/balanced-match/dist/commonjs/package.json
diff --git a/deps/npm/node_modules/@isaacs/balanced-match/dist/esm/index.js b/deps/npm/node_modules/balanced-match/dist/esm/index.js
similarity index 100%
rename from deps/npm/node_modules/@isaacs/balanced-match/dist/esm/index.js
rename to deps/npm/node_modules/balanced-match/dist/esm/index.js
diff --git a/deps/npm/node_modules/@isaacs/balanced-match/dist/esm/package.json b/deps/npm/node_modules/balanced-match/dist/esm/package.json
similarity index 100%
rename from deps/npm/node_modules/@isaacs/balanced-match/dist/esm/package.json
rename to deps/npm/node_modules/balanced-match/dist/esm/package.json
diff --git a/deps/npm/node_modules/@isaacs/balanced-match/package.json b/deps/npm/node_modules/balanced-match/package.json
similarity index 74%
rename from deps/npm/node_modules/@isaacs/balanced-match/package.json
rename to deps/npm/node_modules/balanced-match/package.json
index 49296e6af443c4..48f1a638d0b67d 100644
--- a/deps/npm/node_modules/@isaacs/balanced-match/package.json
+++ b/deps/npm/node_modules/balanced-match/package.json
@@ -1,13 +1,13 @@
{
- "name": "@isaacs/balanced-match",
+ "name": "balanced-match",
"description": "Match balanced character pairs, like \"{\" and \"}\"",
- "version": "4.0.1",
+ "version": "4.0.4",
"files": [
"dist"
],
"repository": {
"type": "git",
- "url": "git://github.com/isaacs/balanced-match.git"
+ "url": "git://github.com/juliangruber/balanced-match.git"
},
"exports": {
"./package.json": "./package.json",
@@ -32,27 +32,16 @@
"presnap": "npm run prepare",
"test": "tap",
"snap": "tap",
- "format": "prettier --write . --loglevel warn",
+ "format": "prettier --write .",
"benchmark": "node benchmark/index.js",
"typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts"
},
- "prettier": {
- "semi": false,
- "printWidth": 80,
- "tabWidth": 2,
- "useTabs": false,
- "singleQuote": true,
- "jsxSingleQuote": false,
- "bracketSameLine": true,
- "arrowParens": "avoid",
- "endOfLine": "lf"
- },
"devDependencies": {
"@types/brace-expansion": "^1.1.2",
- "@types/node": "^24.0.0",
+ "@types/node": "^25.2.1",
"mkdirp": "^3.0.1",
"prettier": "^3.3.2",
- "tap": "^21.1.0",
+ "tap": "^21.6.2",
"tshy": "^3.0.2",
"typedoc": "^0.28.5"
},
@@ -65,7 +54,7 @@
],
"license": "MIT",
"engines": {
- "node": "20 || >=22"
+ "node": "18 || 20 || >=22"
},
"tshy": {
"exports": {
diff --git a/deps/npm/node_modules/@isaacs/brace-expansion/LICENSE b/deps/npm/node_modules/brace-expansion/LICENSE
similarity index 100%
rename from deps/npm/node_modules/@isaacs/brace-expansion/LICENSE
rename to deps/npm/node_modules/brace-expansion/LICENSE
diff --git a/deps/npm/node_modules/@isaacs/brace-expansion/dist/commonjs/index.js b/deps/npm/node_modules/brace-expansion/dist/commonjs/index.js
similarity index 99%
rename from deps/npm/node_modules/@isaacs/brace-expansion/dist/commonjs/index.js
rename to deps/npm/node_modules/brace-expansion/dist/commonjs/index.js
index fafdb4b9bf5c43..2caa572c59de67 100644
--- a/deps/npm/node_modules/@isaacs/brace-expansion/dist/commonjs/index.js
+++ b/deps/npm/node_modules/brace-expansion/dist/commonjs/index.js
@@ -2,7 +2,7 @@
Object.defineProperty(exports, "__esModule", { value: true });
exports.EXPANSION_MAX = void 0;
exports.expand = expand;
-const balanced_match_1 = require("@isaacs/balanced-match");
+const balanced_match_1 = require("balanced-match");
const escSlash = '\0SLASH' + Math.random() + '\0';
const escOpen = '\0OPEN' + Math.random() + '\0';
const escClose = '\0CLOSE' + Math.random() + '\0';
diff --git a/deps/npm/node_modules/@isaacs/brace-expansion/dist/commonjs/package.json b/deps/npm/node_modules/brace-expansion/dist/commonjs/package.json
similarity index 100%
rename from deps/npm/node_modules/@isaacs/brace-expansion/dist/commonjs/package.json
rename to deps/npm/node_modules/brace-expansion/dist/commonjs/package.json
diff --git a/deps/npm/node_modules/@isaacs/brace-expansion/dist/esm/index.js b/deps/npm/node_modules/brace-expansion/dist/esm/index.js
similarity index 99%
rename from deps/npm/node_modules/@isaacs/brace-expansion/dist/esm/index.js
rename to deps/npm/node_modules/brace-expansion/dist/esm/index.js
index 5c67f519e594ab..ec682796e358b2 100644
--- a/deps/npm/node_modules/@isaacs/brace-expansion/dist/esm/index.js
+++ b/deps/npm/node_modules/brace-expansion/dist/esm/index.js
@@ -1,4 +1,4 @@
-import { balanced } from '@isaacs/balanced-match';
+import { balanced } from 'balanced-match';
const escSlash = '\0SLASH' + Math.random() + '\0';
const escOpen = '\0OPEN' + Math.random() + '\0';
const escClose = '\0CLOSE' + Math.random() + '\0';
diff --git a/deps/npm/node_modules/@isaacs/brace-expansion/dist/esm/package.json b/deps/npm/node_modules/brace-expansion/dist/esm/package.json
similarity index 100%
rename from deps/npm/node_modules/@isaacs/brace-expansion/dist/esm/package.json
rename to deps/npm/node_modules/brace-expansion/dist/esm/package.json
diff --git a/deps/npm/node_modules/@isaacs/brace-expansion/package.json b/deps/npm/node_modules/brace-expansion/package.json
similarity index 79%
rename from deps/npm/node_modules/@isaacs/brace-expansion/package.json
rename to deps/npm/node_modules/brace-expansion/package.json
index 0356a292d62474..c921f0bed27ce9 100644
--- a/deps/npm/node_modules/@isaacs/brace-expansion/package.json
+++ b/deps/npm/node_modules/brace-expansion/package.json
@@ -1,7 +1,7 @@
{
- "name": "@isaacs/brace-expansion",
+ "name": "brace-expansion",
"description": "Brace expansion as known from sh/bash",
- "version": "5.0.1",
+ "version": "5.0.3",
"files": [
"dist"
],
@@ -34,19 +34,19 @@
},
"devDependencies": {
"@types/brace-expansion": "^1.1.2",
- "@types/node": "^24.0.0",
+ "@types/node": "^25.2.1",
"mkdirp": "^3.0.1",
"prettier": "^3.3.2",
- "tap": "^21.5.0",
+ "tap": "^21.6.2",
"tshy": "^3.0.2",
"typedoc": "^0.28.5"
},
"dependencies": {
- "@isaacs/balanced-match": "^4.0.1"
+ "balanced-match": "^4.0.2"
},
"license": "MIT",
"engines": {
- "node": "20 || >=22"
+ "node": "18 || 20 || >=22"
},
"tshy": {
"exports": {
@@ -56,5 +56,9 @@
},
"main": "./dist/commonjs/index.js",
"types": "./dist/commonjs/index.d.ts",
- "module": "./dist/esm/index.js"
+ "module": "./dist/esm/index.js",
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/juliangruber/brace-expansion.git"
+ }
}
diff --git a/deps/npm/node_modules/cidr-regex/dist/index.js b/deps/npm/node_modules/cidr-regex/dist/index.js
index 2817f65eeb3cb8..bb2d3133a7dc5b 100644
--- a/deps/npm/node_modules/cidr-regex/dist/index.js
+++ b/deps/npm/node_modules/cidr-regex/dist/index.js
@@ -1,13 +1,20 @@
-import ipRegex from "ip-regex";
const defaultOpts = { exact: false };
-const v4str = `${ipRegex.v4().source}\\/(3[0-2]|[12]?[0-9])`;
-const v6str = `${ipRegex.v6().source}\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])`;
-const v4exact = new RegExp(`^${v4str}$`);
-const v6exact = new RegExp(`^${v6str}$`);
-const v46exact = new RegExp(`(?:^${v4str}$)|(?:^${v6str}$)`);
-const cidrRegex = ({ exact } = defaultOpts) => exact ? v46exact : new RegExp(`(?:${v4str})|(?:${v6str})`, "g");
-const v4 = cidrRegex.v4 = ({ exact } = defaultOpts) => exact ? v4exact : new RegExp(v4str, "g");
-const v6 = cidrRegex.v6 = ({ exact } = defaultOpts) => exact ? v6exact : new RegExp(v6str, "g");
+const v4src = "(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}\\/(3[0-2]|[12]?[0-9])";
+const v6src = "(?:(?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,2}|:)|(?:[a-fA-F\\d]{1,4}:){4}(?:(?::[a-fA-F\\d]{1,4})?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,3}|:)|(?:[a-fA-F\\d]{1,4}:){3}(?:(?::[a-fA-F\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,4}|:)|(?:[a-fA-F\\d]{1,4}:){2}(?:(?::[a-fA-F\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,5}|:)|[a-fA-F\\d]{1,4}:(?:(?::[a-fA-F\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,6}|:)|:(?:(?::[a-fA-F\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,7}|:))(?:%[0-9a-zA-Z]+)?\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])";
+const v46src = `${v4src}|${v6src}`;
+const v4exact = new RegExp(`^${v4src}$`);
+const v6exact = new RegExp(`^${v6src}$`);
+const v46exact = new RegExp(`^${v4src}$|^${v6src}$`);
+const v4global = new RegExp(v4src, "g");
+const v6global = new RegExp(v6src, "g");
+const v46global = new RegExp(v46src, "g");
+function resetRegex(re) {
+ re.lastIndex = 0;
+ return re;
+}
+const cidrRegex = ({ exact } = defaultOpts) => exact ? v46exact : resetRegex(v46global);
+const v4 = cidrRegex.v4 = ({ exact } = defaultOpts) => exact ? v4exact : resetRegex(v4global);
+const v6 = cidrRegex.v6 = ({ exact } = defaultOpts) => exact ? v6exact : resetRegex(v6global);
export {
cidrRegex as default,
v4,
diff --git a/deps/npm/node_modules/cidr-regex/package.json b/deps/npm/node_modules/cidr-regex/package.json
index 662f89261b01c6..a76a158d6169dc 100644
--- a/deps/npm/node_modules/cidr-regex/package.json
+++ b/deps/npm/node_modules/cidr-regex/package.json
@@ -1,6 +1,6 @@
{
"name": "cidr-regex",
- "version": "5.0.1",
+ "version": "5.0.3",
"description": "Regular expression for matching IP addresses in CIDR notation",
"author": "silverwind ",
"contributors": [
@@ -19,20 +19,20 @@
"engines": {
"node": ">=20"
},
- "dependencies": {
- "ip-regex": "5.0.0"
- },
"devDependencies": {
- "@types/node": "24.5.2",
- "eslint": "9.36.0",
- "eslint-config-silverwind": "105.1.0",
- "typescript": "5.9.2",
- "typescript-config-silverwind": "10.0.1",
- "updates": "16.7.2",
- "versions": "13.1.2",
- "vite": "7.1.7",
- "vite-config-silverwind": "6.0.2",
- "vitest": "3.2.4",
- "vitest-config-silverwind": "10.2.0"
+ "@types/node": "25.0.10",
+ "@typescript/native-preview": "7.0.0-dev.20260212.1",
+ "eslint": "9.39.2",
+ "eslint-config-silverwind": "120.1.2",
+ "jest-extended": "7.0.0",
+ "typescript": "5.9.3",
+ "typescript-config-silverwind": "14.0.0",
+ "updates": "17.0.8",
+ "updates-config-silverwind": "1.0.3",
+ "versions": "14.0.3",
+ "vite": "7.3.1",
+ "vite-config-silverwind": "6.0.9",
+ "vitest": "4.0.18",
+ "vitest-config-silverwind": "10.6.1"
}
-}
+}
\ No newline at end of file
diff --git a/deps/npm/node_modules/cli-columns/color.js b/deps/npm/node_modules/cli-columns/color.js
deleted file mode 100644
index 11027047f24fe6..00000000000000
--- a/deps/npm/node_modules/cli-columns/color.js
+++ /dev/null
@@ -1,16 +0,0 @@
-const chalk = require('chalk');
-const columns = require('.');
-
-// prettier-ignore
-const values = [
- 'blue' + chalk.bgBlue('berry'),
- '笔菠萝' + chalk.yellow('苹果笔'),
- chalk.red('apple'), 'pomegranate',
- 'durian', chalk.green('star fruit'),
- 'パイナップル', 'apricot', 'banana',
- 'pineapple', chalk.bgRed.yellow('orange')
-];
-
-console.log('');
-console.log(columns(values));
-console.log('');
diff --git a/deps/npm/node_modules/cli-columns/index.js b/deps/npm/node_modules/cli-columns/index.js
deleted file mode 100644
index 1090aa21c2bdf2..00000000000000
--- a/deps/npm/node_modules/cli-columns/index.js
+++ /dev/null
@@ -1,82 +0,0 @@
-'use strict';
-
-const stringWidth = require('string-width');
-const stripAnsi = require('strip-ansi');
-
-const concat = Array.prototype.concat;
-const defaults = {
- character: ' ',
- newline: '\n',
- padding: 2,
- sort: true,
- width: 0,
-};
-
-function byPlainText(a, b) {
- const plainA = stripAnsi(a);
- const plainB = stripAnsi(b);
-
- if (plainA === plainB) {
- return 0;
- }
-
- if (plainA > plainB) {
- return 1;
- }
-
- return -1;
-}
-
-function makeArray() {
- return [];
-}
-
-function makeList(count) {
- return Array.apply(null, Array(count));
-}
-
-function padCell(fullWidth, character, value) {
- const valueWidth = stringWidth(value);
- const filler = makeList(fullWidth - valueWidth + 1);
-
- return value + filler.join(character);
-}
-
-function toRows(rows, cell, i) {
- rows[i % rows.length].push(cell);
-
- return rows;
-}
-
-function toString(arr) {
- return arr.join('');
-}
-
-function columns(values, options) {
- values = concat.apply([], values);
- options = Object.assign({}, defaults, options);
-
- let cells = values.filter(Boolean).map(String);
-
- if (options.sort !== false) {
- cells = cells.sort(byPlainText);
- }
-
- const termWidth = options.width || process.stdout.columns;
- const cellWidth =
- Math.max.apply(null, cells.map(stringWidth)) + options.padding;
- const columnCount = Math.floor(termWidth / cellWidth) || 1;
- const rowCount = Math.ceil(cells.length / columnCount) || 1;
-
- if (columnCount === 1) {
- return cells.join(options.newline);
- }
-
- return cells
- .map(padCell.bind(null, cellWidth, options.character))
- .reduce(toRows, makeList(rowCount).map(makeArray))
- .map(toString)
- .join(options.newline);
-}
-
-module.exports = columns;
diff --git a/deps/npm/node_modules/cli-columns/license b/deps/npm/node_modules/cli-columns/license
deleted file mode 100644
index 67147a987ea19b..00000000000000
--- a/deps/npm/node_modules/cli-columns/license
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Shannon Moeller (shannonmoeller.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/deps/npm/node_modules/cli-columns/package.json b/deps/npm/node_modules/cli-columns/package.json
deleted file mode 100644
index 129f2c1316d2f0..00000000000000
--- a/deps/npm/node_modules/cli-columns/package.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "name": "cli-columns",
- "version": "4.0.0",
- "description": "Columnated lists for the CLI.",
- "scripts": {
- "lint": "npx eslint --fix '*.js' && npx prettier --write '*.js'",
- "test": "node test.js && node color.js"
- },
- "keywords": [
- "ansi",
- "cli",
- "column",
- "columnate",
- "columns",
- "grid",
- "list",
- "log",
- "ls",
- "row",
- "rows",
- "unicode",
- "unix"
- ],
- "author": "Shannon Moeller (http://shannonmoeller.com)",
- "homepage": "https://github.com/shannonmoeller/cli-columns#readme",
- "repository": "shannonmoeller/cli-columns",
- "license": "MIT",
- "main": "index.js",
- "files": [
- "*.js"
- ],
- "dependencies": {
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1"
- },
- "devDependencies": {
- "chalk": "^4.1.2"
- },
- "engines": {
- "node": ">= 10"
- },
- "eslintConfig": {
- "extends": "eslint:recommended",
- "env": {
- "node": true
- },
- "parserOptions": {
- "ecmaVersion": 8
- }
- },
- "prettier": {
- "singleQuote": true
- }
-}
diff --git a/deps/npm/node_modules/cli-columns/test.js b/deps/npm/node_modules/cli-columns/test.js
deleted file mode 100644
index 4d95e7cf073230..00000000000000
--- a/deps/npm/node_modules/cli-columns/test.js
+++ /dev/null
@@ -1,101 +0,0 @@
-'use strict';
-
-const assert = require('assert');
-const chalk = require('chalk');
-const stripAnsi = require('strip-ansi');
-const columns = require('./index.js');
-const tests = [];
-
-function test(msg, fn) {
- tests.push([msg, fn]);
-}
-
-process.nextTick(async function run() {
- for (const [msg, fn] of tests) {
- try {
- await fn(assert);
- console.log(`pass - ${msg}`);
- } catch (error) {
- console.error(`fail - ${msg}`, error);
- process.exit(1);
- }
- }
-});
-
-// prettier-ignore
-test('should print one column list', t => {
- const cols = columns(['foo', ['bar', 'baz'], ['bar', 'qux']], {
- width: 1
- });
-
- const expected =
- 'bar\n' +
- 'bar\n' +
- 'baz\n' +
- 'foo\n' +
- 'qux';
-
- t.equal(cols, expected);
-});
-
-// prettier-ignore
-test('should print three column list', t => {
- const cols = columns(['foo', ['bar', 'baz'], ['bat', 'qux']], {
- width: 16
- });
-
- const expected =
- 'bar baz qux \n' +
- 'bat foo ';
-
- t.equal(cols, expected);
-});
-
-// prettier-ignore
-test('should print complex list', t => {
- const cols = columns(
- [
- 'foo', 'bar', 'baz',
- chalk.cyan('嶜憃撊') + ' 噾噿嚁',
- 'blue' + chalk.bgBlue('berry'),
- chalk.red('apple'), 'pomegranate',
- 'durian', chalk.green('star fruit'),
- 'apricot', 'banana pineapple'
- ],
- {
- width: 80
- }
- );
-
- const expected =
- 'apple bar durian star fruit \n' +
- 'apricot baz foo 嶜憃撊 噾噿嚁 \n' +
- 'banana pineapple blueberry pomegranate ';
-
- t.equal(stripAnsi(cols), expected);
-});
-
-// prettier-ignore
-test('should optionally not sort', t => {
- const cols = columns(
- [
- 'foo', 'bar', 'baz',
- chalk.cyan('嶜憃撊') + ' 噾噿嚁',
- 'blue' + chalk.bgBlue('berry'),
- chalk.red('apple'), 'pomegranate',
- 'durian', chalk.green('star fruit'),
- 'apricot', 'banana pineapple'
- ],
- {
- sort: false,
- width: 80
- }
- );
-
- const expected =
- 'foo 嶜憃撊 噾噿嚁 pomegranate apricot \n' +
- 'bar blueberry durian banana pineapple \n' +
- 'baz apple star fruit ';
-
- t.equal(stripAnsi(cols), expected);
-});
diff --git a/deps/npm/node_modules/emoji-regex/LICENSE-MIT.txt b/deps/npm/node_modules/emoji-regex/LICENSE-MIT.txt
deleted file mode 100644
index a41e0a7ef970ec..00000000000000
--- a/deps/npm/node_modules/emoji-regex/LICENSE-MIT.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright Mathias Bynens
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/deps/npm/node_modules/emoji-regex/es2015/index.js b/deps/npm/node_modules/emoji-regex/es2015/index.js
deleted file mode 100644
index b4cf3dcd389935..00000000000000
--- a/deps/npm/node_modules/emoji-regex/es2015/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-"use strict";
-
-module.exports = () => {
- // https://mths.be/emoji
- return /\u{1F3F4}\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0073}\u{E0063}\u{E0074}|\u{E0077}\u{E006C}\u{E0073})\u{E007F}|\u{1F468}(?:\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}\u{1F3FB}|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FE}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u2695\u2696\u2708]\uFE0F|[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|(?:\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F3FB}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}]|[\u{1F3FB}-\u{1F3FF}])|(?:\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469})\u{1F3FB}|\u{1F9D1}(?:\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u200D\u{1F91D}\u200D\u{1F9D1})|(?:\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D[\u{1F468}\u{1F469}])[\u{1F3FB}-\u{1F3FE}]|(?:\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}\u{1F3FC}]|\u{1F469}(?:\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FD}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FB}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FC}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}\u{1F3FE}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|(?:\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}-\u{1F3FD}]|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}(?:\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708]|\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F3F4}\u200D\u2620)\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F415}\u200D\u{1F9BA}|\u{1F469}\u200D\u{1F466}|\u{1F469}\u200D\u{1F467}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F1F6}\u{1F1E6}|[#\*0-9]\uFE0F\u20E3|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F46B}-\u{1F46D}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9BB}\u{1F9D2}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6D5}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6D5}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]\uFE0F|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F48F}\u{1F491}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93C}-\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9BB}\u{1F9CD}-\u{1F9CF}\u{1F9D1}-\u{1F9DD}]/gu;
-};
diff --git a/deps/npm/node_modules/emoji-regex/es2015/text.js b/deps/npm/node_modules/emoji-regex/es2015/text.js
deleted file mode 100644
index 780309df58f1a2..00000000000000
--- a/deps/npm/node_modules/emoji-regex/es2015/text.js
+++ /dev/null
@@ -1,6 +0,0 @@
-"use strict";
-
-module.exports = () => {
- // https://mths.be/emoji
- return /\u{1F3F4}\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0073}\u{E0063}\u{E0074}|\u{E0077}\u{E006C}\u{E0073})\u{E007F}|\u{1F468}(?:\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}\u{1F3FB}|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FE}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u2695\u2696\u2708]\uFE0F|[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|(?:\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F3FB}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}]|[\u{1F3FB}-\u{1F3FF}])|(?:\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469})\u{1F3FB}|\u{1F9D1}(?:\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u200D\u{1F91D}\u200D\u{1F9D1})|(?:\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D[\u{1F468}\u{1F469}])[\u{1F3FB}-\u{1F3FE}]|(?:\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}\u{1F3FC}]|\u{1F469}(?:\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FD}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FB}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FC}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}\u{1F3FE}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|(?:\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}-\u{1F3FD}]|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}(?:\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708]|\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F3F4}\u200D\u2620)\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F415}\u200D\u{1F9BA}|\u{1F469}\u200D\u{1F466}|\u{1F469}\u200D\u{1F467}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F1F6}\u{1F1E6}|[#\*0-9]\uFE0F\u20E3|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F46B}-\u{1F46D}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9BB}\u{1F9D2}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6D5}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6D5}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]\uFE0F?|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F48F}\u{1F491}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93C}-\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9BB}\u{1F9CD}-\u{1F9CF}\u{1F9D1}-\u{1F9DD}]/gu;
-};
diff --git a/deps/npm/node_modules/emoji-regex/index.js b/deps/npm/node_modules/emoji-regex/index.js
deleted file mode 100644
index d993a3a99cb95a..00000000000000
--- a/deps/npm/node_modules/emoji-regex/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-"use strict";
-
-module.exports = function () {
- // https://mths.be/emoji
- return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
-};
diff --git a/deps/npm/node_modules/emoji-regex/package.json b/deps/npm/node_modules/emoji-regex/package.json
deleted file mode 100644
index 6d323528292b00..00000000000000
--- a/deps/npm/node_modules/emoji-regex/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "name": "emoji-regex",
- "version": "8.0.0",
- "description": "A regular expression to match all Emoji-only symbols as per the Unicode Standard.",
- "homepage": "https://mths.be/emoji-regex",
- "main": "index.js",
- "types": "index.d.ts",
- "keywords": [
- "unicode",
- "regex",
- "regexp",
- "regular expressions",
- "code points",
- "symbols",
- "characters",
- "emoji"
- ],
- "license": "MIT",
- "author": {
- "name": "Mathias Bynens",
- "url": "https://mathiasbynens.be/"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/mathiasbynens/emoji-regex.git"
- },
- "bugs": "https://github.com/mathiasbynens/emoji-regex/issues",
- "files": [
- "LICENSE-MIT.txt",
- "index.js",
- "index.d.ts",
- "text.js",
- "es2015/index.js",
- "es2015/text.js"
- ],
- "scripts": {
- "build": "rm -rf -- es2015; babel src -d .; NODE_ENV=es2015 babel src -d ./es2015; node script/inject-sequences.js",
- "test": "mocha",
- "test:watch": "npm run test -- --watch"
- },
- "devDependencies": {
- "@babel/cli": "^7.2.3",
- "@babel/core": "^7.3.4",
- "@babel/plugin-proposal-unicode-property-regex": "^7.2.0",
- "@babel/preset-env": "^7.3.4",
- "mocha": "^6.0.2",
- "regexgen": "^1.3.0",
- "unicode-12.0.0": "^0.7.9"
- }
-}
diff --git a/deps/npm/node_modules/emoji-regex/text.js b/deps/npm/node_modules/emoji-regex/text.js
deleted file mode 100644
index 0a55ce2f2308ad..00000000000000
--- a/deps/npm/node_modules/emoji-regex/text.js
+++ /dev/null
@@ -1,6 +0,0 @@
-"use strict";
-
-module.exports = function () {
- // https://mths.be/emoji
- return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F?|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
-};
diff --git a/deps/npm/node_modules/encoding/lib/encoding.js b/deps/npm/node_modules/encoding/lib/encoding.js
deleted file mode 100644
index 865c24bce2e06d..00000000000000
--- a/deps/npm/node_modules/encoding/lib/encoding.js
+++ /dev/null
@@ -1,83 +0,0 @@
-'use strict';
-
-var iconvLite = require('iconv-lite');
-
-// Expose to the world
-module.exports.convert = convert;
-
-/**
- * Convert encoding of an UTF-8 string or a buffer
- *
- * @param {String|Buffer} str String to be converted
- * @param {String} to Encoding to be converted to
- * @param {String} [from='UTF-8'] Encoding to be converted from
- * @return {Buffer} Encoded string
- */
-function convert(str, to, from) {
- from = checkEncoding(from || 'UTF-8');
- to = checkEncoding(to || 'UTF-8');
- str = str || '';
-
- var result;
-
- if (from !== 'UTF-8' && typeof str === 'string') {
- str = Buffer.from(str, 'binary');
- }
-
- if (from === to) {
- if (typeof str === 'string') {
- result = Buffer.from(str);
- } else {
- result = str;
- }
- } else {
- try {
- result = convertIconvLite(str, to, from);
- } catch (E) {
- console.error(E);
- result = str;
- }
- }
-
- if (typeof result === 'string') {
- result = Buffer.from(result, 'utf-8');
- }
-
- return result;
-}
-
-/**
- * Convert encoding of astring with iconv-lite
- *
- * @param {String|Buffer} str String to be converted
- * @param {String} to Encoding to be converted to
- * @param {String} [from='UTF-8'] Encoding to be converted from
- * @return {Buffer} Encoded string
- */
-function convertIconvLite(str, to, from) {
- if (to === 'UTF-8') {
- return iconvLite.decode(str, from);
- } else if (from === 'UTF-8') {
- return iconvLite.encode(str, to);
- } else {
- return iconvLite.encode(iconvLite.decode(str, from), to);
- }
-}
-
-/**
- * Converts charset name if needed
- *
- * @param {String} name Character set
- * @return {String} Character set name
- */
-function checkEncoding(name) {
- return (name || '')
- .toString()
- .trim()
- .replace(/^latin[\-_]?(\d+)$/i, 'ISO-8859-$1')
- .replace(/^win(?:dows)?[\-_]?(\d+)$/i, 'WINDOWS-$1')
- .replace(/^utf[\-_]?(\d+)$/i, 'UTF-$1')
- .replace(/^ks_c_5601\-1987$/i, 'CP949')
- .replace(/^us[\-_]?ascii$/i, 'ASCII')
- .toUpperCase();
-}
diff --git a/deps/npm/node_modules/encoding/package.json b/deps/npm/node_modules/encoding/package.json
deleted file mode 100644
index 773a94384fa63b..00000000000000
--- a/deps/npm/node_modules/encoding/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "encoding",
- "version": "0.1.13",
- "description": "Convert encodings, uses iconv-lite",
- "main": "lib/encoding.js",
- "scripts": {
- "test": "nodeunit test"
- },
- "repository": "https://github.com/andris9/encoding.git",
- "author": "Andris Reinman",
- "license": "MIT",
- "dependencies": {
- "iconv-lite": "^0.6.2"
- },
- "devDependencies": {
- "nodeunit": "0.11.3"
- }
-}
diff --git a/deps/npm/node_modules/encoding/test/test.js b/deps/npm/node_modules/encoding/test/test.js
deleted file mode 100644
index 3a7dfee9892242..00000000000000
--- a/deps/npm/node_modules/encoding/test/test.js
+++ /dev/null
@@ -1,49 +0,0 @@
-'use strict';
-
-var encoding = require('../lib/encoding');
-
-exports['General tests'] = {
- 'From UTF-8 to Latin_1': function (test) {
- var input = 'ÕÄÖÜ',
- expected = Buffer.from([0xd5, 0xc4, 0xd6, 0xdc]);
- test.deepEqual(encoding.convert(input, 'latin1'), expected);
- test.done();
- },
-
- 'From Latin_1 to UTF-8': function (test) {
- var input = Buffer.from([0xd5, 0xc4, 0xd6, 0xdc]),
- expected = 'ÕÄÖÜ';
- test.deepEqual(encoding.convert(input, 'utf-8', 'latin1').toString(), expected);
- test.done();
- },
-
- 'From UTF-8 to UTF-8': function (test) {
- var input = 'ÕÄÖÜ',
- expected = Buffer.from('ÕÄÖÜ');
- test.deepEqual(encoding.convert(input, 'utf-8', 'utf-8'), expected);
- test.done();
- },
-
- 'From Latin_13 to Latin_15': function (test) {
- var input = Buffer.from([0xd5, 0xc4, 0xd6, 0xdc, 0xd0]),
- expected = Buffer.from([0xd5, 0xc4, 0xd6, 0xdc, 0xa6]);
- test.deepEqual(encoding.convert(input, 'latin_15', 'latin13'), expected);
- test.done();
- }
-
- /*
- // ISO-2022-JP is not supported by iconv-lite
- "From ISO-2022-JP to UTF-8 with Iconv": function (test) {
- var input = Buffer.from(
- "GyRCM1g5OzU7PVEwdzgmPSQ4IUYkMnFKczlwGyhC",
- "base64"
- ),
- expected = Buffer.from(
- "5a2m5qCh5oqA6KGT5ZOh56CU5L+u5qSc6KiO5Lya5aCx5ZGK",
- "base64"
- );
- test.deepEqual(encoding.convert(input, "utf-8", "ISO-2022-JP"), expected);
- test.done();
- },
- */
-};
diff --git a/deps/npm/node_modules/glob/dist/commonjs/glob.js b/deps/npm/node_modules/glob/dist/commonjs/glob.js
index e1339bbbcf57f3..2dcbd8a1d867cd 100644
--- a/deps/npm/node_modules/glob/dist/commonjs/glob.js
+++ b/deps/npm/node_modules/glob/dist/commonjs/glob.js
@@ -140,11 +140,12 @@ class Glob {
// for the file `AbC` for example.
const nocaseMagicOnly = this.platform === 'darwin' || this.platform === 'win32';
const mmo = {
- // default nocase based on platform
+ braceExpandMax: 10_000,
...opts,
dot: this.dot,
matchBase: this.matchBase,
nobrace: this.nobrace,
+ // default nocase based on platform
nocase: this.nocase,
nocaseMagicOnly,
nocomment: true,
diff --git a/deps/npm/node_modules/glob/dist/commonjs/index.min.js b/deps/npm/node_modules/glob/dist/commonjs/index.min.js
new file mode 100644
index 00000000000000..4828ba07860bdc
--- /dev/null
+++ b/deps/npm/node_modules/glob/dist/commonjs/index.min.js
@@ -0,0 +1,4 @@
+"use strict";var R=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports);var Ge=R(Y=>{"use strict";Object.defineProperty(Y,"__esModule",{value:!0});Y.range=Y.balanced=void 0;var Gs=(n,t,e)=>{let s=n instanceof RegExp?Ie(n,e):n,i=t instanceof RegExp?Ie(t,e):t,r=s!==null&&i!=null&&(0,Y.range)(s,i,e);return r&&{start:r[0],end:r[1],pre:e.slice(0,r[0]),body:e.slice(r[0]+s.length,r[1]),post:e.slice(r[1]+i.length)}};Y.balanced=Gs;var Ie=(n,t)=>{let e=t.match(n);return e?e[0]:null},zs=(n,t,e)=>{let s,i,r,h,o,a=e.indexOf(n),l=e.indexOf(t,a+1),f=a;if(a>=0&&l>0){if(n===t)return[a,l];for(s=[],r=e.length;f>=0&&!o;){if(f===a)s.push(f),a=e.indexOf(n,f+1);else if(s.length===1){let c=s.pop();c!==void 0&&(o=[c,l])}else i=s.pop(),i!==void 0&&i=0?a:l}s.length&&h!==void 0&&(o=[r,h])}return o};Y.range=zs});var Ke=R(it=>{"use strict";Object.defineProperty(it,"__esModule",{value:!0});it.EXPANSION_MAX=void 0;it.expand=ei;var ze=Ge(),Ue="\0SLASH"+Math.random()+"\0",$e="\0OPEN"+Math.random()+"\0",ue="\0CLOSE"+Math.random()+"\0",qe="\0COMMA"+Math.random()+"\0",He="\0PERIOD"+Math.random()+"\0",Us=new RegExp(Ue,"g"),$s=new RegExp($e,"g"),qs=new RegExp(ue,"g"),Hs=new RegExp(qe,"g"),Vs=new RegExp(He,"g"),Ks=/\\\\/g,Xs=/\\{/g,Ys=/\\}/g,Js=/\\,/g,Zs=/\\./g;it.EXPANSION_MAX=1e5;function ce(n){return isNaN(n)?n.charCodeAt(0):parseInt(n,10)}function Qs(n){return n.replace(Ks,Ue).replace(Xs,$e).replace(Ys,ue).replace(Js,qe).replace(Zs,He)}function ti(n){return n.replace(Us,"\\").replace($s,"{").replace(qs,"}").replace(Hs,",").replace(Vs,".")}function Ve(n){if(!n)return[""];let t=[],e=(0,ze.balanced)("{","}",n);if(!e)return n.split(",");let{pre:s,body:i,post:r}=e,h=s.split(",");h[h.length-1]+="{"+i+"}";let o=Ve(r);return r.length&&(h[h.length-1]+=o.shift(),h.push.apply(h,o)),t.push.apply(t,h),t}function ei(n,t={}){if(!n)return[];let{max:e=it.EXPANSION_MAX}=t;return n.slice(0,2)==="{}"&&(n="\\{\\}"+n.slice(2)),ht(Qs(n),e,!0).map(ti)}function si(n){return"{"+n+"}"}function ii(n){return/^-?0\d/.test(n)}function ri(n,t){return n<=t}function ni(n,t){return n>=t}function ht(n,t,e){let s=[],i=(0,ze.balanced)("{","}",n);if(!i)return[n];let r=i.pre,h=i.post.length?ht(i.post,t,!1):[""];if(/\$$/.test(i.pre))for(let o=0;o=0;if(!l&&!f)return i.post.match(/,(?!,).*\}/)?(n=i.pre+"{"+i.body+ue+i.post,ht(n,t,!0)):[n];let c;if(l)c=i.body.split(/\.\./);else if(c=Ve(i.body),c.length===1&&c[0]!==void 0&&(c=ht(c[0],t,!1).map(si),c.length===1))return h.map(u=>i.pre+c[0]+u);let d;if(l&&c[0]!==void 0&&c[1]!==void 0){let u=ce(c[0]),m=ce(c[1]),p=Math.max(c[0].length,c[1].length),b=c.length===3&&c[2]!==void 0?Math.abs(ce(c[2])):1,w=ri;m0){let U=new Array(B+1).join("0");y<0?S="-"+U+S.slice(1):S=U+S}}d.push(S)}}else{d=[];for(let u=0;u{"use strict";Object.defineProperty(Ct,"__esModule",{value:!0});Ct.assertValidPattern=void 0;var hi=1024*64,oi=n=>{if(typeof n!="string")throw new TypeError("invalid pattern");if(n.length>hi)throw new TypeError("pattern is too long")};Ct.assertValidPattern=oi});var Je=R(Rt=>{"use strict";Object.defineProperty(Rt,"__esModule",{value:!0});Rt.parseClass=void 0;var ai={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},ot=n=>n.replace(/[[\]\\-]/g,"\\$&"),li=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Ye=n=>n.join(""),ci=(n,t)=>{let e=t;if(n.charAt(e)!=="[")throw new Error("not in a brace expression");let s=[],i=[],r=e+1,h=!1,o=!1,a=!1,l=!1,f=e,c="";t:for(;rc?s.push(ot(c)+"-"+ot(p)):p===c&&s.push(ot(p)),c="",r++;continue}if(n.startsWith("-]",r+1)){s.push(ot(p+"-")),r+=2;continue}if(n.startsWith("-",r+1)){c=p,r+=2;continue}s.push(ot(p)),r++}if(f{"use strict";Object.defineProperty(At,"__esModule",{value:!0});At.unescape=void 0;var ui=(n,{windowsPathsNoEscape:t=!1,magicalBraces:e=!0}={})=>e?t?n.replace(/\[([^\/\\])\]/g,"$1"):n.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1"):t?n.replace(/\[([^\/\\{}])\]/g,"$1"):n.replace(/((?!\\).|^)\[([^\/\\{}])\]/g,"$1$2").replace(/\\([^\/{}])/g,"$1");At.unescape=ui});var pe=R(Dt=>{"use strict";Object.defineProperty(Dt,"__esModule",{value:!0});Dt.AST=void 0;var fi=Je(),Mt=kt(),di=new Set(["!","?","+","*","@"]),Ze=n=>di.has(n),pi="(?!(?:^|/)\\.\\.?(?:$|/))",Pt="(?!\\.)",mi=new Set(["[","."]),gi=new Set(["..","."]),wi=new Set("().*{}+?[]^$\\!"),bi=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),de="[^/]",Qe=de+"*?",ts=de+"+?",fe=class n{type;#t;#s;#n=!1;#r=[];#h;#S;#w;#c=!1;#o;#f;#u=!1;constructor(t,e,s={}){this.type=t,t&&(this.#s=!0),this.#h=e,this.#t=this.#h?this.#h.#t:this,this.#o=this.#t===this?s:this.#t.#o,this.#w=this.#t===this?[]:this.#t.#w,t==="!"&&!this.#t.#c&&this.#w.push(this),this.#S=this.#h?this.#h.#r.length:0}get hasMagic(){if(this.#s!==void 0)return this.#s;for(let t of this.#r)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#s=!0;return this.#s}toString(){return this.#f!==void 0?this.#f:this.type?this.#f=this.type+"("+this.#r.map(t=>String(t)).join("|")+")":this.#f=this.#r.map(t=>String(t)).join("")}#a(){if(this!==this.#t)throw new Error("should only call on root");if(this.#c)return this;this.toString(),this.#c=!0;let t;for(;t=this.#w.pop();){if(t.type!=="!")continue;let e=t,s=e.#h;for(;s;){for(let i=e.#S+1;!s.type&&itypeof e=="string"?e:e.toJSON()):[this.type,...this.#r.map(e=>e.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#c&&this.#h?.type==="!")&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#h?.isStart())return!1;if(this.#S===0)return!0;let t=this.#h;for(let e=0;etypeof u!="string"),l=this.#r.map(u=>{let[m,p,b,w]=typeof u=="string"?n.#v(u,this.#s,a):u.toRegExpSource(t);return this.#s=this.#s||b,this.#n=this.#n||w,m}).join(""),f="";if(this.isStart()&&typeof this.#r[0]=="string"&&!(this.#r.length===1&&gi.has(this.#r[0]))){let m=mi,p=e&&m.has(l.charAt(0))||l.startsWith("\\.")&&m.has(l.charAt(2))||l.startsWith("\\.\\.")&&m.has(l.charAt(4)),b=!e&&!t&&m.has(l.charAt(0));f=p?pi:b?Pt:""}let c="";return this.isEnd()&&this.#t.#c&&this.#h?.type==="!"&&(c="(?:$|\\/)"),[f+l+c,(0,Mt.unescape)(l),this.#s=!!this.#s,this.#n]}let s=this.type==="*"||this.type==="+",i=this.type==="!"?"(?:(?!(?:":"(?:",r=this.#d(e);if(this.isStart()&&this.isEnd()&&!r&&this.type!=="!"){let a=this.toString();return this.#r=[a],this.type=null,this.#s=void 0,[a,(0,Mt.unescape)(this.toString()),!1,!1]}let h=!s||t||e||!Pt?"":this.#d(!0);h===r&&(h=""),h&&(r=`(?:${r})(?:${h})*?`);let o="";if(this.type==="!"&&this.#u)o=(this.isStart()&&!e?Pt:"")+ts;else{let a=this.type==="!"?"))"+(this.isStart()&&!e&&!t?Pt:"")+Qe+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&h?")":this.type==="*"&&h?")?":`)${this.type}`;o=i+r+a}return[o,(0,Mt.unescape)(r),this.#s=!!this.#s,this.#n]}#d(t){return this.#r.map(e=>{if(typeof e=="string")throw new Error("string type in extglob ast??");let[s,i,r,h]=e.toRegExpSource(t);return this.#n=this.#n||h,s}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join("|")}static#v(t,e,s=!1){let i=!1,r="",h=!1,o=!1;for(let a=0;a{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});Ft.escape=void 0;var yi=(n,{windowsPathsNoEscape:t=!1,magicalBraces:e=!1}={})=>e?t?n.replace(/[?*()[\]{}]/g,"[$&]"):n.replace(/[?*()[\]\\{}]/g,"\\$&"):t?n.replace(/[?*()[\]]/g,"[$&]"):n.replace(/[?*()[\]\\]/g,"\\$&");Ft.escape=yi});var H=R(g=>{"use strict";Object.defineProperty(g,"__esModule",{value:!0});g.unescape=g.escape=g.AST=g.Minimatch=g.match=g.makeRe=g.braceExpand=g.defaults=g.filter=g.GLOBSTAR=g.sep=g.minimatch=void 0;var Si=Ke(),jt=Xe(),is=pe(),vi=me(),Ei=kt(),_i=(n,t,e={})=>((0,jt.assertValidPattern)(t),!e.nocomment&&t.charAt(0)==="#"?!1:new J(t,e).match(n));g.minimatch=_i;var Oi=/^\*+([^+@!?\*\[\(]*)$/,xi=n=>t=>!t.startsWith(".")&&t.endsWith(n),Ti=n=>t=>t.endsWith(n),Ci=n=>(n=n.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(n)),Ri=n=>(n=n.toLowerCase(),t=>t.toLowerCase().endsWith(n)),Ai=/^\*+\.\*+$/,ki=n=>!n.startsWith(".")&&n.includes("."),Mi=n=>n!=="."&&n!==".."&&n.includes("."),Pi=/^\.\*+$/,Di=n=>n!=="."&&n!==".."&&n.startsWith("."),Fi=/^\*+$/,ji=n=>n.length!==0&&!n.startsWith("."),Ni=n=>n.length!==0&&n!=="."&&n!=="..",Li=/^\?+([^+@!?\*\[\(]*)?$/,Wi=([n,t=""])=>{let e=rs([n]);return t?(t=t.toLowerCase(),s=>e(s)&&s.toLowerCase().endsWith(t)):e},Bi=([n,t=""])=>{let e=ns([n]);return t?(t=t.toLowerCase(),s=>e(s)&&s.toLowerCase().endsWith(t)):e},Ii=([n,t=""])=>{let e=ns([n]);return t?s=>e(s)&&s.endsWith(t):e},Gi=([n,t=""])=>{let e=rs([n]);return t?s=>e(s)&&s.endsWith(t):e},rs=([n])=>{let t=n.length;return e=>e.length===t&&!e.startsWith(".")},ns=([n])=>{let t=n.length;return e=>e.length===t&&e!=="."&&e!==".."},hs=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",es={win32:{sep:"\\"},posix:{sep:"/"}};g.sep=hs==="win32"?es.win32.sep:es.posix.sep;g.minimatch.sep=g.sep;g.GLOBSTAR=Symbol("globstar **");g.minimatch.GLOBSTAR=g.GLOBSTAR;var zi="[^/]",Ui=zi+"*?",$i="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",qi="(?:(?!(?:\\/|^)\\.).)*?",Hi=(n,t={})=>e=>(0,g.minimatch)(e,n,t);g.filter=Hi;g.minimatch.filter=g.filter;var F=(n,t={})=>Object.assign({},n,t),Vi=n=>{if(!n||typeof n!="object"||!Object.keys(n).length)return g.minimatch;let t=g.minimatch;return Object.assign((s,i,r={})=>t(s,i,F(n,r)),{Minimatch:class extends t.Minimatch{constructor(i,r={}){super(i,F(n,r))}static defaults(i){return t.defaults(F(n,i)).Minimatch}},AST:class extends t.AST{constructor(i,r,h={}){super(i,r,F(n,h))}static fromGlob(i,r={}){return t.AST.fromGlob(i,F(n,r))}},unescape:(s,i={})=>t.unescape(s,F(n,i)),escape:(s,i={})=>t.escape(s,F(n,i)),filter:(s,i={})=>t.filter(s,F(n,i)),defaults:s=>t.defaults(F(n,s)),makeRe:(s,i={})=>t.makeRe(s,F(n,i)),braceExpand:(s,i={})=>t.braceExpand(s,F(n,i)),match:(s,i,r={})=>t.match(s,i,F(n,r)),sep:t.sep,GLOBSTAR:g.GLOBSTAR})};g.defaults=Vi;g.minimatch.defaults=g.defaults;var Ki=(n,t={})=>((0,jt.assertValidPattern)(n),t.nobrace||!/\{(?:(?!\{).)*\}/.test(n)?[n]:(0,Si.expand)(n,{max:t.braceExpandMax}));g.braceExpand=Ki;g.minimatch.braceExpand=g.braceExpand;var Xi=(n,t={})=>new J(n,t).makeRe();g.makeRe=Xi;g.minimatch.makeRe=g.makeRe;var Yi=(n,t,e={})=>{let s=new J(t,e);return n=n.filter(i=>s.match(i)),s.options.nonull&&!n.length&&n.push(t),n};g.match=Yi;g.minimatch.match=g.match;var ss=/[?*]|[+@!]\(.*?\)|\[|\]/,Ji=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),J=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t,e={}){(0,jt.assertValidPattern)(t),e=e||{},this.options=e,this.pattern=t,this.platform=e.platform||hs,this.isWindows=this.platform==="win32";let s="allowWindowsEscape";this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||e[s]===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=e.windowsNoMagicRoot!==void 0?e.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let e of t)if(typeof e!="string")return!0;return!1}debug(...t){}make(){let t=this.pattern,e=this.options;if(!e.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...r)=>console.error(...r)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(r=>this.slashSplit(r));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let i=this.globParts.map((r,h,o)=>{if(this.isWindows&&this.windowsNoMagicRoot){let a=r[0]===""&&r[1]===""&&(r[2]==="?"||!ss.test(r[2]))&&!ss.test(r[3]),l=/^[a-z]:/i.test(r[0]);if(a)return[...r.slice(0,4),...r.slice(4).map(f=>this.parse(f))];if(l)return[r[0],...r.slice(1).map(f=>this.parse(f))]}return r.map(a=>this.parse(a))});if(this.debug(this.pattern,i),this.set=i.filter(r=>r.indexOf(!1)===-1),this.isWindows)for(let r=0;r=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):e>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(e=>{let s=-1;for(;(s=e.indexOf("**",s+1))!==-1;){let i=s;for(;e[i+1]==="**";)i++;i!==s&&e.splice(s,i-s)}return e})}levelOneOptimize(t){return t.map(e=>(e=e.reduce((s,i)=>{let r=s[s.length-1];return i==="**"&&r==="**"?s:i===".."&&r&&r!==".."&&r!=="."&&r!=="**"?(s.pop(),s):(s.push(i),s)},[]),e.length===0?[""]:e))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let i=1;ii&&s.splice(i+1,h-i);let o=s[i+1],a=s[i+2],l=s[i+3];if(o!==".."||!a||a==="."||a===".."||!l||l==="."||l==="..")continue;e=!0,s.splice(i,1);let f=s.slice(0);f[i]="**",t.push(f),i--}if(!this.preserveMultipleSlashes){for(let h=1;he.length)}partsMatch(t,e,s=!1){let i=0,r=0,h=[],o="";for(;iE?e=e.slice(y):E>y&&(t=t.slice(E)))}}let{optimizationLevel:r=1}=this.options;r>=2&&(t=this.levelTwoFileOptimize(t)),this.debug("matchOne",this,{file:t,pattern:e}),this.debug("matchOne",t.length,e.length);for(var h=0,o=0,a=t.length,l=e.length;h>> no match, partial?`,t,d,e,u),d===a))}let p;if(typeof f=="string"?(p=c===f,this.debug("string match",f,c,p)):(p=f.test(c),this.debug("pattern match",f,c,p)),!p)return!1}if(h===a&&o===l)return!0;if(h===a)return s;if(o===l)return h===a-1&&t[h]==="";throw new Error("wtf?")}braceExpand(){return(0,g.braceExpand)(this.pattern,this.options)}parse(t){(0,jt.assertValidPattern)(t);let e=this.options;if(t==="**")return g.GLOBSTAR;if(t==="")return"";let s,i=null;(s=t.match(Fi))?i=e.dot?Ni:ji:(s=t.match(Oi))?i=(e.nocase?e.dot?Ri:Ci:e.dot?Ti:xi)(s[1]):(s=t.match(Li))?i=(e.nocase?e.dot?Bi:Wi:e.dot?Ii:Gi)(s):(s=t.match(Ai))?i=e.dot?Mi:ki:(s=t.match(Pi))&&(i=Di);let r=is.AST.fromGlob(t,this.options).toMMPattern();return i&&typeof r=="object"&&Reflect.defineProperty(r,"test",{value:i}),r}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let t=this.set;if(!t.length)return this.regexp=!1,this.regexp;let e=this.options,s=e.noglobstar?Ui:e.dot?$i:qi,i=new Set(e.nocase?["i"]:[]),r=t.map(a=>{let l=a.map(c=>{if(c instanceof RegExp)for(let d of c.flags.split(""))i.add(d);return typeof c=="string"?Ji(c):c===g.GLOBSTAR?g.GLOBSTAR:c._src});l.forEach((c,d)=>{let u=l[d+1],m=l[d-1];c!==g.GLOBSTAR||m===g.GLOBSTAR||(m===void 0?u!==void 0&&u!==g.GLOBSTAR?l[d+1]="(?:\\/|"+s+"\\/)?"+u:l[d]=s:u===void 0?l[d-1]=m+"(?:\\/|\\/"+s+")?":u!==g.GLOBSTAR&&(l[d-1]=m+"(?:\\/|\\/"+s+"\\/)"+u,l[d+1]=g.GLOBSTAR))});let f=l.filter(c=>c!==g.GLOBSTAR);if(this.partial&&f.length>=1){let c=[];for(let d=1;d<=f.length;d++)c.push(f.slice(0,d).join("/"));return"(?:"+c.join("|")+")"}return f.join("/")}).join("|"),[h,o]=t.length>1?["(?:",")"]:["",""];r="^"+h+r+o+"$",this.partial&&(r="^(?:\\/|"+h+r.slice(1,-1)+o+")$"),this.negate&&(r="^(?!"+r+").+$");try{this.regexp=new RegExp(r,[...i].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return t==="";if(t==="/"&&e)return!0;let s=this.options;this.isWindows&&(t=t.split("\\").join("/"));let i=this.slashSplit(t);this.debug(this.pattern,"split",i);let r=this.set;this.debug(this.pattern,"set",r);let h=i[i.length-1];if(!h)for(let o=i.length-2;!h&&o>=0;o--)h=i[o];for(let o=0;o{"use strict";Object.defineProperty(Wt,"__esModule",{value:!0});Wt.LRUCache=void 0;var er=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,as=new Set,ge=typeof process=="object"&&process?process:{},ls=(n,t,e,s)=>{typeof ge.emitWarning=="function"?ge.emitWarning(n,t,e,s):console.error(`[${e}] ${t}: ${n}`)},Lt=globalThis.AbortController,os=globalThis.AbortSignal;if(typeof Lt>"u"){os=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(e,s){this._onabort.push(s)}},Lt=class{constructor(){t()}signal=new os;abort(e){if(!this.signal.aborted){this.signal.reason=e,this.signal.aborted=!0;for(let s of this.signal._onabort)s(e);this.signal.onabort?.(e)}}};let n=ge.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{n&&(n=!1,ls("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}var sr=n=>!as.has(n),V=n=>n&&n===Math.floor(n)&&n>0&&isFinite(n),cs=n=>V(n)?n<=Math.pow(2,8)?Uint8Array:n<=Math.pow(2,16)?Uint16Array:n<=Math.pow(2,32)?Uint32Array:n<=Number.MAX_SAFE_INTEGER?Nt:null:null,Nt=class extends Array{constructor(n){super(n),this.fill(0)}},ir=class at{heap;length;static#t=!1;static create(t){let e=cs(t);if(!e)return[];at.#t=!0;let s=new at(t,e);return at.#t=!1,s}constructor(t,e){if(!at.#t)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},rr=class us{#t;#s;#n;#r;#h;#S;#w;#c;get perf(){return this.#c}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#o;#f;#u;#a;#i;#d;#v;#y;#p;#R;#m;#O;#x;#g;#b;#E;#T;#e;#F;static unsafeExposeInternals(t){return{starts:t.#x,ttls:t.#g,autopurgeTimers:t.#b,sizes:t.#O,keyMap:t.#u,keyList:t.#a,valList:t.#i,next:t.#d,prev:t.#v,get head(){return t.#y},get tail(){return t.#p},free:t.#R,isBackgroundFetch:e=>t.#l(e),backgroundFetch:(e,s,i,r)=>t.#z(e,s,i,r),moveToTail:e=>t.#N(e),indexes:e=>t.#k(e),rindexes:e=>t.#M(e),isStale:e=>t.#_(e)}}get max(){return this.#t}get maxSize(){return this.#s}get calculatedSize(){return this.#f}get size(){return this.#o}get fetchMethod(){return this.#S}get memoMethod(){return this.#w}get dispose(){return this.#n}get onInsert(){return this.#r}get disposeAfter(){return this.#h}constructor(t){let{max:e=0,ttl:s,ttlResolution:i=1,ttlAutopurge:r,updateAgeOnGet:h,updateAgeOnHas:o,allowStale:a,dispose:l,onInsert:f,disposeAfter:c,noDisposeOnSet:d,noUpdateTTL:u,maxSize:m=0,maxEntrySize:p=0,sizeCalculation:b,fetchMethod:w,memoMethod:v,noDeleteOnFetchRejection:E,noDeleteOnStaleGet:y,allowStaleOnFetchRejection:S,allowStaleOnFetchAbort:B,ignoreFetchAbort:U,perf:et}=t;if(et!==void 0&&typeof et?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#c=et??er,e!==0&&!V(e))throw new TypeError("max option must be a nonnegative integer");let st=e?cs(e):Array;if(!st)throw new Error("invalid max value: "+e);if(this.#t=e,this.#s=m,this.maxEntrySize=p||this.#s,this.sizeCalculation=b,this.sizeCalculation){if(!this.#s&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(v!==void 0&&typeof v!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#w=v,w!==void 0&&typeof w!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#S=w,this.#T=!!w,this.#u=new Map,this.#a=new Array(e).fill(void 0),this.#i=new Array(e).fill(void 0),this.#d=new st(e),this.#v=new st(e),this.#y=0,this.#p=0,this.#R=ir.create(e),this.#o=0,this.#f=0,typeof l=="function"&&(this.#n=l),typeof f=="function"&&(this.#r=f),typeof c=="function"?(this.#h=c,this.#m=[]):(this.#h=void 0,this.#m=void 0),this.#E=!!this.#n,this.#F=!!this.#r,this.#e=!!this.#h,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!u,this.noDeleteOnFetchRejection=!!E,this.allowStaleOnFetchRejection=!!S,this.allowStaleOnFetchAbort=!!B,this.ignoreFetchAbort=!!U,this.maxEntrySize!==0){if(this.#s!==0&&!V(this.#s))throw new TypeError("maxSize must be a positive integer if specified");if(!V(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#$()}if(this.allowStale=!!a,this.noDeleteOnStaleGet=!!y,this.updateAgeOnGet=!!h,this.updateAgeOnHas=!!o,this.ttlResolution=V(i)||i===0?i:1,this.ttlAutopurge=!!r,this.ttl=s||0,this.ttl){if(!V(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#P()}if(this.#t===0&&this.ttl===0&&this.#s===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#t&&!this.#s){let le="LRU_CACHE_UNBOUNDED";sr(le)&&(as.add(le),ls("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",le,us))}}getRemainingTTL(t){return this.#u.has(t)?1/0:0}#P(){let t=new Nt(this.#t),e=new Nt(this.#t);this.#g=t,this.#x=e;let s=this.ttlAutopurge?new Array(this.#t):void 0;this.#b=s,this.#W=(h,o,a=this.#c.now())=>{if(e[h]=o!==0?a:0,t[h]=o,s?.[h]&&(clearTimeout(s[h]),s[h]=void 0),o!==0&&s){let l=setTimeout(()=>{this.#_(h)&&this.#A(this.#a[h],"expire")},o+1);l.unref&&l.unref(),s[h]=l}},this.#C=h=>{e[h]=t[h]!==0?this.#c.now():0},this.#D=(h,o)=>{if(t[o]){let a=t[o],l=e[o];if(!a||!l)return;h.ttl=a,h.start=l,h.now=i||r();let f=h.now-l;h.remainingTTL=a-f}};let i=0,r=()=>{let h=this.#c.now();if(this.ttlResolution>0){i=h;let o=setTimeout(()=>i=0,this.ttlResolution);o.unref&&o.unref()}return h};this.getRemainingTTL=h=>{let o=this.#u.get(h);if(o===void 0)return 0;let a=t[o],l=e[o];if(!a||!l)return 1/0;let f=(i||r())-l;return a-f},this.#_=h=>{let o=e[h],a=t[h];return!!a&&!!o&&(i||r())-o>a}}#C=()=>{};#D=()=>{};#W=()=>{};#_=()=>!1;#$(){let t=new Nt(this.#t);this.#f=0,this.#O=t,this.#L=e=>{this.#f-=t[e],t[e]=0},this.#B=(e,s,i,r)=>{if(this.#l(s))return 0;if(!V(i))if(r){if(typeof r!="function")throw new TypeError("sizeCalculation must be a function");if(i=r(s,e),!V(i))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return i},this.#j=(e,s,i)=>{if(t[e]=s,this.#s){let r=this.#s-t[e];for(;this.#f>r;)this.#G(!0)}this.#f+=t[e],i&&(i.entrySize=s,i.totalCalculatedSize=this.#f)}}#L=t=>{};#j=(t,e,s)=>{};#B=(t,e,s,i)=>{if(s||i)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#k({allowStale:t=this.allowStale}={}){if(this.#o)for(let e=this.#p;!(!this.#I(e)||((t||!this.#_(e))&&(yield e),e===this.#y));)e=this.#v[e]}*#M({allowStale:t=this.allowStale}={}){if(this.#o)for(let e=this.#y;!(!this.#I(e)||((t||!this.#_(e))&&(yield e),e===this.#p));)e=this.#d[e]}#I(t){return t!==void 0&&this.#u.get(this.#a[t])===t}*entries(){for(let t of this.#k())this.#i[t]!==void 0&&this.#a[t]!==void 0&&!this.#l(this.#i[t])&&(yield[this.#a[t],this.#i[t]])}*rentries(){for(let t of this.#M())this.#i[t]!==void 0&&this.#a[t]!==void 0&&!this.#l(this.#i[t])&&(yield[this.#a[t],this.#i[t]])}*keys(){for(let t of this.#k()){let e=this.#a[t];e!==void 0&&!this.#l(this.#i[t])&&(yield e)}}*rkeys(){for(let t of this.#M()){let e=this.#a[t];e!==void 0&&!this.#l(this.#i[t])&&(yield e)}}*values(){for(let t of this.#k())this.#i[t]!==void 0&&!this.#l(this.#i[t])&&(yield this.#i[t])}*rvalues(){for(let t of this.#M())this.#i[t]!==void 0&&!this.#l(this.#i[t])&&(yield this.#i[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(t,e={}){for(let s of this.#k()){let i=this.#i[s],r=this.#l(i)?i.__staleWhileFetching:i;if(r!==void 0&&t(r,this.#a[s],this))return this.get(this.#a[s],e)}}forEach(t,e=this){for(let s of this.#k()){let i=this.#i[s],r=this.#l(i)?i.__staleWhileFetching:i;r!==void 0&&t.call(e,r,this.#a[s],this)}}rforEach(t,e=this){for(let s of this.#M()){let i=this.#i[s],r=this.#l(i)?i.__staleWhileFetching:i;r!==void 0&&t.call(e,r,this.#a[s],this)}}purgeStale(){let t=!1;for(let e of this.#M({allowStale:!0}))this.#_(e)&&(this.#A(this.#a[e],"expire"),t=!0);return t}info(t){let e=this.#u.get(t);if(e===void 0)return;let s=this.#i[e],i=this.#l(s)?s.__staleWhileFetching:s;if(i===void 0)return;let r={value:i};if(this.#g&&this.#x){let h=this.#g[e],o=this.#x[e];if(h&&o){let a=h-(this.#c.now()-o);r.ttl=a,r.start=Date.now()}}return this.#O&&(r.size=this.#O[e]),r}dump(){let t=[];for(let e of this.#k({allowStale:!0})){let s=this.#a[e],i=this.#i[e],r=this.#l(i)?i.__staleWhileFetching:i;if(r===void 0||s===void 0)continue;let h={value:r};if(this.#g&&this.#x){h.ttl=this.#g[e];let o=this.#c.now()-this.#x[e];h.start=Math.floor(Date.now()-o)}this.#O&&(h.size=this.#O[e]),t.unshift([s,h])}return t}load(t){this.clear();for(let[e,s]of t){if(s.start){let i=Date.now()-s.start;s.start=this.#c.now()-i}this.set(e,s.value,s)}}set(t,e,s={}){if(e===void 0)return this.delete(t),this;let{ttl:i=this.ttl,start:r,noDisposeOnSet:h=this.noDisposeOnSet,sizeCalculation:o=this.sizeCalculation,status:a}=s,{noUpdateTTL:l=this.noUpdateTTL}=s,f=this.#B(t,e,s.size||0,o);if(this.maxEntrySize&&f>this.maxEntrySize)return a&&(a.set="miss",a.maxEntrySizeExceeded=!0),this.#A(t,"set"),this;let c=this.#o===0?void 0:this.#u.get(t);if(c===void 0)c=this.#o===0?this.#p:this.#R.length!==0?this.#R.pop():this.#o===this.#t?this.#G(!1):this.#o,this.#a[c]=t,this.#i[c]=e,this.#u.set(t,c),this.#d[this.#p]=c,this.#v[c]=this.#p,this.#p=c,this.#o++,this.#j(c,f,a),a&&(a.set="add"),l=!1,this.#F&&this.#r?.(e,t,"add");else{this.#N(c);let d=this.#i[c];if(e!==d){if(this.#T&&this.#l(d)){d.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:u}=d;u!==void 0&&!h&&(this.#E&&this.#n?.(u,t,"set"),this.#e&&this.#m?.push([u,t,"set"]))}else h||(this.#E&&this.#n?.(d,t,"set"),this.#e&&this.#m?.push([d,t,"set"]));if(this.#L(c),this.#j(c,f,a),this.#i[c]=e,a){a.set="replace";let u=d&&this.#l(d)?d.__staleWhileFetching:d;u!==void 0&&(a.oldValue=u)}}else a&&(a.set="update");this.#F&&this.onInsert?.(e,t,e===d?"update":"replace")}if(i!==0&&!this.#g&&this.#P(),this.#g&&(l||this.#W(c,i,r),a&&this.#D(a,c)),!h&&this.#e&&this.#m){let d=this.#m,u;for(;u=d?.shift();)this.#h?.(...u)}return this}pop(){try{for(;this.#o;){let t=this.#i[this.#y];if(this.#G(!0),this.#l(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#e&&this.#m){let t=this.#m,e;for(;e=t?.shift();)this.#h?.(...e)}}}#G(t){let e=this.#y,s=this.#a[e],i=this.#i[e];return this.#T&&this.#l(i)?i.__abortController.abort(new Error("evicted")):(this.#E||this.#e)&&(this.#E&&this.#n?.(i,s,"evict"),this.#e&&this.#m?.push([i,s,"evict"])),this.#L(e),this.#b?.[e]&&(clearTimeout(this.#b[e]),this.#b[e]=void 0),t&&(this.#a[e]=void 0,this.#i[e]=void 0,this.#R.push(e)),this.#o===1?(this.#y=this.#p=0,this.#R.length=0):this.#y=this.#d[e],this.#u.delete(s),this.#o--,e}has(t,e={}){let{updateAgeOnHas:s=this.updateAgeOnHas,status:i}=e,r=this.#u.get(t);if(r!==void 0){let h=this.#i[r];if(this.#l(h)&&h.__staleWhileFetching===void 0)return!1;if(this.#_(r))i&&(i.has="stale",this.#D(i,r));else return s&&this.#C(r),i&&(i.has="hit",this.#D(i,r)),!0}else i&&(i.has="miss");return!1}peek(t,e={}){let{allowStale:s=this.allowStale}=e,i=this.#u.get(t);if(i===void 0||!s&&this.#_(i))return;let r=this.#i[i];return this.#l(r)?r.__staleWhileFetching:r}#z(t,e,s,i){let r=e===void 0?void 0:this.#i[e];if(this.#l(r))return r;let h=new Lt,{signal:o}=s;o?.addEventListener("abort",()=>h.abort(o.reason),{signal:h.signal});let a={signal:h.signal,options:s,context:i},l=(p,b=!1)=>{let{aborted:w}=h.signal,v=s.ignoreFetchAbort&&p!==void 0,E=s.ignoreFetchAbort||!!(s.allowStaleOnFetchAbort&&p!==void 0);if(s.status&&(w&&!b?(s.status.fetchAborted=!0,s.status.fetchError=h.signal.reason,v&&(s.status.fetchAbortIgnored=!0)):s.status.fetchResolved=!0),w&&!v&&!b)return c(h.signal.reason,E);let y=u,S=this.#i[e];return(S===u||v&&b&&S===void 0)&&(p===void 0?y.__staleWhileFetching!==void 0?this.#i[e]=y.__staleWhileFetching:this.#A(t,"fetch"):(s.status&&(s.status.fetchUpdated=!0),this.set(t,p,a.options))),p},f=p=>(s.status&&(s.status.fetchRejected=!0,s.status.fetchError=p),c(p,!1)),c=(p,b)=>{let{aborted:w}=h.signal,v=w&&s.allowStaleOnFetchAbort,E=v||s.allowStaleOnFetchRejection,y=E||s.noDeleteOnFetchRejection,S=u;if(this.#i[e]===u&&(!y||!b&&S.__staleWhileFetching===void 0?this.#A(t,"fetch"):v||(this.#i[e]=S.__staleWhileFetching)),E)return s.status&&S.__staleWhileFetching!==void 0&&(s.status.returnedStale=!0),S.__staleWhileFetching;if(S.__returned===S)throw p},d=(p,b)=>{let w=this.#S?.(t,r,a);w&&w instanceof Promise&&w.then(v=>p(v===void 0?void 0:v),b),h.signal.addEventListener("abort",()=>{(!s.ignoreFetchAbort||s.allowStaleOnFetchAbort)&&(p(void 0),s.allowStaleOnFetchAbort&&(p=v=>l(v,!0)))})};s.status&&(s.status.fetchDispatched=!0);let u=new Promise(d).then(l,f),m=Object.assign(u,{__abortController:h,__staleWhileFetching:r,__returned:void 0});return e===void 0?(this.set(t,m,{...a.options,status:void 0}),e=this.#u.get(t)):this.#i[e]=m,m}#l(t){if(!this.#T)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty("__staleWhileFetching")&&e.__abortController instanceof Lt}async fetch(t,e={}){let{allowStale:s=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,ttl:h=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:a=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:f=this.noUpdateTTL,noDeleteOnFetchRejection:c=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:u=this.ignoreFetchAbort,allowStaleOnFetchAbort:m=this.allowStaleOnFetchAbort,context:p,forceRefresh:b=!1,status:w,signal:v}=e;if(!this.#T)return w&&(w.fetch="get"),this.get(t,{allowStale:s,updateAgeOnGet:i,noDeleteOnStaleGet:r,status:w});let E={allowStale:s,updateAgeOnGet:i,noDeleteOnStaleGet:r,ttl:h,noDisposeOnSet:o,size:a,sizeCalculation:l,noUpdateTTL:f,noDeleteOnFetchRejection:c,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:m,ignoreFetchAbort:u,status:w,signal:v},y=this.#u.get(t);if(y===void 0){w&&(w.fetch="miss");let S=this.#z(t,y,E,p);return S.__returned=S}else{let S=this.#i[y];if(this.#l(S)){let st=s&&S.__staleWhileFetching!==void 0;return w&&(w.fetch="inflight",st&&(w.returnedStale=!0)),st?S.__staleWhileFetching:S.__returned=S}let B=this.#_(y);if(!b&&!B)return w&&(w.fetch="hit"),this.#N(y),i&&this.#C(y),w&&this.#D(w,y),S;let U=this.#z(t,y,E,p),et=U.__staleWhileFetching!==void 0&&s;return w&&(w.fetch=B?"stale":"refresh",et&&B&&(w.returnedStale=!0)),et?U.__staleWhileFetching:U.__returned=U}}async forceFetch(t,e={}){let s=await this.fetch(t,e);if(s===void 0)throw new Error("fetch() returned undefined");return s}memo(t,e={}){let s=this.#w;if(!s)throw new Error("no memoMethod provided to constructor");let{context:i,forceRefresh:r,...h}=e,o=this.get(t,h);if(!r&&o!==void 0)return o;let a=s(t,o,{options:h,context:i});return this.set(t,a,h),a}get(t,e={}){let{allowStale:s=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,status:h}=e,o=this.#u.get(t);if(o!==void 0){let a=this.#i[o],l=this.#l(a);return h&&this.#D(h,o),this.#_(o)?(h&&(h.get="stale"),l?(h&&s&&a.__staleWhileFetching!==void 0&&(h.returnedStale=!0),s?a.__staleWhileFetching:void 0):(r||this.#A(t,"expire"),h&&s&&(h.returnedStale=!0),s?a:void 0)):(h&&(h.get="hit"),l?a.__staleWhileFetching:(this.#N(o),i&&this.#C(o),a))}else h&&(h.get="miss")}#U(t,e){this.#v[e]=t,this.#d[t]=e}#N(t){t!==this.#p&&(t===this.#y?this.#y=this.#d[t]:this.#U(this.#v[t],this.#d[t]),this.#U(this.#p,t),this.#p=t)}delete(t){return this.#A(t,"delete")}#A(t,e){let s=!1;if(this.#o!==0){let i=this.#u.get(t);if(i!==void 0)if(this.#b?.[i]&&(clearTimeout(this.#b?.[i]),this.#b[i]=void 0),s=!0,this.#o===1)this.#q(e);else{this.#L(i);let r=this.#i[i];if(this.#l(r)?r.__abortController.abort(new Error("deleted")):(this.#E||this.#e)&&(this.#E&&this.#n?.(r,t,e),this.#e&&this.#m?.push([r,t,e])),this.#u.delete(t),this.#a[i]=void 0,this.#i[i]=void 0,i===this.#p)this.#p=this.#v[i];else if(i===this.#y)this.#y=this.#d[i];else{let h=this.#v[i];this.#d[h]=this.#d[i];let o=this.#d[i];this.#v[o]=this.#v[i]}this.#o--,this.#R.push(i)}}if(this.#e&&this.#m?.length){let i=this.#m,r;for(;r=i?.shift();)this.#h?.(...r)}return s}clear(){return this.#q("delete")}#q(t){for(let e of this.#M({allowStale:!0})){let s=this.#i[e];if(this.#l(s))s.__abortController.abort(new Error("deleted"));else{let i=this.#a[e];this.#E&&this.#n?.(s,i,t),this.#e&&this.#m?.push([s,i,t])}}if(this.#u.clear(),this.#i.fill(void 0),this.#a.fill(void 0),this.#g&&this.#x){this.#g.fill(0),this.#x.fill(0);for(let e of this.#b??[])e!==void 0&&clearTimeout(e);this.#b?.fill(void 0)}if(this.#O&&this.#O.fill(0),this.#y=0,this.#p=0,this.#R.length=0,this.#f=0,this.#o=0,this.#e&&this.#m){let e=this.#m,s;for(;s=e?.shift();)this.#h?.(...s)}}};Wt.LRUCache=rr});var Oe=R(P=>{"use strict";var nr=P&&P.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(P,"__esModule",{value:!0});P.Minipass=P.isWritable=P.isReadable=P.isStream=void 0;var ds=typeof process=="object"&&process?process:{stdout:null,stderr:null},_e=require("node:events"),ws=nr(require("node:stream")),hr=require("node:string_decoder"),or=n=>!!n&&typeof n=="object"&&(n instanceof qt||n instanceof ws.default||(0,P.isReadable)(n)||(0,P.isWritable)(n));P.isStream=or;var ar=n=>!!n&&typeof n=="object"&&n instanceof _e.EventEmitter&&typeof n.pipe=="function"&&n.pipe!==ws.default.Writable.prototype.pipe;P.isReadable=ar;var lr=n=>!!n&&typeof n=="object"&&n instanceof _e.EventEmitter&&typeof n.write=="function"&&typeof n.end=="function";P.isWritable=lr;var $=Symbol("EOF"),q=Symbol("maybeEmitEnd"),K=Symbol("emittedEnd"),Bt=Symbol("emittingEnd"),lt=Symbol("emittedError"),It=Symbol("closed"),ps=Symbol("read"),Gt=Symbol("flush"),ms=Symbol("flushChunk"),L=Symbol("encoding"),rt=Symbol("decoder"),x=Symbol("flowing"),ct=Symbol("paused"),nt=Symbol("resume"),T=Symbol("buffer"),M=Symbol("pipes"),C=Symbol("bufferLength"),we=Symbol("bufferPush"),zt=Symbol("bufferShift"),k=Symbol("objectMode"),O=Symbol("destroyed"),be=Symbol("error"),ye=Symbol("emitData"),gs=Symbol("emitEnd"),Se=Symbol("emitEnd2"),I=Symbol("async"),ve=Symbol("abort"),Ut=Symbol("aborted"),ut=Symbol("signal"),Z=Symbol("dataListeners"),D=Symbol("discarded"),ft=n=>Promise.resolve().then(n),cr=n=>n(),ur=n=>n==="end"||n==="finish"||n==="prefinish",fr=n=>n instanceof ArrayBuffer||!!n&&typeof n=="object"&&n.constructor&&n.constructor.name==="ArrayBuffer"&&n.byteLength>=0,dr=n=>!Buffer.isBuffer(n)&&ArrayBuffer.isView(n),$t=class{src;dest;opts;ondrain;constructor(t,e,s){this.src=t,this.dest=e,this.opts=s,this.ondrain=()=>t[nt](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},Ee=class extends $t{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,e,s){super(t,e,s),this.proxyErrors=i=>this.dest.emit("error",i),t.on("error",this.proxyErrors)}},pr=n=>!!n.objectMode,mr=n=>!n.objectMode&&!!n.encoding&&n.encoding!=="buffer",qt=class extends _e.EventEmitter{[x]=!1;[ct]=!1;[M]=[];[T]=[];[k];[L];[I];[rt];[$]=!1;[K]=!1;[Bt]=!1;[It]=!1;[lt]=null;[C]=0;[O]=!1;[ut];[Ut]=!1;[Z]=0;[D]=!1;writable=!0;readable=!0;constructor(...t){let e=t[0]||{};if(super(),e.objectMode&&typeof e.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");pr(e)?(this[k]=!0,this[L]=null):mr(e)?(this[L]=e.encoding,this[k]=!1):(this[k]=!1,this[L]=null),this[I]=!!e.async,this[rt]=this[L]?new hr.StringDecoder(this[L]):null,e&&e.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[T]}),e&&e.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[M]});let{signal:s}=e;s&&(this[ut]=s,s.aborted?this[ve]():s.addEventListener("abort",()=>this[ve]()))}get bufferLength(){return this[C]}get encoding(){return this[L]}set encoding(t){throw new Error("Encoding must be set at instantiation time")}setEncoding(t){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[k]}set objectMode(t){throw new Error("objectMode must be set at instantiation time")}get async(){return this[I]}set async(t){this[I]=this[I]||!!t}[ve](){this[Ut]=!0,this.emit("abort",this[ut]?.reason),this.destroy(this[ut]?.reason)}get aborted(){return this[Ut]}set aborted(t){}write(t,e,s){if(this[Ut])return!1;if(this[$])throw new Error("write after end");if(this[O])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof e=="function"&&(s=e,e="utf8"),e||(e="utf8");let i=this[I]?ft:cr;if(!this[k]&&!Buffer.isBuffer(t)){if(dr(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(fr(t))t=Buffer.from(t);else if(typeof t!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[k]?(this[x]&&this[C]!==0&&this[Gt](!0),this[x]?this.emit("data",t):this[we](t),this[C]!==0&&this.emit("readable"),s&&i(s),this[x]):t.length?(typeof t=="string"&&!(e===this[L]&&!this[rt]?.lastNeed)&&(t=Buffer.from(t,e)),Buffer.isBuffer(t)&&this[L]&&(t=this[rt].write(t)),this[x]&&this[C]!==0&&this[Gt](!0),this[x]?this.emit("data",t):this[we](t),this[C]!==0&&this.emit("readable"),s&&i(s),this[x]):(this[C]!==0&&this.emit("readable"),s&&i(s),this[x])}read(t){if(this[O])return null;if(this[D]=!1,this[C]===0||t===0||t&&t>this[C])return this[q](),null;this[k]&&(t=null),this[T].length>1&&!this[k]&&(this[T]=[this[L]?this[T].join(""):Buffer.concat(this[T],this[C])]);let e=this[ps](t||null,this[T][0]);return this[q](),e}[ps](t,e){if(this[k])this[zt]();else{let s=e;t===s.length||t===null?this[zt]():typeof s=="string"?(this[T][0]=s.slice(t),e=s.slice(0,t),this[C]-=t):(this[T][0]=s.subarray(t),e=s.subarray(0,t),this[C]-=t)}return this.emit("data",e),!this[T].length&&!this[$]&&this.emit("drain"),e}end(t,e,s){return typeof t=="function"&&(s=t,t=void 0),typeof e=="function"&&(s=e,e="utf8"),t!==void 0&&this.write(t,e),s&&this.once("end",s),this[$]=!0,this.writable=!1,(this[x]||!this[ct])&&this[q](),this}[nt](){this[O]||(!this[Z]&&!this[M].length&&(this[D]=!0),this[ct]=!1,this[x]=!0,this.emit("resume"),this[T].length?this[Gt]():this[$]?this[q]():this.emit("drain"))}resume(){return this[nt]()}pause(){this[x]=!1,this[ct]=!0,this[D]=!1}get destroyed(){return this[O]}get flowing(){return this[x]}get paused(){return this[ct]}[we](t){this[k]?this[C]+=1:this[C]+=t.length,this[T].push(t)}[zt](){return this[k]?this[C]-=1:this[C]-=this[T][0].length,this[T].shift()}[Gt](t=!1){do;while(this[ms](this[zt]())&&this[T].length);!t&&!this[T].length&&!this[$]&&this.emit("drain")}[ms](t){return this.emit("data",t),this[x]}pipe(t,e){if(this[O])return t;this[D]=!1;let s=this[K];return e=e||{},t===ds.stdout||t===ds.stderr?e.end=!1:e.end=e.end!==!1,e.proxyErrors=!!e.proxyErrors,s?e.end&&t.end():(this[M].push(e.proxyErrors?new Ee(this,t,e):new $t(this,t,e)),this[I]?ft(()=>this[nt]()):this[nt]()),t}unpipe(t){let e=this[M].find(s=>s.dest===t);e&&(this[M].length===1?(this[x]&&this[Z]===0&&(this[x]=!1),this[M]=[]):this[M].splice(this[M].indexOf(e),1),e.unpipe())}addListener(t,e){return this.on(t,e)}on(t,e){let s=super.on(t,e);if(t==="data")this[D]=!1,this[Z]++,!this[M].length&&!this[x]&&this[nt]();else if(t==="readable"&&this[C]!==0)super.emit("readable");else if(ur(t)&&this[K])super.emit(t),this.removeAllListeners(t);else if(t==="error"&&this[lt]){let i=e;this[I]?ft(()=>i.call(this,this[lt])):i.call(this,this[lt])}return s}removeListener(t,e){return this.off(t,e)}off(t,e){let s=super.off(t,e);return t==="data"&&(this[Z]=this.listeners("data").length,this[Z]===0&&!this[D]&&!this[M].length&&(this[x]=!1)),s}removeAllListeners(t){let e=super.removeAllListeners(t);return(t==="data"||t===void 0)&&(this[Z]=0,!this[D]&&!this[M].length&&(this[x]=!1)),e}get emittedEnd(){return this[K]}[q](){!this[Bt]&&!this[K]&&!this[O]&&this[T].length===0&&this[$]&&(this[Bt]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[It]&&this.emit("close"),this[Bt]=!1)}emit(t,...e){let s=e[0];if(t!=="error"&&t!=="close"&&t!==O&&this[O])return!1;if(t==="data")return!this[k]&&!s?!1:this[I]?(ft(()=>this[ye](s)),!0):this[ye](s);if(t==="end")return this[gs]();if(t==="close"){if(this[It]=!0,!this[K]&&!this[O])return!1;let r=super.emit("close");return this.removeAllListeners("close"),r}else if(t==="error"){this[lt]=s,super.emit(be,s);let r=!this[ut]||this.listeners("error").length?super.emit("error",s):!1;return this[q](),r}else if(t==="resume"){let r=super.emit("resume");return this[q](),r}else if(t==="finish"||t==="prefinish"){let r=super.emit(t);return this.removeAllListeners(t),r}let i=super.emit(t,...e);return this[q](),i}[ye](t){for(let s of this[M])s.dest.write(t)===!1&&this.pause();let e=this[D]?!1:super.emit("data",t);return this[q](),e}[gs](){return this[K]?!1:(this[K]=!0,this.readable=!1,this[I]?(ft(()=>this[Se]()),!0):this[Se]())}[Se](){if(this[rt]){let e=this[rt].end();if(e){for(let s of this[M])s.dest.write(e);this[D]||super.emit("data",e)}}for(let e of this[M])e.end();let t=super.emit("end");return this.removeAllListeners("end"),t}async collect(){let t=Object.assign([],{dataLength:0});this[k]||(t.dataLength=0);let e=this.promise();return this.on("data",s=>{t.push(s),this[k]||(t.dataLength+=s.length)}),await e,t}async concat(){if(this[k])throw new Error("cannot concat in objectMode");let t=await this.collect();return this[L]?t.join(""):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,e)=>{this.on(O,()=>e(new Error("stream destroyed"))),this.on("error",s=>e(s)),this.on("end",()=>t())})}[Symbol.asyncIterator](){this[D]=!1;let t=!1,e=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return e();let i=this.read();if(i!==null)return Promise.resolve({done:!1,value:i});if(this[$])return e();let r,h,o=c=>{this.off("data",a),this.off("end",l),this.off(O,f),e(),h(c)},a=c=>{this.off("error",o),this.off("end",l),this.off(O,f),this.pause(),r({value:c,done:!!this[$]})},l=()=>{this.off("error",o),this.off("data",a),this.off(O,f),e(),r({done:!0,value:void 0})},f=()=>o(new Error("stream destroyed"));return new Promise((c,d)=>{h=d,r=c,this.once(O,f),this.once("error",o),this.once("end",l),this.once("data",a)})},throw:e,return:e,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[D]=!1;let t=!1,e=()=>(this.pause(),this.off(be,e),this.off(O,e),this.off("end",e),t=!0,{done:!0,value:void 0}),s=()=>{if(t)return e();let i=this.read();return i===null?e():{done:!1,value:i}};return this.once("end",e),this.once(be,e),this.once(O,e),{next:s,throw:e,return:e,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(t){if(this[O])return t?this.emit("error",t):this.emit(O),this;this[O]=!0,this[D]=!0,this[T].length=0,this[C]=0;let e=this;return typeof e.close=="function"&&!this[It]&&e.close(),t?this.emit("error",t):this.emit(O),this}static get isStream(){return P.isStream}};P.Minipass=qt});var Ms=R(_=>{"use strict";var gr=_&&_.__createBinding||(Object.create?(function(n,t,e,s){s===void 0&&(s=e);var i=Object.getOwnPropertyDescriptor(t,e);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[e]}}),Object.defineProperty(n,s,i)}):(function(n,t,e,s){s===void 0&&(s=e),n[s]=t[e]})),wr=_&&_.__setModuleDefault||(Object.create?(function(n,t){Object.defineProperty(n,"default",{enumerable:!0,value:t})}):function(n,t){n.default=t}),br=_&&_.__importStar||function(n){if(n&&n.__esModule)return n;var t={};if(n!=null)for(var e in n)e!=="default"&&Object.prototype.hasOwnProperty.call(n,e)&&gr(t,n,e);return wr(t,n),t};Object.defineProperty(_,"__esModule",{value:!0});_.PathScurry=_.Path=_.PathScurryDarwin=_.PathScurryPosix=_.PathScurryWin32=_.PathScurryBase=_.PathPosix=_.PathWin32=_.PathBase=_.ChildrenCache=_.ResolveCache=void 0;var Qt=fs(),Yt=require("node:path"),yr=require("node:url"),pt=require("fs"),Sr=br(require("node:fs")),vr=pt.realpathSync.native,Ht=require("node:fs/promises"),bs=Oe(),mt={lstatSync:pt.lstatSync,readdir:pt.readdir,readdirSync:pt.readdirSync,readlinkSync:pt.readlinkSync,realpathSync:vr,promises:{lstat:Ht.lstat,readdir:Ht.readdir,readlink:Ht.readlink,realpath:Ht.realpath}},_s=n=>!n||n===mt||n===Sr?mt:{...mt,...n,promises:{...mt.promises,...n.promises||{}}},Os=/^\\\\\?\\([a-z]:)\\?$/i,Er=n=>n.replace(/\//g,"\\").replace(Os,"$1\\"),_r=/[\\\/]/,N=0,xs=1,Ts=2,G=4,Cs=6,Rs=8,Q=10,As=12,j=15,dt=~j,xe=16,ys=32,gt=64,W=128,Vt=256,Xt=512,Ss=gt|W|Xt,Or=1023,Te=n=>n.isFile()?Rs:n.isDirectory()?G:n.isSymbolicLink()?Q:n.isCharacterDevice()?Ts:n.isBlockDevice()?Cs:n.isSocket()?As:n.isFIFO()?xs:N,vs=new Qt.LRUCache({max:2**12}),wt=n=>{let t=vs.get(n);if(t)return t;let e=n.normalize("NFKD");return vs.set(n,e),e},Es=new Qt.LRUCache({max:2**12}),Kt=n=>{let t=Es.get(n);if(t)return t;let e=wt(n.toLowerCase());return Es.set(n,e),e},bt=class extends Qt.LRUCache{constructor(){super({max:256})}};_.ResolveCache=bt;var Jt=class extends Qt.LRUCache{constructor(t=16*1024){super({maxSize:t,sizeCalculation:e=>e.length+1})}};_.ChildrenCache=Jt;var ks=Symbol("PathScurry setAsCwd"),A=class{name;root;roots;parent;nocase;isCWD=!1;#t;#s;get dev(){return this.#s}#n;get mode(){return this.#n}#r;get nlink(){return this.#r}#h;get uid(){return this.#h}#S;get gid(){return this.#S}#w;get rdev(){return this.#w}#c;get blksize(){return this.#c}#o;get ino(){return this.#o}#f;get size(){return this.#f}#u;get blocks(){return this.#u}#a;get atimeMs(){return this.#a}#i;get mtimeMs(){return this.#i}#d;get ctimeMs(){return this.#d}#v;get birthtimeMs(){return this.#v}#y;get atime(){return this.#y}#p;get mtime(){return this.#p}#R;get ctime(){return this.#R}#m;get birthtime(){return this.#m}#O;#x;#g;#b;#E;#T;#e;#F;#P;#C;get parentPath(){return(this.parent||this).fullpath()}get path(){return this.parentPath}constructor(t,e=N,s,i,r,h,o){this.name=t,this.#O=r?Kt(t):wt(t),this.#e=e&Or,this.nocase=r,this.roots=i,this.root=s||this,this.#F=h,this.#g=o.fullpath,this.#E=o.relative,this.#T=o.relativePosix,this.parent=o.parent,this.parent?this.#t=this.parent.#t:this.#t=_s(o.fs)}depth(){return this.#x!==void 0?this.#x:this.parent?this.#x=this.parent.depth()+1:this.#x=0}childrenCache(){return this.#F}resolve(t){if(!t)return this;let e=this.getRootString(t),i=t.substring(e.length).split(this.splitSep);return e?this.getRoot(e).#D(i):this.#D(i)}#D(t){let e=this;for(let s of t)e=e.child(s);return e}children(){let t=this.#F.get(this);if(t)return t;let e=Object.assign([],{provisional:0});return this.#F.set(this,e),this.#e&=~xe,e}child(t,e){if(t===""||t===".")return this;if(t==="..")return this.parent||this;let s=this.children(),i=this.nocase?Kt(t):wt(t);for(let a of s)if(a.#O===i)return a;let r=this.parent?this.sep:"",h=this.#g?this.#g+r+t:void 0,o=this.newChild(t,N,{...e,parent:this,fullpath:h});return this.canReaddir()||(o.#e|=W),s.push(o),o}relative(){if(this.isCWD)return"";if(this.#E!==void 0)return this.#E;let t=this.name,e=this.parent;if(!e)return this.#E=this.name;let s=e.relative();return s+(!s||!e.parent?"":this.sep)+t}relativePosix(){if(this.sep==="/")return this.relative();if(this.isCWD)return"";if(this.#T!==void 0)return this.#T;let t=this.name,e=this.parent;if(!e)return this.#T=this.fullpathPosix();let s=e.relativePosix();return s+(!s||!e.parent?"":"/")+t}fullpath(){if(this.#g!==void 0)return this.#g;let t=this.name,e=this.parent;if(!e)return this.#g=this.name;let i=e.fullpath()+(e.parent?this.sep:"")+t;return this.#g=i}fullpathPosix(){if(this.#b!==void 0)return this.#b;if(this.sep==="/")return this.#b=this.fullpath();if(!this.parent){let i=this.fullpath().replace(/\\/g,"/");return/^[a-z]:\//i.test(i)?this.#b=`//?/${i}`:this.#b=i}let t=this.parent,e=t.fullpathPosix(),s=e+(!e||!t.parent?"":"/")+this.name;return this.#b=s}isUnknown(){return(this.#e&j)===N}isType(t){return this[`is${t}`]()}getType(){return this.isUnknown()?"Unknown":this.isDirectory()?"Directory":this.isFile()?"File":this.isSymbolicLink()?"SymbolicLink":this.isFIFO()?"FIFO":this.isCharacterDevice()?"CharacterDevice":this.isBlockDevice()?"BlockDevice":this.isSocket()?"Socket":"Unknown"}isFile(){return(this.#e&j)===Rs}isDirectory(){return(this.#e&j)===G}isCharacterDevice(){return(this.#e&j)===Ts}isBlockDevice(){return(this.#e&j)===Cs}isFIFO(){return(this.#e&j)===xs}isSocket(){return(this.#e&j)===As}isSymbolicLink(){return(this.#e&Q)===Q}lstatCached(){return this.#e&ys?this:void 0}readlinkCached(){return this.#P}realpathCached(){return this.#C}readdirCached(){let t=this.children();return t.slice(0,t.provisional)}canReadlink(){if(this.#P)return!0;if(!this.parent)return!1;let t=this.#e&j;return!(t!==N&&t!==Q||this.#e&Vt||this.#e&W)}calledReaddir(){return!!(this.#e&xe)}isENOENT(){return!!(this.#e&W)}isNamed(t){return this.nocase?this.#O===Kt(t):this.#O===wt(t)}async readlink(){let t=this.#P;if(t)return t;if(this.canReadlink()&&this.parent)try{let e=await this.#t.promises.readlink(this.fullpath()),s=(await this.parent.realpath())?.resolve(e);if(s)return this.#P=s}catch(e){this.#M(e.code);return}}readlinkSync(){let t=this.#P;if(t)return t;if(this.canReadlink()&&this.parent)try{let e=this.#t.readlinkSync(this.fullpath()),s=this.parent.realpathSync()?.resolve(e);if(s)return this.#P=s}catch(e){this.#M(e.code);return}}#W(t){this.#e|=xe;for(let e=t.provisional;es(null,t))}readdirCB(t,e=!1){if(!this.canReaddir()){e?t(null,[]):queueMicrotask(()=>t(null,[]));return}let s=this.children();if(this.calledReaddir()){let r=s.slice(0,s.provisional);e?t(null,r):queueMicrotask(()=>t(null,r));return}if(this.#N.push(t),this.#A)return;this.#A=!0;let i=this.fullpath();this.#t.readdir(i,{withFileTypes:!0},(r,h)=>{if(r)this.#B(r.code),s.provisional=0;else{for(let o of h)this.#I(o,s);this.#W(s)}this.#q(s.slice(0,s.provisional))})}#H;async readdir(){if(!this.canReaddir())return[];let t=this.children();if(this.calledReaddir())return t.slice(0,t.provisional);let e=this.fullpath();if(this.#H)await this.#H;else{let s=()=>{};this.#H=new Promise(i=>s=i);try{for(let i of await this.#t.promises.readdir(e,{withFileTypes:!0}))this.#I(i,t);this.#W(t)}catch(i){this.#B(i.code),t.provisional=0}this.#H=void 0,s()}return t.slice(0,t.provisional)}readdirSync(){if(!this.canReaddir())return[];let t=this.children();if(this.calledReaddir())return t.slice(0,t.provisional);let e=this.fullpath();try{for(let s of this.#t.readdirSync(e,{withFileTypes:!0}))this.#I(s,t);this.#W(t)}catch(s){this.#B(s.code),t.provisional=0}return t.slice(0,t.provisional)}canReaddir(){if(this.#e&Ss)return!1;let t=j&this.#e;return t===N||t===G||t===Q}shouldWalk(t,e){return(this.#e&G)===G&&!(this.#e&Ss)&&!t.has(this)&&(!e||e(this))}async realpath(){if(this.#C)return this.#C;if(!((Xt|Vt|W)&this.#e))try{let t=await this.#t.promises.realpath(this.fullpath());return this.#C=this.resolve(t)}catch{this.#L()}}realpathSync(){if(this.#C)return this.#C;if(!((Xt|Vt|W)&this.#e))try{let t=this.#t.realpathSync(this.fullpath());return this.#C=this.resolve(t)}catch{this.#L()}}[ks](t){if(t===this)return;t.isCWD=!1,this.isCWD=!0;let e=new Set([]),s=[],i=this;for(;i&&i.parent;)e.add(i),i.#E=s.join(this.sep),i.#T=s.join("/"),i=i.parent,s.push("..");for(i=t;i&&i.parent&&!e.has(i);)i.#E=void 0,i.#T=void 0,i=i.parent}};_.PathBase=A;var yt=class n extends A{sep="\\";splitSep=_r;constructor(t,e=N,s,i,r,h,o){super(t,e,s,i,r,h,o)}newChild(t,e=N,s={}){return new n(t,e,this.root,this.roots,this.nocase,this.childrenCache(),s)}getRootString(t){return Yt.win32.parse(t).root}getRoot(t){if(t=Er(t.toUpperCase()),t===this.root.name)return this.root;for(let[e,s]of Object.entries(this.roots))if(this.sameRoot(t,e))return this.roots[t]=s;return this.roots[t]=new Et(t,this).root}sameRoot(t,e=this.root.name){return t=t.toUpperCase().replace(/\//g,"\\").replace(Os,"$1\\"),t===e}};_.PathWin32=yt;var St=class n extends A{splitSep="/";sep="/";constructor(t,e=N,s,i,r,h,o){super(t,e,s,i,r,h,o)}getRootString(t){return t.startsWith("/")?"/":""}getRoot(t){return this.root}newChild(t,e=N,s={}){return new n(t,e,this.root,this.roots,this.nocase,this.childrenCache(),s)}};_.PathPosix=St;var vt=class{root;rootPath;roots;cwd;#t;#s;#n;nocase;#r;constructor(t=process.cwd(),e,s,{nocase:i,childrenCacheSize:r=16*1024,fs:h=mt}={}){this.#r=_s(h),(t instanceof URL||t.startsWith("file://"))&&(t=(0,yr.fileURLToPath)(t));let o=e.resolve(t);this.roots=Object.create(null),this.rootPath=this.parseRootPath(o),this.#t=new bt,this.#s=new bt,this.#n=new Jt(r);let a=o.substring(this.rootPath.length).split(s);if(a.length===1&&!a[0]&&a.pop(),i===void 0)throw new TypeError("must provide nocase setting to PathScurryBase ctor");this.nocase=i,this.root=this.newRoot(this.#r),this.roots[this.rootPath]=this.root;let l=this.root,f=a.length-1,c=e.sep,d=this.rootPath,u=!1;for(let m of a){let p=f--;l=l.child(m,{relative:new Array(p).fill("..").join(c),relativePosix:new Array(p).fill("..").join("/"),fullpath:d+=(u?"":c)+m}),u=!0}this.cwd=l}depth(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.depth()}childrenCache(){return this.#n}resolve(...t){let e="";for(let r=t.length-1;r>=0;r--){let h=t[r];if(!(!h||h===".")&&(e=e?`${h}/${e}`:h,this.isAbsolute(h)))break}let s=this.#t.get(e);if(s!==void 0)return s;let i=this.cwd.resolve(e).fullpath();return this.#t.set(e,i),i}resolvePosix(...t){let e="";for(let r=t.length-1;r>=0;r--){let h=t[r];if(!(!h||h===".")&&(e=e?`${h}/${e}`:h,this.isAbsolute(h)))break}let s=this.#s.get(e);if(s!==void 0)return s;let i=this.cwd.resolve(e).fullpathPosix();return this.#s.set(e,i),i}relative(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.relative()}relativePosix(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.relativePosix()}basename(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.name}dirname(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),(t.parent||t).fullpath()}async readdir(t=this.cwd,e={withFileTypes:!0}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof A||(e=t,t=this.cwd);let{withFileTypes:s}=e;if(t.canReaddir()){let i=await t.readdir();return s?i:i.map(r=>r.name)}else return[]}readdirSync(t=this.cwd,e={withFileTypes:!0}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof A||(e=t,t=this.cwd);let{withFileTypes:s=!0}=e;return t.canReaddir()?s?t.readdirSync():t.readdirSync().map(i=>i.name):[]}async lstat(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.lstat()}lstatSync(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.lstatSync()}async readlink(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof A||(e=t.withFileTypes,t=this.cwd);let s=await t.readlink();return e?s:s?.fullpath()}readlinkSync(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof A||(e=t.withFileTypes,t=this.cwd);let s=t.readlinkSync();return e?s:s?.fullpath()}async realpath(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof A||(e=t.withFileTypes,t=this.cwd);let s=await t.realpath();return e?s:s?.fullpath()}realpathSync(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof A||(e=t.withFileTypes,t=this.cwd);let s=t.realpathSync();return e?s:s?.fullpath()}async walk(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof A||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:h}=e,o=[];(!r||r(t))&&o.push(s?t:t.fullpath());let a=new Set,l=(c,d)=>{a.add(c),c.readdirCB((u,m)=>{if(u)return d(u);let p=m.length;if(!p)return d();let b=()=>{--p===0&&d()};for(let w of m)(!r||r(w))&&o.push(s?w:w.fullpath()),i&&w.isSymbolicLink()?w.realpath().then(v=>v?.isUnknown()?v.lstat():v).then(v=>v?.shouldWalk(a,h)?l(v,b):b()):w.shouldWalk(a,h)?l(w,b):b()},!0)},f=t;return new Promise((c,d)=>{l(f,u=>{if(u)return d(u);c(o)})})}walkSync(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof A||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:h}=e,o=[];(!r||r(t))&&o.push(s?t:t.fullpath());let a=new Set([t]);for(let l of a){let f=l.readdirSync();for(let c of f){(!r||r(c))&&o.push(s?c:c.fullpath());let d=c;if(c.isSymbolicLink()){if(!(i&&(d=c.realpathSync())))continue;d.isUnknown()&&d.lstatSync()}d.shouldWalk(a,h)&&a.add(d)}}return o}[Symbol.asyncIterator](){return this.iterate()}iterate(t=this.cwd,e={}){return typeof t=="string"?t=this.cwd.resolve(t):t instanceof A||(e=t,t=this.cwd),this.stream(t,e)[Symbol.asyncIterator]()}[Symbol.iterator](){return this.iterateSync()}*iterateSync(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof A||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:h}=e;(!r||r(t))&&(yield s?t:t.fullpath());let o=new Set([t]);for(let a of o){let l=a.readdirSync();for(let f of l){(!r||r(f))&&(yield s?f:f.fullpath());let c=f;if(f.isSymbolicLink()){if(!(i&&(c=f.realpathSync())))continue;c.isUnknown()&&c.lstatSync()}c.shouldWalk(o,h)&&o.add(c)}}}stream(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof A||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:h}=e,o=new bs.Minipass({objectMode:!0});(!r||r(t))&&o.write(s?t:t.fullpath());let a=new Set,l=[t],f=0,c=()=>{let d=!1;for(;!d;){let u=l.shift();if(!u){f===0&&o.end();return}f++,a.add(u);let m=(b,w,v=!1)=>{if(b)return o.emit("error",b);if(i&&!v){let E=[];for(let y of w)y.isSymbolicLink()&&E.push(y.realpath().then(S=>S?.isUnknown()?S.lstat():S));if(E.length){Promise.all(E).then(()=>m(null,w,!0));return}}for(let E of w)E&&(!r||r(E))&&(o.write(s?E:E.fullpath())||(d=!0));f--;for(let E of w){let y=E.realpathCached()||E;y.shouldWalk(a,h)&&l.push(y)}d&&!o.flowing?o.once("drain",c):p||c()},p=!0;u.readdirCB(m,!0),p=!1}};return c(),o}streamSync(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof A||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:h}=e,o=new bs.Minipass({objectMode:!0}),a=new Set;(!r||r(t))&&o.write(s?t:t.fullpath());let l=[t],f=0,c=()=>{let d=!1;for(;!d;){let u=l.shift();if(!u){f===0&&o.end();return}f++,a.add(u);let m=u.readdirSync();for(let p of m)(!r||r(p))&&(o.write(s?p:p.fullpath())||(d=!0));f--;for(let p of m){let b=p;if(p.isSymbolicLink()){if(!(i&&(b=p.realpathSync())))continue;b.isUnknown()&&b.lstatSync()}b.shouldWalk(a,h)&&l.push(b)}}d&&!o.flowing&&o.once("drain",c)};return c(),o}chdir(t=this.cwd){let e=this.cwd;this.cwd=typeof t=="string"?this.cwd.resolve(t):t,this.cwd[ks](e)}};_.PathScurryBase=vt;var Et=class extends vt{sep="\\";constructor(t=process.cwd(),e={}){let{nocase:s=!0}=e;super(t,Yt.win32,"\\",{...e,nocase:s}),this.nocase=s;for(let i=this.cwd;i;i=i.parent)i.nocase=this.nocase}parseRootPath(t){return Yt.win32.parse(t).root.toUpperCase()}newRoot(t){return new yt(this.rootPath,G,void 0,this.roots,this.nocase,this.childrenCache(),{fs:t})}isAbsolute(t){return t.startsWith("/")||t.startsWith("\\")||/^[a-z]:(\/|\\)/i.test(t)}};_.PathScurryWin32=Et;var _t=class extends vt{sep="/";constructor(t=process.cwd(),e={}){let{nocase:s=!1}=e;super(t,Yt.posix,"/",{...e,nocase:s}),this.nocase=s}parseRootPath(t){return"/"}newRoot(t){return new St(this.rootPath,G,void 0,this.roots,this.nocase,this.childrenCache(),{fs:t})}isAbsolute(t){return t.startsWith("/")}};_.PathScurryPosix=_t;var Zt=class extends _t{constructor(t=process.cwd(),e={}){let{nocase:s=!0}=e;super(t,{...e,nocase:s})}};_.PathScurryDarwin=Zt;_.Path=process.platform==="win32"?yt:St;_.PathScurry=process.platform==="win32"?Et:process.platform==="darwin"?Zt:_t});var Re=R(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.Pattern=void 0;var xr=H(),Tr=n=>n.length>=1,Cr=n=>n.length>=1,Rr=Symbol.for("nodejs.util.inspect.custom"),Ce=class n{#t;#s;#n;length;#r;#h;#S;#w;#c;#o;#f=!0;constructor(t,e,s,i){if(!Tr(t))throw new TypeError("empty pattern list");if(!Cr(e))throw new TypeError("empty glob list");if(e.length!==t.length)throw new TypeError("mismatched pattern list and glob list lengths");if(this.length=t.length,s<0||s>=this.length)throw new TypeError("index out of range");if(this.#t=t,this.#s=e,this.#n=s,this.#r=i,this.#n===0){if(this.isUNC()){let[r,h,o,a,...l]=this.#t,[f,c,d,u,...m]=this.#s;l[0]===""&&(l.shift(),m.shift());let p=[r,h,o,a,""].join("/"),b=[f,c,d,u,""].join("/");this.#t=[p,...l],this.#s=[b,...m],this.length=this.#t.length}else if(this.isDrive()||this.isAbsolute()){let[r,...h]=this.#t,[o,...a]=this.#s;h[0]===""&&(h.shift(),a.shift());let l=r+"/",f=o+"/";this.#t=[l,...h],this.#s=[f,...a],this.length=this.#t.length}}}[Rr](){return"Pattern <"+this.#s.slice(this.#n).join("/")+">"}pattern(){return this.#t[this.#n]}isString(){return typeof this.#t[this.#n]=="string"}isGlobstar(){return this.#t[this.#n]===xr.GLOBSTAR}isRegExp(){return this.#t[this.#n]instanceof RegExp}globString(){return this.#S=this.#S||(this.#n===0?this.isAbsolute()?this.#s[0]+this.#s.slice(1).join("/"):this.#s.join("/"):this.#s.slice(this.#n).join("/"))}hasMore(){return this.length>this.#n+1}rest(){return this.#h!==void 0?this.#h:this.hasMore()?(this.#h=new n(this.#t,this.#s,this.#n+1,this.#r),this.#h.#o=this.#o,this.#h.#c=this.#c,this.#h.#w=this.#w,this.#h):this.#h=null}isUNC(){let t=this.#t;return this.#c!==void 0?this.#c:this.#c=this.#r==="win32"&&this.#n===0&&t[0]===""&&t[1]===""&&typeof t[2]=="string"&&!!t[2]&&typeof t[3]=="string"&&!!t[3]}isDrive(){let t=this.#t;return this.#w!==void 0?this.#w:this.#w=this.#r==="win32"&&this.#n===0&&this.length>1&&typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0])}isAbsolute(){let t=this.#t;return this.#o!==void 0?this.#o:this.#o=t[0]===""&&t.length>1||this.isDrive()||this.isUNC()}root(){let t=this.#t[0];return typeof t=="string"&&this.isAbsolute()&&this.#n===0?t:""}checkFollowGlobstar(){return!(this.#n===0||!this.isGlobstar()||!this.#f)}markFollowGlobstar(){return this.#n===0||!this.isGlobstar()||!this.#f?!1:(this.#f=!1,!0)}};te.Pattern=Ce});var ke=R(ee=>{"use strict";Object.defineProperty(ee,"__esModule",{value:!0});ee.Ignore=void 0;var Ps=H(),Ar=Re(),kr=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",Ae=class{relative;relativeChildren;absolute;absoluteChildren;platform;mmopts;constructor(t,{nobrace:e,nocase:s,noext:i,noglobstar:r,platform:h=kr}){this.relative=[],this.absolute=[],this.relativeChildren=[],this.absoluteChildren=[],this.platform=h,this.mmopts={dot:!0,nobrace:e,nocase:s,noext:i,noglobstar:r,optimizationLevel:2,platform:h,nocomment:!0,nonegate:!0};for(let o of t)this.add(o)}add(t){let e=new Ps.Minimatch(t,this.mmopts);for(let s=0;s{"use strict";Object.defineProperty(z,"__esModule",{value:!0});z.Processor=z.SubWalks=z.MatchRecord=z.HasWalkedCache=void 0;var Ds=H(),se=class n{store;constructor(t=new Map){this.store=t}copy(){return new n(new Map(this.store))}hasWalked(t,e){return this.store.get(t.fullpath())?.has(e.globString())}storeWalked(t,e){let s=t.fullpath(),i=this.store.get(s);i?i.add(e.globString()):this.store.set(s,new Set([e.globString()]))}};z.HasWalkedCache=se;var ie=class{store=new Map;add(t,e,s){let i=(e?2:0)|(s?1:0),r=this.store.get(t);this.store.set(t,r===void 0?i:i&r)}entries(){return[...this.store.entries()].map(([t,e])=>[t,!!(e&2),!!(e&1)])}};z.MatchRecord=ie;var re=class{store=new Map;add(t,e){if(!t.canReaddir())return;let s=this.store.get(t);s?s.find(i=>i.globString()===e.globString())||s.push(e):this.store.set(t,[e])}get(t){let e=this.store.get(t);if(!e)throw new Error("attempting to walk unknown path");return e}entries(){return this.keys().map(t=>[t,this.store.get(t)])}keys(){return[...this.store.keys()].filter(t=>t.canReaddir())}};z.SubWalks=re;var Me=class n{hasWalkedCache;matches=new ie;subwalks=new re;patterns;follow;dot;opts;constructor(t,e){this.opts=t,this.follow=!!t.follow,this.dot=!!t.dot,this.hasWalkedCache=e?e.copy():new se}processPatterns(t,e){this.patterns=e;let s=e.map(i=>[t,i]);for(let[i,r]of s){this.hasWalkedCache.storeWalked(i,r);let h=r.root(),o=r.isAbsolute()&&this.opts.absolute!==!1;if(h){i=i.resolve(h==="/"&&this.opts.root!==void 0?this.opts.root:h);let c=r.rest();if(c)r=c;else{this.matches.add(i,!0,!1);continue}}if(i.isENOENT())continue;let a,l,f=!1;for(;typeof(a=r.pattern())=="string"&&(l=r.rest());)i=i.resolve(a),r=l,f=!0;if(a=r.pattern(),l=r.rest(),f){if(this.hasWalkedCache.hasWalked(i,r))continue;this.hasWalkedCache.storeWalked(i,r)}if(typeof a=="string"){let c=a===".."||a===""||a===".";this.matches.add(i.resolve(a),o,c);continue}else if(a===Ds.GLOBSTAR){(!i.isSymbolicLink()||this.follow||r.checkFollowGlobstar())&&this.subwalks.add(i,r);let c=l?.pattern(),d=l?.rest();if(!l||(c===""||c===".")&&!d)this.matches.add(i,o,c===""||c===".");else if(c===".."){let u=i.parent||i;d?this.hasWalkedCache.hasWalked(u,d)||this.subwalks.add(u,d):this.matches.add(u,o,!0)}}else a instanceof RegExp&&this.subwalks.add(i,r)}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new n(this.opts,this.hasWalkedCache)}filterEntries(t,e){let s=this.subwalks.get(t),i=this.child();for(let r of e)for(let h of s){let o=h.isAbsolute(),a=h.pattern(),l=h.rest();a===Ds.GLOBSTAR?i.testGlobstar(r,h,l,o):a instanceof RegExp?i.testRegExp(r,a,l,o):i.testString(r,a,l,o)}return i}testGlobstar(t,e,s,i){if((this.dot||!t.name.startsWith("."))&&(e.hasMore()||this.matches.add(t,i,!1),t.canReaddir()&&(this.follow||!t.isSymbolicLink()?this.subwalks.add(t,e):t.isSymbolicLink()&&(s&&e.checkFollowGlobstar()?this.subwalks.add(t,s):e.markFollowGlobstar()&&this.subwalks.add(t,e)))),s){let r=s.pattern();if(typeof r=="string"&&r!==".."&&r!==""&&r!==".")this.testString(t,r,s.rest(),i);else if(r===".."){let h=t.parent||t;this.subwalks.add(h,s)}else r instanceof RegExp&&this.testRegExp(t,r,s.rest(),i)}}testRegExp(t,e,s,i){e.test(t.name)&&(s?this.subwalks.add(t,s):this.matches.add(t,i,!1))}testString(t,e,s,i){t.isNamed(e)&&(s?this.subwalks.add(t,s):this.matches.add(t,i,!1))}};z.Processor=Me});var Ls=R(X=>{"use strict";Object.defineProperty(X,"__esModule",{value:!0});X.GlobStream=X.GlobWalker=X.GlobUtil=void 0;var Mr=Oe(),js=ke(),Ns=Fs(),Pr=(n,t)=>typeof n=="string"?new js.Ignore([n],t):Array.isArray(n)?new js.Ignore(n,t):n,Ot=class{path;patterns;opts;seen=new Set;paused=!1;aborted=!1;#t=[];#s;#n;signal;maxDepth;includeChildMatches;constructor(t,e,s){if(this.patterns=t,this.path=e,this.opts=s,this.#n=!s.posix&&s.platform==="win32"?"\\":"/",this.includeChildMatches=s.includeChildMatches!==!1,(s.ignore||!this.includeChildMatches)&&(this.#s=Pr(s.ignore??[],s),!this.includeChildMatches&&typeof this.#s.add!="function")){let i="cannot ignore child matches, ignore lacks add() method.";throw new Error(i)}this.maxDepth=s.maxDepth||1/0,s.signal&&(this.signal=s.signal,this.signal.addEventListener("abort",()=>{this.#t.length=0}))}#r(t){return this.seen.has(t)||!!this.#s?.ignored?.(t)}#h(t){return!!this.#s?.childrenIgnored?.(t)}pause(){this.paused=!0}resume(){if(this.signal?.aborted)return;this.paused=!1;let t;for(;!this.paused&&(t=this.#t.shift());)t()}onResume(t){this.signal?.aborted||(this.paused?this.#t.push(t):t())}async matchCheck(t,e){if(e&&this.opts.nodir)return;let s;if(this.opts.realpath){if(s=t.realpathCached()||await t.realpath(),!s)return;t=s}let r=t.isUnknown()||this.opts.stat?await t.lstat():t;if(this.opts.follow&&this.opts.nodir&&r?.isSymbolicLink()){let h=await r.realpath();h&&(h.isUnknown()||this.opts.stat)&&await h.lstat()}return this.matchCheckTest(r,e)}matchCheckTest(t,e){return t&&(this.maxDepth===1/0||t.depth()<=this.maxDepth)&&(!e||t.canReaddir())&&(!this.opts.nodir||!t.isDirectory())&&(!this.opts.nodir||!this.opts.follow||!t.isSymbolicLink()||!t.realpathCached()?.isDirectory())&&!this.#r(t)?t:void 0}matchCheckSync(t,e){if(e&&this.opts.nodir)return;let s;if(this.opts.realpath){if(s=t.realpathCached()||t.realpathSync(),!s)return;t=s}let r=t.isUnknown()||this.opts.stat?t.lstatSync():t;if(this.opts.follow&&this.opts.nodir&&r?.isSymbolicLink()){let h=r.realpathSync();h&&(h?.isUnknown()||this.opts.stat)&&h.lstatSync()}return this.matchCheckTest(r,e)}matchFinish(t,e){if(this.#r(t))return;if(!this.includeChildMatches&&this.#s?.add){let r=`${t.relativePosix()}/**`;this.#s.add(r)}let s=this.opts.absolute===void 0?e:this.opts.absolute;this.seen.add(t);let i=this.opts.mark&&t.isDirectory()?this.#n:"";if(this.opts.withFileTypes)this.matchEmit(t);else if(s){let r=this.opts.posix?t.fullpathPosix():t.fullpath();this.matchEmit(r+i)}else{let r=this.opts.posix?t.relativePosix():t.relative(),h=this.opts.dotRelative&&!r.startsWith(".."+this.#n)?"."+this.#n:"";this.matchEmit(r?h+r+i:"."+i)}}async match(t,e,s){let i=await this.matchCheck(t,s);i&&this.matchFinish(i,e)}matchSync(t,e,s){let i=this.matchCheckSync(t,s);i&&this.matchFinish(i,e)}walkCB(t,e,s){this.signal?.aborted&&s(),this.walkCB2(t,e,new Ns.Processor(this.opts),s)}walkCB2(t,e,s,i){if(this.#h(t))return i();if(this.signal?.aborted&&i(),this.paused){this.onResume(()=>this.walkCB2(t,e,s,i));return}s.processPatterns(t,e);let r=1,h=()=>{--r===0&&i()};for(let[o,a,l]of s.matches.entries())this.#r(o)||(r++,this.match(o,a,l).then(()=>h()));for(let o of s.subwalkTargets()){if(this.maxDepth!==1/0&&o.depth()>=this.maxDepth)continue;r++;let a=o.readdirCached();o.calledReaddir()?this.walkCB3(o,a,s,h):o.readdirCB((l,f)=>this.walkCB3(o,f,s,h),!0)}h()}walkCB3(t,e,s,i){s=s.filterEntries(t,e);let r=1,h=()=>{--r===0&&i()};for(let[o,a,l]of s.matches.entries())this.#r(o)||(r++,this.match(o,a,l).then(()=>h()));for(let[o,a]of s.subwalks.entries())r++,this.walkCB2(o,a,s.child(),h);h()}walkCBSync(t,e,s){this.signal?.aborted&&s(),this.walkCB2Sync(t,e,new Ns.Processor(this.opts),s)}walkCB2Sync(t,e,s,i){if(this.#h(t))return i();if(this.signal?.aborted&&i(),this.paused){this.onResume(()=>this.walkCB2Sync(t,e,s,i));return}s.processPatterns(t,e);let r=1,h=()=>{--r===0&&i()};for(let[o,a,l]of s.matches.entries())this.#r(o)||this.matchSync(o,a,l);for(let o of s.subwalkTargets()){if(this.maxDepth!==1/0&&o.depth()>=this.maxDepth)continue;r++;let a=o.readdirSync();this.walkCB3Sync(o,a,s,h)}h()}walkCB3Sync(t,e,s,i){s=s.filterEntries(t,e);let r=1,h=()=>{--r===0&&i()};for(let[o,a,l]of s.matches.entries())this.#r(o)||this.matchSync(o,a,l);for(let[o,a]of s.subwalks.entries())r++,this.walkCB2Sync(o,a,s.child(),h);h()}};X.GlobUtil=Ot;var Pe=class extends Ot{matches=new Set;constructor(t,e,s){super(t,e,s)}matchEmit(t){this.matches.add(t)}async walk(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&await this.path.lstat(),await new Promise((t,e)=>{this.walkCB(this.path,this.patterns,()=>{this.signal?.aborted?e(this.signal.reason):t(this.matches)})}),this.matches}walkSync(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>{if(this.signal?.aborted)throw this.signal.reason}),this.matches}};X.GlobWalker=Pe;var De=class extends Ot{results;constructor(t,e,s){super(t,e,s),this.results=new Mr.Minipass({signal:this.signal,objectMode:!0}),this.results.on("drain",()=>this.resume()),this.results.on("resume",()=>this.resume())}matchEmit(t){this.results.write(t),this.results.flowing||this.pause()}stream(){let t=this.path;return t.isUnknown()?t.lstat().then(()=>{this.walkCB(t,this.patterns,()=>this.results.end())}):this.walkCB(t,this.patterns,()=>this.results.end()),this.results}streamSync(){return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>this.results.end()),this.results}};X.GlobStream=De});var je=R(oe=>{"use strict";Object.defineProperty(oe,"__esModule",{value:!0});oe.Glob=void 0;var Dr=H(),Fr=require("node:url"),ne=Ms(),jr=Re(),he=Ls(),Nr=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",Fe=class{absolute;cwd;root;dot;dotRelative;follow;ignore;magicalBraces;mark;matchBase;maxDepth;nobrace;nocase;nodir;noext;noglobstar;pattern;platform;realpath;scurry;stat;signal;windowsPathsNoEscape;withFileTypes;includeChildMatches;opts;patterns;constructor(t,e){if(!e)throw new TypeError("glob options required");if(this.withFileTypes=!!e.withFileTypes,this.signal=e.signal,this.follow=!!e.follow,this.dot=!!e.dot,this.dotRelative=!!e.dotRelative,this.nodir=!!e.nodir,this.mark=!!e.mark,e.cwd?(e.cwd instanceof URL||e.cwd.startsWith("file://"))&&(e.cwd=(0,Fr.fileURLToPath)(e.cwd)):this.cwd="",this.cwd=e.cwd||"",this.root=e.root,this.magicalBraces=!!e.magicalBraces,this.nobrace=!!e.nobrace,this.noext=!!e.noext,this.realpath=!!e.realpath,this.absolute=e.absolute,this.includeChildMatches=e.includeChildMatches!==!1,this.noglobstar=!!e.noglobstar,this.matchBase=!!e.matchBase,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:1/0,this.stat=!!e.stat,this.ignore=e.ignore,this.withFileTypes&&this.absolute!==void 0)throw new Error("cannot set absolute and withFileTypes:true");if(typeof t=="string"&&(t=[t]),this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||e.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(t=t.map(a=>a.replace(/\\/g,"/"))),this.matchBase){if(e.noglobstar)throw new TypeError("base matching requires globstar");t=t.map(a=>a.includes("/")?a:`./**/${a}`)}if(this.pattern=t,this.platform=e.platform||Nr,this.opts={...e,platform:this.platform},e.scurry){if(this.scurry=e.scurry,e.nocase!==void 0&&e.nocase!==e.scurry.nocase)throw new Error("nocase option contradicts provided scurry option")}else{let a=e.platform==="win32"?ne.PathScurryWin32:e.platform==="darwin"?ne.PathScurryDarwin:e.platform?ne.PathScurryPosix:ne.PathScurry;this.scurry=new a(this.cwd,{nocase:e.nocase,fs:e.fs})}this.nocase=this.scurry.nocase;let s=this.platform==="darwin"||this.platform==="win32",i={braceExpandMax:1e4,...e,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly:s,nocomment:!0,noext:this.noext,nonegate:!0,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug},r=this.pattern.map(a=>new Dr.Minimatch(a,i)),[h,o]=r.reduce((a,l)=>(a[0].push(...l.set),a[1].push(...l.globParts),a),[[],[]]);this.patterns=h.map((a,l)=>{let f=o[l];if(!f)throw new Error("invalid pattern object");return new jr.Pattern(a,f,0,this.platform)})}async walk(){return[...await new he.GlobWalker(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walk()]}walkSync(){return[...new he.GlobWalker(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walkSync()]}stream(){return new he.GlobStream(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).stream()}streamSync(){return new he.GlobStream(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).streamSync()}iterateSync(){return this.streamSync()[Symbol.iterator]()}[Symbol.iterator](){return this.iterateSync()}iterate(){return this.stream()[Symbol.asyncIterator]()}[Symbol.asyncIterator](){return this.iterate()}};oe.Glob=Fe});var Ne=R(ae=>{"use strict";Object.defineProperty(ae,"__esModule",{value:!0});ae.hasMagic=void 0;var Lr=H(),Wr=(n,t={})=>{Array.isArray(n)||(n=[n]);for(let e of n)if(new Lr.Minimatch(e,t).hasMagic())return!0;return!1};ae.hasMagic=Wr});Object.defineProperty(exports,"__esModule",{value:!0});exports.glob=exports.sync=exports.iterate=exports.iterateSync=exports.stream=exports.streamSync=exports.Ignore=exports.hasMagic=exports.Glob=exports.unescape=exports.escape=void 0;exports.globStreamSync=xt;exports.globStream=Le;exports.globSync=We;exports.globIterateSync=Tt;exports.globIterate=Be;var Ws=H(),tt=je(),Br=Ne(),Is=H();Object.defineProperty(exports,"escape",{enumerable:!0,get:function(){return Is.escape}});Object.defineProperty(exports,"unescape",{enumerable:!0,get:function(){return Is.unescape}});var Ir=je();Object.defineProperty(exports,"Glob",{enumerable:!0,get:function(){return Ir.Glob}});var Gr=Ne();Object.defineProperty(exports,"hasMagic",{enumerable:!0,get:function(){return Gr.hasMagic}});var zr=ke();Object.defineProperty(exports,"Ignore",{enumerable:!0,get:function(){return zr.Ignore}});function xt(n,t={}){return new tt.Glob(n,t).streamSync()}function Le(n,t={}){return new tt.Glob(n,t).stream()}function We(n,t={}){return new tt.Glob(n,t).walkSync()}async function Bs(n,t={}){return new tt.Glob(n,t).walk()}function Tt(n,t={}){return new tt.Glob(n,t).iterateSync()}function Be(n,t={}){return new tt.Glob(n,t).iterate()}exports.streamSync=xt;exports.stream=Object.assign(Le,{sync:xt});exports.iterateSync=Tt;exports.iterate=Object.assign(Be,{sync:Tt});exports.sync=Object.assign(We,{stream:xt,iterate:Tt});exports.glob=Object.assign(Bs,{glob:Bs,globSync:We,sync:exports.sync,globStream:Le,stream:exports.stream,globStreamSync:xt,streamSync:exports.streamSync,globIterate:Be,iterate:exports.iterate,globIterateSync:Tt,iterateSync:exports.iterateSync,Glob:tt.Glob,hasMagic:Br.hasMagic,escape:Ws.escape,unescape:Ws.unescape});exports.glob.glob=exports.glob;
+//# sourceMappingURL=index.min.js.map
diff --git a/deps/npm/node_modules/glob/dist/commonjs/pattern.js b/deps/npm/node_modules/glob/dist/commonjs/pattern.js
index f0de35fb5bed9d..95f9075c5bfcb5 100644
--- a/deps/npm/node_modules/glob/dist/commonjs/pattern.js
+++ b/deps/npm/node_modules/glob/dist/commonjs/pattern.js
@@ -5,6 +5,7 @@ exports.Pattern = void 0;
const minimatch_1 = require("minimatch");
const isPatternList = (pl) => pl.length >= 1;
const isGlobList = (gl) => gl.length >= 1;
+const customInspect = Symbol.for('nodejs.util.inspect.custom');
/**
* An immutable-ish view on an array of glob parts and their parsed
* results
@@ -80,6 +81,9 @@ class Pattern {
}
}
}
+ [customInspect]() {
+ return 'Pattern <' + this.#globList.slice(this.#index).join('/') + '>';
+ }
/**
* The first entry in the parsed list of patterns
*/
diff --git a/deps/npm/node_modules/glob/dist/esm/glob.js b/deps/npm/node_modules/glob/dist/esm/glob.js
index c9ff3b0036d945..d89c3dad90daa8 100644
--- a/deps/npm/node_modules/glob/dist/esm/glob.js
+++ b/deps/npm/node_modules/glob/dist/esm/glob.js
@@ -137,11 +137,12 @@ export class Glob {
// for the file `AbC` for example.
const nocaseMagicOnly = this.platform === 'darwin' || this.platform === 'win32';
const mmo = {
- // default nocase based on platform
+ braceExpandMax: 10_000,
...opts,
dot: this.dot,
matchBase: this.matchBase,
nobrace: this.nobrace,
+ // default nocase based on platform
nocase: this.nocase,
nocaseMagicOnly,
nocomment: true,
diff --git a/deps/npm/node_modules/glob/dist/esm/index.min.js b/deps/npm/node_modules/glob/dist/esm/index.min.js
new file mode 100644
index 00000000000000..e6ea7cc1bc8311
--- /dev/null
+++ b/deps/npm/node_modules/glob/dist/esm/index.min.js
@@ -0,0 +1,4 @@
+var Gt=(n,t,e)=>{let s=n instanceof RegExp?ce(n,e):n,i=t instanceof RegExp?ce(t,e):t,r=s!==null&&i!=null&&ss(s,i,e);return r&&{start:r[0],end:r[1],pre:e.slice(0,r[0]),body:e.slice(r[0]+s.length,r[1]),post:e.slice(r[1]+i.length)}},ce=(n,t)=>{let e=t.match(n);return e?e[0]:null},ss=(n,t,e)=>{let s,i,r,o,h,a=e.indexOf(n),l=e.indexOf(t,a+1),u=a;if(a>=0&&l>0){if(n===t)return[a,l];for(s=[],r=e.length;u>=0&&!h;){if(u===a)s.push(u),a=e.indexOf(n,u+1);else if(s.length===1){let c=s.pop();c!==void 0&&(h=[c,l])}else i=s.pop(),i!==void 0&&i=0?a:l}s.length&&o!==void 0&&(h=[r,o])}return h};var fe="\0SLASH"+Math.random()+"\0",ue="\0OPEN"+Math.random()+"\0",qt="\0CLOSE"+Math.random()+"\0",de="\0COMMA"+Math.random()+"\0",pe="\0PERIOD"+Math.random()+"\0",is=new RegExp(fe,"g"),rs=new RegExp(ue,"g"),ns=new RegExp(qt,"g"),os=new RegExp(de,"g"),hs=new RegExp(pe,"g"),as=/\\\\/g,ls=/\\{/g,cs=/\\}/g,fs=/\\,/g,us=/\\./g,ds=1e5;function Ht(n){return isNaN(n)?n.charCodeAt(0):parseInt(n,10)}function ps(n){return n.replace(as,fe).replace(ls,ue).replace(cs,qt).replace(fs,de).replace(us,pe)}function ms(n){return n.replace(is,"\\").replace(rs,"{").replace(ns,"}").replace(os,",").replace(hs,".")}function me(n){if(!n)return[""];let t=[],e=Gt("{","}",n);if(!e)return n.split(",");let{pre:s,body:i,post:r}=e,o=s.split(",");o[o.length-1]+="{"+i+"}";let h=me(r);return r.length&&(o[o.length-1]+=h.shift(),o.push.apply(o,h)),t.push.apply(t,o),t}function ge(n,t={}){if(!n)return[];let{max:e=ds}=t;return n.slice(0,2)==="{}"&&(n="\\{\\}"+n.slice(2)),ht(ps(n),e,!0).map(ms)}function gs(n){return"{"+n+"}"}function ws(n){return/^-?0\d/.test(n)}function ys(n,t){return n<=t}function bs(n,t){return n>=t}function ht(n,t,e){let s=[],i=Gt("{","}",n);if(!i)return[n];let r=i.pre,o=i.post.length?ht(i.post,t,!1):[""];if(/\$$/.test(i.pre))for(let h=0;h=0;if(!l&&!u)return i.post.match(/,(?!,).*\}/)?(n=i.pre+"{"+i.body+qt+i.post,ht(n,t,!0)):[n];let c;if(l)c=i.body.split(/\.\./);else if(c=me(i.body),c.length===1&&c[0]!==void 0&&(c=ht(c[0],t,!1).map(gs),c.length===1))return o.map(f=>i.pre+c[0]+f);let d;if(l&&c[0]!==void 0&&c[1]!==void 0){let f=Ht(c[0]),m=Ht(c[1]),p=Math.max(c[0].length,c[1].length),w=c.length===3&&c[2]!==void 0?Math.abs(Ht(c[2])):1,g=ys;m0){let $=new Array(z+1).join("0");y<0?b="-"+$+b.slice(1):b=$+b}}d.push(b)}}else{d=[];for(let f=0;f{if(typeof n!="string")throw new TypeError("invalid pattern");if(n.length>65536)throw new TypeError("pattern is too long")};var Ss={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},lt=n=>n.replace(/[[\]\\-]/g,"\\$&"),Es=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),we=n=>n.join(""),ye=(n,t)=>{let e=t;if(n.charAt(e)!=="[")throw new Error("not in a brace expression");let s=[],i=[],r=e+1,o=!1,h=!1,a=!1,l=!1,u=e,c="";t:for(;rc?s.push(lt(c)+"-"+lt(p)):p===c&&s.push(lt(p)),c="",r++;continue}if(n.startsWith("-]",r+1)){s.push(lt(p+"-")),r+=2;continue}if(n.startsWith("-",r+1)){c=p,r+=2;continue}s.push(lt(p)),r++}if(ue?t?n.replace(/\[([^\/\\])\]/g,"$1"):n.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1"):t?n.replace(/\[([^\/\\{}])\]/g,"$1"):n.replace(/((?!\\).|^)\[([^\/\\{}])\]/g,"$1$2").replace(/\\([^\/{}])/g,"$1");var xs=new Set(["!","?","+","*","@"]),be=n=>xs.has(n),vs="(?!(?:^|/)\\.\\.?(?:$|/))",Ct="(?!\\.)",Cs=new Set(["[","."]),Ts=new Set(["..","."]),As=new Set("().*{}+?[]^$\\!"),ks=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Kt="[^/]",Se=Kt+"*?",Ee=Kt+"+?",Q=class n{type;#t;#s;#n=!1;#r=[];#o;#S;#w;#c=!1;#h;#u;#f=!1;constructor(t,e,s={}){this.type=t,t&&(this.#s=!0),this.#o=e,this.#t=this.#o?this.#o.#t:this,this.#h=this.#t===this?s:this.#t.#h,this.#w=this.#t===this?[]:this.#t.#w,t==="!"&&!this.#t.#c&&this.#w.push(this),this.#S=this.#o?this.#o.#r.length:0}get hasMagic(){if(this.#s!==void 0)return this.#s;for(let t of this.#r)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#s=!0;return this.#s}toString(){return this.#u!==void 0?this.#u:this.type?this.#u=this.type+"("+this.#r.map(t=>String(t)).join("|")+")":this.#u=this.#r.map(t=>String(t)).join("")}#a(){if(this!==this.#t)throw new Error("should only call on root");if(this.#c)return this;this.toString(),this.#c=!0;let t;for(;t=this.#w.pop();){if(t.type!=="!")continue;let e=t,s=e.#o;for(;s;){for(let i=e.#S+1;!s.type&&itypeof e=="string"?e:e.toJSON()):[this.type,...this.#r.map(e=>e.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#c&&this.#o?.type==="!")&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#o?.isStart())return!1;if(this.#S===0)return!0;let t=this.#o;for(let e=0;etypeof f!="string"),l=this.#r.map(f=>{let[m,p,w,g]=typeof f=="string"?n.#E(f,this.#s,a):f.toRegExpSource(t);return this.#s=this.#s||w,this.#n=this.#n||g,m}).join(""),u="";if(this.isStart()&&typeof this.#r[0]=="string"&&!(this.#r.length===1&&Ts.has(this.#r[0]))){let m=Cs,p=e&&m.has(l.charAt(0))||l.startsWith("\\.")&&m.has(l.charAt(2))||l.startsWith("\\.\\.")&&m.has(l.charAt(4)),w=!e&&!t&&m.has(l.charAt(0));u=p?vs:w?Ct:""}let c="";return this.isEnd()&&this.#t.#c&&this.#o?.type==="!"&&(c="(?:$|\\/)"),[u+l+c,W(l),this.#s=!!this.#s,this.#n]}let s=this.type==="*"||this.type==="+",i=this.type==="!"?"(?:(?!(?:":"(?:",r=this.#d(e);if(this.isStart()&&this.isEnd()&&!r&&this.type!=="!"){let a=this.toString();return this.#r=[a],this.type=null,this.#s=void 0,[a,W(this.toString()),!1,!1]}let o=!s||t||e||!Ct?"":this.#d(!0);o===r&&(o=""),o&&(r=`(?:${r})(?:${o})*?`);let h="";if(this.type==="!"&&this.#f)h=(this.isStart()&&!e?Ct:"")+Ee;else{let a=this.type==="!"?"))"+(this.isStart()&&!e&&!t?Ct:"")+Se+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&o?")":this.type==="*"&&o?")?":`)${this.type}`;h=i+r+a}return[h,W(r),this.#s=!!this.#s,this.#n]}#d(t){return this.#r.map(e=>{if(typeof e=="string")throw new Error("string type in extglob ast??");let[s,i,r,o]=e.toRegExpSource(t);return this.#n=this.#n||o,s}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join("|")}static#E(t,e,s=!1){let i=!1,r="",o=!1,h=!1;for(let a=0;ae?t?n.replace(/[?*()[\]{}]/g,"[$&]"):n.replace(/[?*()[\]\\{}]/g,"\\$&"):t?n.replace(/[?*()[\]]/g,"[$&]"):n.replace(/[?*()[\]\\]/g,"\\$&");var O=(n,t,e={})=>(at(t),!e.nocomment&&t.charAt(0)==="#"?!1:new D(t,e).match(n)),Rs=/^\*+([^+@!?\*\[\(]*)$/,Os=n=>t=>!t.startsWith(".")&&t.endsWith(n),Fs=n=>t=>t.endsWith(n),Ds=n=>(n=n.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(n)),Ms=n=>(n=n.toLowerCase(),t=>t.toLowerCase().endsWith(n)),Ns=/^\*+\.\*+$/,_s=n=>!n.startsWith(".")&&n.includes("."),Ls=n=>n!=="."&&n!==".."&&n.includes("."),Ws=/^\.\*+$/,Ps=n=>n!=="."&&n!==".."&&n.startsWith("."),js=/^\*+$/,Is=n=>n.length!==0&&!n.startsWith("."),zs=n=>n.length!==0&&n!=="."&&n!=="..",Bs=/^\?+([^+@!?\*\[\(]*)?$/,Us=([n,t=""])=>{let e=Ce([n]);return t?(t=t.toLowerCase(),s=>e(s)&&s.toLowerCase().endsWith(t)):e},$s=([n,t=""])=>{let e=Te([n]);return t?(t=t.toLowerCase(),s=>e(s)&&s.toLowerCase().endsWith(t)):e},Gs=([n,t=""])=>{let e=Te([n]);return t?s=>e(s)&&s.endsWith(t):e},Hs=([n,t=""])=>{let e=Ce([n]);return t?s=>e(s)&&s.endsWith(t):e},Ce=([n])=>{let t=n.length;return e=>e.length===t&&!e.startsWith(".")},Te=([n])=>{let t=n.length;return e=>e.length===t&&e!=="."&&e!==".."},Ae=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",xe={win32:{sep:"\\"},posix:{sep:"/"}},qs=Ae==="win32"?xe.win32.sep:xe.posix.sep;O.sep=qs;var A=Symbol("globstar **");O.GLOBSTAR=A;var Ks="[^/]",Vs=Ks+"*?",Ys="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",Xs="(?:(?!(?:\\/|^)\\.).)*?",Js=(n,t={})=>e=>O(e,n,t);O.filter=Js;var N=(n,t={})=>Object.assign({},n,t),Zs=n=>{if(!n||typeof n!="object"||!Object.keys(n).length)return O;let t=O;return Object.assign((s,i,r={})=>t(s,i,N(n,r)),{Minimatch:class extends t.Minimatch{constructor(i,r={}){super(i,N(n,r))}static defaults(i){return t.defaults(N(n,i)).Minimatch}},AST:class extends t.AST{constructor(i,r,o={}){super(i,r,N(n,o))}static fromGlob(i,r={}){return t.AST.fromGlob(i,N(n,r))}},unescape:(s,i={})=>t.unescape(s,N(n,i)),escape:(s,i={})=>t.escape(s,N(n,i)),filter:(s,i={})=>t.filter(s,N(n,i)),defaults:s=>t.defaults(N(n,s)),makeRe:(s,i={})=>t.makeRe(s,N(n,i)),braceExpand:(s,i={})=>t.braceExpand(s,N(n,i)),match:(s,i,r={})=>t.match(s,i,N(n,r)),sep:t.sep,GLOBSTAR:A})};O.defaults=Zs;var ke=(n,t={})=>(at(n),t.nobrace||!/\{(?:(?!\{).)*\}/.test(n)?[n]:ge(n,{max:t.braceExpandMax}));O.braceExpand=ke;var Qs=(n,t={})=>new D(n,t).makeRe();O.makeRe=Qs;var ti=(n,t,e={})=>{let s=new D(t,e);return n=n.filter(i=>s.match(i)),s.options.nonull&&!n.length&&n.push(t),n};O.match=ti;var ve=/[?*]|[+@!]\(.*?\)|\[|\]/,ei=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),D=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t,e={}){at(t),e=e||{},this.options=e,this.pattern=t,this.platform=e.platform||Ae,this.isWindows=this.platform==="win32";let s="allowWindowsEscape";this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||e[s]===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=e.windowsNoMagicRoot!==void 0?e.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let e of t)if(typeof e!="string")return!0;return!1}debug(...t){}make(){let t=this.pattern,e=this.options;if(!e.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...r)=>console.error(...r)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(r=>this.slashSplit(r));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let i=this.globParts.map((r,o,h)=>{if(this.isWindows&&this.windowsNoMagicRoot){let a=r[0]===""&&r[1]===""&&(r[2]==="?"||!ve.test(r[2]))&&!ve.test(r[3]),l=/^[a-z]:/i.test(r[0]);if(a)return[...r.slice(0,4),...r.slice(4).map(u=>this.parse(u))];if(l)return[r[0],...r.slice(1).map(u=>this.parse(u))]}return r.map(a=>this.parse(a))});if(this.debug(this.pattern,i),this.set=i.filter(r=>r.indexOf(!1)===-1),this.isWindows)for(let r=0;r=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):e>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(e=>{let s=-1;for(;(s=e.indexOf("**",s+1))!==-1;){let i=s;for(;e[i+1]==="**";)i++;i!==s&&e.splice(s,i-s)}return e})}levelOneOptimize(t){return t.map(e=>(e=e.reduce((s,i)=>{let r=s[s.length-1];return i==="**"&&r==="**"?s:i===".."&&r&&r!==".."&&r!=="."&&r!=="**"?(s.pop(),s):(s.push(i),s)},[]),e.length===0?[""]:e))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let i=1;ii&&s.splice(i+1,o-i);let h=s[i+1],a=s[i+2],l=s[i+3];if(h!==".."||!a||a==="."||a===".."||!l||l==="."||l==="..")continue;e=!0,s.splice(i,1);let u=s.slice(0);u[i]="**",t.push(u),i--}if(!this.preserveMultipleSlashes){for(let o=1;oe.length)}partsMatch(t,e,s=!1){let i=0,r=0,o=[],h="";for(;iE?e=e.slice(y):E>y&&(t=t.slice(E)))}}let{optimizationLevel:r=1}=this.options;r>=2&&(t=this.levelTwoFileOptimize(t)),this.debug("matchOne",this,{file:t,pattern:e}),this.debug("matchOne",t.length,e.length);for(var o=0,h=0,a=t.length,l=e.length;o>> no match, partial?`,t,d,e,f),d===a))}let p;if(typeof u=="string"?(p=c===u,this.debug("string match",u,c,p)):(p=u.test(c),this.debug("pattern match",u,c,p)),!p)return!1}if(o===a&&h===l)return!0;if(o===a)return s;if(h===l)return o===a-1&&t[o]==="";throw new Error("wtf?")}braceExpand(){return ke(this.pattern,this.options)}parse(t){at(t);let e=this.options;if(t==="**")return A;if(t==="")return"";let s,i=null;(s=t.match(js))?i=e.dot?zs:Is:(s=t.match(Rs))?i=(e.nocase?e.dot?Ms:Ds:e.dot?Fs:Os)(s[1]):(s=t.match(Bs))?i=(e.nocase?e.dot?$s:Us:e.dot?Gs:Hs)(s):(s=t.match(Ns))?i=e.dot?Ls:_s:(s=t.match(Ws))&&(i=Ps);let r=Q.fromGlob(t,this.options).toMMPattern();return i&&typeof r=="object"&&Reflect.defineProperty(r,"test",{value:i}),r}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let t=this.set;if(!t.length)return this.regexp=!1,this.regexp;let e=this.options,s=e.noglobstar?Vs:e.dot?Ys:Xs,i=new Set(e.nocase?["i"]:[]),r=t.map(a=>{let l=a.map(c=>{if(c instanceof RegExp)for(let d of c.flags.split(""))i.add(d);return typeof c=="string"?ei(c):c===A?A:c._src});l.forEach((c,d)=>{let f=l[d+1],m=l[d-1];c!==A||m===A||(m===void 0?f!==void 0&&f!==A?l[d+1]="(?:\\/|"+s+"\\/)?"+f:l[d]=s:f===void 0?l[d-1]=m+"(?:\\/|\\/"+s+")?":f!==A&&(l[d-1]=m+"(?:\\/|\\/"+s+"\\/)"+f,l[d+1]=A))});let u=l.filter(c=>c!==A);if(this.partial&&u.length>=1){let c=[];for(let d=1;d<=u.length;d++)c.push(u.slice(0,d).join("/"));return"(?:"+c.join("|")+")"}return u.join("/")}).join("|"),[o,h]=t.length>1?["(?:",")"]:["",""];r="^"+o+r+h+"$",this.partial&&(r="^(?:\\/|"+o+r.slice(1,-1)+h+")$"),this.negate&&(r="^(?!"+r+").+$");try{this.regexp=new RegExp(r,[...i].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return t==="";if(t==="/"&&e)return!0;let s=this.options;this.isWindows&&(t=t.split("\\").join("/"));let i=this.slashSplit(t);this.debug(this.pattern,"split",i);let r=this.set;this.debug(this.pattern,"set",r);let o=i[i.length-1];if(!o)for(let h=i.length-2;!o&&h>=0;h--)o=i[h];for(let h=0;h{typeof Vt.emitWarning=="function"?Vt.emitWarning(n,t,e,s):console.error(`[${e}] ${t}: ${n}`)},At=globalThis.AbortController,Re=globalThis.AbortSignal;if(typeof At>"u"){Re=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(e,s){this._onabort.push(s)}},At=class{constructor(){t()}signal=new Re;abort(e){if(!this.signal.aborted){this.signal.reason=e,this.signal.aborted=!0;for(let s of this.signal._onabort)s(e);this.signal.onabort?.(e)}}};let n=Vt.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{n&&(n=!1,Fe("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}var ii=n=>!Oe.has(n);var q=n=>n&&n===Math.floor(n)&&n>0&&isFinite(n),De=n=>q(n)?n<=Math.pow(2,8)?Uint8Array:n<=Math.pow(2,16)?Uint16Array:n<=Math.pow(2,32)?Uint32Array:n<=Number.MAX_SAFE_INTEGER?Tt:null:null,Tt=class extends Array{constructor(n){super(n),this.fill(0)}},ri=class ct{heap;length;static#t=!1;static create(t){let e=De(t);if(!e)return[];ct.#t=!0;let s=new ct(t,e);return ct.#t=!1,s}constructor(t,e){if(!ct.#t)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},ft=class Me{#t;#s;#n;#r;#o;#S;#w;#c;get perf(){return this.#c}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#h;#u;#f;#a;#i;#d;#E;#b;#p;#R;#m;#C;#T;#g;#y;#x;#A;#e;#_;static unsafeExposeInternals(t){return{starts:t.#T,ttls:t.#g,autopurgeTimers:t.#y,sizes:t.#C,keyMap:t.#f,keyList:t.#a,valList:t.#i,next:t.#d,prev:t.#E,get head(){return t.#b},get tail(){return t.#p},free:t.#R,isBackgroundFetch:e=>t.#l(e),backgroundFetch:(e,s,i,r)=>t.#U(e,s,i,r),moveToTail:e=>t.#W(e),indexes:e=>t.#F(e),rindexes:e=>t.#D(e),isStale:e=>t.#v(e)}}get max(){return this.#t}get maxSize(){return this.#s}get calculatedSize(){return this.#u}get size(){return this.#h}get fetchMethod(){return this.#S}get memoMethod(){return this.#w}get dispose(){return this.#n}get onInsert(){return this.#r}get disposeAfter(){return this.#o}constructor(t){let{max:e=0,ttl:s,ttlResolution:i=1,ttlAutopurge:r,updateAgeOnGet:o,updateAgeOnHas:h,allowStale:a,dispose:l,onInsert:u,disposeAfter:c,noDisposeOnSet:d,noUpdateTTL:f,maxSize:m=0,maxEntrySize:p=0,sizeCalculation:w,fetchMethod:g,memoMethod:S,noDeleteOnFetchRejection:E,noDeleteOnStaleGet:y,allowStaleOnFetchRejection:b,allowStaleOnFetchAbort:z,ignoreFetchAbort:$,perf:J}=t;if(J!==void 0&&typeof J?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#c=J??si,e!==0&&!q(e))throw new TypeError("max option must be a nonnegative integer");let Z=e?De(e):Array;if(!Z)throw new Error("invalid max value: "+e);if(this.#t=e,this.#s=m,this.maxEntrySize=p||this.#s,this.sizeCalculation=w,this.sizeCalculation){if(!this.#s&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(S!==void 0&&typeof S!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#w=S,g!==void 0&&typeof g!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#S=g,this.#A=!!g,this.#f=new Map,this.#a=new Array(e).fill(void 0),this.#i=new Array(e).fill(void 0),this.#d=new Z(e),this.#E=new Z(e),this.#b=0,this.#p=0,this.#R=ri.create(e),this.#h=0,this.#u=0,typeof l=="function"&&(this.#n=l),typeof u=="function"&&(this.#r=u),typeof c=="function"?(this.#o=c,this.#m=[]):(this.#o=void 0,this.#m=void 0),this.#x=!!this.#n,this.#_=!!this.#r,this.#e=!!this.#o,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!f,this.noDeleteOnFetchRejection=!!E,this.allowStaleOnFetchRejection=!!b,this.allowStaleOnFetchAbort=!!z,this.ignoreFetchAbort=!!$,this.maxEntrySize!==0){if(this.#s!==0&&!q(this.#s))throw new TypeError("maxSize must be a positive integer if specified");if(!q(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#G()}if(this.allowStale=!!a,this.noDeleteOnStaleGet=!!y,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!h,this.ttlResolution=q(i)||i===0?i:1,this.ttlAutopurge=!!r,this.ttl=s||0,this.ttl){if(!q(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#M()}if(this.#t===0&&this.ttl===0&&this.#s===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#t&&!this.#s){let $t="LRU_CACHE_UNBOUNDED";ii($t)&&(Oe.add($t),Fe("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",$t,Me))}}getRemainingTTL(t){return this.#f.has(t)?1/0:0}#M(){let t=new Tt(this.#t),e=new Tt(this.#t);this.#g=t,this.#T=e;let s=this.ttlAutopurge?new Array(this.#t):void 0;this.#y=s,this.#j=(o,h,a=this.#c.now())=>{if(e[o]=h!==0?a:0,t[o]=h,s?.[o]&&(clearTimeout(s[o]),s[o]=void 0),h!==0&&s){let l=setTimeout(()=>{this.#v(o)&&this.#O(this.#a[o],"expire")},h+1);l.unref&&l.unref(),s[o]=l}},this.#k=o=>{e[o]=t[o]!==0?this.#c.now():0},this.#N=(o,h)=>{if(t[h]){let a=t[h],l=e[h];if(!a||!l)return;o.ttl=a,o.start=l,o.now=i||r();let u=o.now-l;o.remainingTTL=a-u}};let i=0,r=()=>{let o=this.#c.now();if(this.ttlResolution>0){i=o;let h=setTimeout(()=>i=0,this.ttlResolution);h.unref&&h.unref()}return o};this.getRemainingTTL=o=>{let h=this.#f.get(o);if(h===void 0)return 0;let a=t[h],l=e[h];if(!a||!l)return 1/0;let u=(i||r())-l;return a-u},this.#v=o=>{let h=e[o],a=t[o];return!!a&&!!h&&(i||r())-h>a}}#k=()=>{};#N=()=>{};#j=()=>{};#v=()=>!1;#G(){let t=new Tt(this.#t);this.#u=0,this.#C=t,this.#P=e=>{this.#u-=t[e],t[e]=0},this.#I=(e,s,i,r)=>{if(this.#l(s))return 0;if(!q(i))if(r){if(typeof r!="function")throw new TypeError("sizeCalculation must be a function");if(i=r(s,e),!q(i))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return i},this.#L=(e,s,i)=>{if(t[e]=s,this.#s){let r=this.#s-t[e];for(;this.#u>r;)this.#B(!0)}this.#u+=t[e],i&&(i.entrySize=s,i.totalCalculatedSize=this.#u)}}#P=t=>{};#L=(t,e,s)=>{};#I=(t,e,s,i)=>{if(s||i)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#F({allowStale:t=this.allowStale}={}){if(this.#h)for(let e=this.#p;!(!this.#z(e)||((t||!this.#v(e))&&(yield e),e===this.#b));)e=this.#E[e]}*#D({allowStale:t=this.allowStale}={}){if(this.#h)for(let e=this.#b;!(!this.#z(e)||((t||!this.#v(e))&&(yield e),e===this.#p));)e=this.#d[e]}#z(t){return t!==void 0&&this.#f.get(this.#a[t])===t}*entries(){for(let t of this.#F())this.#i[t]!==void 0&&this.#a[t]!==void 0&&!this.#l(this.#i[t])&&(yield[this.#a[t],this.#i[t]])}*rentries(){for(let t of this.#D())this.#i[t]!==void 0&&this.#a[t]!==void 0&&!this.#l(this.#i[t])&&(yield[this.#a[t],this.#i[t]])}*keys(){for(let t of this.#F()){let e=this.#a[t];e!==void 0&&!this.#l(this.#i[t])&&(yield e)}}*rkeys(){for(let t of this.#D()){let e=this.#a[t];e!==void 0&&!this.#l(this.#i[t])&&(yield e)}}*values(){for(let t of this.#F())this.#i[t]!==void 0&&!this.#l(this.#i[t])&&(yield this.#i[t])}*rvalues(){for(let t of this.#D())this.#i[t]!==void 0&&!this.#l(this.#i[t])&&(yield this.#i[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(t,e={}){for(let s of this.#F()){let i=this.#i[s],r=this.#l(i)?i.__staleWhileFetching:i;if(r!==void 0&&t(r,this.#a[s],this))return this.get(this.#a[s],e)}}forEach(t,e=this){for(let s of this.#F()){let i=this.#i[s],r=this.#l(i)?i.__staleWhileFetching:i;r!==void 0&&t.call(e,r,this.#a[s],this)}}rforEach(t,e=this){for(let s of this.#D()){let i=this.#i[s],r=this.#l(i)?i.__staleWhileFetching:i;r!==void 0&&t.call(e,r,this.#a[s],this)}}purgeStale(){let t=!1;for(let e of this.#D({allowStale:!0}))this.#v(e)&&(this.#O(this.#a[e],"expire"),t=!0);return t}info(t){let e=this.#f.get(t);if(e===void 0)return;let s=this.#i[e],i=this.#l(s)?s.__staleWhileFetching:s;if(i===void 0)return;let r={value:i};if(this.#g&&this.#T){let o=this.#g[e],h=this.#T[e];if(o&&h){let a=o-(this.#c.now()-h);r.ttl=a,r.start=Date.now()}}return this.#C&&(r.size=this.#C[e]),r}dump(){let t=[];for(let e of this.#F({allowStale:!0})){let s=this.#a[e],i=this.#i[e],r=this.#l(i)?i.__staleWhileFetching:i;if(r===void 0||s===void 0)continue;let o={value:r};if(this.#g&&this.#T){o.ttl=this.#g[e];let h=this.#c.now()-this.#T[e];o.start=Math.floor(Date.now()-h)}this.#C&&(o.size=this.#C[e]),t.unshift([s,o])}return t}load(t){this.clear();for(let[e,s]of t){if(s.start){let i=Date.now()-s.start;s.start=this.#c.now()-i}this.set(e,s.value,s)}}set(t,e,s={}){if(e===void 0)return this.delete(t),this;let{ttl:i=this.ttl,start:r,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:a}=s,{noUpdateTTL:l=this.noUpdateTTL}=s,u=this.#I(t,e,s.size||0,h);if(this.maxEntrySize&&u>this.maxEntrySize)return a&&(a.set="miss",a.maxEntrySizeExceeded=!0),this.#O(t,"set"),this;let c=this.#h===0?void 0:this.#f.get(t);if(c===void 0)c=this.#h===0?this.#p:this.#R.length!==0?this.#R.pop():this.#h===this.#t?this.#B(!1):this.#h,this.#a[c]=t,this.#i[c]=e,this.#f.set(t,c),this.#d[this.#p]=c,this.#E[c]=this.#p,this.#p=c,this.#h++,this.#L(c,u,a),a&&(a.set="add"),l=!1,this.#_&&this.#r?.(e,t,"add");else{this.#W(c);let d=this.#i[c];if(e!==d){if(this.#A&&this.#l(d)){d.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:f}=d;f!==void 0&&!o&&(this.#x&&this.#n?.(f,t,"set"),this.#e&&this.#m?.push([f,t,"set"]))}else o||(this.#x&&this.#n?.(d,t,"set"),this.#e&&this.#m?.push([d,t,"set"]));if(this.#P(c),this.#L(c,u,a),this.#i[c]=e,a){a.set="replace";let f=d&&this.#l(d)?d.__staleWhileFetching:d;f!==void 0&&(a.oldValue=f)}}else a&&(a.set="update");this.#_&&this.onInsert?.(e,t,e===d?"update":"replace")}if(i!==0&&!this.#g&&this.#M(),this.#g&&(l||this.#j(c,i,r),a&&this.#N(a,c)),!o&&this.#e&&this.#m){let d=this.#m,f;for(;f=d?.shift();)this.#o?.(...f)}return this}pop(){try{for(;this.#h;){let t=this.#i[this.#b];if(this.#B(!0),this.#l(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#e&&this.#m){let t=this.#m,e;for(;e=t?.shift();)this.#o?.(...e)}}}#B(t){let e=this.#b,s=this.#a[e],i=this.#i[e];return this.#A&&this.#l(i)?i.__abortController.abort(new Error("evicted")):(this.#x||this.#e)&&(this.#x&&this.#n?.(i,s,"evict"),this.#e&&this.#m?.push([i,s,"evict"])),this.#P(e),this.#y?.[e]&&(clearTimeout(this.#y[e]),this.#y[e]=void 0),t&&(this.#a[e]=void 0,this.#i[e]=void 0,this.#R.push(e)),this.#h===1?(this.#b=this.#p=0,this.#R.length=0):this.#b=this.#d[e],this.#f.delete(s),this.#h--,e}has(t,e={}){let{updateAgeOnHas:s=this.updateAgeOnHas,status:i}=e,r=this.#f.get(t);if(r!==void 0){let o=this.#i[r];if(this.#l(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#v(r))i&&(i.has="stale",this.#N(i,r));else return s&&this.#k(r),i&&(i.has="hit",this.#N(i,r)),!0}else i&&(i.has="miss");return!1}peek(t,e={}){let{allowStale:s=this.allowStale}=e,i=this.#f.get(t);if(i===void 0||!s&&this.#v(i))return;let r=this.#i[i];return this.#l(r)?r.__staleWhileFetching:r}#U(t,e,s,i){let r=e===void 0?void 0:this.#i[e];if(this.#l(r))return r;let o=new At,{signal:h}=s;h?.addEventListener("abort",()=>o.abort(h.reason),{signal:o.signal});let a={signal:o.signal,options:s,context:i},l=(p,w=!1)=>{let{aborted:g}=o.signal,S=s.ignoreFetchAbort&&p!==void 0,E=s.ignoreFetchAbort||!!(s.allowStaleOnFetchAbort&&p!==void 0);if(s.status&&(g&&!w?(s.status.fetchAborted=!0,s.status.fetchError=o.signal.reason,S&&(s.status.fetchAbortIgnored=!0)):s.status.fetchResolved=!0),g&&!S&&!w)return c(o.signal.reason,E);let y=f,b=this.#i[e];return(b===f||S&&w&&b===void 0)&&(p===void 0?y.__staleWhileFetching!==void 0?this.#i[e]=y.__staleWhileFetching:this.#O(t,"fetch"):(s.status&&(s.status.fetchUpdated=!0),this.set(t,p,a.options))),p},u=p=>(s.status&&(s.status.fetchRejected=!0,s.status.fetchError=p),c(p,!1)),c=(p,w)=>{let{aborted:g}=o.signal,S=g&&s.allowStaleOnFetchAbort,E=S||s.allowStaleOnFetchRejection,y=E||s.noDeleteOnFetchRejection,b=f;if(this.#i[e]===f&&(!y||!w&&b.__staleWhileFetching===void 0?this.#O(t,"fetch"):S||(this.#i[e]=b.__staleWhileFetching)),E)return s.status&&b.__staleWhileFetching!==void 0&&(s.status.returnedStale=!0),b.__staleWhileFetching;if(b.__returned===b)throw p},d=(p,w)=>{let g=this.#S?.(t,r,a);g&&g instanceof Promise&&g.then(S=>p(S===void 0?void 0:S),w),o.signal.addEventListener("abort",()=>{(!s.ignoreFetchAbort||s.allowStaleOnFetchAbort)&&(p(void 0),s.allowStaleOnFetchAbort&&(p=S=>l(S,!0)))})};s.status&&(s.status.fetchDispatched=!0);let f=new Promise(d).then(l,u),m=Object.assign(f,{__abortController:o,__staleWhileFetching:r,__returned:void 0});return e===void 0?(this.set(t,m,{...a.options,status:void 0}),e=this.#f.get(t)):this.#i[e]=m,m}#l(t){if(!this.#A)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty("__staleWhileFetching")&&e.__abortController instanceof At}async fetch(t,e={}){let{allowStale:s=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:a=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:c=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:f=this.ignoreFetchAbort,allowStaleOnFetchAbort:m=this.allowStaleOnFetchAbort,context:p,forceRefresh:w=!1,status:g,signal:S}=e;if(!this.#A)return g&&(g.fetch="get"),this.get(t,{allowStale:s,updateAgeOnGet:i,noDeleteOnStaleGet:r,status:g});let E={allowStale:s,updateAgeOnGet:i,noDeleteOnStaleGet:r,ttl:o,noDisposeOnSet:h,size:a,sizeCalculation:l,noUpdateTTL:u,noDeleteOnFetchRejection:c,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:m,ignoreFetchAbort:f,status:g,signal:S},y=this.#f.get(t);if(y===void 0){g&&(g.fetch="miss");let b=this.#U(t,y,E,p);return b.__returned=b}else{let b=this.#i[y];if(this.#l(b)){let Z=s&&b.__staleWhileFetching!==void 0;return g&&(g.fetch="inflight",Z&&(g.returnedStale=!0)),Z?b.__staleWhileFetching:b.__returned=b}let z=this.#v(y);if(!w&&!z)return g&&(g.fetch="hit"),this.#W(y),i&&this.#k(y),g&&this.#N(g,y),b;let $=this.#U(t,y,E,p),J=$.__staleWhileFetching!==void 0&&s;return g&&(g.fetch=z?"stale":"refresh",J&&z&&(g.returnedStale=!0)),J?$.__staleWhileFetching:$.__returned=$}}async forceFetch(t,e={}){let s=await this.fetch(t,e);if(s===void 0)throw new Error("fetch() returned undefined");return s}memo(t,e={}){let s=this.#w;if(!s)throw new Error("no memoMethod provided to constructor");let{context:i,forceRefresh:r,...o}=e,h=this.get(t,o);if(!r&&h!==void 0)return h;let a=s(t,h,{options:o,context:i});return this.set(t,a,o),a}get(t,e={}){let{allowStale:s=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,status:o}=e,h=this.#f.get(t);if(h!==void 0){let a=this.#i[h],l=this.#l(a);return o&&this.#N(o,h),this.#v(h)?(o&&(o.get="stale"),l?(o&&s&&a.__staleWhileFetching!==void 0&&(o.returnedStale=!0),s?a.__staleWhileFetching:void 0):(r||this.#O(t,"expire"),o&&s&&(o.returnedStale=!0),s?a:void 0)):(o&&(o.get="hit"),l?a.__staleWhileFetching:(this.#W(h),i&&this.#k(h),a))}else o&&(o.get="miss")}#$(t,e){this.#E[e]=t,this.#d[t]=e}#W(t){t!==this.#p&&(t===this.#b?this.#b=this.#d[t]:this.#$(this.#E[t],this.#d[t]),this.#$(this.#p,t),this.#p=t)}delete(t){return this.#O(t,"delete")}#O(t,e){let s=!1;if(this.#h!==0){let i=this.#f.get(t);if(i!==void 0)if(this.#y?.[i]&&(clearTimeout(this.#y?.[i]),this.#y[i]=void 0),s=!0,this.#h===1)this.#H(e);else{this.#P(i);let r=this.#i[i];if(this.#l(r)?r.__abortController.abort(new Error("deleted")):(this.#x||this.#e)&&(this.#x&&this.#n?.(r,t,e),this.#e&&this.#m?.push([r,t,e])),this.#f.delete(t),this.#a[i]=void 0,this.#i[i]=void 0,i===this.#p)this.#p=this.#E[i];else if(i===this.#b)this.#b=this.#d[i];else{let o=this.#E[i];this.#d[o]=this.#d[i];let h=this.#d[i];this.#E[h]=this.#E[i]}this.#h--,this.#R.push(i)}}if(this.#e&&this.#m?.length){let i=this.#m,r;for(;r=i?.shift();)this.#o?.(...r)}return s}clear(){return this.#H("delete")}#H(t){for(let e of this.#D({allowStale:!0})){let s=this.#i[e];if(this.#l(s))s.__abortController.abort(new Error("deleted"));else{let i=this.#a[e];this.#x&&this.#n?.(s,i,t),this.#e&&this.#m?.push([s,i,t])}}if(this.#f.clear(),this.#i.fill(void 0),this.#a.fill(void 0),this.#g&&this.#T){this.#g.fill(0),this.#T.fill(0);for(let e of this.#y??[])e!==void 0&&clearTimeout(e);this.#y?.fill(void 0)}if(this.#C&&this.#C.fill(0),this.#b=0,this.#p=0,this.#R.length=0,this.#u=0,this.#h=0,this.#e&&this.#m){let e=this.#m,s;for(;s=e?.shift();)this.#o?.(...s)}}};import{posix as mi,win32 as re}from"node:path";import{fileURLToPath as gi}from"node:url";import{lstatSync as wi,readdir as yi,readdirSync as bi,readlinkSync as Si,realpathSync as Ei}from"fs";import*as xi from"node:fs";import{lstat as Ci,readdir as Ti,readlink as Ai,realpath as ki}from"node:fs/promises";import{EventEmitter as ee}from"node:events";import Pe from"node:stream";import{StringDecoder as ni}from"node:string_decoder";var Ne=typeof process=="object"&&process?process:{stdout:null,stderr:null},oi=n=>!!n&&typeof n=="object"&&(n instanceof V||n instanceof Pe||hi(n)||ai(n)),hi=n=>!!n&&typeof n=="object"&&n instanceof ee&&typeof n.pipe=="function"&&n.pipe!==Pe.Writable.prototype.pipe,ai=n=>!!n&&typeof n=="object"&&n instanceof ee&&typeof n.write=="function"&&typeof n.end=="function",G=Symbol("EOF"),H=Symbol("maybeEmitEnd"),K=Symbol("emittedEnd"),kt=Symbol("emittingEnd"),ut=Symbol("emittedError"),Rt=Symbol("closed"),_e=Symbol("read"),Ot=Symbol("flush"),Le=Symbol("flushChunk"),P=Symbol("encoding"),et=Symbol("decoder"),v=Symbol("flowing"),dt=Symbol("paused"),st=Symbol("resume"),C=Symbol("buffer"),F=Symbol("pipes"),T=Symbol("bufferLength"),Yt=Symbol("bufferPush"),Ft=Symbol("bufferShift"),k=Symbol("objectMode"),x=Symbol("destroyed"),Xt=Symbol("error"),Jt=Symbol("emitData"),We=Symbol("emitEnd"),Zt=Symbol("emitEnd2"),B=Symbol("async"),Qt=Symbol("abort"),Dt=Symbol("aborted"),pt=Symbol("signal"),Y=Symbol("dataListeners"),M=Symbol("discarded"),mt=n=>Promise.resolve().then(n),li=n=>n(),ci=n=>n==="end"||n==="finish"||n==="prefinish",fi=n=>n instanceof ArrayBuffer||!!n&&typeof n=="object"&&n.constructor&&n.constructor.name==="ArrayBuffer"&&n.byteLength>=0,ui=n=>!Buffer.isBuffer(n)&&ArrayBuffer.isView(n),Mt=class{src;dest;opts;ondrain;constructor(t,e,s){this.src=t,this.dest=e,this.opts=s,this.ondrain=()=>t[st](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},te=class extends Mt{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,e,s){super(t,e,s),this.proxyErrors=i=>this.dest.emit("error",i),t.on("error",this.proxyErrors)}},di=n=>!!n.objectMode,pi=n=>!n.objectMode&&!!n.encoding&&n.encoding!=="buffer",V=class extends ee{[v]=!1;[dt]=!1;[F]=[];[C]=[];[k];[P];[B];[et];[G]=!1;[K]=!1;[kt]=!1;[Rt]=!1;[ut]=null;[T]=0;[x]=!1;[pt];[Dt]=!1;[Y]=0;[M]=!1;writable=!0;readable=!0;constructor(...t){let e=t[0]||{};if(super(),e.objectMode&&typeof e.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");di(e)?(this[k]=!0,this[P]=null):pi(e)?(this[P]=e.encoding,this[k]=!1):(this[k]=!1,this[P]=null),this[B]=!!e.async,this[et]=this[P]?new ni(this[P]):null,e&&e.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[C]}),e&&e.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[F]});let{signal:s}=e;s&&(this[pt]=s,s.aborted?this[Qt]():s.addEventListener("abort",()=>this[Qt]()))}get bufferLength(){return this[T]}get encoding(){return this[P]}set encoding(t){throw new Error("Encoding must be set at instantiation time")}setEncoding(t){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[k]}set objectMode(t){throw new Error("objectMode must be set at instantiation time")}get async(){return this[B]}set async(t){this[B]=this[B]||!!t}[Qt](){this[Dt]=!0,this.emit("abort",this[pt]?.reason),this.destroy(this[pt]?.reason)}get aborted(){return this[Dt]}set aborted(t){}write(t,e,s){if(this[Dt])return!1;if(this[G])throw new Error("write after end");if(this[x])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof e=="function"&&(s=e,e="utf8"),e||(e="utf8");let i=this[B]?mt:li;if(!this[k]&&!Buffer.isBuffer(t)){if(ui(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(fi(t))t=Buffer.from(t);else if(typeof t!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[k]?(this[v]&&this[T]!==0&&this[Ot](!0),this[v]?this.emit("data",t):this[Yt](t),this[T]!==0&&this.emit("readable"),s&&i(s),this[v]):t.length?(typeof t=="string"&&!(e===this[P]&&!this[et]?.lastNeed)&&(t=Buffer.from(t,e)),Buffer.isBuffer(t)&&this[P]&&(t=this[et].write(t)),this[v]&&this[T]!==0&&this[Ot](!0),this[v]?this.emit("data",t):this[Yt](t),this[T]!==0&&this.emit("readable"),s&&i(s),this[v]):(this[T]!==0&&this.emit("readable"),s&&i(s),this[v])}read(t){if(this[x])return null;if(this[M]=!1,this[T]===0||t===0||t&&t>this[T])return this[H](),null;this[k]&&(t=null),this[C].length>1&&!this[k]&&(this[C]=[this[P]?this[C].join(""):Buffer.concat(this[C],this[T])]);let e=this[_e](t||null,this[C][0]);return this[H](),e}[_e](t,e){if(this[k])this[Ft]();else{let s=e;t===s.length||t===null?this[Ft]():typeof s=="string"?(this[C][0]=s.slice(t),e=s.slice(0,t),this[T]-=t):(this[C][0]=s.subarray(t),e=s.subarray(0,t),this[T]-=t)}return this.emit("data",e),!this[C].length&&!this[G]&&this.emit("drain"),e}end(t,e,s){return typeof t=="function"&&(s=t,t=void 0),typeof e=="function"&&(s=e,e="utf8"),t!==void 0&&this.write(t,e),s&&this.once("end",s),this[G]=!0,this.writable=!1,(this[v]||!this[dt])&&this[H](),this}[st](){this[x]||(!this[Y]&&!this[F].length&&(this[M]=!0),this[dt]=!1,this[v]=!0,this.emit("resume"),this[C].length?this[Ot]():this[G]?this[H]():this.emit("drain"))}resume(){return this[st]()}pause(){this[v]=!1,this[dt]=!0,this[M]=!1}get destroyed(){return this[x]}get flowing(){return this[v]}get paused(){return this[dt]}[Yt](t){this[k]?this[T]+=1:this[T]+=t.length,this[C].push(t)}[Ft](){return this[k]?this[T]-=1:this[T]-=this[C][0].length,this[C].shift()}[Ot](t=!1){do;while(this[Le](this[Ft]())&&this[C].length);!t&&!this[C].length&&!this[G]&&this.emit("drain")}[Le](t){return this.emit("data",t),this[v]}pipe(t,e){if(this[x])return t;this[M]=!1;let s=this[K];return e=e||{},t===Ne.stdout||t===Ne.stderr?e.end=!1:e.end=e.end!==!1,e.proxyErrors=!!e.proxyErrors,s?e.end&&t.end():(this[F].push(e.proxyErrors?new te(this,t,e):new Mt(this,t,e)),this[B]?mt(()=>this[st]()):this[st]()),t}unpipe(t){let e=this[F].find(s=>s.dest===t);e&&(this[F].length===1?(this[v]&&this[Y]===0&&(this[v]=!1),this[F]=[]):this[F].splice(this[F].indexOf(e),1),e.unpipe())}addListener(t,e){return this.on(t,e)}on(t,e){let s=super.on(t,e);if(t==="data")this[M]=!1,this[Y]++,!this[F].length&&!this[v]&&this[st]();else if(t==="readable"&&this[T]!==0)super.emit("readable");else if(ci(t)&&this[K])super.emit(t),this.removeAllListeners(t);else if(t==="error"&&this[ut]){let i=e;this[B]?mt(()=>i.call(this,this[ut])):i.call(this,this[ut])}return s}removeListener(t,e){return this.off(t,e)}off(t,e){let s=super.off(t,e);return t==="data"&&(this[Y]=this.listeners("data").length,this[Y]===0&&!this[M]&&!this[F].length&&(this[v]=!1)),s}removeAllListeners(t){let e=super.removeAllListeners(t);return(t==="data"||t===void 0)&&(this[Y]=0,!this[M]&&!this[F].length&&(this[v]=!1)),e}get emittedEnd(){return this[K]}[H](){!this[kt]&&!this[K]&&!this[x]&&this[C].length===0&&this[G]&&(this[kt]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Rt]&&this.emit("close"),this[kt]=!1)}emit(t,...e){let s=e[0];if(t!=="error"&&t!=="close"&&t!==x&&this[x])return!1;if(t==="data")return!this[k]&&!s?!1:this[B]?(mt(()=>this[Jt](s)),!0):this[Jt](s);if(t==="end")return this[We]();if(t==="close"){if(this[Rt]=!0,!this[K]&&!this[x])return!1;let r=super.emit("close");return this.removeAllListeners("close"),r}else if(t==="error"){this[ut]=s,super.emit(Xt,s);let r=!this[pt]||this.listeners("error").length?super.emit("error",s):!1;return this[H](),r}else if(t==="resume"){let r=super.emit("resume");return this[H](),r}else if(t==="finish"||t==="prefinish"){let r=super.emit(t);return this.removeAllListeners(t),r}let i=super.emit(t,...e);return this[H](),i}[Jt](t){for(let s of this[F])s.dest.write(t)===!1&&this.pause();let e=this[M]?!1:super.emit("data",t);return this[H](),e}[We](){return this[K]?!1:(this[K]=!0,this.readable=!1,this[B]?(mt(()=>this[Zt]()),!0):this[Zt]())}[Zt](){if(this[et]){let e=this[et].end();if(e){for(let s of this[F])s.dest.write(e);this[M]||super.emit("data",e)}}for(let e of this[F])e.end();let t=super.emit("end");return this.removeAllListeners("end"),t}async collect(){let t=Object.assign([],{dataLength:0});this[k]||(t.dataLength=0);let e=this.promise();return this.on("data",s=>{t.push(s),this[k]||(t.dataLength+=s.length)}),await e,t}async concat(){if(this[k])throw new Error("cannot concat in objectMode");let t=await this.collect();return this[P]?t.join(""):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,e)=>{this.on(x,()=>e(new Error("stream destroyed"))),this.on("error",s=>e(s)),this.on("end",()=>t())})}[Symbol.asyncIterator](){this[M]=!1;let t=!1,e=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return e();let i=this.read();if(i!==null)return Promise.resolve({done:!1,value:i});if(this[G])return e();let r,o,h=c=>{this.off("data",a),this.off("end",l),this.off(x,u),e(),o(c)},a=c=>{this.off("error",h),this.off("end",l),this.off(x,u),this.pause(),r({value:c,done:!!this[G]})},l=()=>{this.off("error",h),this.off("data",a),this.off(x,u),e(),r({done:!0,value:void 0})},u=()=>h(new Error("stream destroyed"));return new Promise((c,d)=>{o=d,r=c,this.once(x,u),this.once("error",h),this.once("end",l),this.once("data",a)})},throw:e,return:e,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[M]=!1;let t=!1,e=()=>(this.pause(),this.off(Xt,e),this.off(x,e),this.off("end",e),t=!0,{done:!0,value:void 0}),s=()=>{if(t)return e();let i=this.read();return i===null?e():{done:!1,value:i}};return this.once("end",e),this.once(Xt,e),this.once(x,e),{next:s,throw:e,return:e,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(t){if(this[x])return t?this.emit("error",t):this.emit(x),this;this[x]=!0,this[M]=!0,this[C].length=0,this[T]=0;let e=this;return typeof e.close=="function"&&!this[Rt]&&e.close(),t?this.emit("error",t):this.emit(x),this}static get isStream(){return oi}};var vi=Ei.native,wt={lstatSync:wi,readdir:yi,readdirSync:bi,readlinkSync:Si,realpathSync:vi,promises:{lstat:Ci,readdir:Ti,readlink:Ai,realpath:ki}},Ue=n=>!n||n===wt||n===xi?wt:{...wt,...n,promises:{...wt.promises,...n.promises||{}}},$e=/^\\\\\?\\([a-z]:)\\?$/i,Ri=n=>n.replace(/\//g,"\\").replace($e,"$1\\"),Oi=/[\\\/]/,L=0,Ge=1,He=2,U=4,qe=6,Ke=8,X=10,Ve=12,_=15,gt=~_,se=16,je=32,yt=64,j=128,Nt=256,Lt=512,Ie=yt|j|Lt,Fi=1023,ie=n=>n.isFile()?Ke:n.isDirectory()?U:n.isSymbolicLink()?X:n.isCharacterDevice()?He:n.isBlockDevice()?qe:n.isSocket()?Ve:n.isFIFO()?Ge:L,ze=new ft({max:2**12}),bt=n=>{let t=ze.get(n);if(t)return t;let e=n.normalize("NFKD");return ze.set(n,e),e},Be=new ft({max:2**12}),_t=n=>{let t=Be.get(n);if(t)return t;let e=bt(n.toLowerCase());return Be.set(n,e),e},Wt=class extends ft{constructor(){super({max:256})}},ne=class extends ft{constructor(t=16*1024){super({maxSize:t,sizeCalculation:e=>e.length+1})}},Ye=Symbol("PathScurry setAsCwd"),R=class{name;root;roots;parent;nocase;isCWD=!1;#t;#s;get dev(){return this.#s}#n;get mode(){return this.#n}#r;get nlink(){return this.#r}#o;get uid(){return this.#o}#S;get gid(){return this.#S}#w;get rdev(){return this.#w}#c;get blksize(){return this.#c}#h;get ino(){return this.#h}#u;get size(){return this.#u}#f;get blocks(){return this.#f}#a;get atimeMs(){return this.#a}#i;get mtimeMs(){return this.#i}#d;get ctimeMs(){return this.#d}#E;get birthtimeMs(){return this.#E}#b;get atime(){return this.#b}#p;get mtime(){return this.#p}#R;get ctime(){return this.#R}#m;get birthtime(){return this.#m}#C;#T;#g;#y;#x;#A;#e;#_;#M;#k;get parentPath(){return(this.parent||this).fullpath()}get path(){return this.parentPath}constructor(t,e=L,s,i,r,o,h){this.name=t,this.#C=r?_t(t):bt(t),this.#e=e&Fi,this.nocase=r,this.roots=i,this.root=s||this,this.#_=o,this.#g=h.fullpath,this.#x=h.relative,this.#A=h.relativePosix,this.parent=h.parent,this.parent?this.#t=this.parent.#t:this.#t=Ue(h.fs)}depth(){return this.#T!==void 0?this.#T:this.parent?this.#T=this.parent.depth()+1:this.#T=0}childrenCache(){return this.#_}resolve(t){if(!t)return this;let e=this.getRootString(t),i=t.substring(e.length).split(this.splitSep);return e?this.getRoot(e).#N(i):this.#N(i)}#N(t){let e=this;for(let s of t)e=e.child(s);return e}children(){let t=this.#_.get(this);if(t)return t;let e=Object.assign([],{provisional:0});return this.#_.set(this,e),this.#e&=~se,e}child(t,e){if(t===""||t===".")return this;if(t==="..")return this.parent||this;let s=this.children(),i=this.nocase?_t(t):bt(t);for(let a of s)if(a.#C===i)return a;let r=this.parent?this.sep:"",o=this.#g?this.#g+r+t:void 0,h=this.newChild(t,L,{...e,parent:this,fullpath:o});return this.canReaddir()||(h.#e|=j),s.push(h),h}relative(){if(this.isCWD)return"";if(this.#x!==void 0)return this.#x;let t=this.name,e=this.parent;if(!e)return this.#x=this.name;let s=e.relative();return s+(!s||!e.parent?"":this.sep)+t}relativePosix(){if(this.sep==="/")return this.relative();if(this.isCWD)return"";if(this.#A!==void 0)return this.#A;let t=this.name,e=this.parent;if(!e)return this.#A=this.fullpathPosix();let s=e.relativePosix();return s+(!s||!e.parent?"":"/")+t}fullpath(){if(this.#g!==void 0)return this.#g;let t=this.name,e=this.parent;if(!e)return this.#g=this.name;let i=e.fullpath()+(e.parent?this.sep:"")+t;return this.#g=i}fullpathPosix(){if(this.#y!==void 0)return this.#y;if(this.sep==="/")return this.#y=this.fullpath();if(!this.parent){let i=this.fullpath().replace(/\\/g,"/");return/^[a-z]:\//i.test(i)?this.#y=`//?/${i}`:this.#y=i}let t=this.parent,e=t.fullpathPosix(),s=e+(!e||!t.parent?"":"/")+this.name;return this.#y=s}isUnknown(){return(this.#e&_)===L}isType(t){return this[`is${t}`]()}getType(){return this.isUnknown()?"Unknown":this.isDirectory()?"Directory":this.isFile()?"File":this.isSymbolicLink()?"SymbolicLink":this.isFIFO()?"FIFO":this.isCharacterDevice()?"CharacterDevice":this.isBlockDevice()?"BlockDevice":this.isSocket()?"Socket":"Unknown"}isFile(){return(this.#e&_)===Ke}isDirectory(){return(this.#e&_)===U}isCharacterDevice(){return(this.#e&_)===He}isBlockDevice(){return(this.#e&_)===qe}isFIFO(){return(this.#e&_)===Ge}isSocket(){return(this.#e&_)===Ve}isSymbolicLink(){return(this.#e&X)===X}lstatCached(){return this.#e&je?this:void 0}readlinkCached(){return this.#M}realpathCached(){return this.#k}readdirCached(){let t=this.children();return t.slice(0,t.provisional)}canReadlink(){if(this.#M)return!0;if(!this.parent)return!1;let t=this.#e&_;return!(t!==L&&t!==X||this.#e&Nt||this.#e&j)}calledReaddir(){return!!(this.#e&se)}isENOENT(){return!!(this.#e&j)}isNamed(t){return this.nocase?this.#C===_t(t):this.#C===bt(t)}async readlink(){let t=this.#M;if(t)return t;if(this.canReadlink()&&this.parent)try{let e=await this.#t.promises.readlink(this.fullpath()),s=(await this.parent.realpath())?.resolve(e);if(s)return this.#M=s}catch(e){this.#D(e.code);return}}readlinkSync(){let t=this.#M;if(t)return t;if(this.canReadlink()&&this.parent)try{let e=this.#t.readlinkSync(this.fullpath()),s=this.parent.realpathSync()?.resolve(e);if(s)return this.#M=s}catch(e){this.#D(e.code);return}}#j(t){this.#e|=se;for(let e=t.provisional;es(null,t))}readdirCB(t,e=!1){if(!this.canReaddir()){e?t(null,[]):queueMicrotask(()=>t(null,[]));return}let s=this.children();if(this.calledReaddir()){let r=s.slice(0,s.provisional);e?t(null,r):queueMicrotask(()=>t(null,r));return}if(this.#W.push(t),this.#O)return;this.#O=!0;let i=this.fullpath();this.#t.readdir(i,{withFileTypes:!0},(r,o)=>{if(r)this.#I(r.code),s.provisional=0;else{for(let h of o)this.#z(h,s);this.#j(s)}this.#H(s.slice(0,s.provisional))})}#q;async readdir(){if(!this.canReaddir())return[];let t=this.children();if(this.calledReaddir())return t.slice(0,t.provisional);let e=this.fullpath();if(this.#q)await this.#q;else{let s=()=>{};this.#q=new Promise(i=>s=i);try{for(let i of await this.#t.promises.readdir(e,{withFileTypes:!0}))this.#z(i,t);this.#j(t)}catch(i){this.#I(i.code),t.provisional=0}this.#q=void 0,s()}return t.slice(0,t.provisional)}readdirSync(){if(!this.canReaddir())return[];let t=this.children();if(this.calledReaddir())return t.slice(0,t.provisional);let e=this.fullpath();try{for(let s of this.#t.readdirSync(e,{withFileTypes:!0}))this.#z(s,t);this.#j(t)}catch(s){this.#I(s.code),t.provisional=0}return t.slice(0,t.provisional)}canReaddir(){if(this.#e&Ie)return!1;let t=_&this.#e;return t===L||t===U||t===X}shouldWalk(t,e){return(this.#e&U)===U&&!(this.#e&Ie)&&!t.has(this)&&(!e||e(this))}async realpath(){if(this.#k)return this.#k;if(!((Lt|Nt|j)&this.#e))try{let t=await this.#t.promises.realpath(this.fullpath());return this.#k=this.resolve(t)}catch{this.#P()}}realpathSync(){if(this.#k)return this.#k;if(!((Lt|Nt|j)&this.#e))try{let t=this.#t.realpathSync(this.fullpath());return this.#k=this.resolve(t)}catch{this.#P()}}[Ye](t){if(t===this)return;t.isCWD=!1,this.isCWD=!0;let e=new Set([]),s=[],i=this;for(;i&&i.parent;)e.add(i),i.#x=s.join(this.sep),i.#A=s.join("/"),i=i.parent,s.push("..");for(i=t;i&&i.parent&&!e.has(i);)i.#x=void 0,i.#A=void 0,i=i.parent}},Pt=class n extends R{sep="\\";splitSep=Oi;constructor(t,e=L,s,i,r,o,h){super(t,e,s,i,r,o,h)}newChild(t,e=L,s={}){return new n(t,e,this.root,this.roots,this.nocase,this.childrenCache(),s)}getRootString(t){return re.parse(t).root}getRoot(t){if(t=Ri(t.toUpperCase()),t===this.root.name)return this.root;for(let[e,s]of Object.entries(this.roots))if(this.sameRoot(t,e))return this.roots[t]=s;return this.roots[t]=new it(t,this).root}sameRoot(t,e=this.root.name){return t=t.toUpperCase().replace(/\//g,"\\").replace($e,"$1\\"),t===e}},jt=class n extends R{splitSep="/";sep="/";constructor(t,e=L,s,i,r,o,h){super(t,e,s,i,r,o,h)}getRootString(t){return t.startsWith("/")?"/":""}getRoot(t){return this.root}newChild(t,e=L,s={}){return new n(t,e,this.root,this.roots,this.nocase,this.childrenCache(),s)}},It=class{root;rootPath;roots;cwd;#t;#s;#n;nocase;#r;constructor(t=process.cwd(),e,s,{nocase:i,childrenCacheSize:r=16*1024,fs:o=wt}={}){this.#r=Ue(o),(t instanceof URL||t.startsWith("file://"))&&(t=gi(t));let h=e.resolve(t);this.roots=Object.create(null),this.rootPath=this.parseRootPath(h),this.#t=new Wt,this.#s=new Wt,this.#n=new ne(r);let a=h.substring(this.rootPath.length).split(s);if(a.length===1&&!a[0]&&a.pop(),i===void 0)throw new TypeError("must provide nocase setting to PathScurryBase ctor");this.nocase=i,this.root=this.newRoot(this.#r),this.roots[this.rootPath]=this.root;let l=this.root,u=a.length-1,c=e.sep,d=this.rootPath,f=!1;for(let m of a){let p=u--;l=l.child(m,{relative:new Array(p).fill("..").join(c),relativePosix:new Array(p).fill("..").join("/"),fullpath:d+=(f?"":c)+m}),f=!0}this.cwd=l}depth(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.depth()}childrenCache(){return this.#n}resolve(...t){let e="";for(let r=t.length-1;r>=0;r--){let o=t[r];if(!(!o||o===".")&&(e=e?`${o}/${e}`:o,this.isAbsolute(o)))break}let s=this.#t.get(e);if(s!==void 0)return s;let i=this.cwd.resolve(e).fullpath();return this.#t.set(e,i),i}resolvePosix(...t){let e="";for(let r=t.length-1;r>=0;r--){let o=t[r];if(!(!o||o===".")&&(e=e?`${o}/${e}`:o,this.isAbsolute(o)))break}let s=this.#s.get(e);if(s!==void 0)return s;let i=this.cwd.resolve(e).fullpathPosix();return this.#s.set(e,i),i}relative(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.relative()}relativePosix(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.relativePosix()}basename(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.name}dirname(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),(t.parent||t).fullpath()}async readdir(t=this.cwd,e={withFileTypes:!0}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s}=e;if(t.canReaddir()){let i=await t.readdir();return s?i:i.map(r=>r.name)}else return[]}readdirSync(t=this.cwd,e={withFileTypes:!0}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0}=e;return t.canReaddir()?s?t.readdirSync():t.readdirSync().map(i=>i.name):[]}async lstat(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.lstat()}lstatSync(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.lstatSync()}async readlink(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof R||(e=t.withFileTypes,t=this.cwd);let s=await t.readlink();return e?s:s?.fullpath()}readlinkSync(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof R||(e=t.withFileTypes,t=this.cwd);let s=t.readlinkSync();return e?s:s?.fullpath()}async realpath(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof R||(e=t.withFileTypes,t=this.cwd);let s=await t.realpath();return e?s:s?.fullpath()}realpathSync(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof R||(e=t.withFileTypes,t=this.cwd);let s=t.realpathSync();return e?s:s?.fullpath()}async walk(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:o}=e,h=[];(!r||r(t))&&h.push(s?t:t.fullpath());let a=new Set,l=(c,d)=>{a.add(c),c.readdirCB((f,m)=>{if(f)return d(f);let p=m.length;if(!p)return d();let w=()=>{--p===0&&d()};for(let g of m)(!r||r(g))&&h.push(s?g:g.fullpath()),i&&g.isSymbolicLink()?g.realpath().then(S=>S?.isUnknown()?S.lstat():S).then(S=>S?.shouldWalk(a,o)?l(S,w):w()):g.shouldWalk(a,o)?l(g,w):w()},!0)},u=t;return new Promise((c,d)=>{l(u,f=>{if(f)return d(f);c(h)})})}walkSync(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:o}=e,h=[];(!r||r(t))&&h.push(s?t:t.fullpath());let a=new Set([t]);for(let l of a){let u=l.readdirSync();for(let c of u){(!r||r(c))&&h.push(s?c:c.fullpath());let d=c;if(c.isSymbolicLink()){if(!(i&&(d=c.realpathSync())))continue;d.isUnknown()&&d.lstatSync()}d.shouldWalk(a,o)&&a.add(d)}}return h}[Symbol.asyncIterator](){return this.iterate()}iterate(t=this.cwd,e={}){return typeof t=="string"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd),this.stream(t,e)[Symbol.asyncIterator]()}[Symbol.iterator](){return this.iterateSync()}*iterateSync(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:o}=e;(!r||r(t))&&(yield s?t:t.fullpath());let h=new Set([t]);for(let a of h){let l=a.readdirSync();for(let u of l){(!r||r(u))&&(yield s?u:u.fullpath());let c=u;if(u.isSymbolicLink()){if(!(i&&(c=u.realpathSync())))continue;c.isUnknown()&&c.lstatSync()}c.shouldWalk(h,o)&&h.add(c)}}}stream(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:o}=e,h=new V({objectMode:!0});(!r||r(t))&&h.write(s?t:t.fullpath());let a=new Set,l=[t],u=0,c=()=>{let d=!1;for(;!d;){let f=l.shift();if(!f){u===0&&h.end();return}u++,a.add(f);let m=(w,g,S=!1)=>{if(w)return h.emit("error",w);if(i&&!S){let E=[];for(let y of g)y.isSymbolicLink()&&E.push(y.realpath().then(b=>b?.isUnknown()?b.lstat():b));if(E.length){Promise.all(E).then(()=>m(null,g,!0));return}}for(let E of g)E&&(!r||r(E))&&(h.write(s?E:E.fullpath())||(d=!0));u--;for(let E of g){let y=E.realpathCached()||E;y.shouldWalk(a,o)&&l.push(y)}d&&!h.flowing?h.once("drain",c):p||c()},p=!0;f.readdirCB(m,!0),p=!1}};return c(),h}streamSync(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:o}=e,h=new V({objectMode:!0}),a=new Set;(!r||r(t))&&h.write(s?t:t.fullpath());let l=[t],u=0,c=()=>{let d=!1;for(;!d;){let f=l.shift();if(!f){u===0&&h.end();return}u++,a.add(f);let m=f.readdirSync();for(let p of m)(!r||r(p))&&(h.write(s?p:p.fullpath())||(d=!0));u--;for(let p of m){let w=p;if(p.isSymbolicLink()){if(!(i&&(w=p.realpathSync())))continue;w.isUnknown()&&w.lstatSync()}w.shouldWalk(a,o)&&l.push(w)}}d&&!h.flowing&&h.once("drain",c)};return c(),h}chdir(t=this.cwd){let e=this.cwd;this.cwd=typeof t=="string"?this.cwd.resolve(t):t,this.cwd[Ye](e)}},it=class extends It{sep="\\";constructor(t=process.cwd(),e={}){let{nocase:s=!0}=e;super(t,re,"\\",{...e,nocase:s}),this.nocase=s;for(let i=this.cwd;i;i=i.parent)i.nocase=this.nocase}parseRootPath(t){return re.parse(t).root.toUpperCase()}newRoot(t){return new Pt(this.rootPath,U,void 0,this.roots,this.nocase,this.childrenCache(),{fs:t})}isAbsolute(t){return t.startsWith("/")||t.startsWith("\\")||/^[a-z]:(\/|\\)/i.test(t)}},rt=class extends It{sep="/";constructor(t=process.cwd(),e={}){let{nocase:s=!1}=e;super(t,mi,"/",{...e,nocase:s}),this.nocase=s}parseRootPath(t){return"/"}newRoot(t){return new jt(this.rootPath,U,void 0,this.roots,this.nocase,this.childrenCache(),{fs:t})}isAbsolute(t){return t.startsWith("/")}},St=class extends rt{constructor(t=process.cwd(),e={}){let{nocase:s=!0}=e;super(t,{...e,nocase:s})}},Cr=process.platform==="win32"?Pt:jt,Xe=process.platform==="win32"?it:process.platform==="darwin"?St:rt;var Di=n=>n.length>=1,Mi=n=>n.length>=1,Ni=Symbol.for("nodejs.util.inspect.custom"),nt=class n{#t;#s;#n;length;#r;#o;#S;#w;#c;#h;#u=!0;constructor(t,e,s,i){if(!Di(t))throw new TypeError("empty pattern list");if(!Mi(e))throw new TypeError("empty glob list");if(e.length!==t.length)throw new TypeError("mismatched pattern list and glob list lengths");if(this.length=t.length,s<0||s>=this.length)throw new TypeError("index out of range");if(this.#t=t,this.#s=e,this.#n=s,this.#r=i,this.#n===0){if(this.isUNC()){let[r,o,h,a,...l]=this.#t,[u,c,d,f,...m]=this.#s;l[0]===""&&(l.shift(),m.shift());let p=[r,o,h,a,""].join("/"),w=[u,c,d,f,""].join("/");this.#t=[p,...l],this.#s=[w,...m],this.length=this.#t.length}else if(this.isDrive()||this.isAbsolute()){let[r,...o]=this.#t,[h,...a]=this.#s;o[0]===""&&(o.shift(),a.shift());let l=r+"/",u=h+"/";this.#t=[l,...o],this.#s=[u,...a],this.length=this.#t.length}}}[Ni](){return"Pattern <"+this.#s.slice(this.#n).join("/")+">"}pattern(){return this.#t[this.#n]}isString(){return typeof this.#t[this.#n]=="string"}isGlobstar(){return this.#t[this.#n]===A}isRegExp(){return this.#t[this.#n]instanceof RegExp}globString(){return this.#S=this.#S||(this.#n===0?this.isAbsolute()?this.#s[0]+this.#s.slice(1).join("/"):this.#s.join("/"):this.#s.slice(this.#n).join("/"))}hasMore(){return this.length>this.#n+1}rest(){return this.#o!==void 0?this.#o:this.hasMore()?(this.#o=new n(this.#t,this.#s,this.#n+1,this.#r),this.#o.#h=this.#h,this.#o.#c=this.#c,this.#o.#w=this.#w,this.#o):this.#o=null}isUNC(){let t=this.#t;return this.#c!==void 0?this.#c:this.#c=this.#r==="win32"&&this.#n===0&&t[0]===""&&t[1]===""&&typeof t[2]=="string"&&!!t[2]&&typeof t[3]=="string"&&!!t[3]}isDrive(){let t=this.#t;return this.#w!==void 0?this.#w:this.#w=this.#r==="win32"&&this.#n===0&&this.length>1&&typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0])}isAbsolute(){let t=this.#t;return this.#h!==void 0?this.#h:this.#h=t[0]===""&&t.length>1||this.isDrive()||this.isUNC()}root(){let t=this.#t[0];return typeof t=="string"&&this.isAbsolute()&&this.#n===0?t:""}checkFollowGlobstar(){return!(this.#n===0||!this.isGlobstar()||!this.#u)}markFollowGlobstar(){return this.#n===0||!this.isGlobstar()||!this.#u?!1:(this.#u=!1,!0)}};var _i=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",ot=class{relative;relativeChildren;absolute;absoluteChildren;platform;mmopts;constructor(t,{nobrace:e,nocase:s,noext:i,noglobstar:r,platform:o=_i}){this.relative=[],this.absolute=[],this.relativeChildren=[],this.absoluteChildren=[],this.platform=o,this.mmopts={dot:!0,nobrace:e,nocase:s,noext:i,noglobstar:r,optimizationLevel:2,platform:o,nocomment:!0,nonegate:!0};for(let h of t)this.add(h)}add(t){let e=new D(t,this.mmopts);for(let s=0;s[t,!!(e&2),!!(e&1)])}},ae=class{store=new Map;add(t,e){if(!t.canReaddir())return;let s=this.store.get(t);s?s.find(i=>i.globString()===e.globString())||s.push(e):this.store.set(t,[e])}get(t){let e=this.store.get(t);if(!e)throw new Error("attempting to walk unknown path");return e}entries(){return this.keys().map(t=>[t,this.store.get(t)])}keys(){return[...this.store.keys()].filter(t=>t.canReaddir())}},Et=class n{hasWalkedCache;matches=new he;subwalks=new ae;patterns;follow;dot;opts;constructor(t,e){this.opts=t,this.follow=!!t.follow,this.dot=!!t.dot,this.hasWalkedCache=e?e.copy():new oe}processPatterns(t,e){this.patterns=e;let s=e.map(i=>[t,i]);for(let[i,r]of s){this.hasWalkedCache.storeWalked(i,r);let o=r.root(),h=r.isAbsolute()&&this.opts.absolute!==!1;if(o){i=i.resolve(o==="/"&&this.opts.root!==void 0?this.opts.root:o);let c=r.rest();if(c)r=c;else{this.matches.add(i,!0,!1);continue}}if(i.isENOENT())continue;let a,l,u=!1;for(;typeof(a=r.pattern())=="string"&&(l=r.rest());)i=i.resolve(a),r=l,u=!0;if(a=r.pattern(),l=r.rest(),u){if(this.hasWalkedCache.hasWalked(i,r))continue;this.hasWalkedCache.storeWalked(i,r)}if(typeof a=="string"){let c=a===".."||a===""||a===".";this.matches.add(i.resolve(a),h,c);continue}else if(a===A){(!i.isSymbolicLink()||this.follow||r.checkFollowGlobstar())&&this.subwalks.add(i,r);let c=l?.pattern(),d=l?.rest();if(!l||(c===""||c===".")&&!d)this.matches.add(i,h,c===""||c===".");else if(c===".."){let f=i.parent||i;d?this.hasWalkedCache.hasWalked(f,d)||this.subwalks.add(f,d):this.matches.add(f,h,!0)}}else a instanceof RegExp&&this.subwalks.add(i,r)}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new n(this.opts,this.hasWalkedCache)}filterEntries(t,e){let s=this.subwalks.get(t),i=this.child();for(let r of e)for(let o of s){let h=o.isAbsolute(),a=o.pattern(),l=o.rest();a===A?i.testGlobstar(r,o,l,h):a instanceof RegExp?i.testRegExp(r,a,l,h):i.testString(r,a,l,h)}return i}testGlobstar(t,e,s,i){if((this.dot||!t.name.startsWith("."))&&(e.hasMore()||this.matches.add(t,i,!1),t.canReaddir()&&(this.follow||!t.isSymbolicLink()?this.subwalks.add(t,e):t.isSymbolicLink()&&(s&&e.checkFollowGlobstar()?this.subwalks.add(t,s):e.markFollowGlobstar()&&this.subwalks.add(t,e)))),s){let r=s.pattern();if(typeof r=="string"&&r!==".."&&r!==""&&r!==".")this.testString(t,r,s.rest(),i);else if(r===".."){let o=t.parent||t;this.subwalks.add(o,s)}else r instanceof RegExp&&this.testRegExp(t,r,s.rest(),i)}}testRegExp(t,e,s,i){e.test(t.name)&&(s?this.subwalks.add(t,s):this.matches.add(t,i,!1))}testString(t,e,s,i){t.isNamed(e)&&(s?this.subwalks.add(t,s):this.matches.add(t,i,!1))}};var Li=(n,t)=>typeof n=="string"?new ot([n],t):Array.isArray(n)?new ot(n,t):n,zt=class{path;patterns;opts;seen=new Set;paused=!1;aborted=!1;#t=[];#s;#n;signal;maxDepth;includeChildMatches;constructor(t,e,s){if(this.patterns=t,this.path=e,this.opts=s,this.#n=!s.posix&&s.platform==="win32"?"\\":"/",this.includeChildMatches=s.includeChildMatches!==!1,(s.ignore||!this.includeChildMatches)&&(this.#s=Li(s.ignore??[],s),!this.includeChildMatches&&typeof this.#s.add!="function")){let i="cannot ignore child matches, ignore lacks add() method.";throw new Error(i)}this.maxDepth=s.maxDepth||1/0,s.signal&&(this.signal=s.signal,this.signal.addEventListener("abort",()=>{this.#t.length=0}))}#r(t){return this.seen.has(t)||!!this.#s?.ignored?.(t)}#o(t){return!!this.#s?.childrenIgnored?.(t)}pause(){this.paused=!0}resume(){if(this.signal?.aborted)return;this.paused=!1;let t;for(;!this.paused&&(t=this.#t.shift());)t()}onResume(t){this.signal?.aborted||(this.paused?this.#t.push(t):t())}async matchCheck(t,e){if(e&&this.opts.nodir)return;let s;if(this.opts.realpath){if(s=t.realpathCached()||await t.realpath(),!s)return;t=s}let r=t.isUnknown()||this.opts.stat?await t.lstat():t;if(this.opts.follow&&this.opts.nodir&&r?.isSymbolicLink()){let o=await r.realpath();o&&(o.isUnknown()||this.opts.stat)&&await o.lstat()}return this.matchCheckTest(r,e)}matchCheckTest(t,e){return t&&(this.maxDepth===1/0||t.depth()<=this.maxDepth)&&(!e||t.canReaddir())&&(!this.opts.nodir||!t.isDirectory())&&(!this.opts.nodir||!this.opts.follow||!t.isSymbolicLink()||!t.realpathCached()?.isDirectory())&&!this.#r(t)?t:void 0}matchCheckSync(t,e){if(e&&this.opts.nodir)return;let s;if(this.opts.realpath){if(s=t.realpathCached()||t.realpathSync(),!s)return;t=s}let r=t.isUnknown()||this.opts.stat?t.lstatSync():t;if(this.opts.follow&&this.opts.nodir&&r?.isSymbolicLink()){let o=r.realpathSync();o&&(o?.isUnknown()||this.opts.stat)&&o.lstatSync()}return this.matchCheckTest(r,e)}matchFinish(t,e){if(this.#r(t))return;if(!this.includeChildMatches&&this.#s?.add){let r=`${t.relativePosix()}/**`;this.#s.add(r)}let s=this.opts.absolute===void 0?e:this.opts.absolute;this.seen.add(t);let i=this.opts.mark&&t.isDirectory()?this.#n:"";if(this.opts.withFileTypes)this.matchEmit(t);else if(s){let r=this.opts.posix?t.fullpathPosix():t.fullpath();this.matchEmit(r+i)}else{let r=this.opts.posix?t.relativePosix():t.relative(),o=this.opts.dotRelative&&!r.startsWith(".."+this.#n)?"."+this.#n:"";this.matchEmit(r?o+r+i:"."+i)}}async match(t,e,s){let i=await this.matchCheck(t,s);i&&this.matchFinish(i,e)}matchSync(t,e,s){let i=this.matchCheckSync(t,s);i&&this.matchFinish(i,e)}walkCB(t,e,s){this.signal?.aborted&&s(),this.walkCB2(t,e,new Et(this.opts),s)}walkCB2(t,e,s,i){if(this.#o(t))return i();if(this.signal?.aborted&&i(),this.paused){this.onResume(()=>this.walkCB2(t,e,s,i));return}s.processPatterns(t,e);let r=1,o=()=>{--r===0&&i()};for(let[h,a,l]of s.matches.entries())this.#r(h)||(r++,this.match(h,a,l).then(()=>o()));for(let h of s.subwalkTargets()){if(this.maxDepth!==1/0&&h.depth()>=this.maxDepth)continue;r++;let a=h.readdirCached();h.calledReaddir()?this.walkCB3(h,a,s,o):h.readdirCB((l,u)=>this.walkCB3(h,u,s,o),!0)}o()}walkCB3(t,e,s,i){s=s.filterEntries(t,e);let r=1,o=()=>{--r===0&&i()};for(let[h,a,l]of s.matches.entries())this.#r(h)||(r++,this.match(h,a,l).then(()=>o()));for(let[h,a]of s.subwalks.entries())r++,this.walkCB2(h,a,s.child(),o);o()}walkCBSync(t,e,s){this.signal?.aborted&&s(),this.walkCB2Sync(t,e,new Et(this.opts),s)}walkCB2Sync(t,e,s,i){if(this.#o(t))return i();if(this.signal?.aborted&&i(),this.paused){this.onResume(()=>this.walkCB2Sync(t,e,s,i));return}s.processPatterns(t,e);let r=1,o=()=>{--r===0&&i()};for(let[h,a,l]of s.matches.entries())this.#r(h)||this.matchSync(h,a,l);for(let h of s.subwalkTargets()){if(this.maxDepth!==1/0&&h.depth()>=this.maxDepth)continue;r++;let a=h.readdirSync();this.walkCB3Sync(h,a,s,o)}o()}walkCB3Sync(t,e,s,i){s=s.filterEntries(t,e);let r=1,o=()=>{--r===0&&i()};for(let[h,a,l]of s.matches.entries())this.#r(h)||this.matchSync(h,a,l);for(let[h,a]of s.subwalks.entries())r++,this.walkCB2Sync(h,a,s.child(),o);o()}},xt=class extends zt{matches=new Set;constructor(t,e,s){super(t,e,s)}matchEmit(t){this.matches.add(t)}async walk(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&await this.path.lstat(),await new Promise((t,e)=>{this.walkCB(this.path,this.patterns,()=>{this.signal?.aborted?e(this.signal.reason):t(this.matches)})}),this.matches}walkSync(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>{if(this.signal?.aborted)throw this.signal.reason}),this.matches}},vt=class extends zt{results;constructor(t,e,s){super(t,e,s),this.results=new V({signal:this.signal,objectMode:!0}),this.results.on("drain",()=>this.resume()),this.results.on("resume",()=>this.resume())}matchEmit(t){this.results.write(t),this.results.flowing||this.pause()}stream(){let t=this.path;return t.isUnknown()?t.lstat().then(()=>{this.walkCB(t,this.patterns,()=>this.results.end())}):this.walkCB(t,this.patterns,()=>this.results.end()),this.results}streamSync(){return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>this.results.end()),this.results}};var Pi=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",I=class{absolute;cwd;root;dot;dotRelative;follow;ignore;magicalBraces;mark;matchBase;maxDepth;nobrace;nocase;nodir;noext;noglobstar;pattern;platform;realpath;scurry;stat;signal;windowsPathsNoEscape;withFileTypes;includeChildMatches;opts;patterns;constructor(t,e){if(!e)throw new TypeError("glob options required");if(this.withFileTypes=!!e.withFileTypes,this.signal=e.signal,this.follow=!!e.follow,this.dot=!!e.dot,this.dotRelative=!!e.dotRelative,this.nodir=!!e.nodir,this.mark=!!e.mark,e.cwd?(e.cwd instanceof URL||e.cwd.startsWith("file://"))&&(e.cwd=Wi(e.cwd)):this.cwd="",this.cwd=e.cwd||"",this.root=e.root,this.magicalBraces=!!e.magicalBraces,this.nobrace=!!e.nobrace,this.noext=!!e.noext,this.realpath=!!e.realpath,this.absolute=e.absolute,this.includeChildMatches=e.includeChildMatches!==!1,this.noglobstar=!!e.noglobstar,this.matchBase=!!e.matchBase,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:1/0,this.stat=!!e.stat,this.ignore=e.ignore,this.withFileTypes&&this.absolute!==void 0)throw new Error("cannot set absolute and withFileTypes:true");if(typeof t=="string"&&(t=[t]),this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||e.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(t=t.map(a=>a.replace(/\\/g,"/"))),this.matchBase){if(e.noglobstar)throw new TypeError("base matching requires globstar");t=t.map(a=>a.includes("/")?a:`./**/${a}`)}if(this.pattern=t,this.platform=e.platform||Pi,this.opts={...e,platform:this.platform},e.scurry){if(this.scurry=e.scurry,e.nocase!==void 0&&e.nocase!==e.scurry.nocase)throw new Error("nocase option contradicts provided scurry option")}else{let a=e.platform==="win32"?it:e.platform==="darwin"?St:e.platform?rt:Xe;this.scurry=new a(this.cwd,{nocase:e.nocase,fs:e.fs})}this.nocase=this.scurry.nocase;let s=this.platform==="darwin"||this.platform==="win32",i={braceExpandMax:1e4,...e,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly:s,nocomment:!0,noext:this.noext,nonegate:!0,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug},r=this.pattern.map(a=>new D(a,i)),[o,h]=r.reduce((a,l)=>(a[0].push(...l.set),a[1].push(...l.globParts),a),[[],[]]);this.patterns=o.map((a,l)=>{let u=h[l];if(!u)throw new Error("invalid pattern object");return new nt(a,u,0,this.platform)})}async walk(){return[...await new xt(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walk()]}walkSync(){return[...new xt(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walkSync()]}stream(){return new vt(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).stream()}streamSync(){return new vt(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).streamSync()}iterateSync(){return this.streamSync()[Symbol.iterator]()}[Symbol.iterator](){return this.iterateSync()}iterate(){return this.stream()[Symbol.asyncIterator]()}[Symbol.asyncIterator](){return this.iterate()}};var le=(n,t={})=>{Array.isArray(n)||(n=[n]);for(let e of n)if(new D(e,t).hasMagic())return!0;return!1};function Bt(n,t={}){return new I(n,t).streamSync()}function Qe(n,t={}){return new I(n,t).stream()}function ts(n,t={}){return new I(n,t).walkSync()}async function Je(n,t={}){return new I(n,t).walk()}function Ut(n,t={}){return new I(n,t).iterateSync()}function es(n,t={}){return new I(n,t).iterate()}var ji=Bt,Ii=Object.assign(Qe,{sync:Bt}),zi=Ut,Bi=Object.assign(es,{sync:Ut}),Ui=Object.assign(ts,{stream:Bt,iterate:Ut}),Ze=Object.assign(Je,{glob:Je,globSync:ts,sync:Ui,globStream:Qe,stream:Ii,globStreamSync:Bt,streamSync:ji,globIterate:es,iterate:Bi,globIterateSync:Ut,iterateSync:zi,Glob:I,hasMagic:le,escape:tt,unescape:W});Ze.glob=Ze;export{I as Glob,ot as Ignore,tt as escape,Ze as glob,es as globIterate,Ut as globIterateSync,Qe as globStream,Bt as globStreamSync,ts as globSync,le as hasMagic,Bi as iterate,zi as iterateSync,Ii as stream,ji as streamSync,Ui as sync,W as unescape};
+//# sourceMappingURL=index.min.js.map
diff --git a/deps/npm/node_modules/glob/dist/esm/pattern.js b/deps/npm/node_modules/glob/dist/esm/pattern.js
index b41defa10c6a3a..2f733da5bf4f90 100644
--- a/deps/npm/node_modules/glob/dist/esm/pattern.js
+++ b/deps/npm/node_modules/glob/dist/esm/pattern.js
@@ -2,6 +2,7 @@
import { GLOBSTAR } from 'minimatch';
const isPatternList = (pl) => pl.length >= 1;
const isGlobList = (gl) => gl.length >= 1;
+const customInspect = Symbol.for('nodejs.util.inspect.custom');
/**
* An immutable-ish view on an array of glob parts and their parsed
* results
@@ -77,6 +78,9 @@ export class Pattern {
}
}
}
+ [customInspect]() {
+ return 'Pattern <' + this.#globList.slice(this.#index).join('/') + '>';
+ }
/**
* The first entry in the parsed list of patterns
*/
diff --git a/deps/npm/node_modules/glob/package.json b/deps/npm/node_modules/glob/package.json
index b99bb5fb38f8fc..03ed19143e0c56 100644
--- a/deps/npm/node_modules/glob/package.json
+++ b/deps/npm/node_modules/glob/package.json
@@ -2,20 +2,30 @@
"author": "Isaac Z. Schlueter (https://blog.izs.me/)",
"name": "glob",
"description": "the most correct and second fastest glob implementation in JavaScript",
- "version": "13.0.1",
+ "version": "13.0.6",
"type": "module",
"tshy": {
- "main": true,
"exports": {
"./package.json": "./package.json",
- ".": "./src/index.ts"
+ "./raw": "./src/index.ts",
+ ".": {
+ "import": {
+ "types": "./dist/esm/index.d.ts",
+ "default": "./dist/esm/index.min.js"
+ },
+ "require": {
+ "types": "./dist/commonjs/index.d.ts",
+ "default": "./dist/commonjs/index.min.js"
+ }
+ }
}
},
- "main": "./dist/commonjs/index.js",
+ "main": "./dist/commonjs/index.min.js",
+ "module": "./dist/esm/index.min.js",
"types": "./dist/commonjs/index.d.ts",
"exports": {
"./package.json": "./package.json",
- ".": {
+ "./raw": {
"import": {
"types": "./dist/esm/index.d.ts",
"default": "./dist/esm/index.js"
@@ -24,6 +34,16 @@
"types": "./dist/commonjs/index.d.ts",
"default": "./dist/commonjs/index.js"
}
+ },
+ ".": {
+ "import": {
+ "types": "./dist/esm/index.d.ts",
+ "default": "./dist/esm/index.min.js"
+ },
+ "require": {
+ "types": "./dist/commonjs/index.d.ts",
+ "default": "./dist/commonjs/index.min.js"
+ }
}
},
"repository": {
@@ -37,7 +57,7 @@
"preversion": "npm test",
"postversion": "npm publish",
"prepublishOnly": "npm run benchclean; git push origin --follow-tags",
- "prepare": "tshy",
+ "prepare": "tshy && bash scripts/build.sh",
"pretest": "npm run prepare",
"presnap": "npm run prepare",
"test": "tap",
@@ -53,29 +73,26 @@
"benchclean": "node benchclean.cjs"
},
"dependencies": {
- "minimatch": "^10.1.2",
- "minipass": "^7.1.2",
- "path-scurry": "^2.0.0"
+ "minimatch": "^10.2.2",
+ "minipass": "^7.1.3",
+ "path-scurry": "^2.0.2"
},
"devDependencies": {
- "@types/node": "^24.10.0",
+ "@types/node": "^25.3.0",
+ "esbuild": "^0.27.3",
"memfs": "^4.50.0",
"mkdirp": "^3.0.1",
"prettier": "^3.6.2",
- "rimraf": "^6.1.0",
- "tap": "^21.1.3",
- "tshy": "^3.0.3",
- "typedoc": "^0.28.14"
- },
- "tap": {
- "before": "test/00-setup.ts"
+ "rimraf": "^6.1.3",
+ "tap": "^21.6.1",
+ "tshy": "^3.3.2",
+ "typedoc": "^0.28.17"
},
"license": "BlueOak-1.0.0",
"funding": {
"url": "https://github.com/sponsors/isaacs"
},
"engines": {
- "node": "20 || >=22"
- },
- "module": "./dist/esm/index.js"
+ "node": "18 || 20 || >=22"
+ }
}
diff --git a/deps/npm/node_modules/iconv-lite/encodings/dbcs-codec.js b/deps/npm/node_modules/iconv-lite/encodings/dbcs-codec.js
index fa839170367b27..bfec7f2ef9071e 100644
--- a/deps/npm/node_modules/iconv-lite/encodings/dbcs-codec.js
+++ b/deps/npm/node_modules/iconv-lite/encodings/dbcs-codec.js
@@ -1,597 +1,532 @@
-"use strict";
-var Buffer = require("safer-buffer").Buffer;
+"use strict"
+var Buffer = require("safer-buffer").Buffer
// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.
// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.
// To save memory and loading time, we read table files only when requested.
-exports._dbcs = DBCSCodec;
+exports._dbcs = DBCSCodec
-var UNASSIGNED = -1,
- GB18030_CODE = -2,
- SEQ_START = -10,
- NODE_START = -1000,
- UNASSIGNED_NODE = new Array(0x100),
- DEF_CHAR = -1;
-
-for (var i = 0; i < 0x100; i++)
- UNASSIGNED_NODE[i] = UNASSIGNED;
+var UNASSIGNED = -1
+var GB18030_CODE = -2
+var SEQ_START = -10
+var NODE_START = -1000
+var UNASSIGNED_NODE = new Array(0x100)
+var DEF_CHAR = -1
+for (var i = 0; i < 0x100; i++) { UNASSIGNED_NODE[i] = UNASSIGNED }
// Class DBCSCodec reads and initializes mapping tables.
-function DBCSCodec(codecOptions, iconv) {
- this.encodingName = codecOptions.encodingName;
- if (!codecOptions)
- throw new Error("DBCS codec is called without the data.")
- if (!codecOptions.table)
- throw new Error("Encoding '" + this.encodingName + "' has no data.");
-
- // Load tables.
- var mappingTable = codecOptions.table();
-
-
- // Decode tables: MBCS -> Unicode.
-
- // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.
- // Trie root is decodeTables[0].
- // Values: >= 0 -> unicode character code. can be > 0xFFFF
- // == UNASSIGNED -> unknown/unassigned sequence.
- // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.
- // <= NODE_START -> index of the next node in our trie to process next byte.
- // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq.
- this.decodeTables = [];
- this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.
-
- // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here.
- this.decodeTableSeq = [];
-
- // Actual mapping tables consist of chunks. Use them to fill up decode tables.
- for (var i = 0; i < mappingTable.length; i++)
- this._addDecodeChunk(mappingTable[i]);
-
- // Load & create GB18030 tables when needed.
- if (typeof codecOptions.gb18030 === 'function') {
- this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.
-
- // Add GB18030 common decode nodes.
- var commonThirdByteNodeIdx = this.decodeTables.length;
- this.decodeTables.push(UNASSIGNED_NODE.slice(0));
-
- var commonFourthByteNodeIdx = this.decodeTables.length;
- this.decodeTables.push(UNASSIGNED_NODE.slice(0));
-
- // Fill out the tree
- var firstByteNode = this.decodeTables[0];
- for (var i = 0x81; i <= 0xFE; i++) {
- var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]];
- for (var j = 0x30; j <= 0x39; j++) {
- if (secondByteNode[j] === UNASSIGNED) {
- secondByteNode[j] = NODE_START - commonThirdByteNodeIdx;
- } else if (secondByteNode[j] > NODE_START) {
- throw new Error("gb18030 decode tables conflict at byte 2");
- }
-
- var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]];
- for (var k = 0x81; k <= 0xFE; k++) {
- if (thirdByteNode[k] === UNASSIGNED) {
- thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx;
- } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {
- continue;
- } else if (thirdByteNode[k] > NODE_START) {
- throw new Error("gb18030 decode tables conflict at byte 3");
- }
-
- var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]];
- for (var l = 0x30; l <= 0x39; l++) {
- if (fourthByteNode[l] === UNASSIGNED)
- fourthByteNode[l] = GB18030_CODE;
- }
- }
- }
+function DBCSCodec (codecOptions, iconv) {
+ this.encodingName = codecOptions.encodingName
+ if (!codecOptions) { throw new Error("DBCS codec is called without the data.") }
+ if (!codecOptions.table) { throw new Error("Encoding '" + this.encodingName + "' has no data.") }
+
+ // Load tables.
+ var mappingTable = codecOptions.table()
+
+ // Decode tables: MBCS -> Unicode.
+
+ // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.
+ // Trie root is decodeTables[0].
+ // Values: >= 0 -> unicode character code. can be > 0xFFFF
+ // == UNASSIGNED -> unknown/unassigned sequence.
+ // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.
+ // <= NODE_START -> index of the next node in our trie to process next byte.
+ // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq.
+ this.decodeTables = []
+ this.decodeTables[0] = UNASSIGNED_NODE.slice(0) // Create root node.
+
+ // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here.
+ this.decodeTableSeq = []
+
+ // Actual mapping tables consist of chunks. Use them to fill up decode tables.
+ for (var i = 0; i < mappingTable.length; i++) { this._addDecodeChunk(mappingTable[i]) }
+
+ // Load & create GB18030 tables when needed.
+ if (typeof codecOptions.gb18030 === "function") {
+ this.gb18030 = codecOptions.gb18030() // Load GB18030 ranges.
+
+ // Add GB18030 common decode nodes.
+ var commonThirdByteNodeIdx = this.decodeTables.length
+ this.decodeTables.push(UNASSIGNED_NODE.slice(0))
+
+ var commonFourthByteNodeIdx = this.decodeTables.length
+ this.decodeTables.push(UNASSIGNED_NODE.slice(0))
+
+ // Fill out the tree
+ var firstByteNode = this.decodeTables[0]
+ for (var i = 0x81; i <= 0xFE; i++) {
+ var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]]
+ for (var j = 0x30; j <= 0x39; j++) {
+ if (secondByteNode[j] === UNASSIGNED) {
+ secondByteNode[j] = NODE_START - commonThirdByteNodeIdx
+ } else if (secondByteNode[j] > NODE_START) {
+ throw new Error("gb18030 decode tables conflict at byte 2")
}
- }
- this.defaultCharUnicode = iconv.defaultCharUnicode;
-
-
- // Encode tables: Unicode -> DBCS.
-
- // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.
- // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.
- // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).
- // == UNASSIGNED -> no conversion found. Output a default char.
- // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence.
- this.encodeTable = [];
-
- // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of
- // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key
- // means end of sequence (needed when one sequence is a strict subsequence of another).
- // Objects are kept separately from encodeTable to increase performance.
- this.encodeTableSeq = [];
-
- // Some chars can be decoded, but need not be encoded.
- var skipEncodeChars = {};
- if (codecOptions.encodeSkipVals)
- for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {
- var val = codecOptions.encodeSkipVals[i];
- if (typeof val === 'number')
- skipEncodeChars[val] = true;
- else
- for (var j = val.from; j <= val.to; j++)
- skipEncodeChars[j] = true;
+ var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]]
+ for (var k = 0x81; k <= 0xFE; k++) {
+ if (thirdByteNode[k] === UNASSIGNED) {
+ thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx
+ } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {
+ continue
+ } else if (thirdByteNode[k] > NODE_START) {
+ throw new Error("gb18030 decode tables conflict at byte 3")
+ }
+
+ var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]]
+ for (var l = 0x30; l <= 0x39; l++) {
+ if (fourthByteNode[l] === UNASSIGNED) { fourthByteNode[l] = GB18030_CODE }
+ }
}
-
- // Use decode trie to recursively fill out encode tables.
- this._fillEncodeTable(0, 0, skipEncodeChars);
-
- // Add more encoding pairs when needed.
- if (codecOptions.encodeAdd) {
- for (var uChar in codecOptions.encodeAdd)
- if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))
- this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);
+ }
}
+ }
+
+ this.defaultCharUnicode = iconv.defaultCharUnicode
+
+ // Encode tables: Unicode -> DBCS.
+
+ // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.
+ // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.
+ // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).
+ // == UNASSIGNED -> no conversion found. Output a default char.
+ // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence.
+ this.encodeTable = []
+
+ // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of
+ // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key
+ // means end of sequence (needed when one sequence is a strict subsequence of another).
+ // Objects are kept separately from encodeTable to increase performance.
+ this.encodeTableSeq = []
+
+ // Some chars can be decoded, but need not be encoded.
+ var skipEncodeChars = {}
+ if (codecOptions.encodeSkipVals) {
+ for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {
+ var val = codecOptions.encodeSkipVals[i]
+ if (typeof val === "number") { skipEncodeChars[val] = true } else {
+ for (var j = val.from; j <= val.to; j++) { skipEncodeChars[j] = true }
+ }
+ }
+ }
+
+ // Use decode trie to recursively fill out encode tables.
+ this._fillEncodeTable(0, 0, skipEncodeChars)
- this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];
- if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];
- if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0);
+ // Add more encoding pairs when needed.
+ if (codecOptions.encodeAdd) {
+ for (var uChar in codecOptions.encodeAdd) {
+ if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) { this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]) }
+ }
+ }
+
+ this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]
+ if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]["?"]
+ if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0)
}
-DBCSCodec.prototype.encoder = DBCSEncoder;
-DBCSCodec.prototype.decoder = DBCSDecoder;
+DBCSCodec.prototype.encoder = DBCSEncoder
+DBCSCodec.prototype.decoder = DBCSDecoder
// Decoder helpers
-DBCSCodec.prototype._getDecodeTrieNode = function(addr) {
- var bytes = [];
- for (; addr > 0; addr >>>= 8)
- bytes.push(addr & 0xFF);
- if (bytes.length == 0)
- bytes.push(0);
-
- var node = this.decodeTables[0];
- for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.
- var val = node[bytes[i]];
-
- if (val == UNASSIGNED) { // Create new node.
- node[bytes[i]] = NODE_START - this.decodeTables.length;
- this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));
- }
- else if (val <= NODE_START) { // Existing node.
- node = this.decodeTables[NODE_START - val];
- }
- else
- throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16));
- }
- return node;
+DBCSCodec.prototype._getDecodeTrieNode = function (addr) {
+ var bytes = []
+ for (; addr > 0; addr >>>= 8) { bytes.push(addr & 0xFF) }
+ if (bytes.length == 0) { bytes.push(0) }
+
+ var node = this.decodeTables[0]
+ for (var i = bytes.length - 1; i > 0; i--) { // Traverse nodes deeper into the trie.
+ var val = node[bytes[i]]
+
+ if (val == UNASSIGNED) { // Create new node.
+ node[bytes[i]] = NODE_START - this.decodeTables.length
+ this.decodeTables.push(node = UNASSIGNED_NODE.slice(0))
+ } else if (val <= NODE_START) { // Existing node.
+ node = this.decodeTables[NODE_START - val]
+ } else { throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)) }
+ }
+ return node
}
-
-DBCSCodec.prototype._addDecodeChunk = function(chunk) {
- // First element of chunk is the hex mbcs code where we start.
- var curAddr = parseInt(chunk[0], 16);
-
- // Choose the decoding node where we'll write our chars.
- var writeTable = this._getDecodeTrieNode(curAddr);
- curAddr = curAddr & 0xFF;
-
- // Write all other elements of the chunk to the table.
- for (var k = 1; k < chunk.length; k++) {
- var part = chunk[k];
- if (typeof part === "string") { // String, write as-is.
- for (var l = 0; l < part.length;) {
- var code = part.charCodeAt(l++);
- if (0xD800 <= code && code < 0xDC00) { // Decode surrogate
- var codeTrail = part.charCodeAt(l++);
- if (0xDC00 <= codeTrail && codeTrail < 0xE000)
- writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);
- else
- throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]);
- }
- else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)
- var len = 0xFFF - code + 2;
- var seq = [];
- for (var m = 0; m < len; m++)
- seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.
-
- writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;
- this.decodeTableSeq.push(seq);
- }
- else
- writeTable[curAddr++] = code; // Basic char
- }
- }
- else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character.
- var charCode = writeTable[curAddr - 1] + 1;
- for (var l = 0; l < part; l++)
- writeTable[curAddr++] = charCode++;
- }
- else
- throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]);
- }
- if (curAddr > 0xFF)
- throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr);
+DBCSCodec.prototype._addDecodeChunk = function (chunk) {
+ // First element of chunk is the hex mbcs code where we start.
+ var curAddr = parseInt(chunk[0], 16)
+
+ // Choose the decoding node where we'll write our chars.
+ var writeTable = this._getDecodeTrieNode(curAddr)
+ curAddr = curAddr & 0xFF
+
+ // Write all other elements of the chunk to the table.
+ for (var k = 1; k < chunk.length; k++) {
+ var part = chunk[k]
+ if (typeof part === "string") { // String, write as-is.
+ for (var l = 0; l < part.length;) {
+ var code = part.charCodeAt(l++)
+ if (code >= 0xD800 && code < 0xDC00) { // Decode surrogate
+ var codeTrail = part.charCodeAt(l++)
+ if (codeTrail >= 0xDC00 && codeTrail < 0xE000) { writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00) } else { throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]) }
+ } else if (code > 0x0FF0 && code <= 0x0FFF) { // Character sequence (our own encoding used)
+ var len = 0xFFF - code + 2
+ var seq = []
+ for (var m = 0; m < len; m++) { seq.push(part.charCodeAt(l++)) } // Simple variation: don't support surrogates or subsequences in seq.
+
+ writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length
+ this.decodeTableSeq.push(seq)
+ } else { writeTable[curAddr++] = code } // Basic char
+ }
+ } else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character.
+ var charCode = writeTable[curAddr - 1] + 1
+ for (var l = 0; l < part; l++) { writeTable[curAddr++] = charCode++ }
+ } else { throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]) }
+ }
+ if (curAddr > 0xFF) { throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr) }
}
// Encoder helpers
-DBCSCodec.prototype._getEncodeBucket = function(uCode) {
- var high = uCode >> 8; // This could be > 0xFF because of astral characters.
- if (this.encodeTable[high] === undefined)
- this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.
- return this.encodeTable[high];
+DBCSCodec.prototype._getEncodeBucket = function (uCode) {
+ var high = uCode >> 8 // This could be > 0xFF because of astral characters.
+ if (this.encodeTable[high] === undefined) {
+ this.encodeTable[high] = UNASSIGNED_NODE.slice(0)
+ } // Create bucket on demand.
+ return this.encodeTable[high]
}
-DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {
- var bucket = this._getEncodeBucket(uCode);
- var low = uCode & 0xFF;
- if (bucket[low] <= SEQ_START)
- this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.
- else if (bucket[low] == UNASSIGNED)
- bucket[low] = dbcsCode;
+DBCSCodec.prototype._setEncodeChar = function (uCode, dbcsCode) {
+ var bucket = this._getEncodeBucket(uCode)
+ var low = uCode & 0xFF
+ if (bucket[low] <= SEQ_START) { this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode } // There's already a sequence, set a single-char subsequence of it.
+ else if (bucket[low] == UNASSIGNED) { bucket[low] = dbcsCode }
}
-DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {
-
- // Get the root of character tree according to first character of the sequence.
- var uCode = seq[0];
- var bucket = this._getEncodeBucket(uCode);
- var low = uCode & 0xFF;
-
- var node;
- if (bucket[low] <= SEQ_START) {
- // There's already a sequence with - use it.
- node = this.encodeTableSeq[SEQ_START-bucket[low]];
- }
- else {
- // There was no sequence object - allocate a new one.
- node = {};
- if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.
- bucket[low] = SEQ_START - this.encodeTableSeq.length;
- this.encodeTableSeq.push(node);
+DBCSCodec.prototype._setEncodeSequence = function (seq, dbcsCode) {
+ // Get the root of character tree according to first character of the sequence.
+ var uCode = seq[0]
+ var bucket = this._getEncodeBucket(uCode)
+ var low = uCode & 0xFF
+
+ var node
+ if (bucket[low] <= SEQ_START) {
+ // There's already a sequence with - use it.
+ node = this.encodeTableSeq[SEQ_START - bucket[low]]
+ } else {
+ // There was no sequence object - allocate a new one.
+ node = {}
+ if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low] // If a char was set before - make it a single-char subsequence.
+ bucket[low] = SEQ_START - this.encodeTableSeq.length
+ this.encodeTableSeq.push(node)
+ }
+
+ // Traverse the character tree, allocating new nodes as needed.
+ for (var j = 1; j < seq.length - 1; j++) {
+ var oldVal = node[uCode]
+ if (typeof oldVal === "object") { node = oldVal } else {
+ node = node[uCode] = {}
+ if (oldVal !== undefined) { node[DEF_CHAR] = oldVal }
}
+ }
- // Traverse the character tree, allocating new nodes as needed.
- for (var j = 1; j < seq.length-1; j++) {
- var oldVal = node[uCode];
- if (typeof oldVal === 'object')
- node = oldVal;
- else {
- node = node[uCode] = {}
- if (oldVal !== undefined)
- node[DEF_CHAR] = oldVal
- }
- }
-
- // Set the leaf to given dbcsCode.
- uCode = seq[seq.length-1];
- node[uCode] = dbcsCode;
+ // Set the leaf to given dbcsCode.
+ uCode = seq[seq.length - 1]
+ node[uCode] = dbcsCode
}
-DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {
- var node = this.decodeTables[nodeIdx];
- var hasValues = false;
- var subNodeEmpty = {};
- for (var i = 0; i < 0x100; i++) {
- var uCode = node[i];
- var mbCode = prefix + i;
- if (skipEncodeChars[mbCode])
- continue;
-
- if (uCode >= 0) {
- this._setEncodeChar(uCode, mbCode);
- hasValues = true;
- } else if (uCode <= NODE_START) {
- var subNodeIdx = NODE_START - uCode;
- if (!subNodeEmpty[subNodeIdx]) { // Skip empty subtrees (they are too large in gb18030).
- var newPrefix = (mbCode << 8) >>> 0; // NOTE: '>>> 0' keeps 32-bit num positive.
- if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars))
- hasValues = true;
- else
- subNodeEmpty[subNodeIdx] = true;
- }
- } else if (uCode <= SEQ_START) {
- this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);
- hasValues = true;
- }
+DBCSCodec.prototype._fillEncodeTable = function (nodeIdx, prefix, skipEncodeChars) {
+ var node = this.decodeTables[nodeIdx]
+ var hasValues = false
+ var subNodeEmpty = {}
+ for (var i = 0; i < 0x100; i++) {
+ var uCode = node[i]
+ var mbCode = prefix + i
+ if (skipEncodeChars[mbCode]) { continue }
+
+ if (uCode >= 0) {
+ this._setEncodeChar(uCode, mbCode)
+ hasValues = true
+ } else if (uCode <= NODE_START) {
+ var subNodeIdx = NODE_START - uCode
+ if (!subNodeEmpty[subNodeIdx]) { // Skip empty subtrees (they are too large in gb18030).
+ var newPrefix = (mbCode << 8) >>> 0 // NOTE: '>>> 0' keeps 32-bit num positive.
+ if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) { hasValues = true } else { subNodeEmpty[subNodeIdx] = true }
+ }
+ } else if (uCode <= SEQ_START) {
+ this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode)
+ hasValues = true
}
- return hasValues;
+ }
+ return hasValues
}
-
-
// == Encoder ==================================================================
-function DBCSEncoder(options, codec) {
- // Encoder state
- this.leadSurrogate = -1;
- this.seqObj = undefined;
-
- // Static data
- this.encodeTable = codec.encodeTable;
- this.encodeTableSeq = codec.encodeTableSeq;
- this.defaultCharSingleByte = codec.defCharSB;
- this.gb18030 = codec.gb18030;
+function DBCSEncoder (options, codec) {
+ // Encoder state
+ this.leadSurrogate = -1
+ this.seqObj = undefined
+
+ // Static data
+ this.encodeTable = codec.encodeTable
+ this.encodeTableSeq = codec.encodeTableSeq
+ this.defaultCharSingleByte = codec.defCharSB
+ this.gb18030 = codec.gb18030
}
-DBCSEncoder.prototype.write = function(str) {
- var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),
- leadSurrogate = this.leadSurrogate,
- seqObj = this.seqObj, nextChar = -1,
- i = 0, j = 0;
-
- while (true) {
- // 0. Get next character.
- if (nextChar === -1) {
- if (i == str.length) break;
- var uCode = str.charCodeAt(i++);
- }
- else {
- var uCode = nextChar;
- nextChar = -1;
- }
+DBCSEncoder.prototype.write = function (str) {
+ var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3))
+ var leadSurrogate = this.leadSurrogate
+ var seqObj = this.seqObj
+ var nextChar = -1
+ var i = 0; var j = 0
+
+ while (true) {
+ // 0. Get next character.
+ if (nextChar === -1) {
+ if (i == str.length) break
+ var uCode = str.charCodeAt(i++)
+ } else {
+ var uCode = nextChar
+ nextChar = -1
+ }
- // 1. Handle surrogates.
- if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.
- if (uCode < 0xDC00) { // We've got lead surrogate.
- if (leadSurrogate === -1) {
- leadSurrogate = uCode;
- continue;
- } else {
- leadSurrogate = uCode;
- // Double lead surrogate found.
- uCode = UNASSIGNED;
- }
- } else { // We've got trail surrogate.
- if (leadSurrogate !== -1) {
- uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);
- leadSurrogate = -1;
- } else {
- // Incomplete surrogate pair - only trail surrogate found.
- uCode = UNASSIGNED;
- }
-
- }
+ // 1. Handle surrogates.
+ if (uCode >= 0xD800 && uCode < 0xE000) { // Char is one of surrogates.
+ if (uCode < 0xDC00) { // We've got lead surrogate.
+ if (leadSurrogate === -1) {
+ leadSurrogate = uCode
+ continue
+ } else {
+ leadSurrogate = uCode
+ // Double lead surrogate found.
+ uCode = UNASSIGNED
}
- else if (leadSurrogate !== -1) {
- // Incomplete surrogate pair - only lead surrogate found.
- nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.
- leadSurrogate = -1;
+ } else { // We've got trail surrogate.
+ if (leadSurrogate !== -1) {
+ uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00)
+ leadSurrogate = -1
+ } else {
+ // Incomplete surrogate pair - only trail surrogate found.
+ uCode = UNASSIGNED
}
+ }
+ } else if (leadSurrogate !== -1) {
+ // Incomplete surrogate pair - only lead surrogate found.
+ nextChar = uCode; uCode = UNASSIGNED // Write an error, then current char.
+ leadSurrogate = -1
+ }
- // 2. Convert uCode character.
- var dbcsCode = UNASSIGNED;
- if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence
- var resCode = seqObj[uCode];
- if (typeof resCode === 'object') { // Sequence continues.
- seqObj = resCode;
- continue;
-
- } else if (typeof resCode == 'number') { // Sequence finished. Write it.
- dbcsCode = resCode;
-
- } else if (resCode == undefined) { // Current character is not part of the sequence.
-
- // Try default character for this sequence
- resCode = seqObj[DEF_CHAR];
- if (resCode !== undefined) {
- dbcsCode = resCode; // Found. Write it.
- nextChar = uCode; // Current character will be written too in the next iteration.
-
- } else {
- // TODO: What if we have no default? (resCode == undefined)
- // Then, we should write first char of the sequence as-is and try the rest recursively.
- // Didn't do it for now because no encoding has this situation yet.
- // Currently, just skip the sequence and write current char.
- }
- }
- seqObj = undefined;
+ // 2. Convert uCode character.
+ var dbcsCode = UNASSIGNED
+ if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence
+ var resCode = seqObj[uCode]
+ if (typeof resCode === "object") { // Sequence continues.
+ seqObj = resCode
+ continue
+ } else if (typeof resCode === "number") { // Sequence finished. Write it.
+ dbcsCode = resCode
+ } else if (resCode == undefined) { // Current character is not part of the sequence.
+ // Try default character for this sequence
+ resCode = seqObj[DEF_CHAR]
+ if (resCode !== undefined) {
+ dbcsCode = resCode // Found. Write it.
+ nextChar = uCode // Current character will be written too in the next iteration.
+ } else {
+ // TODO: What if we have no default? (resCode == undefined)
+ // Then, we should write first char of the sequence as-is and try the rest recursively.
+ // Didn't do it for now because no encoding has this situation yet.
+ // Currently, just skip the sequence and write current char.
}
- else if (uCode >= 0) { // Regular character
- var subtable = this.encodeTable[uCode >> 8];
- if (subtable !== undefined)
- dbcsCode = subtable[uCode & 0xFF];
-
- if (dbcsCode <= SEQ_START) { // Sequence start
- seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];
- continue;
- }
-
- if (dbcsCode == UNASSIGNED && this.gb18030) {
- // Use GB18030 algorithm to find character(s) to write.
- var idx = findIdx(this.gb18030.uChars, uCode);
- if (idx != -1) {
- var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);
- newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;
- newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;
- newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;
- newBuf[j++] = 0x30 + dbcsCode;
- continue;
- }
- }
+ }
+ seqObj = undefined
+ } else if (uCode >= 0) { // Regular character
+ var subtable = this.encodeTable[uCode >> 8]
+ if (subtable !== undefined) { dbcsCode = subtable[uCode & 0xFF] }
+
+ if (dbcsCode <= SEQ_START) { // Sequence start
+ seqObj = this.encodeTableSeq[SEQ_START - dbcsCode]
+ continue
+ }
+
+ if (dbcsCode == UNASSIGNED && this.gb18030) {
+ // Use GB18030 algorithm to find character(s) to write.
+ var idx = findIdx(this.gb18030.uChars, uCode)
+ if (idx != -1) {
+ var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx])
+ newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600
+ newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260
+ newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10
+ newBuf[j++] = 0x30 + dbcsCode
+ continue
}
+ }
+ }
- // 3. Write dbcsCode character.
- if (dbcsCode === UNASSIGNED)
- dbcsCode = this.defaultCharSingleByte;
-
- if (dbcsCode < 0x100) {
- newBuf[j++] = dbcsCode;
- }
- else if (dbcsCode < 0x10000) {
- newBuf[j++] = dbcsCode >> 8; // high byte
- newBuf[j++] = dbcsCode & 0xFF; // low byte
- }
- else if (dbcsCode < 0x1000000) {
- newBuf[j++] = dbcsCode >> 16;
- newBuf[j++] = (dbcsCode >> 8) & 0xFF;
- newBuf[j++] = dbcsCode & 0xFF;
- } else {
- newBuf[j++] = dbcsCode >>> 24;
- newBuf[j++] = (dbcsCode >>> 16) & 0xFF;
- newBuf[j++] = (dbcsCode >>> 8) & 0xFF;
- newBuf[j++] = dbcsCode & 0xFF;
- }
+ // 3. Write dbcsCode character.
+ if (dbcsCode === UNASSIGNED) { dbcsCode = this.defaultCharSingleByte }
+
+ if (dbcsCode < 0x100) {
+ newBuf[j++] = dbcsCode
+ } else if (dbcsCode < 0x10000) {
+ newBuf[j++] = dbcsCode >> 8 // high byte
+ newBuf[j++] = dbcsCode & 0xFF // low byte
+ } else if (dbcsCode < 0x1000000) {
+ newBuf[j++] = dbcsCode >> 16
+ newBuf[j++] = (dbcsCode >> 8) & 0xFF
+ newBuf[j++] = dbcsCode & 0xFF
+ } else {
+ newBuf[j++] = dbcsCode >>> 24
+ newBuf[j++] = (dbcsCode >>> 16) & 0xFF
+ newBuf[j++] = (dbcsCode >>> 8) & 0xFF
+ newBuf[j++] = dbcsCode & 0xFF
}
+ }
- this.seqObj = seqObj;
- this.leadSurrogate = leadSurrogate;
- return newBuf.slice(0, j);
+ this.seqObj = seqObj
+ this.leadSurrogate = leadSurrogate
+ return newBuf.slice(0, j)
}
-DBCSEncoder.prototype.end = function() {
- if (this.leadSurrogate === -1 && this.seqObj === undefined)
- return; // All clean. Most often case.
-
- var newBuf = Buffer.alloc(10), j = 0;
-
- if (this.seqObj) { // We're in the sequence.
- var dbcsCode = this.seqObj[DEF_CHAR];
- if (dbcsCode !== undefined) { // Write beginning of the sequence.
- if (dbcsCode < 0x100) {
- newBuf[j++] = dbcsCode;
- }
- else {
- newBuf[j++] = dbcsCode >> 8; // high byte
- newBuf[j++] = dbcsCode & 0xFF; // low byte
- }
- } else {
- // See todo above.
- }
- this.seqObj = undefined;
+DBCSEncoder.prototype.end = function () {
+ if (this.leadSurrogate === -1 && this.seqObj === undefined) { return } // All clean. Most often case.
+
+ var newBuf = Buffer.alloc(10); var j = 0
+
+ if (this.seqObj) { // We're in the sequence.
+ var dbcsCode = this.seqObj[DEF_CHAR]
+ if (dbcsCode !== undefined) { // Write beginning of the sequence.
+ if (dbcsCode < 0x100) {
+ newBuf[j++] = dbcsCode
+ } else {
+ newBuf[j++] = dbcsCode >> 8 // high byte
+ newBuf[j++] = dbcsCode & 0xFF // low byte
+ }
+ } else {
+ // See todo above.
}
+ this.seqObj = undefined
+ }
- if (this.leadSurrogate !== -1) {
- // Incomplete surrogate pair - only lead surrogate found.
- newBuf[j++] = this.defaultCharSingleByte;
- this.leadSurrogate = -1;
- }
-
- return newBuf.slice(0, j);
+ if (this.leadSurrogate !== -1) {
+ // Incomplete surrogate pair - only lead surrogate found.
+ newBuf[j++] = this.defaultCharSingleByte
+ this.leadSurrogate = -1
+ }
+
+ return newBuf.slice(0, j)
}
// Export for testing
-DBCSEncoder.prototype.findIdx = findIdx;
-
+DBCSEncoder.prototype.findIdx = findIdx
// == Decoder ==================================================================
-function DBCSDecoder(options, codec) {
- // Decoder state
- this.nodeIdx = 0;
- this.prevBytes = [];
+function DBCSDecoder (options, codec) {
+ // Decoder state
+ this.nodeIdx = 0
+ this.prevBytes = []
- // Static data
- this.decodeTables = codec.decodeTables;
- this.decodeTableSeq = codec.decodeTableSeq;
- this.defaultCharUnicode = codec.defaultCharUnicode;
- this.gb18030 = codec.gb18030;
+ // Static data
+ this.decodeTables = codec.decodeTables
+ this.decodeTableSeq = codec.decodeTableSeq
+ this.defaultCharUnicode = codec.defaultCharUnicode
+ this.gb18030 = codec.gb18030
}
-DBCSDecoder.prototype.write = function(buf) {
- var newBuf = Buffer.alloc(buf.length*2),
- nodeIdx = this.nodeIdx,
- prevBytes = this.prevBytes, prevOffset = this.prevBytes.length,
- seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence.
- uCode;
-
- for (var i = 0, j = 0; i < buf.length; i++) {
- var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset];
-
- // Lookup in current trie node.
- var uCode = this.decodeTables[nodeIdx][curByte];
-
- if (uCode >= 0) {
- // Normal character, just use it.
- }
- else if (uCode === UNASSIGNED) { // Unknown char.
- // TODO: Callback with seq.
- uCode = this.defaultCharUnicode.charCodeAt(0);
- i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again.
- }
- else if (uCode === GB18030_CODE) {
- if (i >= 3) {
- var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30);
- } else {
- var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 +
- (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 +
- (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 +
- (curByte-0x30);
- }
- var idx = findIdx(this.gb18030.gbChars, ptr);
- uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];
- }
- else if (uCode <= NODE_START) { // Go to next trie node.
- nodeIdx = NODE_START - uCode;
- continue;
- }
- else if (uCode <= SEQ_START) { // Output a sequence of chars.
- var seq = this.decodeTableSeq[SEQ_START - uCode];
- for (var k = 0; k < seq.length - 1; k++) {
- uCode = seq[k];
- newBuf[j++] = uCode & 0xFF;
- newBuf[j++] = uCode >> 8;
- }
- uCode = seq[seq.length-1];
- }
- else
- throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte);
-
- // Write the character to buffer, handling higher planes using surrogate pair.
- if (uCode >= 0x10000) {
- uCode -= 0x10000;
- var uCodeLead = 0xD800 | (uCode >> 10);
- newBuf[j++] = uCodeLead & 0xFF;
- newBuf[j++] = uCodeLead >> 8;
-
- uCode = 0xDC00 | (uCode & 0x3FF);
- }
- newBuf[j++] = uCode & 0xFF;
- newBuf[j++] = uCode >> 8;
-
- // Reset trie node.
- nodeIdx = 0; seqStart = i+1;
+DBCSDecoder.prototype.write = function (buf) {
+ var newBuf = Buffer.alloc(buf.length * 2)
+ var nodeIdx = this.nodeIdx
+ var prevBytes = this.prevBytes; var prevOffset = this.prevBytes.length
+ var seqStart = -this.prevBytes.length // idx of the start of current parsed sequence.
+ var uCode
+
+ for (var i = 0, j = 0; i < buf.length; i++) {
+ var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset]
+
+ // Lookup in current trie node.
+ var uCode = this.decodeTables[nodeIdx][curByte]
+
+ if (uCode >= 0) {
+ // Normal character, just use it.
+ } else if (uCode === UNASSIGNED) { // Unknown char.
+ // TODO: Callback with seq.
+ uCode = this.defaultCharUnicode.charCodeAt(0)
+ i = seqStart // Skip one byte ('i' will be incremented by the for loop) and try to parse again.
+ } else if (uCode === GB18030_CODE) {
+ if (i >= 3) {
+ var ptr = (buf[i - 3] - 0x81) * 12600 + (buf[i - 2] - 0x30) * 1260 + (buf[i - 1] - 0x81) * 10 + (curByte - 0x30)
+ } else {
+ var ptr = (prevBytes[i - 3 + prevOffset] - 0x81) * 12600 +
+ (((i - 2 >= 0) ? buf[i - 2] : prevBytes[i - 2 + prevOffset]) - 0x30) * 1260 +
+ (((i - 1 >= 0) ? buf[i - 1] : prevBytes[i - 1 + prevOffset]) - 0x81) * 10 +
+ (curByte - 0x30)
+ }
+ var idx = findIdx(this.gb18030.gbChars, ptr)
+ uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]
+ } else if (uCode <= NODE_START) { // Go to next trie node.
+ nodeIdx = NODE_START - uCode
+ continue
+ } else if (uCode <= SEQ_START) { // Output a sequence of chars.
+ var seq = this.decodeTableSeq[SEQ_START - uCode]
+ for (var k = 0; k < seq.length - 1; k++) {
+ uCode = seq[k]
+ newBuf[j++] = uCode & 0xFF
+ newBuf[j++] = uCode >> 8
+ }
+ uCode = seq[seq.length - 1]
+ } else { throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte) }
+
+ // Write the character to buffer, handling higher planes using surrogate pair.
+ if (uCode >= 0x10000) {
+ uCode -= 0x10000
+ var uCodeLead = 0xD800 | (uCode >> 10)
+ newBuf[j++] = uCodeLead & 0xFF
+ newBuf[j++] = uCodeLead >> 8
+
+ uCode = 0xDC00 | (uCode & 0x3FF)
}
+ newBuf[j++] = uCode & 0xFF
+ newBuf[j++] = uCode >> 8
+
+ // Reset trie node.
+ nodeIdx = 0; seqStart = i + 1
+ }
- this.nodeIdx = nodeIdx;
- this.prevBytes = (seqStart >= 0)
- ? Array.prototype.slice.call(buf, seqStart)
- : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf));
+ this.nodeIdx = nodeIdx
+ this.prevBytes = (seqStart >= 0)
+ ? Array.prototype.slice.call(buf, seqStart)
+ : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf))
- return newBuf.slice(0, j).toString('ucs2');
+ return newBuf.slice(0, j).toString("ucs2")
}
-DBCSDecoder.prototype.end = function() {
- var ret = '';
+DBCSDecoder.prototype.end = function () {
+ var ret = ""
- // Try to parse all remaining chars.
- while (this.prevBytes.length > 0) {
- // Skip 1 character in the buffer.
- ret += this.defaultCharUnicode;
- var bytesArr = this.prevBytes.slice(1);
+ // Try to parse all remaining chars.
+ while (this.prevBytes.length > 0) {
+ // Skip 1 character in the buffer.
+ ret += this.defaultCharUnicode
+ var bytesArr = this.prevBytes.slice(1)
- // Parse remaining as usual.
- this.prevBytes = [];
- this.nodeIdx = 0;
- if (bytesArr.length > 0)
- ret += this.write(bytesArr);
- }
+ // Parse remaining as usual.
+ this.prevBytes = []
+ this.nodeIdx = 0
+ if (bytesArr.length > 0) { ret += this.write(bytesArr) }
+ }
- this.prevBytes = [];
- this.nodeIdx = 0;
- return ret;
+ this.prevBytes = []
+ this.nodeIdx = 0
+ return ret
}
// Binary search for GB18030. Returns largest i such that table[i] <= val.
-function findIdx(table, val) {
- if (table[0] > val)
- return -1;
-
- var l = 0, r = table.length;
- while (l < r-1) { // always table[l] <= val < table[r]
- var mid = l + ((r-l+1) >> 1);
- if (table[mid] <= val)
- l = mid;
- else
- r = mid;
- }
- return l;
+function findIdx (table, val) {
+ if (table[0] > val) { return -1 }
+
+ var l = 0; var r = table.length
+ while (l < r - 1) { // always table[l] <= val < table[r]
+ var mid = l + ((r - l + 1) >> 1)
+ if (table[mid] <= val) { l = mid } else { r = mid }
+ }
+ return l
}
-
diff --git a/deps/npm/node_modules/iconv-lite/encodings/dbcs-data.js b/deps/npm/node_modules/iconv-lite/encodings/dbcs-data.js
index 0d17e5821b3df9..a3858d4cf36253 100644
--- a/deps/npm/node_modules/iconv-lite/encodings/dbcs-data.js
+++ b/deps/npm/node_modules/iconv-lite/encodings/dbcs-data.js
@@ -1,188 +1,185 @@
-"use strict";
+"use strict"
// Description of supported double byte encodings and aliases.
// Tables are not require()-d until they are needed to speed up library load.
// require()-s are direct to support Browserify.
module.exports = {
-
- // == Japanese/ShiftJIS ====================================================
- // All japanese encodings are based on JIS X set of standards:
- // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.
- // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes.
- // Has several variations in 1978, 1983, 1990 and 1997.
- // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.
- // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.
- // 2 planes, first is superset of 0208, second - revised 0212.
- // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)
-
- // Byte encodings are:
- // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte
- // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.
- // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.
- // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes.
- // 0x00-0x7F - lower part of 0201
- // 0x8E, 0xA1-0xDF - upper part of 0201
- // (0xA1-0xFE)x2 - 0208 plane (94x94).
- // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).
- // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.
- // Used as-is in ISO2022 family.
- // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII,
- // 0201-1976 Roman, 0208-1978, 0208-1983.
- // * ISO2022-JP-1: Adds esc seq for 0212-1990.
- // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.
- // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.
- // * ISO2022-JP-2004: Adds 0213-2004 Plane 1.
- //
- // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.
- //
- // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html
-
- 'shiftjis': {
- type: '_dbcs',
- table: function() { return require('./tables/shiftjis.json') },
- encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E},
- encodeSkipVals: [{from: 0xED40, to: 0xF940}],
- },
- 'csshiftjis': 'shiftjis',
- 'mskanji': 'shiftjis',
- 'sjis': 'shiftjis',
- 'windows31j': 'shiftjis',
- 'ms31j': 'shiftjis',
- 'xsjis': 'shiftjis',
- 'windows932': 'shiftjis',
- 'ms932': 'shiftjis',
- '932': 'shiftjis',
- 'cp932': 'shiftjis',
-
- 'eucjp': {
- type: '_dbcs',
- table: function() { return require('./tables/eucjp.json') },
- encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E},
- },
-
- // TODO: KDDI extension to Shift_JIS
- // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.
- // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.
-
-
- // == Chinese/GBK ==========================================================
- // http://en.wikipedia.org/wiki/GBK
- // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder
-
- // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936
- 'gb2312': 'cp936',
- 'gb231280': 'cp936',
- 'gb23121980': 'cp936',
- 'csgb2312': 'cp936',
- 'csiso58gb231280': 'cp936',
- 'euccn': 'cp936',
-
- // Microsoft's CP936 is a subset and approximation of GBK.
- 'windows936': 'cp936',
- 'ms936': 'cp936',
- '936': 'cp936',
- 'cp936': {
- type: '_dbcs',
- table: function() { return require('./tables/cp936.json') },
- },
-
- // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.
- 'gbk': {
- type: '_dbcs',
- table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },
- },
- 'xgbk': 'gbk',
- 'isoir58': 'gbk',
-
- // GB18030 is an algorithmic extension of GBK.
- // Main source: https://www.w3.org/TR/encoding/#gbk-encoder
- // http://icu-project.org/docs/papers/gb18030.html
- // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml
- // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0
- 'gb18030': {
- type: '_dbcs',
- table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },
- gb18030: function() { return require('./tables/gb18030-ranges.json') },
- encodeSkipVals: [0x80],
- encodeAdd: {'€': 0xA2E3},
- },
-
- 'chinese': 'gb18030',
-
-
- // == Korean ===============================================================
- // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.
- 'windows949': 'cp949',
- 'ms949': 'cp949',
- '949': 'cp949',
- 'cp949': {
- type: '_dbcs',
- table: function() { return require('./tables/cp949.json') },
- },
-
- 'cseuckr': 'cp949',
- 'csksc56011987': 'cp949',
- 'euckr': 'cp949',
- 'isoir149': 'cp949',
- 'korean': 'cp949',
- 'ksc56011987': 'cp949',
- 'ksc56011989': 'cp949',
- 'ksc5601': 'cp949',
-
-
- // == Big5/Taiwan/Hong Kong ================================================
- // There are lots of tables for Big5 and cp950. Please see the following links for history:
- // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html
- // Variations, in roughly number of defined chars:
- // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT
- // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/
- // * Big5-2003 (Taiwan standard) almost superset of cp950.
- // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.
- // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard.
- // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.
- // Plus, it has 4 combining sequences.
- // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299
- // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.
- // Implementations are not consistent within browsers; sometimes labeled as just big5.
- // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.
- // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31
- // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.
- // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt
- // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt
- //
- // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder
- // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.
-
- 'windows950': 'cp950',
- 'ms950': 'cp950',
- '950': 'cp950',
- 'cp950': {
- type: '_dbcs',
- table: function() { return require('./tables/cp950.json') },
- },
-
- // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.
- 'big5': 'big5hkscs',
- 'big5hkscs': {
- type: '_dbcs',
- table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },
- encodeSkipVals: [
- // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of
- // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.
- // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.
- 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,
- 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,
- 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,
- 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,
- 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,
-
- // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345
- 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce,
- ],
- },
-
- 'cnbig5': 'big5hkscs',
- 'csbig5': 'big5hkscs',
- 'xxbig5': 'big5hkscs',
-};
+
+ // == Japanese/ShiftJIS ====================================================
+ // All japanese encodings are based on JIS X set of standards:
+ // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.
+ // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes.
+ // Has several variations in 1978, 1983, 1990 and 1997.
+ // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.
+ // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.
+ // 2 planes, first is superset of 0208, second - revised 0212.
+ // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)
+
+ // Byte encodings are:
+ // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte
+ // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.
+ // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.
+ // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes.
+ // 0x00-0x7F - lower part of 0201
+ // 0x8E, 0xA1-0xDF - upper part of 0201
+ // (0xA1-0xFE)x2 - 0208 plane (94x94).
+ // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).
+ // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.
+ // Used as-is in ISO2022 family.
+ // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII,
+ // 0201-1976 Roman, 0208-1978, 0208-1983.
+ // * ISO2022-JP-1: Adds esc seq for 0212-1990.
+ // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.
+ // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.
+ // * ISO2022-JP-2004: Adds 0213-2004 Plane 1.
+ //
+ // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.
+ //
+ // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html
+
+ shiftjis: {
+ type: "_dbcs",
+ table: function () { return require("./tables/shiftjis.json") },
+ encodeAdd: { "\u00a5": 0x5C, "\u203E": 0x7E },
+ encodeSkipVals: [{ from: 0xED40, to: 0xF940 }]
+ },
+ csshiftjis: "shiftjis",
+ mskanji: "shiftjis",
+ sjis: "shiftjis",
+ windows31j: "shiftjis",
+ ms31j: "shiftjis",
+ xsjis: "shiftjis",
+ windows932: "shiftjis",
+ ms932: "shiftjis",
+ 932: "shiftjis",
+ cp932: "shiftjis",
+
+ eucjp: {
+ type: "_dbcs",
+ table: function () { return require("./tables/eucjp.json") },
+ encodeAdd: { "\u00a5": 0x5C, "\u203E": 0x7E }
+ },
+
+ // TODO: KDDI extension to Shift_JIS
+ // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.
+ // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.
+
+ // == Chinese/GBK ==========================================================
+ // http://en.wikipedia.org/wiki/GBK
+ // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder
+
+ // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936
+ gb2312: "cp936",
+ gb231280: "cp936",
+ gb23121980: "cp936",
+ csgb2312: "cp936",
+ csiso58gb231280: "cp936",
+ euccn: "cp936",
+
+ // Microsoft's CP936 is a subset and approximation of GBK.
+ windows936: "cp936",
+ ms936: "cp936",
+ 936: "cp936",
+ cp936: {
+ type: "_dbcs",
+ table: function () { return require("./tables/cp936.json") }
+ },
+
+ // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.
+ gbk: {
+ type: "_dbcs",
+ table: function () { return require("./tables/cp936.json").concat(require("./tables/gbk-added.json")) }
+ },
+ xgbk: "gbk",
+ isoir58: "gbk",
+
+ // GB18030 is an algorithmic extension of GBK.
+ // Main source: https://www.w3.org/TR/encoding/#gbk-encoder
+ // http://icu-project.org/docs/papers/gb18030.html
+ // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml
+ // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0
+ gb18030: {
+ type: "_dbcs",
+ table: function () { return require("./tables/cp936.json").concat(require("./tables/gbk-added.json")) },
+ gb18030: function () { return require("./tables/gb18030-ranges.json") },
+ encodeSkipVals: [0x80],
+ encodeAdd: { "€": 0xA2E3 }
+ },
+
+ chinese: "gb18030",
+
+ // == Korean ===============================================================
+ // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.
+ windows949: "cp949",
+ ms949: "cp949",
+ 949: "cp949",
+ cp949: {
+ type: "_dbcs",
+ table: function () { return require("./tables/cp949.json") }
+ },
+
+ cseuckr: "cp949",
+ csksc56011987: "cp949",
+ euckr: "cp949",
+ isoir149: "cp949",
+ korean: "cp949",
+ ksc56011987: "cp949",
+ ksc56011989: "cp949",
+ ksc5601: "cp949",
+
+ // == Big5/Taiwan/Hong Kong ================================================
+ // There are lots of tables for Big5 and cp950. Please see the following links for history:
+ // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html
+ // Variations, in roughly number of defined chars:
+ // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT
+ // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/
+ // * Big5-2003 (Taiwan standard) almost superset of cp950.
+ // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.
+ // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard.
+ // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.
+ // Plus, it has 4 combining sequences.
+ // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299
+ // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.
+ // Implementations are not consistent within browsers; sometimes labeled as just big5.
+ // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.
+ // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31
+ // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.
+ // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt
+ // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt
+ //
+ // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder
+ // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.
+
+ windows950: "cp950",
+ ms950: "cp950",
+ 950: "cp950",
+ cp950: {
+ type: "_dbcs",
+ table: function () { return require("./tables/cp950.json") }
+ },
+
+ // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.
+ big5: "big5hkscs",
+ big5hkscs: {
+ type: "_dbcs",
+ table: function () { return require("./tables/cp950.json").concat(require("./tables/big5-added.json")) },
+ encodeSkipVals: [
+ // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of
+ // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.
+ // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.
+ 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,
+ 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,
+ 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,
+ 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,
+ 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,
+
+ // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345
+ 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce
+ ]
+ },
+
+ cnbig5: "big5hkscs",
+ csbig5: "big5hkscs",
+ xxbig5: "big5hkscs"
+}
diff --git a/deps/npm/node_modules/iconv-lite/encodings/index.js b/deps/npm/node_modules/iconv-lite/encodings/index.js
index d95c2441151a93..9d90e3cac6b09d 100644
--- a/deps/npm/node_modules/iconv-lite/encodings/index.js
+++ b/deps/npm/node_modules/iconv-lite/encodings/index.js
@@ -1,23 +1,23 @@
-"use strict";
+"use strict"
+
+var mergeModules = require("../lib/helpers/merge-exports")
// Update this array if you add/rename/remove files in this directory.
// We support Browserify by skipping automatic module discovery and requiring modules directly.
var modules = [
- require("./internal"),
- require("./utf32"),
- require("./utf16"),
- require("./utf7"),
- require("./sbcs-codec"),
- require("./sbcs-data"),
- require("./sbcs-data-generated"),
- require("./dbcs-codec"),
- require("./dbcs-data"),
-];
+ require("./internal"),
+ require("./utf32"),
+ require("./utf16"),
+ require("./utf7"),
+ require("./sbcs-codec"),
+ require("./sbcs-data"),
+ require("./sbcs-data-generated"),
+ require("./dbcs-codec"),
+ require("./dbcs-data")
+]
// Put all encoding/alias/codec definitions to single object and export it.
for (var i = 0; i < modules.length; i++) {
- var module = modules[i];
- for (var enc in module)
- if (Object.prototype.hasOwnProperty.call(module, enc))
- exports[enc] = module[enc];
+ var module = modules[i]
+ mergeModules(exports, module)
}
diff --git a/deps/npm/node_modules/iconv-lite/encodings/internal.js b/deps/npm/node_modules/iconv-lite/encodings/internal.js
index dc1074f04f11a3..4e5c3ff25ac158 100644
--- a/deps/npm/node_modules/iconv-lite/encodings/internal.js
+++ b/deps/npm/node_modules/iconv-lite/encodings/internal.js
@@ -1,198 +1,218 @@
-"use strict";
-var Buffer = require("safer-buffer").Buffer;
+"use strict"
+var Buffer = require("safer-buffer").Buffer
// Export Node.js internal encodings.
module.exports = {
- // Encodings
- utf8: { type: "_internal", bomAware: true},
- cesu8: { type: "_internal", bomAware: true},
- unicode11utf8: "utf8",
-
- ucs2: { type: "_internal", bomAware: true},
- utf16le: "ucs2",
-
- binary: { type: "_internal" },
- base64: { type: "_internal" },
- hex: { type: "_internal" },
-
- // Codec.
- _internal: InternalCodec,
-};
-
-//------------------------------------------------------------------------------
-
-function InternalCodec(codecOptions, iconv) {
- this.enc = codecOptions.encodingName;
- this.bomAware = codecOptions.bomAware;
-
- if (this.enc === "base64")
- this.encoder = InternalEncoderBase64;
- else if (this.enc === "cesu8") {
- this.enc = "utf8"; // Use utf8 for decoding.
- this.encoder = InternalEncoderCesu8;
-
- // Add decoder for versions of Node not supporting CESU-8
- if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') {
- this.decoder = InternalDecoderCesu8;
- this.defaultCharUnicode = iconv.defaultCharUnicode;
- }
- }
-}
+ // Encodings
+ utf8: { type: "_internal", bomAware: true },
+ cesu8: { type: "_internal", bomAware: true },
+ unicode11utf8: "utf8",
-InternalCodec.prototype.encoder = InternalEncoder;
-InternalCodec.prototype.decoder = InternalDecoder;
+ ucs2: { type: "_internal", bomAware: true },
+ utf16le: "ucs2",
-//------------------------------------------------------------------------------
+ binary: { type: "_internal" },
+ base64: { type: "_internal" },
+ hex: { type: "_internal" },
-// We use node.js internal decoder. Its signature is the same as ours.
-var StringDecoder = require('string_decoder').StringDecoder;
+ // Codec.
+ _internal: InternalCodec
+}
-if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.
- StringDecoder.prototype.end = function() {};
+// ------------------------------------------------------------------------------
+function InternalCodec (codecOptions, iconv) {
+ this.enc = codecOptions.encodingName
+ this.bomAware = codecOptions.bomAware
-function InternalDecoder(options, codec) {
- this.decoder = new StringDecoder(codec.enc);
-}
+ if (this.enc === "base64") { this.encoder = InternalEncoderBase64 } else if (this.enc === "utf8") { this.encoder = InternalEncoderUtf8 } else if (this.enc === "cesu8") {
+ this.enc = "utf8" // Use utf8 for decoding.
+ this.encoder = InternalEncoderCesu8
-InternalDecoder.prototype.write = function(buf) {
- if (!Buffer.isBuffer(buf)) {
- buf = Buffer.from(buf);
+ // Add decoder for versions of Node not supporting CESU-8
+ if (Buffer.from("eda0bdedb2a9", "hex").toString() !== "💩") {
+ this.decoder = InternalDecoderCesu8
+ this.defaultCharUnicode = iconv.defaultCharUnicode
}
+ }
+}
- return this.decoder.write(buf);
+InternalCodec.prototype.encoder = InternalEncoder
+InternalCodec.prototype.decoder = InternalDecoder
+
+// ------------------------------------------------------------------------------
+
+// We use node.js internal decoder. Its signature is the same as ours.
+var StringDecoder = require("string_decoder").StringDecoder
+
+function InternalDecoder (options, codec) {
+ this.decoder = new StringDecoder(codec.enc)
}
-InternalDecoder.prototype.end = function() {
- return this.decoder.end();
+InternalDecoder.prototype.write = function (buf) {
+ if (!Buffer.isBuffer(buf)) {
+ buf = Buffer.from(buf)
+ }
+
+ return this.decoder.write(buf)
}
+InternalDecoder.prototype.end = function () {
+ return this.decoder.end()
+}
-//------------------------------------------------------------------------------
+// ------------------------------------------------------------------------------
// Encoder is mostly trivial
-function InternalEncoder(options, codec) {
- this.enc = codec.enc;
+function InternalEncoder (options, codec) {
+ this.enc = codec.enc
}
-InternalEncoder.prototype.write = function(str) {
- return Buffer.from(str, this.enc);
+InternalEncoder.prototype.write = function (str) {
+ return Buffer.from(str, this.enc)
}
-InternalEncoder.prototype.end = function() {
+InternalEncoder.prototype.end = function () {
}
-
-//------------------------------------------------------------------------------
+// ------------------------------------------------------------------------------
// Except base64 encoder, which must keep its state.
-function InternalEncoderBase64(options, codec) {
- this.prevStr = '';
+function InternalEncoderBase64 (options, codec) {
+ this.prevStr = ""
}
-InternalEncoderBase64.prototype.write = function(str) {
- str = this.prevStr + str;
- var completeQuads = str.length - (str.length % 4);
- this.prevStr = str.slice(completeQuads);
- str = str.slice(0, completeQuads);
+InternalEncoderBase64.prototype.write = function (str) {
+ str = this.prevStr + str
+ var completeQuads = str.length - (str.length % 4)
+ this.prevStr = str.slice(completeQuads)
+ str = str.slice(0, completeQuads)
- return Buffer.from(str, "base64");
+ return Buffer.from(str, "base64")
}
-InternalEncoderBase64.prototype.end = function() {
- return Buffer.from(this.prevStr, "base64");
+InternalEncoderBase64.prototype.end = function () {
+ return Buffer.from(this.prevStr, "base64")
}
-
-//------------------------------------------------------------------------------
+// ------------------------------------------------------------------------------
// CESU-8 encoder is also special.
-function InternalEncoderCesu8(options, codec) {
+function InternalEncoderCesu8 (options, codec) {
+}
+
+InternalEncoderCesu8.prototype.write = function (str) {
+ var buf = Buffer.alloc(str.length * 3); var bufIdx = 0
+ for (var i = 0; i < str.length; i++) {
+ var charCode = str.charCodeAt(i)
+ // Naive implementation, but it works because CESU-8 is especially easy
+ // to convert from UTF-16 (which all JS strings are encoded in).
+ if (charCode < 0x80) { buf[bufIdx++] = charCode } else if (charCode < 0x800) {
+ buf[bufIdx++] = 0xC0 + (charCode >>> 6)
+ buf[bufIdx++] = 0x80 + (charCode & 0x3f)
+ } else { // charCode will always be < 0x10000 in javascript.
+ buf[bufIdx++] = 0xE0 + (charCode >>> 12)
+ buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f)
+ buf[bufIdx++] = 0x80 + (charCode & 0x3f)
+ }
+ }
+ return buf.slice(0, bufIdx)
}
-InternalEncoderCesu8.prototype.write = function(str) {
- var buf = Buffer.alloc(str.length * 3), bufIdx = 0;
- for (var i = 0; i < str.length; i++) {
- var charCode = str.charCodeAt(i);
- // Naive implementation, but it works because CESU-8 is especially easy
- // to convert from UTF-16 (which all JS strings are encoded in).
- if (charCode < 0x80)
- buf[bufIdx++] = charCode;
- else if (charCode < 0x800) {
- buf[bufIdx++] = 0xC0 + (charCode >>> 6);
- buf[bufIdx++] = 0x80 + (charCode & 0x3f);
- }
- else { // charCode will always be < 0x10000 in javascript.
- buf[bufIdx++] = 0xE0 + (charCode >>> 12);
- buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);
- buf[bufIdx++] = 0x80 + (charCode & 0x3f);
+InternalEncoderCesu8.prototype.end = function () {
+}
+
+// ------------------------------------------------------------------------------
+// CESU-8 decoder is not implemented in Node v4.0+
+
+function InternalDecoderCesu8 (options, codec) {
+ this.acc = 0
+ this.contBytes = 0
+ this.accBytes = 0
+ this.defaultCharUnicode = codec.defaultCharUnicode
+}
+
+InternalDecoderCesu8.prototype.write = function (buf) {
+ var acc = this.acc; var contBytes = this.contBytes; var accBytes = this.accBytes
+ var res = ""
+ for (var i = 0; i < buf.length; i++) {
+ var curByte = buf[i]
+ if ((curByte & 0xC0) !== 0x80) { // Leading byte
+ if (contBytes > 0) { // Previous code is invalid
+ res += this.defaultCharUnicode
+ contBytes = 0
+ }
+
+ if (curByte < 0x80) { // Single-byte code
+ res += String.fromCharCode(curByte)
+ } else if (curByte < 0xE0) { // Two-byte code
+ acc = curByte & 0x1F
+ contBytes = 1; accBytes = 1
+ } else if (curByte < 0xF0) { // Three-byte code
+ acc = curByte & 0x0F
+ contBytes = 2; accBytes = 1
+ } else { // Four or more are not supported for CESU-8.
+ res += this.defaultCharUnicode
+ }
+ } else { // Continuation byte
+ if (contBytes > 0) { // We're waiting for it.
+ acc = (acc << 6) | (curByte & 0x3f)
+ contBytes--; accBytes++
+ if (contBytes === 0) {
+ // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)
+ if (accBytes === 2 && acc < 0x80 && acc > 0) {
+ res += this.defaultCharUnicode
+ } else if (accBytes === 3 && acc < 0x800) {
+ res += this.defaultCharUnicode
+ } else {
+ // Actually add character.
+ res += String.fromCharCode(acc)
+ }
}
+ } else { // Unexpected continuation byte
+ res += this.defaultCharUnicode
+ }
}
- return buf.slice(0, bufIdx);
+ }
+ this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes
+ return res
}
-InternalEncoderCesu8.prototype.end = function() {
+InternalDecoderCesu8.prototype.end = function () {
+ var res = 0
+ if (this.contBytes > 0) { res += this.defaultCharUnicode }
+ return res
}
-//------------------------------------------------------------------------------
-// CESU-8 decoder is not implemented in Node v4.0+
+// ------------------------------------------------------------------------------
+// check the chunk boundaries for surrogate pair
-function InternalDecoderCesu8(options, codec) {
- this.acc = 0;
- this.contBytes = 0;
- this.accBytes = 0;
- this.defaultCharUnicode = codec.defaultCharUnicode;
-}
-
-InternalDecoderCesu8.prototype.write = function(buf) {
- var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes,
- res = '';
- for (var i = 0; i < buf.length; i++) {
- var curByte = buf[i];
- if ((curByte & 0xC0) !== 0x80) { // Leading byte
- if (contBytes > 0) { // Previous code is invalid
- res += this.defaultCharUnicode;
- contBytes = 0;
- }
-
- if (curByte < 0x80) { // Single-byte code
- res += String.fromCharCode(curByte);
- } else if (curByte < 0xE0) { // Two-byte code
- acc = curByte & 0x1F;
- contBytes = 1; accBytes = 1;
- } else if (curByte < 0xF0) { // Three-byte code
- acc = curByte & 0x0F;
- contBytes = 2; accBytes = 1;
- } else { // Four or more are not supported for CESU-8.
- res += this.defaultCharUnicode;
- }
- } else { // Continuation byte
- if (contBytes > 0) { // We're waiting for it.
- acc = (acc << 6) | (curByte & 0x3f);
- contBytes--; accBytes++;
- if (contBytes === 0) {
- // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)
- if (accBytes === 2 && acc < 0x80 && acc > 0)
- res += this.defaultCharUnicode;
- else if (accBytes === 3 && acc < 0x800)
- res += this.defaultCharUnicode;
- else
- // Actually add character.
- res += String.fromCharCode(acc);
- }
- } else { // Unexpected continuation byte
- res += this.defaultCharUnicode;
- }
- }
+function InternalEncoderUtf8 (options, codec) {
+ this.highSurrogate = ""
+}
+
+InternalEncoderUtf8.prototype.write = function (str) {
+ if (this.highSurrogate) {
+ str = this.highSurrogate + str
+ this.highSurrogate = ""
+ }
+
+ if (str.length > 0) {
+ var charCode = str.charCodeAt(str.length - 1)
+ if (charCode >= 0xd800 && charCode < 0xdc00) {
+ this.highSurrogate = str[str.length - 1]
+ str = str.slice(0, str.length - 1)
}
- this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;
- return res;
+ }
+
+ return Buffer.from(str, this.enc)
}
-InternalDecoderCesu8.prototype.end = function() {
- var res = 0;
- if (this.contBytes > 0)
- res += this.defaultCharUnicode;
- return res;
+InternalEncoderUtf8.prototype.end = function () {
+ if (this.highSurrogate) {
+ var str = this.highSurrogate
+ this.highSurrogate = ""
+ return Buffer.from(str, this.enc)
+ }
}
diff --git a/deps/npm/node_modules/iconv-lite/encodings/sbcs-codec.js b/deps/npm/node_modules/iconv-lite/encodings/sbcs-codec.js
index abac5ffaac97da..0e2fc924e1d40c 100644
--- a/deps/npm/node_modules/iconv-lite/encodings/sbcs-codec.js
+++ b/deps/npm/node_modules/iconv-lite/encodings/sbcs-codec.js
@@ -1,72 +1,75 @@
-"use strict";
-var Buffer = require("safer-buffer").Buffer;
+"use strict"
+var Buffer = require("safer-buffer").Buffer
// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that
-// correspond to encoded bytes (if 128 - then lower half is ASCII).
-
-exports._sbcs = SBCSCodec;
-function SBCSCodec(codecOptions, iconv) {
- if (!codecOptions)
- throw new Error("SBCS codec is called without the data.")
-
- // Prepare char buffer for decoding.
- if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))
- throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)");
-
- if (codecOptions.chars.length === 128) {
- var asciiString = "";
- for (var i = 0; i < 128; i++)
- asciiString += String.fromCharCode(i);
- codecOptions.chars = asciiString + codecOptions.chars;
- }
+// correspond to encoded bytes (if 128 - then lower half is ASCII).
- this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');
-
- // Encoding buffer.
- var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));
+exports._sbcs = SBCSCodec
+function SBCSCodec (codecOptions, iconv) {
+ if (!codecOptions) {
+ throw new Error("SBCS codec is called without the data.")
+ }
- for (var i = 0; i < codecOptions.chars.length; i++)
- encodeBuf[codecOptions.chars.charCodeAt(i)] = i;
+ // Prepare char buffer for decoding.
+ if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) {
+ throw new Error("Encoding '" + codecOptions.type + "' has incorrect 'chars' (must be of len 128 or 256)")
+ }
- this.encodeBuf = encodeBuf;
-}
+ if (codecOptions.chars.length === 128) {
+ var asciiString = ""
+ for (var i = 0; i < 128; i++) {
+ asciiString += String.fromCharCode(i)
+ }
+ codecOptions.chars = asciiString + codecOptions.chars
+ }
+
+ this.decodeBuf = Buffer.from(codecOptions.chars, "ucs2")
-SBCSCodec.prototype.encoder = SBCSEncoder;
-SBCSCodec.prototype.decoder = SBCSDecoder;
+ // Encoding buffer.
+ var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0))
+ for (var i = 0; i < codecOptions.chars.length; i++) {
+ encodeBuf[codecOptions.chars.charCodeAt(i)] = i
+ }
-function SBCSEncoder(options, codec) {
- this.encodeBuf = codec.encodeBuf;
+ this.encodeBuf = encodeBuf
}
-SBCSEncoder.prototype.write = function(str) {
- var buf = Buffer.alloc(str.length);
- for (var i = 0; i < str.length; i++)
- buf[i] = this.encodeBuf[str.charCodeAt(i)];
-
- return buf;
+SBCSCodec.prototype.encoder = SBCSEncoder
+SBCSCodec.prototype.decoder = SBCSDecoder
+
+function SBCSEncoder (options, codec) {
+ this.encodeBuf = codec.encodeBuf
}
-SBCSEncoder.prototype.end = function() {
+SBCSEncoder.prototype.write = function (str) {
+ var buf = Buffer.alloc(str.length)
+ for (var i = 0; i < str.length; i++) {
+ buf[i] = this.encodeBuf[str.charCodeAt(i)]
+ }
+
+ return buf
}
+SBCSEncoder.prototype.end = function () {
+}
-function SBCSDecoder(options, codec) {
- this.decodeBuf = codec.decodeBuf;
+function SBCSDecoder (options, codec) {
+ this.decodeBuf = codec.decodeBuf
}
-SBCSDecoder.prototype.write = function(buf) {
- // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.
- var decodeBuf = this.decodeBuf;
- var newBuf = Buffer.alloc(buf.length*2);
- var idx1 = 0, idx2 = 0;
- for (var i = 0; i < buf.length; i++) {
- idx1 = buf[i]*2; idx2 = i*2;
- newBuf[idx2] = decodeBuf[idx1];
- newBuf[idx2+1] = decodeBuf[idx1+1];
- }
- return newBuf.toString('ucs2');
+SBCSDecoder.prototype.write = function (buf) {
+ // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.
+ var decodeBuf = this.decodeBuf
+ var newBuf = Buffer.alloc(buf.length * 2)
+ var idx1 = 0; var idx2 = 0
+ for (var i = 0; i < buf.length; i++) {
+ idx1 = buf[i] * 2; idx2 = i * 2
+ newBuf[idx2] = decodeBuf[idx1]
+ newBuf[idx2 + 1] = decodeBuf[idx1 + 1]
+ }
+ return newBuf.toString("ucs2")
}
-SBCSDecoder.prototype.end = function() {
+SBCSDecoder.prototype.end = function () {
}
diff --git a/deps/npm/node_modules/iconv-lite/encodings/sbcs-data.js b/deps/npm/node_modules/iconv-lite/encodings/sbcs-data.js
index 066f904e5f1d3e..d8f8e1729e6af5 100644
--- a/deps/npm/node_modules/iconv-lite/encodings/sbcs-data.js
+++ b/deps/npm/node_modules/iconv-lite/encodings/sbcs-data.js
@@ -1,179 +1,178 @@
-"use strict";
+"use strict"
// Manually added data to be used by sbcs codec in addition to generated one.
module.exports = {
- // Not supported by iconv, not sure why.
- "10029": "maccenteuro",
- "maccenteuro": {
- "type": "_sbcs",
- "chars": "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"
- },
-
- "808": "cp808",
- "ibm808": "cp808",
- "cp808": {
- "type": "_sbcs",
- "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "
- },
-
- "mik": {
- "type": "_sbcs",
- "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
- },
-
- "cp720": {
- "type": "_sbcs",
- "chars": "\x80\x81éâ\x84à\x86çêëèïî\x8d\x8e\x8f\x90\u0651\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\u064b\u064c\u064d\u064e\u064f\u0650≈°∙·√ⁿ²■\u00a0"
- },
-
- // Aliases of generated encodings.
- "ascii8bit": "ascii",
- "usascii": "ascii",
- "ansix34": "ascii",
- "ansix341968": "ascii",
- "ansix341986": "ascii",
- "csascii": "ascii",
- "cp367": "ascii",
- "ibm367": "ascii",
- "isoir6": "ascii",
- "iso646us": "ascii",
- "iso646irv": "ascii",
- "us": "ascii",
-
- "latin1": "iso88591",
- "latin2": "iso88592",
- "latin3": "iso88593",
- "latin4": "iso88594",
- "latin5": "iso88599",
- "latin6": "iso885910",
- "latin7": "iso885913",
- "latin8": "iso885914",
- "latin9": "iso885915",
- "latin10": "iso885916",
-
- "csisolatin1": "iso88591",
- "csisolatin2": "iso88592",
- "csisolatin3": "iso88593",
- "csisolatin4": "iso88594",
- "csisolatincyrillic": "iso88595",
- "csisolatinarabic": "iso88596",
- "csisolatingreek" : "iso88597",
- "csisolatinhebrew": "iso88598",
- "csisolatin5": "iso88599",
- "csisolatin6": "iso885910",
-
- "l1": "iso88591",
- "l2": "iso88592",
- "l3": "iso88593",
- "l4": "iso88594",
- "l5": "iso88599",
- "l6": "iso885910",
- "l7": "iso885913",
- "l8": "iso885914",
- "l9": "iso885915",
- "l10": "iso885916",
-
- "isoir14": "iso646jp",
- "isoir57": "iso646cn",
- "isoir100": "iso88591",
- "isoir101": "iso88592",
- "isoir109": "iso88593",
- "isoir110": "iso88594",
- "isoir144": "iso88595",
- "isoir127": "iso88596",
- "isoir126": "iso88597",
- "isoir138": "iso88598",
- "isoir148": "iso88599",
- "isoir157": "iso885910",
- "isoir166": "tis620",
- "isoir179": "iso885913",
- "isoir199": "iso885914",
- "isoir203": "iso885915",
- "isoir226": "iso885916",
-
- "cp819": "iso88591",
- "ibm819": "iso88591",
-
- "cyrillic": "iso88595",
-
- "arabic": "iso88596",
- "arabic8": "iso88596",
- "ecma114": "iso88596",
- "asmo708": "iso88596",
-
- "greek" : "iso88597",
- "greek8" : "iso88597",
- "ecma118" : "iso88597",
- "elot928" : "iso88597",
-
- "hebrew": "iso88598",
- "hebrew8": "iso88598",
-
- "turkish": "iso88599",
- "turkish8": "iso88599",
-
- "thai": "iso885911",
- "thai8": "iso885911",
-
- "celtic": "iso885914",
- "celtic8": "iso885914",
- "isoceltic": "iso885914",
-
- "tis6200": "tis620",
- "tis62025291": "tis620",
- "tis62025330": "tis620",
-
- "10000": "macroman",
- "10006": "macgreek",
- "10007": "maccyrillic",
- "10079": "maciceland",
- "10081": "macturkish",
-
- "cspc8codepage437": "cp437",
- "cspc775baltic": "cp775",
- "cspc850multilingual": "cp850",
- "cspcp852": "cp852",
- "cspc862latinhebrew": "cp862",
- "cpgr": "cp869",
-
- "msee": "cp1250",
- "mscyrl": "cp1251",
- "msansi": "cp1252",
- "msgreek": "cp1253",
- "msturk": "cp1254",
- "mshebr": "cp1255",
- "msarab": "cp1256",
- "winbaltrim": "cp1257",
-
- "cp20866": "koi8r",
- "20866": "koi8r",
- "ibm878": "koi8r",
- "cskoi8r": "koi8r",
-
- "cp21866": "koi8u",
- "21866": "koi8u",
- "ibm1168": "koi8u",
-
- "strk10482002": "rk1048",
-
- "tcvn5712": "tcvn",
- "tcvn57121": "tcvn",
-
- "gb198880": "iso646cn",
- "cn": "iso646cn",
-
- "csiso14jisc6220ro": "iso646jp",
- "jisc62201969ro": "iso646jp",
- "jp": "iso646jp",
-
- "cshproman8": "hproman8",
- "r8": "hproman8",
- "roman8": "hproman8",
- "xroman8": "hproman8",
- "ibm1051": "hproman8",
-
- "mac": "macintosh",
- "csmacintosh": "macintosh",
-};
-
+ // Not supported by iconv, not sure why.
+ 10029: "maccenteuro",
+ maccenteuro: {
+ type: "_sbcs",
+ chars: "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"
+ },
+
+ 808: "cp808",
+ ibm808: "cp808",
+ cp808: {
+ type: "_sbcs",
+ chars: "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "
+ },
+
+ mik: {
+ type: "_sbcs",
+ chars: "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
+ },
+
+ cp720: {
+ type: "_sbcs",
+ chars: "\x80\x81éâ\x84à\x86çêëèïî\x8d\x8e\x8f\x90\u0651\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\u064b\u064c\u064d\u064e\u064f\u0650≈°∙·√ⁿ²■\u00a0"
+ },
+
+ // Aliases of generated encodings.
+ ascii8bit: "ascii",
+ usascii: "ascii",
+ ansix34: "ascii",
+ ansix341968: "ascii",
+ ansix341986: "ascii",
+ csascii: "ascii",
+ cp367: "ascii",
+ ibm367: "ascii",
+ isoir6: "ascii",
+ iso646us: "ascii",
+ iso646irv: "ascii",
+ us: "ascii",
+
+ latin1: "iso88591",
+ latin2: "iso88592",
+ latin3: "iso88593",
+ latin4: "iso88594",
+ latin5: "iso88599",
+ latin6: "iso885910",
+ latin7: "iso885913",
+ latin8: "iso885914",
+ latin9: "iso885915",
+ latin10: "iso885916",
+
+ csisolatin1: "iso88591",
+ csisolatin2: "iso88592",
+ csisolatin3: "iso88593",
+ csisolatin4: "iso88594",
+ csisolatincyrillic: "iso88595",
+ csisolatinarabic: "iso88596",
+ csisolatingreek: "iso88597",
+ csisolatinhebrew: "iso88598",
+ csisolatin5: "iso88599",
+ csisolatin6: "iso885910",
+
+ l1: "iso88591",
+ l2: "iso88592",
+ l3: "iso88593",
+ l4: "iso88594",
+ l5: "iso88599",
+ l6: "iso885910",
+ l7: "iso885913",
+ l8: "iso885914",
+ l9: "iso885915",
+ l10: "iso885916",
+
+ isoir14: "iso646jp",
+ isoir57: "iso646cn",
+ isoir100: "iso88591",
+ isoir101: "iso88592",
+ isoir109: "iso88593",
+ isoir110: "iso88594",
+ isoir144: "iso88595",
+ isoir127: "iso88596",
+ isoir126: "iso88597",
+ isoir138: "iso88598",
+ isoir148: "iso88599",
+ isoir157: "iso885910",
+ isoir166: "tis620",
+ isoir179: "iso885913",
+ isoir199: "iso885914",
+ isoir203: "iso885915",
+ isoir226: "iso885916",
+
+ cp819: "iso88591",
+ ibm819: "iso88591",
+
+ cyrillic: "iso88595",
+
+ arabic: "iso88596",
+ arabic8: "iso88596",
+ ecma114: "iso88596",
+ asmo708: "iso88596",
+
+ greek: "iso88597",
+ greek8: "iso88597",
+ ecma118: "iso88597",
+ elot928: "iso88597",
+
+ hebrew: "iso88598",
+ hebrew8: "iso88598",
+
+ turkish: "iso88599",
+ turkish8: "iso88599",
+
+ thai: "iso885911",
+ thai8: "iso885911",
+
+ celtic: "iso885914",
+ celtic8: "iso885914",
+ isoceltic: "iso885914",
+
+ tis6200: "tis620",
+ tis62025291: "tis620",
+ tis62025330: "tis620",
+
+ 10000: "macroman",
+ 10006: "macgreek",
+ 10007: "maccyrillic",
+ 10079: "maciceland",
+ 10081: "macturkish",
+
+ cspc8codepage437: "cp437",
+ cspc775baltic: "cp775",
+ cspc850multilingual: "cp850",
+ cspcp852: "cp852",
+ cspc862latinhebrew: "cp862",
+ cpgr: "cp869",
+
+ msee: "cp1250",
+ mscyrl: "cp1251",
+ msansi: "cp1252",
+ msgreek: "cp1253",
+ msturk: "cp1254",
+ mshebr: "cp1255",
+ msarab: "cp1256",
+ winbaltrim: "cp1257",
+
+ cp20866: "koi8r",
+ 20866: "koi8r",
+ ibm878: "koi8r",
+ cskoi8r: "koi8r",
+
+ cp21866: "koi8u",
+ 21866: "koi8u",
+ ibm1168: "koi8u",
+
+ strk10482002: "rk1048",
+
+ tcvn5712: "tcvn",
+ tcvn57121: "tcvn",
+
+ gb198880: "iso646cn",
+ cn: "iso646cn",
+
+ csiso14jisc6220ro: "iso646jp",
+ jisc62201969ro: "iso646jp",
+ jp: "iso646jp",
+
+ cshproman8: "hproman8",
+ r8: "hproman8",
+ roman8: "hproman8",
+ xroman8: "hproman8",
+ ibm1051: "hproman8",
+
+ mac: "macintosh",
+ csmacintosh: "macintosh"
+}
diff --git a/deps/npm/node_modules/iconv-lite/encodings/utf16.js b/deps/npm/node_modules/iconv-lite/encodings/utf16.js
index 97d066925bbd5d..ae60d98e305145 100644
--- a/deps/npm/node_modules/iconv-lite/encodings/utf16.js
+++ b/deps/npm/node_modules/iconv-lite/encodings/utf16.js
@@ -1,70 +1,66 @@
-"use strict";
-var Buffer = require("safer-buffer").Buffer;
+"use strict"
+var Buffer = require("safer-buffer").Buffer
// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js
// == UTF16-BE codec. ==========================================================
-exports.utf16be = Utf16BECodec;
-function Utf16BECodec() {
+exports.utf16be = Utf16BECodec
+function Utf16BECodec () {
}
-Utf16BECodec.prototype.encoder = Utf16BEEncoder;
-Utf16BECodec.prototype.decoder = Utf16BEDecoder;
-Utf16BECodec.prototype.bomAware = true;
-
+Utf16BECodec.prototype.encoder = Utf16BEEncoder
+Utf16BECodec.prototype.decoder = Utf16BEDecoder
+Utf16BECodec.prototype.bomAware = true
// -- Encoding
-function Utf16BEEncoder() {
+function Utf16BEEncoder () {
}
-Utf16BEEncoder.prototype.write = function(str) {
- var buf = Buffer.from(str, 'ucs2');
- for (var i = 0; i < buf.length; i += 2) {
- var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;
- }
- return buf;
+Utf16BEEncoder.prototype.write = function (str) {
+ var buf = Buffer.from(str, "ucs2")
+ for (var i = 0; i < buf.length; i += 2) {
+ var tmp = buf[i]; buf[i] = buf[i + 1]; buf[i + 1] = tmp
+ }
+ return buf
}
-Utf16BEEncoder.prototype.end = function() {
+Utf16BEEncoder.prototype.end = function () {
}
-
// -- Decoding
-function Utf16BEDecoder() {
- this.overflowByte = -1;
+function Utf16BEDecoder () {
+ this.overflowByte = -1
}
-Utf16BEDecoder.prototype.write = function(buf) {
- if (buf.length == 0)
- return '';
+Utf16BEDecoder.prototype.write = function (buf) {
+ if (buf.length == 0) { return "" }
- var buf2 = Buffer.alloc(buf.length + 1),
- i = 0, j = 0;
+ var buf2 = Buffer.alloc(buf.length + 1)
+ var i = 0; var j = 0
- if (this.overflowByte !== -1) {
- buf2[0] = buf[0];
- buf2[1] = this.overflowByte;
- i = 1; j = 2;
- }
+ if (this.overflowByte !== -1) {
+ buf2[0] = buf[0]
+ buf2[1] = this.overflowByte
+ i = 1; j = 2
+ }
- for (; i < buf.length-1; i += 2, j+= 2) {
- buf2[j] = buf[i+1];
- buf2[j+1] = buf[i];
- }
+ for (; i < buf.length - 1; i += 2, j += 2) {
+ buf2[j] = buf[i + 1]
+ buf2[j + 1] = buf[i]
+ }
- this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;
+ this.overflowByte = (i == buf.length - 1) ? buf[buf.length - 1] : -1
- return buf2.slice(0, j).toString('ucs2');
+ return buf2.slice(0, j).toString("ucs2")
}
-Utf16BEDecoder.prototype.end = function() {
- this.overflowByte = -1;
+Utf16BEDecoder.prototype.end = function () {
+ this.overflowByte = -1
}
-
// == UTF-16 codec =============================================================
// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.
// Defaults to UTF-16LE, as it's prevalent and default in Node.
@@ -73,125 +69,119 @@ Utf16BEDecoder.prototype.end = function() {
// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).
-exports.utf16 = Utf16Codec;
-function Utf16Codec(codecOptions, iconv) {
- this.iconv = iconv;
+exports.utf16 = Utf16Codec
+function Utf16Codec (codecOptions, iconv) {
+ this.iconv = iconv
}
-Utf16Codec.prototype.encoder = Utf16Encoder;
-Utf16Codec.prototype.decoder = Utf16Decoder;
-
+Utf16Codec.prototype.encoder = Utf16Encoder
+Utf16Codec.prototype.decoder = Utf16Decoder
// -- Encoding (pass-through)
-function Utf16Encoder(options, codec) {
- options = options || {};
- if (options.addBOM === undefined)
- options.addBOM = true;
- this.encoder = codec.iconv.getEncoder('utf-16le', options);
+function Utf16Encoder (options, codec) {
+ options = options || {}
+ if (options.addBOM === undefined) { options.addBOM = true }
+ this.encoder = codec.iconv.getEncoder("utf-16le", options)
}
-Utf16Encoder.prototype.write = function(str) {
- return this.encoder.write(str);
+Utf16Encoder.prototype.write = function (str) {
+ return this.encoder.write(str)
}
-Utf16Encoder.prototype.end = function() {
- return this.encoder.end();
+Utf16Encoder.prototype.end = function () {
+ return this.encoder.end()
}
-
// -- Decoding
-function Utf16Decoder(options, codec) {
- this.decoder = null;
- this.initialBufs = [];
- this.initialBufsLen = 0;
+function Utf16Decoder (options, codec) {
+ this.decoder = null
+ this.initialBufs = []
+ this.initialBufsLen = 0
- this.options = options || {};
- this.iconv = codec.iconv;
+ this.options = options || {}
+ this.iconv = codec.iconv
}
-Utf16Decoder.prototype.write = function(buf) {
- if (!this.decoder) {
- // Codec is not chosen yet. Accumulate initial bytes.
- this.initialBufs.push(buf);
- this.initialBufsLen += buf.length;
-
- if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below)
- return '';
-
- // We have enough bytes -> detect endianness.
- var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
- this.decoder = this.iconv.getDecoder(encoding, this.options);
-
- var resStr = '';
- for (var i = 0; i < this.initialBufs.length; i++)
- resStr += this.decoder.write(this.initialBufs[i]);
-
- this.initialBufs.length = this.initialBufsLen = 0;
- return resStr;
- }
+Utf16Decoder.prototype.write = function (buf) {
+ if (!this.decoder) {
+ // Codec is not chosen yet. Accumulate initial bytes.
+ this.initialBufs.push(buf)
+ this.initialBufsLen += buf.length
+
+ if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below)
+ { return "" }
- return this.decoder.write(buf);
+ // We have enough bytes -> detect endianness.
+ var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)
+ this.decoder = this.iconv.getDecoder(encoding, this.options)
+
+ var resStr = ""
+ for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }
+
+ this.initialBufs.length = this.initialBufsLen = 0
+ return resStr
+ }
+
+ return this.decoder.write(buf)
}
-Utf16Decoder.prototype.end = function() {
- if (!this.decoder) {
- var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
- this.decoder = this.iconv.getDecoder(encoding, this.options);
+Utf16Decoder.prototype.end = function () {
+ if (!this.decoder) {
+ var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)
+ this.decoder = this.iconv.getDecoder(encoding, this.options)
- var resStr = '';
- for (var i = 0; i < this.initialBufs.length; i++)
- resStr += this.decoder.write(this.initialBufs[i]);
+ var resStr = ""
+ for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }
- var trail = this.decoder.end();
- if (trail)
- resStr += trail;
+ var trail = this.decoder.end()
+ if (trail) { resStr += trail }
- this.initialBufs.length = this.initialBufsLen = 0;
- return resStr;
- }
- return this.decoder.end();
+ this.initialBufs.length = this.initialBufsLen = 0
+ return resStr
+ }
+ return this.decoder.end()
}
-function detectEncoding(bufs, defaultEncoding) {
- var b = [];
- var charsProcessed = 0;
- var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE.
-
- outer_loop:
- for (var i = 0; i < bufs.length; i++) {
- var buf = bufs[i];
- for (var j = 0; j < buf.length; j++) {
- b.push(buf[j]);
- if (b.length === 2) {
- if (charsProcessed === 0) {
- // Check BOM first.
- if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le';
- if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be';
- }
-
- if (b[0] === 0 && b[1] !== 0) asciiCharsBE++;
- if (b[0] !== 0 && b[1] === 0) asciiCharsLE++;
-
- b.length = 0;
- charsProcessed++;
-
- if (charsProcessed >= 100) {
- break outer_loop;
- }
- }
+function detectEncoding (bufs, defaultEncoding) {
+ var b = []
+ var charsProcessed = 0
+ // Number of ASCII chars when decoded as LE or BE.
+ var asciiCharsLE = 0
+ var asciiCharsBE = 0
+
+ outerLoop:
+ for (var i = 0; i < bufs.length; i++) {
+ var buf = bufs[i]
+ for (var j = 0; j < buf.length; j++) {
+ b.push(buf[j])
+ if (b.length === 2) {
+ if (charsProcessed === 0) {
+ // Check BOM first.
+ if (b[0] === 0xFF && b[1] === 0xFE) return "utf-16le"
+ if (b[0] === 0xFE && b[1] === 0xFF) return "utf-16be"
}
- }
- // Make decisions.
- // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.
- // So, we count ASCII as if it was LE or BE, and decide from that.
- if (asciiCharsBE > asciiCharsLE) return 'utf-16be';
- if (asciiCharsBE < asciiCharsLE) return 'utf-16le';
+ if (b[0] === 0 && b[1] !== 0) asciiCharsBE++
+ if (b[0] !== 0 && b[1] === 0) asciiCharsLE++
- // Couldn't decide (likely all zeros or not enough data).
- return defaultEncoding || 'utf-16le';
-}
+ b.length = 0
+ charsProcessed++
+ if (charsProcessed >= 100) {
+ break outerLoop
+ }
+ }
+ }
+ }
+ // Make decisions.
+ // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.
+ // So, we count ASCII as if it was LE or BE, and decide from that.
+ if (asciiCharsBE > asciiCharsLE) return "utf-16be"
+ if (asciiCharsBE < asciiCharsLE) return "utf-16le"
+
+ // Couldn't decide (likely all zeros or not enough data).
+ return defaultEncoding || "utf-16le"
+}
diff --git a/deps/npm/node_modules/iconv-lite/encodings/utf32.js b/deps/npm/node_modules/iconv-lite/encodings/utf32.js
index 2fa900a12eb356..723178937a3a72 100644
--- a/deps/npm/node_modules/iconv-lite/encodings/utf32.js
+++ b/deps/npm/node_modules/iconv-lite/encodings/utf32.js
@@ -1,186 +1,176 @@
-'use strict';
+"use strict"
-var Buffer = require('safer-buffer').Buffer;
+var Buffer = require("safer-buffer").Buffer
// == UTF32-LE/BE codec. ==========================================================
-exports._utf32 = Utf32Codec;
+exports._utf32 = Utf32Codec
-function Utf32Codec(codecOptions, iconv) {
- this.iconv = iconv;
- this.bomAware = true;
- this.isLE = codecOptions.isLE;
+function Utf32Codec (codecOptions, iconv) {
+ this.iconv = iconv
+ this.bomAware = true
+ this.isLE = codecOptions.isLE
}
-exports.utf32le = { type: '_utf32', isLE: true };
-exports.utf32be = { type: '_utf32', isLE: false };
+exports.utf32le = { type: "_utf32", isLE: true }
+exports.utf32be = { type: "_utf32", isLE: false }
// Aliases
-exports.ucs4le = 'utf32le';
-exports.ucs4be = 'utf32be';
+exports.ucs4le = "utf32le"
+exports.ucs4be = "utf32be"
-Utf32Codec.prototype.encoder = Utf32Encoder;
-Utf32Codec.prototype.decoder = Utf32Decoder;
+Utf32Codec.prototype.encoder = Utf32Encoder
+Utf32Codec.prototype.decoder = Utf32Decoder
// -- Encoding
-function Utf32Encoder(options, codec) {
- this.isLE = codec.isLE;
- this.highSurrogate = 0;
+function Utf32Encoder (options, codec) {
+ this.isLE = codec.isLE
+ this.highSurrogate = 0
}
-Utf32Encoder.prototype.write = function(str) {
- var src = Buffer.from(str, 'ucs2');
- var dst = Buffer.alloc(src.length * 2);
- var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE;
- var offset = 0;
-
- for (var i = 0; i < src.length; i += 2) {
- var code = src.readUInt16LE(i);
- var isHighSurrogate = (0xD800 <= code && code < 0xDC00);
- var isLowSurrogate = (0xDC00 <= code && code < 0xE000);
-
- if (this.highSurrogate) {
- if (isHighSurrogate || !isLowSurrogate) {
- // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low
- // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character
- // (technically wrong, but expected by some applications, like Windows file names).
- write32.call(dst, this.highSurrogate, offset);
- offset += 4;
- }
- else {
- // Create 32-bit value from high and low surrogates;
- var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000;
-
- write32.call(dst, codepoint, offset);
- offset += 4;
- this.highSurrogate = 0;
-
- continue;
- }
- }
+Utf32Encoder.prototype.write = function (str) {
+ var src = Buffer.from(str, "ucs2")
+ var dst = Buffer.alloc(src.length * 2)
+ var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE
+ var offset = 0
+
+ for (var i = 0; i < src.length; i += 2) {
+ var code = src.readUInt16LE(i)
+ var isHighSurrogate = (code >= 0xD800 && code < 0xDC00)
+ var isLowSurrogate = (code >= 0xDC00 && code < 0xE000)
+
+ if (this.highSurrogate) {
+ if (isHighSurrogate || !isLowSurrogate) {
+ // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low
+ // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character
+ // (technically wrong, but expected by some applications, like Windows file names).
+ write32.call(dst, this.highSurrogate, offset)
+ offset += 4
+ } else {
+ // Create 32-bit value from high and low surrogates;
+ var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000
+
+ write32.call(dst, codepoint, offset)
+ offset += 4
+ this.highSurrogate = 0
+
+ continue
+ }
+ }
- if (isHighSurrogate)
- this.highSurrogate = code;
- else {
- // Even if the current character is a low surrogate, with no previous high surrogate, we'll
- // encode it as a semi-invalid stand-alone character for the same reasons expressed above for
- // unpaired high surrogates.
- write32.call(dst, code, offset);
- offset += 4;
- this.highSurrogate = 0;
- }
+ if (isHighSurrogate) { this.highSurrogate = code } else {
+ // Even if the current character is a low surrogate, with no previous high surrogate, we'll
+ // encode it as a semi-invalid stand-alone character for the same reasons expressed above for
+ // unpaired high surrogates.
+ write32.call(dst, code, offset)
+ offset += 4
+ this.highSurrogate = 0
}
+ }
- if (offset < dst.length)
- dst = dst.slice(0, offset);
+ if (offset < dst.length) { dst = dst.slice(0, offset) }
- return dst;
-};
+ return dst
+}
-Utf32Encoder.prototype.end = function() {
- // Treat any leftover high surrogate as a semi-valid independent character.
- if (!this.highSurrogate)
- return;
+Utf32Encoder.prototype.end = function () {
+ // Treat any leftover high surrogate as a semi-valid independent character.
+ if (!this.highSurrogate) { return }
- var buf = Buffer.alloc(4);
+ var buf = Buffer.alloc(4)
- if (this.isLE)
- buf.writeUInt32LE(this.highSurrogate, 0);
- else
- buf.writeUInt32BE(this.highSurrogate, 0);
+ if (this.isLE) { buf.writeUInt32LE(this.highSurrogate, 0) } else { buf.writeUInt32BE(this.highSurrogate, 0) }
- this.highSurrogate = 0;
+ this.highSurrogate = 0
- return buf;
-};
+ return buf
+}
// -- Decoding
-function Utf32Decoder(options, codec) {
- this.isLE = codec.isLE;
- this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0);
- this.overflow = [];
+function Utf32Decoder (options, codec) {
+ this.isLE = codec.isLE
+ this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0)
+ this.overflow = []
}
-Utf32Decoder.prototype.write = function(src) {
- if (src.length === 0)
- return '';
-
- var i = 0;
- var codepoint = 0;
- var dst = Buffer.alloc(src.length + 4);
- var offset = 0;
- var isLE = this.isLE;
- var overflow = this.overflow;
- var badChar = this.badChar;
-
- if (overflow.length > 0) {
- for (; i < src.length && overflow.length < 4; i++)
- overflow.push(src[i]);
-
- if (overflow.length === 4) {
- // NOTE: codepoint is a signed int32 and can be negative.
- // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer).
- if (isLE) {
- codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24);
- } else {
- codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24);
- }
- overflow.length = 0;
-
- offset = _writeCodepoint(dst, offset, codepoint, badChar);
- }
+Utf32Decoder.prototype.write = function (src) {
+ if (src.length === 0) { return "" }
+
+ var i = 0
+ var codepoint = 0
+ var dst = Buffer.alloc(src.length + 4)
+ var offset = 0
+ var isLE = this.isLE
+ var overflow = this.overflow
+ var badChar = this.badChar
+
+ if (overflow.length > 0) {
+ for (; i < src.length && overflow.length < 4; i++) { overflow.push(src[i]) }
+
+ if (overflow.length === 4) {
+ // NOTE: codepoint is a signed int32 and can be negative.
+ // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer).
+ if (isLE) {
+ codepoint = overflow[i] | (overflow[i + 1] << 8) | (overflow[i + 2] << 16) | (overflow[i + 3] << 24)
+ } else {
+ codepoint = overflow[i + 3] | (overflow[i + 2] << 8) | (overflow[i + 1] << 16) | (overflow[i] << 24)
+ }
+ overflow.length = 0
+
+ offset = _writeCodepoint(dst, offset, codepoint, badChar)
}
-
- // Main loop. Should be as optimized as possible.
- for (; i < src.length - 3; i += 4) {
- // NOTE: codepoint is a signed int32 and can be negative.
- if (isLE) {
- codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24);
- } else {
- codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24);
- }
- offset = _writeCodepoint(dst, offset, codepoint, badChar);
+ }
+
+ // Main loop. Should be as optimized as possible.
+ for (; i < src.length - 3; i += 4) {
+ // NOTE: codepoint is a signed int32 and can be negative.
+ if (isLE) {
+ codepoint = src[i] | (src[i + 1] << 8) | (src[i + 2] << 16) | (src[i + 3] << 24)
+ } else {
+ codepoint = src[i + 3] | (src[i + 2] << 8) | (src[i + 1] << 16) | (src[i] << 24)
}
+ offset = _writeCodepoint(dst, offset, codepoint, badChar)
+ }
- // Keep overflowing bytes.
- for (; i < src.length; i++) {
- overflow.push(src[i]);
- }
+ // Keep overflowing bytes.
+ for (; i < src.length; i++) {
+ overflow.push(src[i])
+ }
- return dst.slice(0, offset).toString('ucs2');
-};
+ return dst.slice(0, offset).toString("ucs2")
+}
-function _writeCodepoint(dst, offset, codepoint, badChar) {
- // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations.
- if (codepoint < 0 || codepoint > 0x10FFFF) {
- // Not a valid Unicode codepoint
- codepoint = badChar;
- }
+function _writeCodepoint (dst, offset, codepoint, badChar) {
+ // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations.
+ if (codepoint < 0 || codepoint > 0x10FFFF) {
+ // Not a valid Unicode codepoint
+ codepoint = badChar
+ }
- // Ephemeral Planes: Write high surrogate.
- if (codepoint >= 0x10000) {
- codepoint -= 0x10000;
+ // Ephemeral Planes: Write high surrogate.
+ if (codepoint >= 0x10000) {
+ codepoint -= 0x10000
- var high = 0xD800 | (codepoint >> 10);
- dst[offset++] = high & 0xff;
- dst[offset++] = high >> 8;
+ var high = 0xD800 | (codepoint >> 10)
+ dst[offset++] = high & 0xff
+ dst[offset++] = high >> 8
- // Low surrogate is written below.
- var codepoint = 0xDC00 | (codepoint & 0x3FF);
- }
+ // Low surrogate is written below.
+ var codepoint = 0xDC00 | (codepoint & 0x3FF)
+ }
- // Write BMP char or low surrogate.
- dst[offset++] = codepoint & 0xff;
- dst[offset++] = codepoint >> 8;
+ // Write BMP char or low surrogate.
+ dst[offset++] = codepoint & 0xff
+ dst[offset++] = codepoint >> 8
- return offset;
+ return offset
};
-Utf32Decoder.prototype.end = function() {
- this.overflow.length = 0;
-};
+Utf32Decoder.prototype.end = function () {
+ this.overflow.length = 0
+}
// == UTF-32 Auto codec =============================================================
// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic.
@@ -189,131 +179,129 @@ Utf32Decoder.prototype.end = function() {
// Encoder prepends BOM (which can be overridden with (addBOM: false}).
-exports.utf32 = Utf32AutoCodec;
-exports.ucs4 = 'utf32';
+exports.utf32 = Utf32AutoCodec
+exports.ucs4 = "utf32"
-function Utf32AutoCodec(options, iconv) {
- this.iconv = iconv;
+function Utf32AutoCodec (options, iconv) {
+ this.iconv = iconv
}
-Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder;
-Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder;
+Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder
+Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder
// -- Encoding
-function Utf32AutoEncoder(options, codec) {
- options = options || {};
+function Utf32AutoEncoder (options, codec) {
+ options = options || {}
- if (options.addBOM === undefined)
- options.addBOM = true;
+ if (options.addBOM === undefined) {
+ options.addBOM = true
+ }
- this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options);
+ this.encoder = codec.iconv.getEncoder(options.defaultEncoding || "utf-32le", options)
}
-Utf32AutoEncoder.prototype.write = function(str) {
- return this.encoder.write(str);
-};
+Utf32AutoEncoder.prototype.write = function (str) {
+ return this.encoder.write(str)
+}
-Utf32AutoEncoder.prototype.end = function() {
- return this.encoder.end();
-};
+Utf32AutoEncoder.prototype.end = function () {
+ return this.encoder.end()
+}
// -- Decoding
-function Utf32AutoDecoder(options, codec) {
- this.decoder = null;
- this.initialBufs = [];
- this.initialBufsLen = 0;
- this.options = options || {};
- this.iconv = codec.iconv;
+function Utf32AutoDecoder (options, codec) {
+ this.decoder = null
+ this.initialBufs = []
+ this.initialBufsLen = 0
+ this.options = options || {}
+ this.iconv = codec.iconv
}
-Utf32AutoDecoder.prototype.write = function(buf) {
- if (!this.decoder) {
- // Codec is not chosen yet. Accumulate initial bytes.
- this.initialBufs.push(buf);
- this.initialBufsLen += buf.length;
+Utf32AutoDecoder.prototype.write = function (buf) {
+ if (!this.decoder) {
+ // Codec is not chosen yet. Accumulate initial bytes.
+ this.initialBufs.push(buf)
+ this.initialBufsLen += buf.length
- if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below)
- return '';
+ if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below)
+ { return "" }
- // We have enough bytes -> detect endianness.
- var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
- this.decoder = this.iconv.getDecoder(encoding, this.options);
+ // We have enough bytes -> detect endianness.
+ var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)
+ this.decoder = this.iconv.getDecoder(encoding, this.options)
- var resStr = '';
- for (var i = 0; i < this.initialBufs.length; i++)
- resStr += this.decoder.write(this.initialBufs[i]);
+ var resStr = ""
+ for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }
- this.initialBufs.length = this.initialBufsLen = 0;
- return resStr;
- }
+ this.initialBufs.length = this.initialBufsLen = 0
+ return resStr
+ }
- return this.decoder.write(buf);
-};
+ return this.decoder.write(buf)
+}
-Utf32AutoDecoder.prototype.end = function() {
- if (!this.decoder) {
- var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
- this.decoder = this.iconv.getDecoder(encoding, this.options);
+Utf32AutoDecoder.prototype.end = function () {
+ if (!this.decoder) {
+ var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)
+ this.decoder = this.iconv.getDecoder(encoding, this.options)
- var resStr = '';
- for (var i = 0; i < this.initialBufs.length; i++)
- resStr += this.decoder.write(this.initialBufs[i]);
+ var resStr = ""
+ for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }
- var trail = this.decoder.end();
- if (trail)
- resStr += trail;
+ var trail = this.decoder.end()
+ if (trail) { resStr += trail }
- this.initialBufs.length = this.initialBufsLen = 0;
- return resStr;
- }
+ this.initialBufs.length = this.initialBufsLen = 0
+ return resStr
+ }
- return this.decoder.end();
-};
+ return this.decoder.end()
+}
+
+function detectEncoding (bufs, defaultEncoding) {
+ var b = []
+ var charsProcessed = 0
+ var invalidLE = 0; var invalidBE = 0 // Number of invalid chars when decoded as LE or BE.
+ var bmpCharsLE = 0; var bmpCharsBE = 0 // Number of BMP chars when decoded as LE or BE.
+
+ outerLoop:
+ for (var i = 0; i < bufs.length; i++) {
+ var buf = bufs[i]
+ for (var j = 0; j < buf.length; j++) {
+ b.push(buf[j])
+ if (b.length === 4) {
+ if (charsProcessed === 0) {
+ // Check BOM first.
+ if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) {
+ return "utf-32le"
+ }
+ if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) {
+ return "utf-32be"
+ }
+ }
+
+ if (b[0] !== 0 || b[1] > 0x10) invalidBE++
+ if (b[3] !== 0 || b[2] > 0x10) invalidLE++
+
+ if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++
+ if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++
+
+ b.length = 0
+ charsProcessed++
-function detectEncoding(bufs, defaultEncoding) {
- var b = [];
- var charsProcessed = 0;
- var invalidLE = 0, invalidBE = 0; // Number of invalid chars when decoded as LE or BE.
- var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE.
-
- outer_loop:
- for (var i = 0; i < bufs.length; i++) {
- var buf = bufs[i];
- for (var j = 0; j < buf.length; j++) {
- b.push(buf[j]);
- if (b.length === 4) {
- if (charsProcessed === 0) {
- // Check BOM first.
- if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) {
- return 'utf-32le';
- }
- if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) {
- return 'utf-32be';
- }
- }
-
- if (b[0] !== 0 || b[1] > 0x10) invalidBE++;
- if (b[3] !== 0 || b[2] > 0x10) invalidLE++;
-
- if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++;
- if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++;
-
- b.length = 0;
- charsProcessed++;
-
- if (charsProcessed >= 100) {
- break outer_loop;
- }
- }
+ if (charsProcessed >= 100) {
+ break outerLoop
}
+ }
}
+ }
- // Make decisions.
- if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return 'utf-32be';
- if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return 'utf-32le';
+ // Make decisions.
+ if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return "utf-32be"
+ if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return "utf-32le"
- // Couldn't decide (likely all zeros or not enough data).
- return defaultEncoding || 'utf-32le';
+ // Couldn't decide (likely all zeros or not enough data).
+ return defaultEncoding || "utf-32le"
}
diff --git a/deps/npm/node_modules/iconv-lite/encodings/utf7.js b/deps/npm/node_modules/iconv-lite/encodings/utf7.js
index eacae34d5f80d0..fe72a9d9b52b1b 100644
--- a/deps/npm/node_modules/iconv-lite/encodings/utf7.js
+++ b/deps/npm/node_modules/iconv-lite/encodings/utf7.js
@@ -1,122 +1,122 @@
-"use strict";
-var Buffer = require("safer-buffer").Buffer;
+"use strict"
+var Buffer = require("safer-buffer").Buffer
// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152
// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3
-exports.utf7 = Utf7Codec;
-exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7
-function Utf7Codec(codecOptions, iconv) {
- this.iconv = iconv;
+exports.utf7 = Utf7Codec
+exports.unicode11utf7 = "utf7" // Alias UNICODE-1-1-UTF-7
+function Utf7Codec (codecOptions, iconv) {
+ this.iconv = iconv
};
-Utf7Codec.prototype.encoder = Utf7Encoder;
-Utf7Codec.prototype.decoder = Utf7Decoder;
-Utf7Codec.prototype.bomAware = true;
-
+Utf7Codec.prototype.encoder = Utf7Encoder
+Utf7Codec.prototype.decoder = Utf7Decoder
+Utf7Codec.prototype.bomAware = true
// -- Encoding
-var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;
+// Why scape ()?./?
+// eslint-disable-next-line no-useless-escape
+var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g
-function Utf7Encoder(options, codec) {
- this.iconv = codec.iconv;
+function Utf7Encoder (options, codec) {
+ this.iconv = codec.iconv
}
-Utf7Encoder.prototype.write = function(str) {
- // Naive implementation.
- // Non-direct chars are encoded as "+-"; single "+" char is encoded as "+-".
- return Buffer.from(str.replace(nonDirectChars, function(chunk) {
- return "+" + (chunk === '+' ? '' :
- this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, ''))
- + "-";
- }.bind(this)));
+Utf7Encoder.prototype.write = function (str) {
+ // Naive implementation.
+ // Non-direct chars are encoded as "+-"; single "+" char is encoded as "+-".
+ return Buffer.from(str.replace(nonDirectChars, function (chunk) {
+ return "+" + (chunk === "+"
+ ? ""
+ : this.iconv.encode(chunk, "utf16-be").toString("base64").replace(/=+$/, "")) +
+ "-"
+ }.bind(this)))
}
-Utf7Encoder.prototype.end = function() {
+Utf7Encoder.prototype.end = function () {
}
-
// -- Decoding
-function Utf7Decoder(options, codec) {
- this.iconv = codec.iconv;
- this.inBase64 = false;
- this.base64Accum = '';
+function Utf7Decoder (options, codec) {
+ this.iconv = codec.iconv
+ this.inBase64 = false
+ this.base64Accum = ""
}
-var base64Regex = /[A-Za-z0-9\/+]/;
-var base64Chars = [];
-for (var i = 0; i < 256; i++)
- base64Chars[i] = base64Regex.test(String.fromCharCode(i));
-
-var plusChar = '+'.charCodeAt(0),
- minusChar = '-'.charCodeAt(0),
- andChar = '&'.charCodeAt(0);
-
-Utf7Decoder.prototype.write = function(buf) {
- var res = "", lastI = 0,
- inBase64 = this.inBase64,
- base64Accum = this.base64Accum;
-
- // The decoder is more involved as we must handle chunks in stream.
-
- for (var i = 0; i < buf.length; i++) {
- if (!inBase64) { // We're in direct mode.
- // Write direct chars until '+'
- if (buf[i] == plusChar) {
- res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars.
- lastI = i+1;
- inBase64 = true;
- }
- } else { // We decode base64.
- if (!base64Chars[buf[i]]) { // Base64 ended.
- if (i == lastI && buf[i] == minusChar) {// "+-" -> "+"
- res += "+";
- } else {
- var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii");
- res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
- }
-
- if (buf[i] != minusChar) // Minus is absorbed after base64.
- i--;
-
- lastI = i+1;
- inBase64 = false;
- base64Accum = '';
- }
+// Why scape /?
+// eslint-disable-next-line no-useless-escape
+var base64Regex = /[A-Za-z0-9\/+]/
+var base64Chars = []
+for (var i = 0; i < 256; i++) { base64Chars[i] = base64Regex.test(String.fromCharCode(i)) }
+
+var plusChar = "+".charCodeAt(0)
+var minusChar = "-".charCodeAt(0)
+var andChar = "&".charCodeAt(0)
+
+Utf7Decoder.prototype.write = function (buf) {
+ var res = ""; var lastI = 0
+ var inBase64 = this.inBase64
+ var base64Accum = this.base64Accum
+
+ // The decoder is more involved as we must handle chunks in stream.
+
+ for (var i = 0; i < buf.length; i++) {
+ if (!inBase64) { // We're in direct mode.
+ // Write direct chars until '+'
+ if (buf[i] == plusChar) {
+ res += this.iconv.decode(buf.slice(lastI, i), "ascii") // Write direct chars.
+ lastI = i + 1
+ inBase64 = true
+ }
+ } else { // We decode base64.
+ if (!base64Chars[buf[i]]) { // Base64 ended.
+ if (i == lastI && buf[i] == minusChar) { // "+-" -> "+"
+ res += "+"
+ } else {
+ var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii")
+ res += this.iconv.decode(Buffer.from(b64str, "base64"), "utf16-be")
}
+
+ if (buf[i] != minusChar) // Minus is absorbed after base64.
+ { i-- }
+
+ lastI = i + 1
+ inBase64 = false
+ base64Accum = ""
+ }
}
+ }
- if (!inBase64) {
- res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars.
- } else {
- var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii");
+ if (!inBase64) {
+ res += this.iconv.decode(buf.slice(lastI), "ascii") // Write direct chars.
+ } else {
+ var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii")
- var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.
- base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.
- b64str = b64str.slice(0, canBeDecoded);
+ var canBeDecoded = b64str.length - (b64str.length % 8) // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.
+ base64Accum = b64str.slice(canBeDecoded) // The rest will be decoded in future.
+ b64str = b64str.slice(0, canBeDecoded)
- res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
- }
+ res += this.iconv.decode(Buffer.from(b64str, "base64"), "utf16-be")
+ }
- this.inBase64 = inBase64;
- this.base64Accum = base64Accum;
+ this.inBase64 = inBase64
+ this.base64Accum = base64Accum
- return res;
+ return res
}
-Utf7Decoder.prototype.end = function() {
- var res = "";
- if (this.inBase64 && this.base64Accum.length > 0)
- res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be");
+Utf7Decoder.prototype.end = function () {
+ var res = ""
+ if (this.inBase64 && this.base64Accum.length > 0) { res = this.iconv.decode(Buffer.from(this.base64Accum, "base64"), "utf16-be") }
- this.inBase64 = false;
- this.base64Accum = '';
- return res;
+ this.inBase64 = false
+ this.base64Accum = ""
+ return res
}
-
// UTF-7-IMAP codec.
// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)
// Differences:
@@ -128,163 +128,156 @@ Utf7Decoder.prototype.end = function() {
// * String must end in non-shifted position.
// * "-&" while in base64 is not allowed.
-
-exports.utf7imap = Utf7IMAPCodec;
-function Utf7IMAPCodec(codecOptions, iconv) {
- this.iconv = iconv;
+exports.utf7imap = Utf7IMAPCodec
+function Utf7IMAPCodec (codecOptions, iconv) {
+ this.iconv = iconv
};
-Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;
-Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;
-Utf7IMAPCodec.prototype.bomAware = true;
-
+Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder
+Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder
+Utf7IMAPCodec.prototype.bomAware = true
// -- Encoding
-function Utf7IMAPEncoder(options, codec) {
- this.iconv = codec.iconv;
- this.inBase64 = false;
- this.base64Accum = Buffer.alloc(6);
- this.base64AccumIdx = 0;
+function Utf7IMAPEncoder (options, codec) {
+ this.iconv = codec.iconv
+ this.inBase64 = false
+ this.base64Accum = Buffer.alloc(6)
+ this.base64AccumIdx = 0
}
-Utf7IMAPEncoder.prototype.write = function(str) {
- var inBase64 = this.inBase64,
- base64Accum = this.base64Accum,
- base64AccumIdx = this.base64AccumIdx,
- buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;
-
- for (var i = 0; i < str.length; i++) {
- var uChar = str.charCodeAt(i);
- if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.
- if (inBase64) {
- if (base64AccumIdx > 0) {
- bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx);
- base64AccumIdx = 0;
- }
-
- buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.
- inBase64 = false;
- }
-
- if (!inBase64) {
- buf[bufIdx++] = uChar; // Write direct character
-
- if (uChar === andChar) // Ampersand -> '&-'
- buf[bufIdx++] = minusChar;
- }
-
- } else { // Non-direct character
- if (!inBase64) {
- buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.
- inBase64 = true;
- }
- if (inBase64) {
- base64Accum[base64AccumIdx++] = uChar >> 8;
- base64Accum[base64AccumIdx++] = uChar & 0xFF;
-
- if (base64AccumIdx == base64Accum.length) {
- bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx);
- base64AccumIdx = 0;
- }
- }
+Utf7IMAPEncoder.prototype.write = function (str) {
+ var inBase64 = this.inBase64
+ var base64Accum = this.base64Accum
+ var base64AccumIdx = this.base64AccumIdx
+ var buf = Buffer.alloc(str.length * 5 + 10); var bufIdx = 0
+
+ for (var i = 0; i < str.length; i++) {
+ var uChar = str.charCodeAt(i)
+ if (uChar >= 0x20 && uChar <= 0x7E) { // Direct character or '&'.
+ if (inBase64) {
+ if (base64AccumIdx > 0) {
+ bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx)
+ base64AccumIdx = 0
+ }
+
+ buf[bufIdx++] = minusChar // Write '-', then go to direct mode.
+ inBase64 = false
+ }
+
+ if (!inBase64) {
+ buf[bufIdx++] = uChar // Write direct character
+
+ if (uChar === andChar) // Ampersand -> '&-'
+ { buf[bufIdx++] = minusChar }
+ }
+ } else { // Non-direct character
+ if (!inBase64) {
+ buf[bufIdx++] = andChar // Write '&', then go to base64 mode.
+ inBase64 = true
+ }
+ if (inBase64) {
+ base64Accum[base64AccumIdx++] = uChar >> 8
+ base64Accum[base64AccumIdx++] = uChar & 0xFF
+
+ if (base64AccumIdx == base64Accum.length) {
+ bufIdx += buf.write(base64Accum.toString("base64").replace(/\//g, ","), bufIdx)
+ base64AccumIdx = 0
}
+ }
}
+ }
- this.inBase64 = inBase64;
- this.base64AccumIdx = base64AccumIdx;
+ this.inBase64 = inBase64
+ this.base64AccumIdx = base64AccumIdx
- return buf.slice(0, bufIdx);
+ return buf.slice(0, bufIdx)
}
-Utf7IMAPEncoder.prototype.end = function() {
- var buf = Buffer.alloc(10), bufIdx = 0;
- if (this.inBase64) {
- if (this.base64AccumIdx > 0) {
- bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx);
- this.base64AccumIdx = 0;
- }
-
- buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.
- this.inBase64 = false;
+Utf7IMAPEncoder.prototype.end = function () {
+ var buf = Buffer.alloc(10); var bufIdx = 0
+ if (this.inBase64) {
+ if (this.base64AccumIdx > 0) {
+ bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx)
+ this.base64AccumIdx = 0
}
- return buf.slice(0, bufIdx);
-}
+ buf[bufIdx++] = minusChar // Write '-', then go to direct mode.
+ this.inBase64 = false
+ }
+ return buf.slice(0, bufIdx)
+}
// -- Decoding
-function Utf7IMAPDecoder(options, codec) {
- this.iconv = codec.iconv;
- this.inBase64 = false;
- this.base64Accum = '';
+function Utf7IMAPDecoder (options, codec) {
+ this.iconv = codec.iconv
+ this.inBase64 = false
+ this.base64Accum = ""
}
-var base64IMAPChars = base64Chars.slice();
-base64IMAPChars[','.charCodeAt(0)] = true;
-
-Utf7IMAPDecoder.prototype.write = function(buf) {
- var res = "", lastI = 0,
- inBase64 = this.inBase64,
- base64Accum = this.base64Accum;
-
- // The decoder is more involved as we must handle chunks in stream.
- // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).
-
- for (var i = 0; i < buf.length; i++) {
- if (!inBase64) { // We're in direct mode.
- // Write direct chars until '&'
- if (buf[i] == andChar) {
- res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars.
- lastI = i+1;
- inBase64 = true;
- }
- } else { // We decode base64.
- if (!base64IMAPChars[buf[i]]) { // Base64 ended.
- if (i == lastI && buf[i] == minusChar) { // "&-" -> "&"
- res += "&";
- } else {
- var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii").replace(/,/g, '/');
- res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
- }
-
- if (buf[i] != minusChar) // Minus may be absorbed after base64.
- i--;
-
- lastI = i+1;
- inBase64 = false;
- base64Accum = '';
- }
+var base64IMAPChars = base64Chars.slice()
+base64IMAPChars[",".charCodeAt(0)] = true
+
+Utf7IMAPDecoder.prototype.write = function (buf) {
+ var res = ""; var lastI = 0
+ var inBase64 = this.inBase64
+ var base64Accum = this.base64Accum
+
+ // The decoder is more involved as we must handle chunks in stream.
+ // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).
+
+ for (var i = 0; i < buf.length; i++) {
+ if (!inBase64) { // We're in direct mode.
+ // Write direct chars until '&'
+ if (buf[i] == andChar) {
+ res += this.iconv.decode(buf.slice(lastI, i), "ascii") // Write direct chars.
+ lastI = i + 1
+ inBase64 = true
+ }
+ } else { // We decode base64.
+ if (!base64IMAPChars[buf[i]]) { // Base64 ended.
+ if (i == lastI && buf[i] == minusChar) { // "&-" -> "&"
+ res += "&"
+ } else {
+ var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii").replace(/,/g, "/")
+ res += this.iconv.decode(Buffer.from(b64str, "base64"), "utf16-be")
}
- }
- if (!inBase64) {
- res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars.
- } else {
- var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, '/');
+ if (buf[i] != minusChar) // Minus may be absorbed after base64.
+ { i-- }
- var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.
- base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.
- b64str = b64str.slice(0, canBeDecoded);
-
- res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
+ lastI = i + 1
+ inBase64 = false
+ base64Accum = ""
+ }
}
+ }
- this.inBase64 = inBase64;
- this.base64Accum = base64Accum;
+ if (!inBase64) {
+ res += this.iconv.decode(buf.slice(lastI), "ascii") // Write direct chars.
+ } else {
+ var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, "/")
- return res;
-}
+ var canBeDecoded = b64str.length - (b64str.length % 8) // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.
+ base64Accum = b64str.slice(canBeDecoded) // The rest will be decoded in future.
+ b64str = b64str.slice(0, canBeDecoded)
-Utf7IMAPDecoder.prototype.end = function() {
- var res = "";
- if (this.inBase64 && this.base64Accum.length > 0)
- res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be");
+ res += this.iconv.decode(Buffer.from(b64str, "base64"), "utf16-be")
+ }
- this.inBase64 = false;
- this.base64Accum = '';
- return res;
+ this.inBase64 = inBase64
+ this.base64Accum = base64Accum
+
+ return res
}
+Utf7IMAPDecoder.prototype.end = function () {
+ var res = ""
+ if (this.inBase64 && this.base64Accum.length > 0) { res = this.iconv.decode(Buffer.from(this.base64Accum, "base64"), "utf16-be") }
+ this.inBase64 = false
+ this.base64Accum = ""
+ return res
+}
diff --git a/deps/npm/node_modules/iconv-lite/lib/bom-handling.js b/deps/npm/node_modules/iconv-lite/lib/bom-handling.js
index 1050872385c7f9..a86a6b55ce1982 100644
--- a/deps/npm/node_modules/iconv-lite/lib/bom-handling.js
+++ b/deps/npm/node_modules/iconv-lite/lib/bom-handling.js
@@ -1,52 +1,48 @@
-"use strict";
+"use strict"
-var BOMChar = '\uFEFF';
+var BOMChar = "\uFEFF"
exports.PrependBOM = PrependBOMWrapper
-function PrependBOMWrapper(encoder, options) {
- this.encoder = encoder;
- this.addBOM = true;
+function PrependBOMWrapper (encoder, options) {
+ this.encoder = encoder
+ this.addBOM = true
}
-PrependBOMWrapper.prototype.write = function(str) {
- if (this.addBOM) {
- str = BOMChar + str;
- this.addBOM = false;
- }
+PrependBOMWrapper.prototype.write = function (str) {
+ if (this.addBOM) {
+ str = BOMChar + str
+ this.addBOM = false
+ }
- return this.encoder.write(str);
+ return this.encoder.write(str)
}
-PrependBOMWrapper.prototype.end = function() {
- return this.encoder.end();
+PrependBOMWrapper.prototype.end = function () {
+ return this.encoder.end()
}
+// ------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-
-exports.StripBOM = StripBOMWrapper;
-function StripBOMWrapper(decoder, options) {
- this.decoder = decoder;
- this.pass = false;
- this.options = options || {};
+exports.StripBOM = StripBOMWrapper
+function StripBOMWrapper (decoder, options) {
+ this.decoder = decoder
+ this.pass = false
+ this.options = options || {}
}
-StripBOMWrapper.prototype.write = function(buf) {
- var res = this.decoder.write(buf);
- if (this.pass || !res)
- return res;
+StripBOMWrapper.prototype.write = function (buf) {
+ var res = this.decoder.write(buf)
+ if (this.pass || !res) { return res }
- if (res[0] === BOMChar) {
- res = res.slice(1);
- if (typeof this.options.stripBOM === 'function')
- this.options.stripBOM();
- }
+ if (res[0] === BOMChar) {
+ res = res.slice(1)
+ if (typeof this.options.stripBOM === "function") { this.options.stripBOM() }
+ }
- this.pass = true;
- return res;
+ this.pass = true
+ return res
}
-StripBOMWrapper.prototype.end = function() {
- return this.decoder.end();
+StripBOMWrapper.prototype.end = function () {
+ return this.decoder.end()
}
-
diff --git a/deps/npm/node_modules/iconv-lite/lib/helpers/merge-exports.js b/deps/npm/node_modules/iconv-lite/lib/helpers/merge-exports.js
new file mode 100644
index 00000000000000..e79e041d9529bf
--- /dev/null
+++ b/deps/npm/node_modules/iconv-lite/lib/helpers/merge-exports.js
@@ -0,0 +1,13 @@
+"use strict"
+
+var hasOwn = typeof Object.hasOwn === "undefined" ? Function.call.bind(Object.prototype.hasOwnProperty) : Object.hasOwn
+
+function mergeModules (target, module) {
+ for (var key in module) {
+ if (hasOwn(module, key)) {
+ target[key] = module[key]
+ }
+ }
+}
+
+module.exports = mergeModules
diff --git a/deps/npm/node_modules/iconv-lite/lib/index.js b/deps/npm/node_modules/iconv-lite/lib/index.js
index 657701c38d243b..bd5d6bc0d90ac1 100644
--- a/deps/npm/node_modules/iconv-lite/lib/index.js
+++ b/deps/npm/node_modules/iconv-lite/lib/index.js
@@ -1,134 +1,136 @@
-"use strict";
+"use strict"
-var Buffer = require("safer-buffer").Buffer;
+var Buffer = require("safer-buffer").Buffer
-var bomHandling = require("./bom-handling"),
- iconv = module.exports;
+var bomHandling = require("./bom-handling")
+var mergeModules = require("./helpers/merge-exports")
// All codecs and aliases are kept here, keyed by encoding name/alias.
// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.
-iconv.encodings = null;
+// Cannot initialize with { __proto__: null } because Boolean({ __proto__: null }) === true
+module.exports.encodings = null
// Characters emitted in case of error.
-iconv.defaultCharUnicode = '�';
-iconv.defaultCharSingleByte = '?';
+module.exports.defaultCharUnicode = "�"
+module.exports.defaultCharSingleByte = "?"
// Public API.
-iconv.encode = function encode(str, encoding, options) {
- str = "" + (str || ""); // Ensure string.
+module.exports.encode = function encode (str, encoding, options) {
+ str = "" + (str || "") // Ensure string.
- var encoder = iconv.getEncoder(encoding, options);
+ var encoder = module.exports.getEncoder(encoding, options)
- var res = encoder.write(str);
- var trail = encoder.end();
-
- return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;
-}
+ var res = encoder.write(str)
+ var trail = encoder.end()
-iconv.decode = function decode(buf, encoding, options) {
- if (typeof buf === 'string') {
- if (!iconv.skipDecodeWarning) {
- console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');
- iconv.skipDecodeWarning = true;
- }
+ return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res
+}
- buf = Buffer.from("" + (buf || ""), "binary"); // Ensure buffer.
+module.exports.decode = function decode (buf, encoding, options) {
+ if (typeof buf === "string") {
+ if (!module.exports.skipDecodeWarning) {
+ console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding")
+ module.exports.skipDecodeWarning = true
}
- var decoder = iconv.getDecoder(encoding, options);
+ buf = Buffer.from("" + (buf || ""), "binary") // Ensure buffer.
+ }
+
+ var decoder = module.exports.getDecoder(encoding, options)
- var res = decoder.write(buf);
- var trail = decoder.end();
+ var res = decoder.write(buf)
+ var trail = decoder.end()
- return trail ? (res + trail) : res;
+ return trail ? (res + trail) : res
}
-iconv.encodingExists = function encodingExists(enc) {
- try {
- iconv.getCodec(enc);
- return true;
- } catch (e) {
- return false;
- }
+module.exports.encodingExists = function encodingExists (enc) {
+ try {
+ module.exports.getCodec(enc)
+ return true
+ } catch (e) {
+ return false
+ }
}
// Legacy aliases to convert functions
-iconv.toEncoding = iconv.encode;
-iconv.fromEncoding = iconv.decode;
+module.exports.toEncoding = module.exports.encode
+module.exports.fromEncoding = module.exports.decode
// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.
-iconv._codecDataCache = {};
-iconv.getCodec = function getCodec(encoding) {
- if (!iconv.encodings)
- iconv.encodings = require("../encodings"); // Lazy load all encoding definitions.
-
- // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.
- var enc = iconv._canonicalizeEncoding(encoding);
-
- // Traverse iconv.encodings to find actual codec.
- var codecOptions = {};
- while (true) {
- var codec = iconv._codecDataCache[enc];
- if (codec)
- return codec;
-
- var codecDef = iconv.encodings[enc];
-
- switch (typeof codecDef) {
- case "string": // Direct alias to other encoding.
- enc = codecDef;
- break;
-
- case "object": // Alias with options. Can be layered.
- for (var key in codecDef)
- codecOptions[key] = codecDef[key];
-
- if (!codecOptions.encodingName)
- codecOptions.encodingName = enc;
-
- enc = codecDef.type;
- break;
-
- case "function": // Codec itself.
- if (!codecOptions.encodingName)
- codecOptions.encodingName = enc;
-
- // The codec function must load all tables and return object with .encoder and .decoder methods.
- // It'll be called only once (for each different options object).
- codec = new codecDef(codecOptions, iconv);
-
- iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.
- return codec;
-
- default:
- throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')");
- }
+module.exports._codecDataCache = { __proto__: null }
+
+module.exports.getCodec = function getCodec (encoding) {
+ if (!module.exports.encodings) {
+ var raw = require("../encodings")
+ // TODO: In future versions when old nodejs support is removed can use object.assign
+ module.exports.encodings = { __proto__: null } // Initialize as empty object.
+ mergeModules(module.exports.encodings, raw)
+ }
+
+ // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.
+ var enc = module.exports._canonicalizeEncoding(encoding)
+
+ // Traverse iconv.encodings to find actual codec.
+ var codecOptions = {}
+ while (true) {
+ var codec = module.exports._codecDataCache[enc]
+
+ if (codec) { return codec }
+
+ var codecDef = module.exports.encodings[enc]
+
+ switch (typeof codecDef) {
+ case "string": // Direct alias to other encoding.
+ enc = codecDef
+ break
+
+ case "object": // Alias with options. Can be layered.
+ for (var key in codecDef) { codecOptions[key] = codecDef[key] }
+
+ if (!codecOptions.encodingName) { codecOptions.encodingName = enc }
+
+ enc = codecDef.type
+ break
+
+ case "function": // Codec itself.
+ if (!codecOptions.encodingName) { codecOptions.encodingName = enc }
+
+ // The codec function must load all tables and return object with .encoder and .decoder methods.
+ // It'll be called only once (for each different options object).
+ //
+ codec = new codecDef(codecOptions, module.exports)
+
+ module.exports._codecDataCache[codecOptions.encodingName] = codec // Save it to be reused later.
+ return codec
+
+ default:
+ throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '" + enc + "')")
}
+ }
}
-iconv._canonicalizeEncoding = function(encoding) {
- // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.
- return (''+encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, "");
+module.exports._canonicalizeEncoding = function (encoding) {
+ // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.
+ return ("" + encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, "")
}
-iconv.getEncoder = function getEncoder(encoding, options) {
- var codec = iconv.getCodec(encoding),
- encoder = new codec.encoder(options, codec);
+module.exports.getEncoder = function getEncoder (encoding, options) {
+ var codec = module.exports.getCodec(encoding)
+ var encoder = new codec.encoder(options, codec)
- if (codec.bomAware && options && options.addBOM)
- encoder = new bomHandling.PrependBOM(encoder, options);
+ if (codec.bomAware && options && options.addBOM) { encoder = new bomHandling.PrependBOM(encoder, options) }
- return encoder;
+ return encoder
}
-iconv.getDecoder = function getDecoder(encoding, options) {
- var codec = iconv.getCodec(encoding),
- decoder = new codec.decoder(options, codec);
+module.exports.getDecoder = function getDecoder (encoding, options) {
+ var codec = module.exports.getCodec(encoding)
+ var decoder = new codec.decoder(options, codec)
- if (codec.bomAware && !(options && options.stripBOM === false))
- decoder = new bomHandling.StripBOM(decoder, options);
+ if (codec.bomAware && !(options && options.stripBOM === false)) { decoder = new bomHandling.StripBOM(decoder, options) }
- return decoder;
+ return decoder
}
// Streaming API
@@ -136,45 +138,45 @@ iconv.getDecoder = function getDecoder(encoding, options) {
// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default.
// If you would like to enable it explicitly, please add the following code to your app:
// > iconv.enableStreamingAPI(require('stream'));
-iconv.enableStreamingAPI = function enableStreamingAPI(stream_module) {
- if (iconv.supportsStreams)
- return;
+module.exports.enableStreamingAPI = function enableStreamingAPI (streamModule) {
+ if (module.exports.supportsStreams) { return }
- // Dependency-inject stream module to create IconvLite stream classes.
- var streams = require("./streams")(stream_module);
+ // Dependency-inject stream module to create IconvLite stream classes.
+ var streams = require("./streams")(streamModule)
- // Not public API yet, but expose the stream classes.
- iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream;
- iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream;
+ // Not public API yet, but expose the stream classes.
+ module.exports.IconvLiteEncoderStream = streams.IconvLiteEncoderStream
+ module.exports.IconvLiteDecoderStream = streams.IconvLiteDecoderStream
- // Streaming API.
- iconv.encodeStream = function encodeStream(encoding, options) {
- return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);
- }
+ // Streaming API.
+ module.exports.encodeStream = function encodeStream (encoding, options) {
+ return new module.exports.IconvLiteEncoderStream(module.exports.getEncoder(encoding, options), options)
+ }
- iconv.decodeStream = function decodeStream(encoding, options) {
- return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);
- }
+ module.exports.decodeStream = function decodeStream (encoding, options) {
+ return new module.exports.IconvLiteDecoderStream(module.exports.getDecoder(encoding, options), options)
+ }
- iconv.supportsStreams = true;
+ module.exports.supportsStreams = true
}
// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments).
-var stream_module;
+var streamModule
try {
- stream_module = require("stream");
+ streamModule = require("stream")
} catch (e) {}
-if (stream_module && stream_module.Transform) {
- iconv.enableStreamingAPI(stream_module);
-
+if (streamModule && streamModule.Transform) {
+ module.exports.enableStreamingAPI(streamModule)
} else {
- // In rare cases where 'stream' module is not available by default, throw a helpful exception.
- iconv.encodeStream = iconv.decodeStream = function() {
- throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.");
- };
+ // In rare cases where 'stream' module is not available by default, throw a helpful exception.
+ module.exports.encodeStream = module.exports.decodeStream = function () {
+ throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.")
+ }
}
-if ("Ā" != "\u0100") {
- console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.");
+// Some environments, such as browsers, may not load JavaScript files as UTF-8
+// eslint-disable-next-line no-constant-condition
+if ("Ā" !== "\u0100") {
+ console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.")
}
diff --git a/deps/npm/node_modules/iconv-lite/lib/streams.js b/deps/npm/node_modules/iconv-lite/lib/streams.js
index a1506482f58016..ebfed8e0dc39ca 100644
--- a/deps/npm/node_modules/iconv-lite/lib/streams.js
+++ b/deps/npm/node_modules/iconv-lite/lib/streams.js
@@ -1,109 +1,105 @@
-"use strict";
+"use strict"
-var Buffer = require("safer-buffer").Buffer;
+var Buffer = require("safer-buffer").Buffer
-// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments),
+// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments),
// we opt to dependency-inject it instead of creating a hard dependency.
-module.exports = function(stream_module) {
- var Transform = stream_module.Transform;
+module.exports = function (streamModule) {
+ var Transform = streamModule.Transform
- // == Encoder stream =======================================================
+ // == Encoder stream =======================================================
- function IconvLiteEncoderStream(conv, options) {
- this.conv = conv;
- options = options || {};
- options.decodeStrings = false; // We accept only strings, so we don't need to decode them.
- Transform.call(this, options);
- }
+ function IconvLiteEncoderStream (conv, options) {
+ this.conv = conv
+ options = options || {}
+ options.decodeStrings = false // We accept only strings, so we don't need to decode them.
+ Transform.call(this, options)
+ }
- IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {
- constructor: { value: IconvLiteEncoderStream }
- });
-
- IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {
- if (typeof chunk != 'string')
- return done(new Error("Iconv encoding stream needs strings as its input."));
- try {
- var res = this.conv.write(chunk);
- if (res && res.length) this.push(res);
- done();
- }
- catch (e) {
- done(e);
- }
- }
+ IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {
+ constructor: { value: IconvLiteEncoderStream }
+ })
- IconvLiteEncoderStream.prototype._flush = function(done) {
- try {
- var res = this.conv.end();
- if (res && res.length) this.push(res);
- done();
- }
- catch (e) {
- done(e);
- }
+ IconvLiteEncoderStream.prototype._transform = function (chunk, encoding, done) {
+ if (typeof chunk !== "string") {
+ return done(new Error("Iconv encoding stream needs strings as its input."))
}
- IconvLiteEncoderStream.prototype.collect = function(cb) {
- var chunks = [];
- this.on('error', cb);
- this.on('data', function(chunk) { chunks.push(chunk); });
- this.on('end', function() {
- cb(null, Buffer.concat(chunks));
- });
- return this;
- }
-
-
- // == Decoder stream =======================================================
-
- function IconvLiteDecoderStream(conv, options) {
- this.conv = conv;
- options = options || {};
- options.encoding = this.encoding = 'utf8'; // We output strings.
- Transform.call(this, options);
+ try {
+ var res = this.conv.write(chunk)
+ if (res && res.length) this.push(res)
+ done()
+ } catch (e) {
+ done(e)
}
-
- IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {
- constructor: { value: IconvLiteDecoderStream }
- });
-
- IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {
- if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array))
- return done(new Error("Iconv decoding stream needs buffers as its input."));
- try {
- var res = this.conv.write(chunk);
- if (res && res.length) this.push(res, this.encoding);
- done();
- }
- catch (e) {
- done(e);
- }
+ }
+
+ IconvLiteEncoderStream.prototype._flush = function (done) {
+ try {
+ var res = this.conv.end()
+ if (res && res.length) this.push(res)
+ done()
+ } catch (e) {
+ done(e)
}
-
- IconvLiteDecoderStream.prototype._flush = function(done) {
- try {
- var res = this.conv.end();
- if (res && res.length) this.push(res, this.encoding);
- done();
- }
- catch (e) {
- done(e);
- }
+ }
+
+ IconvLiteEncoderStream.prototype.collect = function (cb) {
+ var chunks = []
+ this.on("error", cb)
+ this.on("data", function (chunk) { chunks.push(chunk) })
+ this.on("end", function () {
+ cb(null, Buffer.concat(chunks))
+ })
+ return this
+ }
+
+ // == Decoder stream =======================================================
+
+ function IconvLiteDecoderStream (conv, options) {
+ this.conv = conv
+ options = options || {}
+ options.encoding = this.encoding = "utf8" // We output strings.
+ Transform.call(this, options)
+ }
+
+ IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {
+ constructor: { value: IconvLiteDecoderStream }
+ })
+
+ IconvLiteDecoderStream.prototype._transform = function (chunk, encoding, done) {
+ if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array)) { return done(new Error("Iconv decoding stream needs buffers as its input.")) }
+ try {
+ var res = this.conv.write(chunk)
+ if (res && res.length) this.push(res, this.encoding)
+ done()
+ } catch (e) {
+ done(e)
}
-
- IconvLiteDecoderStream.prototype.collect = function(cb) {
- var res = '';
- this.on('error', cb);
- this.on('data', function(chunk) { res += chunk; });
- this.on('end', function() {
- cb(null, res);
- });
- return this;
+ }
+
+ IconvLiteDecoderStream.prototype._flush = function (done) {
+ try {
+ var res = this.conv.end()
+ if (res && res.length) this.push(res, this.encoding)
+ done()
+ } catch (e) {
+ done(e)
}
-
- return {
- IconvLiteEncoderStream: IconvLiteEncoderStream,
- IconvLiteDecoderStream: IconvLiteDecoderStream,
- };
-};
+ }
+
+ IconvLiteDecoderStream.prototype.collect = function (cb) {
+ var res = ""
+ this.on("error", cb)
+ this.on("data", function (chunk) { res += chunk })
+ this.on("end", function () {
+ cb(null, res)
+ })
+ return this
+ }
+
+ return {
+ IconvLiteEncoderStream: IconvLiteEncoderStream,
+ IconvLiteDecoderStream: IconvLiteDecoderStream
+ }
+}
diff --git a/deps/npm/node_modules/iconv-lite/package.json b/deps/npm/node_modules/iconv-lite/package.json
index d351115a839fa0..867c98a684eb4c 100644
--- a/deps/npm/node_modules/iconv-lite/package.json
+++ b/deps/npm/node_modules/iconv-lite/package.json
@@ -1,7 +1,7 @@
{
"name": "iconv-lite",
"description": "Convert character encodings in pure javascript.",
- "version": "0.6.3",
+ "version": "0.7.2",
"license": "MIT",
"keywords": [
"iconv",
@@ -12,30 +12,56 @@
"author": "Alexander Shtuchkin ",
"main": "./lib/index.js",
"typings": "./lib/index.d.ts",
- "homepage": "https://github.com/ashtuchkin/iconv-lite",
- "bugs": "https://github.com/ashtuchkin/iconv-lite/issues",
+ "homepage": "https://github.com/pillarjs/iconv-lite",
+ "bugs": "https://github.com/pillarjs/iconv-lite/issues",
+ "files": [
+ "lib/",
+ "encodings/",
+ "types/"
+ ],
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ },
"repository": {
"type": "git",
- "url": "git://github.com/ashtuchkin/iconv-lite.git"
+ "url": "https://github.com/pillarjs/iconv-lite.git"
},
"engines": {
"node": ">=0.10.0"
},
"scripts": {
- "coverage": "c8 _mocha --grep .",
- "test": "mocha --reporter spec --grep ."
+ "lint": "eslint",
+ "lint:fix": "eslint --fix",
+ "test": "mocha --reporter spec --check-leaks --grep .",
+ "test:ci": "nyc --exclude test --reporter=lcovonly --reporter=text npm test",
+ "test:cov": "nyc --exclude test --reporter=html --reporter=text npm test",
+ "test:performance": "node --allow-natives-syntax performance/index.js",
+ "test:tap": "mocha --reporter tap --check-leaks --grep .",
+ "test:typescript": "tsc && attw --pack",
+ "test:webpack": "npm pack && mv iconv-lite-*.tgz test/webpack/iconv-lite.tgz && cd test/webpack && npm install && npm run test && rm iconv-lite.tgz",
+ "typegen": "node generation/gen-typings.js"
},
"browser": {
"stream": false
},
"devDependencies": {
+ "@arethetypeswrong/cli": "^0.17.4",
+ "@stylistic/eslint-plugin": "^5.1.0",
+ "@stylistic/eslint-plugin-js": "^4.1.0",
+ "@types/node": "^24.0.12",
"async": "^3.2.0",
- "c8": "^7.2.0",
+ "bench-node": "^0.10.0",
+ "eslint": "^9.0.0",
"errto": "^0.2.1",
+ "expect-type": "^1.2.0",
"iconv": "^2.3.5",
- "mocha": "^3.5.3",
+ "mocha": "^6.2.2",
+ "neostandard": "^0.12.0",
+ "nyc": "^14.1.1",
"request": "^2.88.2",
"semver": "^6.3.0",
+ "typescript": "~5.9.2",
"unorm": "^1.6.0"
},
"dependencies": {
diff --git a/deps/npm/node_modules/init-package-json/lib/default-input.js b/deps/npm/node_modules/init-package-json/lib/default-input.js
index d72feee7f44d3b..7b9c8f440e0dee 100644
--- a/deps/npm/node_modules/init-package-json/lib/default-input.js
+++ b/deps/npm/node_modules/init-package-json/lib/default-input.js
@@ -2,7 +2,7 @@
const fs = require('fs/promises')
const path = require('path')
-const validateLicense = require('validate-npm-package-license')
+const validateLicense = require('@npmcli/package-json/lib/license')
const validateName = require('validate-npm-package-name')
const npa = require('npm-package-arg')
const semver = require('semver')
@@ -264,12 +264,10 @@ if (!package.author) {
const license = package.license || getConfig('license') || 'ISC'
exports.license = yes ? license : prompt('license', license, (data) => {
- const its = validateLicense(data)
- if (its.validForNewPackages) {
+ if (validateLicense(data)) {
return data
}
- const errors = (its.errors || []).concat(its.warnings || [])
- return invalid(`Sorry, ${errors.join(' and ')}.`)
+ return invalid('Sorry, license should be a valid SPDX license expression')
})
const type = package.type || getConfig('type') || 'commonjs'
diff --git a/deps/npm/node_modules/init-package-json/package.json b/deps/npm/node_modules/init-package-json/package.json
index f41bb69f756ff2..a6c8213cf53790 100644
--- a/deps/npm/node_modules/init-package-json/package.json
+++ b/deps/npm/node_modules/init-package-json/package.json
@@ -1,6 +1,6 @@
{
"name": "init-package-json",
- "version": "8.2.4",
+ "version": "8.2.5",
"main": "lib/init-package-json.js",
"scripts": {
"test": "tap",
@@ -25,13 +25,12 @@
"promzard": "^3.0.1",
"read": "^5.0.1",
"semver": "^7.7.2",
- "validate-npm-package-license": "^3.0.4",
"validate-npm-package-name": "^7.0.0"
},
"devDependencies": {
"@npmcli/config": "^10.0.0",
"@npmcli/eslint-config": "^6.0.1",
- "@npmcli/template-oss": "4.23.4",
+ "@npmcli/template-oss": "4.29.0",
"tap": "^16.0.1"
},
"engines": {
@@ -61,7 +60,7 @@
],
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.23.4",
+ "version": "4.29.0",
"publish": true
}
}
diff --git a/deps/npm/node_modules/ip-regex/index.js b/deps/npm/node_modules/ip-regex/index.js
deleted file mode 100644
index 1fe723cb7f5a9f..00000000000000
--- a/deps/npm/node_modules/ip-regex/index.js
+++ /dev/null
@@ -1,36 +0,0 @@
-const word = '[a-fA-F\\d:]';
-
-const boundry = options => options && options.includeBoundaries
- ? `(?:(?<=\\s|^)(?=${word})|(?<=${word})(?=\\s|$))`
- : '';
-
-const v4 = '(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}';
-
-const v6segment = '[a-fA-F\\d]{1,4}';
-
-const v6 = `
-(?:
-(?:${v6segment}:){7}(?:${v6segment}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
-(?:${v6segment}:){6}(?:${v4}|:${v6segment}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
-(?:${v6segment}:){5}(?::${v4}|(?::${v6segment}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4
-(?:${v6segment}:){4}(?:(?::${v6segment}){0,1}:${v4}|(?::${v6segment}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4
-(?:${v6segment}:){3}(?:(?::${v6segment}){0,2}:${v4}|(?::${v6segment}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4
-(?:${v6segment}:){2}(?:(?::${v6segment}){0,3}:${v4}|(?::${v6segment}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4
-(?:${v6segment}:){1}(?:(?::${v6segment}){0,4}:${v4}|(?::${v6segment}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
-(?::(?:(?::${v6segment}){0,5}:${v4}|(?::${v6segment}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
-)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
-`.replace(/\s*\/\/.*$/gm, '').replace(/\n/g, '').trim();
-
-// Pre-compile only the exact regexes because adding a global flag make regexes stateful
-const v46Exact = new RegExp(`(?:^${v4}$)|(?:^${v6}$)`);
-const v4exact = new RegExp(`^${v4}$`);
-const v6exact = new RegExp(`^${v6}$`);
-
-const ipRegex = options => options && options.exact
- ? v46Exact
- : new RegExp(`(?:${boundry(options)}${v4}${boundry(options)})|(?:${boundry(options)}${v6}${boundry(options)})`, 'g');
-
-ipRegex.v4 = options => options && options.exact ? v4exact : new RegExp(`${boundry(options)}${v4}${boundry(options)}`, 'g');
-ipRegex.v6 = options => options && options.exact ? v6exact : new RegExp(`${boundry(options)}${v6}${boundry(options)}`, 'g');
-
-export default ipRegex;
diff --git a/deps/npm/node_modules/ip-regex/license b/deps/npm/node_modules/ip-regex/license
deleted file mode 100644
index fa7ceba3eb4a96..00000000000000
--- a/deps/npm/node_modules/ip-regex/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) Sindre Sorhus (https://sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/deps/npm/node_modules/ip-regex/package.json b/deps/npm/node_modules/ip-regex/package.json
deleted file mode 100644
index 1f82fd5947262b..00000000000000
--- a/deps/npm/node_modules/ip-regex/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "name": "ip-regex",
- "version": "5.0.0",
- "description": "Regular expression for matching IP addresses (IPv4 & IPv6)",
- "license": "MIT",
- "repository": "sindresorhus/ip-regex",
- "funding": "https://github.com/sponsors/sindresorhus",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "type": "module",
- "exports": "./index.js",
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "ip",
- "ipv6",
- "ipv4",
- "regex",
- "regexp",
- "re",
- "match",
- "test",
- "find",
- "text",
- "pattern",
- "internet",
- "protocol",
- "address",
- "validate"
- ],
- "devDependencies": {
- "ava": "^3.15.0",
- "tsd": "^0.19.1",
- "xo": "^0.47.0"
- }
-}
diff --git a/deps/npm/node_modules/is-cidr/package.json b/deps/npm/node_modules/is-cidr/package.json
index 413a6ddf4b70a3..ac27bc877aecb5 100644
--- a/deps/npm/node_modules/is-cidr/package.json
+++ b/deps/npm/node_modules/is-cidr/package.json
@@ -1,6 +1,6 @@
{
"name": "is-cidr",
- "version": "6.0.2",
+ "version": "6.0.3",
"description": "Check if a string is an IP address in CIDR notation",
"author": "silverwind ",
"contributors": [
@@ -25,7 +25,8 @@
"devDependencies": {
"@types/node": "25.0.10",
"eslint": "9.39.2",
- "eslint-config-silverwind": "118.0.0",
+ "eslint-config-silverwind": "120.1.2",
+ "jest-extended": "7.0.0",
"typescript": "5.9.3",
"typescript-config-silverwind": "14.0.0",
"updates": "17.0.8",
@@ -35,4 +36,4 @@
"vitest": "4.0.18",
"vitest-config-silverwind": "10.6.1"
}
-}
+}
\ No newline at end of file
diff --git a/deps/npm/node_modules/is-fullwidth-code-point/index.js b/deps/npm/node_modules/is-fullwidth-code-point/index.js
deleted file mode 100644
index 671f97f7607790..00000000000000
--- a/deps/npm/node_modules/is-fullwidth-code-point/index.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/* eslint-disable yoda */
-'use strict';
-
-const isFullwidthCodePoint = codePoint => {
- if (Number.isNaN(codePoint)) {
- return false;
- }
-
- // Code points are derived from:
- // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
- if (
- codePoint >= 0x1100 && (
- codePoint <= 0x115F || // Hangul Jamo
- codePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET
- codePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET
- // CJK Radicals Supplement .. Enclosed CJK Letters and Months
- (0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||
- // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
- (0x3250 <= codePoint && codePoint <= 0x4DBF) ||
- // CJK Unified Ideographs .. Yi Radicals
- (0x4E00 <= codePoint && codePoint <= 0xA4C6) ||
- // Hangul Jamo Extended-A
- (0xA960 <= codePoint && codePoint <= 0xA97C) ||
- // Hangul Syllables
- (0xAC00 <= codePoint && codePoint <= 0xD7A3) ||
- // CJK Compatibility Ideographs
- (0xF900 <= codePoint && codePoint <= 0xFAFF) ||
- // Vertical Forms
- (0xFE10 <= codePoint && codePoint <= 0xFE19) ||
- // CJK Compatibility Forms .. Small Form Variants
- (0xFE30 <= codePoint && codePoint <= 0xFE6B) ||
- // Halfwidth and Fullwidth Forms
- (0xFF01 <= codePoint && codePoint <= 0xFF60) ||
- (0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||
- // Kana Supplement
- (0x1B000 <= codePoint && codePoint <= 0x1B001) ||
- // Enclosed Ideographic Supplement
- (0x1F200 <= codePoint && codePoint <= 0x1F251) ||
- // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
- (0x20000 <= codePoint && codePoint <= 0x3FFFD)
- )
- ) {
- return true;
- }
-
- return false;
-};
-
-module.exports = isFullwidthCodePoint;
-module.exports.default = isFullwidthCodePoint;
diff --git a/deps/npm/node_modules/is-fullwidth-code-point/license b/deps/npm/node_modules/is-fullwidth-code-point/license
deleted file mode 100644
index e7af2f77107d73..00000000000000
--- a/deps/npm/node_modules/is-fullwidth-code-point/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) Sindre Sorhus (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/deps/npm/node_modules/is-fullwidth-code-point/package.json b/deps/npm/node_modules/is-fullwidth-code-point/package.json
deleted file mode 100644
index 2137e888fa503d..00000000000000
--- a/deps/npm/node_modules/is-fullwidth-code-point/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "is-fullwidth-code-point",
- "version": "3.0.0",
- "description": "Check if the character represented by a given Unicode code point is fullwidth",
- "license": "MIT",
- "repository": "sindresorhus/is-fullwidth-code-point",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd-check"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "fullwidth",
- "full-width",
- "full",
- "width",
- "unicode",
- "character",
- "string",
- "codepoint",
- "code",
- "point",
- "is",
- "detect",
- "check"
- ],
- "devDependencies": {
- "ava": "^1.3.1",
- "tsd-check": "^0.5.0",
- "xo": "^0.24.0"
- }
-}
diff --git a/deps/npm/node_modules/isexe/LICENSE.md b/deps/npm/node_modules/isexe/LICENSE.md
new file mode 100644
index 00000000000000..c5402b9577a8cd
--- /dev/null
+++ b/deps/npm/node_modules/isexe/LICENSE.md
@@ -0,0 +1,55 @@
+# Blue Oak Model License
+
+Version 1.0.0
+
+## Purpose
+
+This license gives everyone as much permission to work with
+this software as possible, while protecting contributors
+from liability.
+
+## Acceptance
+
+In order to receive this license, you must agree to its
+rules. The rules of this license are both obligations
+under that agreement and conditions to your license.
+You must not do anything with this software that triggers
+a rule that you cannot or will not follow.
+
+## Copyright
+
+Each contributor licenses you to do everything with this
+software that would otherwise infringe that contributor's
+copyright in it.
+
+## Notices
+
+You must ensure that everyone who gets a copy of
+any part of this software from you, with or without
+changes, also gets the text of this license or a link to
+.
+
+## Excuse
+
+If anyone notifies you in writing that you have not
+complied with [Notices](#notices), you can keep your
+license by taking all practical steps to comply within 30
+days after the notice. If you do not do so, your license
+ends immediately.
+
+## Patent
+
+Each contributor licenses you to do everything with this
+software that would otherwise infringe any patent claims
+they can license or become able to license.
+
+## Reliability
+
+No contributor can revoke this license.
+
+## No Liability
+
+***As far as the law allows, this software comes as is,
+without any warranty or condition, and no contributor
+will be liable to anyone for any damages related to this
+software or this license, under any kind of legal claim.***
diff --git a/deps/npm/node_modules/isexe/dist/cjs/index.js b/deps/npm/node_modules/isexe/dist/commonjs/index.js
similarity index 70%
rename from deps/npm/node_modules/isexe/dist/cjs/index.js
rename to deps/npm/node_modules/isexe/dist/commonjs/index.js
index cefcb66b5c5434..71882e7b4d518e 100644
--- a/deps/npm/node_modules/isexe/dist/cjs/index.js
+++ b/deps/npm/node_modules/isexe/dist/commonjs/index.js
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
}) : function(o, v) {
o["default"] = v;
});
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
- __setModuleDefault(result, mod);
- return result;
-};
+var __importStar = (this && this.__importStar) || (function () {
+ var ownKeys = function(o) {
+ ownKeys = Object.getOwnPropertyNames || function (o) {
+ var ar = [];
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
+ return ar;
+ };
+ return ownKeys(o);
+ };
+ return function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
+ __setModuleDefault(result, mod);
+ return result;
+ };
+})();
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
diff --git a/deps/npm/node_modules/isexe/dist/commonjs/index.min.js b/deps/npm/node_modules/isexe/dist/commonjs/index.min.js
new file mode 100644
index 00000000000000..7cb0271bca0962
--- /dev/null
+++ b/deps/npm/node_modules/isexe/dist/commonjs/index.min.js
@@ -0,0 +1,2 @@
+"use strict";var a=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var _=a(i=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});i.sync=i.isexe=void 0;var M=require("node:fs"),x=require("node:fs/promises"),q=async(t,e={})=>{let{ignoreErrors:r=!1}=e;try{return d(await(0,x.stat)(t),e)}catch(s){let n=s;if(r||n.code==="EACCES")return!1;throw n}};i.isexe=q;var m=(t,e={})=>{let{ignoreErrors:r=!1}=e;try{return d((0,M.statSync)(t),e)}catch(s){let n=s;if(r||n.code==="EACCES")return!1;throw n}};i.sync=m;var d=(t,e)=>t.isFile()&&A(t,e),A=(t,e)=>{let r=e.uid??process.getuid?.(),s=e.groups??process.getgroups?.()??[],n=e.gid??process.getgid?.()??s[0];if(r===void 0||n===void 0)throw new Error("cannot get uid or gid");let u=new Set([n,...s]),c=t.mode,S=t.uid,P=t.gid,f=parseInt("100",8),l=parseInt("010",8),j=parseInt("001",8),C=f|l;return!!(c&j||c&l&&u.has(P)||c&f&&S===r||c&C&&r===0)}});var g=a(o=>{"use strict";Object.defineProperty(o,"__esModule",{value:!0});o.sync=o.isexe=void 0;var T=require("node:fs"),I=require("node:fs/promises"),D=require("node:path"),F=async(t,e={})=>{let{ignoreErrors:r=!1}=e;try{return y(await(0,I.stat)(t),t,e)}catch(s){let n=s;if(r||n.code==="EACCES")return!1;throw n}};o.isexe=F;var L=(t,e={})=>{let{ignoreErrors:r=!1}=e;try{return y((0,T.statSync)(t),t,e)}catch(s){let n=s;if(r||n.code==="EACCES")return!1;throw n}};o.sync=L;var B=(t,e)=>{let{pathExt:r=process.env.PATHEXT||""}=e,s=r.split(D.delimiter);if(s.indexOf("")!==-1)return!0;for(let n of s){let u=n.toLowerCase(),c=t.substring(t.length-u.length).toLowerCase();if(u&&c===u)return!0}return!1},y=(t,e,r)=>t.isFile()&&B(e,r)});var p=a(h=>{"use strict";Object.defineProperty(h,"__esModule",{value:!0})});var v=exports&&exports.__createBinding||(Object.create?(function(t,e,r,s){s===void 0&&(s=r);var n=Object.getOwnPropertyDescriptor(e,r);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,n)}):(function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]})),G=exports&&exports.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),w=exports&&exports.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(s[s.length]=n);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),n=0;n {
const { ignoreErrors = false } = options;
try {
- return checkStat((0, fs_1.statSync)(path), options);
+ return checkStat((0, node_fs_1.statSync)(path), options);
}
catch (e) {
const er = e;
diff --git a/deps/npm/node_modules/isexe/dist/cjs/win32.js b/deps/npm/node_modules/isexe/dist/commonjs/win32.js
similarity index 83%
rename from deps/npm/node_modules/isexe/dist/cjs/win32.js
rename to deps/npm/node_modules/isexe/dist/commonjs/win32.js
index fa7a4d2f7d240d..c1524a1d533481 100644
--- a/deps/npm/node_modules/isexe/dist/cjs/win32.js
+++ b/deps/npm/node_modules/isexe/dist/commonjs/win32.js
@@ -7,8 +7,9 @@
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.sync = exports.isexe = void 0;
-const fs_1 = require("fs");
-const promises_1 = require("fs/promises");
+const node_fs_1 = require("node:fs");
+const promises_1 = require("node:fs/promises");
+const node_path_1 = require("node:path");
/**
* Determine whether a path is executable based on the file extension
* and PATHEXT environment variable (or specified pathExt option)
@@ -33,7 +34,7 @@ exports.isexe = isexe;
const sync = (path, options = {}) => {
const { ignoreErrors = false } = options;
try {
- return checkStat((0, fs_1.statSync)(path), path, options);
+ return checkStat((0, node_fs_1.statSync)(path), path, options);
}
catch (e) {
const er = e;
@@ -45,12 +46,12 @@ const sync = (path, options = {}) => {
exports.sync = sync;
const checkPathExt = (path, options) => {
const { pathExt = process.env.PATHEXT || '' } = options;
- const peSplit = pathExt.split(';');
+ const peSplit = pathExt.split(node_path_1.delimiter);
if (peSplit.indexOf('') !== -1) {
return true;
}
- for (let i = 0; i < peSplit.length; i++) {
- const p = peSplit[i].toLowerCase();
+ for (const pes of peSplit) {
+ const p = pes.toLowerCase();
const ext = path.substring(path.length - p.length).toLowerCase();
if (p && ext === p) {
return true;
diff --git a/deps/npm/node_modules/isexe/dist/mjs/index.js b/deps/npm/node_modules/isexe/dist/esm/index.js
similarity index 100%
rename from deps/npm/node_modules/isexe/dist/mjs/index.js
rename to deps/npm/node_modules/isexe/dist/esm/index.js
diff --git a/deps/npm/node_modules/isexe/dist/esm/index.min.js b/deps/npm/node_modules/isexe/dist/esm/index.min.js
new file mode 100644
index 00000000000000..f3a6fc37d6c669
--- /dev/null
+++ b/deps/npm/node_modules/isexe/dist/esm/index.min.js
@@ -0,0 +1,2 @@
+var y=Object.defineProperty;var u=(t,r)=>{for(var e in r)y(t,e,{get:r[e],enumerable:!0})};var i={};u(i,{isexe:()=>C,sync:()=>A});import{statSync as w}from"node:fs";import{stat as S}from"node:fs/promises";var C=async(t,r={})=>{let{ignoreErrors:e=!1}=r;try{return d(await S(t),r)}catch(s){let o=s;if(e||o.code==="EACCES")return!1;throw o}},A=(t,r={})=>{let{ignoreErrors:e=!1}=r;try{return d(w(t),r)}catch(s){let o=s;if(e||o.code==="EACCES")return!1;throw o}},d=(t,r)=>t.isFile()&&T(t,r),T=(t,r)=>{let e=r.uid??process.getuid?.(),s=r.groups??process.getgroups?.()??[],o=r.gid??process.getgid?.()??s[0];if(e===void 0||o===void 0)throw new Error("cannot get uid or gid");let c=new Set([o,...s]),n=t.mode,l=t.uid,E=t.gid,f=parseInt("100",8),p=parseInt("010",8),x=parseInt("001",8),h=f|p;return!!(n&x||n&p&&c.has(E)||n&f&&l===e||n&h&&e===0)};var a={};u(a,{isexe:()=>F,sync:()=>L});import{statSync as k}from"node:fs";import{stat as I}from"node:fs/promises";import{delimiter as _}from"node:path";var F=async(t,r={})=>{let{ignoreErrors:e=!1}=r;try{return m(await I(t),t,r)}catch(s){let o=s;if(e||o.code==="EACCES")return!1;throw o}},L=(t,r={})=>{let{ignoreErrors:e=!1}=r;try{return m(k(t),t,r)}catch(s){let o=s;if(e||o.code==="EACCES")return!1;throw o}},P=(t,r)=>{let{pathExt:e=process.env.PATHEXT||""}=r,s=e.split(_);if(s.indexOf("")!==-1)return!0;for(let o of s){let c=o.toLowerCase(),n=t.substring(t.length-c.length).toLowerCase();if(c&&n===c)return!0}return!1},m=(t,r,e)=>t.isFile()&&P(r,e);var v=process.env._ISEXE_TEST_PLATFORM_||process.platform,g=v==="win32"?a:i,R=g.isexe,U=g.sync;export{R as isexe,i as posix,U as sync,a as win32};
+//# sourceMappingURL=index.min.js.map
diff --git a/deps/npm/node_modules/isexe/dist/mjs/options.js b/deps/npm/node_modules/isexe/dist/esm/options.js
similarity index 100%
rename from deps/npm/node_modules/isexe/dist/mjs/options.js
rename to deps/npm/node_modules/isexe/dist/esm/options.js
diff --git a/deps/npm/node_modules/isexe/dist/mjs/package.json b/deps/npm/node_modules/isexe/dist/esm/package.json
similarity index 100%
rename from deps/npm/node_modules/isexe/dist/mjs/package.json
rename to deps/npm/node_modules/isexe/dist/esm/package.json
diff --git a/deps/npm/node_modules/isexe/dist/mjs/posix.js b/deps/npm/node_modules/isexe/dist/esm/posix.js
similarity index 95%
rename from deps/npm/node_modules/isexe/dist/mjs/posix.js
rename to deps/npm/node_modules/isexe/dist/esm/posix.js
index c453776c0452f7..f1af6d51a402da 100644
--- a/deps/npm/node_modules/isexe/dist/mjs/posix.js
+++ b/deps/npm/node_modules/isexe/dist/esm/posix.js
@@ -4,8 +4,8 @@
*
* @module
*/
-import { statSync } from 'fs';
-import { stat } from 'fs/promises';
+import { statSync } from 'node:fs';
+import { stat } from 'node:fs/promises';
/**
* Determine whether a path is executable according to the mode and
* current (or specified) user and group IDs.
diff --git a/deps/npm/node_modules/isexe/dist/mjs/win32.js b/deps/npm/node_modules/isexe/dist/esm/win32.js
similarity index 86%
rename from deps/npm/node_modules/isexe/dist/mjs/win32.js
rename to deps/npm/node_modules/isexe/dist/esm/win32.js
index a354ee2a5115c7..2c75e67cdfaa2f 100644
--- a/deps/npm/node_modules/isexe/dist/mjs/win32.js
+++ b/deps/npm/node_modules/isexe/dist/esm/win32.js
@@ -4,8 +4,9 @@
*
* @module
*/
-import { statSync } from 'fs';
-import { stat } from 'fs/promises';
+import { statSync } from 'node:fs';
+import { stat } from 'node:fs/promises';
+import { delimiter } from 'node:path';
/**
* Determine whether a path is executable based on the file extension
* and PATHEXT environment variable (or specified pathExt option)
@@ -40,12 +41,12 @@ export const sync = (path, options = {}) => {
};
const checkPathExt = (path, options) => {
const { pathExt = process.env.PATHEXT || '' } = options;
- const peSplit = pathExt.split(';');
+ const peSplit = pathExt.split(delimiter);
if (peSplit.indexOf('') !== -1) {
return true;
}
- for (let i = 0; i < peSplit.length; i++) {
- const p = peSplit[i].toLowerCase();
+ for (const pes of peSplit) {
+ const p = pes.toLowerCase();
const ext = path.substring(path.length - p.length).toLowerCase();
if (p && ext === p) {
return true;
diff --git a/deps/npm/node_modules/isexe/package.json b/deps/npm/node_modules/isexe/package.json
index a0e2cd04bfdbfe..31c05fa303078e 100644
--- a/deps/npm/node_modules/isexe/package.json
+++ b/deps/npm/node_modules/isexe/package.json
@@ -1,96 +1,78 @@
{
"name": "isexe",
- "version": "3.1.1",
+ "version": "4.0.0",
"description": "Minimal module to check if a file is executable.",
- "main": "./dist/cjs/index.js",
- "module": "./dist/mjs/index.js",
- "types": "./dist/cjs/index.js",
+ "main": "./dist/commonjs/index.min.js",
+ "module": "./dist/esm/index.min.js",
+ "types": "./dist/commonjs/index.d.ts",
"files": [
"dist"
],
- "exports": {
- ".": {
- "import": {
- "types": "./dist/mjs/index.d.ts",
- "default": "./dist/mjs/index.js"
- },
- "require": {
- "types": "./dist/cjs/index.d.ts",
- "default": "./dist/cjs/index.js"
+ "tshy": {
+ "selfLink": false,
+ "exports": {
+ "./raw": "./src/index.ts",
+ "./package.json": "./package.json",
+ ".": {
+ "import": {
+ "types": "./dist/esm/index.d.ts",
+ "default": "./dist/esm/index.min.js"
+ },
+ "require": {
+ "types": "./dist/commonjs/index.d.ts",
+ "default": "./dist/commonjs/index.min.js"
+ }
}
- },
- "./posix": {
+ }
+ },
+ "exports": {
+ "./raw": {
"import": {
- "types": "./dist/mjs/posix.d.ts",
- "default": "./dist/mjs/posix.js"
+ "types": "./dist/esm/index.d.ts",
+ "default": "./dist/esm/index.js"
},
"require": {
- "types": "./dist/cjs/posix.d.ts",
- "default": "./dist/cjs/posix.js"
+ "types": "./dist/commonjs/index.d.ts",
+ "default": "./dist/commonjs/index.js"
}
},
- "./win32": {
+ "./package.json": "./package.json",
+ ".": {
"import": {
- "types": "./dist/mjs/win32.d.ts",
- "default": "./dist/mjs/win32.js"
+ "types": "./dist/esm/index.d.ts",
+ "default": "./dist/esm/index.min.js"
},
"require": {
- "types": "./dist/cjs/win32.d.ts",
- "default": "./dist/cjs/win32.js"
+ "types": "./dist/commonjs/index.d.ts",
+ "default": "./dist/commonjs/index.min.js"
}
- },
- "./package.json": "./package.json"
+ }
},
"devDependencies": {
- "@types/node": "^20.4.5",
- "@types/tap": "^15.0.8",
- "c8": "^8.0.1",
- "mkdirp": "^0.5.1",
- "prettier": "^2.8.8",
- "rimraf": "^2.5.0",
- "sync-content": "^1.0.2",
- "tap": "^16.3.8",
- "ts-node": "^10.9.1",
- "typedoc": "^0.24.8",
- "typescript": "^5.1.6"
+ "@types/node": "^25.2.1",
+ "esbuild": "^0.27.3",
+ "prettier": "^3.8.1",
+ "tap": "^21.5.1",
+ "tshy": "^3.1.3",
+ "typedoc": "^0.28.16"
},
"scripts": {
"preversion": "npm test",
"postversion": "npm publish",
"prepublishOnly": "git push origin --follow-tags",
- "prepare": "tsc -p tsconfig/cjs.json && tsc -p tsconfig/esm.json && bash ./scripts/fixup.sh",
+ "prepare": "tshy && bash build.sh",
"pretest": "npm run prepare",
"presnap": "npm run prepare",
- "test": "c8 tap",
- "snap": "c8 tap",
- "format": "prettier --write . --loglevel warn --ignore-path ../../.prettierignore --cache",
- "typedoc": "typedoc --tsconfig tsconfig/esm.json ./src/*.ts"
+ "test": "tap",
+ "snap": "tap",
+ "format": "prettier --write .",
+ "typedoc": "typedoc"
},
"author": "Isaac Z. Schlueter (http://blog.izs.me/)",
- "license": "ISC",
- "tap": {
- "coverage": false,
- "node-arg": [
- "--enable-source-maps",
- "--no-warnings",
- "--loader",
- "ts-node/esm"
- ],
- "ts": false
- },
- "prettier": {
- "semi": false,
- "printWidth": 75,
- "tabWidth": 2,
- "useTabs": false,
- "singleQuote": true,
- "jsxSingleQuote": false,
- "bracketSameLine": true,
- "arrowParens": "avoid",
- "endOfLine": "lf"
- },
+ "license": "BlueOak-1.0.0",
"repository": "https://github.com/isaacs/isexe",
"engines": {
- "node": ">=16"
- }
+ "node": ">=20"
+ },
+ "type": "module"
}
diff --git a/deps/npm/node_modules/libnpmaccess/package.json b/deps/npm/node_modules/libnpmaccess/package.json
index b9ef72d8384606..6b250a69ede19d 100644
--- a/deps/npm/node_modules/libnpmaccess/package.json
+++ b/deps/npm/node_modules/libnpmaccess/package.json
@@ -18,7 +18,7 @@
"devDependencies": {
"@npmcli/eslint-config": "^5.0.1",
"@npmcli/mock-registry": "^1.0.0",
- "@npmcli/template-oss": "4.25.1",
+ "@npmcli/template-oss": "4.29.0",
"tap": "^16.3.8"
},
"repository": {
@@ -41,7 +41,7 @@
],
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.25.1",
+ "version": "4.29.0",
"content": "../../scripts/template-oss/index.js"
},
"tap": {
diff --git a/deps/npm/node_modules/libnpmdiff/package.json b/deps/npm/node_modules/libnpmdiff/package.json
index 08437c6b874a66..c2a14dedcbef4c 100644
--- a/deps/npm/node_modules/libnpmdiff/package.json
+++ b/deps/npm/node_modules/libnpmdiff/package.json
@@ -1,6 +1,6 @@
{
"name": "libnpmdiff",
- "version": "8.1.0",
+ "version": "8.1.3",
"description": "The registry diff",
"repository": {
"type": "git",
@@ -43,11 +43,11 @@
},
"devDependencies": {
"@npmcli/eslint-config": "^5.0.1",
- "@npmcli/template-oss": "4.25.1",
+ "@npmcli/template-oss": "4.29.0",
"tap": "^16.3.8"
},
"dependencies": {
- "@npmcli/arborist": "^9.2.0",
+ "@npmcli/arborist": "^9.4.0",
"@npmcli/installed-package-contents": "^4.0.0",
"binary-extensions": "^3.0.0",
"diff": "^8.0.2",
@@ -58,7 +58,7 @@
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.25.1",
+ "version": "4.29.0",
"content": "../../scripts/template-oss/index.js"
},
"tap": {
diff --git a/deps/npm/node_modules/libnpmexec/lib/with-lock.js b/deps/npm/node_modules/libnpmexec/lib/with-lock.js
index c7ba531ca5484d..f6cc381c146026 100644
--- a/deps/npm/node_modules/libnpmexec/lib/with-lock.js
+++ b/deps/npm/node_modules/libnpmexec/lib/with-lock.js
@@ -1,6 +1,6 @@
const fs = require('node:fs/promises')
const { rmdirSync } = require('node:fs')
-const promiseRetry = require('promise-retry')
+const { promiseRetry } = require('@gar/promise-retry')
const { onExit } = require('signal-exit')
// a lockfile implementation inspired by the unmaintained proper-lockfile library
@@ -67,12 +67,7 @@ async function withLock (lockPath, cb) {
}
function acquireLock (lockPath) {
- return promiseRetry({
- minTimeout: 100,
- maxTimeout: 5_000,
- // if another process legitimately holds the lock, wait for it to release; if it dies abnormally and the lock becomes stale, we'll acquire it automatically
- forever: true,
- }, async (retry) => {
+ return promiseRetry(async (retry) => {
try {
await fs.mkdir(lockPath)
} catch (err) {
@@ -107,6 +102,11 @@ function acquireLock (lockPath) {
} catch (err) {
throw Object.assign(new Error('Lock compromised'), { code: 'ECOMPROMISED' })
}
+ }, {
+ minTimeout: 100,
+ maxTimeout: 5_000,
+ // if another process legitimately holds the lock, wait for it to release; if it dies abnormally and the lock becomes stale, we'll acquire it automatically
+ forever: true,
})
}
diff --git a/deps/npm/node_modules/libnpmexec/package.json b/deps/npm/node_modules/libnpmexec/package.json
index f868e129482fcf..99c11b81bc2d84 100644
--- a/deps/npm/node_modules/libnpmexec/package.json
+++ b/deps/npm/node_modules/libnpmexec/package.json
@@ -1,6 +1,6 @@
{
"name": "libnpmexec",
- "version": "10.2.0",
+ "version": "10.2.3",
"files": [
"bin/",
"lib/"
@@ -52,7 +52,7 @@
"devDependencies": {
"@npmcli/eslint-config": "^5.0.1",
"@npmcli/mock-registry": "^1.0.0",
- "@npmcli/template-oss": "4.25.1",
+ "@npmcli/template-oss": "4.29.0",
"bin-links": "^6.0.0",
"chalk": "^5.2.0",
"just-extend": "^6.2.0",
@@ -60,14 +60,14 @@
"tap": "^16.3.8"
},
"dependencies": {
- "@npmcli/arborist": "^9.2.0",
+ "@gar/promise-retry": "^1.0.0",
+ "@npmcli/arborist": "^9.4.0",
"@npmcli/package-json": "^7.0.0",
"@npmcli/run-script": "^10.0.0",
"ci-info": "^4.0.0",
"npm-package-arg": "^13.0.0",
"pacote": "^21.0.2",
"proc-log": "^6.0.0",
- "promise-retry": "^2.0.1",
"read": "^5.0.1",
"semver": "^7.3.7",
"signal-exit": "^4.1.0",
@@ -75,7 +75,7 @@
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.25.1",
+ "version": "4.29.0",
"content": "../../scripts/template-oss/index.js"
}
}
diff --git a/deps/npm/node_modules/libnpmfund/package.json b/deps/npm/node_modules/libnpmfund/package.json
index a5c3305fb7cc6c..2e8a755b8d0b50 100644
--- a/deps/npm/node_modules/libnpmfund/package.json
+++ b/deps/npm/node_modules/libnpmfund/package.json
@@ -1,6 +1,6 @@
{
"name": "libnpmfund",
- "version": "7.0.14",
+ "version": "7.0.17",
"main": "lib/index.js",
"files": [
"bin/",
@@ -42,18 +42,18 @@
},
"devDependencies": {
"@npmcli/eslint-config": "^5.0.1",
- "@npmcli/template-oss": "4.25.1",
+ "@npmcli/template-oss": "4.29.0",
"tap": "^16.3.8"
},
"dependencies": {
- "@npmcli/arborist": "^9.2.0"
+ "@npmcli/arborist": "^9.4.0"
},
"engines": {
"node": "^20.17.0 || >=22.9.0"
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.25.1",
+ "version": "4.29.0",
"content": "../../scripts/template-oss/index.js"
},
"tap": {
diff --git a/deps/npm/node_modules/libnpmorg/package.json b/deps/npm/node_modules/libnpmorg/package.json
index 9a20ccaf4196fe..0df17f3c1a1322 100644
--- a/deps/npm/node_modules/libnpmorg/package.json
+++ b/deps/npm/node_modules/libnpmorg/package.json
@@ -29,7 +29,7 @@
],
"devDependencies": {
"@npmcli/eslint-config": "^5.0.1",
- "@npmcli/template-oss": "4.25.1",
+ "@npmcli/template-oss": "4.29.0",
"minipass": "^7.1.1",
"nock": "^13.3.3",
"tap": "^16.3.8"
@@ -50,7 +50,7 @@
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.25.1",
+ "version": "4.29.0",
"content": "../../scripts/template-oss/index.js"
},
"tap": {
diff --git a/deps/npm/node_modules/libnpmpack/package.json b/deps/npm/node_modules/libnpmpack/package.json
index efd125aed5db8e..cf0822a7775fc9 100644
--- a/deps/npm/node_modules/libnpmpack/package.json
+++ b/deps/npm/node_modules/libnpmpack/package.json
@@ -1,6 +1,6 @@
{
"name": "libnpmpack",
- "version": "9.1.0",
+ "version": "9.1.3",
"description": "Programmatic API for the bits behind npm pack",
"author": "GitHub Inc.",
"main": "lib/index.js",
@@ -24,7 +24,7 @@
},
"devDependencies": {
"@npmcli/eslint-config": "^5.0.1",
- "@npmcli/template-oss": "4.25.1",
+ "@npmcli/template-oss": "4.29.0",
"nock": "^13.3.3",
"spawk": "^1.7.1",
"tap": "^16.3.8"
@@ -37,7 +37,7 @@
"bugs": "https://github.com/npm/libnpmpack/issues",
"homepage": "https://npmjs.com/package/libnpmpack",
"dependencies": {
- "@npmcli/arborist": "^9.2.0",
+ "@npmcli/arborist": "^9.4.0",
"@npmcli/run-script": "^10.0.0",
"npm-package-arg": "^13.0.0",
"pacote": "^21.0.2"
@@ -47,7 +47,7 @@
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.25.1",
+ "version": "4.29.0",
"content": "../../scripts/template-oss/index.js"
},
"tap": {
diff --git a/deps/npm/node_modules/libnpmpublish/package.json b/deps/npm/node_modules/libnpmpublish/package.json
index 65a4ae3c11d0ce..f90a6bf4506ecd 100644
--- a/deps/npm/node_modules/libnpmpublish/package.json
+++ b/deps/npm/node_modules/libnpmpublish/package.json
@@ -27,7 +27,7 @@
"@npmcli/eslint-config": "^5.0.1",
"@npmcli/mock-globals": "^1.0.0",
"@npmcli/mock-registry": "^1.0.0",
- "@npmcli/template-oss": "4.25.1",
+ "@npmcli/template-oss": "4.29.0",
"tap": "^16.3.8"
},
"repository": {
@@ -52,7 +52,7 @@
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.25.1",
+ "version": "4.29.0",
"content": "../../scripts/template-oss/index.js"
},
"tap": {
diff --git a/deps/npm/node_modules/libnpmsearch/package.json b/deps/npm/node_modules/libnpmsearch/package.json
index 375025e70e29b2..e17ac5ab98f682 100644
--- a/deps/npm/node_modules/libnpmsearch/package.json
+++ b/deps/npm/node_modules/libnpmsearch/package.json
@@ -27,7 +27,7 @@
},
"devDependencies": {
"@npmcli/eslint-config": "^5.0.1",
- "@npmcli/template-oss": "4.25.1",
+ "@npmcli/template-oss": "4.29.0",
"nock": "^13.3.3",
"tap": "^16.3.8"
},
@@ -46,7 +46,7 @@
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.25.1",
+ "version": "4.29.0",
"content": "../../scripts/template-oss/index.js"
},
"tap": {
diff --git a/deps/npm/node_modules/libnpmteam/package.json b/deps/npm/node_modules/libnpmteam/package.json
index 6f1f0661b3857d..0531259b3e766b 100644
--- a/deps/npm/node_modules/libnpmteam/package.json
+++ b/deps/npm/node_modules/libnpmteam/package.json
@@ -17,7 +17,7 @@
},
"devDependencies": {
"@npmcli/eslint-config": "^5.0.1",
- "@npmcli/template-oss": "4.25.1",
+ "@npmcli/template-oss": "4.29.0",
"nock": "^13.3.3",
"tap": "^16.3.8"
},
@@ -40,7 +40,7 @@
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.25.1",
+ "version": "4.29.0",
"content": "../../scripts/template-oss/index.js"
},
"tap": {
diff --git a/deps/npm/node_modules/libnpmversion/package.json b/deps/npm/node_modules/libnpmversion/package.json
index e80966b6aeeb8c..cac11cc36bd385 100644
--- a/deps/npm/node_modules/libnpmversion/package.json
+++ b/deps/npm/node_modules/libnpmversion/package.json
@@ -33,7 +33,7 @@
},
"devDependencies": {
"@npmcli/eslint-config": "^5.0.1",
- "@npmcli/template-oss": "4.25.1",
+ "@npmcli/template-oss": "4.29.0",
"require-inject": "^1.4.4",
"tap": "^16.3.8"
},
@@ -49,7 +49,7 @@
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.25.1",
+ "version": "4.29.0",
"content": "../../scripts/template-oss/index.js"
}
}
diff --git a/deps/npm/node_modules/lru-cache/package.json b/deps/npm/node_modules/lru-cache/package.json
index 5b271f0dda7aee..1554184f053da4 100644
--- a/deps/npm/node_modules/lru-cache/package.json
+++ b/deps/npm/node_modules/lru-cache/package.json
@@ -1,7 +1,7 @@
{
"name": "lru-cache",
"description": "A cache object that deletes the least-recently-used items.",
- "version": "11.2.5",
+ "version": "11.2.6",
"author": "Isaac Z. Schlueter ",
"keywords": [
"mru",
@@ -27,12 +27,12 @@
"preprofile": "npm run prepare",
"profile": "make -C benchmark profile"
},
- "main": "./dist/commonjs/index.js",
+ "main": "./dist/commonjs/index.min.js",
"types": "./dist/commonjs/index.d.ts",
"tshy": {
"exports": {
- ".": "./src/index.ts",
- "./min": {
+ "./raw": "./src/index.ts",
+ ".": {
"import": {
"types": "./dist/esm/index.d.ts",
"default": "./dist/esm/index.min.js"
@@ -75,7 +75,7 @@
]
},
"exports": {
- ".": {
+ "./raw": {
"import": {
"types": "./dist/esm/index.d.ts",
"default": "./dist/esm/index.js"
@@ -85,7 +85,7 @@
"default": "./dist/commonjs/index.js"
}
},
- "./min": {
+ ".": {
"import": {
"types": "./dist/esm/index.d.ts",
"default": "./dist/esm/index.min.js"
@@ -97,5 +97,5 @@
}
},
"type": "module",
- "module": "./dist/esm/index.js"
+ "module": "./dist/esm/index.min.js"
}
diff --git a/deps/npm/node_modules/make-fetch-happen/lib/remote.js b/deps/npm/node_modules/make-fetch-happen/lib/remote.js
index 1d640e5380baaf..5dd17c58b28a22 100644
--- a/deps/npm/node_modules/make-fetch-happen/lib/remote.js
+++ b/deps/npm/node_modules/make-fetch-happen/lib/remote.js
@@ -1,6 +1,6 @@
const { Minipass } = require('minipass')
const fetch = require('minipass-fetch')
-const promiseRetry = require('promise-retry')
+const { promiseRetry } = require('@gar/promise-retry')
const ssri = require('ssri')
const { log } = require('proc-log')
diff --git a/deps/npm/node_modules/make-fetch-happen/package.json b/deps/npm/node_modules/make-fetch-happen/package.json
index 203b32304c461c..5090b5042756fe 100644
--- a/deps/npm/node_modules/make-fetch-happen/package.json
+++ b/deps/npm/node_modules/make-fetch-happen/package.json
@@ -1,6 +1,6 @@
{
"name": "make-fetch-happen",
- "version": "15.0.3",
+ "version": "15.0.4",
"description": "Opinionated, caching, retrying fetch client",
"main": "lib/index.js",
"files": [
@@ -33,6 +33,7 @@
"author": "GitHub Inc.",
"license": "ISC",
"dependencies": {
+ "@gar/promise-retry": "^1.0.0",
"@npmcli/agent": "^4.0.0",
"cacache": "^20.0.1",
"http-cache-semantics": "^4.1.1",
@@ -42,7 +43,6 @@
"minipass-pipeline": "^1.2.4",
"negotiator": "^1.0.0",
"proc-log": "^6.0.0",
- "promise-retry": "^2.0.1",
"ssri": "^13.0.0"
},
"devDependencies": {
diff --git a/deps/npm/node_modules/minimatch/dist/commonjs/ast.js b/deps/npm/node_modules/minimatch/dist/commonjs/ast.js
index 997343fbd1eab1..909b2daa0517dc 100644
--- a/deps/npm/node_modules/minimatch/dist/commonjs/ast.js
+++ b/deps/npm/node_modules/minimatch/dist/commonjs/ast.js
@@ -122,7 +122,8 @@ class AST {
if (p === '')
continue;
/* c8 ignore start */
- if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {
+ if (typeof p !== 'string' &&
+ !(p instanceof AST && p.#parent === this)) {
throw new Error('invalid part: ' + p);
}
/* c8 ignore stop */
@@ -130,8 +131,10 @@ class AST {
}
}
toJSON() {
- const ret = this.type === null
- ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))
+ const ret = this.type === null ?
+ this.#parts
+ .slice()
+ .map(p => (typeof p === 'string' ? p : p.toJSON()))
: [this.type, ...this.#parts.map(p => p.toJSON())];
if (this.isStart() && !this.type)
ret.unshift([]);
@@ -420,8 +423,8 @@ class AST {
!this.#parts.some(s => typeof s !== 'string');
const src = this.#parts
.map(p => {
- const [re, _, hasMagic, uflag] = typeof p === 'string'
- ? AST.#parseGlob(p, this.#hasMagic, noEmpty)
+ const [re, _, hasMagic, uflag] = typeof p === 'string' ?
+ AST.#parseGlob(p, this.#hasMagic, noEmpty)
: p.toRegExpSource(allowDot);
this.#hasMagic = this.#hasMagic || hasMagic;
this.#uflag = this.#uflag || uflag;
@@ -450,7 +453,10 @@ class AST {
// no need to prevent dots if it can't match a dot, or if a
// sub-pattern will be preventing it anyway.
const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));
- start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';
+ start =
+ needNoTrav ? startNoTraversal
+ : needNoDot ? startNoDot
+ : '';
}
}
}
@@ -486,8 +492,8 @@ class AST {
return [s, (0, unescape_js_1.unescape)(this.toString()), false, false];
}
// XXX abstract out this map method
- let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot
- ? ''
+ let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ?
+ ''
: this.#partsToRegExp(true);
if (bodyDotAllowed === body) {
bodyDotAllowed = '';
@@ -501,20 +507,16 @@ class AST {
final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;
}
else {
- const close = this.type === '!'
- ? // !() must match something,but !(x) can match ''
- '))' +
- (this.isStart() && !dot && !allowDot ? startNoDot : '') +
- star +
- ')'
- : this.type === '@'
- ? ')'
- : this.type === '?'
- ? ')?'
- : this.type === '+' && bodyDotAllowed
- ? ')'
- : this.type === '*' && bodyDotAllowed
- ? `)?`
+ const close = this.type === '!' ?
+ // !() must match something,but !(x) can match ''
+ '))' +
+ (this.isStart() && !dot && !allowDot ? startNoDot : '') +
+ star +
+ ')'
+ : this.type === '@' ? ')'
+ : this.type === '?' ? ')?'
+ : this.type === '+' && bodyDotAllowed ? ')'
+ : this.type === '*' && bodyDotAllowed ? `)?`
: `)${this.type}`;
final = start + body + close;
}
@@ -546,6 +548,8 @@ class AST {
let escaping = false;
let re = '';
let uflag = false;
+ // multiple stars that aren't globstars coalesce into one *
+ let inStar = false;
for (let i = 0; i < glob.length; i++) {
const c = glob.charAt(i);
if (escaping) {
@@ -553,6 +557,17 @@ class AST {
re += (reSpecials.has(c) ? '\\' : '') + c;
continue;
}
+ if (c === '*') {
+ if (inStar)
+ continue;
+ inStar = true;
+ re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;
+ hasMagic = true;
+ continue;
+ }
+ else {
+ inStar = false;
+ }
if (c === '\\') {
if (i === glob.length - 1) {
re += '\\\\';
@@ -572,11 +587,6 @@ class AST {
continue;
}
}
- if (c === '*') {
- re += noEmpty && glob === '*' ? starNoEmpty : star;
- hasMagic = true;
- continue;
- }
if (c === '?') {
re += qmark;
hasMagic = true;
diff --git a/deps/npm/node_modules/minimatch/dist/commonjs/brace-expressions.js b/deps/npm/node_modules/minimatch/dist/commonjs/brace-expressions.js
index 0e13eefc4cfee2..2b7b03712b874e 100644
--- a/deps/npm/node_modules/minimatch/dist/commonjs/brace-expressions.js
+++ b/deps/npm/node_modules/minimatch/dist/commonjs/brace-expressions.js
@@ -141,10 +141,8 @@ const parseClass = (glob, position) => {
}
const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';
const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';
- const comb = ranges.length && negs.length
- ? '(' + sranges + '|' + snegs + ')'
- : ranges.length
- ? sranges
+ const comb = ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')'
+ : ranges.length ? sranges
: snegs;
return [comb, uflag, endPos - pos, true];
};
diff --git a/deps/npm/node_modules/minimatch/dist/commonjs/escape.js b/deps/npm/node_modules/minimatch/dist/commonjs/escape.js
index 6fb634fb41033c..83a713a2550770 100644
--- a/deps/npm/node_modules/minimatch/dist/commonjs/escape.js
+++ b/deps/npm/node_modules/minimatch/dist/commonjs/escape.js
@@ -18,12 +18,12 @@ const escape = (s, { windowsPathsNoEscape = false, magicalBraces = false, } = {}
// that make those magic, and escaping ! as [!] isn't valid,
// because [!]] is a valid glob class meaning not ']'.
if (magicalBraces) {
- return windowsPathsNoEscape
- ? s.replace(/[?*()[\]{}]/g, '[$&]')
+ return windowsPathsNoEscape ?
+ s.replace(/[?*()[\]{}]/g, '[$&]')
: s.replace(/[?*()[\]\\{}]/g, '\\$&');
}
- return windowsPathsNoEscape
- ? s.replace(/[?*()[\]]/g, '[$&]')
+ return windowsPathsNoEscape ?
+ s.replace(/[?*()[\]]/g, '[$&]')
: s.replace(/[?*()[\]\\]/g, '\\$&');
};
exports.escape = escape;
diff --git a/deps/npm/node_modules/minimatch/dist/commonjs/index.js b/deps/npm/node_modules/minimatch/dist/commonjs/index.js
index 966dc9b8bb2165..5a0ba2a87fb036 100644
--- a/deps/npm/node_modules/minimatch/dist/commonjs/index.js
+++ b/deps/npm/node_modules/minimatch/dist/commonjs/index.js
@@ -1,7 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.unescape = exports.escape = exports.AST = exports.Minimatch = exports.match = exports.makeRe = exports.braceExpand = exports.defaults = exports.filter = exports.GLOBSTAR = exports.sep = exports.minimatch = void 0;
-const brace_expansion_1 = require("@isaacs/brace-expansion");
+const brace_expansion_1 = require("brace-expansion");
const assert_valid_pattern_js_1 = require("./assert-valid-pattern.js");
const ast_js_1 = require("./ast.js");
const escape_js_1 = require("./escape.js");
@@ -67,8 +67,8 @@ const qmarksTestNoExtDot = ([$0]) => {
return (f) => f.length === len && f !== '.' && f !== '..';
};
/* c8 ignore start */
-const defaultPlatform = (typeof process === 'object' && process
- ? (typeof process.env === 'object' &&
+const defaultPlatform = (typeof process === 'object' && process ?
+ (typeof process.env === 'object' &&
process.env &&
process.env.__MINIMATCH_TESTING_PLATFORM__) ||
process.platform
@@ -154,7 +154,7 @@ const braceExpand = (pattern, options = {}) => {
// shortcut. no need to expand.
return [pattern];
}
- return (0, brace_expansion_1.expand)(pattern);
+ return (0, brace_expansion_1.expand)(pattern, { max: options.braceExpandMax });
};
exports.braceExpand = braceExpand;
exports.minimatch.braceExpand = exports.braceExpand;
@@ -210,8 +210,10 @@ class Minimatch {
this.pattern = pattern;
this.platform = options.platform || defaultPlatform;
this.isWindows = this.platform === 'win32';
+ // avoid the annoying deprecation flag lol
+ const awe = ('allowWindow' + 'sEscape');
this.windowsPathsNoEscape =
- !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;
+ !!options.windowsPathsNoEscape || options[awe] === false;
if (this.windowsPathsNoEscape) {
this.pattern = this.pattern.replace(/\\/g, '/');
}
@@ -224,8 +226,8 @@ class Minimatch {
this.partial = !!options.partial;
this.nocase = !!this.options.nocase;
this.windowsNoMagicRoot =
- options.windowsNoMagicRoot !== undefined
- ? options.windowsNoMagicRoot
+ options.windowsNoMagicRoot !== undefined ?
+ options.windowsNoMagicRoot
: !!(this.isWindows && this.nocase);
this.globSet = [];
this.globParts = [];
@@ -288,7 +290,10 @@ class Minimatch {
!globMagic.test(s[3]);
const isDrive = /^[a-z]:/i.test(s[0]);
if (isUNC) {
- return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];
+ return [
+ ...s.slice(0, 4),
+ ...s.slice(4).map(ss => this.parse(ss)),
+ ];
}
else if (isDrive) {
return [s[0], ...s.slice(1).map(ss => this.parse(ss))];
@@ -320,7 +325,7 @@ class Minimatch {
// to the right as possible, even if it increases the number
// of patterns that we have to process.
preprocess(globParts) {
- // if we're not in globstar mode, then turn all ** into *
+ // if we're not in globstar mode, then turn ** into *
if (this.options.noglobstar) {
for (let i = 0; i < globParts.length; i++) {
for (let j = 0; j < globParts[i].length; j++) {
@@ -624,10 +629,17 @@ class Minimatch {
pattern[2] === '?' &&
typeof pattern[3] === 'string' &&
/^[a-z]:$/i.test(pattern[3]);
- const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;
- const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;
+ const fdi = fileUNC ? 3
+ : fileDrive ? 0
+ : undefined;
+ const pdi = patternUNC ? 3
+ : patternDrive ? 0
+ : undefined;
if (typeof fdi === 'number' && typeof pdi === 'number') {
- const [fd, pd] = [file[fdi], pattern[pdi]];
+ const [fd, pd] = [
+ file[fdi],
+ pattern[pdi],
+ ];
if (fd.toLowerCase() === pd.toLowerCase()) {
pattern[pdi] = fd;
if (pdi > fdi) {
@@ -808,21 +820,19 @@ class Minimatch {
fastTest = options.dot ? starTestDot : starTest;
}
else if ((m = pattern.match(starDotExtRE))) {
- fastTest = (options.nocase
- ? options.dot
- ? starDotExtTestNocaseDot
+ fastTest = (options.nocase ?
+ options.dot ?
+ starDotExtTestNocaseDot
: starDotExtTestNocase
- : options.dot
- ? starDotExtTestDot
+ : options.dot ? starDotExtTestDot
: starDotExtTest)(m[1]);
}
else if ((m = pattern.match(qmarksRE))) {
- fastTest = (options.nocase
- ? options.dot
- ? qmarksTestNocaseDot
+ fastTest = (options.nocase ?
+ options.dot ?
+ qmarksTestNocaseDot
: qmarksTestNocase
- : options.dot
- ? qmarksTestDot
+ : options.dot ? qmarksTestDot
: qmarksTest)(m);
}
else if ((m = pattern.match(starDotStarRE))) {
@@ -853,10 +863,8 @@ class Minimatch {
return this.regexp;
}
const options = this.options;
- const twoStar = options.noglobstar
- ? star
- : options.dot
- ? twoStarDot
+ const twoStar = options.noglobstar ? star
+ : options.dot ? twoStarDot
: twoStarNoDot;
const flags = new Set(options.nocase ? ['i'] : []);
// regexpify non-globstar patterns
@@ -872,11 +880,9 @@ class Minimatch {
for (const f of p.flags.split(''))
flags.add(f);
}
- return typeof p === 'string'
- ? regExpEscape(p)
- : p === exports.GLOBSTAR
- ? exports.GLOBSTAR
- : p._src;
+ return (typeof p === 'string' ? regExpEscape(p)
+ : p === exports.GLOBSTAR ? exports.GLOBSTAR
+ : p._src);
});
pp.forEach((p, i) => {
const next = pp[i + 1];
diff --git a/deps/npm/node_modules/minimatch/dist/commonjs/unescape.js b/deps/npm/node_modules/minimatch/dist/commonjs/unescape.js
index 171098d8a4ceb5..db8d0c847d21b1 100644
--- a/deps/npm/node_modules/minimatch/dist/commonjs/unescape.js
+++ b/deps/npm/node_modules/minimatch/dist/commonjs/unescape.js
@@ -22,14 +22,14 @@ exports.unescape = void 0;
*/
const unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true, } = {}) => {
if (magicalBraces) {
- return windowsPathsNoEscape
- ? s.replace(/\[([^\/\\])\]/g, '$1')
+ return windowsPathsNoEscape ?
+ s.replace(/\[([^\/\\])\]/g, '$1')
: s
.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2')
.replace(/\\([^\/])/g, '$1');
}
- return windowsPathsNoEscape
- ? s.replace(/\[([^\/\\{}])\]/g, '$1')
+ return windowsPathsNoEscape ?
+ s.replace(/\[([^\/\\{}])\]/g, '$1')
: s
.replace(/((?!\\).|^)\[([^\/\\{}])\]/g, '$1$2')
.replace(/\\([^\/{}])/g, '$1');
diff --git a/deps/npm/node_modules/minimatch/dist/esm/ast.js b/deps/npm/node_modules/minimatch/dist/esm/ast.js
index 0ae609ad10d519..bcc9d72b0f9cc0 100644
--- a/deps/npm/node_modules/minimatch/dist/esm/ast.js
+++ b/deps/npm/node_modules/minimatch/dist/esm/ast.js
@@ -119,7 +119,8 @@ export class AST {
if (p === '')
continue;
/* c8 ignore start */
- if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {
+ if (typeof p !== 'string' &&
+ !(p instanceof AST && p.#parent === this)) {
throw new Error('invalid part: ' + p);
}
/* c8 ignore stop */
@@ -127,8 +128,10 @@ export class AST {
}
}
toJSON() {
- const ret = this.type === null
- ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))
+ const ret = this.type === null ?
+ this.#parts
+ .slice()
+ .map(p => (typeof p === 'string' ? p : p.toJSON()))
: [this.type, ...this.#parts.map(p => p.toJSON())];
if (this.isStart() && !this.type)
ret.unshift([]);
@@ -417,8 +420,8 @@ export class AST {
!this.#parts.some(s => typeof s !== 'string');
const src = this.#parts
.map(p => {
- const [re, _, hasMagic, uflag] = typeof p === 'string'
- ? AST.#parseGlob(p, this.#hasMagic, noEmpty)
+ const [re, _, hasMagic, uflag] = typeof p === 'string' ?
+ AST.#parseGlob(p, this.#hasMagic, noEmpty)
: p.toRegExpSource(allowDot);
this.#hasMagic = this.#hasMagic || hasMagic;
this.#uflag = this.#uflag || uflag;
@@ -447,7 +450,10 @@ export class AST {
// no need to prevent dots if it can't match a dot, or if a
// sub-pattern will be preventing it anyway.
const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));
- start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';
+ start =
+ needNoTrav ? startNoTraversal
+ : needNoDot ? startNoDot
+ : '';
}
}
}
@@ -483,8 +489,8 @@ export class AST {
return [s, unescape(this.toString()), false, false];
}
// XXX abstract out this map method
- let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot
- ? ''
+ let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ?
+ ''
: this.#partsToRegExp(true);
if (bodyDotAllowed === body) {
bodyDotAllowed = '';
@@ -498,20 +504,16 @@ export class AST {
final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;
}
else {
- const close = this.type === '!'
- ? // !() must match something,but !(x) can match ''
- '))' +
- (this.isStart() && !dot && !allowDot ? startNoDot : '') +
- star +
- ')'
- : this.type === '@'
- ? ')'
- : this.type === '?'
- ? ')?'
- : this.type === '+' && bodyDotAllowed
- ? ')'
- : this.type === '*' && bodyDotAllowed
- ? `)?`
+ const close = this.type === '!' ?
+ // !() must match something,but !(x) can match ''
+ '))' +
+ (this.isStart() && !dot && !allowDot ? startNoDot : '') +
+ star +
+ ')'
+ : this.type === '@' ? ')'
+ : this.type === '?' ? ')?'
+ : this.type === '+' && bodyDotAllowed ? ')'
+ : this.type === '*' && bodyDotAllowed ? `)?`
: `)${this.type}`;
final = start + body + close;
}
@@ -543,6 +545,8 @@ export class AST {
let escaping = false;
let re = '';
let uflag = false;
+ // multiple stars that aren't globstars coalesce into one *
+ let inStar = false;
for (let i = 0; i < glob.length; i++) {
const c = glob.charAt(i);
if (escaping) {
@@ -550,6 +554,17 @@ export class AST {
re += (reSpecials.has(c) ? '\\' : '') + c;
continue;
}
+ if (c === '*') {
+ if (inStar)
+ continue;
+ inStar = true;
+ re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;
+ hasMagic = true;
+ continue;
+ }
+ else {
+ inStar = false;
+ }
if (c === '\\') {
if (i === glob.length - 1) {
re += '\\\\';
@@ -569,11 +584,6 @@ export class AST {
continue;
}
}
- if (c === '*') {
- re += noEmpty && glob === '*' ? starNoEmpty : star;
- hasMagic = true;
- continue;
- }
if (c === '?') {
re += qmark;
hasMagic = true;
diff --git a/deps/npm/node_modules/minimatch/dist/esm/brace-expressions.js b/deps/npm/node_modules/minimatch/dist/esm/brace-expressions.js
index c629d6ae816e27..4b49d40bd74210 100644
--- a/deps/npm/node_modules/minimatch/dist/esm/brace-expressions.js
+++ b/deps/npm/node_modules/minimatch/dist/esm/brace-expressions.js
@@ -138,10 +138,8 @@ export const parseClass = (glob, position) => {
}
const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';
const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';
- const comb = ranges.length && negs.length
- ? '(' + sranges + '|' + snegs + ')'
- : ranges.length
- ? sranges
+ const comb = ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')'
+ : ranges.length ? sranges
: snegs;
return [comb, uflag, endPos - pos, true];
};
diff --git a/deps/npm/node_modules/minimatch/dist/esm/escape.js b/deps/npm/node_modules/minimatch/dist/esm/escape.js
index bab968ff3d83c9..46d0ec8858e5b3 100644
--- a/deps/npm/node_modules/minimatch/dist/esm/escape.js
+++ b/deps/npm/node_modules/minimatch/dist/esm/escape.js
@@ -15,12 +15,12 @@ export const escape = (s, { windowsPathsNoEscape = false, magicalBraces = false,
// that make those magic, and escaping ! as [!] isn't valid,
// because [!]] is a valid glob class meaning not ']'.
if (magicalBraces) {
- return windowsPathsNoEscape
- ? s.replace(/[?*()[\]{}]/g, '[$&]')
+ return windowsPathsNoEscape ?
+ s.replace(/[?*()[\]{}]/g, '[$&]')
: s.replace(/[?*()[\]\\{}]/g, '\\$&');
}
- return windowsPathsNoEscape
- ? s.replace(/[?*()[\]]/g, '[$&]')
+ return windowsPathsNoEscape ?
+ s.replace(/[?*()[\]]/g, '[$&]')
: s.replace(/[?*()[\]\\]/g, '\\$&');
};
//# sourceMappingURL=escape.js.map
\ No newline at end of file
diff --git a/deps/npm/node_modules/minimatch/dist/esm/index.js b/deps/npm/node_modules/minimatch/dist/esm/index.js
index e83823fa6e1b55..3175327db5efbf 100644
--- a/deps/npm/node_modules/minimatch/dist/esm/index.js
+++ b/deps/npm/node_modules/minimatch/dist/esm/index.js
@@ -1,4 +1,4 @@
-import { expand } from '@isaacs/brace-expansion';
+import { expand } from 'brace-expansion';
import { assertValidPattern } from './assert-valid-pattern.js';
import { AST } from './ast.js';
import { escape } from './escape.js';
@@ -63,8 +63,8 @@ const qmarksTestNoExtDot = ([$0]) => {
return (f) => f.length === len && f !== '.' && f !== '..';
};
/* c8 ignore start */
-const defaultPlatform = (typeof process === 'object' && process
- ? (typeof process.env === 'object' &&
+const defaultPlatform = (typeof process === 'object' && process ?
+ (typeof process.env === 'object' &&
process.env &&
process.env.__MINIMATCH_TESTING_PLATFORM__) ||
process.platform
@@ -148,7 +148,7 @@ export const braceExpand = (pattern, options = {}) => {
// shortcut. no need to expand.
return [pattern];
}
- return expand(pattern);
+ return expand(pattern, { max: options.braceExpandMax });
};
minimatch.braceExpand = braceExpand;
// parse a component of the expanded set.
@@ -201,8 +201,10 @@ export class Minimatch {
this.pattern = pattern;
this.platform = options.platform || defaultPlatform;
this.isWindows = this.platform === 'win32';
+ // avoid the annoying deprecation flag lol
+ const awe = ('allowWindow' + 'sEscape');
this.windowsPathsNoEscape =
- !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;
+ !!options.windowsPathsNoEscape || options[awe] === false;
if (this.windowsPathsNoEscape) {
this.pattern = this.pattern.replace(/\\/g, '/');
}
@@ -215,8 +217,8 @@ export class Minimatch {
this.partial = !!options.partial;
this.nocase = !!this.options.nocase;
this.windowsNoMagicRoot =
- options.windowsNoMagicRoot !== undefined
- ? options.windowsNoMagicRoot
+ options.windowsNoMagicRoot !== undefined ?
+ options.windowsNoMagicRoot
: !!(this.isWindows && this.nocase);
this.globSet = [];
this.globParts = [];
@@ -279,7 +281,10 @@ export class Minimatch {
!globMagic.test(s[3]);
const isDrive = /^[a-z]:/i.test(s[0]);
if (isUNC) {
- return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];
+ return [
+ ...s.slice(0, 4),
+ ...s.slice(4).map(ss => this.parse(ss)),
+ ];
}
else if (isDrive) {
return [s[0], ...s.slice(1).map(ss => this.parse(ss))];
@@ -311,7 +316,7 @@ export class Minimatch {
// to the right as possible, even if it increases the number
// of patterns that we have to process.
preprocess(globParts) {
- // if we're not in globstar mode, then turn all ** into *
+ // if we're not in globstar mode, then turn ** into *
if (this.options.noglobstar) {
for (let i = 0; i < globParts.length; i++) {
for (let j = 0; j < globParts[i].length; j++) {
@@ -615,10 +620,17 @@ export class Minimatch {
pattern[2] === '?' &&
typeof pattern[3] === 'string' &&
/^[a-z]:$/i.test(pattern[3]);
- const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;
- const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;
+ const fdi = fileUNC ? 3
+ : fileDrive ? 0
+ : undefined;
+ const pdi = patternUNC ? 3
+ : patternDrive ? 0
+ : undefined;
if (typeof fdi === 'number' && typeof pdi === 'number') {
- const [fd, pd] = [file[fdi], pattern[pdi]];
+ const [fd, pd] = [
+ file[fdi],
+ pattern[pdi],
+ ];
if (fd.toLowerCase() === pd.toLowerCase()) {
pattern[pdi] = fd;
if (pdi > fdi) {
@@ -799,21 +811,19 @@ export class Minimatch {
fastTest = options.dot ? starTestDot : starTest;
}
else if ((m = pattern.match(starDotExtRE))) {
- fastTest = (options.nocase
- ? options.dot
- ? starDotExtTestNocaseDot
+ fastTest = (options.nocase ?
+ options.dot ?
+ starDotExtTestNocaseDot
: starDotExtTestNocase
- : options.dot
- ? starDotExtTestDot
+ : options.dot ? starDotExtTestDot
: starDotExtTest)(m[1]);
}
else if ((m = pattern.match(qmarksRE))) {
- fastTest = (options.nocase
- ? options.dot
- ? qmarksTestNocaseDot
+ fastTest = (options.nocase ?
+ options.dot ?
+ qmarksTestNocaseDot
: qmarksTestNocase
- : options.dot
- ? qmarksTestDot
+ : options.dot ? qmarksTestDot
: qmarksTest)(m);
}
else if ((m = pattern.match(starDotStarRE))) {
@@ -844,10 +854,8 @@ export class Minimatch {
return this.regexp;
}
const options = this.options;
- const twoStar = options.noglobstar
- ? star
- : options.dot
- ? twoStarDot
+ const twoStar = options.noglobstar ? star
+ : options.dot ? twoStarDot
: twoStarNoDot;
const flags = new Set(options.nocase ? ['i'] : []);
// regexpify non-globstar patterns
@@ -863,11 +871,9 @@ export class Minimatch {
for (const f of p.flags.split(''))
flags.add(f);
}
- return typeof p === 'string'
- ? regExpEscape(p)
- : p === GLOBSTAR
- ? GLOBSTAR
- : p._src;
+ return (typeof p === 'string' ? regExpEscape(p)
+ : p === GLOBSTAR ? GLOBSTAR
+ : p._src);
});
pp.forEach((p, i) => {
const next = pp[i + 1];
diff --git a/deps/npm/node_modules/minimatch/dist/esm/unescape.js b/deps/npm/node_modules/minimatch/dist/esm/unescape.js
index dfa408d39853bc..b31bd40a028407 100644
--- a/deps/npm/node_modules/minimatch/dist/esm/unescape.js
+++ b/deps/npm/node_modules/minimatch/dist/esm/unescape.js
@@ -19,14 +19,14 @@
*/
export const unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true, } = {}) => {
if (magicalBraces) {
- return windowsPathsNoEscape
- ? s.replace(/\[([^\/\\])\]/g, '$1')
+ return windowsPathsNoEscape ?
+ s.replace(/\[([^\/\\])\]/g, '$1')
: s
.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2')
.replace(/\\([^\/])/g, '$1');
}
- return windowsPathsNoEscape
- ? s.replace(/\[([^\/\\{}])\]/g, '$1')
+ return windowsPathsNoEscape ?
+ s.replace(/\[([^\/\\{}])\]/g, '$1')
: s
.replace(/((?!\\).|^)\[([^\/\\{}])\]/g, '$1$2')
.replace(/\\([^\/{}])/g, '$1');
diff --git a/deps/npm/node_modules/minimatch/package.json b/deps/npm/node_modules/minimatch/package.json
index 74b945eb60d713..6d4fc25af97a05 100644
--- a/deps/npm/node_modules/minimatch/package.json
+++ b/deps/npm/node_modules/minimatch/package.json
@@ -2,7 +2,7 @@
"author": "Isaac Z. Schlueter (http://blog.izs.me)",
"name": "minimatch",
"description": "a glob matcher in javascript",
- "version": "10.1.2",
+ "version": "10.2.2",
"repository": {
"type": "git",
"url": "git@github.com:isaacs/minimatch"
@@ -34,18 +34,18 @@
"presnap": "npm run prepare",
"test": "tap",
"snap": "tap",
- "format": "prettier --write . --log-level warn",
+ "format": "prettier --write .",
"benchmark": "node benchmark/index.js",
"typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts"
},
"engines": {
- "node": "20 || >=22"
+ "node": "18 || 20 || >=22"
},
"devDependencies": {
- "@types/node": "^24.0.0",
+ "@types/node": "^25.3.0",
"mkdirp": "^3.0.1",
"prettier": "^3.6.2",
- "tap": "^21.1.0",
+ "tap": "^21.6.1",
"tshy": "^3.0.2",
"typedoc": "^0.28.5"
},
@@ -62,6 +62,6 @@
"type": "module",
"module": "./dist/esm/index.js",
"dependencies": {
- "@isaacs/brace-expansion": "^5.0.1"
+ "brace-expansion": "^5.0.2"
}
}
diff --git a/deps/npm/node_modules/minipass-fetch/lib/body.js b/deps/npm/node_modules/minipass-fetch/lib/body.js
index f7895d7f5c20d7..f38ee807ca287f 100644
--- a/deps/npm/node_modules/minipass-fetch/lib/body.js
+++ b/deps/npm/node_modules/minipass-fetch/lib/body.js
@@ -6,10 +6,10 @@ const Blob = require('./blob.js')
const { BUFFER } = Blob
const FetchError = require('./fetch-error.js')
-// optional dependency on 'encoding'
-let convert
+// optional dependency on 'iconv-lite'
+let decode
try {
- convert = require('encoding').convert
+ decode = require('iconv-lite').decode
} catch (e) {
// defer error until textConverted is called
}
@@ -92,6 +92,10 @@ class Body {
}
textConverted () {
+ /* istanbul ignore if */
+ if (typeof decode !== 'function') {
+ throw new Error('The package `iconv-lite` must be installed to use the textConverted() function')
+ }
return this[CONSUME_BODY]().then(buf => convertBody(buf, this.headers))
}
@@ -285,11 +289,6 @@ const isBlob = obj =>
/^(Blob|File)$/.test(obj[Symbol.toStringTag])
const convertBody = (buffer, headers) => {
- /* istanbul ignore if */
- if (typeof convert !== 'function') {
- throw new Error('The package `encoding` must be installed to use the textConverted() function')
- }
-
const ct = headers && headers.get('content-type')
let charset = 'utf-8'
let res
@@ -339,12 +338,23 @@ const convertBody = (buffer, headers) => {
}
}
- // turn raw buffers into a single utf-8 buffer
- return convert(
- buffer,
- 'UTF-8',
- charset
- ).toString()
+ if (charset === 'UTF-8') {
+ return buffer.toString('UTF-8')
+ }
+
+ charset = charset.toString().trim()
+ .replace(/^latin[-_]?(\d+)$/i, 'ISO-8859-$1')
+ .replace(/^win(?:dows)?[-_]?(\d+)$/i, 'WINDOWS-$1')
+ .replace(/^utf[-_]?(\d+)$/i, 'UTF-$1')
+ .replace(/^ks_c_5601-1987$/i, 'CP949')
+ .replace(/^us[-_]?ascii$/i, 'ASCII')
+ .toUpperCase()
+ try {
+ return decode(buffer, charset).toString()
+ } catch {
+ /* istanbul ignore next */
+ return buffer.toString('UTF-8')
+ }
}
module.exports = Body
diff --git a/deps/npm/node_modules/minipass-fetch/package.json b/deps/npm/node_modules/minipass-fetch/package.json
index c2aaebcc90bfac..a180d8d234ecb8 100644
--- a/deps/npm/node_modules/minipass-fetch/package.json
+++ b/deps/npm/node_modules/minipass-fetch/package.json
@@ -1,6 +1,6 @@
{
"name": "minipass-fetch",
- "version": "5.0.1",
+ "version": "5.0.2",
"description": "An implementation of window.fetch in Node.js using Minipass streams",
"license": "MIT",
"main": "lib/index.js",
@@ -29,8 +29,8 @@
"@ungap/url-search-params": "^0.2.2",
"abort-controller": "^3.0.0",
"abortcontroller-polyfill": "~1.7.3",
- "encoding": "^0.1.13",
"form-data": "^4.0.0",
+ "iconv-lite": "^0.7.2",
"nock": "^13.2.4",
"parted": "^0.1.1",
"string-to-arraybuffer": "^1.0.2",
@@ -42,7 +42,7 @@
"minizlib": "^3.0.1"
},
"optionalDependencies": {
- "encoding": "^0.1.13"
+ "iconv-lite": "^0.7.2"
},
"repository": {
"type": "git",
diff --git a/deps/npm/node_modules/yallist/LICENSE b/deps/npm/node_modules/minipass-flush/node_modules/yallist/LICENSE
similarity index 100%
rename from deps/npm/node_modules/yallist/LICENSE
rename to deps/npm/node_modules/minipass-flush/node_modules/yallist/LICENSE
diff --git a/deps/npm/node_modules/yallist/iterator.js b/deps/npm/node_modules/minipass-flush/node_modules/yallist/iterator.js
similarity index 100%
rename from deps/npm/node_modules/yallist/iterator.js
rename to deps/npm/node_modules/minipass-flush/node_modules/yallist/iterator.js
diff --git a/deps/npm/node_modules/minipass-flush/node_modules/yallist/package.json b/deps/npm/node_modules/minipass-flush/node_modules/yallist/package.json
new file mode 100644
index 00000000000000..8a083867d72e00
--- /dev/null
+++ b/deps/npm/node_modules/minipass-flush/node_modules/yallist/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "yallist",
+ "version": "4.0.0",
+ "description": "Yet Another Linked List",
+ "main": "yallist.js",
+ "directories": {
+ "test": "test"
+ },
+ "files": [
+ "yallist.js",
+ "iterator.js"
+ ],
+ "dependencies": {},
+ "devDependencies": {
+ "tap": "^12.1.0"
+ },
+ "scripts": {
+ "test": "tap test/*.js --100",
+ "preversion": "npm test",
+ "postversion": "npm publish",
+ "postpublish": "git push origin --all; git push origin --tags"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/isaacs/yallist.git"
+ },
+ "author": "Isaac Z. Schlueter (http://blog.izs.me/)",
+ "license": "ISC"
+}
diff --git a/deps/npm/node_modules/yallist/yallist.js b/deps/npm/node_modules/minipass-flush/node_modules/yallist/yallist.js
similarity index 100%
rename from deps/npm/node_modules/yallist/yallist.js
rename to deps/npm/node_modules/minipass-flush/node_modules/yallist/yallist.js
diff --git a/deps/npm/node_modules/minipass/LICENSE b/deps/npm/node_modules/minipass-pipeline/node_modules/yallist/LICENSE
similarity index 90%
rename from deps/npm/node_modules/minipass/LICENSE
rename to deps/npm/node_modules/minipass-pipeline/node_modules/yallist/LICENSE
index 97f8e32ed82e4c..19129e315fe593 100644
--- a/deps/npm/node_modules/minipass/LICENSE
+++ b/deps/npm/node_modules/minipass-pipeline/node_modules/yallist/LICENSE
@@ -1,6 +1,6 @@
The ISC License
-Copyright (c) 2017-2023 npm, Inc., Isaac Z. Schlueter, and Contributors
+Copyright (c) Isaac Z. Schlueter and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
diff --git a/deps/npm/node_modules/minipass-pipeline/node_modules/yallist/iterator.js b/deps/npm/node_modules/minipass-pipeline/node_modules/yallist/iterator.js
new file mode 100644
index 00000000000000..d41c97a19f9849
--- /dev/null
+++ b/deps/npm/node_modules/minipass-pipeline/node_modules/yallist/iterator.js
@@ -0,0 +1,8 @@
+'use strict'
+module.exports = function (Yallist) {
+ Yallist.prototype[Symbol.iterator] = function* () {
+ for (let walker = this.head; walker; walker = walker.next) {
+ yield walker.value
+ }
+ }
+}
diff --git a/deps/npm/node_modules/minipass-pipeline/node_modules/yallist/package.json b/deps/npm/node_modules/minipass-pipeline/node_modules/yallist/package.json
new file mode 100644
index 00000000000000..8a083867d72e00
--- /dev/null
+++ b/deps/npm/node_modules/minipass-pipeline/node_modules/yallist/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "yallist",
+ "version": "4.0.0",
+ "description": "Yet Another Linked List",
+ "main": "yallist.js",
+ "directories": {
+ "test": "test"
+ },
+ "files": [
+ "yallist.js",
+ "iterator.js"
+ ],
+ "dependencies": {},
+ "devDependencies": {
+ "tap": "^12.1.0"
+ },
+ "scripts": {
+ "test": "tap test/*.js --100",
+ "preversion": "npm test",
+ "postversion": "npm publish",
+ "postpublish": "git push origin --all; git push origin --tags"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/isaacs/yallist.git"
+ },
+ "author": "Isaac Z. Schlueter (http://blog.izs.me/)",
+ "license": "ISC"
+}
diff --git a/deps/npm/node_modules/minipass-pipeline/node_modules/yallist/yallist.js b/deps/npm/node_modules/minipass-pipeline/node_modules/yallist/yallist.js
new file mode 100644
index 00000000000000..4e83ab1c542a51
--- /dev/null
+++ b/deps/npm/node_modules/minipass-pipeline/node_modules/yallist/yallist.js
@@ -0,0 +1,426 @@
+'use strict'
+module.exports = Yallist
+
+Yallist.Node = Node
+Yallist.create = Yallist
+
+function Yallist (list) {
+ var self = this
+ if (!(self instanceof Yallist)) {
+ self = new Yallist()
+ }
+
+ self.tail = null
+ self.head = null
+ self.length = 0
+
+ if (list && typeof list.forEach === 'function') {
+ list.forEach(function (item) {
+ self.push(item)
+ })
+ } else if (arguments.length > 0) {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ self.push(arguments[i])
+ }
+ }
+
+ return self
+}
+
+Yallist.prototype.removeNode = function (node) {
+ if (node.list !== this) {
+ throw new Error('removing node which does not belong to this list')
+ }
+
+ var next = node.next
+ var prev = node.prev
+
+ if (next) {
+ next.prev = prev
+ }
+
+ if (prev) {
+ prev.next = next
+ }
+
+ if (node === this.head) {
+ this.head = next
+ }
+ if (node === this.tail) {
+ this.tail = prev
+ }
+
+ node.list.length--
+ node.next = null
+ node.prev = null
+ node.list = null
+
+ return next
+}
+
+Yallist.prototype.unshiftNode = function (node) {
+ if (node === this.head) {
+ return
+ }
+
+ if (node.list) {
+ node.list.removeNode(node)
+ }
+
+ var head = this.head
+ node.list = this
+ node.next = head
+ if (head) {
+ head.prev = node
+ }
+
+ this.head = node
+ if (!this.tail) {
+ this.tail = node
+ }
+ this.length++
+}
+
+Yallist.prototype.pushNode = function (node) {
+ if (node === this.tail) {
+ return
+ }
+
+ if (node.list) {
+ node.list.removeNode(node)
+ }
+
+ var tail = this.tail
+ node.list = this
+ node.prev = tail
+ if (tail) {
+ tail.next = node
+ }
+
+ this.tail = node
+ if (!this.head) {
+ this.head = node
+ }
+ this.length++
+}
+
+Yallist.prototype.push = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ push(this, arguments[i])
+ }
+ return this.length
+}
+
+Yallist.prototype.unshift = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ unshift(this, arguments[i])
+ }
+ return this.length
+}
+
+Yallist.prototype.pop = function () {
+ if (!this.tail) {
+ return undefined
+ }
+
+ var res = this.tail.value
+ this.tail = this.tail.prev
+ if (this.tail) {
+ this.tail.next = null
+ } else {
+ this.head = null
+ }
+ this.length--
+ return res
+}
+
+Yallist.prototype.shift = function () {
+ if (!this.head) {
+ return undefined
+ }
+
+ var res = this.head.value
+ this.head = this.head.next
+ if (this.head) {
+ this.head.prev = null
+ } else {
+ this.tail = null
+ }
+ this.length--
+ return res
+}
+
+Yallist.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this
+ for (var walker = this.head, i = 0; walker !== null; i++) {
+ fn.call(thisp, walker.value, i, this)
+ walker = walker.next
+ }
+}
+
+Yallist.prototype.forEachReverse = function (fn, thisp) {
+ thisp = thisp || this
+ for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
+ fn.call(thisp, walker.value, i, this)
+ walker = walker.prev
+ }
+}
+
+Yallist.prototype.get = function (n) {
+ for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
+ // abort out of the list early if we hit a cycle
+ walker = walker.next
+ }
+ if (i === n && walker !== null) {
+ return walker.value
+ }
+}
+
+Yallist.prototype.getReverse = function (n) {
+ for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
+ // abort out of the list early if we hit a cycle
+ walker = walker.prev
+ }
+ if (i === n && walker !== null) {
+ return walker.value
+ }
+}
+
+Yallist.prototype.map = function (fn, thisp) {
+ thisp = thisp || this
+ var res = new Yallist()
+ for (var walker = this.head; walker !== null;) {
+ res.push(fn.call(thisp, walker.value, this))
+ walker = walker.next
+ }
+ return res
+}
+
+Yallist.prototype.mapReverse = function (fn, thisp) {
+ thisp = thisp || this
+ var res = new Yallist()
+ for (var walker = this.tail; walker !== null;) {
+ res.push(fn.call(thisp, walker.value, this))
+ walker = walker.prev
+ }
+ return res
+}
+
+Yallist.prototype.reduce = function (fn, initial) {
+ var acc
+ var walker = this.head
+ if (arguments.length > 1) {
+ acc = initial
+ } else if (this.head) {
+ walker = this.head.next
+ acc = this.head.value
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value')
+ }
+
+ for (var i = 0; walker !== null; i++) {
+ acc = fn(acc, walker.value, i)
+ walker = walker.next
+ }
+
+ return acc
+}
+
+Yallist.prototype.reduceReverse = function (fn, initial) {
+ var acc
+ var walker = this.tail
+ if (arguments.length > 1) {
+ acc = initial
+ } else if (this.tail) {
+ walker = this.tail.prev
+ acc = this.tail.value
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value')
+ }
+
+ for (var i = this.length - 1; walker !== null; i--) {
+ acc = fn(acc, walker.value, i)
+ walker = walker.prev
+ }
+
+ return acc
+}
+
+Yallist.prototype.toArray = function () {
+ var arr = new Array(this.length)
+ for (var i = 0, walker = this.head; walker !== null; i++) {
+ arr[i] = walker.value
+ walker = walker.next
+ }
+ return arr
+}
+
+Yallist.prototype.toArrayReverse = function () {
+ var arr = new Array(this.length)
+ for (var i = 0, walker = this.tail; walker !== null; i++) {
+ arr[i] = walker.value
+ walker = walker.prev
+ }
+ return arr
+}
+
+Yallist.prototype.slice = function (from, to) {
+ to = to || this.length
+ if (to < 0) {
+ to += this.length
+ }
+ from = from || 0
+ if (from < 0) {
+ from += this.length
+ }
+ var ret = new Yallist()
+ if (to < from || to < 0) {
+ return ret
+ }
+ if (from < 0) {
+ from = 0
+ }
+ if (to > this.length) {
+ to = this.length
+ }
+ for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
+ walker = walker.next
+ }
+ for (; walker !== null && i < to; i++, walker = walker.next) {
+ ret.push(walker.value)
+ }
+ return ret
+}
+
+Yallist.prototype.sliceReverse = function (from, to) {
+ to = to || this.length
+ if (to < 0) {
+ to += this.length
+ }
+ from = from || 0
+ if (from < 0) {
+ from += this.length
+ }
+ var ret = new Yallist()
+ if (to < from || to < 0) {
+ return ret
+ }
+ if (from < 0) {
+ from = 0
+ }
+ if (to > this.length) {
+ to = this.length
+ }
+ for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
+ walker = walker.prev
+ }
+ for (; walker !== null && i > from; i--, walker = walker.prev) {
+ ret.push(walker.value)
+ }
+ return ret
+}
+
+Yallist.prototype.splice = function (start, deleteCount, ...nodes) {
+ if (start > this.length) {
+ start = this.length - 1
+ }
+ if (start < 0) {
+ start = this.length + start;
+ }
+
+ for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
+ walker = walker.next
+ }
+
+ var ret = []
+ for (var i = 0; walker && i < deleteCount; i++) {
+ ret.push(walker.value)
+ walker = this.removeNode(walker)
+ }
+ if (walker === null) {
+ walker = this.tail
+ }
+
+ if (walker !== this.head && walker !== this.tail) {
+ walker = walker.prev
+ }
+
+ for (var i = 0; i < nodes.length; i++) {
+ walker = insert(this, walker, nodes[i])
+ }
+ return ret;
+}
+
+Yallist.prototype.reverse = function () {
+ var head = this.head
+ var tail = this.tail
+ for (var walker = head; walker !== null; walker = walker.prev) {
+ var p = walker.prev
+ walker.prev = walker.next
+ walker.next = p
+ }
+ this.head = tail
+ this.tail = head
+ return this
+}
+
+function insert (self, node, value) {
+ var inserted = node === self.head ?
+ new Node(value, null, node, self) :
+ new Node(value, node, node.next, self)
+
+ if (inserted.next === null) {
+ self.tail = inserted
+ }
+ if (inserted.prev === null) {
+ self.head = inserted
+ }
+
+ self.length++
+
+ return inserted
+}
+
+function push (self, item) {
+ self.tail = new Node(item, self.tail, null, self)
+ if (!self.head) {
+ self.head = self.tail
+ }
+ self.length++
+}
+
+function unshift (self, item) {
+ self.head = new Node(item, null, self.head, self)
+ if (!self.tail) {
+ self.tail = self.head
+ }
+ self.length++
+}
+
+function Node (value, prev, next, list) {
+ if (!(this instanceof Node)) {
+ return new Node(value, prev, next, list)
+ }
+
+ this.list = list
+ this.value = value
+
+ if (prev) {
+ prev.next = this
+ this.prev = prev
+ } else {
+ this.prev = null
+ }
+
+ if (next) {
+ next.prev = this
+ this.next = next
+ } else {
+ this.next = null
+ }
+}
+
+try {
+ // add if support for Symbol.iterator is present
+ require('./iterator.js')(Yallist)
+} catch (er) {}
diff --git a/deps/npm/node_modules/minipass/LICENSE.md b/deps/npm/node_modules/minipass/LICENSE.md
new file mode 100644
index 00000000000000..c5402b9577a8cd
--- /dev/null
+++ b/deps/npm/node_modules/minipass/LICENSE.md
@@ -0,0 +1,55 @@
+# Blue Oak Model License
+
+Version 1.0.0
+
+## Purpose
+
+This license gives everyone as much permission to work with
+this software as possible, while protecting contributors
+from liability.
+
+## Acceptance
+
+In order to receive this license, you must agree to its
+rules. The rules of this license are both obligations
+under that agreement and conditions to your license.
+You must not do anything with this software that triggers
+a rule that you cannot or will not follow.
+
+## Copyright
+
+Each contributor licenses you to do everything with this
+software that would otherwise infringe that contributor's
+copyright in it.
+
+## Notices
+
+You must ensure that everyone who gets a copy of
+any part of this software from you, with or without
+changes, also gets the text of this license or a link to
+.
+
+## Excuse
+
+If anyone notifies you in writing that you have not
+complied with [Notices](#notices), you can keep your
+license by taking all practical steps to comply within 30
+days after the notice. If you do not do so, your license
+ends immediately.
+
+## Patent
+
+Each contributor licenses you to do everything with this
+software that would otherwise infringe any patent claims
+they can license or become able to license.
+
+## Reliability
+
+No contributor can revoke this license.
+
+## No Liability
+
+***As far as the law allows, this software comes as is,
+without any warranty or condition, and no contributor
+will be liable to anyone for any damages related to this
+software or this license, under any kind of legal claim.***
diff --git a/deps/npm/node_modules/minipass/dist/commonjs/index.js b/deps/npm/node_modules/minipass/dist/commonjs/index.js
index 068c095b697932..91f3a5cfc7a0b9 100644
--- a/deps/npm/node_modules/minipass/dist/commonjs/index.js
+++ b/deps/npm/node_modules/minipass/dist/commonjs/index.js
@@ -22,7 +22,11 @@ const isStream = (s) => !!s &&
(s instanceof Minipass ||
s instanceof node_stream_1.default ||
(0, exports.isReadable)(s) ||
- (0, exports.isWritable)(s));
+ (0, exports.isWritable)(s))
+/**
+ * Return true if the argument is a valid {@link Minipass.Readable}
+ */
+;
exports.isStream = isStream;
/**
* Return true if the argument is a valid {@link Minipass.Readable}
@@ -32,7 +36,11 @@ const isReadable = (s) => !!s &&
s instanceof node_events_1.EventEmitter &&
typeof s.pipe === 'function' &&
// node core Writable streams have a pipe() method, but it throws
- s.pipe !== node_stream_1.default.Writable.prototype.pipe;
+ s.pipe !== node_stream_1.default.Writable.prototype.pipe
+/**
+ * Return true if the argument is a valid {@link Minipass.Writable}
+ */
+;
exports.isReadable = isReadable;
/**
* Return true if the argument is a valid {@link Minipass.Writable}
@@ -129,7 +137,7 @@ class PipeProxyErrors extends Pipe {
}
constructor(src, dest, opts) {
super(src, dest, opts);
- this.proxyErrors = er => dest.emit('error', er);
+ this.proxyErrors = (er) => this.dest.emit('error', er);
src.on('error', this.proxyErrors);
}
}
@@ -939,6 +947,7 @@ class Minipass extends node_events_1.EventEmitter {
[Symbol.asyncIterator]() {
return this;
},
+ [Symbol.asyncDispose]: async () => { },
};
}
/**
@@ -976,6 +985,7 @@ class Minipass extends node_events_1.EventEmitter {
[Symbol.iterator]() {
return this;
},
+ [Symbol.dispose]: () => { },
};
}
/**
diff --git a/deps/npm/node_modules/minipass/dist/esm/index.js b/deps/npm/node_modules/minipass/dist/esm/index.js
index b5fa4513c90838..5df55461e3d491 100644
--- a/deps/npm/node_modules/minipass/dist/esm/index.js
+++ b/deps/npm/node_modules/minipass/dist/esm/index.js
@@ -120,7 +120,7 @@ class PipeProxyErrors extends Pipe {
}
constructor(src, dest, opts) {
super(src, dest, opts);
- this.proxyErrors = er => dest.emit('error', er);
+ this.proxyErrors = (er) => this.dest.emit('error', er);
src.on('error', this.proxyErrors);
}
}
@@ -930,6 +930,7 @@ export class Minipass extends EventEmitter {
[Symbol.asyncIterator]() {
return this;
},
+ [Symbol.asyncDispose]: async () => { },
};
}
/**
@@ -967,6 +968,7 @@ export class Minipass extends EventEmitter {
[Symbol.iterator]() {
return this;
},
+ [Symbol.dispose]: () => { },
};
}
/**
diff --git a/deps/npm/node_modules/minipass/package.json b/deps/npm/node_modules/minipass/package.json
index 771969b0285469..800f215cb02c01 100644
--- a/deps/npm/node_modules/minipass/package.json
+++ b/deps/npm/node_modules/minipass/package.json
@@ -1,13 +1,14 @@
{
"name": "minipass",
- "version": "7.1.2",
+ "version": "7.1.3",
"description": "minimal implementation of a PassThrough stream",
"main": "./dist/commonjs/index.js",
"types": "./dist/commonjs/index.d.ts",
+ "module": "./dist/esm/index.js",
"type": "module",
"tshy": {
"selfLink": false,
- "main": true,
+ "compiler": "tsgo",
"exports": {
"./package.json": "./package.json",
".": "./src/index.ts"
@@ -54,14 +55,14 @@
},
"devDependencies": {
"@types/end-of-stream": "^1.4.2",
- "@types/node": "^20.1.2",
+ "@types/node": "^25.2.3",
"end-of-stream": "^1.4.0",
"node-abort-controller": "^3.1.1",
- "prettier": "^2.6.2",
- "tap": "^19.0.0",
+ "prettier": "^3.8.1",
+ "tap": "^21.6.1",
"through2": "^2.0.3",
- "tshy": "^1.14.0",
- "typedoc": "^0.25.1"
+ "tshy": "^3.3.2",
+ "typedoc": "^0.28.17"
},
"repository": "https://github.com/isaacs/minipass",
"keywords": [
@@ -69,14 +70,8 @@
"stream"
],
"author": "Isaac Z. Schlueter (http://blog.izs.me/)",
- "license": "ISC",
+ "license": "BlueOak-1.0.0",
"engines": {
"node": ">=16 || 14 >=14.17"
- },
- "tap": {
- "typecheck": true,
- "include": [
- "test/*.ts"
- ]
}
}
diff --git a/deps/npm/node_modules/npm-packlist/lib/index.js b/deps/npm/node_modules/npm-packlist/lib/index.js
index ada704de4575da..422adcfcd13eec 100644
--- a/deps/npm/node_modules/npm-packlist/lib/index.js
+++ b/deps/npm/node_modules/npm-packlist/lib/index.js
@@ -170,7 +170,7 @@ class PackWalker extends IgnoreWalker {
} else if (this.ignoreRules['.npmignore']) {
// .npmignore means no .gitignore
this.ignoreRules['.gitignore'] = null
- } else if (this.ignoreRules['.gitignore'] && !this.ignoreRules['.npmignore']) {
+ } else if (this.ignoreRules['.gitignore'] && !this.ignoreRules['.npmignore'] && !this.parent) {
log.warn(
'gitignore-fallback',
'No .npmignore file found, using .gitignore for file exclusion. Consider creating a .npmignore file to explicitly control published files.'
diff --git a/deps/npm/node_modules/npm-packlist/package.json b/deps/npm/node_modules/npm-packlist/package.json
index 30cddb4df2e37a..88e55b79c64399 100644
--- a/deps/npm/node_modules/npm-packlist/package.json
+++ b/deps/npm/node_modules/npm-packlist/package.json
@@ -1,6 +1,6 @@
{
"name": "npm-packlist",
- "version": "10.0.3",
+ "version": "10.0.4",
"description": "Get a list of the files to add from a folder into an npm package",
"directories": {
"test": "test"
@@ -18,8 +18,8 @@
],
"devDependencies": {
"@npmcli/arborist": "^9.0.0",
- "@npmcli/eslint-config": "^5.0.1",
- "@npmcli/template-oss": "4.27.1",
+ "@npmcli/eslint-config": "^6.0.0",
+ "@npmcli/template-oss": "4.29.0",
"mutate-fs": "^2.1.1",
"tap": "^16.0.1"
},
@@ -56,7 +56,7 @@
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.27.1",
+ "version": "4.29.0",
"publish": true
}
}
diff --git a/deps/npm/node_modules/pacote/README.md b/deps/npm/node_modules/pacote/README.md
index ac0c0fade12f14..cf85dfda5ddbb5 100644
--- a/deps/npm/node_modules/pacote/README.md
+++ b/deps/npm/node_modules/pacote/README.md
@@ -147,15 +147,25 @@ Options object is cloned, and mutated along the way to add integrity, resolved,
There must be a configured `_keys` entry in the config that is scoped to the registry the manifest is being fetched from.
* `tufCache` Where to store metadata/target files when retrieving the package attestation key material via TUF.
Defaults to the same cache directory that npm will use by default, based on platform and environment.
-* `allowGit` Whether or not to allow data to be fetched from git.
+* `allowGit` Whether or not to allow data to be fetched from a git spec.
Possible values are `all`, `none`, or `root`.
Defaults to `all`.
`all` means git is allowed
`none` means git is not allowed
`root` means that git is only allowed if fetching from a root context.
Context for whether or not the package being fetched is `root` is set via the `_isRoot` option.
+* `allowRemote` Whether or not to allow data to be fetched from remote specs.
+ Possible values and defaults are the same as `allowGit`
+* `allowFile` Whether or not to allow data to be fetched from file specs.
+ Possible values and defaults are the same as `allowGit`
+* `allowDirectory` Whether or not to allow data to be fetched from directory specs.
+ Possible values and defaults are the same as `allowGit`
+* `allowRegistry` Whether or not to allow data to be fetched from registry specs. This includes `version`, `range`, `tag`, and `alias`.
* `_isRoot` Whether or not the package being fetched is in a root context.
- For `npm` itself this means a package that is defined in the local project or workspace package.json, or a package that is being fetched for another command like `npm view`.
+ Defaults to `false`,
+ For `npm` itself this means a package that is defined in the local project or workspace package.json, or a package that is being fetched for another command like `npm view`. This informs the `allowX` options to let them know the context of the current request.
+
+For more info on spec types (i.e. git, remote) see [npm-package-arg](npm.im/npm-package-arg)
### Advanced API
diff --git a/deps/npm/node_modules/pacote/lib/fetcher.js b/deps/npm/node_modules/pacote/lib/fetcher.js
index 8d52d28eefd4d8..8324f46f1f3078 100644
--- a/deps/npm/node_modules/pacote/lib/fetcher.js
+++ b/deps/npm/node_modules/pacote/lib/fetcher.js
@@ -10,7 +10,7 @@ const cacache = require('cacache')
const fsm = require('fs-minipass')
const getContents = require('@npmcli/installed-package-contents')
const npa = require('npm-package-arg')
-const retry = require('promise-retry')
+const { promiseRetry } = require('@gar/promise-retry')
const ssri = require('ssri')
const tar = require('tar')
const { Minipass } = require('minipass')
@@ -319,7 +319,7 @@ class FetcherBase {
this.spec
}. Extracting by manifest.`)
}
- return this.resolve().then(() => retry(tryAgain =>
+ return this.resolve().then(() => promiseRetry(tryAgain =>
streamHandler(this.#istream(this[_.tarballFromResolved]()))
.catch(streamErr => {
// Most likely data integrity. A cache ENOENT error is unlikely
@@ -470,14 +470,20 @@ const DirFetcher = require('./dir.js')
const RemoteFetcher = require('./remote.js')
// possible values for allow: 'all', 'root', 'none'
-const canUseGit = (allow = 'all', isRoot = false) => {
+const canUse = ({ allow = 'all', isRoot = false, allowType, spec }) => {
if (allow === 'all') {
return true
}
if (allow !== 'none' && isRoot) {
return true
}
- return false
+ throw Object.assign(
+ new Error(`Fetching${allow === 'root' ? ' non-root' : ''} packages of type "${allowType}" have been disabled`),
+ {
+ code: `EALLOW${allowType.toUpperCase()}`,
+ package: spec.toString(),
+ }
+ )
}
// Get an appropriate fetcher object from a spec and options
@@ -485,30 +491,26 @@ FetcherBase.get = (rawSpec, opts = {}) => {
const spec = npa(rawSpec, opts.where)
switch (spec.type) {
case 'git':
- if (!canUseGit(opts.allowGit, opts._isRoot)) {
- throw Object.assign(
- new Error(`Fetching${opts.allowGit === 'root' ? ' non-root' : ''} packages from git has been disabled`),
- {
- code: 'EALLOWGIT',
- package: spec.toString(),
- }
- )
- }
+ canUse({ allow: opts.allowGit, isRoot: opts._isRoot, allowType: 'git', spec })
return new GitFetcher(spec, opts)
case 'remote':
+ canUse({ allow: opts.allowRemote, isRoot: opts._isRoot, allowType: 'remote', spec })
return new RemoteFetcher(spec, opts)
case 'version':
case 'range':
case 'tag':
case 'alias':
+ canUse({ allow: opts.allowRegistry, isRoot: opts._isRoot, allowType: 'registry', spec })
return new RegistryFetcher(spec.subSpec || spec, opts)
case 'file':
+ canUse({ allow: opts.allowFile, isRoot: opts._isRoot, allowType: 'file', spec })
return new FileFetcher(spec, opts)
case 'directory':
+ canUse({ allow: opts.allowDirectory, isRoot: opts._isRoot, allowType: 'directory', spec })
return new DirFetcher(spec, opts)
default:
diff --git a/deps/npm/node_modules/pacote/lib/git.js b/deps/npm/node_modules/pacote/lib/git.js
index 077193a86f026f..8faf125c6e5e57 100644
--- a/deps/npm/node_modules/pacote/lib/git.js
+++ b/deps/npm/node_modules/pacote/lib/git.js
@@ -12,7 +12,7 @@ const _ = require('./util/protected.js')
const addGitSha = require('./util/add-git-sha.js')
const npm = require('./util/npm.js')
-const hashre = /^[a-f0-9]{40}$/
+const hashre = /^[a-f0-9]{40,64}$/
// get the repository url.
// prefer https if there's auth, since ssh will drop that.
@@ -25,6 +25,14 @@ const repoUrl = (h, opts) =>
// add git+ to the url, but only one time.
const addGitPlus = url => url && `git+${url}`.replace(/^(git\+)+/, 'git+')
+const checkoutError = (expected, found) => {
+ const err = new Error(`Commit mismatch: expected SHA ${expected} and cloned HEAD ${found}`)
+ err.code = 'EGITCHECKOUT'
+ err.sha = expected
+ err.head = found
+ return err
+}
+
class GitFetcher extends Fetcher {
constructor (spec, opts) {
super(spec, opts)
@@ -245,7 +253,7 @@ class GitFetcher extends Fetcher {
pkgid: `git:${nameat}${this.resolved}`,
resolved: this.resolved,
integrity: null, // it'll always be different, if we have one
- }).extract(tmp).then(() => handler(tmp), er => {
+ }).extract(tmp).then(() => handler(`${tmp}${this.spec.gitSubdir || ''}`), er => {
// fall back to ssh download if tarball fails
if (er.constructor.name.match(/^Http/)) {
return this.#clone(handler, false)
@@ -259,11 +267,15 @@ class GitFetcher extends Fetcher {
h ? this.#cloneHosted(ref, tmp)
: this.#cloneRepo(this.spec.fetchSpec, ref, tmp)
)
+ // if we already have a resolved sha ensure it doesn't change
+ if (this.resolvedSha && this.resolvedSha !== sha) {
+ throw checkoutError(this.resolvedSha, sha)
+ }
this.resolvedSha = sha
if (!this.resolved) {
await this.#addGitSha(sha)
}
- return handler(tmp)
+ return handler(`${tmp}${this.spec.gitSubdir || ''}`)
})
}
diff --git a/deps/npm/node_modules/pacote/lib/registry.js b/deps/npm/node_modules/pacote/lib/registry.js
index 1ecf4ee1773499..1bfee0dd5e2990 100644
--- a/deps/npm/node_modules/pacote/lib/registry.js
+++ b/deps/npm/node_modules/pacote/lib/registry.js
@@ -229,7 +229,7 @@ class RegistryFetcher extends Fetcher {
if (this.opts.verifyAttestations) {
// Always fetch attestations from the current registry host
const attestationsPath = new URL(dist.attestations.url).pathname
- const attestationsUrl = removeTrailingSlashes(this.registry) + attestationsPath
+ const attestationsUrl = new URL(attestationsPath, this.registry).href
const res = await fetch(attestationsUrl, {
...this.opts,
// disable integrity check for attestations json payload, we check the
@@ -256,7 +256,10 @@ class RegistryFetcher extends Fetcher {
const attestationKeyIds = bundles.map((b) => b.keyid).filter((k) => !!k)
const attestationRegistryKeys = (this.registryKeys || [])
.filter(key => attestationKeyIds.includes(key.keyid))
- if (!attestationRegistryKeys.length) {
+ // Only require registry keys when there are keyed attestations.
+ // Keyless (Sigstore/Fulcio) attestations embed their signing
+ // certificate in the bundle and don't need registry keys.
+ if (attestationKeyIds.length > 0 && !attestationRegistryKeys.length) {
throw Object.assign(new Error(
`${mani._id} has attestations but no corresponding public key(s) can be found`
), { code: 'EMISSINGSIGNATUREKEY' })
diff --git a/deps/npm/node_modules/pacote/package.json b/deps/npm/node_modules/pacote/package.json
index b0cef67100abb5..566ad698cf89ec 100644
--- a/deps/npm/node_modules/pacote/package.json
+++ b/deps/npm/node_modules/pacote/package.json
@@ -1,6 +1,6 @@
{
"name": "pacote",
- "version": "21.1.0",
+ "version": "21.4.0",
"description": "JavaScript package downloader",
"author": "GitHub Inc.",
"bin": {
@@ -46,6 +46,7 @@
"git"
],
"dependencies": {
+ "@gar/promise-retry": "^1.0.0",
"@npmcli/git": "^7.0.0",
"@npmcli/installed-package-contents": "^4.0.0",
"@npmcli/package-json": "^7.0.0",
@@ -59,7 +60,6 @@
"npm-pick-manifest": "^11.0.1",
"npm-registry-fetch": "^19.0.0",
"proc-log": "^6.0.0",
- "promise-retry": "^2.0.1",
"sigstore": "^4.0.0",
"ssri": "^13.0.0",
"tar": "^7.4.3"
diff --git a/deps/npm/node_modules/path-scurry/package.json b/deps/npm/node_modules/path-scurry/package.json
index 831f23469b7865..68123fb70f16be 100644
--- a/deps/npm/node_modules/path-scurry/package.json
+++ b/deps/npm/node_modules/path-scurry/package.json
@@ -1,6 +1,6 @@
{
"name": "path-scurry",
- "version": "2.0.1",
+ "version": "2.0.2",
"description": "walk paths fast and efficiently",
"author": "Isaac Z. Schlueter (https://blog.izs.me)",
"main": "./dist/commonjs/index.js",
@@ -35,35 +35,19 @@
"typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts",
"bench": "bash ./scripts/bench.sh"
},
- "prettier": {
- "experimentalTernaries": true,
- "semi": false,
- "printWidth": 75,
- "tabWidth": 2,
- "useTabs": false,
- "singleQuote": true,
- "jsxSingleQuote": false,
- "bracketSameLine": true,
- "arrowParens": "avoid",
- "endOfLine": "lf"
- },
"devDependencies": {
- "@nodelib/fs.walk": "^2.0.0",
- "@types/node": "^20.14.10",
+ "@nodelib/fs.walk": "^3.0.1",
+ "@types/node": "^25.3.0",
"mkdirp": "^3.0.0",
"prettier": "^3.3.2",
- "rimraf": "^5.0.8",
- "tap": "^20.0.3",
+ "rimraf": "^6.1.3",
+ "tap": "^21.6.1",
"ts-node": "^10.9.2",
- "tshy": "^2.0.1",
- "typedoc": "^0.26.3",
- "typescript": "^5.5.3"
- },
- "tap": {
- "typecheck": true
+ "tshy": "^3.3.2",
+ "typedoc": "^0.28.17"
},
"engines": {
- "node": "20 || >=22"
+ "node": "18 || 20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
diff --git a/deps/npm/node_modules/semver/README.md b/deps/npm/node_modules/semver/README.md
index 67c311f87ca3cd..f6503bfefd4640 100644
--- a/deps/npm/node_modules/semver/README.md
+++ b/deps/npm/node_modules/semver/README.md
@@ -110,8 +110,9 @@ Options:
-l --loose
Interpret versions and ranges loosely
--n <0|1>
- This is the base to be used for the prerelease identifier.
+-n <0|1|false>
+ Base number for prerelease identifier (default: 0).
+ Use false to omit the number altogether.
-p --include-prerelease
Always include prerelease versions in range matching
diff --git a/deps/npm/node_modules/semver/bin/semver.js b/deps/npm/node_modules/semver/bin/semver.js
index dbb1bf534ec722..d62bfc0ecd5216 100755
--- a/deps/npm/node_modules/semver/bin/semver.js
+++ b/deps/npm/node_modules/semver/bin/semver.js
@@ -105,7 +105,7 @@ const main = () => {
versions = versions.map((v) => {
return coerce ? (semver.coerce(v, options) || { version: v }).version : v
}).filter((v) => {
- return semver.valid(v)
+ return semver.valid(v, options)
})
if (!versions.length) {
return fail()
diff --git a/deps/npm/node_modules/semver/functions/diff.js b/deps/npm/node_modules/semver/functions/diff.js
index 04e064e9196b58..c99ab51cc57169 100644
--- a/deps/npm/node_modules/semver/functions/diff.js
+++ b/deps/npm/node_modules/semver/functions/diff.js
@@ -53,7 +53,7 @@ const diff = (version1, version2) => {
return prefix + 'patch'
}
- // high and low are preleases
+ // high and low are prereleases
return 'prerelease'
}
diff --git a/deps/npm/node_modules/semver/internal/re.js b/deps/npm/node_modules/semver/internal/re.js
index 4758c58d424a9b..639fca89de8e63 100644
--- a/deps/npm/node_modules/semver/internal/re.js
+++ b/deps/npm/node_modules/semver/internal/re.js
@@ -78,8 +78,8 @@ createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
// ## Pre-release Version Identifier
// A numeric identifier, or a non-numeric identifier.
-// Non-numberic identifiers include numberic identifiers but can be longer.
-// Therefore non-numberic identifiers must go first.
+// Non-numeric identifiers include numeric identifiers but can be longer.
+// Therefore non-numeric identifiers must go first.
createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]
}|${src[t.NUMERICIDENTIFIER]})`)
diff --git a/deps/npm/node_modules/semver/package.json b/deps/npm/node_modules/semver/package.json
index 2b8cadaa2387ed..a84de916085998 100644
--- a/deps/npm/node_modules/semver/package.json
+++ b/deps/npm/node_modules/semver/package.json
@@ -1,6 +1,6 @@
{
"name": "semver",
- "version": "7.7.3",
+ "version": "7.7.4",
"description": "The semantic version parser used by npm.",
"main": "index.js",
"scripts": {
@@ -14,8 +14,8 @@
"eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""
},
"devDependencies": {
- "@npmcli/eslint-config": "^5.0.0",
- "@npmcli/template-oss": "4.25.1",
+ "@npmcli/eslint-config": "^6.0.0",
+ "@npmcli/template-oss": "4.29.0",
"benchmark": "^2.1.4",
"tap": "^16.0.0"
},
@@ -52,7 +52,7 @@
"author": "GitHub Inc.",
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.25.1",
+ "version": "4.29.0",
"engines": ">=10",
"distPaths": [
"classes/",
diff --git a/deps/npm/node_modules/semver/ranges/subset.js b/deps/npm/node_modules/semver/ranges/subset.js
index 2c49aef1be5e87..99f43218075c86 100644
--- a/deps/npm/node_modules/semver/ranges/subset.js
+++ b/deps/npm/node_modules/semver/ranges/subset.js
@@ -38,7 +38,7 @@ const compare = require('../functions/compare.js')
// - If LT
// - If LT.semver is greater than any < or <= comp in C, return false
// - If LT is <=, and LT.semver does not satisfy every C, return false
-// - If GT.semver has a prerelease, and not in prerelease mode
+// - If LT.semver has a prerelease, and not in prerelease mode
// - If no C has a prerelease and the LT.semver tuple, return false
// - Else return true
diff --git a/deps/npm/node_modules/spdx-correct/LICENSE b/deps/npm/node_modules/spdx-correct/LICENSE
deleted file mode 100644
index d645695673349e..00000000000000
--- a/deps/npm/node_modules/spdx-correct/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/deps/npm/node_modules/spdx-correct/index.js b/deps/npm/node_modules/spdx-correct/index.js
deleted file mode 100644
index 4d9037e0cc4355..00000000000000
--- a/deps/npm/node_modules/spdx-correct/index.js
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
-Copyright spdx-correct.js contributors
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-var parse = require('spdx-expression-parse')
-var spdxLicenseIds = require('spdx-license-ids')
-
-function valid (string) {
- try {
- parse(string)
- return true
- } catch (error) {
- return false
- }
-}
-
-// Sorting function that orders the given array of transpositions such
-// that a transposition with the longer pattern comes before a transposition
-// with a shorter pattern. This is to prevent e.g. the transposition
-// ["General Public License", "GPL"] from matching to "Lesser General Public License"
-// before a longer and more accurate transposition ["Lesser General Public License", "LGPL"]
-// has a chance to be recognized.
-function sortTranspositions(a, b) {
- var length = b[0].length - a[0].length
- if (length !== 0) return length
- return a[0].toUpperCase().localeCompare(b[0].toUpperCase())
-}
-
-// Common transpositions of license identifier acronyms
-var transpositions = [
- ['APGL', 'AGPL'],
- ['Gpl', 'GPL'],
- ['GLP', 'GPL'],
- ['APL', 'Apache'],
- ['ISD', 'ISC'],
- ['GLP', 'GPL'],
- ['IST', 'ISC'],
- ['Claude', 'Clause'],
- [' or later', '+'],
- [' International', ''],
- ['GNU', 'GPL'],
- ['GUN', 'GPL'],
- ['+', ''],
- ['GNU GPL', 'GPL'],
- ['GNU LGPL', 'LGPL'],
- ['GNU/GPL', 'GPL'],
- ['GNU GLP', 'GPL'],
- ['GNU LESSER GENERAL PUBLIC LICENSE', 'LGPL'],
- ['GNU Lesser General Public License', 'LGPL'],
- ['GNU LESSER GENERAL PUBLIC LICENSE', 'LGPL-2.1'],
- ['GNU Lesser General Public License', 'LGPL-2.1'],
- ['LESSER GENERAL PUBLIC LICENSE', 'LGPL'],
- ['Lesser General Public License', 'LGPL'],
- ['LESSER GENERAL PUBLIC LICENSE', 'LGPL-2.1'],
- ['Lesser General Public License', 'LGPL-2.1'],
- ['GNU General Public License', 'GPL'],
- ['Gnu public license', 'GPL'],
- ['GNU Public License', 'GPL'],
- ['GNU GENERAL PUBLIC LICENSE', 'GPL'],
- ['MTI', 'MIT'],
- ['Mozilla Public License', 'MPL'],
- ['Universal Permissive License', 'UPL'],
- ['WTH', 'WTF'],
- ['WTFGPL', 'WTFPL'],
- ['-License', '']
-].sort(sortTranspositions)
-
-var TRANSPOSED = 0
-var CORRECT = 1
-
-// Simple corrections to nearly valid identifiers.
-var transforms = [
- // e.g. 'mit'
- function (argument) {
- return argument.toUpperCase()
- },
- // e.g. 'MIT '
- function (argument) {
- return argument.trim()
- },
- // e.g. 'M.I.T.'
- function (argument) {
- return argument.replace(/\./g, '')
- },
- // e.g. 'Apache- 2.0'
- function (argument) {
- return argument.replace(/\s+/g, '')
- },
- // e.g. 'CC BY 4.0''
- function (argument) {
- return argument.replace(/\s+/g, '-')
- },
- // e.g. 'LGPLv2.1'
- function (argument) {
- return argument.replace('v', '-')
- },
- // e.g. 'Apache 2.0'
- function (argument) {
- return argument.replace(/,?\s*(\d)/, '-$1')
- },
- // e.g. 'GPL 2'
- function (argument) {
- return argument.replace(/,?\s*(\d)/, '-$1.0')
- },
- // e.g. 'Apache Version 2.0'
- function (argument) {
- return argument
- .replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/, '-$2')
- },
- // e.g. 'Apache Version 2'
- function (argument) {
- return argument
- .replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/, '-$2.0')
- },
- // e.g. 'ZLIB'
- function (argument) {
- return argument[0].toUpperCase() + argument.slice(1)
- },
- // e.g. 'MPL/2.0'
- function (argument) {
- return argument.replace('/', '-')
- },
- // e.g. 'Apache 2'
- function (argument) {
- return argument
- .replace(/\s*V\s*(\d)/, '-$1')
- .replace(/(\d)$/, '$1.0')
- },
- // e.g. 'GPL-2.0', 'GPL-3.0'
- function (argument) {
- if (argument.indexOf('3.0') !== -1) {
- return argument + '-or-later'
- } else {
- return argument + '-only'
- }
- },
- // e.g. 'GPL-2.0-'
- function (argument) {
- return argument + 'only'
- },
- // e.g. 'GPL2'
- function (argument) {
- return argument.replace(/(\d)$/, '-$1.0')
- },
- // e.g. 'BSD 3'
- function (argument) {
- return argument.replace(/(-| )?(\d)$/, '-$2-Clause')
- },
- // e.g. 'BSD clause 3'
- function (argument) {
- return argument.replace(/(-| )clause(-| )(\d)/, '-$3-Clause')
- },
- // e.g. 'New BSD license'
- function (argument) {
- return argument.replace(/\b(Modified|New|Revised)(-| )?BSD((-| )License)?/i, 'BSD-3-Clause')
- },
- // e.g. 'Simplified BSD license'
- function (argument) {
- return argument.replace(/\bSimplified(-| )?BSD((-| )License)?/i, 'BSD-2-Clause')
- },
- // e.g. 'Free BSD license'
- function (argument) {
- return argument.replace(/\b(Free|Net)(-| )?BSD((-| )License)?/i, 'BSD-2-Clause-$1BSD')
- },
- // e.g. 'Clear BSD license'
- function (argument) {
- return argument.replace(/\bClear(-| )?BSD((-| )License)?/i, 'BSD-3-Clause-Clear')
- },
- // e.g. 'Old BSD License'
- function (argument) {
- return argument.replace(/\b(Old|Original)(-| )?BSD((-| )License)?/i, 'BSD-4-Clause')
- },
- // e.g. 'BY-NC-4.0'
- function (argument) {
- return 'CC-' + argument
- },
- // e.g. 'BY-NC'
- function (argument) {
- return 'CC-' + argument + '-4.0'
- },
- // e.g. 'Attribution-NonCommercial'
- function (argument) {
- return argument
- .replace('Attribution', 'BY')
- .replace('NonCommercial', 'NC')
- .replace('NoDerivatives', 'ND')
- .replace(/ (\d)/, '-$1')
- .replace(/ ?International/, '')
- },
- // e.g. 'Attribution-NonCommercial'
- function (argument) {
- return 'CC-' +
- argument
- .replace('Attribution', 'BY')
- .replace('NonCommercial', 'NC')
- .replace('NoDerivatives', 'ND')
- .replace(/ (\d)/, '-$1')
- .replace(/ ?International/, '') +
- '-4.0'
- }
-]
-
-var licensesWithVersions = spdxLicenseIds
- .map(function (id) {
- var match = /^(.*)-\d+\.\d+$/.exec(id)
- return match
- ? [match[0], match[1]]
- : [id, null]
- })
- .reduce(function (objectMap, item) {
- var key = item[1]
- objectMap[key] = objectMap[key] || []
- objectMap[key].push(item[0])
- return objectMap
- }, {})
-
-var licensesWithOneVersion = Object.keys(licensesWithVersions)
- .map(function makeEntries (key) {
- return [key, licensesWithVersions[key]]
- })
- .filter(function identifySoleVersions (item) {
- return (
- // Licenses has just one valid version suffix.
- item[1].length === 1 &&
- item[0] !== null &&
- // APL will be considered Apache, rather than APL-1.0
- item[0] !== 'APL'
- )
- })
- .map(function createLastResorts (item) {
- return [item[0], item[1][0]]
- })
-
-licensesWithVersions = undefined
-
-// If all else fails, guess that strings containing certain substrings
-// meant to identify certain licenses.
-var lastResorts = [
- ['UNLI', 'Unlicense'],
- ['WTF', 'WTFPL'],
- ['2 CLAUSE', 'BSD-2-Clause'],
- ['2-CLAUSE', 'BSD-2-Clause'],
- ['3 CLAUSE', 'BSD-3-Clause'],
- ['3-CLAUSE', 'BSD-3-Clause'],
- ['AFFERO', 'AGPL-3.0-or-later'],
- ['AGPL', 'AGPL-3.0-or-later'],
- ['APACHE', 'Apache-2.0'],
- ['ARTISTIC', 'Artistic-2.0'],
- ['Affero', 'AGPL-3.0-or-later'],
- ['BEER', 'Beerware'],
- ['BOOST', 'BSL-1.0'],
- ['BSD', 'BSD-2-Clause'],
- ['CDDL', 'CDDL-1.1'],
- ['ECLIPSE', 'EPL-1.0'],
- ['FUCK', 'WTFPL'],
- ['GNU', 'GPL-3.0-or-later'],
- ['LGPL', 'LGPL-3.0-or-later'],
- ['GPLV1', 'GPL-1.0-only'],
- ['GPL-1', 'GPL-1.0-only'],
- ['GPLV2', 'GPL-2.0-only'],
- ['GPL-2', 'GPL-2.0-only'],
- ['GPL', 'GPL-3.0-or-later'],
- ['MIT +NO-FALSE-ATTRIBS', 'MITNFA'],
- ['MIT', 'MIT'],
- ['MPL', 'MPL-2.0'],
- ['X11', 'X11'],
- ['ZLIB', 'Zlib']
-].concat(licensesWithOneVersion).sort(sortTranspositions)
-
-var SUBSTRING = 0
-var IDENTIFIER = 1
-
-var validTransformation = function (identifier) {
- for (var i = 0; i < transforms.length; i++) {
- var transformed = transforms[i](identifier).trim()
- if (transformed !== identifier && valid(transformed)) {
- return transformed
- }
- }
- return null
-}
-
-var validLastResort = function (identifier) {
- var upperCased = identifier.toUpperCase()
- for (var i = 0; i < lastResorts.length; i++) {
- var lastResort = lastResorts[i]
- if (upperCased.indexOf(lastResort[SUBSTRING]) > -1) {
- return lastResort[IDENTIFIER]
- }
- }
- return null
-}
-
-var anyCorrection = function (identifier, check) {
- for (var i = 0; i < transpositions.length; i++) {
- var transposition = transpositions[i]
- var transposed = transposition[TRANSPOSED]
- if (identifier.indexOf(transposed) > -1) {
- var corrected = identifier.replace(
- transposed,
- transposition[CORRECT]
- )
- var checked = check(corrected)
- if (checked !== null) {
- return checked
- }
- }
- }
- return null
-}
-
-module.exports = function (identifier, options) {
- options = options || {}
- var upgrade = options.upgrade === undefined ? true : !!options.upgrade
- function postprocess (value) {
- return upgrade ? upgradeGPLs(value) : value
- }
- var validArugment = (
- typeof identifier === 'string' &&
- identifier.trim().length !== 0
- )
- if (!validArugment) {
- throw Error('Invalid argument. Expected non-empty string.')
- }
- identifier = identifier.trim()
- if (valid(identifier)) {
- return postprocess(identifier)
- }
- var noPlus = identifier.replace(/\+$/, '').trim()
- if (valid(noPlus)) {
- return postprocess(noPlus)
- }
- var transformed = validTransformation(identifier)
- if (transformed !== null) {
- return postprocess(transformed)
- }
- transformed = anyCorrection(identifier, function (argument) {
- if (valid(argument)) {
- return argument
- }
- return validTransformation(argument)
- })
- if (transformed !== null) {
- return postprocess(transformed)
- }
- transformed = validLastResort(identifier)
- if (transformed !== null) {
- return postprocess(transformed)
- }
- transformed = anyCorrection(identifier, validLastResort)
- if (transformed !== null) {
- return postprocess(transformed)
- }
- return null
-}
-
-function upgradeGPLs (value) {
- if ([
- 'GPL-1.0', 'LGPL-1.0', 'AGPL-1.0',
- 'GPL-2.0', 'LGPL-2.0', 'AGPL-2.0',
- 'LGPL-2.1'
- ].indexOf(value) !== -1) {
- return value + '-only'
- } else if ([
- 'GPL-1.0+', 'GPL-2.0+', 'GPL-3.0+',
- 'LGPL-2.0+', 'LGPL-2.1+', 'LGPL-3.0+',
- 'AGPL-1.0+', 'AGPL-3.0+'
- ].indexOf(value) !== -1) {
- return value.replace(/\+$/, '-or-later')
- } else if (['GPL-3.0', 'LGPL-3.0', 'AGPL-3.0'].indexOf(value) !== -1) {
- return value + '-or-later'
- } else {
- return value
- }
-}
diff --git a/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/AUTHORS b/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/AUTHORS
deleted file mode 100644
index 257a76b9484c12..00000000000000
--- a/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/AUTHORS
+++ /dev/null
@@ -1,4 +0,0 @@
-C. Scott Ananian (http://cscott.net)
-Kyle E. Mitchell (https://kemitchell.com)
-Shinnosuke Watanabe
-Antoine Motet
diff --git a/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/LICENSE b/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/LICENSE
deleted file mode 100644
index 831618eaba6c89..00000000000000
--- a/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License
-
-Copyright (c) 2015 Kyle E. Mitchell & other authors listed in AUTHORS
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/index.js b/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/index.js
deleted file mode 100644
index 52fab560aea707..00000000000000
--- a/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-'use strict'
-
-var scan = require('./scan')
-var parse = require('./parse')
-
-module.exports = function (source) {
- return parse(scan(source))
-}
diff --git a/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/package.json b/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/package.json
deleted file mode 100644
index c9edc9f939cdf6..00000000000000
--- a/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "spdx-expression-parse",
- "description": "parse SPDX license expressions",
- "version": "3.0.1",
- "author": "Kyle E. Mitchell (https://kemitchell.com)",
- "files": [
- "AUTHORS",
- "index.js",
- "parse.js",
- "scan.js"
- ],
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- },
- "devDependencies": {
- "defence-cli": "^3.0.1",
- "replace-require-self": "^1.0.0",
- "standard": "^14.1.0"
- },
- "keywords": [
- "SPDX",
- "law",
- "legal",
- "license",
- "metadata",
- "package",
- "package.json",
- "standards"
- ],
- "license": "MIT",
- "repository": "jslicense/spdx-expression-parse.js",
- "scripts": {
- "lint": "standard",
- "test:readme": "defence -i javascript README.md | replace-require-self | node",
- "test:suite": "node test.js",
- "test": "npm run test:suite && npm run test:readme"
- }
-}
diff --git a/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/parse.js b/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/parse.js
deleted file mode 100644
index 5a00b45c5799c4..00000000000000
--- a/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/parse.js
+++ /dev/null
@@ -1,138 +0,0 @@
-'use strict'
-
-// The ABNF grammar in the spec is totally ambiguous.
-//
-// This parser follows the operator precedence defined in the
-// `Order of Precedence and Parentheses` section.
-
-module.exports = function (tokens) {
- var index = 0
-
- function hasMore () {
- return index < tokens.length
- }
-
- function token () {
- return hasMore() ? tokens[index] : null
- }
-
- function next () {
- if (!hasMore()) {
- throw new Error()
- }
- index++
- }
-
- function parseOperator (operator) {
- var t = token()
- if (t && t.type === 'OPERATOR' && operator === t.string) {
- next()
- return t.string
- }
- }
-
- function parseWith () {
- if (parseOperator('WITH')) {
- var t = token()
- if (t && t.type === 'EXCEPTION') {
- next()
- return t.string
- }
- throw new Error('Expected exception after `WITH`')
- }
- }
-
- function parseLicenseRef () {
- // TODO: Actually, everything is concatenated into one string
- // for backward-compatibility but it could be better to return
- // a nice structure.
- var begin = index
- var string = ''
- var t = token()
- if (t.type === 'DOCUMENTREF') {
- next()
- string += 'DocumentRef-' + t.string + ':'
- if (!parseOperator(':')) {
- throw new Error('Expected `:` after `DocumentRef-...`')
- }
- }
- t = token()
- if (t.type === 'LICENSEREF') {
- next()
- string += 'LicenseRef-' + t.string
- return { license: string }
- }
- index = begin
- }
-
- function parseLicense () {
- var t = token()
- if (t && t.type === 'LICENSE') {
- next()
- var node = { license: t.string }
- if (parseOperator('+')) {
- node.plus = true
- }
- var exception = parseWith()
- if (exception) {
- node.exception = exception
- }
- return node
- }
- }
-
- function parseParenthesizedExpression () {
- var left = parseOperator('(')
- if (!left) {
- return
- }
-
- var expr = parseExpression()
-
- if (!parseOperator(')')) {
- throw new Error('Expected `)`')
- }
-
- return expr
- }
-
- function parseAtom () {
- return (
- parseParenthesizedExpression() ||
- parseLicenseRef() ||
- parseLicense()
- )
- }
-
- function makeBinaryOpParser (operator, nextParser) {
- return function parseBinaryOp () {
- var left = nextParser()
- if (!left) {
- return
- }
-
- if (!parseOperator(operator)) {
- return left
- }
-
- var right = parseBinaryOp()
- if (!right) {
- throw new Error('Expected expression')
- }
- return {
- left: left,
- conjunction: operator.toLowerCase(),
- right: right
- }
- }
- }
-
- var parseAnd = makeBinaryOpParser('AND', parseAtom)
- var parseExpression = makeBinaryOpParser('OR', parseAnd)
-
- var node = parseExpression()
- if (!node || hasMore()) {
- throw new Error('Syntax error')
- }
- return node
-}
diff --git a/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/scan.js b/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/scan.js
deleted file mode 100644
index b74fce2e2c6632..00000000000000
--- a/deps/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse/scan.js
+++ /dev/null
@@ -1,131 +0,0 @@
-'use strict'
-
-var licenses = []
- .concat(require('spdx-license-ids'))
- .concat(require('spdx-license-ids/deprecated'))
-var exceptions = require('spdx-exceptions')
-
-module.exports = function (source) {
- var index = 0
-
- function hasMore () {
- return index < source.length
- }
-
- // `value` can be a regexp or a string.
- // If it is recognized, the matching source string is returned and
- // the index is incremented. Otherwise `undefined` is returned.
- function read (value) {
- if (value instanceof RegExp) {
- var chars = source.slice(index)
- var match = chars.match(value)
- if (match) {
- index += match[0].length
- return match[0]
- }
- } else {
- if (source.indexOf(value, index) === index) {
- index += value.length
- return value
- }
- }
- }
-
- function skipWhitespace () {
- read(/[ ]*/)
- }
-
- function operator () {
- var string
- var possibilities = ['WITH', 'AND', 'OR', '(', ')', ':', '+']
- for (var i = 0; i < possibilities.length; i++) {
- string = read(possibilities[i])
- if (string) {
- break
- }
- }
-
- if (string === '+' && index > 1 && source[index - 2] === ' ') {
- throw new Error('Space before `+`')
- }
-
- return string && {
- type: 'OPERATOR',
- string: string
- }
- }
-
- function idstring () {
- return read(/[A-Za-z0-9-.]+/)
- }
-
- function expectIdstring () {
- var string = idstring()
- if (!string) {
- throw new Error('Expected idstring at offset ' + index)
- }
- return string
- }
-
- function documentRef () {
- if (read('DocumentRef-')) {
- var string = expectIdstring()
- return { type: 'DOCUMENTREF', string: string }
- }
- }
-
- function licenseRef () {
- if (read('LicenseRef-')) {
- var string = expectIdstring()
- return { type: 'LICENSEREF', string: string }
- }
- }
-
- function identifier () {
- var begin = index
- var string = idstring()
-
- if (licenses.indexOf(string) !== -1) {
- return {
- type: 'LICENSE',
- string: string
- }
- } else if (exceptions.indexOf(string) !== -1) {
- return {
- type: 'EXCEPTION',
- string: string
- }
- }
-
- index = begin
- }
-
- // Tries to read the next token. Returns `undefined` if no token is
- // recognized.
- function parseToken () {
- // Ordering matters
- return (
- operator() ||
- documentRef() ||
- licenseRef() ||
- identifier()
- )
- }
-
- var tokens = []
- while (hasMore()) {
- skipWhitespace()
- if (!hasMore()) {
- break
- }
-
- var token = parseToken()
- if (!token) {
- throw new Error('Unexpected `' + source[index] +
- '` at offset ' + index)
- }
-
- tokens.push(token)
- }
- return tokens
-}
diff --git a/deps/npm/node_modules/spdx-correct/package.json b/deps/npm/node_modules/spdx-correct/package.json
deleted file mode 100644
index d77615638be66d..00000000000000
--- a/deps/npm/node_modules/spdx-correct/package.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "spdx-correct",
- "description": "correct invalid SPDX expressions",
- "version": "3.2.0",
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- },
- "devDependencies": {
- "defence-cli": "^3.0.1",
- "replace-require-self": "^1.0.0",
- "standard": "^14.3.4",
- "standard-markdown": "^6.0.0",
- "tape": "^5.0.1"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "SPDX",
- "law",
- "legal",
- "license",
- "metadata"
- ],
- "license": "Apache-2.0",
- "repository": "jslicense/spdx-correct.js",
- "scripts": {
- "lint": "standard && standard-markdown README.md",
- "test": "defence README.md | replace-require-self | node && node test.js"
- }
-}
diff --git a/deps/npm/node_modules/spdx-license-ids/index.json b/deps/npm/node_modules/spdx-license-ids/index.json
index b09dc98435c9eb..f51552687007bd 100644
--- a/deps/npm/node_modules/spdx-license-ids/index.json
+++ b/deps/npm/node_modules/spdx-license-ids/index.json
@@ -12,6 +12,7 @@
"AGPL-1.0-or-later",
"AGPL-3.0-only",
"AGPL-3.0-or-later",
+ "ALGLIB-Documentation",
"AMD-newlib",
"AMDPLPA",
"AML",
@@ -33,6 +34,7 @@
"Adobe-Display-PostScript",
"Adobe-Glyph",
"Adobe-Utopia",
+ "Advanced-Cryptics-Dictionary",
"Afmparse",
"Aladdin",
"Apache-1.0",
@@ -46,6 +48,7 @@
"Artistic-2.0",
"Artistic-dist",
"Aspell-RU",
+ "BOLA-1.1",
"BSD-1-Clause",
"BSD-2-Clause",
"BSD-2-Clause-Darwin",
@@ -65,6 +68,7 @@
"BSD-3-Clause-No-Nuclear-Warranty",
"BSD-3-Clause-Open-MPI",
"BSD-3-Clause-Sun",
+ "BSD-3-Clause-Tso",
"BSD-3-Clause-acpica",
"BSD-3-Clause-flex",
"BSD-4-Clause",
@@ -75,6 +79,7 @@
"BSD-Advertising-Acknowledgement",
"BSD-Attribution-HPND-disclaimer",
"BSD-Inferno-Nettverk",
+ "BSD-Mark-Modifications",
"BSD-Protection",
"BSD-Source-Code",
"BSD-Source-beginning-file",
@@ -96,9 +101,11 @@
"Borceux",
"Brian-Gladman-2-Clause",
"Brian-Gladman-3-Clause",
+ "Buddy",
"C-UDA-1.0",
"CAL-1.0",
"CAL-1.0-Combined-Work-Exception",
+ "CAPEC-tou",
"CATOSL-1.1",
"CC-BY-1.0",
"CC-BY-2.0",
@@ -216,6 +223,9 @@
"EPICS",
"EPL-1.0",
"EPL-2.0",
+ "ESA-PL-permissive-2.4",
+ "ESA-PL-strong-copyleft-2.4",
+ "ESA-PL-weak-copyleft-2.4",
"EUDatagrid",
"EUPL-1.0",
"EUPL-1.1",
@@ -289,6 +299,7 @@
"HPND-Markus-Kuhn",
"HPND-Netrek",
"HPND-Pbmplus",
+ "HPND-SMC",
"HPND-UC",
"HPND-UC-export-US",
"HPND-doc",
@@ -303,6 +314,7 @@
"HPND-sell-variant",
"HPND-sell-variant-MIT-disclaimer",
"HPND-sell-variant-MIT-disclaimer-rev",
+ "HPND-sell-variant-critical-systems",
"HTMLTIDY",
"HaskellReport",
"Hippocratic-2.1",
@@ -315,6 +327,7 @@
"IPL-1.0",
"ISC",
"ISC-Veillard",
+ "ISO-permission",
"ImageMagick",
"Imlib2",
"Info-ZIP",
@@ -372,6 +385,7 @@
"MIT-Festival",
"MIT-Khronos-old",
"MIT-Modern-Variant",
+ "MIT-STK",
"MIT-Wu",
"MIT-advertising",
"MIT-enna",
@@ -380,6 +394,7 @@
"MIT-testregex",
"MITNFA",
"MMIXware",
+ "MMPL-1.0.1",
"MPEG-SSG",
"MPL-1.0",
"MPL-1.1",
@@ -411,6 +426,7 @@
"NGPL",
"NICTA-1.0",
"NIST-PD",
+ "NIST-PD-TNT",
"NIST-PD-fallback",
"NIST-Software",
"NLOD-1.0",
@@ -470,12 +486,15 @@
"OPL-1.0",
"OPL-UK-3.0",
"OPUBL-1.0",
+ "OSC-1.0",
"OSET-PL-2.1",
"OSL-1.0",
"OSL-1.1",
"OSL-2.0",
"OSL-2.1",
"OSL-3.0",
+ "OSSP",
+ "OpenMDW-1.0",
"OpenPBS-2.3",
"OpenSSL",
"OpenSSL-standalone",
@@ -486,6 +505,7 @@
"PHP-3.01",
"PPL",
"PSF-2.0",
+ "ParaType-Free-Font-1.3",
"Parity-6.0.0",
"Parity-7.0.0",
"Pixar",
@@ -514,6 +534,7 @@
"SGI-B-1.1",
"SGI-B-2.0",
"SGI-OpenGL",
+ "SGMLUG-PM",
"SGP4",
"SHL-0.5",
"SHL-0.51",
@@ -561,6 +582,7 @@
"TTYP0",
"TU-Berlin-1.0",
"TU-Berlin-2.0",
+ "TekHVC",
"TermReadKey",
"ThirdEye",
"TrustedQSL",
@@ -570,6 +592,7 @@
"UPL-1.0",
"URT-RLE",
"Ubuntu-font-1.0",
+ "UnRAR",
"Unicode-3.0",
"Unicode-DFS-2015",
"Unicode-DFS-2016",
@@ -581,15 +604,19 @@
"VOSTROM",
"VSL-1.0",
"Vim",
+ "Vixie-Cron",
"W3C",
"W3C-19980720",
"W3C-20150513",
+ "WTFNMFPL",
"WTFPL",
"Watcom-1.0",
"Widget-Workshop",
+ "WordNet",
"Wsuipa",
"X11",
"X11-distribute-modifications-variant",
+ "X11-no-permit-persons",
"X11-swapped",
"XFree86-1.1",
"XSkat",
@@ -630,6 +657,7 @@
"gnuplot",
"gtkbook",
"hdparm",
+ "hyphen-bulgarian",
"iMatix",
"jove",
"libpng-1.6.35",
diff --git a/deps/npm/node_modules/spdx-license-ids/package.json b/deps/npm/node_modules/spdx-license-ids/package.json
index 201e888cecfaa8..9c9ba083889a7e 100644
--- a/deps/npm/node_modules/spdx-license-ids/package.json
+++ b/deps/npm/node_modules/spdx-license-ids/package.json
@@ -1,6 +1,6 @@
{
"name": "spdx-license-ids",
- "version": "3.0.22",
+ "version": "3.0.23",
"description": "A list of SPDX license identifiers",
"repository": "jslicense/spdx-license-ids",
"author": "Shinnosuke Watanabe (https://github.com/shinnn)",
diff --git a/deps/npm/node_modules/ssri/lib/index.js b/deps/npm/node_modules/ssri/lib/index.js
index 9acc4322612483..00102d65472463 100644
--- a/deps/npm/node_modules/ssri/lib/index.js
+++ b/deps/npm/node_modules/ssri/lib/index.js
@@ -5,14 +5,21 @@ const { Minipass } = require('minipass')
const SPEC_ALGORITHMS = ['sha512', 'sha384', 'sha256']
const DEFAULT_ALGORITHMS = ['sha512']
+const NODE_HASHES = crypto.getHashes()
-// TODO: this should really be a hardcoded list of algorithms we support,
-// rather than [a-z0-9].
+// TODO: this should really be a hardcoded list of algorithms we support, rather than [a-z0-9].
const BASE64_REGEX = /^[a-z0-9+/]+(?:=?=?)$/i
const SRI_REGEX = /^([a-z0-9]+)-([^?]+)(\?[?\S*]*)?$/
const STRICT_SRI_REGEX = /^([a-z0-9]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)?$/
const VCHAR_REGEX = /^[\x21-\x7E]+$/
+// This is a Best Effort™ at a reasonable priority for hash algos
+const DEFAULT_PRIORITY = [
+ 'md5', 'whirlpool', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512',
+ // TODO - it's unclear _which_ of these Node will actually use as its name for the algorithm, so we guesswork it based on the OpenSSL names.
+ 'sha3', 'sha3-256', 'sha3-384', 'sha3-512', 'sha3_256', 'sha3_384', 'sha3_512',
+].filter(algo => NODE_HASHES.includes(algo))
+
const getOptString = options => options?.length ? `?${options.join('?')}` : ''
class IntegrityStream extends Minipass {
@@ -99,7 +106,6 @@ class IntegrityStream extends Minipass {
// Integrity verification mode
const match = this.goodSri && newSri.match(this.sri, this.opts)
if (typeof this.expectedSize === 'number' && this.size !== this.expectedSize) {
- /* eslint-disable-next-line max-len */
const err = new Error(`stream size mismatch when checking ${this.sri}.\n Wanted: ${this.expectedSize}\n Found: ${this.size}`)
err.code = 'EBADSIZE'
err.found = this.size
@@ -107,7 +113,6 @@ class IntegrityStream extends Minipass {
err.sri = this.sri
this.emit('error', err)
} else if (this.sri && !match) {
- /* eslint-disable-next-line max-len */
const err = new Error(`${this.sri} integrity checksum failed when using ${this.algorithm}: wanted ${this.digests} but got ${newSri}. (${this.size} bytes)`)
err.code = 'EINTEGRITY'
err.found = newSri
@@ -137,8 +142,7 @@ class Hash {
const strict = opts?.strict
this.source = hash.trim()
- // set default values so that we make V8 happy to
- // always see a familiar object template.
+ // set default values so that we make V8 happy to always see a familiar object template.
this.digest = ''
this.algorithm = ''
this.options = []
@@ -156,6 +160,9 @@ class Hash {
if (strict && !SPEC_ALGORITHMS.includes(match[1])) {
return
}
+ if (!NODE_HASHES.includes(match[1])) {
+ return
+ }
this.algorithm = match[1]
this.digest = match[2]
@@ -198,15 +205,12 @@ class Hash {
toString (opts) {
if (opts?.strict) {
- // Strict mode enforces the standard as close to the foot of the
- // letter as it can.
+ // Strict mode enforces the standard as close to the foot of the letter as it can.
if (!(
// The spec has very restricted productions for algorithms.
// https://www.w3.org/TR/CSP2/#source-list-syntax
SPEC_ALGORITHMS.includes(this.algorithm) &&
- // Usually, if someone insists on using a "different" base64, we
- // leave it as-is, since there's multiple standards, and the
- // specified is not a URL-safe variant.
+ // Usually, if someone insists on using a "different" base64, we leave it as-is, since there are multiple standards, and the specified is not a URL-safe variant.
// https://www.w3.org/TR/CSP2/#base64_value
this.digest.match(BASE64_REGEX) &&
// Option syntax is strictly visual chars.
@@ -300,8 +304,7 @@ class Integrity {
return parse(this, { single: true }).hexDigest()
}
- // add additional hashes to an integrity value, but prevent
- // *changing* an existing integrity hash.
+ // add additional hashes to an integrity value, but prevent *changing* an existing integrity hash.
merge (integrity, opts) {
const other = parse(integrity, opts)
for (const algo in other) {
@@ -323,33 +326,25 @@ class Integrity {
return false
}
const algo = other.pickAlgorithm(opts, Object.keys(this))
- return (
- !!algo &&
- this[algo] &&
- other[algo] &&
- this[algo].find(hash =>
- other[algo].find(otherhash =>
- hash.digest === otherhash.digest
- )
+ return !!algo && this[algo].find(hash =>
+ other[algo].find(otherhash =>
+ hash.digest === otherhash.digest
)
) || false
}
- // Pick the highest priority algorithm present, optionally also limited to a
- // set of hashes found in another integrity. When limiting it may return
- // nothing.
+ // Pick the highest priority algorithm present, optionally also limited to a set of hashes found in another integrity.
+ // When limiting it may return nothing.
pickAlgorithm (opts, hashes) {
const pickAlgorithm = opts?.pickAlgorithm || getPrioritizedHash
- const keys = Object.keys(this).filter(k => {
- if (hashes?.length) {
- return hashes.includes(k)
- }
- return true
- })
+ let keys = Object.keys(this)
+ if (hashes?.length) {
+ keys = keys.filter(k => hashes.includes(k))
+ }
if (keys.length) {
return keys.reduce((acc, algo) => pickAlgorithm(acc, algo) || acc)
}
- // no intersection between this and hashes,
+ // no intersection between this and hashes
return null
}
}
@@ -380,7 +375,7 @@ function _parse (integrity, opts) {
const hash = new Hash(string, opts)
if (hash.algorithm && hash.digest) {
const algo = hash.algorithm
- if (!acc[algo]) {
+ if (!Object.keys(acc).includes(algo)) {
acc[algo] = []
}
acc[algo].push(hash)
@@ -421,9 +416,7 @@ function fromData (data, opts) {
`${algo}-${digest}${optString}`,
opts
)
- /* istanbul ignore else - it would be VERY strange if the string we
- * just calculated with an algo did not have an algo or digest.
- */
+ // istanbul ignore else - it would be VERY strange if the string we just calculated with an algo did not have an algo or digest.
if (hash.algorithm && hash.digest) {
const hashAlgo = hash.algorithm
if (!acc[hashAlgo]) {
@@ -473,7 +466,6 @@ function checkData (data, sri, opts) {
if (match || !(opts.error)) {
return match
} else if (typeof opts.size === 'number' && (data.length !== opts.size)) {
- /* eslint-disable-next-line max-len */
const err = new Error(`data size mismatch when checking ${sri}.\n Wanted: ${opts.size}\n Found: ${data.length}`)
err.code = 'EBADSIZE'
err.found = data.length
@@ -481,7 +473,6 @@ function checkData (data, sri, opts) {
err.sri = sri
throw err
} else {
- /* eslint-disable-next-line max-len */
const err = new Error(`Integrity checksum failed when using ${algorithm}: Wanted ${sri}, but got ${newSri}. (${data.length} bytes)`)
err.code = 'EINTEGRITY'
err.found = newSri
@@ -538,20 +529,11 @@ function createIntegrity (opts) {
digest: function () {
const integrity = algorithms.reduce((acc, algo) => {
const digest = hashes.shift().digest('base64')
- const hash = new Hash(
- `${algo}-${digest}${optString}`,
- opts
- )
- /* istanbul ignore else - it would be VERY strange if the hash we
- * just calculated with an algo did not have an algo or digest.
- */
- if (hash.algorithm && hash.digest) {
- const hashAlgo = hash.algorithm
- if (!acc[hashAlgo]) {
- acc[hashAlgo] = []
- }
- acc[hashAlgo].push(hash)
+ const hash = new Hash(`${algo}-${digest}${optString}`, opts)
+ if (!acc[hash.algorithm]) {
+ acc[hash.algorithm] = []
}
+ acc[hash.algorithm].push(hash)
return acc
}, new Integrity())
@@ -560,18 +542,6 @@ function createIntegrity (opts) {
}
}
-const NODE_HASHES = crypto.getHashes()
-
-// This is a Best Effort™ at a reasonable priority for hash algos
-const DEFAULT_PRIORITY = [
- 'md5', 'whirlpool', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512',
- // TODO - it's unclear _which_ of these Node will actually use as its name
- // for the algorithm, so we guesswork it based on the OpenSSL names.
- 'sha3',
- 'sha3-256', 'sha3-384', 'sha3-512',
- 'sha3_256', 'sha3_384', 'sha3_512',
-].filter(algo => NODE_HASHES.includes(algo))
-
function getPrioritizedHash (algo1, algo2) {
/* eslint-disable-next-line max-len */
return DEFAULT_PRIORITY.indexOf(algo1.toLowerCase()) >= DEFAULT_PRIORITY.indexOf(algo2.toLowerCase())
diff --git a/deps/npm/node_modules/ssri/package.json b/deps/npm/node_modules/ssri/package.json
index 8781bdf5f80c01..d4769fc2907594 100644
--- a/deps/npm/node_modules/ssri/package.json
+++ b/deps/npm/node_modules/ssri/package.json
@@ -1,6 +1,6 @@
{
"name": "ssri",
- "version": "13.0.0",
+ "version": "13.0.1",
"description": "Standard Subresource Integrity library -- parses, serializes, generates, and verifies integrity metadata according to the SRI spec.",
"main": "lib/index.js",
"files": [
@@ -11,21 +11,16 @@
"prerelease": "npm t",
"postrelease": "npm publish",
"posttest": "npm run lint",
- "test": "tap",
+ "test": "node --test './test/**/*.js'",
"coverage": "tap",
"lint": "npm run eslint",
"postlint": "template-oss-check",
"template-oss-apply": "template-oss-apply --force",
"lintfix": "npm run eslint -- --fix",
- "snap": "tap",
- "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""
- },
- "tap": {
- "check-coverage": true,
- "nyc-arg": [
- "--exclude",
- "tap-snapshots/**"
- ]
+ "snap": "node --test --test-update-snapshots './test/**/*.js'",
+ "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\"",
+ "test:node20": "node --test test",
+ "test:cover": "node --test --experimental-test-coverage --test-timeout=3000 --test-coverage-lines=100 --test-coverage-functions=100 --test-coverage-branches=100 './test/**/*.js'"
},
"repository": {
"type": "git",
@@ -51,16 +46,21 @@
"minipass": "^7.0.3"
},
"devDependencies": {
- "@npmcli/eslint-config": "^5.0.0",
- "@npmcli/template-oss": "4.27.1",
- "tap": "^16.0.1"
+ "@npmcli/eslint-config": "^6.0.0",
+ "@npmcli/template-oss": "4.28.1",
+ "benchmark": "^2.1.4"
},
"engines": {
"node": "^20.17.0 || >=22.9.0"
},
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
- "version": "4.27.1",
- "publish": "true"
+ "version": "4.28.1",
+ "publish": "true",
+ "allowPaths": [
+ "benchmarks/"
+ ],
+ "testRunner": "node:test",
+ "latestVersion": 24
}
}
diff --git a/deps/npm/node_modules/string-width/index.js b/deps/npm/node_modules/string-width/index.js
deleted file mode 100644
index f4d261a96a099e..00000000000000
--- a/deps/npm/node_modules/string-width/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-'use strict';
-const stripAnsi = require('strip-ansi');
-const isFullwidthCodePoint = require('is-fullwidth-code-point');
-const emojiRegex = require('emoji-regex');
-
-const stringWidth = string => {
- if (typeof string !== 'string' || string.length === 0) {
- return 0;
- }
-
- string = stripAnsi(string);
-
- if (string.length === 0) {
- return 0;
- }
-
- string = string.replace(emojiRegex(), ' ');
-
- let width = 0;
-
- for (let i = 0; i < string.length; i++) {
- const code = string.codePointAt(i);
-
- // Ignore control characters
- if (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {
- continue;
- }
-
- // Ignore combining characters
- if (code >= 0x300 && code <= 0x36F) {
- continue;
- }
-
- // Surrogates
- if (code > 0xFFFF) {
- i++;
- }
-
- width += isFullwidthCodePoint(code) ? 2 : 1;
- }
-
- return width;
-};
-
-module.exports = stringWidth;
-// TODO: remove this in the next major version
-module.exports.default = stringWidth;
diff --git a/deps/npm/node_modules/string-width/license b/deps/npm/node_modules/string-width/license
deleted file mode 100644
index e7af2f77107d73..00000000000000
--- a/deps/npm/node_modules/string-width/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) Sindre Sorhus (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/deps/npm/node_modules/string-width/package.json b/deps/npm/node_modules/string-width/package.json
deleted file mode 100644
index 28ba7b4cae9bf9..00000000000000
--- a/deps/npm/node_modules/string-width/package.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "name": "string-width",
- "version": "4.2.3",
- "description": "Get the visual width of a string - the number of columns required to display it",
- "license": "MIT",
- "repository": "sindresorhus/string-width",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "string",
- "character",
- "unicode",
- "width",
- "visual",
- "column",
- "columns",
- "fullwidth",
- "full-width",
- "full",
- "ansi",
- "escape",
- "codes",
- "cli",
- "command-line",
- "terminal",
- "console",
- "cjk",
- "chinese",
- "japanese",
- "korean",
- "fixed-width"
- ],
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "devDependencies": {
- "ava": "^1.4.1",
- "tsd": "^0.7.1",
- "xo": "^0.24.0"
- }
-}
diff --git a/deps/npm/node_modules/strip-ansi/index.js b/deps/npm/node_modules/strip-ansi/index.js
deleted file mode 100644
index 9a593dfcd1fd5c..00000000000000
--- a/deps/npm/node_modules/strip-ansi/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-'use strict';
-const ansiRegex = require('ansi-regex');
-
-module.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;
diff --git a/deps/npm/node_modules/strip-ansi/license b/deps/npm/node_modules/strip-ansi/license
deleted file mode 100644
index e7af2f77107d73..00000000000000
--- a/deps/npm/node_modules/strip-ansi/license
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) Sindre Sorhus (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/deps/npm/node_modules/strip-ansi/package.json b/deps/npm/node_modules/strip-ansi/package.json
deleted file mode 100644
index 1a41108d42831c..00000000000000
--- a/deps/npm/node_modules/strip-ansi/package.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "name": "strip-ansi",
- "version": "6.0.1",
- "description": "Strip ANSI escape codes from a string",
- "license": "MIT",
- "repository": "chalk/strip-ansi",
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=8"
- },
- "scripts": {
- "test": "xo && ava && tsd"
- },
- "files": [
- "index.js",
- "index.d.ts"
- ],
- "keywords": [
- "strip",
- "trim",
- "remove",
- "ansi",
- "styles",
- "color",
- "colour",
- "colors",
- "terminal",
- "console",
- "string",
- "tty",
- "escape",
- "formatting",
- "rgb",
- "256",
- "shell",
- "xterm",
- "log",
- "logging",
- "command-line",
- "text"
- ],
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "devDependencies": {
- "ava": "^2.4.0",
- "tsd": "^0.10.0",
- "xo": "^0.25.3"
- }
-}
diff --git a/deps/npm/node_modules/tar/dist/commonjs/index.min.js b/deps/npm/node_modules/tar/dist/commonjs/index.min.js
new file mode 100644
index 00000000000000..4ae8fa0dbc3e38
--- /dev/null
+++ b/deps/npm/node_modules/tar/dist/commonjs/index.min.js
@@ -0,0 +1,4 @@
+"use strict";var d=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports);var We=d(C=>{"use strict";var yo=C&&C.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(C,"__esModule",{value:!0});C.Minipass=C.isWritable=C.isReadable=C.isStream=void 0;var Br=typeof process=="object"&&process?process:{stdout:null,stderr:null},es=require("node:events"),xr=yo(require("node:stream")),Eo=require("node:string_decoder"),bo=s=>!!s&&typeof s=="object"&&(s instanceof Wt||s instanceof xr.default||(0,C.isReadable)(s)||(0,C.isWritable)(s));C.isStream=bo;var So=s=>!!s&&typeof s=="object"&&s instanceof es.EventEmitter&&typeof s.pipe=="function"&&s.pipe!==xr.default.Writable.prototype.pipe;C.isReadable=So;var go=s=>!!s&&typeof s=="object"&&s instanceof es.EventEmitter&&typeof s.write=="function"&&typeof s.end=="function";C.isWritable=go;var le=Symbol("EOF"),ue=Symbol("maybeEmitEnd"),_e=Symbol("emittedEnd"),zt=Symbol("emittingEnd"),ft=Symbol("emittedError"),kt=Symbol("closed"),zr=Symbol("read"),jt=Symbol("flush"),kr=Symbol("flushChunk"),K=Symbol("encoding"),Ue=Symbol("decoder"),R=Symbol("flowing"),dt=Symbol("paused"),qe=Symbol("resume"),O=Symbol("buffer"),I=Symbol("pipes"),v=Symbol("bufferLength"),Ki=Symbol("bufferPush"),xt=Symbol("bufferShift"),N=Symbol("objectMode"),y=Symbol("destroyed"),Vi=Symbol("error"),$i=Symbol("emitData"),jr=Symbol("emitEnd"),Xi=Symbol("emitEnd2"),J=Symbol("async"),Qi=Symbol("abort"),Ut=Symbol("aborted"),mt=Symbol("signal"),Pe=Symbol("dataListeners"),k=Symbol("discarded"),pt=s=>Promise.resolve().then(s),Ro=s=>s(),Oo=s=>s==="end"||s==="finish"||s==="prefinish",vo=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,To=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),qt=class{src;dest;opts;ondrain;constructor(e,t,i){this.src=e,this.dest=t,this.opts=i,this.ondrain=()=>e[qe](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},Ji=class extends qt{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,i){super(e,t,i),this.proxyErrors=r=>t.emit("error",r),e.on("error",this.proxyErrors)}},Do=s=>!!s.objectMode,Po=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",Wt=class extends es.EventEmitter{[R]=!1;[dt]=!1;[I]=[];[O]=[];[N];[K];[J];[Ue];[le]=!1;[_e]=!1;[zt]=!1;[kt]=!1;[ft]=null;[v]=0;[y]=!1;[mt];[Ut]=!1;[Pe]=0;[k]=!1;writable=!0;readable=!0;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Do(t)?(this[N]=!0,this[K]=null):Po(t)?(this[K]=t.encoding,this[N]=!1):(this[N]=!1,this[K]=null),this[J]=!!t.async,this[Ue]=this[K]?new Eo.StringDecoder(this[K]):null,t&&t.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[O]}),t&&t.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[I]});let{signal:i}=t;i&&(this[mt]=i,i.aborted?this[Qi]():i.addEventListener("abort",()=>this[Qi]()))}get bufferLength(){return this[v]}get encoding(){return this[K]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[N]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[J]}set async(e){this[J]=this[J]||!!e}[Qi](){this[Ut]=!0,this.emit("abort",this[mt]?.reason),this.destroy(this[mt]?.reason)}get aborted(){return this[Ut]}set aborted(e){}write(e,t,i){if(this[Ut])return!1;if(this[le])throw new Error("write after end");if(this[y])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(i=t,t="utf8"),t||(t="utf8");let r=this[J]?pt:Ro;if(!this[N]&&!Buffer.isBuffer(e)){if(To(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(vo(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[N]?(this[R]&&this[v]!==0&&this[jt](!0),this[R]?this.emit("data",e):this[Ki](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[R]):e.length?(typeof e=="string"&&!(t===this[K]&&!this[Ue]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[K]&&(e=this[Ue].write(e)),this[R]&&this[v]!==0&&this[jt](!0),this[R]?this.emit("data",e):this[Ki](e),this[v]!==0&&this.emit("readable"),i&&r(i),this[R]):(this[v]!==0&&this.emit("readable"),i&&r(i),this[R])}read(e){if(this[y])return null;if(this[k]=!1,this[v]===0||e===0||e&&e>this[v])return this[ue](),null;this[N]&&(e=null),this[O].length>1&&!this[N]&&(this[O]=[this[K]?this[O].join(""):Buffer.concat(this[O],this[v])]);let t=this[zr](e||null,this[O][0]);return this[ue](),t}[zr](e,t){if(this[N])this[xt]();else{let i=t;e===i.length||e===null?this[xt]():typeof i=="string"?(this[O][0]=i.slice(e),t=i.slice(0,e),this[v]-=e):(this[O][0]=i.subarray(e),t=i.subarray(0,e),this[v]-=e)}return this.emit("data",t),!this[O].length&&!this[le]&&this.emit("drain"),t}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t="utf8"),e!==void 0&&this.write(e,t),i&&this.once("end",i),this[le]=!0,this.writable=!1,(this[R]||!this[dt])&&this[ue](),this}[qe](){this[y]||(!this[Pe]&&!this[I].length&&(this[k]=!0),this[dt]=!1,this[R]=!0,this.emit("resume"),this[O].length?this[jt]():this[le]?this[ue]():this.emit("drain"))}resume(){return this[qe]()}pause(){this[R]=!1,this[dt]=!0,this[k]=!1}get destroyed(){return this[y]}get flowing(){return this[R]}get paused(){return this[dt]}[Ki](e){this[N]?this[v]+=1:this[v]+=e.length,this[O].push(e)}[xt](){return this[N]?this[v]-=1:this[v]-=this[O][0].length,this[O].shift()}[jt](e=!1){do;while(this[kr](this[xt]())&&this[O].length);!e&&!this[O].length&&!this[le]&&this.emit("drain")}[kr](e){return this.emit("data",e),this[R]}pipe(e,t){if(this[y])return e;this[k]=!1;let i=this[_e];return t=t||{},e===Br.stdout||e===Br.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,i?t.end&&e.end():(this[I].push(t.proxyErrors?new Ji(this,e,t):new qt(this,e,t)),this[J]?pt(()=>this[qe]()):this[qe]()),e}unpipe(e){let t=this[I].find(i=>i.dest===e);t&&(this[I].length===1?(this[R]&&this[Pe]===0&&(this[R]=!1),this[I]=[]):this[I].splice(this[I].indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let i=super.on(e,t);if(e==="data")this[k]=!1,this[Pe]++,!this[I].length&&!this[R]&&this[qe]();else if(e==="readable"&&this[v]!==0)super.emit("readable");else if(Oo(e)&&this[_e])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[ft]){let r=t;this[J]?pt(()=>r.call(this,this[ft])):r.call(this,this[ft])}return i}removeListener(e,t){return this.off(e,t)}off(e,t){let i=super.off(e,t);return e==="data"&&(this[Pe]=this.listeners("data").length,this[Pe]===0&&!this[k]&&!this[I].length&&(this[R]=!1)),i}removeAllListeners(e){let t=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[Pe]=0,!this[k]&&!this[I].length&&(this[R]=!1)),t}get emittedEnd(){return this[_e]}[ue](){!this[zt]&&!this[_e]&&!this[y]&&this[O].length===0&&this[le]&&(this[zt]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[kt]&&this.emit("close"),this[zt]=!1)}emit(e,...t){let i=t[0];if(e!=="error"&&e!=="close"&&e!==y&&this[y])return!1;if(e==="data")return!this[N]&&!i?!1:this[J]?(pt(()=>this[$i](i)),!0):this[$i](i);if(e==="end")return this[jr]();if(e==="close"){if(this[kt]=!0,!this[_e]&&!this[y])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[ft]=i,super.emit(Vi,i);let n=!this[mt]||this.listeners("error").length?super.emit("error",i):!1;return this[ue](),n}else if(e==="resume"){let n=super.emit("resume");return this[ue](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let r=super.emit(e,...t);return this[ue](),r}[$i](e){for(let i of this[I])i.dest.write(e)===!1&&this.pause();let t=this[k]?!1:super.emit("data",e);return this[ue](),t}[jr](){return this[_e]?!1:(this[_e]=!0,this.readable=!1,this[J]?(pt(()=>this[Xi]()),!0):this[Xi]())}[Xi](){if(this[Ue]){let t=this[Ue].end();if(t){for(let i of this[I])i.dest.write(t);this[k]||super.emit("data",t)}}for(let t of this[I])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[N]||(e.dataLength=0);let t=this.promise();return this.on("data",i=>{e.push(i),this[N]||(e.dataLength+=i.length)}),await t,e}async concat(){if(this[N])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[K]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(y,()=>t(new Error("stream destroyed"))),this.on("error",i=>t(i)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[k]=!1;let e=!1,t=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return t();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[le])return t();let n,o,a=c=>{this.off("data",h),this.off("end",l),this.off(y,u),t(),o(c)},h=c=>{this.off("error",a),this.off("end",l),this.off(y,u),this.pause(),n({value:c,done:!!this[le]})},l=()=>{this.off("error",a),this.off("data",h),this.off(y,u),t(),n({done:!0,value:void 0})},u=()=>a(new Error("stream destroyed"));return new Promise((c,E)=>{o=E,n=c,this.once(y,u),this.once("error",a),this.once("end",l),this.once("data",h)})},throw:t,return:t,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[k]=!1;let e=!1,t=()=>(this.pause(),this.off(Vi,t),this.off(y,t),this.off("end",t),e=!0,{done:!0,value:void 0}),i=()=>{if(e)return t();let r=this.read();return r===null?t():{done:!1,value:r}};return this.once("end",t),this.once(Vi,t),this.once(y,t),{next:i,throw:t,return:t,[Symbol.iterator](){return this}}}destroy(e){if(this[y])return e?this.emit("error",e):this.emit(y),this;this[y]=!0,this[k]=!0,this[O].length=0,this[v]=0;let t=this;return typeof t.close=="function"&&!this[kt]&&t.close(),e?this.emit("error",e):this.emit(y),this}static get isStream(){return C.isStream}};C.Minipass=Wt});var Ke=d(W=>{"use strict";var Ur=W&&W.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(W,"__esModule",{value:!0});W.WriteStreamSync=W.WriteStream=W.ReadStreamSync=W.ReadStream=void 0;var No=Ur(require("events")),B=Ur(require("fs")),Mo=We(),Lo=B.default.writev,ye=Symbol("_autoClose"),$=Symbol("_close"),_t=Symbol("_ended"),p=Symbol("_fd"),ts=Symbol("_finished"),fe=Symbol("_flags"),is=Symbol("_flush"),os=Symbol("_handleChunk"),as=Symbol("_makeBuf"),yt=Symbol("_mode"),Ht=Symbol("_needDrain"),Ge=Symbol("_onerror"),Ye=Symbol("_onopen"),ss=Symbol("_onread"),He=Symbol("_onwrite"),Ee=Symbol("_open"),V=Symbol("_path"),we=Symbol("_pos"),ee=Symbol("_queue"),Ze=Symbol("_read"),rs=Symbol("_readSize"),ce=Symbol("_reading"),wt=Symbol("_remain"),ns=Symbol("_size"),Zt=Symbol("_write"),Ne=Symbol("_writing"),Gt=Symbol("_defaultFlag"),Me=Symbol("_errored"),Yt=class extends Mo.Minipass{[Me]=!1;[p];[V];[rs];[ce]=!1;[ns];[wt];[ye];constructor(e,t){if(t=t||{},super(t),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Me]=!1,this[p]=typeof t.fd=="number"?t.fd:void 0,this[V]=e,this[rs]=t.readSize||16*1024*1024,this[ce]=!1,this[ns]=typeof t.size=="number"?t.size:1/0,this[wt]=this[ns],this[ye]=typeof t.autoClose=="boolean"?t.autoClose:!0,typeof this[p]=="number"?this[Ze]():this[Ee]()}get fd(){return this[p]}get path(){return this[V]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[Ee](){B.default.open(this[V],"r",(e,t)=>this[Ye](e,t))}[Ye](e,t){e?this[Ge](e):(this[p]=t,this.emit("open",t),this[Ze]())}[as](){return Buffer.allocUnsafe(Math.min(this[rs],this[wt]))}[Ze](){if(!this[ce]){this[ce]=!0;let e=this[as]();if(e.length===0)return process.nextTick(()=>this[ss](null,0,e));B.default.read(this[p],e,0,e.length,null,(t,i,r)=>this[ss](t,i,r))}}[ss](e,t,i){this[ce]=!1,e?this[Ge](e):this[os](t,i)&&this[Ze]()}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}[Ge](e){this[ce]=!0,this[$](),this.emit("error",e)}[os](e,t){let i=!1;return this[wt]-=e,e>0&&(i=super.write(ethis[Ye](e,t))}[Ye](e,t){this[Gt]&&this[fe]==="r+"&&e&&e.code==="ENOENT"?(this[fe]="w",this[Ee]()):e?this[Ge](e):(this[p]=t,this.emit("open",t),this[Ne]||this[is]())}end(e,t){return e&&this.write(e,t),this[_t]=!0,!this[Ne]&&!this[ee].length&&typeof this[p]=="number"&&this[He](null,0),this}write(e,t){return typeof e=="string"&&(e=Buffer.from(e,t)),this[_t]?(this.emit("error",new Error("write() after end()")),!1):this[p]===void 0||this[Ne]||this[ee].length?(this[ee].push(e),this[Ht]=!0,!1):(this[Ne]=!0,this[Zt](e),!0)}[Zt](e){B.default.write(this[p],e,0,e.length,this[we],(t,i)=>this[He](t,i))}[He](e,t){e?this[Ge](e):(this[we]!==void 0&&typeof t=="number"&&(this[we]+=t),this[ee].length?this[is]():(this[Ne]=!1,this[_t]&&!this[ts]?(this[ts]=!0,this[$](),this.emit("finish")):this[Ht]&&(this[Ht]=!1,this.emit("drain"))))}[is](){if(this[ee].length===0)this[_t]&&this[He](null,0);else if(this[ee].length===1)this[Zt](this[ee].pop());else{let e=this[ee];this[ee]=[],Lo(this[p],e,this[we],(t,i)=>this[He](t,i))}}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.close(e,t=>t?this.emit("error",t):this.emit("close"))}}};W.WriteStream=Kt;var ls=class extends Kt{[Ee](){let e;if(this[Gt]&&this[fe]==="r+")try{e=B.default.openSync(this[V],this[fe],this[yt])}catch(t){if(t?.code==="ENOENT")return this[fe]="w",this[Ee]();throw t}else e=B.default.openSync(this[V],this[fe],this[yt]);this[Ye](null,e)}[$](){if(this[ye]&&typeof this[p]=="number"){let e=this[p];this[p]=void 0,B.default.closeSync(e),this.emit("close")}}[Zt](e){let t=!0;try{this[He](null,B.default.writeSync(this[p],e,0,e.length,this[we])),t=!1}finally{if(t)try{this[$]()}catch{}}}};W.WriteStreamSync=ls});var Vt=d(b=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});b.dealias=b.isNoFile=b.isFile=b.isAsync=b.isSync=b.isAsyncNoFile=b.isSyncNoFile=b.isAsyncFile=b.isSyncFile=void 0;var Ao=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"],["onentry","onReadEntry"]]),Io=s=>!!s.sync&&!!s.file;b.isSyncFile=Io;var Co=s=>!s.sync&&!!s.file;b.isAsyncFile=Co;var Fo=s=>!!s.sync&&!s.file;b.isSyncNoFile=Fo;var Bo=s=>!s.sync&&!s.file;b.isAsyncNoFile=Bo;var zo=s=>!!s.sync;b.isSync=zo;var ko=s=>!s.sync;b.isAsync=ko;var jo=s=>!!s.file;b.isFile=jo;var xo=s=>!s.file;b.isNoFile=xo;var Uo=s=>{let e=Ao.get(s);return e||s},qo=(s={})=>{if(!s)return{};let e={};for(let[t,i]of Object.entries(s)){let r=Uo(t);e[r]=i}return e.chmod===void 0&&e.noChmod===!1&&(e.chmod=!0),delete e.noChmod,e};b.dealias=qo});var Ve=d($t=>{"use strict";Object.defineProperty($t,"__esModule",{value:!0});$t.makeCommand=void 0;var Et=Vt(),Wo=(s,e,t,i,r)=>Object.assign((n=[],o,a)=>{Array.isArray(n)&&(o=n,n={}),typeof o=="function"&&(a=o,o=void 0),o?o=Array.from(o):o=[];let h=(0,Et.dealias)(n);if(r?.(h,o),(0,Et.isSyncFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return s(h,o)}else if((0,Et.isAsyncFile)(h)){let l=e(h,o),u=a||void 0;return u?l.then(()=>u(),u):l}else if((0,Et.isSyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback not supported for sync tar functions");return t(h,o)}else if((0,Et.isAsyncNoFile)(h)){if(typeof a=="function")throw new TypeError("callback only supported with file option");return i(h,o)}else throw new Error("impossible options??")},{syncFile:s,asyncFile:e,syncNoFile:t,asyncNoFile:i,validate:r});$t.makeCommand=Wo});var us=d($e=>{"use strict";var Ho=$e&&$e.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty($e,"__esModule",{value:!0});$e.constants=void 0;var Zo=Ho(require("zlib")),Go=Zo.default.constants||{ZLIB_VERNUM:4736};$e.constants=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Go))});var vs=d(f=>{"use strict";var Yo=f&&f.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ko=f&&f.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Vo=f&&f.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;rs,cs=Wr?.writable===!0||Wr?.set!==void 0?s=>{Le.Buffer.concat=s?ea:Jo}:s=>{},Ae=Symbol("_superWrite"),Ie=class extends Error{code;errno;constructor(e,t){super("zlib: "+e.message,{cause:e}),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,t??this.constructor)}get name(){return"ZlibError"}};f.ZlibError=Ie;var fs=Symbol("flushFlag"),bt=class extends Xo.Minipass{#e=!1;#i=!1;#s;#n;#r;#t;#o;get sawError(){return this.#e}get handle(){return this.#t}get flushFlag(){return this.#s}constructor(e,t){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");if(super(e),this.#s=e.flush??0,this.#n=e.finishFlush??0,this.#r=e.fullFlushFlag??0,typeof qr[t]!="function")throw new TypeError("Compression method not supported: "+t);try{this.#t=new qr[t](e)}catch(i){throw new Ie(i,this.constructor)}this.#o=i=>{this.#e||(this.#e=!0,this.close(),this.emit("error",i))},this.#t?.on("error",i=>this.#o(new Ie(i))),this.once("end",()=>this.close)}close(){this.#t&&(this.#t.close(),this.#t=void 0,this.emit("close"))}reset(){if(!this.#e)return(0,ds.default)(this.#t,"zlib binding closed"),this.#t.reset?.()}flush(e){this.ended||(typeof e!="number"&&(e=this.#r),this.write(Object.assign(Le.Buffer.alloc(0),{[fs]:e})))}end(e,t,i){return typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&(t?this.write(e,t):this.write(e)),this.flush(this.#n),this.#i=!0,super.end(i)}get ended(){return this.#i}[Ae](e){return super.write(e)}write(e,t,i){if(typeof t=="function"&&(i=t,t="utf8"),typeof e=="string"&&(e=Le.Buffer.from(e,t)),this.#e)return;(0,ds.default)(this.#t,"zlib binding closed");let r=this.#t._handle,n=r.close;r.close=()=>{};let o=this.#t.close;this.#t.close=()=>{},cs(!0);let a;try{let l=typeof e[fs]=="number"?e[fs]:this.#s;a=this.#t._processChunk(e,l),cs(!1)}catch(l){cs(!1),this.#o(new Ie(l,this.write))}finally{this.#t&&(this.#t._handle=r,r.close=n,this.#t.close=o,this.#t.removeAllListeners("error"))}this.#t&&this.#t.on("error",l=>this.#o(new Ie(l,this.write)));let h;if(a)if(Array.isArray(a)&&a.length>0){let l=a[0];h=this[Ae](Le.Buffer.from(l));for(let u=1;u{typeof r=="function"&&(n=r,r=this.flushFlag),this.flush(r),n?.()};try{this.handle.params(e,t)}finally{this.handle.flush=i}this.handle&&(this.#e=e,this.#i=t)}}}};f.Zlib=ie;var ms=class extends ie{constructor(e){super(e,"Deflate")}};f.Deflate=ms;var ps=class extends ie{constructor(e){super(e,"Inflate")}};f.Inflate=ps;var _s=class extends ie{#e;constructor(e){super(e,"Gzip"),this.#e=e&&!!e.portable}[Ae](e){return this.#e?(this.#e=!1,e[9]=255,super[Ae](e)):super[Ae](e)}};f.Gzip=_s;var ws=class extends ie{constructor(e){super(e,"Gunzip")}};f.Gunzip=ws;var ys=class extends ie{constructor(e){super(e,"DeflateRaw")}};f.DeflateRaw=ys;var Es=class extends ie{constructor(e){super(e,"InflateRaw")}};f.InflateRaw=Es;var bs=class extends ie{constructor(e){super(e,"Unzip")}};f.Unzip=bs;var Xt=class extends bt{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||te.constants.BROTLI_OPERATION_FINISH,e.fullFlushFlag=te.constants.BROTLI_OPERATION_FLUSH,super(e,t)}},Ss=class extends Xt{constructor(e){super(e,"BrotliCompress")}};f.BrotliCompress=Ss;var gs=class extends Xt{constructor(e){super(e,"BrotliDecompress")}};f.BrotliDecompress=gs;var Qt=class extends bt{constructor(e,t){e=e||{},e.flush=e.flush||te.constants.ZSTD_e_continue,e.finishFlush=e.finishFlush||te.constants.ZSTD_e_end,e.fullFlushFlag=te.constants.ZSTD_e_flush,super(e,t)}},Rs=class extends Qt{constructor(e){super(e,"ZstdCompress")}};f.ZstdCompress=Rs;var Os=class extends Qt{constructor(e){super(e,"ZstdDecompress")}};f.ZstdDecompress=Os});var Gr=d(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.parse=Xe.encode=void 0;var ta=(s,e)=>{if(Number.isSafeInteger(s))s<0?sa(s,e):ia(s,e);else throw Error("cannot encode number outside of javascript safe integer range");return e};Xe.encode=ta;var ia=(s,e)=>{e[0]=128;for(var t=e.length;t>1;t--)e[t-1]=s&255,s=Math.floor(s/256)},sa=(s,e)=>{e[0]=255;var t=!1;s=s*-1;for(var i=e.length;i>1;i--){var r=s&255;s=Math.floor(s/256),t?e[i-1]=Hr(r):r===0?e[i-1]=0:(t=!0,e[i-1]=Zr(r))}},ra=s=>{let e=s[0],t=e===128?oa(s.subarray(1,s.length)):e===255?na(s):null;if(t===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(t))throw Error("parsed number outside of javascript safe integer range");return t};Xe.parse=ra;var na=s=>{for(var e=s.length,t=0,i=!1,r=e-1;r>-1;r--){var n=Number(s[r]),o;i?o=Hr(n):n===0?o=n:(i=!0,o=Zr(n)),o!==0&&(t-=o*Math.pow(256,e-r-1))}return t},oa=s=>{for(var e=s.length,t=0,i=e-1;i>-1;i--){var r=Number(s[i]);r!==0&&(t+=r*Math.pow(256,e-i-1))}return t},Hr=s=>(255^s)&255,Zr=s=>(255^s)+1&255});var Ts=d(j=>{"use strict";Object.defineProperty(j,"__esModule",{value:!0});j.code=j.name=j.isName=j.isCode=void 0;var aa=s=>j.name.has(s);j.isCode=aa;var ha=s=>j.code.has(s);j.isName=ha;j.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);j.code=new Map(Array.from(j.name).map(s=>[s[1],s[0]]))});var Je=d(se=>{"use strict";var la=se&&se.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),ua=se&&se.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),Yr=se&&se.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r=t+512))throw new Error("need 512 bytes for header");this.path=i?.path??Ce(e,t,100),this.mode=i?.mode??r?.mode??be(e,t+100,8),this.uid=i?.uid??r?.uid??be(e,t+108,8),this.gid=i?.gid??r?.gid??be(e,t+116,8),this.size=i?.size??r?.size??be(e,t+124,12),this.mtime=i?.mtime??r?.mtime??Ds(e,t+136,12),this.cksum=be(e,t+148,12),r&&this.#i(r,!0),i&&this.#i(i);let n=Ce(e,t+156,1);if(St.isCode(n)&&(this.#e=n||"0"),this.#e==="0"&&this.path.slice(-1)==="/"&&(this.#e="5"),this.#e==="5"&&(this.size=0),this.linkpath=Ce(e,t+157,100),e.subarray(t+257,t+265).toString()==="ustar\x0000")if(this.uname=i?.uname??r?.uname??Ce(e,t+265,32),this.gname=i?.gname??r?.gname??Ce(e,t+297,32),this.devmaj=i?.devmaj??r?.devmaj??be(e,t+329,8)??0,this.devmin=i?.devmin??r?.devmin??be(e,t+337,8)??0,e[t+475]!==0){let a=Ce(e,t+345,155);this.path=a+"/"+this.path}else{let a=Ce(e,t+345,130);a&&(this.path=a+"/"+this.path),this.atime=i?.atime??r?.atime??Ds(e,t+476,12),this.ctime=i?.ctime??r?.ctime??Ds(e,t+488,12)}let o=256;for(let a=t;a!(r==null||i==="path"&&t||i==="linkpath"&&t||i==="global"))))}encode(e,t=0){if(e||(e=this.block=Buffer.alloc(512)),this.#e==="Unsupported"&&(this.#e="0"),!(e.length>=t+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,r=ca(this.path||"",i),n=r[0],o=r[1];this.needPax=!!r[2],this.needPax=Fe(e,t,100,n)||this.needPax,this.needPax=Se(e,t+100,8,this.mode)||this.needPax,this.needPax=Se(e,t+108,8,this.uid)||this.needPax,this.needPax=Se(e,t+116,8,this.gid)||this.needPax,this.needPax=Se(e,t+124,12,this.size)||this.needPax,this.needPax=Ps(e,t+136,12,this.mtime)||this.needPax,e[t+156]=this.#e.charCodeAt(0),this.needPax=Fe(e,t+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",t+257,8),this.needPax=Fe(e,t+265,32,this.uname)||this.needPax,this.needPax=Fe(e,t+297,32,this.gname)||this.needPax,this.needPax=Se(e,t+329,8,this.devmaj)||this.needPax,this.needPax=Se(e,t+337,8,this.devmin)||this.needPax,this.needPax=Fe(e,t+345,i,o)||this.needPax,e[t+475]!==0?this.needPax=Fe(e,t+345,155,o)||this.needPax:(this.needPax=Fe(e,t+345,130,o)||this.needPax,this.needPax=Ps(e,t+476,12,this.atime)||this.needPax,this.needPax=Ps(e,t+488,12,this.ctime)||this.needPax);let a=256;for(let h=t;h{let i=s,r="",n,o=Qe.posix.parse(s).root||".";if(Buffer.byteLength(i)<100)n=[i,r,!1];else{r=Qe.posix.dirname(i),i=Qe.posix.basename(i);do Buffer.byteLength(i)<=100&&Buffer.byteLength(r)<=e?n=[i,r,!1]:Buffer.byteLength(i)>100&&Buffer.byteLength(r)<=e?n=[i.slice(0,99),r,!0]:(i=Qe.posix.join(Qe.posix.basename(r),i),r=Qe.posix.dirname(r));while(r!==o&&n===void 0);n||(n=[s.slice(0,99),"",!0])}return n},Ce=(s,e,t)=>s.subarray(e,e+t).toString("utf8").replace(/\0.*/,""),Ds=(s,e,t)=>fa(be(s,e,t)),fa=s=>s===void 0?void 0:new Date(s*1e3),be=(s,e,t)=>Number(s[e])&128?Kr.parse(s.subarray(e,e+t)):ma(s,e,t),da=s=>isNaN(s)?void 0:s,ma=(s,e,t)=>da(parseInt(s.subarray(e,e+t).toString("utf8").replace(/\0.*$/,"").trim(),8)),pa={12:8589934591,8:2097151},Se=(s,e,t,i)=>i===void 0?!1:i>pa[t]||i<0?(Kr.encode(i,s.subarray(e,e+t)),!0):(_a(s,e,t,i),!1),_a=(s,e,t,i)=>s.write(wa(i,t),e,t,"ascii"),wa=(s,e)=>ya(Math.floor(s).toString(8),e),ya=(s,e)=>(s.length===e-1?s:new Array(e-s.length-1).join("0")+s+" ")+"\0",Ps=(s,e,t,i)=>i===void 0?!1:Se(s,e,t,i.getTime()/1e3),Ea=new Array(156).join("\0"),Fe=(s,e,t,i)=>i===void 0?!1:(s.write(i+Ea,e,t,"utf8"),i.length!==Buffer.byteLength(i)||i.length>t)});var ei=d(Jt=>{"use strict";Object.defineProperty(Jt,"__esModule",{value:!0});Jt.Pax=void 0;var ba=require("node:path"),Sa=Je(),Ms=class s{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(e,t=!1){this.atime=e.atime,this.charset=e.charset,this.comment=e.comment,this.ctime=e.ctime,this.dev=e.dev,this.gid=e.gid,this.global=t,this.gname=e.gname,this.ino=e.ino,this.linkpath=e.linkpath,this.mtime=e.mtime,this.nlink=e.nlink,this.path=e.path,this.size=e.size,this.uid=e.uid,this.uname=e.uname}encode(){let e=this.encodeBody();if(e==="")return Buffer.allocUnsafe(0);let t=Buffer.byteLength(e),i=512*Math.ceil(1+t/512),r=Buffer.allocUnsafe(i);for(let n=0;n<512;n++)r[n]=0;new Sa.Header({path:("PaxHeader/"+(0,ba.basename)(this.path??"")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:t,mtime:this.mtime,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(r),r.write(e,512,t,"utf8");for(let n=t+512;n=Math.pow(10,o)&&(o+=1),o+n+r}static parse(e,t,i=!1){return new s(ga(Ra(e),t),i)}};Jt.Pax=Ms;var ga=(s,e)=>e?Object.assign({},e,s):s,Ra=s=>s.replace(/\n$/,"").split(`
+`).reduce(Oa,Object.create(null)),Oa=(s,e)=>{let t=parseInt(e,10);if(t!==Buffer.byteLength(e)+1)return s;e=e.slice((t+" ").length);let i=e.split("="),r=i.shift();if(!r)return s;let n=r.replace(/^SCHILY\.(dev|ino|nlink)/,"$1"),o=i.join("=");return s[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(o)*1e3):/^[0-9]+$/.test(o)?+o:o,s}});var et=d(ti=>{"use strict";Object.defineProperty(ti,"__esModule",{value:!0});ti.normalizeWindowsPath=void 0;var va=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;ti.normalizeWindowsPath=va!=="win32"?s=>s:s=>s&&s.replace(/\\/g,"/")});var ri=d(si=>{"use strict";Object.defineProperty(si,"__esModule",{value:!0});si.ReadEntry=void 0;var Ta=We(),ii=et(),Ls=class extends Ta.Minipass{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(e,t,i){switch(super({}),this.pause(),this.extended=t,this.globalExtended=i,this.header=e,this.remain=e.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=e.type,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}if(!e.path)throw new Error("no path provided for tar.ReadEntry");this.path=(0,ii.normalizeWindowsPath)(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=this.remain,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath?(0,ii.normalizeWindowsPath)(e.linkpath):void 0,this.uname=e.uname,this.gname=e.gname,t&&this.#e(t),i&&this.#e(i,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,r=this.blockRemain;return this.remain=Math.max(0,i-t),this.blockRemain=Math.max(0,r-t),this.ignore?!0:i>=t?super.write(e):super.write(e.subarray(0,i))}#e(e,t=!1){e.path&&(e.path=(0,ii.normalizeWindowsPath)(e.path)),e.linkpath&&(e.linkpath=(0,ii.normalizeWindowsPath)(e.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(e).filter(([i,r])=>!(r==null||i==="path"&&t))))}};si.ReadEntry=Ls});var oi=d(ni=>{"use strict";Object.defineProperty(ni,"__esModule",{value:!0});ni.warnMethod=void 0;var Da=(s,e,t,i={})=>{s.file&&(i.file=s.file),s.cwd&&(i.cwd=s.cwd),i.code=t instanceof Error&&t.code||e,i.tarCode=e,!s.strict&&i.recoverable!==!1?(t instanceof Error&&(i=Object.assign(t,i),t=t.message),s.emit("warn",e,t,i)):t instanceof Error?s.emit("error",Object.assign(t,i)):s.emit("error",Object.assign(new Error(`${e}: ${t}`),i))};ni.warnMethod=Da});var mi=d(di=>{"use strict";Object.defineProperty(di,"__esModule",{value:!0});di.Parser=void 0;var Pa=require("events"),As=vs(),Vr=Je(),$r=ei(),Na=ri(),Ma=oi(),La=1024*1024,zs=Buffer.from([31,139]),ks=Buffer.from([40,181,47,253]),Aa=Math.max(zs.length,ks.length),H=Symbol("state"),Be=Symbol("writeEntry"),de=Symbol("readEntry"),Is=Symbol("nextEntry"),Xr=Symbol("processEntry"),re=Symbol("extendedHeader"),gt=Symbol("globalExtendedHeader"),ge=Symbol("meta"),Qr=Symbol("emitMeta"),_=Symbol("buffer"),me=Symbol("queue"),Re=Symbol("ended"),Cs=Symbol("emittedEnd"),ze=Symbol("emit"),S=Symbol("unzip"),ai=Symbol("consumeChunk"),hi=Symbol("consumeChunkSub"),Fs=Symbol("consumeBody"),Jr=Symbol("consumeMeta"),en=Symbol("consumeHeader"),Rt=Symbol("consuming"),Bs=Symbol("bufferConcat"),li=Symbol("maybeEnd"),tt=Symbol("writing"),Oe=Symbol("aborted"),ui=Symbol("onDone"),ke=Symbol("sawValidEntry"),ci=Symbol("sawNullBlock"),fi=Symbol("sawEOF"),tn=Symbol("closeStream"),Ia=()=>!0,js=class extends Pa.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[me]=[];[_];[de];[Be];[H]="begin";[ge]="";[re];[gt];[Re]=!1;[S];[Oe]=!1;[ke];[ci]=!1;[fi]=!1;[tt]=!1;[Rt]=!1;[Cs]=!1;constructor(e={}){super(),this.file=e.file||"",this.on(ui,()=>{(this[H]==="begin"||this[ke]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(ui,e.ondone):this.on(ui,()=>{this.emit("prefinish"),this.emit("finish"),this.emit("end")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||La,this.filter=typeof e.filter=="function"?e.filter:Ia;let t=e.file&&(e.file.endsWith(".tar.br")||e.file.endsWith(".tbr"));this.brotli=!(e.gzip||e.zstd)&&e.brotli!==void 0?e.brotli:t?void 0:!1;let i=e.file&&(e.file.endsWith(".tar.zst")||e.file.endsWith(".tzst"));this.zstd=!(e.gzip||e.brotli)&&e.zstd!==void 0?e.zstd:i?!0:void 0,this.on("end",()=>this[tn]()),typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onReadEntry=="function"&&this.on("entry",e.onReadEntry)}warn(e,t,i={}){(0,Ma.warnMethod)(this,e,t,i)}[en](e,t){this[ke]===void 0&&(this[ke]=!1);let i;try{i=new Vr.Header(e,t,this[re],this[gt])}catch(r){return this.warn("TAR_ENTRY_INVALID",r)}if(i.nullBlock)this[ci]?(this[fi]=!0,this[H]==="begin"&&(this[H]="header"),this[ze]("eof")):(this[ci]=!0,this[ze]("nullBlock"));else if(this[ci]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let r=i.type;if(/^(Symbolic)?Link$/.test(r)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(r)&&!/^(Global)?ExtendedHeader$/.test(r)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let n=this[Be]=new Na.ReadEntry(i,this[re],this[gt]);if(!this[ke])if(n.remain){let o=()=>{n.invalid||(this[ke]=!0)};n.on("end",o)}else this[ke]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[ze]("ignoredEntry",n),this[H]="ignore",n.resume()):n.size>0&&(this[ge]="",n.on("data",o=>this[ge]+=o),this[H]="meta"):(this[re]=void 0,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[ze]("ignoredEntry",n),this[H]=n.remain?"ignore":"header",n.resume()):(n.remain?this[H]="body":(this[H]="header",n.end()),this[de]?this[me].push(n):(this[me].push(n),this[Is]())))}}}[tn](){queueMicrotask(()=>this.emit("close"))}[Xr](e){let t=!0;if(!e)this[de]=void 0,t=!1;else if(Array.isArray(e)){let[i,...r]=e;this.emit(i,...r)}else this[de]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",()=>this[Is]()),t=!1);return t}[Is](){do;while(this[Xr](this[me].shift()));if(!this[me].length){let e=this[de];!e||e.flowing||e.size===e.remain?this[tt]||this.emit("drain"):e.once("drain",()=>this.emit("drain"))}}[Fs](e,t){let i=this[Be];if(!i)throw new Error("attempt to consume body without entry??");let r=i.blockRemain??0,n=r>=e.length&&t===0?e:e.subarray(t,t+r);return i.write(n),i.blockRemain||(this[H]="header",this[Be]=void 0,i.end()),n.length}[Jr](e,t){let i=this[Be],r=this[Fs](e,t);return!this[Be]&&i&&this[Qr](i),r}[ze](e,t,i){!this[me].length&&!this[de]?this.emit(e,t,i):this[me].push([e,t,i])}[Qr](e){switch(this[ze]("meta",this[ge]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[re]=$r.Pax.parse(this[ge],this[re],!1);break;case"GlobalExtendedHeader":this[gt]=$r.Pax.parse(this[ge],this[gt],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":{let t=this[re]??Object.create(null);this[re]=t,t.path=this[ge].replace(/\0.*/,"");break}case"NextFileHasLongLinkpath":{let t=this[re]||Object.create(null);this[re]=t,t.linkpath=this[ge].replace(/\0.*/,"");break}default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Oe]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this[Oe])return i?.(),!1;if((this[S]===void 0||this.brotli===void 0&&this[S]===!1)&&e){if(this[_]&&(e=Buffer.concat([this[_],e]),this[_]=void 0),e.lengththis[ai](u)),this[S].on("error",u=>this.abort(u)),this[S].on("end",()=>{this[Re]=!0,this[ai]()}),this[tt]=!0;let l=!!this[S][h?"end":"write"](e);return this[tt]=!1,i?.(),l}}this[tt]=!0,this[S]?this[S].write(e):this[ai](e),this[tt]=!1;let n=this[me].length?!1:this[de]?this[de].flowing:!0;return!n&&!this[me].length&&this[de]?.once("drain",()=>this.emit("drain")),i?.(),n}[Bs](e){e&&!this[Oe]&&(this[_]=this[_]?Buffer.concat([this[_],e]):e)}[li](){if(this[Re]&&!this[Cs]&&!this[Oe]&&!this[Rt]){this[Cs]=!0;let e=this[Be];if(e&&e.blockRemain){let t=this[_]?this[_].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[_]&&e.write(this[_]),e.end()}this[ze](ui)}}[ai](e){if(this[Rt]&&e)this[Bs](e);else if(!e&&!this[_])this[li]();else if(e){if(this[Rt]=!0,this[_]){this[Bs](e);let t=this[_];this[_]=void 0,this[hi](t)}else this[hi](e);for(;this[_]&&this[_]?.length>=512&&!this[Oe]&&!this[fi];){let t=this[_];this[_]=void 0,this[hi](t)}this[Rt]=!1}(!this[_]||this[Re])&&this[li]()}[hi](e){let t=0,i=e.length;for(;t+512<=i&&!this[Oe]&&!this[fi];)switch(this[H]){case"begin":case"header":this[en](e,t),t+=512;break;case"ignore":case"body":t+=this[Fs](e,t);break;case"meta":t+=this[Jr](e,t);break;default:throw new Error("invalid state: "+this[H])}t{"use strict";Object.defineProperty(pi,"__esModule",{value:!0});pi.stripTrailingSlashes=void 0;var Ca=s=>{let e=s.length-1,t=-1;for(;e>-1&&s.charAt(e)==="/";)t=e,e--;return t===-1?s:s.slice(0,t)};pi.stripTrailingSlashes=Ca});var st=d(F=>{"use strict";var Fa=F&&F.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Ba=F&&F.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),za=F&&F.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{let e=s.onReadEntry;s.onReadEntry=e?t=>{e(t),t.resume()}:t=>t.resume()},qa=(s,e)=>{let t=new Map(e.map(n=>[(0,xs.stripTrailingSlashes)(n),!0])),i=s.filter,r=(n,o="")=>{let a=o||(0,sn.parse)(n).root||".",h;if(n===a)h=!1;else{let l=t.get(n);l!==void 0?h=l:h=r((0,sn.dirname)(n),a)}return t.set(n,h),h};s.filter=i?(n,o)=>i(n,o)&&r((0,xs.stripTrailingSlashes)(n)):n=>r((0,xs.stripTrailingSlashes)(n))};F.filesFilter=qa;var Wa=s=>{let e=new wi.Parser(s),t=s.file,i;try{i=it.default.openSync(t,"r");let r=it.default.fstatSync(i),n=s.maxReadSize||16*1024*1024;if(r.size{let t=new wi.Parser(s),i=s.maxReadSize||16*1024*1024,r=s.file;return new Promise((o,a)=>{t.on("error",a),t.on("end",o),it.default.stat(r,(h,l)=>{if(h)a(h);else{let u=new ja.ReadStream(r,{readSize:i,size:l.size});u.on("error",a),u.pipe(t)}})})};F.list=(0,xa.makeCommand)(Wa,Ha,s=>new wi.Parser(s),s=>new wi.Parser(s),(s,e)=>{e?.length&&(0,F.filesFilter)(s,e),s.noResume||Ua(s)})});var rn=d(yi=>{"use strict";Object.defineProperty(yi,"__esModule",{value:!0});yi.modeFix=void 0;var Za=(s,e,t)=>(s&=4095,t&&(s=(s|384)&-19),e&&(s&256&&(s|=64),s&32&&(s|=8),s&4&&(s|=1)),s);yi.modeFix=Za});var Us=d(Ei=>{"use strict";Object.defineProperty(Ei,"__esModule",{value:!0});Ei.stripAbsolutePath=void 0;var Ga=require("node:path"),{isAbsolute:Ya,parse:nn}=Ga.win32,Ka=s=>{let e="",t=nn(s);for(;Ya(s)||t.root;){let i=s.charAt(0)==="/"&&s.slice(0,4)!=="//?/"?"/":t.root;s=s.slice(i.length),e+=i,t=nn(s)}return[e,s]};Ei.stripAbsolutePath=Ka});var Ws=d(rt=>{"use strict";Object.defineProperty(rt,"__esModule",{value:!0});rt.decode=rt.encode=void 0;var bi=["|","<",">","?",":"],qs=bi.map(s=>String.fromCharCode(61440+s.charCodeAt(0))),Va=new Map(bi.map((s,e)=>[s,qs[e]])),$a=new Map(qs.map((s,e)=>[s,bi[e]])),Xa=s=>bi.reduce((e,t)=>e.split(t).join(Va.get(t)),s);rt.encode=Xa;var Qa=s=>qs.reduce((e,t)=>e.split(t).join($a.get(t)),s);rt.decode=Qa});var er=d(M=>{"use strict";var Ja=M&&M.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),eh=M&&M.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),th=M&&M.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;re?(s=(0,ne.normalizeWindowsPath)(s).replace(/^\.(\/|$)/,""),(0,ih.stripTrailingSlashes)(e)+"/"+s):(0,ne.normalizeWindowsPath)(s),rh=16*1024*1024,an=Symbol("process"),hn=Symbol("file"),ln=Symbol("directory"),Zs=Symbol("symlink"),un=Symbol("hardlink"),Ot=Symbol("header"),Si=Symbol("read"),Gs=Symbol("lstat"),gi=Symbol("onlstat"),Ys=Symbol("onread"),Ks=Symbol("onreadlink"),Vs=Symbol("openfile"),$s=Symbol("onopenfile"),ve=Symbol("close"),Ri=Symbol("mode"),Xs=Symbol("awaitDrain"),Hs=Symbol("ondrain"),ae=Symbol("prefix"),Oi=class extends fn.Minipass{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||"";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#e=!1;constructor(e,t={}){let i=(0,pn.dealias)(t);super(),this.path=(0,ne.normalizeWindowsPath)(e),this.portable=!!i.portable,this.maxReadSize=i.maxReadSize||rh,this.linkCache=i.linkCache||new Map,this.statCache=i.statCache||new Map,this.preservePaths=!!i.preservePaths,this.cwd=(0,ne.normalizeWindowsPath)(i.cwd||process.cwd()),this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.mtime=i.mtime,this.prefix=i.prefix?(0,ne.normalizeWindowsPath)(i.prefix):void 0,this.onWriteEntry=i.onWriteEntry,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let r=!1;if(!this.preservePaths){let[o,a]=(0,wn.stripAbsolutePath)(this.path);o&&typeof a=="string"&&(this.path=a,r=o)}this.win32=!!i.win32||process.platform==="win32",this.win32&&(this.path=sh.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=(0,ne.normalizeWindowsPath)(i.absolute||on.default.resolve(this.cwd,e)),this.path===""&&(this.path="./"),r&&this.warn("TAR_ENTRY_INFO",`stripping ${r} from absolute path`,{entry:this,path:r+this.path});let n=this.statCache.get(this.absolute);n?this[gi](n):this[Gs]()}warn(e,t,i={}){return(0,yn.warnMethod)(this,e,t,i)}emit(e,...t){return e==="error"&&(this.#e=!0),super.emit(e,...t)}[Gs](){oe.default.lstat(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[gi](t)})}[gi](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=nh(e),this.emit("stat",e),this[an]()}[an](){switch(this.type){case"File":return this[hn]();case"Directory":return this[ln]();case"SymbolicLink":return this[Zs]();default:return this.end()}}[Ri](e){return(0,mn.modeFix)(e,this.type==="Directory",this.portable)}[ae](e){return En(e,this.prefix)}[Ot](){if(!this.stat)throw new Error("cannot write header before stat");this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new dn.Header({path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,mode:this[Ri](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type==="Unsupported"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new _n.Pax({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let e=this.header?.block;if(!e)throw new Error("failed to encode header");super.write(e)}[ln](){if(!this.stat)throw new Error("cannot create directory entry without stat");this.path.slice(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[Ot](),this.end()}[Zs](){oe.default.readlink(this.absolute,(e,t)=>{if(e)return this.emit("error",e);this[Ks](t)})}[Ks](e){this.linkpath=(0,ne.normalizeWindowsPath)(e),this[Ot](),this.end()}[un](e){if(!this.stat)throw new Error("cannot create link entry without stat");this.type="Link",this.linkpath=(0,ne.normalizeWindowsPath)(on.default.relative(this.cwd,e)),this.stat.size=0,this[Ot](),this.end()}[hn](){if(!this.stat)throw new Error("cannot create file entry without stat");if(this.stat.nlink>1){let e=`${this.stat.dev}:${this.stat.ino}`,t=this.linkCache.get(e);if(t?.indexOf(this.cwd)===0)return this[un](t);this.linkCache.set(e,this.absolute)}if(this[Ot](),this.stat.size===0)return this.end();this[Vs]()}[Vs](){oe.default.open(this.absolute,"r",(e,t)=>{if(e)return this.emit("error",e);this[$s](t)})}[$s](e){if(this.fd=e,this.#e)return this[ve]();if(!this.stat)throw new Error("should stat before calling onopenfile");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let t=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(t),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[Si]()}[Si](){let{fd:e,buf:t,offset:i,length:r,pos:n}=this;if(e===void 0||t===void 0)throw new Error("cannot read file without first opening");oe.default.read(e,t,i,r,n,(o,a)=>{if(o)return this[ve](()=>this.emit("error",o));this[Ys](a)})}[ve](e=()=>{}){this.fd!==void 0&&oe.default.close(this.fd,e)}[Ys](e){if(e<=0&&this.remain>0){let r=Object.assign(new Error("encountered unexpected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(e>this.remain){let r=Object.assign(new Error("did not encounter expected EOF"),{path:this.absolute,syscall:"read",code:"EOF"});return this[ve](()=>this.emit("error",r))}if(!this.buf)throw new Error("should have created buffer prior to reading");if(e===this.remain)for(let r=e;rthis[Hs]())}[Xs](e){this.once("drain",e)}write(e,t,i){if(typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8")),this.blockRemaine?this.emit("error",e):this.end());if(!this.buf)throw new Error("buffer lost somehow in ONDRAIN");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[Si]()}};M.WriteEntry=Oi;var Qs=class extends Oi{sync=!0;[Gs](){this[gi](oe.default.lstatSync(this.absolute))}[Zs](){this[Ks](oe.default.readlinkSync(this.absolute))}[Vs](){this[$s](oe.default.openSync(this.absolute,"r"))}[Si](){let e=!0;try{let{fd:t,buf:i,offset:r,length:n,pos:o}=this;if(t===void 0||i===void 0)throw new Error("fd and buf must be set in READ method");let a=oe.default.readSync(t,i,r,n,o);this[Ys](a),e=!1}finally{if(e)try{this[ve](()=>{})}catch{}}}[Xs](e){e()}[ve](e=()=>{}){this.fd!==void 0&&oe.default.closeSync(this.fd),e()}};M.WriteEntrySync=Qs;var Js=class extends fn.Minipass{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(e,t,i={}){return(0,yn.warnMethod)(this,e,t,i)}constructor(e,t={}){let i=(0,pn.dealias)(t);super(),this.preservePaths=!!i.preservePaths,this.portable=!!i.portable,this.strict=!!i.strict,this.noPax=!!i.noPax,this.noMtime=!!i.noMtime,this.onWriteEntry=i.onWriteEntry,this.readEntry=e;let{type:r}=e;if(r==="Unsupported")throw new Error("writing entry that should be ignored");this.type=r,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=i.prefix,this.path=(0,ne.normalizeWindowsPath)(e.path),this.mode=e.mode!==void 0?this[Ri](e.mode):void 0,this.uid=this.portable?void 0:e.uid,this.gid=this.portable?void 0:e.gid,this.uname=this.portable?void 0:e.uname,this.gname=this.portable?void 0:e.gname,this.size=e.size,this.mtime=this.noMtime?void 0:i.mtime||e.mtime,this.atime=this.portable?void 0:e.atime,this.ctime=this.portable?void 0:e.ctime,this.linkpath=e.linkpath!==void 0?(0,ne.normalizeWindowsPath)(e.linkpath):void 0,typeof i.onwarn=="function"&&this.on("warn",i.onwarn);let n=!1;if(!this.preservePaths){let[a,h]=(0,wn.stripAbsolutePath)(this.path);a&&typeof h=="string"&&(this.path=h,n=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.onWriteEntry?.(this),this.header=new dn.Header({path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),n&&this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:this,path:n+this.path}),this.header.encode()&&!this.noPax&&super.write(new _n.Pax({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[ae](this.path),linkpath:this.type==="Link"&&this.linkpath!==void 0?this[ae](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let o=this.header?.block;if(!o)throw new Error("failed to encode header");super.write(o),e.pipe(this)}[ae](e){return En(e,this.prefix)}[Ri](e){return(0,mn.modeFix)(e,this.type==="Directory",this.portable)}write(e,t,i){typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,typeof t=="string"?t:"utf8"));let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e,i)}end(e,t,i){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof e=="function"&&(i=e,t=void 0,e=void 0),typeof t=="function"&&(i=t,t=void 0),typeof e=="string"&&(e=Buffer.from(e,t??"utf8")),i&&this.once("finish",i),e?super.end(e,i):super.end(i),this}};M.WriteEntryTar=Js;var nh=s=>s.isFile()?"File":s.isDirectory()?"Directory":s.isSymbolicLink()?"SymbolicLink":"Unsupported"});var bn=d(ot=>{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});ot.Node=ot.Yallist=void 0;var tr=class s{tail;head;length=0;static create(e=[]){return new s(e)}constructor(e=[]){for(let t of e)this.push(t)}*[Symbol.iterator](){for(let e=this.head;e;e=e.next)yield e.value}removeNode(e){if(e.list!==this)throw new Error("removing node which does not belong to this list");let t=e.next,i=e.prev;return t&&(t.prev=i),i&&(i.next=t),e===this.head&&(this.head=t),e===this.tail&&(this.tail=i),this.length--,e.next=void 0,e.prev=void 0,e.list=void 0,t}unshiftNode(e){if(e===this.head)return;e.list&&e.list.removeNode(e);let t=this.head;e.list=this,e.next=t,t&&(t.prev=e),this.head=e,this.tail||(this.tail=e),this.length++}pushNode(e){if(e===this.tail)return;e.list&&e.list.removeNode(e);let t=this.tail;e.list=this,e.prev=t,t&&(t.next=e),this.tail=e,this.head||(this.head=e),this.length++}push(...e){for(let t=0,i=e.length;t1)i=t;else if(this.head)r=this.head.next,i=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;r;n++)i=e(i,r.value,n),r=r.next;return i}reduceReverse(e,t){let i,r=this.tail;if(arguments.length>1)i=t;else if(this.tail)r=this.tail.prev,i=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(let n=this.length-1;r;n--)i=e(i,r.value,n),r=r.prev;return i}toArray(){let e=new Array(this.length);for(let t=0,i=this.head;i;t++)e[t]=i.value,i=i.next;return e}toArrayReverse(){let e=new Array(this.length);for(let t=0,i=this.tail;i;t++)e[t]=i.value,i=i.prev;return e}slice(e=0,t=this.length){t<0&&(t+=this.length),e<0&&(e+=this.length);let i=new s;if(tthis.length&&(t=this.length);let r=this.head,n=0;for(n=0;r&&nthis.length&&(t=this.length);let r=this.length,n=this.tail;for(;n&&r>t;r--)n=n.prev;for(;n&&r>e;r--,n=n.prev)i.push(n.value);return i}splice(e,t=0,...i){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);let r=this.head;for(let o=0;r&&o{"use strict";var lh=L&&L.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),uh=L&&L.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),ch=L&&L.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r1)throw new TypeError("gzip, brotli, zstd are mutually exclusive");if(e.gzip&&(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new ir.Gzip(e.gzip)),e.brotli&&(typeof e.brotli!="object"&&(e.brotli={}),this.zip=new ir.BrotliCompress(e.brotli)),e.zstd&&(typeof e.zstd!="object"&&(e.zstd={}),this.zip=new ir.ZstdCompress(e.zstd)),!this.zip)throw new Error("impossible");let t=this.zip;t.on("data",i=>super.write(i)),t.on("end",()=>super.end()),t.on("drain",()=>this[or]()),this.on("resume",()=>t.resume())}else this.on("drain",this[or]);this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,e.mtime&&(this.mtime=e.mtime),this.filter=typeof e.filter=="function"?e.filter:()=>!0,this[X]=new dh.Yallist,this[Q]=0,this.jobs=Number(e.jobs)||4,this[Tt]=!1,this[vt]=!1}[Tn](e){return super.write(e)}add(e){return this.write(e),this}end(e,t,i){return typeof e=="function"&&(i=e,e=void 0),typeof t=="function"&&(i=t,t=void 0),e&&this.add(e),this[vt]=!0,this[xe](),i&&i(),this}write(e){if(this[vt])throw new Error("write after end");return e instanceof mh.ReadEntry?this[gn](e):this[Ti](e),this.flowing}[gn](e){let t=(0,ar.normalizeWindowsPath)(On.default.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let i=new Dt(e.path,t);i.entry=new hr.WriteEntryTar(e,this[nr](i)),i.entry.on("end",()=>this[rr](i)),this[Q]+=1,this[X].push(i)}this[xe]()}[Ti](e){let t=(0,ar.normalizeWindowsPath)(On.default.resolve(this.cwd,e));this[X].push(new Dt(e,t)),this[xe]()}[lr](e){e.pending=!0,this[Q]+=1;let t=this.follow?"stat":"lstat";Mi.default[t](e.absolute,(i,r)=>{e.pending=!1,this[Q]-=1,i?this.emit("error",i):this[vi](e,r)})}[vi](e,t){this.statCache.set(e.absolute,t),e.stat=t,this.filter(e.path,t)?t.isFile()&&t.nlink>1&&e===this[je]&&!this.linkCache.get(`${t.dev}:${t.ino}`)&&!this.sync&&this[sr](e):e.ignore=!0,this[xe]()}[ur](e){e.pending=!0,this[Q]+=1,Mi.default.readdir(e.absolute,(t,i)=>{if(e.pending=!1,this[Q]-=1,t)return this.emit("error",t);this[Di](e,i)})}[Di](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[xe]()}[xe](){if(!this[Tt]){this[Tt]=!0;for(let e=this[X].head;e&&this[Q]this.warn(t,i,r),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[Rn](e){this[Q]+=1;try{return new this[Ni](e.path,this[nr](e)).on("end",()=>this[rr](e)).on("error",i=>this.emit("error",i))}catch(t){this.emit("error",t)}}[or](){this[je]&&this[je].entry&&this[je].entry.resume()}[Pi](e){e.piped=!0,e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Ti](o+r)});let t=e.entry,i=this.zip;if(!t)throw new Error("cannot pipe without source");i?t.on("data",r=>{i.write(r)||t.pause()}):t.on("data",r=>{super.write(r)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(e,t,i={}){(0,ph.warnMethod)(this,e,t,i)}};L.Pack=Li;var cr=class extends Li{sync=!0;constructor(e){super(e),this[Ni]=hr.WriteEntrySync}pause(){}resume(){}[lr](e){let t=this.follow?"statSync":"lstatSync";this[vi](e,Mi.default[t](e.absolute))}[ur](e){this[Di](e,Mi.default.readdirSync(e.absolute))}[Pi](e){let t=e.entry,i=this.zip;if(e.readdir&&e.readdir.forEach(r=>{let n=e.path,o=n==="./"?"":n.replace(/\/*$/,"/");this[Ti](o+r)}),!t)throw new Error("Cannot pipe without source");i?t.on("data",r=>{i.write(r)}):t.on("data",r=>{super[Tn](r)})}};L.PackSync=cr});var fr=d(at=>{"use strict";var _h=at&&at.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(at,"__esModule",{value:!0});at.create=void 0;var Dn=Ke(),Pn=_h(require("node:path")),Nn=st(),wh=Ve(),Ii=Ai(),yh=(s,e)=>{let t=new Ii.PackSync(s),i=new Dn.WriteStreamSync(s.file,{mode:s.mode||438});t.pipe(i),Mn(t,e)},Eh=(s,e)=>{let t=new Ii.Pack(s),i=new Dn.WriteStream(s.file,{mode:s.mode||438});t.pipe(i);let r=new Promise((n,o)=>{i.on("error",o),i.on("close",n),t.on("error",o)});return Ln(t,e),r},Mn=(s,e)=>{e.forEach(t=>{t.charAt(0)==="@"?(0,Nn.list)({file:Pn.default.resolve(s.cwd,t.slice(1)),sync:!0,noResume:!0,onReadEntry:i=>s.add(i)}):s.add(t)}),s.end()},Ln=async(s,e)=>{for(let t=0;t{s.add(r)}}):s.add(i)}s.end()},bh=(s,e)=>{let t=new Ii.PackSync(s);return Mn(t,e),t},Sh=(s,e)=>{let t=new Ii.Pack(s);return Ln(t,e),t};at.create=(0,wh.makeCommand)(yh,Eh,bh,Sh,(s,e)=>{if(!e?.length)throw new TypeError("no paths specified to add to archive")})});var Cn=d(ht=>{"use strict";var gh=ht&&ht.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(ht,"__esModule",{value:!0});ht.getWriteFlag=void 0;var An=gh(require("fs")),Rh=process.env.__FAKE_PLATFORM__||process.platform,Oh=Rh==="win32",{O_CREAT:vh,O_TRUNC:Th,O_WRONLY:Dh}=An.default.constants,In=Number(process.env.__FAKE_FS_O_FILENAME__)||An.default.constants.UV_FS_O_FILEMAP||0,Ph=Oh&&!!In,Nh=512*1024,Mh=In|Th|vh|Dh;ht.getWriteFlag=Ph?s=>s"w"});var Bn=d(he=>{"use strict";var Fn=he&&he.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(he,"__esModule",{value:!0});he.chownrSync=he.chownr=void 0;var Fi=Fn(require("node:fs")),Pt=Fn(require("node:path")),dr=(s,e,t)=>{try{return Fi.default.lchownSync(s,e,t)}catch(i){if(i?.code!=="ENOENT")throw i}},Ci=(s,e,t,i)=>{Fi.default.lchown(s,e,t,r=>{i(r&&r?.code!=="ENOENT"?r:null)})},Lh=(s,e,t,i,r)=>{if(e.isDirectory())(0,he.chownr)(Pt.default.resolve(s,e.name),t,i,n=>{if(n)return r(n);let o=Pt.default.resolve(s,e.name);Ci(o,t,i,r)});else{let n=Pt.default.resolve(s,e.name);Ci(n,t,i,r)}},Ah=(s,e,t,i)=>{Fi.default.readdir(s,{withFileTypes:!0},(r,n)=>{if(r){if(r.code==="ENOENT")return i();if(r.code!=="ENOTDIR"&&r.code!=="ENOTSUP")return i(r)}if(r||!n.length)return Ci(s,e,t,i);let o=n.length,a=null,h=l=>{if(!a){if(l)return i(a=l);if(--o===0)return Ci(s,e,t,i)}};for(let l of n)Lh(s,l,e,t,h)})};he.chownr=Ah;var Ih=(s,e,t,i)=>{e.isDirectory()&&(0,he.chownrSync)(Pt.default.resolve(s,e.name),t,i),dr(Pt.default.resolve(s,e.name),t,i)},Ch=(s,e,t)=>{let i;try{i=Fi.default.readdirSync(s,{withFileTypes:!0})}catch(r){let n=r;if(n?.code==="ENOENT")return;if(n?.code==="ENOTDIR"||n?.code==="ENOTSUP")return dr(s,e,t);throw n}for(let r of i)Ih(s,r,e,t);return dr(s,e,t)};he.chownrSync=Ch});var zn=d(Bi=>{"use strict";Object.defineProperty(Bi,"__esModule",{value:!0});Bi.CwdError=void 0;var mr=class extends Error{path;code;syscall="chdir";constructor(e,t){super(`${t}: Cannot cd into '${e}'`),this.path=e,this.code=t}get name(){return"CwdError"}};Bi.CwdError=mr});var _r=d(zi=>{"use strict";Object.defineProperty(zi,"__esModule",{value:!0});zi.SymlinkError=void 0;var pr=class extends Error{path;symlink;syscall="symlink";code="TAR_SYMLINK_ERROR";constructor(e,t){super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link"),this.symlink=e,this.path=t}get name(){return"SymlinkError"}};zi.SymlinkError=pr});var qn=d(Te=>{"use strict";var yr=Te&&Te.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(Te,"__esModule",{value:!0});Te.mkdirSync=Te.mkdir=void 0;var kn=Bn(),x=yr(require("node:fs")),Fh=yr(require("node:fs/promises")),ki=yr(require("node:path")),jn=zn(),pe=et(),xn=_r(),Bh=(s,e)=>{x.default.stat(s,(t,i)=>{(t||!i.isDirectory())&&(t=new jn.CwdError(s,t?.code||"ENOTDIR")),e(t)})},zh=(s,e,t)=>{s=(0,pe.normalizeWindowsPath)(s);let i=e.umask??18,r=e.mode|448,n=(r&i)!==0,o=e.uid,a=e.gid,h=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),l=e.preserve,u=e.unlink,c=(0,pe.normalizeWindowsPath)(e.cwd),E=(w,P)=>{w?t(w):P&&h?(0,kn.chownr)(P,o,a,Cr=>E(Cr)):n?x.default.chmod(s,r,t):t()};if(s===c)return Bh(s,E);if(l)return Fh.default.mkdir(s,{mode:r,recursive:!0}).then(w=>E(null,w??void 0),E);let A=(0,pe.normalizeWindowsPath)(ki.default.relative(c,s)).split("/");wr(c,A,r,u,c,void 0,E)};Te.mkdir=zh;var wr=(s,e,t,i,r,n,o)=>{if(!e.length)return o(null,n);let a=e.shift(),h=(0,pe.normalizeWindowsPath)(ki.default.resolve(s+"/"+a));x.default.mkdir(h,t,Un(h,e,t,i,r,n,o))},Un=(s,e,t,i,r,n,o)=>a=>{a?x.default.lstat(s,(h,l)=>{if(h)h.path=h.path&&(0,pe.normalizeWindowsPath)(h.path),o(h);else if(l.isDirectory())wr(s,e,t,i,r,n,o);else if(i)x.default.unlink(s,u=>{if(u)return o(u);x.default.mkdir(s,t,Un(s,e,t,i,r,n,o))});else{if(l.isSymbolicLink())return o(new xn.SymlinkError(s,s+"/"+e.join("/")));o(a)}}):(n=n||s,wr(s,e,t,i,r,n,o))},kh=s=>{let e=!1,t;try{e=x.default.statSync(s).isDirectory()}catch(i){t=i?.code}finally{if(!e)throw new jn.CwdError(s,t??"ENOTDIR")}},jh=(s,e)=>{s=(0,pe.normalizeWindowsPath)(s);let t=e.umask??18,i=e.mode|448,r=(i&t)!==0,n=e.uid,o=e.gid,a=typeof n=="number"&&typeof o=="number"&&(n!==e.processUid||o!==e.processGid),h=e.preserve,l=e.unlink,u=(0,pe.normalizeWindowsPath)(e.cwd),c=w=>{w&&a&&(0,kn.chownrSync)(w,n,o),r&&x.default.chmodSync(s,i)};if(s===u)return kh(u),c();if(h)return c(x.default.mkdirSync(s,{mode:i,recursive:!0})??void 0);let D=(0,pe.normalizeWindowsPath)(ki.default.relative(u,s)).split("/"),A;for(let w=D.shift(),P=u;w&&(P+="/"+w);w=D.shift()){P=(0,pe.normalizeWindowsPath)(ki.default.resolve(P));try{x.default.mkdirSync(P,i),A=A||P}catch{let Fr=x.default.lstatSync(P);if(Fr.isDirectory())continue;if(l){x.default.unlinkSync(P),x.default.mkdirSync(P,i),A=A||P;continue}else if(Fr.isSymbolicLink())return new xn.SymlinkError(P,P+"/"+D.join("/"))}}return c(A)};Te.mkdirSync=jh});var Hn=d(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.normalizeUnicode=void 0;var Er=Object.create(null),Wn=1e4,lt=new Set,xh=s=>{lt.has(s)?lt.delete(s):Er[s]=s.normalize("NFD").toLocaleLowerCase("en").toLocaleUpperCase("en"),lt.add(s);let e=Er[s],t=lt.size-Wn;if(t>Wn/10){for(let i of lt)if(lt.delete(i),delete Er[i],--t<=0)break}return e};ji.normalizeUnicode=xh});var Gn=d(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.PathReservations=void 0;var Zn=require("node:path"),Uh=Hn(),qh=_i(),Wh=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Hh=Wh==="win32",Zh=s=>s.split("/").slice(0,-1).reduce((t,i)=>{let r=t[t.length-1];return r!==void 0&&(i=(0,Zn.join)(r,i)),t.push(i||"/"),t},[]),br=class{#e=new Map;#i=new Map;#s=new Set;reserve(e,t){e=Hh?["win32 parallelization disabled"]:e.map(r=>(0,qh.stripTrailingSlashes)((0,Zn.join)((0,Uh.normalizeUnicode)(r))));let i=new Set(e.map(r=>Zh(r)).reduce((r,n)=>r.concat(n)));this.#i.set(t,{dirs:i,paths:e});for(let r of e){let n=this.#e.get(r);n?n.push(t):this.#e.set(r,[t])}for(let r of i){let n=this.#e.get(r);if(!n)this.#e.set(r,[new Set([t])]);else{let o=n[n.length-1];o instanceof Set?o.add(t):n.push(new Set([t]))}}return this.#r(t)}#n(e){let t=this.#i.get(e);if(!t)throw new Error("function does not have any path reservations");return{paths:t.paths.map(i=>this.#e.get(i)),dirs:[...t.dirs].map(i=>this.#e.get(i))}}check(e){let{paths:t,dirs:i}=this.#n(e);return t.every(r=>r&&r[0]===e)&&i.every(r=>r&&r[0]instanceof Set&&r[0].has(e))}#r(e){return this.#s.has(e)||!this.check(e)?!1:(this.#s.add(e),e(()=>this.#t(e)),!0)}#t(e){if(!this.#s.has(e))return!1;let t=this.#i.get(e);if(!t)throw new Error("invalid reservation");let{paths:i,dirs:r}=t,n=new Set;for(let o of i){let a=this.#e.get(o);if(!a||a?.[0]!==e)continue;let h=a[1];if(!h){this.#e.delete(o);continue}if(a.shift(),typeof h=="function")n.add(h);else for(let l of h)n.add(l)}for(let o of r){let a=this.#e.get(o),h=a?.[0];if(!(!a||!(h instanceof Set)))if(h.size===1&&a.length===1){this.#e.delete(o);continue}else if(h.size===1){a.shift();let l=a[0];typeof l=="function"&&n.add(l)}else h.delete(e)}return this.#s.delete(e),n.forEach(o=>this.#r(o)),!0}};xi.PathReservations=br});var Yn=d(Ui=>{"use strict";Object.defineProperty(Ui,"__esModule",{value:!0});Ui.umask=void 0;var Gh=()=>process.umask();Ui.umask=Gh});var Lr=d(z=>{"use strict";var Yh=z&&z.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),Kh=z&&z.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),so=z&&z.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r{if(!Ft)return m.default.unlink(s,e);let t=s+".DELETE."+(0,ro.randomBytes)(16).toString("hex");m.default.rename(s,t,i=>{if(i)return e(i);m.default.unlink(t,e)})},rl=s=>{if(!Ft)return m.default.unlinkSync(s);let e=s+".DELETE."+(0,ro.randomBytes)(16).toString("hex");m.default.renameSync(s,e),m.default.unlinkSync(e)},io=(s,e,t)=>s!==void 0&&s===s>>>0?s:e!==void 0&&e===e>>>0?e:t,Hi=class extends Xh.Parser{[gr]=!1;[Ct]=!1;[qi]=0;reservations=new Jh.PathReservations;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(e={}){if(e.ondone=()=>{this[gr]=!0,this[Rr]()},super(e),this.transform=e.transform,this.chmod=!!e.chmod,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=!!(process.getuid&&process.getuid()===0):this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:il,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||Ft,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=(0,U.normalizeWindowsPath)(g.default.resolve(e.cwd||process.cwd())),this.strip=Number(e.strip)||0,this.processUmask=this.chmod?typeof e.processUmask=="number"?e.processUmask:(0,el.umask)():0,this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",t=>this[Vn](t))}warn(e,t,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,t,i)}[Rr](){this[gr]&&this[qi]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"))}[Sr](e,t){let i=e[t],{type:r}=e;if(!i||this.preservePaths)return!0;let n=i.split("/");if(n.includes("..")||Ft&&/^[a-z]:\.\.$/i.test(n[0]??"")){if(t==="path"||r==="Link")return this.warn("TAR_ENTRY_ERROR",`${t} contains '..'`,{entry:e,[t]:i}),!1;{let h=g.default.posix.dirname(e.path),l=g.default.posix.normalize(g.default.posix.join(h,i));if(l.startsWith("../")||l==="..")return this.warn("TAR_ENTRY_ERROR",`${t} escapes extraction directory`,{entry:e,[t]:i}),!1}}let[o,a]=(0,Qh.stripAbsolutePath)(i);return o&&(e[t]=String(a),this.warn("TAR_ENTRY_INFO",`stripping ${o} from absolute ${t}`,{entry:e,[t]:i})),!0}[eo](e){let t=(0,U.normalizeWindowsPath)(e.path),i=t.split("/");if(this.strip){if(i.length=this.strip)e.linkpath=r.slice(this.strip).join("/");else return!1}i.splice(0,this.strip),e.path=i.join("/")}if(isFinite(this.maxDepth)&&i.length>this.maxDepth)return this.warn("TAR_ENTRY_ERROR","path excessively deep",{entry:e,path:t,depth:i.length,maxDepth:this.maxDepth}),!1;if(!this[Sr](e,"path")||!this[Sr](e,"linkpath"))return!1;if(g.default.isAbsolute(e.path)?e.absolute=(0,U.normalizeWindowsPath)(g.default.resolve(e.path)):e.absolute=(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,e.path)),!this.preservePaths&&typeof e.absolute=="string"&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:(0,U.normalizeWindowsPath)(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=g.default.win32.parse(String(e.absolute));e.absolute=r+Kn.encode(String(e.absolute).slice(r.length));let{root:n}=g.default.win32.parse(e.path);e.path=n+Kn.encode(e.path.slice(n.length))}return!0}[Vn](e){if(!this[eo](e))return e.resume();switch($h.default.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Or](e);default:return this[Jn](e)}}[T](e,t){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:t}),this[ut](),t.resume())}[De](e,t,i){(0,oo.mkdir)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t},i)}[Lt](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[At](e){return io(this.uid,e.uid,this.processUid)}[It](e){return io(this.gid,e.gid,this.processGid)}[Tr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=new Vh.WriteStream(String(e.absolute),{flags:(0,no.getWriteFlag)(e.size),mode:i,autoClose:!1});r.on("error",h=>{r.fd&&m.default.close(r.fd,()=>{}),r.write=()=>!0,this[T](h,e),t()});let n=1,o=h=>{if(h){r.fd&&m.default.close(r.fd,()=>{}),this[T](h,e),t();return}--n===0&&r.fd!==void 0&&m.default.close(r.fd,l=>{l?this[T](l,e):this[ut](),t()})};r.on("finish",()=>{let h=String(e.absolute),l=r.fd;if(typeof l=="number"&&e.mtime&&!this.noMtime){n++;let u=e.atime||new Date,c=e.mtime;m.default.futimes(l,u,c,E=>E?m.default.utimes(h,u,c,D=>o(D&&E)):o())}if(typeof l=="number"&&this[Lt](e)){n++;let u=this[At](e),c=this[It](e);typeof u=="number"&&typeof c=="number"&&m.default.fchown(l,u,c,E=>E?m.default.chown(h,u,c,D=>o(D&&E)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",h=>{this[T](h,e),t()}),e.pipe(a)),a.pipe(r)}[Dr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode;this[De](String(e.absolute),i,r=>{if(r){this[T](r,e),t();return}let n=1,o=()=>{--n===0&&(t(),this[ut](),e.resume())};e.mtime&&!this.noMtime&&(n++,m.default.utimes(String(e.absolute),e.atime||new Date,e.mtime,o)),this[Lt](e)&&(n++,m.default.chown(String(e.absolute),Number(this[At](e)),Number(this[It](e)),o)),o()})}[Jn](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Xn](e,t){let i=(0,U.normalizeWindowsPath)(g.default.relative(this.cwd,g.default.resolve(g.default.dirname(String(e.absolute)),String(e.linkpath)))).split("/");this[Mt](e,this.cwd,i,()=>this[Wi](e,String(e.linkpath),"symlink",t),r=>{this[T](r,e),t()})}[Qn](e,t){let i=(0,U.normalizeWindowsPath)(g.default.resolve(this.cwd,String(e.linkpath))),r=(0,U.normalizeWindowsPath)(String(e.linkpath)).split("/");this[Mt](e,this.cwd,r,()=>this[Wi](e,i,"link",t),n=>{this[T](n,e),t()})}[Mt](e,t,i,r,n){let o=i.shift();if(this.preservePaths||o===void 0)return r();let a=g.default.resolve(t,o);m.default.lstat(a,(h,l)=>{if(h)return r();if(l?.isSymbolicLink())return n(new ao.SymlinkError(a,g.default.resolve(a,i.join("/"))));this[Mt](e,a,i,r,n)})}[to](){this[qi]++}[ut](){this[qi]--,this[Rr]()}[Pr](e){this[ut](),e.resume()}[vr](e,t){return e.type==="File"&&!this.unlink&&t.isFile()&&t.nlink<=1&&!Ft}[Or](e){this[to]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,i=>this[$n](e,i))}[$n](e,t){let i=a=>{t(a)},r=()=>{this[De](this.cwd,this.dmode,a=>{if(a){this[T](a,e),i();return}this[Ct]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let a=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(a!==this.cwd)return this[De](a,this.dmode,h=>{if(h){this[T](h,e),i();return}o()})}o()},o=()=>{m.default.lstat(String(e.absolute),(a,h)=>{if(h&&(this.keep||this.newer&&h.mtime>(e.mtime??h.mtime))){this[Pr](e),i();return}if(a||this[vr](e,h))return this[Z](null,e,i);if(h.isDirectory()){if(e.type==="Directory"){let l=this.chmod&&e.mode&&(h.mode&4095)!==e.mode,u=c=>this[Z](c??null,e,i);return l?m.default.chmod(String(e.absolute),Number(e.mode),u):u()}if(e.absolute!==this.cwd)return m.default.rmdir(String(e.absolute),l=>this[Z](l??null,e,i))}if(e.absolute===this.cwd)return this[Z](null,e,i);sl(String(e.absolute),l=>this[Z](l??null,e,i))})};this[Ct]?n():r()}[Z](e,t,i){if(e){this[T](e,t),i();return}switch(t.type){case"File":case"OldFile":case"ContiguousFile":return this[Tr](t,i);case"Link":return this[Qn](t,i);case"SymbolicLink":return this[Xn](t,i);case"Directory":case"GNUDumpDir":return this[Dr](t,i)}}[Wi](e,t,i,r){m.default[i](t,String(e.absolute),n=>{n?this[T](n,e):(this[ut](),e.resume()),r()})}};z.Unpack=Hi;var Nt=s=>{try{return[null,s()]}catch(e){return[e,null]}},Nr=class extends Hi{sync=!0;[Z](e,t){return super[Z](e,t,()=>{})}[Or](e){if(!this[Ct]){let n=this[De](this.cwd,this.dmode);if(n)return this[T](n,e);this[Ct]=!0}if(e.absolute!==this.cwd){let n=(0,U.normalizeWindowsPath)(g.default.dirname(String(e.absolute)));if(n!==this.cwd){let o=this[De](n,this.dmode);if(o)return this[T](o,e)}}let[t,i]=Nt(()=>m.default.lstatSync(String(e.absolute)));if(i&&(this.keep||this.newer&&i.mtime>(e.mtime??i.mtime)))return this[Pr](e);if(t||this[vr](e,i))return this[Z](null,e);if(i.isDirectory()){if(e.type==="Directory"){let o=this.chmod&&e.mode&&(i.mode&4095)!==e.mode,[a]=o?Nt(()=>{m.default.chmodSync(String(e.absolute),Number(e.mode))}):[];return this[Z](a,e)}let[n]=Nt(()=>m.default.rmdirSync(String(e.absolute)));this[Z](n,e)}let[r]=e.absolute===this.cwd?[]:Nt(()=>rl(String(e.absolute)));this[Z](r,e)}[Tr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.fmode,r=a=>{let h;try{m.default.closeSync(n)}catch(l){h=l}(a||h)&&this[T](a||h,e),t()},n;try{n=m.default.openSync(String(e.absolute),(0,no.getWriteFlag)(e.size),i)}catch(a){return r(a)}let o=this.transform&&this.transform(e)||e;o!==e&&(o.on("error",a=>this[T](a,e)),e.pipe(o)),o.on("data",a=>{try{m.default.writeSync(n,a,0,a.length)}catch(h){r(h)}}),o.on("end",()=>{let a=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,l=e.mtime;try{m.default.futimesSync(n,h,l)}catch(u){try{m.default.utimesSync(String(e.absolute),h,l)}catch{a=u}}}if(this[Lt](e)){let h=this[At](e),l=this[It](e);try{m.default.fchownSync(n,Number(h),Number(l))}catch(u){try{m.default.chownSync(String(e.absolute),Number(h),Number(l))}catch{a=a||u}}}r(a)})}[Dr](e,t){let i=typeof e.mode=="number"?e.mode&4095:this.dmode,r=this[De](String(e.absolute),i);if(r){this[T](r,e),t();return}if(e.mtime&&!this.noMtime)try{m.default.utimesSync(String(e.absolute),e.atime||new Date,e.mtime)}catch{}if(this[Lt](e))try{m.default.chownSync(String(e.absolute),Number(this[At](e)),Number(this[It](e)))}catch{}t(),e.resume()}[De](e,t){try{return(0,oo.mkdirSync)((0,U.normalizeWindowsPath)(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t})}catch(i){return i}}[Mt](e,t,i,r,n){if(this.preservePaths||!i.length)return r();let o=t;for(let a of i){o=g.default.resolve(o,a);let[h,l]=Nt(()=>m.default.lstatSync(o));if(h)return r();if(l.isSymbolicLink())return n(new ao.SymlinkError(o,g.default.resolve(t,i.join("/"))))}r()}[Wi](e,t,i,r){let n=`${i}Sync`;try{m.default[n](t,String(e.absolute)),r(),e.resume()}catch(o){return this[T](o,e)}}};z.UnpackSync=Nr});var Ar=d(G=>{"use strict";var nl=G&&G.__createBinding||(Object.create?(function(s,e,t,i){i===void 0&&(i=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,i,r)}):(function(s,e,t,i){i===void 0&&(i=t),s[i]=e[t]})),ol=G&&G.__setModuleDefault||(Object.create?(function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}):function(s,e){s.default=e}),al=G&&G.__importStar||(function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var i=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[i.length]=r);return i},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=s(e),r=0;r