From a43b49ce5e22be0ee916213e06928fab52c71304 Mon Sep 17 00:00:00 2001 From: npm CLI robot Date: Wed, 19 Nov 2025 21:02:26 +0000 Subject: [PATCH] deps: upgrade npm to 11.6.3 --- deps/npm/docs/content/commands/npm-access.md | 13 +- deps/npm/docs/content/commands/npm-adduser.md | 4 +- deps/npm/docs/content/commands/npm-audit.md | 132 +- deps/npm/docs/content/commands/npm-bugs.md | 32 +- deps/npm/docs/content/commands/npm-ci.md | 156 +- deps/npm/docs/content/commands/npm-config.md | 30 +- deps/npm/docs/content/commands/npm-dedupe.md | 146 +- .../docs/content/commands/npm-deprecate.md | 22 +- deps/npm/docs/content/commands/npm-diff.md | 59 +- .../npm/docs/content/commands/npm-dist-tag.md | 32 +- deps/npm/docs/content/commands/npm-docs.md | 32 +- deps/npm/docs/content/commands/npm-exec.md | 40 +- deps/npm/docs/content/commands/npm-explain.md | 16 +- deps/npm/docs/content/commands/npm-explore.md | 4 +- .../docs/content/commands/npm-find-dupes.md | 133 +- deps/npm/docs/content/commands/npm-fund.md | 28 +- deps/npm/docs/content/commands/npm-help.md | 3 +- deps/npm/docs/content/commands/npm-init.md | 71 +- .../content/commands/npm-install-ci-test.md | 156 +- .../docs/content/commands/npm-install-test.md | 219 +- deps/npm/docs/content/commands/npm-install.md | 219 +- deps/npm/docs/content/commands/npm-link.md | 164 +- deps/npm/docs/content/commands/npm-login.md | 4 +- deps/npm/docs/content/commands/npm-ls.md | 111 +- deps/npm/docs/content/commands/npm-org.md | 17 +- .../npm/docs/content/commands/npm-outdated.md | 53 +- deps/npm/docs/content/commands/npm-owner.md | 34 +- deps/npm/docs/content/commands/npm-pack.md | 57 +- deps/npm/docs/content/commands/npm-pkg.md | 45 +- deps/npm/docs/content/commands/npm-prefix.md | 11 +- deps/npm/docs/content/commands/npm-profile.md | 17 +- deps/npm/docs/content/commands/npm-prune.md | 98 +- deps/npm/docs/content/commands/npm-publish.md | 115 +- deps/npm/docs/content/commands/npm-query.md | 56 +- deps/npm/docs/content/commands/npm-rebuild.md | 78 +- deps/npm/docs/content/commands/npm-repo.md | 32 +- deps/npm/docs/content/commands/npm-restart.md | 12 +- deps/npm/docs/content/commands/npm-root.md | 11 +- deps/npm/docs/content/commands/npm-run.md | 71 +- deps/npm/docs/content/commands/npm-sbom.md | 49 +- deps/npm/docs/content/commands/npm-search.md | 34 +- deps/npm/docs/content/commands/npm-star.md | 18 +- deps/npm/docs/content/commands/npm-start.md | 12 +- deps/npm/docs/content/commands/npm-stop.md | 12 +- deps/npm/docs/content/commands/npm-team.md | 17 +- deps/npm/docs/content/commands/npm-test.md | 12 +- deps/npm/docs/content/commands/npm-token.md | 137 +- .../docs/content/commands/npm-undeprecate.md | 22 +- .../docs/content/commands/npm-uninstall.md | 52 +- .../docs/content/commands/npm-unpublish.md | 54 +- deps/npm/docs/content/commands/npm-unstar.md | 18 +- deps/npm/docs/content/commands/npm-update.md | 189 +- deps/npm/docs/content/commands/npm-version.md | 89 +- deps/npm/docs/content/commands/npm-view.md | 36 +- deps/npm/docs/content/commands/npm.md | 2 +- deps/npm/docs/content/using-npm/config.md | 932 ++++---- deps/npm/docs/output/commands/npm-access.html | 16 +- .../npm/docs/output/commands/npm-adduser.html | 8 +- deps/npm/docs/output/commands/npm-audit.html | 135 +- deps/npm/docs/output/commands/npm-bugs.html | 36 +- deps/npm/docs/output/commands/npm-cache.html | 4 +- deps/npm/docs/output/commands/npm-ci.html | 158 +- .../docs/output/commands/npm-completion.html | 4 +- deps/npm/docs/output/commands/npm-config.html | 34 +- deps/npm/docs/output/commands/npm-dedupe.html | 148 +- .../docs/output/commands/npm-deprecate.html | 25 +- deps/npm/docs/output/commands/npm-diff.html | 59 +- .../docs/output/commands/npm-dist-tag.html | 36 +- deps/npm/docs/output/commands/npm-docs.html | 36 +- deps/npm/docs/output/commands/npm-doctor.html | 4 +- deps/npm/docs/output/commands/npm-edit.html | 4 +- deps/npm/docs/output/commands/npm-exec.html | 41 +- .../npm/docs/output/commands/npm-explain.html | 20 +- .../npm/docs/output/commands/npm-explore.html | 8 +- .../docs/output/commands/npm-find-dupes.html | 135 +- deps/npm/docs/output/commands/npm-fund.html | 32 +- .../docs/output/commands/npm-help-search.html | 4 +- deps/npm/docs/output/commands/npm-help.html | 7 +- deps/npm/docs/output/commands/npm-init.html | 75 +- .../output/commands/npm-install-ci-test.html | 158 +- .../output/commands/npm-install-test.html | 221 +- .../npm/docs/output/commands/npm-install.html | 221 +- deps/npm/docs/output/commands/npm-link.html | 166 +- deps/npm/docs/output/commands/npm-login.html | 8 +- deps/npm/docs/output/commands/npm-logout.html | 4 +- deps/npm/docs/output/commands/npm-ls.html | 115 +- deps/npm/docs/output/commands/npm-org.html | 20 +- .../docs/output/commands/npm-outdated.html | 55 +- deps/npm/docs/output/commands/npm-owner.html | 37 +- deps/npm/docs/output/commands/npm-pack.html | 60 +- deps/npm/docs/output/commands/npm-ping.html | 4 +- deps/npm/docs/output/commands/npm-pkg.html | 49 +- deps/npm/docs/output/commands/npm-prefix.html | 15 +- .../npm/docs/output/commands/npm-profile.html | 20 +- deps/npm/docs/output/commands/npm-prune.html | 101 +- .../npm/docs/output/commands/npm-publish.html | 102 +- deps/npm/docs/output/commands/npm-query.html | 60 +- .../npm/docs/output/commands/npm-rebuild.html | 81 +- deps/npm/docs/output/commands/npm-repo.html | 36 +- .../npm/docs/output/commands/npm-restart.html | 14 +- deps/npm/docs/output/commands/npm-root.html | 15 +- deps/npm/docs/output/commands/npm-run.html | 73 +- deps/npm/docs/output/commands/npm-sbom.html | 53 +- deps/npm/docs/output/commands/npm-search.html | 38 +- .../docs/output/commands/npm-shrinkwrap.html | 4 +- deps/npm/docs/output/commands/npm-star.html | 21 +- deps/npm/docs/output/commands/npm-stars.html | 4 +- deps/npm/docs/output/commands/npm-start.html | 14 +- deps/npm/docs/output/commands/npm-stop.html | 14 +- deps/npm/docs/output/commands/npm-team.html | 20 +- deps/npm/docs/output/commands/npm-test.html | 14 +- deps/npm/docs/output/commands/npm-token.html | 109 +- .../docs/output/commands/npm-undeprecate.html | 25 +- .../docs/output/commands/npm-uninstall.html | 56 +- .../docs/output/commands/npm-unpublish.html | 58 +- deps/npm/docs/output/commands/npm-unstar.html | 21 +- deps/npm/docs/output/commands/npm-update.html | 191 +- .../npm/docs/output/commands/npm-version.html | 86 +- deps/npm/docs/output/commands/npm-view.html | 40 +- deps/npm/docs/output/commands/npm-whoami.html | 4 +- deps/npm/docs/output/commands/npm.html | 6 +- deps/npm/docs/output/commands/npx.html | 4 +- .../docs/output/configuring-npm/folders.html | 4 +- .../docs/output/configuring-npm/install.html | 4 +- .../output/configuring-npm/npm-global.html | 4 +- .../docs/output/configuring-npm/npm-json.html | 4 +- .../configuring-npm/npm-shrinkwrap-json.html | 4 +- .../docs/output/configuring-npm/npmrc.html | 4 +- .../output/configuring-npm/package-json.html | 4 +- .../configuring-npm/package-lock-json.html | 4 +- deps/npm/docs/output/using-npm/config.html | 891 ++++---- .../using-npm/dependency-selectors.html | 4 +- .../npm/docs/output/using-npm/developers.html | 4 +- deps/npm/docs/output/using-npm/logging.html | 4 +- deps/npm/docs/output/using-npm/orgs.html | 4 +- .../docs/output/using-npm/package-spec.html | 4 +- deps/npm/docs/output/using-npm/registry.html | 4 +- deps/npm/docs/output/using-npm/removal.html | 4 +- deps/npm/docs/output/using-npm/scope.html | 4 +- deps/npm/docs/output/using-npm/scripts.html | 4 +- .../npm/docs/output/using-npm/workspaces.html | 4 +- deps/npm/lib/commands/completion.js | 2 +- deps/npm/lib/commands/explain.js | 4 +- deps/npm/lib/commands/init.js | 2 +- deps/npm/lib/commands/token.js | 138 +- deps/npm/lib/commands/version.js | 2 + deps/npm/lib/utils/error-message.js | 2 +- deps/npm/man/man1/npm-access.1 | 5 +- deps/npm/man/man1/npm-adduser.1 | 2 +- deps/npm/man/man1/npm-audit.1 | 5 +- deps/npm/man/man1/npm-bugs.1 | 2 +- deps/npm/man/man1/npm-cache.1 | 2 +- deps/npm/man/man1/npm-ci.1 | 5 +- deps/npm/man/man1/npm-completion.1 | 2 +- deps/npm/man/man1/npm-config.1 | 2 +- deps/npm/man/man1/npm-dedupe.1 | 5 +- deps/npm/man/man1/npm-deprecate.1 | 5 +- deps/npm/man/man1/npm-diff.1 | 6 +- deps/npm/man/man1/npm-dist-tag.1 | 2 +- deps/npm/man/man1/npm-docs.1 | 2 +- deps/npm/man/man1/npm-doctor.1 | 2 +- deps/npm/man/man1/npm-edit.1 | 2 +- deps/npm/man/man1/npm-exec.1 | 2 +- deps/npm/man/man1/npm-explain.1 | 2 +- deps/npm/man/man1/npm-explore.1 | 2 +- deps/npm/man/man1/npm-find-dupes.1 | 5 +- deps/npm/man/man1/npm-fund.1 | 2 +- deps/npm/man/man1/npm-help-search.1 | 2 +- deps/npm/man/man1/npm-help.1 | 2 +- deps/npm/man/man1/npm-init.1 | 2 +- deps/npm/man/man1/npm-install-ci-test.1 | 5 +- deps/npm/man/man1/npm-install-test.1 | 5 +- deps/npm/man/man1/npm-install.1 | 5 +- deps/npm/man/man1/npm-link.1 | 5 +- deps/npm/man/man1/npm-login.1 | 2 +- deps/npm/man/man1/npm-logout.1 | 2 +- deps/npm/man/man1/npm-ls.1 | 4 +- deps/npm/man/man1/npm-org.1 | 5 +- deps/npm/man/man1/npm-outdated.1 | 2 +- deps/npm/man/man1/npm-owner.1 | 5 +- deps/npm/man/man1/npm-pack.1 | 5 +- deps/npm/man/man1/npm-ping.1 | 2 +- deps/npm/man/man1/npm-pkg.1 | 2 +- deps/npm/man/man1/npm-prefix.1 | 2 +- deps/npm/man/man1/npm-profile.1 | 5 +- deps/npm/man/man1/npm-prune.1 | 5 +- deps/npm/man/man1/npm-publish.1 | 45 +- deps/npm/man/man1/npm-query.1 | 2 +- deps/npm/man/man1/npm-rebuild.1 | 5 +- deps/npm/man/man1/npm-repo.1 | 2 +- deps/npm/man/man1/npm-restart.1 | 8 +- deps/npm/man/man1/npm-root.1 | 2 +- deps/npm/man/man1/npm-run.1 | 8 +- deps/npm/man/man1/npm-sbom.1 | 2 +- deps/npm/man/man1/npm-search.1 | 2 +- deps/npm/man/man1/npm-shrinkwrap.1 | 2 +- deps/npm/man/man1/npm-star.1 | 5 +- deps/npm/man/man1/npm-stars.1 | 2 +- deps/npm/man/man1/npm-start.1 | 8 +- deps/npm/man/man1/npm-stop.1 | 8 +- deps/npm/man/man1/npm-team.1 | 5 +- deps/npm/man/man1/npm-test.1 | 8 +- deps/npm/man/man1/npm-token.1 | 121 +- deps/npm/man/man1/npm-undeprecate.1 | 5 +- deps/npm/man/man1/npm-uninstall.1 | 2 +- deps/npm/man/man1/npm-unpublish.1 | 2 +- deps/npm/man/man1/npm-unstar.1 | 5 +- deps/npm/man/man1/npm-update.1 | 5 +- deps/npm/man/man1/npm-version.1 | 28 +- deps/npm/man/man1/npm-view.1 | 2 +- deps/npm/man/man1/npm-whoami.1 | 2 +- deps/npm/man/man1/npm.1 | 4 +- deps/npm/man/man1/npx.1 | 2 +- deps/npm/man/man5/folders.5 | 2 +- deps/npm/man/man5/install.5 | 2 +- deps/npm/man/man5/npm-global.5 | 2 +- deps/npm/man/man5/npm-json.5 | 2 +- deps/npm/man/man5/npm-shrinkwrap-json.5 | 2 +- deps/npm/man/man5/npmrc.5 | 2 +- deps/npm/man/man5/package-json.5 | 2 +- deps/npm/man/man5/package-lock-json.5 | 2 +- deps/npm/man/man7/config.7 | 131 +- deps/npm/man/man7/dependency-selectors.7 | 2 +- deps/npm/man/man7/developers.7 | 2 +- deps/npm/man/man7/logging.7 | 2 +- deps/npm/man/man7/orgs.7 | 2 +- deps/npm/man/man7/package-spec.7 | 2 +- deps/npm/man/man7/registry.7 | 2 +- deps/npm/man/man7/removal.7 | 2 +- deps/npm/man/man7/scope.7 | 2 +- deps/npm/man/man7/scripts.7 | 2 +- deps/npm/man/man7/workspaces.7 | 2 +- .../arborist/lib/arborist/build-ideal-tree.js | 66 +- .../@npmcli/arborist/lib/arborist/index.js | 30 + .../arborist/lib/arborist/isolated-reifier.js | 5 +- .../arborist/lib/arborist/load-actual.js | 13 - .../arborist/lib/arborist/load-virtual.js | 78 +- .../@npmcli/arborist/lib/arborist/rebuild.js | 31 +- .../@npmcli/arborist/lib/arborist/reify.js | 24 +- .../@npmcli/arborist/lib/calc-dep-flags.js | 214 +- .../node_modules/@npmcli/arborist/lib/edge.js | 12 +- .../node_modules/@npmcli/arborist/lib/node.js | 16 + .../@npmcli/arborist/lib/optional-set.js | 4 - .../@npmcli/arborist/lib/override-set.js | 78 +- .../@npmcli/arborist/lib/reset-dep-flags.js | 6 +- .../@npmcli/arborist/package.json | 20 +- .../config/lib/definitions/definitions.js | 110 + .../node_modules/@npmcli/config/package.json | 6 +- .../npm/node_modules/@npmcli/git/package.json | 10 +- .../installed-package-contents/package.json | 12 +- .../@npmcli/map-workspaces/package.json | 8 +- .../@npmcli/metavuln-calculator/package.json | 10 +- .../@npmcli/name-from-folder/package.json | 8 +- .../@npmcli/node-gyp/package.json | 8 +- .../@npmcli/package-json/lib/index.js | 2 +- .../@npmcli/package-json/package.json | 12 +- .../@npmcli/promise-spawn/lib/escape.js | 1 - .../@npmcli/promise-spawn/package.json | 12 +- .../node_modules/@npmcli/redact/package.json | 8 +- .../@npmcli/run-script/package.json | 18 +- .../npm/node_modules/@pkgjs/parseargs/LICENSE | 201 -- .../parseargs/examples/is-default-value.js | 25 - .../parseargs/examples/limit-long-syntax.js | 35 - .../@pkgjs/parseargs/examples/negate.js | 43 - .../parseargs/examples/no-repeated-options.js | 31 - .../parseargs/examples/ordered-options.mjs | 41 - .../parseargs/examples/simple-hard-coded.js | 26 - .../node_modules/@pkgjs/parseargs/index.js | 396 ---- .../@pkgjs/parseargs/internal/errors.js | 47 - .../@pkgjs/parseargs/internal/primordials.js | 393 ---- .../@pkgjs/parseargs/internal/util.js | 14 - .../@pkgjs/parseargs/internal/validators.js | 89 - .../@pkgjs/parseargs/package.json | 36 - .../node_modules/@pkgjs/parseargs/utils.js | 198 -- .../sign/node_modules/proc-log}/LICENSE | 2 +- .../sign/node_modules/proc-log/lib/index.js | 153 ++ .../sign/node_modules/proc-log/package.json | 46 + deps/npm/node_modules/abbrev/package.json | 26 +- deps/npm/node_modules/bin-links/package.json | 18 +- deps/npm/node_modules/cacache/package.json | 4 +- deps/npm/node_modules/cmd-shim/package.json | 8 +- .../exponential-backoff/package.json | 2 +- deps/npm/node_modules/ini/package.json | 8 +- .../init-package-json/package.json | 4 +- .../package.json | 8 +- deps/npm/node_modules/libnpmdiff/package.json | 4 +- .../node_modules/libnpmexec/lib/with-lock.js | 12 +- deps/npm/node_modules/libnpmexec/package.json | 8 +- deps/npm/node_modules/libnpmfund/package.json | 4 +- deps/npm/node_modules/libnpmpack/package.json | 4 +- .../node_modules/libnpmpublish/package.json | 6 +- .../node_modules/libnpmversion/package.json | 6 +- .../make-fetch-happen/package.json | 8 +- .../jackspeak => minimatch}/LICENSE.md | 0 .../minimatch/dist/commonjs/ast.js | 9 +- .../minimatch/dist/commonjs/escape.js | 12 +- .../minimatch/dist/commonjs/index.js | 21 +- .../minimatch/dist/commonjs/unescape.js | 30 +- .../node_modules/minimatch/dist/esm/ast.js | 9 +- .../node_modules/minimatch/dist/esm/escape.js | 12 +- .../node_modules/minimatch/dist/esm/index.js | 21 +- .../minimatch/dist/esm/unescape.js | 30 +- deps/npm/node_modules/minimatch/package.json | 13 +- .../node_modules/minipass-fetch/package.json | 8 +- .../node-gyp/.release-please-manifest.json | 2 +- deps/npm/node_modules/node-gyp/CHANGELOG.md | 57 + .../gyp/.release-please-manifest.json | 2 +- .../node-gyp/gyp/pylib/gyp/MSVSVersion.py | 27 +- .../gyp/pylib/gyp/generator/android.py | 2 +- .../gyp/generator/compile_commands_json.py | 2 +- .../node-gyp/gyp/pylib/gyp/generator/gypd.py | 2 +- .../node-gyp/gyp/pylib/gyp/generator/make.py | 2 +- .../node-gyp/gyp/pylib/gyp/generator/msvs.py | 6 +- .../node-gyp/gyp/pylib/gyp/generator/xcode.py | 8 +- .../node-gyp/gyp/pylib/gyp/input.py | 2 +- .../node-gyp/gyp/pylib/gyp/xcode_emulation.py | 8 +- .../node-gyp/gyp/pylib/gyp/xcode_ninja.py | 2 +- .../node-gyp/gyp/pylib/gyp/xcodeproj_file.py | 10 +- .../node_modules/node-gyp/gyp/pyproject.toml | 2 +- .../node-gyp/lib/find-visualstudio.js | 12 +- .../node_modules/@npmcli/agent/lib/agents.js | 206 -- .../node_modules/@npmcli/agent/lib/dns.js | 53 - .../node_modules/@npmcli/agent/lib/errors.js | 61 - .../node_modules/@npmcli/agent/lib/index.js | 56 - .../node_modules/@npmcli/agent/lib/options.js | 86 - .../node_modules/@npmcli/agent/lib/proxy.js | 88 - .../node-gyp/node_modules/cacache/LICENSE.md | 16 - .../node_modules/cacache/lib/content/path.js | 29 - .../node_modules/cacache/lib/content/read.js | 165 -- .../node_modules/cacache/lib/content/rm.js | 18 - .../node_modules/cacache/lib/content/write.js | 206 -- .../node_modules/cacache/lib/entry-index.js | 336 --- .../node-gyp/node_modules/cacache/lib/get.js | 170 -- .../node_modules/cacache/lib/index.js | 42 - .../node_modules/cacache/lib/memoization.js | 72 - .../node-gyp/node_modules/cacache/lib/put.js | 80 - .../node-gyp/node_modules/cacache/lib/rm.js | 31 - .../node_modules/cacache/lib/util/glob.js | 7 - .../cacache/lib/util/hash-to-segments.js | 7 - .../node_modules/cacache/lib/util/tmp.js | 26 - .../node_modules/cacache/lib/verify.js | 258 --- .../node_modules/cacache/package.json | 83 - .../node-gyp/node_modules/glob/README.md | 1265 ----------- .../node_modules/glob/dist/commonjs/glob.d.ts | 388 ---- .../glob/dist/commonjs/glob.d.ts.map | 1 - .../node_modules/glob/dist/commonjs/glob.js | 247 -- .../glob/dist/commonjs/glob.js.map | 1 - .../glob/dist/commonjs/has-magic.d.ts | 14 - .../glob/dist/commonjs/has-magic.d.ts.map | 1 - .../glob/dist/commonjs/has-magic.js | 27 - .../glob/dist/commonjs/has-magic.js.map | 1 - .../glob/dist/commonjs/ignore.d.ts | 24 - .../glob/dist/commonjs/ignore.d.ts.map | 1 - .../node_modules/glob/dist/commonjs/ignore.js | 119 - .../glob/dist/commonjs/ignore.js.map | 1 - .../glob/dist/commonjs/index.d.ts | 97 - .../glob/dist/commonjs/index.d.ts.map | 1 - .../node_modules/glob/dist/commonjs/index.js | 68 - .../glob/dist/commonjs/index.js.map | 1 - .../glob/dist/commonjs/package.json | 3 - .../glob/dist/commonjs/pattern.d.ts | 76 - .../glob/dist/commonjs/pattern.d.ts.map | 1 - .../glob/dist/commonjs/pattern.js | 219 -- .../glob/dist/commonjs/pattern.js.map | 1 - .../glob/dist/commonjs/processor.d.ts | 59 - .../glob/dist/commonjs/processor.d.ts.map | 1 - .../glob/dist/commonjs/processor.js | 301 --- .../glob/dist/commonjs/processor.js.map | 1 - .../glob/dist/commonjs/walker.d.ts | 97 - .../glob/dist/commonjs/walker.d.ts.map | 1 - .../node_modules/glob/dist/commonjs/walker.js | 387 ---- .../glob/dist/commonjs/walker.js.map | 1 - .../node_modules/glob/dist/esm/bin.d.mts | 3 - .../node_modules/glob/dist/esm/bin.d.mts.map | 1 - .../node_modules/glob/dist/esm/bin.mjs | 270 --- .../node_modules/glob/dist/esm/bin.mjs.map | 1 - .../node_modules/glob/dist/esm/glob.d.ts | 388 ---- .../node_modules/glob/dist/esm/glob.d.ts.map | 1 - .../node_modules/glob/dist/esm/glob.js | 243 -- .../node_modules/glob/dist/esm/glob.js.map | 1 - .../node_modules/glob/dist/esm/has-magic.d.ts | 14 - .../glob/dist/esm/has-magic.d.ts.map | 1 - .../node_modules/glob/dist/esm/has-magic.js | 23 - .../glob/dist/esm/has-magic.js.map | 1 - .../node_modules/glob/dist/esm/ignore.d.ts | 24 - .../glob/dist/esm/ignore.d.ts.map | 1 - .../node_modules/glob/dist/esm/ignore.js | 115 - .../node_modules/glob/dist/esm/ignore.js.map | 1 - .../node_modules/glob/dist/esm/index.d.ts | 97 - .../node_modules/glob/dist/esm/index.d.ts.map | 1 - .../node_modules/glob/dist/esm/index.js | 55 - .../node_modules/glob/dist/esm/index.js.map | 1 - .../node_modules/glob/dist/esm/package.json | 3 - .../node_modules/glob/dist/esm/pattern.d.ts | 76 - .../glob/dist/esm/pattern.d.ts.map | 1 - .../node_modules/glob/dist/esm/pattern.js | 215 -- .../node_modules/glob/dist/esm/pattern.js.map | 1 - .../node_modules/glob/dist/esm/processor.d.ts | 59 - .../glob/dist/esm/processor.d.ts.map | 1 - .../node_modules/glob/dist/esm/processor.js | 294 --- .../glob/dist/esm/processor.js.map | 1 - .../node_modules/glob/dist/esm/walker.d.ts | 97 - .../glob/dist/esm/walker.d.ts.map | 1 - .../node_modules/glob/dist/esm/walker.js | 381 ---- .../node_modules/glob/dist/esm/walker.js.map | 1 - .../node-gyp/node_modules/glob/package.json | 99 - .../jackspeak/dist/commonjs/index.js | 1010 --------- .../jackspeak/dist/commonjs/package.json | 3 - .../jackspeak/dist/commonjs/parse-args.js | 50 - .../node_modules/jackspeak/dist/esm/index.js | 1000 -------- .../jackspeak/dist/esm/package.json | 3 - .../jackspeak/dist/esm/parse-args.js | 26 - .../node_modules/jackspeak/package.json | 95 - .../lru-cache/dist/commonjs/index.js | 1546 ------------- .../lru-cache/dist/commonjs/index.min.js | 2 - .../lru-cache/dist/commonjs/package.json | 3 - .../node_modules/lru-cache/dist/esm/index.js | 1542 ------------- .../lru-cache/dist/esm/index.min.js | 2 - .../lru-cache/dist/esm/package.json | 3 - .../node_modules/lru-cache/package.json | 116 - .../node_modules/make-fetch-happen/LICENSE | 16 - .../make-fetch-happen/lib/cache/entry.js | 471 ---- .../make-fetch-happen/lib/cache/errors.js | 11 - .../make-fetch-happen/lib/cache/index.js | 49 - .../make-fetch-happen/lib/cache/key.js | 17 - .../make-fetch-happen/lib/cache/policy.js | 161 -- .../make-fetch-happen/lib/fetch.js | 118 - .../make-fetch-happen/lib/index.js | 41 - .../make-fetch-happen/lib/options.js | 59 - .../make-fetch-happen/lib/pipeline.js | 41 - .../make-fetch-happen/lib/remote.js | 132 -- .../make-fetch-happen/package.json | 74 - .../dist/commonjs/assert-valid-pattern.js | 14 - .../minimatch/dist/commonjs/ast.js | 592 ----- .../dist/commonjs/brace-expressions.js | 152 -- .../minimatch/dist/commonjs/escape.js | 22 - .../minimatch/dist/commonjs/index.js | 1017 --------- .../minimatch/dist/commonjs/package.json | 3 - .../minimatch/dist/commonjs/unescape.js | 24 - .../dist/esm/assert-valid-pattern.js | 10 - .../node_modules/minimatch/dist/esm/ast.js | 588 ----- .../minimatch/dist/esm/brace-expressions.js | 148 -- .../node_modules/minimatch/dist/esm/escape.js | 18 - .../node_modules/minimatch/dist/esm/index.js | 1001 -------- .../minimatch/dist/esm/package.json | 3 - .../minimatch/dist/esm/unescape.js | 20 - .../node_modules/minimatch/package.json | 82 - .../path-scurry/dist/commonjs/index.js | 2014 ----------------- .../path-scurry/dist/commonjs/package.json | 3 - .../path-scurry/dist/esm/index.js | 1979 ---------------- .../path-scurry/dist/esm/package.json | 3 - .../node_modules/path-scurry/package.json | 89 - deps/npm/node_modules/node-gyp/package.json | 26 +- deps/npm/node_modules/nopt/package.json | 10 +- .../npm/node_modules/npm-bundled/package.json | 10 +- .../npm-install-checks/package.json | 8 +- .../npm-normalize-package-bin/package.json | 8 +- .../node_modules/npm-package-arg/lib/npa.js | 2 - .../node_modules/npm-package-arg/package.json | 13 +- .../node_modules/npm-packlist/package.json | 8 +- .../npm-pick-manifest/package.json | 12 +- .../npm/node_modules/npm-profile/package.json | 8 +- .../npm-registry-fetch/lib/index.js | 1 + .../npm-registry-fetch/package.json | 16 +- deps/npm/node_modules/pacote/package.json | 16 +- .../parse-conflict-json/package.json | 10 +- deps/npm/node_modules/proc-log/package.json | 8 +- .../node_modules/read-cmd-shim/package.json | 8 +- deps/npm/node_modules/ssri/lib/index.js | 2 +- deps/npm/node_modules/ssri/package.json | 8 +- .../path-scurry => tar}/LICENSE.md | 0 .../node_modules/tar/dist/commonjs/header.js | 33 +- .../node_modules/tar/dist/commonjs/list.js | 6 +- .../node_modules/tar/dist/commonjs/pack.js | 5 +- .../node_modules/tar/dist/commonjs/parse.js | 6 +- deps/npm/node_modules/tar/dist/esm/header.js | 33 +- deps/npm/node_modules/tar/dist/esm/list.js | 6 +- deps/npm/node_modules/tar/dist/esm/pack.js | 5 +- deps/npm/node_modules/tar/dist/esm/parse.js | 6 +- deps/npm/node_modules/tar/package.json | 4 +- .../validate-npm-package-name/package.json | 8 +- deps/npm/node_modules/which/package.json | 8 +- .../write-file-atomic/package.json | 8 +- deps/npm/package.json | 76 +- .../test/lib/commands/config.js.test.cjs | 21 + .../test/lib/commands/ls.js.test.cjs | 6 +- .../tap-snapshots/test/lib/docs.js.test.cjs | 180 +- .../test/lib/utils/error-message.js.test.cjs | 4 +- deps/npm/test/lib/commands/token.js | 231 +- deps/npm/test/lib/utils/tar.js | 6 +- .../arborist/node_modules/nopt}/LICENSE | 0 .../arborist/node_modules/nopt/README.md | 214 ++ .../arborist/node_modules/nopt/bin/nopt.js | 29 + .../arborist/node_modules/nopt/lib/debug.js | 5 + .../node_modules/nopt/lib/nopt-lib.js | 514 +++++ .../arborist/node_modules/nopt/lib/nopt.js | 34 + .../node_modules/nopt/lib/type-defs.js | 91 + .../nopt/node_modules/abbrev/LICENSE | 46 + .../nopt/node_modules/abbrev/README.md | 23 + .../nopt/node_modules/abbrev/lib/index.js | 53 + .../nopt/node_modules/abbrev/package.json | 45 + .../arborist/node_modules/nopt/package.json | 52 + .../config/node_modules/nopt}/LICENSE | 2 +- .../config/node_modules/nopt/README.md | 214 ++ .../config/node_modules/nopt/bin/nopt.js | 29 + .../config/node_modules/nopt/lib/debug.js | 5 + .../config/node_modules/nopt/lib/nopt-lib.js | 514 +++++ .../config/node_modules/nopt/lib/nopt.js | 34 + .../config/node_modules/nopt/lib/type-defs.js | 91 + .../nopt/node_modules/abbrev/LICENSE | 46 + .../nopt/node_modules/abbrev/README.md | 23 + .../nopt/node_modules/abbrev/lib/index.js | 53 + .../nopt/node_modules/abbrev/package.json | 45 + .../config/node_modules/nopt/package.json | 52 + .../installed-package-contents}/LICENSE | 2 +- .../installed-package-contents/README.md | 109 + .../installed-package-contents/bin/index.js | 44 + .../installed-package-contents/lib/index.js | 181 ++ .../installed-package-contents}/package.json | 52 +- .../node_modules/npm-bundled}/LICENSE | 2 +- .../node_modules/npm-bundled/README.md | 48 + .../node_modules/npm-bundled/lib/index.js | 254 +++ .../node_modules/npm-bundled/package.json | 49 + .../npm-normalize-package-bin/LICENSE | 15 + .../npm-normalize-package-bin/README.md | 14 + .../npm-normalize-package-bin/lib/index.js | 64 + .../npm-normalize-package-bin/package.json | 45 + 527 files changed, 9440 insertions(+), 29229 deletions(-) delete mode 100644 deps/npm/node_modules/@pkgjs/parseargs/LICENSE delete mode 100644 deps/npm/node_modules/@pkgjs/parseargs/examples/is-default-value.js delete mode 100644 deps/npm/node_modules/@pkgjs/parseargs/examples/limit-long-syntax.js delete mode 100644 deps/npm/node_modules/@pkgjs/parseargs/examples/negate.js delete mode 100644 deps/npm/node_modules/@pkgjs/parseargs/examples/no-repeated-options.js delete mode 100644 deps/npm/node_modules/@pkgjs/parseargs/examples/ordered-options.mjs delete mode 100644 deps/npm/node_modules/@pkgjs/parseargs/examples/simple-hard-coded.js delete mode 100644 deps/npm/node_modules/@pkgjs/parseargs/index.js delete mode 100644 deps/npm/node_modules/@pkgjs/parseargs/internal/errors.js delete mode 100644 deps/npm/node_modules/@pkgjs/parseargs/internal/primordials.js delete mode 100644 deps/npm/node_modules/@pkgjs/parseargs/internal/util.js delete mode 100644 deps/npm/node_modules/@pkgjs/parseargs/internal/validators.js delete mode 100644 deps/npm/node_modules/@pkgjs/parseargs/package.json delete mode 100644 deps/npm/node_modules/@pkgjs/parseargs/utils.js rename deps/npm/node_modules/{minimatch => @sigstore/sign/node_modules/proc-log}/LICENSE (92%) create mode 100644 deps/npm/node_modules/@sigstore/sign/node_modules/proc-log/lib/index.js create mode 100644 deps/npm/node_modules/@sigstore/sign/node_modules/proc-log/package.json rename deps/npm/node_modules/{node-gyp/node_modules/jackspeak => minimatch}/LICENSE.md (100%) delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/agents.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/dns.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/errors.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/options.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/proxy.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/LICENSE.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/path.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/read.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/rm.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/write.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/lib/entry-index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/lib/get.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/lib/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/lib/memoization.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/lib/put.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/lib/rm.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/lib/util/glob.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/lib/util/hash-to-segments.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/lib/util/tmp.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/lib/verify.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/cacache/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/README.md delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.d.ts delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.d.ts.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.js.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.d.ts delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.d.ts.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.js.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.d.ts delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.d.ts.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.js.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.d.ts delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.d.ts.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.js.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.d.ts delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.d.ts.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.js.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.d.ts delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.d.ts.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.js.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.d.ts delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.d.ts.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.js.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.d.mts delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.d.mts.map delete mode 100755 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.mjs delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.mjs.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.d.ts delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.d.ts.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.js.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.d.ts delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.d.ts.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.js.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.d.ts delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.d.ts.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.js.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.d.ts delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.d.ts.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.js.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.d.ts delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.d.ts.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.js.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.d.ts delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.d.ts.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.js.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.d.ts delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.d.ts.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.js.map delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/glob/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/commonjs/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/commonjs/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/commonjs/parse-args.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/esm/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/esm/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/esm/parse-args.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/jackspeak/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/commonjs/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/commonjs/index.min.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/commonjs/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/esm/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/esm/index.min.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/esm/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/lru-cache/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/LICENSE delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/entry.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/errors.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/key.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/policy.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/fetch.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/options.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/pipeline.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/remote.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/ast.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/brace-expressions.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/escape.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/unescape.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/assert-valid-pattern.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/ast.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/brace-expressions.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/escape.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/unescape.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/minimatch/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/commonjs/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/commonjs/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/esm/index.js delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/esm/package.json delete mode 100644 deps/npm/node_modules/node-gyp/node_modules/path-scurry/package.json rename deps/npm/node_modules/{node-gyp/node_modules/path-scurry => tar}/LICENSE.md (100%) rename deps/npm/{node_modules/tar => workspaces/arborist/node_modules/nopt}/LICENSE (100%) create mode 100644 deps/npm/workspaces/arborist/node_modules/nopt/README.md create mode 100755 deps/npm/workspaces/arborist/node_modules/nopt/bin/nopt.js create mode 100644 deps/npm/workspaces/arborist/node_modules/nopt/lib/debug.js create mode 100644 deps/npm/workspaces/arborist/node_modules/nopt/lib/nopt-lib.js create mode 100644 deps/npm/workspaces/arborist/node_modules/nopt/lib/nopt.js create mode 100644 deps/npm/workspaces/arborist/node_modules/nopt/lib/type-defs.js create mode 100644 deps/npm/workspaces/arborist/node_modules/nopt/node_modules/abbrev/LICENSE create mode 100644 deps/npm/workspaces/arborist/node_modules/nopt/node_modules/abbrev/README.md create mode 100644 deps/npm/workspaces/arborist/node_modules/nopt/node_modules/abbrev/lib/index.js create mode 100644 deps/npm/workspaces/arborist/node_modules/nopt/node_modules/abbrev/package.json create mode 100644 deps/npm/workspaces/arborist/node_modules/nopt/package.json rename deps/npm/{node_modules/node-gyp/node_modules/glob => workspaces/config/node_modules/nopt}/LICENSE (92%) create mode 100644 deps/npm/workspaces/config/node_modules/nopt/README.md create mode 100755 deps/npm/workspaces/config/node_modules/nopt/bin/nopt.js create mode 100644 deps/npm/workspaces/config/node_modules/nopt/lib/debug.js create mode 100644 deps/npm/workspaces/config/node_modules/nopt/lib/nopt-lib.js create mode 100644 deps/npm/workspaces/config/node_modules/nopt/lib/nopt.js create mode 100644 deps/npm/workspaces/config/node_modules/nopt/lib/type-defs.js create mode 100644 deps/npm/workspaces/config/node_modules/nopt/node_modules/abbrev/LICENSE create mode 100644 deps/npm/workspaces/config/node_modules/nopt/node_modules/abbrev/README.md create mode 100644 deps/npm/workspaces/config/node_modules/nopt/node_modules/abbrev/lib/index.js create mode 100644 deps/npm/workspaces/config/node_modules/nopt/node_modules/abbrev/package.json create mode 100644 deps/npm/workspaces/config/node_modules/nopt/package.json rename deps/npm/{node_modules/node-gyp/node_modules/lru-cache => workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents}/LICENSE (92%) create mode 100644 deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/README.md create mode 100755 deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/bin/index.js create mode 100644 deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/lib/index.js rename deps/npm/{node_modules/node-gyp/node_modules/@npmcli/agent => workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents}/package.json (58%) rename deps/npm/{node_modules/node-gyp/node_modules/minimatch => workspaces/libnpmdiff/node_modules/npm-bundled}/LICENSE (92%) create mode 100644 deps/npm/workspaces/libnpmdiff/node_modules/npm-bundled/README.md create mode 100644 deps/npm/workspaces/libnpmdiff/node_modules/npm-bundled/lib/index.js create mode 100644 deps/npm/workspaces/libnpmdiff/node_modules/npm-bundled/package.json create mode 100644 deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/LICENSE create mode 100644 deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/README.md create mode 100644 deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/lib/index.js create mode 100644 deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/package.json diff --git a/deps/npm/docs/content/commands/npm-access.md b/deps/npm/docs/content/commands/npm-access.md index 1c6e168f230138..2752703b64cd0c 100644 --- a/deps/npm/docs/content/commands/npm-access.md +++ b/deps/npm/docs/content/commands/npm-access.md @@ -57,8 +57,8 @@ Management of teams and team memberships is done with the `npm team` command. 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`. +* 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. @@ -69,12 +69,11 @@ Not supported by all npm commands. * Default: null * Type: null or String -This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with `npm -access`. +This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with `npm access`. -If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one. +If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one. diff --git a/deps/npm/docs/content/commands/npm-adduser.md b/deps/npm/docs/content/commands/npm-adduser.md index 78edb5d5702d7b..be2685d7853c4d 100644 --- a/deps/npm/docs/content/commands/npm-adduser.md +++ b/deps/npm/docs/content/commands/npm-adduser.md @@ -71,8 +71,8 @@ npm init --scope=@foo --yes * Default: "web" * Type: "legacy" or "web" -What authentication strategy to use with `login`. Note that if an -`otp` config is given, this value will always be set to `legacy`. +What authentication strategy to use with `login`. Note that if an `otp` +config is given, this value will always be set to `legacy`. diff --git a/deps/npm/docs/content/commands/npm-audit.md b/deps/npm/docs/content/commands/npm-audit.md index f38f933bee7962..f7d4e06718c96f 100644 --- a/deps/npm/docs/content/commands/npm-audit.md +++ b/deps/npm/docs/content/commands/npm-audit.md @@ -206,8 +206,8 @@ $ npm audit --audit-level=moderate * Default: null * Type: null, "info", "low", "moderate", "high", "critical", or "none" -The minimum level of vulnerability for `npm audit` to exit with a -non-zero exit code. +The minimum level of vulnerability for `npm audit` to exit with a non-zero +exit code. @@ -216,14 +216,13 @@ non-zero exit code. * Default: false * Type: 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`. +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. +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. @@ -238,16 +237,14 @@ mistakes, unnecessary performance degradation, and malicious input. * Allow clobbering non-npm files in global installs. * Allow the `npm version` command to work on an unclean git repository. * Allow deleting the cache folder with `npm cache clean`. -* Allow installing packages that have an `engines` declaration - requiring a different version of npm. -* Allow installing packages that have an `engines` declaration - requiring a different version of `node`, even if `--engine-strict` is - enabled. -* Allow `npm audit fix` to install modules outside your stated - dependency range (including SemVer-major changes). +* Allow installing packages that have an `engines` declaration requiring a + different version of npm. +* Allow installing packages that have an `engines` declaration requiring a + different version of `node`, even if `--engine-strict` is enabled. +* Allow `npm audit fix` to install modules outside your stated dependency + range (including SemVer-major changes). * Allow unpublishing all versions of a published package. -* Allow conflicting peerDependencies to be installed in the root - project. +* Allow conflicting peerDependencies to be installed in the root project. * Implicitly set `--yes` during `npm init`. * Allow clobbering existing values in `npm pkg` * Allow unpublishing of entire packages (not just a single version). @@ -264,8 +261,8 @@ recommended that you do not use this option! 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`. +* 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. @@ -276,15 +273,14 @@ Not supported by all npm commands. * Default: false * Type: Boolean -If set to true, the current operation will only use the -`package-lock.json`, ignoring `node_modules`. +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`. +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`. @@ -293,9 +289,8 @@ by the `package-lock.json`, rather than the contents of * Default: true * Type: Boolean -If set to false, then ignore `package-lock.json` files when -installing. This will also prevent _writing_ `package-lock.json` if -`save` is true. +If set to false, then ignore `package-lock.json` files when installing. This +will also prevent _writing_ `package-lock.json` if `save` is true. @@ -311,45 +306,40 @@ 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 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. +If the resulting omit list includes `'dev'`, then the `NODE_ENV` environment +variable will be set to `'production'` for all lifecycle scripts. #### `include` * Default: -* Type: "prod", "dev", "optional", or "peer" (can be set multiple - times) +* Type: "prod", "dev", "optional", or "peer" (can be set multiple times) -Option that allows for defining which types of dependencies to -install. +Option that allows for defining which types of dependencies to install. This is the inverse of `--omit=`. -Dependency types specified in `--include` will not be omitted, -regardless of the order in which omit/include are specified on the -command-line. +Dependency types specified in `--include` will not be omitted, regardless of +the order in which omit/include are specified on the command-line. #### `foreground-scripts` -* Default: `false` unless when using `npm pack` or `npm publish` where - it defaults to `true` +* Default: `false` unless when using `npm pack` or `npm publish` where it + defaults to `true` * Type: Boolean -Run all build scripts (ie, `preinstall`, `install`, and -`postinstall`) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process. +Run all build scripts (ie, `preinstall`, `install`, and `postinstall`) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process. -Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging. +Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging. @@ -360,10 +350,10 @@ noisier, but can be useful for debugging. If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. @@ -372,9 +362,9 @@ but they will *not* run any pre- or post-scripts. * Default: * Type: String (can be set multiple times) -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. +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: @@ -383,9 +373,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -397,14 +387,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -415,10 +404,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -427,9 +415,9 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -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. +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. diff --git a/deps/npm/docs/content/commands/npm-bugs.md b/deps/npm/docs/content/commands/npm-bugs.md index 8789f21aa0143d..0531b49083ea38 100644 --- a/deps/npm/docs/content/commands/npm-bugs.md +++ b/deps/npm/docs/content/commands/npm-bugs.md @@ -47,9 +47,9 @@ The base URL of the npm registry. * Default: * Type: String (can be set multiple times) -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. +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: @@ -58,9 +58,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -72,14 +72,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -90,10 +89,9 @@ This value is not exported to the environment for child processes. 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. +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. diff --git a/deps/npm/docs/content/commands/npm-ci.md b/deps/npm/docs/content/commands/npm-ci.md index 115ea4a1b2a762..c76d7cf210d3ab 100644 --- a/deps/npm/docs/content/commands/npm-ci.md +++ b/deps/npm/docs/content/commands/npm-ci.md @@ -71,12 +71,11 @@ cache: * Type: "hoisted", "nested", "shallow", or "linked" Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted. +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted. @@ -87,10 +86,10 @@ unhoisted. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=nested` -Instead of hoisting package installs in `node_modules`, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets `--install-strategy=nested`. +Instead of hoisting package installs in `node_modules`, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets `--install-strategy=nested`. @@ -101,8 +100,8 @@ there is no de-duplicating. Sets `--install-strategy=nested`. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=shallow` -Only install direct dependencies in the top level `node_modules`, but -hoist on deeper dependencies. Sets `--install-strategy=shallow`. +Only install direct dependencies in the top level `node_modules`, but hoist +on deeper dependencies. Sets `--install-strategy=shallow`. @@ -118,29 +117,25 @@ 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 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. +If the resulting omit list includes `'dev'`, then the `NODE_ENV` environment +variable will be set to `'production'` for all lifecycle scripts. #### `include` * Default: -* Type: "prod", "dev", "optional", or "peer" (can be set multiple - times) +* Type: "prod", "dev", "optional", or "peer" (can be set multiple times) -Option that allows for defining which types of dependencies to -install. +Option that allows for defining which types of dependencies to install. This is the inverse of `--omit=`. -Dependency types specified in `--include` will not be omitted, -regardless of the order in which omit/include are specified on the -command-line. +Dependency types specified in `--include` will not be omitted, regardless of +the order in which omit/include are specified on the command-line. @@ -150,35 +145,33 @@ command-line. * Type: Boolean If set to `true`, and `--legacy-peer-deps` is not set, then _any_ -conflicting `peerDependencies` will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships. +conflicting `peerDependencies` will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships. -By default, conflicting `peerDependencies` deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -`peerDependencies` object. +By default, conflicting `peerDependencies` deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's `peerDependencies` object. -When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If `--strict-peer-deps` is -set, then this warning is treated as a failure. +When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If `--strict-peer-deps` is set, then +this warning is treated as a failure. #### `foreground-scripts` -* Default: `false` unless when using `npm pack` or `npm publish` where - it defaults to `true` +* Default: `false` unless when using `npm pack` or `npm publish` where it + defaults to `true` * Type: Boolean -Run all build scripts (ie, `preinstall`, `install`, and -`postinstall`) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process. +Run all build scripts (ie, `preinstall`, `install`, and `postinstall`) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process. -Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging. +Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging. @@ -189,10 +182,10 @@ noisier, but can be useful for debugging. If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. @@ -201,10 +194,10 @@ but they will *not* run any pre- or post-scripts. * Default: true * Type: Boolean -When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for [`npm audit`](/commands/npm-audit) for details -on what is submitted. +When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for [`npm audit`](/commands/npm-audit) for details on what is +submitted. @@ -216,9 +209,9 @@ on what is submitted. Tells npm to create symlinks (or `.cmd` shims on Windows) for package executables. -Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems. +Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems. @@ -228,8 +221,8 @@ ostensibly Unix systems. * Type: Boolean When "true" displays the message at the end of each `npm install` -acknowledging the number of dependencies looking for funding. See -[`npm fund`](/commands/npm-fund) for details. +acknowledging the number of dependencies looking for funding. See [`npm +fund`](/commands/npm-fund) for details. @@ -238,14 +231,13 @@ acknowledging the number of dependencies looking for funding. See * Default: false * Type: 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`. +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. +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. @@ -254,9 +246,9 @@ Note: This is NOT honored by other network related commands, eg * Default: * Type: String (can be set multiple times) -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. +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: @@ -265,9 +257,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -279,14 +271,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -297,10 +288,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -309,9 +299,9 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -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. +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. diff --git a/deps/npm/docs/content/commands/npm-config.md b/deps/npm/docs/content/commands/npm-config.md index 78aa4c4d3fa3c1..2ca4a640031153 100644 --- a/deps/npm/docs/content/commands/npm-config.md +++ b/deps/npm/docs/content/commands/npm-config.md @@ -106,8 +106,8 @@ Usually this means attaching authentication config (i.e. 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`. +* 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. @@ -118,13 +118,12 @@ Not supported by all npm commands. * Default: false * Type: Boolean -Operates in "global" mode, so that packages are installed into the -`prefix` folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in -behavior. +Operates in "global" mode, so that packages are installed into the `prefix` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` @@ -142,19 +141,18 @@ The command to run for `npm edit` and `npm config edit`. #### `location` -* Default: "user" unless `--global` is passed, which will also set this - value to "global" +* Default: "user" unless `--global` is passed, which will also set this value + to "global" * Type: "global", "user", or "project" 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](/configuring-npm/folders) for more on the differences in -behavior. +When set to "global" mode, packages are installed into the `prefix` folder +instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` diff --git a/deps/npm/docs/content/commands/npm-dedupe.md b/deps/npm/docs/content/commands/npm-dedupe.md index beace9335f0629..b07d241f451f7c 100644 --- a/deps/npm/docs/content/commands/npm-dedupe.md +++ b/deps/npm/docs/content/commands/npm-dedupe.md @@ -71,12 +71,11 @@ Note: `npm dedupe` will never update the semver values of direct dependencies in * Type: "hoisted", "nested", "shallow", or "linked" Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted. +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted. @@ -87,10 +86,10 @@ unhoisted. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=nested` -Instead of hoisting package installs in `node_modules`, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets `--install-strategy=nested`. +Instead of hoisting package installs in `node_modules`, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets `--install-strategy=nested`. @@ -101,8 +100,8 @@ there is no de-duplicating. Sets `--install-strategy=nested`. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=shallow` -Only install direct dependencies in the top level `node_modules`, but -hoist on deeper dependencies. Sets `--install-strategy=shallow`. +Only install direct dependencies in the top level `node_modules`, but hoist +on deeper dependencies. Sets `--install-strategy=shallow`. @@ -112,19 +111,18 @@ hoist on deeper dependencies. Sets `--install-strategy=shallow`. * Type: Boolean If set to `true`, and `--legacy-peer-deps` is not set, then _any_ -conflicting `peerDependencies` will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships. +conflicting `peerDependencies` will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships. -By default, conflicting `peerDependencies` deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -`peerDependencies` object. +By default, conflicting `peerDependencies` deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's `peerDependencies` object. -When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If `--strict-peer-deps` is -set, then this warning is treated as a failure. +When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If `--strict-peer-deps` is set, then +this warning is treated as a failure. @@ -133,9 +131,8 @@ set, then this warning is treated as a failure. * Default: true * Type: Boolean -If set to false, then ignore `package-lock.json` files when -installing. This will also prevent _writing_ `package-lock.json` if -`save` is true. +If set to false, then ignore `package-lock.json` files when installing. This +will also prevent _writing_ `package-lock.json` if `save` is true. @@ -151,29 +148,25 @@ 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 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. +If the resulting omit list includes `'dev'`, then the `NODE_ENV` environment +variable will be set to `'production'` for all lifecycle scripts. #### `include` * Default: -* Type: "prod", "dev", "optional", or "peer" (can be set multiple - times) +* Type: "prod", "dev", "optional", or "peer" (can be set multiple times) -Option that allows for defining which types of dependencies to -install. +Option that allows for defining which types of dependencies to install. This is the inverse of `--omit=`. -Dependency types specified in `--include` will not be omitted, -regardless of the order in which omit/include are specified on the -command-line. +Dependency types specified in `--include` will not be omitted, regardless of +the order in which omit/include are specified on the command-line. @@ -184,10 +177,10 @@ command-line. If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. @@ -196,10 +189,10 @@ but they will *not* run any pre- or post-scripts. * Default: true * Type: Boolean -When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for [`npm audit`](/commands/npm-audit) for details -on what is submitted. +When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for [`npm audit`](/commands/npm-audit) for details on what is +submitted. @@ -211,9 +204,9 @@ on what is submitted. Tells npm to create symlinks (or `.cmd` shims on Windows) for package executables. -Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems. +Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems. @@ -223,8 +216,8 @@ ostensibly Unix systems. * Type: Boolean When "true" displays the message at the end of each `npm install` -acknowledging the number of dependencies looking for funding. See -[`npm fund`](/commands/npm-fund) for details. +acknowledging the number of dependencies looking for funding. See [`npm +fund`](/commands/npm-fund) for details. @@ -233,14 +226,13 @@ acknowledging the number of dependencies looking for funding. See * Default: false * Type: 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`. +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. +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. @@ -249,9 +241,9 @@ Note: This is NOT honored by other network related commands, eg * Default: * Type: String (can be set multiple times) -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. +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: @@ -260,9 +252,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -274,14 +266,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -292,10 +283,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -304,9 +294,9 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -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. +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. diff --git a/deps/npm/docs/content/commands/npm-deprecate.md b/deps/npm/docs/content/commands/npm-deprecate.md index 0724791ef484ab..fbb207da6bfa45 100644 --- a/deps/npm/docs/content/commands/npm-deprecate.md +++ b/deps/npm/docs/content/commands/npm-deprecate.md @@ -53,12 +53,11 @@ The base URL of the npm registry. * Default: null * Type: null or String -This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with `npm -access`. +This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with `npm access`. -If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one. +If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one. @@ -67,14 +66,13 @@ one-time password, npm will prompt on the command line for one. * Default: false * Type: 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`. +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. +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. diff --git a/deps/npm/docs/content/commands/npm-diff.md b/deps/npm/docs/content/commands/npm-diff.md index 6337c04ba03700..e29faff1caf9f1 100644 --- a/deps/npm/docs/content/commands/npm-diff.md +++ b/deps/npm/docs/content/commands/npm-diff.md @@ -192,13 +192,12 @@ Treat all files as text in `npm diff`. * Default: false * Type: Boolean -Operates in "global" mode, so that packages are installed into the -`prefix` folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in -behavior. +Operates in "global" mode, so that packages are installed into the `prefix` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` @@ -209,17 +208,17 @@ behavior. * Default: "latest" * Type: String -If you ask npm to install a package and don't tell it a specific -version, then it will install the specified tag. +If you ask npm to install a package and don't tell it a specific version, +then it will install the specified tag. -It is the tag added to the package@version specified in the `npm -dist-tag add` command, if no explicit tag is given. +It is the tag added to the package@version specified in the `npm dist-tag +add` command, if no explicit tag is given. -When used by the `npm diff` command, this is the tag used to fetch -the tarball that will be compared with the local files by default. +When used by the `npm diff` command, this is the tag used to fetch the +tarball that will be compared with the local files by default. -If used in the `npm publish` command, this is the tag that will be -added to the package submitted to the registry. +If used in the `npm publish` command, this is the tag that will be added to +the package submitted to the registry. @@ -228,9 +227,9 @@ added to the package submitted to the registry. * Default: * Type: String (can be set multiple times) -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. +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: @@ -239,9 +238,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -253,14 +252,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -271,10 +269,9 @@ This value is not exported to the environment for child processes. 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. +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. ## See Also diff --git a/deps/npm/docs/content/commands/npm-dist-tag.md b/deps/npm/docs/content/commands/npm-dist-tag.md index c39e54b6b28e32..1b775a9bf619f9 100644 --- a/deps/npm/docs/content/commands/npm-dist-tag.md +++ b/deps/npm/docs/content/commands/npm-dist-tag.md @@ -79,9 +79,9 @@ The simplest way to avoid semver problems with tags is to use tags that do not b * Default: * Type: String (can be set multiple times) -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. +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: @@ -90,9 +90,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -104,14 +104,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -122,10 +121,9 @@ This value is not exported to the environment for child processes. 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. +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. diff --git a/deps/npm/docs/content/commands/npm-docs.md b/deps/npm/docs/content/commands/npm-docs.md index 21bbcbd58c3d76..6841307db72efd 100644 --- a/deps/npm/docs/content/commands/npm-docs.md +++ b/deps/npm/docs/content/commands/npm-docs.md @@ -48,9 +48,9 @@ The base URL of the npm registry. * Default: * Type: String (can be set multiple times) -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. +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: @@ -59,9 +59,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -73,14 +73,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -91,10 +90,9 @@ This value is not exported to the environment for child processes. 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. +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. diff --git a/deps/npm/docs/content/commands/npm-exec.md b/deps/npm/docs/content/commands/npm-exec.md index ac5b2a471a74b8..72c63163be4d2f 100644 --- a/deps/npm/docs/content/commands/npm-exec.md +++ b/deps/npm/docs/content/commands/npm-exec.md @@ -87,8 +87,7 @@ $ npm exec -- foo@latest bar --package=@npmcli/foo * Default: * Type: String (can be set multiple times) -The package or packages to install for [`npm -exec`](/commands/npm-exec) +The package or packages to install for [`npm exec`](/commands/npm-exec) @@ -97,9 +96,8 @@ exec`](/commands/npm-exec) * Default: "" * Type: String -Optional companion option for `npm exec`, `npx` that allows for -specifying a custom command to be run along with the installed -packages. +Optional companion option for `npm exec`, `npx` that allows for specifying a +custom command to be run along with the installed packages. ```bash npm exec --package yo --package generator-node --call "yo node" @@ -112,9 +110,9 @@ npm exec --package yo --package generator-node --call "yo node" * Default: * Type: String (can be set multiple times) -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. +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: @@ -123,9 +121,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -137,14 +135,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -155,10 +152,9 @@ This value is not exported to the environment for child processes. 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. +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. diff --git a/deps/npm/docs/content/commands/npm-explain.md b/deps/npm/docs/content/commands/npm-explain.md index c5a89ca793906d..a5e85a3c04ea9b 100644 --- a/deps/npm/docs/content/commands/npm-explain.md +++ b/deps/npm/docs/content/commands/npm-explain.md @@ -58,8 +58,8 @@ node_modules/nyc/node_modules/find-up 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`. +* 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. @@ -70,9 +70,9 @@ Not supported by all npm commands. * Default: * Type: String (can be set multiple times) -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. +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: @@ -81,9 +81,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. diff --git a/deps/npm/docs/content/commands/npm-explore.md b/deps/npm/docs/content/commands/npm-explore.md index be37de759c83f2..5777aa89a4b923 100644 --- a/deps/npm/docs/content/commands/npm-explore.md +++ b/deps/npm/docs/content/commands/npm-explore.md @@ -30,8 +30,8 @@ Note that the package is *not* automatically rebuilt afterwards, so be sure to u #### `shell` -* Default: SHELL environment variable, or "bash" on Posix, or "cmd.exe" - on Windows +* Default: SHELL environment variable, or "bash" on Posix, or "cmd.exe" on + Windows * Type: String The shell to run for the `npm explore` command. diff --git a/deps/npm/docs/content/commands/npm-find-dupes.md b/deps/npm/docs/content/commands/npm-find-dupes.md index 25cf8a32b1b714..52bb59b9f81b57 100644 --- a/deps/npm/docs/content/commands/npm-find-dupes.md +++ b/deps/npm/docs/content/commands/npm-find-dupes.md @@ -22,12 +22,11 @@ Runs `npm dedupe` in `--dry-run` mode, making npm only output the duplications, * Type: "hoisted", "nested", "shallow", or "linked" Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted. +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted. @@ -38,10 +37,10 @@ unhoisted. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=nested` -Instead of hoisting package installs in `node_modules`, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets `--install-strategy=nested`. +Instead of hoisting package installs in `node_modules`, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets `--install-strategy=nested`. @@ -52,8 +51,8 @@ there is no de-duplicating. Sets `--install-strategy=nested`. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=shallow` -Only install direct dependencies in the top level `node_modules`, but -hoist on deeper dependencies. Sets `--install-strategy=shallow`. +Only install direct dependencies in the top level `node_modules`, but hoist +on deeper dependencies. Sets `--install-strategy=shallow`. @@ -63,19 +62,18 @@ hoist on deeper dependencies. Sets `--install-strategy=shallow`. * Type: Boolean If set to `true`, and `--legacy-peer-deps` is not set, then _any_ -conflicting `peerDependencies` will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships. +conflicting `peerDependencies` will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships. -By default, conflicting `peerDependencies` deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -`peerDependencies` object. +By default, conflicting `peerDependencies` deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's `peerDependencies` object. -When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If `--strict-peer-deps` is -set, then this warning is treated as a failure. +When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If `--strict-peer-deps` is set, then +this warning is treated as a failure. @@ -84,9 +82,8 @@ set, then this warning is treated as a failure. * Default: true * Type: Boolean -If set to false, then ignore `package-lock.json` files when -installing. This will also prevent _writing_ `package-lock.json` if -`save` is true. +If set to false, then ignore `package-lock.json` files when installing. This +will also prevent _writing_ `package-lock.json` if `save` is true. @@ -102,29 +99,25 @@ 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 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. +If the resulting omit list includes `'dev'`, then the `NODE_ENV` environment +variable will be set to `'production'` for all lifecycle scripts. #### `include` * Default: -* Type: "prod", "dev", "optional", or "peer" (can be set multiple - times) +* Type: "prod", "dev", "optional", or "peer" (can be set multiple times) -Option that allows for defining which types of dependencies to -install. +Option that allows for defining which types of dependencies to install. This is the inverse of `--omit=`. -Dependency types specified in `--include` will not be omitted, -regardless of the order in which omit/include are specified on the -command-line. +Dependency types specified in `--include` will not be omitted, regardless of +the order in which omit/include are specified on the command-line. @@ -135,10 +128,10 @@ command-line. If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. @@ -147,10 +140,10 @@ but they will *not* run any pre- or post-scripts. * Default: true * Type: Boolean -When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for [`npm audit`](/commands/npm-audit) for details -on what is submitted. +When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for [`npm audit`](/commands/npm-audit) for details on what is +submitted. @@ -162,9 +155,9 @@ on what is submitted. Tells npm to create symlinks (or `.cmd` shims on Windows) for package executables. -Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems. +Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems. @@ -174,8 +167,8 @@ ostensibly Unix systems. * Type: Boolean When "true" displays the message at the end of each `npm install` -acknowledging the number of dependencies looking for funding. See -[`npm fund`](/commands/npm-fund) for details. +acknowledging the number of dependencies looking for funding. See [`npm +fund`](/commands/npm-fund) for details. @@ -184,9 +177,9 @@ acknowledging the number of dependencies looking for funding. See * Default: * Type: String (can be set multiple times) -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. +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: @@ -195,9 +188,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -209,14 +202,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -227,10 +219,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -239,9 +230,9 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -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. +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. diff --git a/deps/npm/docs/content/commands/npm-fund.md b/deps/npm/docs/content/commands/npm-fund.md index 235d626c050231..b4d7e0b88897ed 100644 --- a/deps/npm/docs/content/commands/npm-fund.md +++ b/deps/npm/docs/content/commands/npm-fund.md @@ -63,8 +63,8 @@ test-workspaces-fund@1.0.0 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`. +* 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. @@ -86,13 +86,12 @@ Set to `true` to use default system URL opener. #### `unicode` -* Default: false on windows, true on mac/unix systems with a unicode - locale, as defined by the `LC_ALL`, `LC_CTYPE`, or `LANG` environment - variables. +* Default: false on windows, true on mac/unix systems with a unicode locale, + as defined by the `LC_ALL`, `LC_CTYPE`, or `LANG` environment variables. * Type: Boolean -When set to true, npm uses unicode characters in the tree output. -When false, it uses ascii characters instead of unicode glyphs. +When set to true, npm uses unicode characters in the tree output. When +false, it uses ascii characters instead of unicode glyphs. @@ -101,9 +100,9 @@ When false, it uses ascii characters instead of unicode glyphs. * Default: * Type: String (can be set multiple times) -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. +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: @@ -112,9 +111,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -123,8 +122,7 @@ This value is not exported to the environment for child processes. * Default: null * Type: null or Number -If there are multiple funding sources, which 1-indexed source URL to -open. +If there are multiple funding sources, which 1-indexed source URL to open. diff --git a/deps/npm/docs/content/commands/npm-help.md b/deps/npm/docs/content/commands/npm-help.md index 6e935670c6d666..79c4062c239cd8 100644 --- a/deps/npm/docs/content/commands/npm-help.md +++ b/deps/npm/docs/content/commands/npm-help.md @@ -30,8 +30,7 @@ Note that, if `help-search` finds a single subject, then it will run `help` on t The program to use to view help content. -Set to `"browser"` to view html help content in the default web -browser. +Set to `"browser"` to view html help content in the default web browser. diff --git a/deps/npm/docs/content/commands/npm-init.md b/deps/npm/docs/content/commands/npm-init.md index 3049eeead613d2..4b3b6342380d61 100644 --- a/deps/npm/docs/content/commands/npm-init.md +++ b/deps/npm/docs/content/commands/npm-init.md @@ -141,8 +141,7 @@ This will make sure to generate your react app as expected, one important consid * Default: "" * Type: String -The value `npm init` should use by default for the package author's -name. +The value `npm init` should use by default for the package author's name. @@ -172,8 +171,8 @@ The value `npm init` should use by default for the package license. A module that will be loaded by the `npm init` command. See the documentation for the -[init-package-json](https://github.com/npm/init-package-json) module -for more information, or [npm init](/commands/npm-init). +[init-package-json](https://github.com/npm/init-package-json) module for +more information, or [npm init](/commands/npm-init). @@ -182,8 +181,8 @@ for more information, or [npm init](/commands/npm-init). * Default: "commonjs" * Type: String -The value that `npm init` should use by default for the package.json -type field. +The value that `npm init` should use by default for the package.json type +field. @@ -192,8 +191,8 @@ type field. * Default: "1.0.0" * Type: SemVer string -The value that `npm init` should use by default for the package -version number, if not already set in package.json. +The value that `npm init` should use by default for the package version +number, if not already set in package.json. @@ -202,8 +201,7 @@ version number, if not already set in package.json. * Default: false * Type: Boolean -The value `npm init` should use by default for the package's private -flag. +The value `npm init` should use by default for the package's private flag. @@ -228,16 +226,14 @@ mistakes, unnecessary performance degradation, and malicious input. * Allow clobbering non-npm files in global installs. * Allow the `npm version` command to work on an unclean git repository. * Allow deleting the cache folder with `npm cache clean`. -* Allow installing packages that have an `engines` declaration - requiring a different version of npm. -* Allow installing packages that have an `engines` declaration - requiring a different version of `node`, even if `--engine-strict` is - enabled. -* Allow `npm audit fix` to install modules outside your stated - dependency range (including SemVer-major changes). +* Allow installing packages that have an `engines` declaration requiring a + different version of npm. +* Allow installing packages that have an `engines` declaration requiring a + different version of `node`, even if `--engine-strict` is enabled. +* Allow `npm audit fix` to install modules outside your stated dependency + range (including SemVer-major changes). * Allow unpublishing all versions of a published package. -* Allow conflicting peerDependencies to be installed in the root - project. +* Allow conflicting peerDependencies to be installed in the root project. * Implicitly set `--yes` during `npm init`. * Allow clobbering existing values in `npm pkg` * Allow unpublishing of entire packages (not just a single version). @@ -283,9 +279,9 @@ npm init --scope=@foo --yes * Default: * Type: String (can be set multiple times) -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. +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: @@ -294,9 +290,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -308,14 +304,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -324,9 +319,8 @@ This value is not exported to the environment for child processes. * Default: true * Type: Boolean -If set to true, the npm cli will run an update after operations that -may possibly change the workspaces installed to the `node_modules` -folder. +If set to true, the npm cli will run an update after operations that may +possibly change the workspaces installed to the `node_modules` folder. @@ -337,10 +331,9 @@ folder. 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. +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. diff --git a/deps/npm/docs/content/commands/npm-install-ci-test.md b/deps/npm/docs/content/commands/npm-install-ci-test.md index 0ec8030a3197c4..aaeb44ea6d709d 100644 --- a/deps/npm/docs/content/commands/npm-install-ci-test.md +++ b/deps/npm/docs/content/commands/npm-install-ci-test.md @@ -24,12 +24,11 @@ This command runs `npm ci` followed immediately by `npm test`. * Type: "hoisted", "nested", "shallow", or "linked" Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted. +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted. @@ -40,10 +39,10 @@ unhoisted. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=nested` -Instead of hoisting package installs in `node_modules`, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets `--install-strategy=nested`. +Instead of hoisting package installs in `node_modules`, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets `--install-strategy=nested`. @@ -54,8 +53,8 @@ there is no de-duplicating. Sets `--install-strategy=nested`. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=shallow` -Only install direct dependencies in the top level `node_modules`, but -hoist on deeper dependencies. Sets `--install-strategy=shallow`. +Only install direct dependencies in the top level `node_modules`, but hoist +on deeper dependencies. Sets `--install-strategy=shallow`. @@ -71,29 +70,25 @@ 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 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. +If the resulting omit list includes `'dev'`, then the `NODE_ENV` environment +variable will be set to `'production'` for all lifecycle scripts. #### `include` * Default: -* Type: "prod", "dev", "optional", or "peer" (can be set multiple - times) +* Type: "prod", "dev", "optional", or "peer" (can be set multiple times) -Option that allows for defining which types of dependencies to -install. +Option that allows for defining which types of dependencies to install. This is the inverse of `--omit=`. -Dependency types specified in `--include` will not be omitted, -regardless of the order in which omit/include are specified on the -command-line. +Dependency types specified in `--include` will not be omitted, regardless of +the order in which omit/include are specified on the command-line. @@ -103,35 +98,33 @@ command-line. * Type: Boolean If set to `true`, and `--legacy-peer-deps` is not set, then _any_ -conflicting `peerDependencies` will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships. +conflicting `peerDependencies` will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships. -By default, conflicting `peerDependencies` deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -`peerDependencies` object. +By default, conflicting `peerDependencies` deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's `peerDependencies` object. -When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If `--strict-peer-deps` is -set, then this warning is treated as a failure. +When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If `--strict-peer-deps` is set, then +this warning is treated as a failure. #### `foreground-scripts` -* Default: `false` unless when using `npm pack` or `npm publish` where - it defaults to `true` +* Default: `false` unless when using `npm pack` or `npm publish` where it + defaults to `true` * Type: Boolean -Run all build scripts (ie, `preinstall`, `install`, and -`postinstall`) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process. +Run all build scripts (ie, `preinstall`, `install`, and `postinstall`) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process. -Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging. +Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging. @@ -142,10 +135,10 @@ noisier, but can be useful for debugging. If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. @@ -154,10 +147,10 @@ but they will *not* run any pre- or post-scripts. * Default: true * Type: Boolean -When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for [`npm audit`](/commands/npm-audit) for details -on what is submitted. +When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for [`npm audit`](/commands/npm-audit) for details on what is +submitted. @@ -169,9 +162,9 @@ on what is submitted. Tells npm to create symlinks (or `.cmd` shims on Windows) for package executables. -Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems. +Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems. @@ -181,8 +174,8 @@ ostensibly Unix systems. * Type: Boolean When "true" displays the message at the end of each `npm install` -acknowledging the number of dependencies looking for funding. See -[`npm fund`](/commands/npm-fund) for details. +acknowledging the number of dependencies looking for funding. See [`npm +fund`](/commands/npm-fund) for details. @@ -191,14 +184,13 @@ acknowledging the number of dependencies looking for funding. See * Default: false * Type: 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`. +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. +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. @@ -207,9 +199,9 @@ Note: This is NOT honored by other network related commands, eg * Default: * Type: String (can be set multiple times) -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. +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: @@ -218,9 +210,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -232,14 +224,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -250,10 +241,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -262,9 +252,9 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -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. +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. diff --git a/deps/npm/docs/content/commands/npm-install-test.md b/deps/npm/docs/content/commands/npm-install-test.md index 275405ff5c1ce8..8f958e2b954c21 100644 --- a/deps/npm/docs/content/commands/npm-install-test.md +++ b/deps/npm/docs/content/commands/npm-install-test.md @@ -21,8 +21,7 @@ It takes exactly the same arguments as `npm install`. #### `save` -* Default: `true` unless when using `npm update` where it defaults to - `false` +* Default: `true` unless when using `npm update` where it defaults to `false` * Type: Boolean Save installed packages to a `package.json` file as dependencies. @@ -39,8 +38,8 @@ Will also prevent writing to `package-lock.json` if set to `false`. * Default: false * Type: Boolean -Dependencies saved to package.json will be configured with an exact -version rather than using npm's default semver range operator. +Dependencies saved to package.json will be configured with an exact version +rather than using npm's default semver range operator. @@ -49,13 +48,12 @@ version rather than using npm's default semver range operator. * Default: false * Type: Boolean -Operates in "global" mode, so that packages are installed into the -`prefix` folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in -behavior. +Operates in "global" mode, so that packages are installed into the `prefix` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` @@ -67,12 +65,11 @@ behavior. * Type: "hoisted", "nested", "shallow", or "linked" Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted. +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted. @@ -83,10 +80,10 @@ unhoisted. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=nested` -Instead of hoisting package installs in `node_modules`, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets `--install-strategy=nested`. +Instead of hoisting package installs in `node_modules`, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets `--install-strategy=nested`. @@ -97,8 +94,8 @@ there is no de-duplicating. Sets `--install-strategy=nested`. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=shallow` -Only install direct dependencies in the top level `node_modules`, but -hoist on deeper dependencies. Sets `--install-strategy=shallow`. +Only install direct dependencies in the top level `node_modules`, but hoist +on deeper dependencies. Sets `--install-strategy=shallow`. @@ -114,29 +111,25 @@ 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 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. +If the resulting omit list includes `'dev'`, then the `NODE_ENV` environment +variable will be set to `'production'` for all lifecycle scripts. #### `include` * Default: -* Type: "prod", "dev", "optional", or "peer" (can be set multiple - times) +* Type: "prod", "dev", "optional", or "peer" (can be set multiple times) -Option that allows for defining which types of dependencies to -install. +Option that allows for defining which types of dependencies to install. This is the inverse of `--omit=`. -Dependency types specified in `--include` will not be omitted, -regardless of the order in which omit/include are specified on the -command-line. +Dependency types specified in `--include` will not be omitted, regardless of +the order in which omit/include are specified on the command-line. @@ -146,19 +139,18 @@ command-line. * Type: Boolean If set to `true`, and `--legacy-peer-deps` is not set, then _any_ -conflicting `peerDependencies` will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships. +conflicting `peerDependencies` will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships. -By default, conflicting `peerDependencies` deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -`peerDependencies` object. +By default, conflicting `peerDependencies` deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's `peerDependencies` object. -When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If `--strict-peer-deps` is -set, then this warning is treated as a failure. +When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If `--strict-peer-deps` is set, then +this warning is treated as a failure. @@ -167,8 +159,8 @@ set, then this warning is treated as a failure. * Default: false * Type: Boolean -Prefer to deduplicate packages if possible, rather than choosing a -newer version of a dependency. +Prefer to deduplicate packages if possible, rather than choosing a newer +version of a dependency. @@ -177,9 +169,8 @@ newer version of a dependency. * Default: true * Type: Boolean -If set to false, then ignore `package-lock.json` files when -installing. This will also prevent _writing_ `package-lock.json` if -`save` is true. +If set to false, then ignore `package-lock.json` files when installing. This +will also prevent _writing_ `package-lock.json` if `save` is true. @@ -188,31 +179,29 @@ installing. This will also prevent _writing_ `package-lock.json` if * Default: false * Type: Boolean -If set to true, the current operation will only use the -`package-lock.json`, ignoring `node_modules`. +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`. +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`. #### `foreground-scripts` -* Default: `false` unless when using `npm pack` or `npm publish` where - it defaults to `true` +* Default: `false` unless when using `npm pack` or `npm publish` where it + defaults to `true` * Type: Boolean -Run all build scripts (ie, `preinstall`, `install`, and -`postinstall`) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process. +Run all build scripts (ie, `preinstall`, `install`, and `postinstall`) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process. -Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging. +Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging. @@ -223,10 +212,10 @@ noisier, but can be useful for debugging. If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. @@ -235,10 +224,10 @@ but they will *not* run any pre- or post-scripts. * Default: true * Type: Boolean -When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for [`npm audit`](/commands/npm-audit) for details -on what is submitted. +When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for [`npm audit`](/commands/npm-audit) for details on what is +submitted. @@ -248,14 +237,14 @@ on what is submitted. * Type: null or Date If passed to `npm install`, will rebuild the npm tree such that only -versions that were available **on or before** the given date are -installed. If there are no versions available for the current set of -dependencies, the command will error. +versions that were available **on or before** the given date are installed. +If there are no versions available for the current set of dependencies, the +command will error. -If the requested version is a `dist-tag` and the given tag does not -pass the `--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`. +If the requested version is a `dist-tag` and the given tag does not pass the +`--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`. @@ -267,9 +256,9 @@ install `foo@1.2` even though `latest` is `2.0`. Tells npm to create symlinks (or `.cmd` shims on Windows) for package executables. -Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems. +Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems. @@ -279,8 +268,8 @@ ostensibly Unix systems. * Type: Boolean When "true" displays the message at the end of each `npm install` -acknowledging the number of dependencies looking for funding. See -[`npm fund`](/commands/npm-fund) for details. +acknowledging the number of dependencies looking for funding. See [`npm +fund`](/commands/npm-fund) for details. @@ -289,14 +278,13 @@ acknowledging the number of dependencies looking for funding. See * Default: false * Type: 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`. +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. +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. @@ -305,9 +293,8 @@ Note: This is NOT honored by other network related commands, eg * Default: null * Type: null or String -Override CPU architecture of native modules to install. Acceptable -values are same as `cpu` field of package.json, which comes from -`process.arch`. +Override CPU architecture of native modules to install. Acceptable values +are same as `cpu` field of package.json, which comes from `process.arch`. @@ -316,8 +303,8 @@ values are same as `cpu` field of package.json, which comes from * Default: null * Type: null or String -Override OS of native modules to install. Acceptable values are same -as `os` field of package.json, which comes from `process.platform`. +Override OS of native modules to install. Acceptable values are same as `os` +field of package.json, which comes from `process.platform`. @@ -326,8 +313,8 @@ as `os` field of package.json, which comes from `process.platform`. * Default: null * Type: null or String -Override libc of native modules to install. Acceptable values are -same as `libc` field of package.json +Override libc of native modules to install. Acceptable values are same as +`libc` field of package.json @@ -336,9 +323,9 @@ same as `libc` field of package.json * Default: * Type: String (can be set multiple times) -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. +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: @@ -347,9 +334,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -361,14 +348,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -379,10 +365,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -391,9 +376,9 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -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. +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. diff --git a/deps/npm/docs/content/commands/npm-install.md b/deps/npm/docs/content/commands/npm-install.md index edb71938893eda..cb7f45102577ab 100644 --- a/deps/npm/docs/content/commands/npm-install.md +++ b/deps/npm/docs/content/commands/npm-install.md @@ -338,8 +338,7 @@ These are some of the most common options related to installation. #### `save` -* Default: `true` unless when using `npm update` where it defaults to - `false` +* Default: `true` unless when using `npm update` where it defaults to `false` * Type: Boolean Save installed packages to a `package.json` file as dependencies. @@ -356,8 +355,8 @@ Will also prevent writing to `package-lock.json` if set to `false`. * Default: false * Type: Boolean -Dependencies saved to package.json will be configured with an exact -version rather than using npm's default semver range operator. +Dependencies saved to package.json will be configured with an exact version +rather than using npm's default semver range operator. @@ -366,13 +365,12 @@ version rather than using npm's default semver range operator. * Default: false * Type: Boolean -Operates in "global" mode, so that packages are installed into the -`prefix` folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in -behavior. +Operates in "global" mode, so that packages are installed into the `prefix` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` @@ -384,12 +382,11 @@ behavior. * Type: "hoisted", "nested", "shallow", or "linked" Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted. +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted. @@ -400,10 +397,10 @@ unhoisted. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=nested` -Instead of hoisting package installs in `node_modules`, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets `--install-strategy=nested`. +Instead of hoisting package installs in `node_modules`, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets `--install-strategy=nested`. @@ -414,8 +411,8 @@ there is no de-duplicating. Sets `--install-strategy=nested`. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=shallow` -Only install direct dependencies in the top level `node_modules`, but -hoist on deeper dependencies. Sets `--install-strategy=shallow`. +Only install direct dependencies in the top level `node_modules`, but hoist +on deeper dependencies. Sets `--install-strategy=shallow`. @@ -431,29 +428,25 @@ 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 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. +If the resulting omit list includes `'dev'`, then the `NODE_ENV` environment +variable will be set to `'production'` for all lifecycle scripts. #### `include` * Default: -* Type: "prod", "dev", "optional", or "peer" (can be set multiple - times) +* Type: "prod", "dev", "optional", or "peer" (can be set multiple times) -Option that allows for defining which types of dependencies to -install. +Option that allows for defining which types of dependencies to install. This is the inverse of `--omit=`. -Dependency types specified in `--include` will not be omitted, -regardless of the order in which omit/include are specified on the -command-line. +Dependency types specified in `--include` will not be omitted, regardless of +the order in which omit/include are specified on the command-line. @@ -463,19 +456,18 @@ command-line. * Type: Boolean If set to `true`, and `--legacy-peer-deps` is not set, then _any_ -conflicting `peerDependencies` will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships. +conflicting `peerDependencies` will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships. -By default, conflicting `peerDependencies` deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -`peerDependencies` object. +By default, conflicting `peerDependencies` deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's `peerDependencies` object. -When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If `--strict-peer-deps` is -set, then this warning is treated as a failure. +When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If `--strict-peer-deps` is set, then +this warning is treated as a failure. @@ -484,8 +476,8 @@ set, then this warning is treated as a failure. * Default: false * Type: Boolean -Prefer to deduplicate packages if possible, rather than choosing a -newer version of a dependency. +Prefer to deduplicate packages if possible, rather than choosing a newer +version of a dependency. @@ -494,9 +486,8 @@ newer version of a dependency. * Default: true * Type: Boolean -If set to false, then ignore `package-lock.json` files when -installing. This will also prevent _writing_ `package-lock.json` if -`save` is true. +If set to false, then ignore `package-lock.json` files when installing. This +will also prevent _writing_ `package-lock.json` if `save` is true. @@ -505,31 +496,29 @@ installing. This will also prevent _writing_ `package-lock.json` if * Default: false * Type: Boolean -If set to true, the current operation will only use the -`package-lock.json`, ignoring `node_modules`. +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`. +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`. #### `foreground-scripts` -* Default: `false` unless when using `npm pack` or `npm publish` where - it defaults to `true` +* Default: `false` unless when using `npm pack` or `npm publish` where it + defaults to `true` * Type: Boolean -Run all build scripts (ie, `preinstall`, `install`, and -`postinstall`) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process. +Run all build scripts (ie, `preinstall`, `install`, and `postinstall`) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process. -Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging. +Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging. @@ -540,10 +529,10 @@ noisier, but can be useful for debugging. If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. @@ -552,10 +541,10 @@ but they will *not* run any pre- or post-scripts. * Default: true * Type: Boolean -When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for [`npm audit`](/commands/npm-audit) for details -on what is submitted. +When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for [`npm audit`](/commands/npm-audit) for details on what is +submitted. @@ -565,14 +554,14 @@ on what is submitted. * Type: null or Date If passed to `npm install`, will rebuild the npm tree such that only -versions that were available **on or before** the given date are -installed. If there are no versions available for the current set of -dependencies, the command will error. +versions that were available **on or before** the given date are installed. +If there are no versions available for the current set of dependencies, the +command will error. -If the requested version is a `dist-tag` and the given tag does not -pass the `--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`. +If the requested version is a `dist-tag` and the given tag does not pass the +`--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`. @@ -584,9 +573,9 @@ install `foo@1.2` even though `latest` is `2.0`. Tells npm to create symlinks (or `.cmd` shims on Windows) for package executables. -Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems. +Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems. @@ -596,8 +585,8 @@ ostensibly Unix systems. * Type: Boolean When "true" displays the message at the end of each `npm install` -acknowledging the number of dependencies looking for funding. See -[`npm fund`](/commands/npm-fund) for details. +acknowledging the number of dependencies looking for funding. See [`npm +fund`](/commands/npm-fund) for details. @@ -606,14 +595,13 @@ acknowledging the number of dependencies looking for funding. See * Default: false * Type: 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`. +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. +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. @@ -622,9 +610,8 @@ Note: This is NOT honored by other network related commands, eg * Default: null * Type: null or String -Override CPU architecture of native modules to install. Acceptable -values are same as `cpu` field of package.json, which comes from -`process.arch`. +Override CPU architecture of native modules to install. Acceptable values +are same as `cpu` field of package.json, which comes from `process.arch`. @@ -633,8 +620,8 @@ values are same as `cpu` field of package.json, which comes from * Default: null * Type: null or String -Override OS of native modules to install. Acceptable values are same -as `os` field of package.json, which comes from `process.platform`. +Override OS of native modules to install. Acceptable values are same as `os` +field of package.json, which comes from `process.platform`. @@ -643,8 +630,8 @@ as `os` field of package.json, which comes from `process.platform`. * Default: null * Type: null or String -Override libc of native modules to install. Acceptable values are -same as `libc` field of package.json +Override libc of native modules to install. Acceptable values are same as +`libc` field of package.json @@ -653,9 +640,9 @@ same as `libc` field of package.json * Default: * Type: String (can be set multiple times) -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. +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: @@ -664,9 +651,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -678,14 +665,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -696,10 +682,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -708,9 +693,9 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -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. +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. diff --git a/deps/npm/docs/content/commands/npm-link.md b/deps/npm/docs/content/commands/npm-link.md index 527c646c09adac..3e978bf128e0b9 100644 --- a/deps/npm/docs/content/commands/npm-link.md +++ b/deps/npm/docs/content/commands/npm-link.md @@ -91,8 +91,7 @@ Note that It may actually be linked into the parent project's `node_modules` fol #### `save` -* Default: `true` unless when using `npm update` where it defaults to - `false` +* Default: `true` unless when using `npm update` where it defaults to `false` * Type: Boolean Save installed packages to a `package.json` file as dependencies. @@ -109,8 +108,8 @@ Will also prevent writing to `package-lock.json` if set to `false`. * Default: false * Type: Boolean -Dependencies saved to package.json will be configured with an exact -version rather than using npm's default semver range operator. +Dependencies saved to package.json will be configured with an exact version +rather than using npm's default semver range operator. @@ -119,13 +118,12 @@ version rather than using npm's default semver range operator. * Default: false * Type: Boolean -Operates in "global" mode, so that packages are installed into the -`prefix` folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in -behavior. +Operates in "global" mode, so that packages are installed into the `prefix` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` @@ -137,12 +135,11 @@ behavior. * Type: "hoisted", "nested", "shallow", or "linked" Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted. +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted. @@ -153,10 +150,10 @@ unhoisted. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=nested` -Instead of hoisting package installs in `node_modules`, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets `--install-strategy=nested`. +Instead of hoisting package installs in `node_modules`, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets `--install-strategy=nested`. @@ -167,8 +164,8 @@ there is no de-duplicating. Sets `--install-strategy=nested`. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=shallow` -Only install direct dependencies in the top level `node_modules`, but -hoist on deeper dependencies. Sets `--install-strategy=shallow`. +Only install direct dependencies in the top level `node_modules`, but hoist +on deeper dependencies. Sets `--install-strategy=shallow`. @@ -178,19 +175,18 @@ hoist on deeper dependencies. Sets `--install-strategy=shallow`. * Type: Boolean If set to `true`, and `--legacy-peer-deps` is not set, then _any_ -conflicting `peerDependencies` will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships. +conflicting `peerDependencies` will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships. -By default, conflicting `peerDependencies` deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -`peerDependencies` object. +By default, conflicting `peerDependencies` deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's `peerDependencies` object. -When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If `--strict-peer-deps` is -set, then this warning is treated as a failure. +When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If `--strict-peer-deps` is set, then +this warning is treated as a failure. @@ -199,9 +195,8 @@ set, then this warning is treated as a failure. * Default: true * Type: Boolean -If set to false, then ignore `package-lock.json` files when -installing. This will also prevent _writing_ `package-lock.json` if -`save` is true. +If set to false, then ignore `package-lock.json` files when installing. This +will also prevent _writing_ `package-lock.json` if `save` is true. @@ -217,29 +212,25 @@ 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 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. +If the resulting omit list includes `'dev'`, then the `NODE_ENV` environment +variable will be set to `'production'` for all lifecycle scripts. #### `include` * Default: -* Type: "prod", "dev", "optional", or "peer" (can be set multiple - times) +* Type: "prod", "dev", "optional", or "peer" (can be set multiple times) -Option that allows for defining which types of dependencies to -install. +Option that allows for defining which types of dependencies to install. This is the inverse of `--omit=`. -Dependency types specified in `--include` will not be omitted, -regardless of the order in which omit/include are specified on the -command-line. +Dependency types specified in `--include` will not be omitted, regardless of +the order in which omit/include are specified on the command-line. @@ -250,10 +241,10 @@ command-line. If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. @@ -262,10 +253,10 @@ but they will *not* run any pre- or post-scripts. * Default: true * Type: Boolean -When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for [`npm audit`](/commands/npm-audit) for details -on what is submitted. +When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for [`npm audit`](/commands/npm-audit) for details on what is +submitted. @@ -277,9 +268,9 @@ on what is submitted. Tells npm to create symlinks (or `.cmd` shims on Windows) for package executables. -Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems. +Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems. @@ -289,8 +280,8 @@ ostensibly Unix systems. * Type: Boolean When "true" displays the message at the end of each `npm install` -acknowledging the number of dependencies looking for funding. See -[`npm fund`](/commands/npm-fund) for details. +acknowledging the number of dependencies looking for funding. See [`npm +fund`](/commands/npm-fund) for details. @@ -299,14 +290,13 @@ acknowledging the number of dependencies looking for funding. See * Default: false * Type: 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`. +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. +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. @@ -315,9 +305,9 @@ Note: This is NOT honored by other network related commands, eg * Default: * Type: String (can be set multiple times) -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. +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: @@ -326,9 +316,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -340,14 +330,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -358,10 +347,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -370,9 +358,9 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -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. +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. diff --git a/deps/npm/docs/content/commands/npm-login.md b/deps/npm/docs/content/commands/npm-login.md index 7738dc2c15c62d..59b24b6ad7ad86 100644 --- a/deps/npm/docs/content/commands/npm-login.md +++ b/deps/npm/docs/content/commands/npm-login.md @@ -77,8 +77,8 @@ npm init --scope=@foo --yes * Default: "web" * Type: "legacy" or "web" -What authentication strategy to use with `login`. Note that if an -`otp` config is given, this value will always be set to `legacy`. +What authentication strategy to use with `login`. Note that if an `otp` +config is given, this value will always be set to `legacy`. diff --git a/deps/npm/docs/content/commands/npm-ls.md b/deps/npm/docs/content/commands/npm-ls.md index 1d57122b828b41..dacee9be9200cb 100644 --- a/deps/npm/docs/content/commands/npm-ls.md +++ b/deps/npm/docs/content/commands/npm-ls.md @@ -23,7 +23,7 @@ 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: ```bash -npm@11.6.2 /path/to/npm +npm@11.6.3 /path/to/npm └─┬ init-package-json@0.0.4 └── promzard@0.1.5 ``` @@ -43,9 +43,9 @@ When run as `ll` or `la`, it shows extended information by default. * Default: false * Type: Boolean -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. +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. @@ -56,8 +56,8 @@ depended upon by the current project. 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`. +* 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. @@ -77,8 +77,8 @@ Show extended information in `ls`, `search`, and `help-search`. * Default: false * Type: Boolean -Output parseable results from commands that write to standard output. -For `npm search`, this will be tab-separated table format. +Output parseable results from commands that write to standard output. For +`npm search`, this will be tab-separated table format. @@ -87,13 +87,12 @@ For `npm search`, this will be tab-separated table format. * Default: false * Type: Boolean -Operates in "global" mode, so that packages are installed into the -`prefix` folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in -behavior. +Operates in "global" mode, so that packages are installed into the `prefix` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` @@ -106,9 +105,8 @@ behavior. 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. +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. @@ -124,29 +122,25 @@ 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 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. +If the resulting omit list includes `'dev'`, then the `NODE_ENV` environment +variable will be set to `'production'` for all lifecycle scripts. #### `include` * Default: -* Type: "prod", "dev", "optional", or "peer" (can be set multiple - times) +* Type: "prod", "dev", "optional", or "peer" (can be set multiple times) -Option that allows for defining which types of dependencies to -install. +Option that allows for defining which types of dependencies to install. This is the inverse of `--omit=`. -Dependency types specified in `--include` will not be omitted, -regardless of the order in which omit/include are specified on the -command-line. +Dependency types specified in `--include` will not be omitted, regardless of +the order in which omit/include are specified on the command-line. @@ -155,8 +149,7 @@ command-line. * Default: false * Type: Boolean -Used with `npm ls`, limiting output to only those packages that are -linked. +Used with `npm ls`, limiting output to only those packages that are linked. @@ -165,27 +158,25 @@ linked. * Default: false * Type: Boolean -If set to true, the current operation will only use the -`package-lock.json`, ignoring `node_modules`. +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`. +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` -* Default: false on windows, true on mac/unix systems with a unicode - locale, as defined by the `LC_ALL`, `LC_CTYPE`, or `LANG` environment - variables. +* Default: false on windows, true on mac/unix systems with a unicode locale, + as defined by the `LC_ALL`, `LC_CTYPE`, or `LANG` environment variables. * Type: Boolean -When set to true, npm uses unicode characters in the tree output. -When false, it uses ascii characters instead of unicode glyphs. +When set to true, npm uses unicode characters in the tree output. When +false, it uses ascii characters instead of unicode glyphs. @@ -194,9 +185,9 @@ When false, it uses ascii characters instead of unicode glyphs. * Default: * Type: String (can be set multiple times) -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. +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: @@ -205,9 +196,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -219,14 +210,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -237,10 +227,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -249,9 +238,9 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -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. +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. diff --git a/deps/npm/docs/content/commands/npm-org.md b/deps/npm/docs/content/commands/npm-org.md index 54ad8822660e3d..40cafafe6052af 100644 --- a/deps/npm/docs/content/commands/npm-org.md +++ b/deps/npm/docs/content/commands/npm-org.md @@ -75,12 +75,11 @@ The base URL of the npm registry. * Default: null * Type: null or String -This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with `npm -access`. +This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with `npm access`. -If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one. +If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one. @@ -91,8 +90,8 @@ one-time password, npm will prompt on the command line for one. 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`. +* 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. @@ -103,8 +102,8 @@ Not supported by all npm commands. * Default: false * Type: Boolean -Output parseable results from commands that write to standard output. -For `npm search`, this will be tab-separated table format. +Output parseable results from commands that write to standard output. For +`npm search`, this will be tab-separated table format. diff --git a/deps/npm/docs/content/commands/npm-outdated.md b/deps/npm/docs/content/commands/npm-outdated.md index 89e9a6ae849c28..d6aa3eb53a79a5 100644 --- a/deps/npm/docs/content/commands/npm-outdated.md +++ b/deps/npm/docs/content/commands/npm-outdated.md @@ -73,9 +73,9 @@ A few things to note: * Default: false * Type: Boolean -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. +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. @@ -86,8 +86,8 @@ depended upon by the current project. 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`. +* 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. @@ -107,8 +107,8 @@ Show extended information in `ls`, `search`, and `help-search`. * Default: false * Type: Boolean -Output parseable results from commands that write to standard output. -For `npm search`, this will be tab-separated table format. +Output parseable results from commands that write to standard output. For +`npm search`, this will be tab-separated table format. @@ -117,13 +117,12 @@ For `npm search`, this will be tab-separated table format. * Default: false * Type: Boolean -Operates in "global" mode, so that packages are installed into the -`prefix` folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in -behavior. +Operates in "global" mode, so that packages are installed into the `prefix` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` @@ -134,9 +133,9 @@ behavior. * Default: * Type: String (can be set multiple times) -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. +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: @@ -145,9 +144,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -157,14 +156,14 @@ This value is not exported to the environment for child processes. * Type: null or Date If passed to `npm install`, will rebuild the npm tree such that only -versions that were available **on or before** the given date are -installed. If there are no versions available for the current set of -dependencies, the command will error. - -If the requested version is a `dist-tag` and the given tag does not -pass the `--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`. +versions that were available **on or before** the given date are installed. +If there are no versions available for the current set of dependencies, the +command will error. + +If the requested version is a `dist-tag` and the given tag does not pass the +`--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`. diff --git a/deps/npm/docs/content/commands/npm-owner.md b/deps/npm/docs/content/commands/npm-owner.md index f3f8feb7c3d3f6..f20fa216860e40 100644 --- a/deps/npm/docs/content/commands/npm-owner.md +++ b/deps/npm/docs/content/commands/npm-owner.md @@ -47,12 +47,11 @@ The base URL of the npm registry. * Default: null * Type: null or String -This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with `npm -access`. +This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with `npm access`. -If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one. +If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one. @@ -61,9 +60,9 @@ one-time password, npm will prompt on the command line for one. * Default: * Type: String (can be set multiple times) -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. +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: @@ -72,9 +71,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -86,14 +85,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. diff --git a/deps/npm/docs/content/commands/npm-pack.md b/deps/npm/docs/content/commands/npm-pack.md index 97356cd340d766..7d9c8974d290b1 100644 --- a/deps/npm/docs/content/commands/npm-pack.md +++ b/deps/npm/docs/content/commands/npm-pack.md @@ -17,14 +17,13 @@ npm pack * Default: false * Type: 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`. +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. +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. @@ -35,8 +34,8 @@ Note: This is NOT honored by other network related commands, eg 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`. +* 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. @@ -56,9 +55,9 @@ Directory in which `npm pack` will save tarballs. * Default: * Type: String (can be set multiple times) -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. +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: @@ -67,9 +66,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -81,14 +80,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -99,10 +97,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -113,10 +110,10 @@ This value is not exported to the environment for child processes. If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. diff --git a/deps/npm/docs/content/commands/npm-pkg.md b/deps/npm/docs/content/commands/npm-pkg.md index 7615343cbf9606..72a5a90d98fe3f 100644 --- a/deps/npm/docs/content/commands/npm-pkg.md +++ b/deps/npm/docs/content/commands/npm-pkg.md @@ -166,16 +166,14 @@ mistakes, unnecessary performance degradation, and malicious input. * Allow clobbering non-npm files in global installs. * Allow the `npm version` command to work on an unclean git repository. * Allow deleting the cache folder with `npm cache clean`. -* Allow installing packages that have an `engines` declaration - requiring a different version of npm. -* Allow installing packages that have an `engines` declaration - requiring a different version of `node`, even if `--engine-strict` is - enabled. -* Allow `npm audit fix` to install modules outside your stated - dependency range (including SemVer-major changes). +* Allow installing packages that have an `engines` declaration requiring a + different version of npm. +* Allow installing packages that have an `engines` declaration requiring a + different version of `node`, even if `--engine-strict` is enabled. +* Allow `npm audit fix` to install modules outside your stated dependency + range (including SemVer-major changes). * Allow unpublishing all versions of a published package. -* Allow conflicting peerDependencies to be installed in the root - project. +* Allow conflicting peerDependencies to be installed in the root project. * Implicitly set `--yes` during `npm init`. * Allow clobbering existing values in `npm pkg` * Allow unpublishing of entire packages (not just a single version). @@ -192,8 +190,8 @@ recommended that you do not use this option! 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`. +* 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. @@ -204,9 +202,9 @@ Not supported by all npm commands. * Default: * Type: String (can be set multiple times) -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. +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: @@ -215,9 +213,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -229,14 +227,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. ## See Also diff --git a/deps/npm/docs/content/commands/npm-prefix.md b/deps/npm/docs/content/commands/npm-prefix.md index ba483428daecec..cc86ae0e2d515a 100644 --- a/deps/npm/docs/content/commands/npm-prefix.md +++ b/deps/npm/docs/content/commands/npm-prefix.md @@ -39,13 +39,12 @@ npm prefix -g * Default: false * Type: Boolean -Operates in "global" mode, so that packages are installed into the -`prefix` folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in -behavior. +Operates in "global" mode, so that packages are installed into the `prefix` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` diff --git a/deps/npm/docs/content/commands/npm-profile.md b/deps/npm/docs/content/commands/npm-profile.md index aa344822d0c53c..8c1ad4ee79c5c5 100644 --- a/deps/npm/docs/content/commands/npm-profile.md +++ b/deps/npm/docs/content/commands/npm-profile.md @@ -74,8 +74,8 @@ The base URL of the npm registry. 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`. +* 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. @@ -86,8 +86,8 @@ Not supported by all npm commands. * Default: false * Type: Boolean -Output parseable results from commands that write to standard output. -For `npm search`, this will be tab-separated table format. +Output parseable results from commands that write to standard output. For +`npm search`, this will be tab-separated table format. @@ -96,12 +96,11 @@ For `npm search`, this will be tab-separated table format. * Default: null * Type: null or String -This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with `npm -access`. +This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with `npm access`. -If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one. +If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one. diff --git a/deps/npm/docs/content/commands/npm-prune.md b/deps/npm/docs/content/commands/npm-prune.md index 8a889831bf0988..35150fd5abcb16 100644 --- a/deps/npm/docs/content/commands/npm-prune.md +++ b/deps/npm/docs/content/commands/npm-prune.md @@ -40,29 +40,25 @@ 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 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. +If the resulting omit list includes `'dev'`, then the `NODE_ENV` environment +variable will be set to `'production'` for all lifecycle scripts. #### `include` * Default: -* Type: "prod", "dev", "optional", or "peer" (can be set multiple - times) +* Type: "prod", "dev", "optional", or "peer" (can be set multiple times) -Option that allows for defining which types of dependencies to -install. +Option that allows for defining which types of dependencies to install. This is the inverse of `--omit=`. -Dependency types specified in `--include` will not be omitted, -regardless of the order in which omit/include are specified on the -command-line. +Dependency types specified in `--include` will not be omitted, regardless of +the order in which omit/include are specified on the command-line. @@ -71,14 +67,13 @@ command-line. * Default: false * Type: 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`. +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. +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. @@ -89,8 +84,8 @@ Note: This is NOT honored by other network related commands, eg 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`. +* 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. @@ -98,17 +93,16 @@ Not supported by all npm commands. #### `foreground-scripts` -* Default: `false` unless when using `npm pack` or `npm publish` where - it defaults to `true` +* Default: `false` unless when using `npm pack` or `npm publish` where it + defaults to `true` * Type: Boolean -Run all build scripts (ie, `preinstall`, `install`, and -`postinstall`) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process. +Run all build scripts (ie, `preinstall`, `install`, and `postinstall`) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process. -Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging. +Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging. @@ -119,10 +113,10 @@ noisier, but can be useful for debugging. If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. @@ -131,9 +125,9 @@ but they will *not* run any pre- or post-scripts. * Default: * Type: String (can be set multiple times) -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. +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: @@ -142,9 +136,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -156,14 +150,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -174,10 +167,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -186,9 +178,9 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -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. +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. diff --git a/deps/npm/docs/content/commands/npm-publish.md b/deps/npm/docs/content/commands/npm-publish.md index 0210f353a908fc..95429d0bdc7518 100644 --- a/deps/npm/docs/content/commands/npm-publish.md +++ b/deps/npm/docs/content/commands/npm-publish.md @@ -14,6 +14,32 @@ npm publish Publishes a package to the registry so that it can be installed by name. +### Examples + +Publish the package in the current directory: + +```bash +npm publish +``` + +Publish a specific workspace: + +```bash +npm publish --workspace= +``` + +Publish multiple workspaces: + +```bash +npm publish --workspace=workspace-a --workspace=workspace-b +``` + +Publish all workspaces: + +```bash +npm publish --workspaces +``` + By default npm will publish to the public registry. This can be overridden by specifying a different default registry or using a [`scope`](/using-npm/scope) in the name, combined with a scope-configured registry (see [`package.json`](/configuring-npm/package-json)). @@ -71,24 +97,24 @@ See [`package.json`](/configuring-npm/package-json) for more info on what can an * Default: "latest" * Type: String -If you ask npm to install a package and don't tell it a specific -version, then it will install the specified tag. +If you ask npm to install a package and don't tell it a specific version, +then it will install the specified tag. -It is the tag added to the package@version specified in the `npm -dist-tag add` command, if no explicit tag is given. +It is the tag added to the package@version specified in the `npm dist-tag +add` command, if no explicit tag is given. -When used by the `npm diff` command, this is the tag used to fetch -the tarball that will be compared with the local files by default. +When used by the `npm diff` command, this is the tag used to fetch the +tarball that will be compared with the local files by default. -If used in the `npm publish` command, this is the tag that will be -added to the package submitted to the registry. +If used in the `npm publish` command, this is the tag that will be added to +the package submitted to the registry. #### `access` -* Default: 'public' for new packages, existing packages it will not - change the current level +* Default: 'public' for new packages, existing packages it will not change the + current level * Type: null, "restricted", or "public" If you do not want your scoped package to be publicly viewable (and @@ -96,10 +122,10 @@ installable) set `--access=restricted`. Unscoped packages cannot be set to `restricted`. -Note: This defaults to not changing the current access level for -existing packages. Specifying a value of `restricted` or `public` -during publish will change the access for an existing package the -same way that `npm access set status` would. +Note: This defaults to not changing the current access level for existing +packages. Specifying a value of `restricted` or `public` during publish will +change the access for an existing package the same way that `npm access set +status` would. @@ -108,14 +134,13 @@ same way that `npm access set status` would. * Default: false * Type: 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`. +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. +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. @@ -124,12 +149,11 @@ Note: This is NOT honored by other network related commands, eg * Default: null * Type: null or String -This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with `npm -access`. +This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with `npm access`. -If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one. +If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one. @@ -138,9 +162,9 @@ one-time password, npm will prompt on the command line for one. * Default: * Type: String (can be set multiple times) -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. +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: @@ -149,9 +173,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -163,14 +187,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -181,10 +204,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -193,8 +215,8 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -When publishing from a supported cloud CI/CD system, the package will -be publicly linked to where it was built and published from. +When publishing from a supported cloud CI/CD system, the package will be +publicly linked to where it was built and published from. This config cannot be used with: `provenance-file` @@ -203,8 +225,7 @@ This config cannot be used with: `provenance-file` * Default: null * Type: Path -When publishing, the provenance bundle at the given path will be -used. +When publishing, the provenance bundle at the given path will be used. This config cannot be used with: `provenance` diff --git a/deps/npm/docs/content/commands/npm-query.md b/deps/npm/docs/content/commands/npm-query.md index 1b78734c317f7b..f80dfdcf58b194 100644 --- a/deps/npm/docs/content/commands/npm-query.md +++ b/deps/npm/docs/content/commands/npm-query.md @@ -164,13 +164,12 @@ This means that information from the package.json files of your dependencies wil * Default: false * Type: Boolean -Operates in "global" mode, so that packages are installed into the -`prefix` folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in -behavior. +Operates in "global" mode, so that packages are installed into the `prefix` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` @@ -181,9 +180,9 @@ behavior. * Default: * Type: String (can be set multiple times) -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. +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: @@ -192,9 +191,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -206,14 +205,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -224,10 +222,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -236,15 +233,14 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -If set to true, the current operation will only use the -`package-lock.json`, ignoring `node_modules`. +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`. +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`. @@ -253,8 +249,8 @@ by the `package-lock.json`, rather than the contents of * Default: null * Type: null or Boolean -Tells npm whether or not to expect results from the command. Can be -either true (expect some results) or false (expect no results). +Tells npm whether or not to expect results from the command. Can be either +true (expect some results) or false (expect no results). This config cannot be used with: `expect-result-count` diff --git a/deps/npm/docs/content/commands/npm-rebuild.md b/deps/npm/docs/content/commands/npm-rebuild.md index 529a583b719748..9fb43567ac2eb4 100644 --- a/deps/npm/docs/content/commands/npm-rebuild.md +++ b/deps/npm/docs/content/commands/npm-rebuild.md @@ -46,13 +46,12 @@ It is also suppressed if the package specifies `"gypfile": false` * Default: false * Type: Boolean -Operates in "global" mode, so that packages are installed into the -`prefix` folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in -behavior. +Operates in "global" mode, so that packages are installed into the `prefix` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` @@ -66,25 +65,24 @@ behavior. Tells npm to create symlinks (or `.cmd` shims on Windows) for package executables. -Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems. +Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems. #### `foreground-scripts` -* Default: `false` unless when using `npm pack` or `npm publish` where - it defaults to `true` +* Default: `false` unless when using `npm pack` or `npm publish` where it + defaults to `true` * Type: Boolean -Run all build scripts (ie, `preinstall`, `install`, and -`postinstall`) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process. +Run all build scripts (ie, `preinstall`, `install`, and `postinstall`) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process. -Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging. +Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging. @@ -95,10 +93,10 @@ noisier, but can be useful for debugging. If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. @@ -107,9 +105,9 @@ but they will *not* run any pre- or post-scripts. * Default: * Type: String (can be set multiple times) -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. +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: @@ -118,9 +116,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -132,14 +130,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -150,10 +147,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -162,9 +158,9 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -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. +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. diff --git a/deps/npm/docs/content/commands/npm-repo.md b/deps/npm/docs/content/commands/npm-repo.md index 10e14c0204db06..71357ab3224032 100644 --- a/deps/npm/docs/content/commands/npm-repo.md +++ b/deps/npm/docs/content/commands/npm-repo.md @@ -45,9 +45,9 @@ The base URL of the npm registry. * Default: * Type: String (can be set multiple times) -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. +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: @@ -56,9 +56,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -70,14 +70,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -88,10 +87,9 @@ This value is not exported to the environment for child processes. 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. +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. diff --git a/deps/npm/docs/content/commands/npm-restart.md b/deps/npm/docs/content/commands/npm-restart.md index 1c240de24953dd..03eeec5da785de 100644 --- a/deps/npm/docs/content/commands/npm-restart.md +++ b/deps/npm/docs/content/commands/npm-restart.md @@ -41,10 +41,10 @@ If it does _not_ have a `"restart"` script specified, but it does have `stop` an If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. @@ -53,8 +53,8 @@ but they will *not* run any pre- or post-scripts. * Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows * Type: null or String -The shell to use for scripts run with the `npm exec`, `npm run` and -`npm init ` commands. +The shell to use for scripts run with the `npm exec`, `npm run` and `npm +init ` commands. diff --git a/deps/npm/docs/content/commands/npm-root.md b/deps/npm/docs/content/commands/npm-root.md index 8648eace72d45a..8f4825bafaa3f7 100644 --- a/deps/npm/docs/content/commands/npm-root.md +++ b/deps/npm/docs/content/commands/npm-root.md @@ -32,13 +32,12 @@ echo "Global packages installed in: ${global_node_modules}" * Default: false * Type: Boolean -Operates in "global" mode, so that packages are installed into the -`prefix` folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in -behavior. +Operates in "global" mode, so that packages are installed into the `prefix` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` diff --git a/deps/npm/docs/content/commands/npm-run.md b/deps/npm/docs/content/commands/npm-run.md index 2066bf36817ebd..9894e4b939d0db 100644 --- a/deps/npm/docs/content/commands/npm-run.md +++ b/deps/npm/docs/content/commands/npm-run.md @@ -119,9 +119,9 @@ This last command will run `test` in both `./packages/a` and `./packages/b` pack * Default: * Type: String (can be set multiple times) -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. +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: @@ -130,9 +130,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -144,14 +144,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -162,10 +161,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -174,12 +172,12 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -If true, npm will not exit with an error code when `run` is invoked -for a script that isn't defined in the `scripts` section of -`package.json`. This option can be used when it's desirable to -optionally run a script when it's present and fail if the script -fails. This is useful, for example, when running scripts that may -only apply for some builds in an otherwise generic CI setup. +If true, npm will not exit with an error code when `run` is invoked for a +script that isn't defined in the `scripts` section of `package.json`. This +option can be used when it's desirable to optionally run a script when it's +present and fail if the script fails. This is useful, for example, when +running scripts that may only apply for some builds in an otherwise generic +CI setup. This value is not exported to the environment for child processes. @@ -190,26 +188,25 @@ This value is not exported to the environment for child processes. If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. #### `foreground-scripts` -* Default: `false` unless when using `npm pack` or `npm publish` where - it defaults to `true` +* Default: `false` unless when using `npm pack` or `npm publish` where it + defaults to `true` * Type: Boolean -Run all build scripts (ie, `preinstall`, `install`, and -`postinstall`) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process. +Run all build scripts (ie, `preinstall`, `install`, and `postinstall`) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process. -Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging. +Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging. @@ -218,8 +215,8 @@ noisier, but can be useful for debugging. * Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows * Type: null or String -The shell to use for scripts run with the `npm exec`, `npm run` and -`npm init ` commands. +The shell to use for scripts run with the `npm exec`, `npm run` and `npm +init ` commands. diff --git a/deps/npm/docs/content/commands/npm-sbom.md b/deps/npm/docs/content/commands/npm-sbom.md index fd9d183005790c..f15e30bfcd05d9 100644 --- a/deps/npm/docs/content/commands/npm-sbom.md +++ b/deps/npm/docs/content/commands/npm-sbom.md @@ -225,12 +225,11 @@ 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 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. +If the resulting omit list includes `'dev'`, then the `NODE_ENV` environment +variable will be set to `'production'` for all lifecycle scripts. @@ -239,15 +238,14 @@ scripts. * Default: false * Type: Boolean -If set to true, the current operation will only use the -`package-lock.json`, ignoring `node_modules`. +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`. +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`. @@ -265,9 +263,9 @@ SBOM format to use when generating SBOMs. * Default: "library" * Type: "library", "application", or "framework" -The type of package described by the generated SBOM. For SPDX, this -is the value for the `primaryPackagePurpose` field. For CycloneDX, -this is the value for the `type` field. +The type of package described by the generated SBOM. For SPDX, this is the +value for the `primaryPackagePurpose` field. For CycloneDX, this is the +value for the `type` field. @@ -276,9 +274,9 @@ this is the value for the `type` field. * Default: * Type: String (can be set multiple times) -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. +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: @@ -287,9 +285,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -301,14 +299,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. ## See Also diff --git a/deps/npm/docs/content/commands/npm-search.md b/deps/npm/docs/content/commands/npm-search.md index 4803ef57dfc975..d3f46a90c1a236 100644 --- a/deps/npm/docs/content/commands/npm-search.md +++ b/deps/npm/docs/content/commands/npm-search.md @@ -40,8 +40,8 @@ In this case search will ignore a trailing `/` . (Note you must escape or quote 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`. +* 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. @@ -49,12 +49,11 @@ Not supported by all npm commands. #### `color` -* Default: true unless the NO_COLOR environ is set to something other - than '0' +* Default: true unless the NO_COLOR environ is set to something other than '0' * Type: "always" or Boolean -If false, never shows colors. If `"always"` then always shows colors. -If true, then only prints color codes for tty file descriptors. +If false, never shows colors. If `"always"` then always shows colors. If +true, then only prints color codes for tty file descriptors. @@ -63,8 +62,8 @@ If true, then only prints color codes for tty file descriptors. * Default: false * Type: Boolean -Output parseable results from commands that write to standard output. -For `npm search`, this will be tab-separated table format. +Output parseable results from commands that write to standard output. For +`npm search`, this will be tab-separated table format. @@ -82,8 +81,8 @@ Show the description in `npm search` * Default: 20 * Type: Number -Number of items to limit search results to. Will not apply at all to -legacy searches. +Number of items to limit search results to. Will not apply at all to legacy +searches. @@ -119,8 +118,8 @@ The base URL of the npm registry. * Default: false * Type: Boolean -If true, staleness checks for cached data will be forced, making the -CLI look for updates immediately even for fresh package data. +If true, staleness checks for cached data will be forced, making the CLI +look for updates immediately even for fresh package data. @@ -129,9 +128,9 @@ CLI look for updates immediately even for fresh package data. * Default: false * Type: Boolean -If true, staleness checks for cached data will be bypassed, but -missing data will be requested from the server. To force full offline -mode, use `--offline`. +If true, staleness checks for cached data will be bypassed, but missing data +will be requested from the server. To force full offline mode, use +`--offline`. @@ -140,9 +139,8 @@ mode, use `--offline`. * Default: false * Type: Boolean -Force offline mode: no network requests will be done during install. -To allow the CLI to fill in missing cache data, see -`--prefer-offline`. +Force offline mode: no network requests will be done during install. To +allow the CLI to fill in missing cache data, see `--prefer-offline`. diff --git a/deps/npm/docs/content/commands/npm-star.md b/deps/npm/docs/content/commands/npm-star.md index 163bce4a73af3a..2820d1ca2e2606 100644 --- a/deps/npm/docs/content/commands/npm-star.md +++ b/deps/npm/docs/content/commands/npm-star.md @@ -47,13 +47,12 @@ The base URL of the npm registry. #### `unicode` -* Default: false on windows, true on mac/unix systems with a unicode - locale, as defined by the `LC_ALL`, `LC_CTYPE`, or `LANG` environment - variables. +* Default: false on windows, true on mac/unix systems with a unicode locale, + as defined by the `LC_ALL`, `LC_CTYPE`, or `LANG` environment variables. * Type: Boolean -When set to true, npm uses unicode characters in the tree output. -When false, it uses ascii characters instead of unicode glyphs. +When set to true, npm uses unicode characters in the tree output. When +false, it uses ascii characters instead of unicode glyphs. @@ -62,12 +61,11 @@ When false, it uses ascii characters instead of unicode glyphs. * Default: null * Type: null or String -This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with `npm -access`. +This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with `npm access`. -If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one. +If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one. diff --git a/deps/npm/docs/content/commands/npm-start.md b/deps/npm/docs/content/commands/npm-start.md index 19afcc689e8093..eb5d5c54684ac8 100644 --- a/deps/npm/docs/content/commands/npm-start.md +++ b/deps/npm/docs/content/commands/npm-start.md @@ -50,10 +50,10 @@ npm start If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. @@ -62,8 +62,8 @@ but they will *not* run any pre- or post-scripts. * Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows * Type: null or String -The shell to use for scripts run with the `npm exec`, `npm run` and -`npm init ` commands. +The shell to use for scripts run with the `npm exec`, `npm run` and `npm +init ` commands. diff --git a/deps/npm/docs/content/commands/npm-stop.md b/deps/npm/docs/content/commands/npm-stop.md index d342a81bda2108..2ccad18038e0b2 100644 --- a/deps/npm/docs/content/commands/npm-stop.md +++ b/deps/npm/docs/content/commands/npm-stop.md @@ -45,10 +45,10 @@ npm stop If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. @@ -57,8 +57,8 @@ but they will *not* run any pre- or post-scripts. * Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows * Type: null or String -The shell to use for scripts run with the `npm exec`, `npm run` and -`npm init ` commands. +The shell to use for scripts run with the `npm exec`, `npm run` and `npm +init ` commands. diff --git a/deps/npm/docs/content/commands/npm-team.md b/deps/npm/docs/content/commands/npm-team.md index 4d660b0d3a583b..9ac1805c705e04 100644 --- a/deps/npm/docs/content/commands/npm-team.md +++ b/deps/npm/docs/content/commands/npm-team.md @@ -105,12 +105,11 @@ The base URL of the npm registry. * Default: null * Type: null or String -This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with `npm -access`. +This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with `npm access`. -If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one. +If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one. @@ -119,8 +118,8 @@ one-time password, npm will prompt on the command line for one. * Default: false * Type: Boolean -Output parseable results from commands that write to standard output. -For `npm search`, this will be tab-separated table format. +Output parseable results from commands that write to standard output. For +`npm search`, this will be tab-separated table format. @@ -131,8 +130,8 @@ For `npm search`, this will be tab-separated table format. 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`. +* 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. diff --git a/deps/npm/docs/content/commands/npm-test.md b/deps/npm/docs/content/commands/npm-test.md index 60d94eb2398063..f145dc8958bf8c 100644 --- a/deps/npm/docs/content/commands/npm-test.md +++ b/deps/npm/docs/content/commands/npm-test.md @@ -43,10 +43,10 @@ npm test If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. @@ -55,8 +55,8 @@ but they will *not* run any pre- or post-scripts. * Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows * Type: null or String -The shell to use for scripts run with the `npm exec`, `npm run` and -`npm init ` commands. +The shell to use for scripts run with the `npm exec`, `npm run` and `npm +init ` commands. diff --git a/deps/npm/docs/content/commands/npm-token.md b/deps/npm/docs/content/commands/npm-token.md index 43c0fdc6c7309f..42dfed6086cea7 100644 --- a/deps/npm/docs/content/commands/npm-token.md +++ b/deps/npm/docs/content/commands/npm-token.md @@ -9,7 +9,7 @@ description: Manage your authentication tokens ```bash npm token list npm token revoke -npm token create [--read-only] [--cidr=list] +npm token create --name= [--token-description=] [--packages=] [--packages-all] [--scopes=] [--orgs=] [--packages-and-scopes-permission=] [--orgs-permission=] [--expires=] [--cidr=] [--bypass-2fa] [--password=] ``` Note: This command is unaware of workspaces. @@ -52,13 +52,98 @@ Created publish token a73c9572-f1b9-8983-983d-ba3ac3cc913d ### Configuration -#### `read-only` +#### `name` + +* Default: null +* Type: null or String + +When creating a Granular Access Token with `npm token create`, this sets the +name/description for the token. + + + +#### `token-description` + +* Default: null +* Type: null or String + +Description text for the token when using `npm token create`. + + + +#### `expires` + +* Default: null +* Type: null or Number + +When creating a Granular Access Token with `npm token create`, this sets the +expiration in days. If not specified, the server will determine the default +expiration. + + + +#### `packages` + +* Default: +* Type: null or String (can be set multiple times) + +When creating a Granular Access Token with `npm token create`, this limits +the token access to specific packages. Provide a comma-separated list of +package names. + + + +#### `packages-all` * Default: false * Type: Boolean -This is used to mark a token as unable to publish when configuring -limited access tokens with the `npm token create` command. +When creating a Granular Access Token with `npm token create`, grants the +token access to all packages instead of limiting to specific packages. + + + +#### `scopes` + +* Default: null +* Type: null or String (can be set multiple times) + +When creating a Granular Access Token with `npm token create`, this limits +the token access to specific scopes. Provide a comma-separated list of scope +names (with or without @ prefix). + + + +#### `orgs` + +* Default: null +* Type: null or String (can be set multiple times) + +When creating a Granular Access Token with `npm token create`, this limits +the token access to specific organizations. Provide a comma-separated list +of organization names. + + + +#### `packages-and-scopes-permission` + +* Default: null +* Type: null, "read-only", "read-write", or "no-access" + +When creating a Granular Access Token with `npm token create`, sets the +permission level for packages and scopes. Options are "read-only", +"read-write", or "no-access". + + + +#### `orgs-permission` + +* Default: null +* Type: null, "read-only", "read-write", or "no-access" + +When creating a Granular Access Token with `npm token create`, sets the +permission level for organizations. Options are "read-only", "read-write", +or "no-access". @@ -67,8 +152,29 @@ limited access tokens with the `npm token create` command. * Default: null * Type: null or String (can be set multiple times) -This is a list of CIDR address to be used when configuring limited -access tokens with the `npm token create` command. +This is a list of CIDR address to be used when configuring limited access +tokens with the `npm token create` command. + + + +#### `bypass-2fa` + +* Default: false +* Type: Boolean + +When creating a Granular Access Token with `npm token create`, setting this +to true will allow the token to bypass two-factor authentication. This is +useful for automation and CI/CD workflows. + + + +#### `password` + +* Default: null +* Type: null or String + +Password for authentication. Can be provided via command line when creating +tokens, though it's generally safer to be prompted for it. @@ -86,12 +192,21 @@ The base URL of the npm registry. * Default: null * Type: null or String -This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with `npm -access`. +This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with `npm access`. -If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one. +If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one. + + + +#### `read-only` + +* Default: false +* Type: Boolean + +This is used to mark a token as unable to publish when configuring limited +access tokens with the `npm token create` command. diff --git a/deps/npm/docs/content/commands/npm-undeprecate.md b/deps/npm/docs/content/commands/npm-undeprecate.md index 3034aca212f3db..fdd1a25504e1c4 100644 --- a/deps/npm/docs/content/commands/npm-undeprecate.md +++ b/deps/npm/docs/content/commands/npm-undeprecate.md @@ -34,12 +34,11 @@ The base URL of the npm registry. * Default: null * Type: null or String -This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with `npm -access`. +This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with `npm access`. -If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one. +If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one. @@ -48,14 +47,13 @@ one-time password, npm will prompt on the command line for one. * Default: false * Type: 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`. +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. +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. ### See Also diff --git a/deps/npm/docs/content/commands/npm-uninstall.md b/deps/npm/docs/content/commands/npm-uninstall.md index 1d8bb6418e07cf..43b706f9c94401 100644 --- a/deps/npm/docs/content/commands/npm-uninstall.md +++ b/deps/npm/docs/content/commands/npm-uninstall.md @@ -50,8 +50,7 @@ npm uninstall lodash --no-save #### `save` -* Default: `true` unless when using `npm update` where it defaults to - `false` +* Default: `true` unless when using `npm update` where it defaults to `false` * Type: Boolean Save installed packages to a `package.json` file as dependencies. @@ -68,13 +67,12 @@ Will also prevent writing to `package-lock.json` if set to `false`. * Default: false * Type: Boolean -Operates in "global" mode, so that packages are installed into the -`prefix` folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in -behavior. +Operates in "global" mode, so that packages are installed into the `prefix` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` @@ -85,9 +83,9 @@ behavior. * Default: * Type: String (can be set multiple times) -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. +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: @@ -96,9 +94,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -110,14 +108,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -128,10 +125,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -140,9 +136,9 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -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. +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. diff --git a/deps/npm/docs/content/commands/npm-unpublish.md b/deps/npm/docs/content/commands/npm-unpublish.md index db68ae7d40bc03..fe2d9be0f4a97b 100644 --- a/deps/npm/docs/content/commands/npm-unpublish.md +++ b/deps/npm/docs/content/commands/npm-unpublish.md @@ -37,14 +37,13 @@ If you unpublish the entire package, you may not publish any new versions of tha * Default: false * Type: 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`. +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. +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. @@ -59,16 +58,14 @@ mistakes, unnecessary performance degradation, and malicious input. * Allow clobbering non-npm files in global installs. * Allow the `npm version` command to work on an unclean git repository. * Allow deleting the cache folder with `npm cache clean`. -* Allow installing packages that have an `engines` declaration - requiring a different version of npm. -* Allow installing packages that have an `engines` declaration - requiring a different version of `node`, even if `--engine-strict` is - enabled. -* Allow `npm audit fix` to install modules outside your stated - dependency range (including SemVer-major changes). +* Allow installing packages that have an `engines` declaration requiring a + different version of npm. +* Allow installing packages that have an `engines` declaration requiring a + different version of `node`, even if `--engine-strict` is enabled. +* Allow `npm audit fix` to install modules outside your stated dependency + range (including SemVer-major changes). * Allow unpublishing all versions of a published package. -* Allow conflicting peerDependencies to be installed in the root - project. +* Allow conflicting peerDependencies to be installed in the root project. * Implicitly set `--yes` during `npm init`. * Allow clobbering existing values in `npm pkg` * Allow unpublishing of entire packages (not just a single version). @@ -83,9 +80,9 @@ recommended that you do not use this option! * Default: * Type: String (can be set multiple times) -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. +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: @@ -94,9 +91,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -108,14 +105,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. diff --git a/deps/npm/docs/content/commands/npm-unstar.md b/deps/npm/docs/content/commands/npm-unstar.md index 8c560bc5da06dc..24764733e4a0e9 100644 --- a/deps/npm/docs/content/commands/npm-unstar.md +++ b/deps/npm/docs/content/commands/npm-unstar.md @@ -41,13 +41,12 @@ The base URL of the npm registry. #### `unicode` -* Default: false on windows, true on mac/unix systems with a unicode - locale, as defined by the `LC_ALL`, `LC_CTYPE`, or `LANG` environment - variables. +* Default: false on windows, true on mac/unix systems with a unicode locale, + as defined by the `LC_ALL`, `LC_CTYPE`, or `LANG` environment variables. * Type: Boolean -When set to true, npm uses unicode characters in the tree output. -When false, it uses ascii characters instead of unicode glyphs. +When set to true, npm uses unicode characters in the tree output. When +false, it uses ascii characters instead of unicode glyphs. @@ -56,12 +55,11 @@ When false, it uses ascii characters instead of unicode glyphs. * Default: null * Type: null or String -This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with `npm -access`. +This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with `npm access`. -If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one. +If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one. diff --git a/deps/npm/docs/content/commands/npm-update.md b/deps/npm/docs/content/commands/npm-update.md index c20da891716ba5..853bb24de32e8d 100644 --- a/deps/npm/docs/content/commands/npm-update.md +++ b/deps/npm/docs/content/commands/npm-update.md @@ -141,8 +141,7 @@ NOTE: If a package has been upgraded to a version newer than `latest`, it will b #### `save` -* Default: `true` unless when using `npm update` where it defaults to - `false` +* Default: `true` unless when using `npm update` where it defaults to `false` * Type: Boolean Save installed packages to a `package.json` file as dependencies. @@ -159,13 +158,12 @@ Will also prevent writing to `package-lock.json` if set to `false`. * Default: false * Type: Boolean -Operates in "global" mode, so that packages are installed into the -`prefix` folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in -behavior. +Operates in "global" mode, so that packages are installed into the `prefix` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` @@ -177,12 +175,11 @@ behavior. * Type: "hoisted", "nested", "shallow", or "linked" Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted. +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted. @@ -193,10 +190,10 @@ unhoisted. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=nested` -Instead of hoisting package installs in `node_modules`, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets `--install-strategy=nested`. +Instead of hoisting package installs in `node_modules`, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets `--install-strategy=nested`. @@ -207,8 +204,8 @@ there is no de-duplicating. Sets `--install-strategy=nested`. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=shallow` -Only install direct dependencies in the top level `node_modules`, but -hoist on deeper dependencies. Sets `--install-strategy=shallow`. +Only install direct dependencies in the top level `node_modules`, but hoist +on deeper dependencies. Sets `--install-strategy=shallow`. @@ -224,29 +221,25 @@ 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 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. +If the resulting omit list includes `'dev'`, then the `NODE_ENV` environment +variable will be set to `'production'` for all lifecycle scripts. #### `include` * Default: -* Type: "prod", "dev", "optional", or "peer" (can be set multiple - times) +* Type: "prod", "dev", "optional", or "peer" (can be set multiple times) -Option that allows for defining which types of dependencies to -install. +Option that allows for defining which types of dependencies to install. This is the inverse of `--omit=`. -Dependency types specified in `--include` will not be omitted, -regardless of the order in which omit/include are specified on the -command-line. +Dependency types specified in `--include` will not be omitted, regardless of +the order in which omit/include are specified on the command-line. @@ -256,19 +249,18 @@ command-line. * Type: Boolean If set to `true`, and `--legacy-peer-deps` is not set, then _any_ -conflicting `peerDependencies` will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships. +conflicting `peerDependencies` will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships. -By default, conflicting `peerDependencies` deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -`peerDependencies` object. +By default, conflicting `peerDependencies` deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's `peerDependencies` object. -When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If `--strict-peer-deps` is -set, then this warning is treated as a failure. +When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If `--strict-peer-deps` is set, then +this warning is treated as a failure. @@ -277,25 +269,23 @@ set, then this warning is treated as a failure. * Default: true * Type: Boolean -If set to false, then ignore `package-lock.json` files when -installing. This will also prevent _writing_ `package-lock.json` if -`save` is true. +If set to false, then ignore `package-lock.json` files when installing. This +will also prevent _writing_ `package-lock.json` if `save` is true. #### `foreground-scripts` -* Default: `false` unless when using `npm pack` or `npm publish` where - it defaults to `true` +* Default: `false` unless when using `npm pack` or `npm publish` where it + defaults to `true` * Type: Boolean -Run all build scripts (ie, `preinstall`, `install`, and -`postinstall`) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process. +Run all build scripts (ie, `preinstall`, `install`, and `postinstall`) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process. -Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging. +Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging. @@ -306,10 +296,10 @@ noisier, but can be useful for debugging. If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. @@ -318,10 +308,10 @@ but they will *not* run any pre- or post-scripts. * Default: true * Type: Boolean -When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for [`npm audit`](/commands/npm-audit) for details -on what is submitted. +When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for [`npm audit`](/commands/npm-audit) for details on what is +submitted. @@ -331,14 +321,14 @@ on what is submitted. * Type: null or Date If passed to `npm install`, will rebuild the npm tree such that only -versions that were available **on or before** the given date are -installed. If there are no versions available for the current set of -dependencies, the command will error. +versions that were available **on or before** the given date are installed. +If there are no versions available for the current set of dependencies, the +command will error. -If the requested version is a `dist-tag` and the given tag does not -pass the `--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`. +If the requested version is a `dist-tag` and the given tag does not pass the +`--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`. @@ -350,9 +340,9 @@ install `foo@1.2` even though `latest` is `2.0`. Tells npm to create symlinks (or `.cmd` shims on Windows) for package executables. -Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems. +Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems. @@ -362,8 +352,8 @@ ostensibly Unix systems. * Type: Boolean When "true" displays the message at the end of each `npm install` -acknowledging the number of dependencies looking for funding. See -[`npm fund`](/commands/npm-fund) for details. +acknowledging the number of dependencies looking for funding. See [`npm +fund`](/commands/npm-fund) for details. @@ -372,14 +362,13 @@ acknowledging the number of dependencies looking for funding. See * Default: false * Type: 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`. +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. +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. @@ -388,9 +377,9 @@ Note: This is NOT honored by other network related commands, eg * Default: * Type: String (can be set multiple times) -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. +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: @@ -399,9 +388,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -413,14 +402,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -431,10 +419,9 @@ This value is not exported to the environment for child processes. 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. +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. @@ -443,9 +430,9 @@ This value is not exported to the environment for child processes. * Default: false * Type: Boolean -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. +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. diff --git a/deps/npm/docs/content/commands/npm-version.md b/deps/npm/docs/content/commands/npm-version.md index aeaa764e0df5f9..89c3441a48e8ea 100644 --- a/deps/npm/docs/content/commands/npm-version.md +++ b/deps/npm/docs/content/commands/npm-version.md @@ -19,8 +19,8 @@ alias: verison * Default: false * Type: Boolean -Prevents throwing an error when `npm version` is used to set the new -version to the same value as the current version. +Prevents throwing an error when `npm version` is used to set the new version +to the same value as the current version. @@ -38,8 +38,8 @@ Run git commit hooks when using the `npm version` command. * Default: true * Type: Boolean -Tag the commit when using the `npm version` command. Setting this to -false results in no commit being made at all. +Tag the commit when using the `npm version` command. Setting this to false +results in no commit being made at all. @@ -50,8 +50,8 @@ false results in no commit being made at all. 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`. +* 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. @@ -62,8 +62,8 @@ Not supported by all npm commands. * Default: "" * Type: String -The "prerelease identifier" to use as a prefix for the "prerelease" -part of a semver. Like the `rc` in `1.2.0-rc.8`. +The "prerelease identifier" to use as a prefix for the "prerelease" part of +a semver. Like the `rc` in `1.2.0-rc.8`. @@ -72,11 +72,25 @@ part of a semver. Like the `rc` in `1.2.0-rc.8`. * Default: false * Type: Boolean -If set to true, then the `npm version` command will tag the version -using `-s` to add a signature. +If set to true, then the `npm version` command will tag the version using +`-s` to add a signature. -Note that git requires you to have set up GPG keys in your git -configs for this to work properly. +Note that git requires you to have set up GPG keys in your git configs for +this to work properly. + + + +#### `save` + +* Default: `true` unless when using `npm update` where it defaults to `false` +* Type: Boolean + +Save installed packages to a `package.json` file as dependencies. + +When used with the `npm rm` command, removes the dependency from +`package.json`. + +Will also prevent writing to `package-lock.json` if set to `false`. @@ -85,9 +99,9 @@ configs for this to work properly. * Default: * Type: String (can be set multiple times) -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. +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: @@ -96,9 +110,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -110,14 +124,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -126,9 +139,8 @@ This value is not exported to the environment for child processes. * Default: true * Type: Boolean -If set to true, the npm cli will run an update after operations that -may possibly change the workspaces installed to the `node_modules` -folder. +If set to true, the npm cli will run an update after operations that may +possibly change the workspaces installed to the `node_modules` folder. @@ -139,13 +151,26 @@ folder. 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. +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. +#### `ignore-scripts` + +* Default: false +* Type: Boolean + +If true, npm does not run scripts specified in package.json files. + +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. + + + ### Description Run this in a package directory to bump the version and write the new data back to `package.json`, `package-lock.json`, and, if present, diff --git a/deps/npm/docs/content/commands/npm-view.md b/deps/npm/docs/content/commands/npm-view.md index 9b803b01d12223..6353b3c359f6da 100644 --- a/deps/npm/docs/content/commands/npm-view.md +++ b/deps/npm/docs/content/commands/npm-view.md @@ -111,8 +111,8 @@ npm view connect versions 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`. +* 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. @@ -123,9 +123,9 @@ Not supported by all npm commands. * Default: * Type: String (can be set multiple times) -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. +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: @@ -134,9 +134,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -148,14 +148,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -166,10 +165,9 @@ This value is not exported to the environment for child processes. 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. +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. diff --git a/deps/npm/docs/content/commands/npm.md b/deps/npm/docs/content/commands/npm.md index c53944048cf8a7..6d10a81bfde80d 100644 --- a/deps/npm/docs/content/commands/npm.md +++ b/deps/npm/docs/content/commands/npm.md @@ -14,7 +14,7 @@ Note: This command is unaware of workspaces. ### Version -11.6.2 +11.6.3 ### Description diff --git a/deps/npm/docs/content/using-npm/config.md b/deps/npm/docs/content/using-npm/config.md index 0118e280407797..e3d92d0f80bec5 100644 --- a/deps/npm/docs/content/using-npm/config.md +++ b/deps/npm/docs/content/using-npm/config.md @@ -116,21 +116,20 @@ npm ls --global --parseable --long --loglevel info * Default: null * Type: null or String -A basic-auth string to use when authenticating against the npm -registry. This will ONLY be used to authenticate against the npm -registry. For other registries you will need to scope it like -"//other-registry.tld/:_auth" +A basic-auth string to use when authenticating against the npm registry. +This will ONLY be used to authenticate against the npm registry. For other +registries you will need to scope it like "//other-registry.tld/:_auth" -Warning: This should generally not be set via a command-line option. -It is safer to use a registry-provided authentication bearer token -stored in the ~/.npmrc file by running `npm login`. +Warning: This should generally not be set via a command-line option. It is +safer to use a registry-provided authentication bearer token stored in the +~/.npmrc file by running `npm login`. #### `access` -* Default: 'public' for new packages, existing packages it will not - change the current level +* Default: 'public' for new packages, existing packages it will not change the + current level * Type: null, "restricted", or "public" If you do not want your scoped package to be publicly viewable (and @@ -138,10 +137,10 @@ installable) set `--access=restricted`. Unscoped packages cannot be set to `restricted`. -Note: This defaults to not changing the current access level for -existing packages. Specifying a value of `restricted` or `public` -during publish will change the access for an existing package the -same way that `npm access set status` would. +Note: This defaults to not changing the current access level for existing +packages. Specifying a value of `restricted` or `public` during publish will +change the access for an existing package the same way that `npm access set +status` would. @@ -150,9 +149,9 @@ same way that `npm access set status` would. * Default: false * Type: Boolean -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. +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. @@ -161,8 +160,8 @@ depended upon by the current project. * Default: false * Type: Boolean -Prevents throwing an error when `npm version` is used to set the new -version to the same value as the current version. +Prevents throwing an error when `npm version` is used to set the new version +to the same value as the current version. @@ -171,10 +170,10 @@ version to the same value as the current version. * Default: true * Type: Boolean -When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for [`npm audit`](/commands/npm-audit) for details -on what is submitted. +When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for [`npm audit`](/commands/npm-audit) for details on what is +submitted. @@ -183,8 +182,8 @@ on what is submitted. * Default: null * Type: null, "info", "low", "moderate", "high", "critical", or "none" -The minimum level of vulnerability for `npm audit` to exit with a -non-zero exit code. +The minimum level of vulnerability for `npm audit` to exit with a non-zero +exit code. @@ -193,8 +192,8 @@ non-zero exit code. * Default: "web" * Type: "legacy" or "web" -What authentication strategy to use with `login`. Note that if an -`otp` config is given, this value will always be set to `legacy`. +What authentication strategy to use with `login`. Note that if an `otp` +config is given, this value will always be set to `legacy`. @@ -204,14 +203,14 @@ What authentication strategy to use with `login`. Note that if an * Type: null or Date If passed to `npm install`, will rebuild the npm tree such that only -versions that were available **on or before** the given date are -installed. If there are no versions available for the current set of -dependencies, the command will error. +versions that were available **on or before** the given date are installed. +If there are no versions available for the current set of dependencies, the +command will error. -If the requested version is a `dist-tag` and the given tag does not -pass the `--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`. +If the requested version is a `dist-tag` and the given tag does not pass the +`--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`. @@ -223,9 +222,9 @@ install `foo@1.2` even though `latest` is `2.0`. Tells npm to create symlinks (or `.cmd` shims on Windows) for package executables. -Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems. +Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems. @@ -243,22 +242,33 @@ Set to `true` to use default system URL opener. +#### `bypass-2fa` + +* Default: false +* Type: Boolean + +When creating a Granular Access Token with `npm token create`, setting this +to true will allow the token to bypass two-factor authentication. This is +useful for automation and CI/CD workflows. + + + #### `ca` * Default: null * Type: null or String (can be set multiple times) The Certificate Authority signing certificate that is trusted for SSL -connections to the registry. Values should be in PEM format (Windows -calls it "Base-64 encoded X.509 (.CER)") with newlines replaced by -the string "\n". For example: +connections to the registry. Values should be in PEM format (Windows calls +it "Base-64 encoded X.509 (.CER)") with newlines replaced by the string +"\n". For example: ```ini ca="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----" ``` -Set to `null` to only allow "known" registrars, or to a specific CA -cert to trust only that specific signing authority. +Set to `null` to only allow "known" registrars, or to a specific CA cert to +trust only that specific signing authority. Multiple CAs can be trusted by specifying an array of certificates: @@ -285,10 +295,9 @@ The location of npm's cache directory. * Default: null * Type: Path -A path to a file containing one or multiple Certificate Authority -signing certificates. Similar to the `ca` setting, but allows for -multiple CA's, as well as for the CA information to be stored in a -file on disk. +A path to a file containing one or multiple Certificate Authority signing +certificates. Similar to the `ca` setting, but allows for multiple CA's, as +well as for the CA information to be stored in a file on disk. @@ -297,9 +306,8 @@ file on disk. * Default: "" * Type: String -Optional companion option for `npm exec`, `npx` that allows for -specifying a custom command to be run along with the installed -packages. +Optional companion option for `npm exec`, `npx` that allows for specifying a +custom command to be run along with the installed packages. ```bash npm exec --package yo --package generator-node --call "yo node" @@ -312,19 +320,18 @@ npm exec --package yo --package generator-node --call "yo node" * Default: null * Type: null or String (can be set multiple times) -This is a list of CIDR address to be used when configuring limited -access tokens with the `npm token create` command. +This is a list of CIDR address to be used when configuring limited access +tokens with the `npm token create` command. #### `color` -* Default: true unless the NO_COLOR environ is set to something other - than '0' +* Default: true unless the NO_COLOR environ is set to something other than '0' * Type: "always" or Boolean -If false, never shows colors. If `"always"` then always shows colors. -If true, then only prints color codes for tty file descriptors. +If false, never shows colors. If `"always"` then always shows colors. If +true, then only prints color codes for tty file descriptors. @@ -342,9 +349,8 @@ Run git commit hooks when using the `npm version` command. * Default: null * Type: null or String -Override CPU architecture of native modules to install. Acceptable -values are same as `cpu` field of package.json, which comes from -`process.arch`. +Override CPU architecture of native modules to install. Acceptable values +are same as `cpu` field of package.json, which comes from `process.arch`. @@ -355,9 +361,8 @@ values are same as `cpu` field of package.json, which comes from 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. +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. @@ -450,14 +455,13 @@ The number of lines of context to print in `npm diff`. * Default: false * Type: 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`. +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. +Note: This is NOT honored by other network related commands, eg `dist-tags`, +`owner`, etc. @@ -476,9 +480,9 @@ The command to run for `npm edit` and `npm config edit`. * Default: false * Type: Boolean -If set to true, then npm will stubbornly refuse to install (or even -consider installing) any package that claims to not be compatible -with the current Node.js version. +If set to true, then npm will stubbornly refuse to install (or even consider +installing) any package that claims to not be compatible with the current +Node.js version. This can be overridden by setting the `--force` flag. @@ -498,21 +502,32 @@ This config cannot be used with: `expect-results` * Default: null * Type: null or Boolean -Tells npm whether or not to expect results from the command. Can be -either true (expect some results) or false (expect no results). +Tells npm whether or not to expect results from the command. Can be either +true (expect some results) or false (expect no results). This config cannot be used with: `expect-result-count` +#### `expires` + +* Default: null +* Type: null or Number + +When creating a Granular Access Token with `npm token create`, this sets the +expiration in days. If not specified, the server will determine the default +expiration. + + + #### `fetch-retries` * Default: 2 * Type: Number -The "retries" config for the `retry` module to use when fetching -packages from the registry. +The "retries" config for the `retry` module to use when fetching packages +from the registry. -npm will retry idempotent read requests to the registry in the case -of network failures or 5xx HTTP errors. +npm will retry idempotent read requests to the registry in the case of +network failures or 5xx HTTP errors. @@ -521,8 +536,7 @@ of network failures or 5xx HTTP errors. * Default: 10 * Type: Number -The "factor" config for the `retry` module to use when fetching -packages. +The "factor" config for the `retry` module to use when fetching packages. @@ -566,16 +580,14 @@ mistakes, unnecessary performance degradation, and malicious input. * Allow clobbering non-npm files in global installs. * Allow the `npm version` command to work on an unclean git repository. * Allow deleting the cache folder with `npm cache clean`. -* Allow installing packages that have an `engines` declaration - requiring a different version of npm. -* Allow installing packages that have an `engines` declaration - requiring a different version of `node`, even if `--engine-strict` is - enabled. -* Allow `npm audit fix` to install modules outside your stated - dependency range (including SemVer-major changes). +* Allow installing packages that have an `engines` declaration requiring a + different version of npm. +* Allow installing packages that have an `engines` declaration requiring a + different version of `node`, even if `--engine-strict` is enabled. +* Allow `npm audit fix` to install modules outside your stated dependency + range (including SemVer-major changes). * Allow unpublishing all versions of a published package. -* Allow conflicting peerDependencies to be installed in the root - project. +* Allow conflicting peerDependencies to be installed in the root project. * Implicitly set `--yes` during `npm init`. * Allow clobbering existing values in `npm pkg` * Allow unpublishing of entire packages (not just a single version). @@ -587,17 +599,16 @@ recommended that you do not use this option! #### `foreground-scripts` -* Default: `false` unless when using `npm pack` or `npm publish` where - it defaults to `true` +* Default: `false` unless when using `npm pack` or `npm publish` where it + defaults to `true` * Type: Boolean -Run all build scripts (ie, `preinstall`, `install`, and -`postinstall`) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process. +Run all build scripts (ie, `preinstall`, `install`, and `postinstall`) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process. -Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging. +Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging. @@ -606,8 +617,8 @@ noisier, but can be useful for debugging. * Default: true * Type: Boolean -Format `package-lock.json` or `npm-shrinkwrap.json` as a human -readable file. +Format `package-lock.json` or `npm-shrinkwrap.json` as a human readable +file. @@ -617,8 +628,8 @@ readable file. * Type: Boolean When "true" displays the message at the end of each `npm install` -acknowledging the number of dependencies looking for funding. See -[`npm fund`](/commands/npm-fund) for details. +acknowledging the number of dependencies looking for funding. See [`npm +fund`](/commands/npm-fund) for details. @@ -627,9 +638,8 @@ acknowledging the number of dependencies looking for funding. See * Default: "git" * Type: String -The command to use for git commands. If git is installed on the -computer, but is not in the `PATH`, then set this to the full path to -the git binary. +The command to use for git commands. If git is installed on the computer, +but is not in the `PATH`, then set this to the full path to the git binary. @@ -638,8 +648,8 @@ the git binary. * Default: true * Type: Boolean -Tag the commit when using the `npm version` command. Setting this to -false results in no commit being made at all. +Tag the commit when using the `npm version` command. Setting this to false +results in no commit being made at all. @@ -648,13 +658,12 @@ false results in no commit being made at all. * Default: false * Type: Boolean -Operates in "global" mode, so that packages are installed into the -`prefix` folder instead of the current working directory. See -[folders](/configuring-npm/folders) for more on the differences in -behavior. +Operates in "global" mode, so that packages are installed into the `prefix` +folder instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` @@ -685,9 +694,9 @@ The string that starts all the debugging log output. * Type: null or URL A proxy to use for outgoing https requests. If the `HTTPS_PROXY` or -`https_proxy` or `HTTP_PROXY` or `http_proxy` environment variables -are set, proxy settings will be honored by the underlying -`make-fetch-happen` library. +`https_proxy` or `HTTP_PROXY` or `http_proxy` environment variables are set, +proxy settings will be honored by the underlying `make-fetch-happen` +library. @@ -696,12 +705,12 @@ are set, proxy settings will be honored by the underlying * Default: false * Type: Boolean -If true, npm will not exit with an error code when `run` is invoked -for a script that isn't defined in the `scripts` section of -`package.json`. This option can be used when it's desirable to -optionally run a script when it's present and fail if the script -fails. This is useful, for example, when running scripts that may -only apply for some builds in an otherwise generic CI setup. +If true, npm will not exit with an error code when `run` is invoked for a +script that isn't defined in the `scripts` section of `package.json`. This +option can be used when it's desirable to optionally run a script when it's +present and fail if the script fails. This is useful, for example, when +running scripts that may only apply for some builds in an otherwise generic +CI setup. This value is not exported to the environment for child processes. @@ -712,27 +721,24 @@ This value is not exported to the environment for child processes. If true, npm does not run scripts specified in package.json files. -Note that commands explicitly intended to run a particular script, -such as `npm start`, `npm stop`, `npm restart`, `npm test`, and `npm -run` will still run their intended script if `ignore-scripts` is set, -but they will *not* run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as +`npm start`, `npm stop`, `npm restart`, `npm test`, and `npm run` will still +run their intended script if `ignore-scripts` is set, but they will *not* +run any pre- or post-scripts. #### `include` * Default: -* Type: "prod", "dev", "optional", or "peer" (can be set multiple - times) +* Type: "prod", "dev", "optional", or "peer" (can be set multiple times) -Option that allows for defining which types of dependencies to -install. +Option that allows for defining which types of dependencies to install. This is the inverse of `--omit=`. -Dependency types specified in `--include` will not be omitted, -regardless of the order in which omit/include are specified on the -command-line. +Dependency types specified in `--include` will not be omitted, regardless of +the order in which omit/include are specified on the command-line. @@ -741,8 +747,8 @@ command-line. * Default: false * Type: Boolean -Allow installing "staged" published packages, as defined by [npm RFC -PR #92](https://github.com/npm/rfcs/pull/92). +Allow installing "staged" published packages, as defined by [npm RFC PR +#92](https://github.com/npm/rfcs/pull/92). This is experimental, and not implemented by the npm public registry. @@ -755,10 +761,9 @@ This is experimental, and not implemented by the npm public registry. 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. +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. @@ -767,8 +772,7 @@ This value is not exported to the environment for child processes. * Default: "" * Type: String -The value `npm init` should use by default for the package author's -email. +The value `npm init` should use by default for the package author's email. @@ -777,8 +781,7 @@ email. * Default: "" * Type: String -The value `npm init` should use by default for the package author's -name. +The value `npm init` should use by default for the package author's name. @@ -808,8 +811,8 @@ The value `npm init` should use by default for the package license. A module that will be loaded by the `npm init` command. See the documentation for the -[init-package-json](https://github.com/npm/init-package-json) module -for more information, or [npm init](/commands/npm-init). +[init-package-json](https://github.com/npm/init-package-json) module for +more information, or [npm init](/commands/npm-init). @@ -818,8 +821,7 @@ for more information, or [npm init](/commands/npm-init). * Default: false * Type: Boolean -The value `npm init` should use by default for the package's private -flag. +The value `npm init` should use by default for the package's private flag. @@ -828,8 +830,8 @@ flag. * Default: "commonjs" * Type: String -The value that `npm init` should use by default for the package.json -type field. +The value that `npm init` should use by default for the package.json type +field. @@ -838,8 +840,8 @@ type field. * Default: "1.0.0" * Type: SemVer string -The value that `npm init` should use by default for the package -version number, if not already set in package.json. +The value that `npm init` should use by default for the package version +number, if not already set in package.json. @@ -848,9 +850,9 @@ version number, if not already set in package.json. * Default: false * Type: Boolean -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. +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. @@ -860,12 +862,11 @@ no effect on workspaces. * Type: "hoisted", "nested", "shallow", or "linked" Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted. +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted. @@ -876,8 +877,8 @@ unhoisted. 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`. +* 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. @@ -888,19 +889,18 @@ Not supported by all npm commands. * Default: false * Type: Boolean -Causes npm to completely ignore `peerDependencies` when building a -package tree, as in npm versions 3 through 6. +Causes npm to completely ignore `peerDependencies` when building a package +tree, as in npm versions 3 through 6. -If a package cannot be installed because of overly strict -`peerDependencies` that collide, it provides a way to move forward -resolving the situation. +If a package cannot be installed because of overly strict `peerDependencies` +that collide, it provides a way to move forward resolving the situation. -This differs from `--omit=peer`, in that `--omit=peer` will avoid -unpacking `peerDependencies` on disk, but will still design a tree -such that `peerDependencies` _could_ be unpacked in a correct place. +This differs from `--omit=peer`, in that `--omit=peer` will avoid unpacking +`peerDependencies` on disk, but will still design a tree such that +`peerDependencies` _could_ be unpacked in a correct place. -Use of `legacy-peer-deps` is not recommended, as it will not enforce -the `peerDependencies` contract that meta-dependencies may rely on. +Use of `legacy-peer-deps` is not recommended, as it will not enforce the +`peerDependencies` contract that meta-dependencies may rely on. @@ -909,8 +909,8 @@ the `peerDependencies` contract that meta-dependencies may rely on. * Default: null * Type: null or String -Override libc of native modules to install. Acceptable values are -same as `libc` field of package.json +Override libc of native modules to install. Acceptable values are same as +`libc` field of package.json @@ -919,8 +919,7 @@ same as `libc` field of package.json * Default: false * Type: Boolean -Used with `npm ls`, limiting output to only those packages that are -linked. +Used with `npm ls`, limiting output to only those packages that are linked. @@ -929,26 +928,25 @@ linked. * Default: null * Type: IP Address -The IP address of the local interface to use when making connections -to the npm registry. Must be IPv4 in versions of Node prior to 0.12. +The IP address of the local interface to use when making connections to the +npm registry. Must be IPv4 in versions of Node prior to 0.12. #### `location` -* Default: "user" unless `--global` is passed, which will also set this - value to "global" +* Default: "user" unless `--global` is passed, which will also set this value + to "global" * Type: "global", "user", or "project" 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](/configuring-npm/folders) for more on the differences in -behavior. +When set to "global" mode, packages are installed into the `prefix` folder +instead of the current working directory. See +[folders](/configuring-npm/folders) for more on the differences in behavior. -* packages are installed into the `{prefix}/lib/node_modules` folder, - instead of the current working directory. +* packages are installed into the `{prefix}/lib/node_modules` folder, instead + of the current working directory. * bin files are linked to `{prefix}/bin` * man pages are linked to `{prefix}/share/man` @@ -956,39 +954,36 @@ behavior. #### `lockfile-version` -* Default: Version 3 if no lockfile, auto-converting v1 lockfiles to - v3; otherwise, maintain current lockfile version. +* Default: Version 3 if no lockfile, auto-converting v1 lockfiles to v3; + otherwise, maintain current lockfile version. * Type: null, 1, 2, 3, "1", "2", or "3" Set the lockfile format version to be used in package-lock.json and npm-shrinkwrap-json files. Possible options are: -1: The lockfile version used by npm versions 5 and 6. Lacks some data -that is used during the install, resulting in slower and possibly -less deterministic installs. Prevents lockfile churn when -interoperating with older npm versions. +1: The lockfile version used by npm versions 5 and 6. Lacks some data that +is used during the install, resulting in slower and possibly less +deterministic installs. Prevents lockfile churn when interoperating with +older npm versions. -2: The default lockfile version used by npm version 7 and 8. Includes -both the version 1 lockfile data and version 3 lockfile data, for -maximum determinism and interoperability, at the expense of more -bytes on disk. +2: The default lockfile version used by npm version 7 and 8. Includes both +the version 1 lockfile data and version 3 lockfile data, for maximum +determinism and interoperability, at the expense of more bytes on disk. -3: Only the new lockfile information introduced in npm version 7. -Smaller on disk than lockfile version 2, but not interoperable with -older npm versions. Ideal if all users are on npm version 7 and -higher. +3: Only the new lockfile information introduced in npm version 7. Smaller on +disk than lockfile version 2, but not interoperable with older npm versions. +Ideal if all users are on npm version 7 and higher. #### `loglevel` * Default: "notice" -* Type: "silent", "error", "warn", "notice", "http", "info", "verbose", - or "silly" +* Type: "silent", "error", "warn", "notice", "http", "info", "verbose", or + "silly" -What level of logs to report. All logs are written to a debug log, -with the path to that file printed if the execution of a command -fails. +What level of logs to report. All logs are written to a debug log, with the +path to that file printed if the execution of a command fails. Any logs of a higher level than the setting are shown. The default is "notice". @@ -1002,8 +997,8 @@ See also the `foreground-scripts` config. * Default: A directory named `_logs` inside the cache * Type: null or Path -The location of npm's log directory. See [`npm -logging`](/using-npm/logging) for more information. +The location of npm's log directory. See [`npm logging`](/using-npm/logging) +for more information. @@ -1032,8 +1027,8 @@ Show extended information in `ls`, `search`, and `help-search`. * Default: 15 * Type: Number -The maximum number of connections to use per origin -(protocol/host/port combination). +The maximum number of connections to use per origin (protocol/host/port +combination). @@ -1042,23 +1037,32 @@ The maximum number of connections to use per origin * Default: "%s" * Type: String -Commit message which is used by `npm version` when creating version -commit. +Commit message which is used by `npm version` when creating version commit. Any "%s" in the message will be replaced with the version number. +#### `name` + +* Default: null +* Type: null or String + +When creating a Granular Access Token with `npm token create`, this sets the +name/description for the token. + + + #### `node-gyp` * Default: The path to the node-gyp bin that ships with npm * Type: Path -This is the location of the "node-gyp" bin. By default it uses one -that ships with npm itself. +This is the location of the "node-gyp" bin. By default it uses one that +ships with npm itself. -You can use this config to specify your own "node-gyp" to run when it -is required to build a package. +You can use this config to specify your own "node-gyp" to run when it is +required to build a package. @@ -1068,8 +1072,8 @@ is required to build a package. * Type: null or String Options to pass through to Node.js via the `NODE_OPTIONS` environment -variable. This does not impact how npm itself is executed but it does -impact how lifecycle scripts are called. +variable. This does not impact how npm itself is executed but it does impact +how lifecycle scripts are called. @@ -1089,9 +1093,8 @@ Also accepts a comma-delimited string. * Default: false * Type: Boolean -Force offline mode: no network requests will be done during install. -To allow the CLI to fill in missing cache data, see -`--prefer-offline`. +Force offline mode: no network requests will be done during install. To +allow the CLI to fill in missing cache data, see `--prefer-offline`. @@ -1107,12 +1110,11 @@ 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 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. +If the resulting omit list includes `'dev'`, then the `NODE_ENV` environment +variable will be set to `'production'` for all lifecycle scripts. @@ -1121,10 +1123,32 @@ scripts. * Default: false * Type: Boolean -This option causes npm to create lock files without a `resolved` key -for registry dependencies. Subsequent installs will need to resolve -tarball endpoints with the configured registry, likely resulting in a -longer install time. +This option causes npm to create lock files without a `resolved` key for +registry dependencies. Subsequent installs will need to resolve tarball +endpoints with the configured registry, likely resulting in a longer install +time. + + + +#### `orgs` + +* Default: null +* Type: null or String (can be set multiple times) + +When creating a Granular Access Token with `npm token create`, this limits +the token access to specific organizations. Provide a comma-separated list +of organization names. + + + +#### `orgs-permission` + +* Default: null +* Type: null, "read-only", "read-write", or "no-access" + +When creating a Granular Access Token with `npm token create`, sets the +permission level for organizations. Options are "read-only", "read-write", +or "no-access". @@ -1133,8 +1157,8 @@ longer install time. * Default: null * Type: null or String -Override OS of native modules to install. Acceptable values are same -as `os` field of package.json, which comes from `process.platform`. +Override OS of native modules to install. Acceptable values are same as `os` +field of package.json, which comes from `process.platform`. @@ -1143,12 +1167,11 @@ as `os` field of package.json, which comes from `process.platform`. * Default: null * Type: null or String -This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with `npm -access`. +This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with `npm access`. -If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one. +If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one. @@ -1166,8 +1189,7 @@ Directory in which `npm pack` will save tarballs. * Default: * Type: String (can be set multiple times) -The package or packages to install for [`npm -exec`](/commands/npm-exec) +The package or packages to install for [`npm exec`](/commands/npm-exec) @@ -1176,9 +1198,8 @@ exec`](/commands/npm-exec) * Default: true * Type: Boolean -If set to false, then ignore `package-lock.json` files when -installing. This will also prevent _writing_ `package-lock.json` if -`save` is true. +If set to false, then ignore `package-lock.json` files when installing. This +will also prevent _writing_ `package-lock.json` if `save` is true. @@ -1187,15 +1208,46 @@ installing. This will also prevent _writing_ `package-lock.json` if * Default: false * Type: Boolean -If set to true, the current operation will only use the -`package-lock.json`, ignoring `node_modules`. +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`. +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`. + + + +#### `packages` + +* Default: +* Type: null or String (can be set multiple times) + +When creating a Granular Access Token with `npm token create`, this limits +the token access to specific packages. Provide a comma-separated list of +package names. + + + +#### `packages-all` + +* Default: false +* Type: Boolean + +When creating a Granular Access Token with `npm token create`, grants the +token access to all packages instead of limiting to specific packages. + + + +#### `packages-and-scopes-permission` + +* Default: null +* Type: null, "read-only", "read-write", or "no-access" + +When creating a Granular Access Token with `npm token create`, sets the +permission level for packages and scopes. Options are "read-only", +"read-write", or "no-access". @@ -1204,8 +1256,18 @@ by the `package-lock.json`, rather than the contents of * Default: false * Type: Boolean -Output parseable results from commands that write to standard output. -For `npm search`, this will be tab-separated table format. +Output parseable results from commands that write to standard output. For +`npm search`, this will be tab-separated table format. + + + +#### `password` + +* Default: null +* Type: null or String + +Password for authentication. Can be provided via command line when creating +tokens, though it's generally safer to be prompted for it. @@ -1214,8 +1276,8 @@ For `npm search`, this will be tab-separated table format. * Default: false * Type: Boolean -Prefer to deduplicate packages if possible, rather than choosing a -newer version of a dependency. +Prefer to deduplicate packages if possible, rather than choosing a newer +version of a dependency. @@ -1224,9 +1286,9 @@ newer version of a dependency. * Default: false * Type: Boolean -If true, staleness checks for cached data will be bypassed, but -missing data will be requested from the server. To force full offline -mode, use `--offline`. +If true, staleness checks for cached data will be bypassed, but missing data +will be requested from the server. To force full offline mode, use +`--offline`. @@ -1235,20 +1297,20 @@ mode, use `--offline`. * Default: false * Type: Boolean -If true, staleness checks for cached data will be forced, making the -CLI look for updates immediately even for fresh package data. +If true, staleness checks for cached data will be forced, making the CLI +look for updates immediately even for fresh package data. #### `prefix` -* Default: In global mode, the folder where the node executable is - installed. Otherwise, the nearest parent folder containing either a - package.json file or a node_modules folder. +* Default: In global mode, the folder where the node executable is installed. + Otherwise, the nearest parent folder containing either a package.json file + or a node_modules folder. * Type: Path -The location to install global items. If set on the command line, -then it forces non-global commands to run in the specified folder. +The location to install global items. If set on the command line, then it +forces non-global commands to run in the specified folder. @@ -1257,20 +1319,19 @@ then it forces non-global commands to run in the specified folder. * Default: "" * Type: String -The "prerelease identifier" to use as a prefix for the "prerelease" -part of a semver. Like the `rc` in `1.2.0-rc.8`. +The "prerelease identifier" to use as a prefix for the "prerelease" part of +a semver. Like the `rc` in `1.2.0-rc.8`. #### `progress` -* Default: `true` when not in CI and both stderr and stdout are TTYs - and not in a dumb terminal +* Default: `true` when not in CI and both stderr and stdout are TTYs and not + in a dumb terminal * Type: Boolean -When set to `true`, npm will display a progress bar during time -intensive operations, if `process.stderr` and `process.stdout` are a -TTY. +When set to `true`, npm will display a progress bar during time intensive +operations, if `process.stderr` and `process.stdout` are a TTY. Set to `false` to suppress the progress bar. @@ -1281,8 +1342,8 @@ Set to `false` to suppress the progress bar. * Default: false * Type: Boolean -When publishing from a supported cloud CI/CD system, the package will -be publicly linked to where it was built and published from. +When publishing from a supported cloud CI/CD system, the package will be +publicly linked to where it was built and published from. This config cannot be used with: `provenance-file` @@ -1291,8 +1352,7 @@ This config cannot be used with: `provenance-file` * Default: null * Type: Path -When publishing, the provenance bundle at the given path will be -used. +When publishing, the provenance bundle at the given path will be used. This config cannot be used with: `provenance` @@ -1302,8 +1362,8 @@ This config cannot be used with: `provenance` * Type: null, false, or URL A proxy to use for outgoing http requests. If the `HTTP_PROXY` or -`http_proxy` environment variables are set, proxy settings will be -honored by the underlying `request` library. +`http_proxy` environment variables are set, proxy settings will be honored +by the underlying `request` library. @@ -1312,8 +1372,8 @@ honored by the underlying `request` library. * Default: false * Type: Boolean -This is used to mark a token as unable to publish when configuring -limited access tokens with the `npm token create` command. +This is used to mark a token as unable to publish when configuring limited +access tokens with the `npm token create` command. @@ -1340,13 +1400,13 @@ The base URL of the npm registry. * Default: "npmjs" * Type: "npmjs", "never", "always", or String -Defines behavior for replacing the registry host in a lockfile with -the configured registry. +Defines behavior for replacing the registry host in a lockfile with the +configured registry. The default behavior is to replace package dist URLs from the default -registry (https://registry.npmjs.org) to the configured registry. If -set to "never", then use the registry value. If set to "always", then -replace the registry host with the configured host every time. +registry (https://registry.npmjs.org) to the configured registry. If set to +"never", then use the registry value. If set to "always", then replace the +registry host with the configured host every time. You may also specify a bare hostname (e.g., "registry.npmjs.org"). @@ -1354,8 +1414,7 @@ You may also specify a bare hostname (e.g., "registry.npmjs.org"). #### `save` -* Default: `true` unless when using `npm update` where it defaults to - `false` +* Default: `true` unless when using `npm update` where it defaults to `false` * Type: Boolean Save installed packages to a `package.json` file as dependencies. @@ -1376,8 +1435,7 @@ If a package would be saved at install time by the use of `--save`, `--save-dev`, or `--save-optional`, then also put it in the `bundleDependencies` list. -Ignored if `--save-peer` is set, since peerDependencies cannot be -bundled. +Ignored if `--save-peer` is set, since peerDependencies cannot be bundled. @@ -1388,16 +1446,15 @@ bundled. Save installed packages to a package.json file as `devDependencies`. -This config cannot be used with: `save-optional`, `save-peer`, -`save-prod` +This config cannot be used with: `save-optional`, `save-peer`, `save-prod` #### `save-exact` * Default: false * Type: Boolean -Dependencies saved to package.json will be configured with an exact -version rather than using npm's default semver range operator. +Dependencies saved to package.json will be configured with an exact version +rather than using npm's default semver range operator. @@ -1406,8 +1463,7 @@ version rather than using npm's default semver range operator. * Default: false * Type: Boolean -Save installed packages to a package.json file as -`optionalDependencies`. +Save installed packages to a package.json file as `optionalDependencies`. This config cannot be used with: `save-dev`, `save-peer`, `save-prod` @@ -1418,21 +1474,20 @@ This config cannot be used with: `save-dev`, `save-peer`, `save-prod` Save installed packages to a package.json file as `peerDependencies` -This config cannot be used with: `save-dev`, `save-optional`, -`save-prod` +This config cannot be used with: `save-dev`, `save-optional`, `save-prod` #### `save-prefix` * Default: "^" * Type: String -Configure how versions of packages installed to a package.json file -via `--save` or `--save-dev` get prefixed. +Configure how versions of packages installed to a package.json file via +`--save` or `--save-dev` get prefixed. -For example if a package has version `1.2.3`, by default its version -is set to `^1.2.3` which allows minor upgrades for that package, but -after `npm config set save-prefix='~'` it would be set to `~1.2.3` -which only allows patch upgrades. +For example if a package has version `1.2.3`, by default its version is set +to `^1.2.3` which allows minor upgrades for that package, but after `npm +config set save-prefix='~'` it would be set to `~1.2.3` which only allows +patch upgrades. @@ -1441,16 +1496,14 @@ which only allows patch upgrades. * Default: false * Type: Boolean -Save installed packages into `dependencies` specifically. This is -useful if a package already exists in `devDependencies` or -`optionalDependencies`, but you want to move it to be a non-optional -production dependency. +Save installed packages into `dependencies` specifically. This is useful if +a package already exists in `devDependencies` or `optionalDependencies`, but +you want to move it to be a non-optional production dependency. -This is the default behavior if `--save` is true, and neither -`--save-dev` or `--save-optional` are true. +This is the default behavior if `--save` is true, and neither `--save-dev` +or `--save-optional` are true. -This config cannot be used with: `save-dev`, `save-optional`, -`save-peer` +This config cannot be used with: `save-dev`, `save-optional`, `save-peer` #### `sbom-format` @@ -1466,9 +1519,9 @@ SBOM format to use when generating SBOMs. * Default: "library" * Type: "library", "application", or "framework" -The type of package described by the generated SBOM. For SPDX, this -is the value for the `primaryPackagePurpose` field. For CycloneDX, -this is the value for the `type` field. +The type of package described by the generated SBOM. For SPDX, this is the +value for the `primaryPackagePurpose` field. For CycloneDX, this is the +value for the `type` field. @@ -1503,13 +1556,24 @@ npm init --scope=@foo --yes +#### `scopes` + +* Default: null +* Type: null or String (can be set multiple times) + +When creating a Granular Access Token with `npm token create`, this limits +the token access to specific scopes. Provide a comma-separated list of scope +names (with or without @ prefix). + + + #### `script-shell` * Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows * Type: null or String -The shell to use for scripts run with the `npm exec`, `npm run` and -`npm init ` commands. +The shell to use for scripts run with the `npm exec`, `npm run` and `npm +init ` commands. @@ -1527,8 +1591,8 @@ Space-separated options that limit the results from search. * Default: 20 * Type: Number -Number of items to limit search results to. Will not apply at all to -legacy searches. +Number of items to limit search results to. Will not apply at all to legacy +searches. @@ -1546,15 +1610,15 @@ Space-separated options that are always passed to search. * Default: 900 * Type: Number -The age of the cache, in seconds, before another registry request is -made if using legacy search endpoint. +The age of the cache, in seconds, before another registry request is made if +using legacy search endpoint. #### `shell` -* Default: SHELL environment variable, or "bash" on Posix, or "cmd.exe" - on Windows +* Default: SHELL environment variable, or "bash" on Posix, or "cmd.exe" on + Windows * Type: String The shell to run for the `npm explore` command. @@ -1566,11 +1630,11 @@ The shell to run for the `npm explore` command. * Default: false * Type: Boolean -If set to true, then the `npm version` command will commit the new -package version using `-S` to add a signature. +If set to true, then the `npm version` command will commit the new package +version using `-S` to add a signature. -Note that git requires you to have set up GPG keys in your git -configs for this to work properly. +Note that git requires you to have set up GPG keys in your git configs for +this to work properly. @@ -1579,11 +1643,11 @@ configs for this to work properly. * Default: false * Type: Boolean -If set to true, then the `npm version` command will tag the version -using `-s` to add a signature. +If set to true, then the `npm version` command will tag the version using +`-s` to add a signature. -Note that git requires you to have set up GPG keys in your git -configs for this to work properly. +Note that git requires you to have set up GPG keys in your git configs for +this to work properly. @@ -1593,19 +1657,18 @@ configs for this to work properly. * Type: Boolean If set to `true`, and `--legacy-peer-deps` is not set, then _any_ -conflicting `peerDependencies` will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships. +conflicting `peerDependencies` will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships. -By default, conflicting `peerDependencies` deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -`peerDependencies` object. +By default, conflicting `peerDependencies` deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's `peerDependencies` object. -When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If `--strict-peer-deps` is -set, then this warning is treated as a failure. +When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If `--strict-peer-deps` is set, then +this warning is treated as a failure. @@ -1614,8 +1677,8 @@ set, then this warning is treated as a failure. * Default: true * Type: Boolean -Whether or not to do SSL key validation when making requests to the -registry via https. +Whether or not to do SSL key validation when making requests to the registry +via https. See also the `ca` config. @@ -1626,17 +1689,17 @@ See also the `ca` config. * Default: "latest" * Type: String -If you ask npm to install a package and don't tell it a specific -version, then it will install the specified tag. +If you ask npm to install a package and don't tell it a specific version, +then it will install the specified tag. -It is the tag added to the package@version specified in the `npm -dist-tag add` command, if no explicit tag is given. +It is the tag added to the package@version specified in the `npm dist-tag +add` command, if no explicit tag is given. -When used by the `npm diff` command, this is the tag used to fetch -the tarball that will be compared with the local files by default. +When used by the `npm diff` command, this is the tag used to fetch the +tarball that will be compared with the local files by default. -If used in the `npm publish` command, this is the tag that will be -added to the package submitted to the registry. +If used in the `npm publish` command, this is the tag that will be added to +the package submitted to the registry. @@ -1645,14 +1708,13 @@ added to the package submitted to the registry. * Default: "v" * Type: String -If set, alters the prefix used when tagging a new version when -performing a version increment using `npm version`. To remove the -prefix altogether, set it to the empty string: `""`. +If set, alters the prefix used when tagging a new version when performing a +version increment using `npm version`. To remove the prefix altogether, set +it to the empty string: `""`. -Because other tools may rely on the convention that npm version tags -look like `v1.0.0`, _only use this property if it is absolutely -necessary_. In particular, use care when overriding this setting for -public packages. +Because other tools may rely on the convention that npm version tags look +like `v1.0.0`, _only use this property if it is absolutely necessary_. In +particular, use care when overriding this setting for public packages. @@ -1661,14 +1723,23 @@ public packages. * Default: false * Type: Boolean -If true, writes timing information to a process specific json file in -the cache or `logs-dir`. The file name ends with `-timing.json`. +If true, writes timing information to a process specific json file in the +cache or `logs-dir`. The file name ends with `-timing.json`. + +You can quickly view it with this [json](https://npm.im/json) command line: +`cat ~/.npm/_logs/*-timing.json | npm exec -- json -g`. + +Timing information will also be reported in the terminal. To suppress this +while still writing the timing file, use `--silent`. + + -You can quickly view it with this [json](https://npm.im/json) command -line: `cat ~/.npm/_logs/*-timing.json | npm exec -- json -g`. +#### `token-description` -Timing information will also be reported in the terminal. To suppress -this while still writing the timing file, use `--silent`. +* Default: null +* Type: null or String + +Description text for the token when using `npm token create`. @@ -1677,32 +1748,31 @@ this while still writing the timing file, use `--silent`. * Default: 0 * Type: Octal numeric string in range 0000..0777 (0..511) -The "umask" value to use when setting the file creation mode on files -and folders. +The "umask" value to use when setting the file creation mode on files and +folders. -Folders and executables are given a mode which is `0o777` masked -against this value. Other files are given a mode which is `0o666` -masked against this value. +Folders and executables are given a mode which is `0o777` masked against +this value. Other files are given a mode which is `0o666` masked against +this value. -Note that the underlying system will _also_ apply its own umask value -to files and folders that are created, and npm does not circumvent -this, but rather adds the `--umask` config to it. +Note that the underlying system will _also_ apply its own umask value to +files and folders that are created, and npm does not circumvent this, but +rather adds the `--umask` config to it. -Thus, the effective default umask value on most POSIX systems is -0o22, meaning that folders and executables are created with a mode of -0o755 and other files are created with a mode of 0o644. +Thus, the effective default umask value on most POSIX systems is 0o22, +meaning that folders and executables are created with a mode of 0o755 and +other files are created with a mode of 0o644. #### `unicode` -* Default: false on windows, true on mac/unix systems with a unicode - locale, as defined by the `LC_ALL`, `LC_CTYPE`, or `LANG` environment - variables. +* Default: false on windows, true on mac/unix systems with a unicode locale, + as defined by the `LC_ALL`, `LC_CTYPE`, or `LANG` environment variables. * Type: Boolean -When set to true, npm uses unicode characters in the tree output. -When false, it uses ascii characters instead of unicode glyphs. +When set to true, npm uses unicode characters in the tree output. When +false, it uses ascii characters instead of unicode glyphs. @@ -1711,8 +1781,8 @@ When false, it uses ascii characters instead of unicode glyphs. * Default: true * Type: Boolean -Set to false to suppress the update notification when using an older -version of npm than the latest. +Set to false to suppress the update notification when using an older version +of npm than the latest. @@ -1731,17 +1801,17 @@ Show short usage output about the command specified. workspaces/{workspaces} {ci}" * Type: String -Sets the User-Agent request header. The following fields are replaced -with their actual counterparts: +Sets the User-Agent request header. The following fields are replaced with +their actual counterparts: * `{npm-version}` - The npm version in use * `{node-version}` - The Node.js version in use * `{platform}` - The value of `process.platform` * `{arch}` - The value of `process.arch` -* `{workspaces}` - Set to `true` if the `workspaces` or `workspace` - options are set. -* `{ci}` - The value of the `ci-name` config, if set, prefixed with - `ci/`, or an empty string if `ci-name` is empty. +* `{workspaces}` - Set to `true` if the `workspaces` or `workspace` options + are set. +* `{ci}` - The value of the `ci-name` config, if set, prefixed with `ci/`, or + an empty string if `ci-name` is empty. @@ -1752,9 +1822,9 @@ with their actual counterparts: The location of user-level configuration settings. -This may be overridden by the `npm_config_userconfig` environment -variable or the `--userconfig` command line option, but may _not_ be -overridden by settings in the `globalconfig` file. +This may be overridden by the `npm_config_userconfig` environment variable +or the `--userconfig` command line option, but may _not_ be overridden by +settings in the `globalconfig` file. @@ -1774,9 +1844,9 @@ Only relevant when specified explicitly on the command line. * Default: false * Type: Boolean -If true, output the npm version as well as node's `process.versions` -map and the version in the current working directory's `package.json` -file if one exists, and exit successfully. +If true, output the npm version as well as node's `process.versions` map and +the version in the current working directory's `package.json` file if one +exists, and exit successfully. Only relevant when specified explicitly on the command line. @@ -1789,8 +1859,7 @@ Only relevant when specified explicitly on the command line. The program to use to view help content. -Set to `"browser"` to view html help content in the default web -browser. +Set to `"browser"` to view html help content in the default web browser. @@ -1799,8 +1868,7 @@ browser. * Default: null * Type: null or Number -If there are multiple funding sources, which 1-indexed source URL to -open. +If there are multiple funding sources, which 1-indexed source URL to open. @@ -1809,9 +1877,9 @@ open. * Default: * Type: String (can be set multiple times) -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. +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: @@ -1820,9 +1888,9 @@ Valid values for the `workspace` config are either: * Path to a parent workspace directory (will result in selecting all workspaces within that folder) -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. +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. @@ -1834,14 +1902,13 @@ This value is not exported to the environment for child processes. 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: +Explicitly setting this to false will cause commands like `install` to +ignore workspaces altogether. When not set explicitly: -- Commands that operate on the `node_modules` tree (install, update, -etc.) will link workspaces into the `node_modules` folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, _unless_ one or more workspaces are specified in the -`workspace` config. +- Commands that operate on the `node_modules` tree (install, update, etc.) +will link workspaces into the `node_modules` folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +_unless_ one or more workspaces are specified in the `workspace` config. This value is not exported to the environment for child processes. @@ -1850,9 +1917,8 @@ This value is not exported to the environment for child processes. * Default: true * Type: Boolean -If set to true, the npm cli will run an update after operations that -may possibly change the workspaces installed to the `node_modules` -folder. +If set to true, the npm cli will run an update after operations that may +possibly change the workspaces installed to the `node_modules` folder. @@ -1872,8 +1938,7 @@ command line. * Type: null, "dev", or "development" * DEPRECATED: Please use --include=dev instead. -When set to `dev` or `development`, this is an alias for -`--include=dev`. +When set to `dev` or `development`, this is an alias for `--include=dev`. @@ -1881,8 +1946,7 @@ When set to `dev` or `development`, this is an alias for * Default: Infinity * Type: Number -* DEPRECATED: This option has been deprecated in favor of - `--prefer-online` +* DEPRECATED: This option has been deprecated in favor of `--prefer-online` `--cache-max=0` is an alias for `--prefer-online` @@ -1892,8 +1956,7 @@ When set to `dev` or `development`, this is an alias for * Default: 0 * Type: Number -* DEPRECATED: This option has been deprecated in favor of - `--prefer-offline`. +* DEPRECATED: This option has been deprecated in favor of `--prefer-offline`. `--cache-min=9999 (or bigger)` is an alias for `--prefer-offline`. @@ -1904,13 +1967,13 @@ When set to `dev` or `development`, this is an alias for * Default: null * Type: null or String * DEPRECATED: `key` and `cert` are no longer used for most registry - operations. Use registry scoped `keyfile` and `certfile` instead. - Example: //other-registry.tld/:keyfile=/path/to/key.pem + operations. Use registry scoped `keyfile` and `certfile` instead. Example: + //other-registry.tld/:keyfile=/path/to/key.pem //other-registry.tld/:certfile=/path/to/cert.crt -A client certificate to pass when accessing the registry. Values -should be in PEM format (Windows calls it "Base-64 encoded X.509 -(.CER)") with newlines replaced by the string "\n". For example: +A client certificate to pass when accessing the registry. Values should be +in PEM format (Windows calls it "Base-64 encoded X.509 (.CER)") with +newlines replaced by the string "\n". For example: ```ini cert="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----" @@ -1939,8 +2002,8 @@ Alias for `--include=dev`. * DEPRECATED: This option has been deprecated in favor of `--install-strategy=shallow` -Only install direct dependencies in the top level `node_modules`, but -hoist on deeper dependencies. Sets `--install-strategy=shallow`. +Only install direct dependencies in the top level `node_modules`, but hoist +on deeper dependencies. Sets `--install-strategy=shallow`. @@ -2009,20 +2072,19 @@ Alias for `--init-version` * Default: null * Type: null or String * DEPRECATED: `key` and `cert` are no longer used for most registry - operations. Use registry scoped `keyfile` and `certfile` instead. - Example: //other-registry.tld/:keyfile=/path/to/key.pem + operations. Use registry scoped `keyfile` and `certfile` instead. Example: + //other-registry.tld/:keyfile=/path/to/key.pem //other-registry.tld/:certfile=/path/to/cert.crt -A client key to pass when accessing the registry. Values should be in -PEM format with newlines replaced by the string "\n". For example: +A client key to pass when accessing the registry. Values should be in PEM +format with newlines replaced by the string "\n". For example: ```ini key="-----BEGIN PRIVATE KEY-----\nXXXX\nXXXX\n-----END PRIVATE KEY-----" ``` -It is _not_ the path to a key file, though you can set a -registry-scoped "keyfile" path like -"//other-registry.tld/:keyfile=/path/to/key.pem". +It is _not_ the path to a key file, though you can set a registry-scoped +"keyfile" path like "//other-registry.tld/:keyfile=/path/to/key.pem". @@ -2033,10 +2095,10 @@ registry-scoped "keyfile" path like * DEPRECATED: This option has been deprecated in favor of `--install-strategy=nested` -Instead of hoisting package installs in `node_modules`, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets `--install-strategy=nested`. +Instead of hoisting package installs in `node_modules`, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets `--install-strategy=nested`. @@ -2044,11 +2106,9 @@ there is no de-duplicating. Sets `--install-strategy=nested`. * Default: null * Type: null, "prod", or "production" -* DEPRECATED: Use `--omit=dev` to omit dev dependencies from the - install. +* DEPRECATED: Use `--omit=dev` to omit dev dependencies from the install. -When set to `prod` or `production`, this is an alias for -`--omit=dev`. +When set to `prod` or `production`, this is an alias for `--omit=dev`. @@ -2056,8 +2116,8 @@ When set to `prod` or `production`, this is an alias for * Default: null * Type: null or Boolean -* DEPRECATED: Use `--omit=optional` to exclude optional dependencies, - or `--include=optional` to include them. +* DEPRECATED: Use `--omit=optional` to exclude optional dependencies, or + `--include=optional` to include them. Default value does install optional deps unless otherwise omitted. diff --git a/deps/npm/docs/output/commands/npm-access.html b/deps/npm/docs/output/commands/npm-access.html index 69d3f84ca3cfab..28c36edb9c4bdf 100644 --- a/deps/npm/docs/output/commands/npm-access.html +++ b/deps/npm/docs/output/commands/npm-access.html @@ -141,9 +141,9 @@
-

+

npm-access - @11.6.2 + @11.6.3

Set access level on published packages
@@ -192,8 +192,8 @@

json

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.
  • +
  • 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.

otp

@@ -201,10 +201,10 @@

otp

  • Default: null
  • Type: null or String
  • -

    This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with npm access.

    -

    If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one.

    +

    This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with npm access.

    +

    If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one.

    registry

    • Default: "https://registry.npmjs.org/"
    • diff --git a/deps/npm/docs/output/commands/npm-adduser.html b/deps/npm/docs/output/commands/npm-adduser.html index 161be0cbf13350..35903fb603a650 100644 --- a/deps/npm/docs/output/commands/npm-adduser.html +++ b/deps/npm/docs/output/commands/npm-adduser.html @@ -141,9 +141,9 @@
      -

      +

      npm-adduser - @11.6.2 + @11.6.3

      Add a registry user account
      @@ -198,8 +198,8 @@

      auth-type

    • Default: "web"
    • Type: "legacy" or "web"
    -

    What authentication strategy to use with login. Note that if an -otp config is given, this value will always be set to legacy.

    +

    What authentication strategy to use with login. Note that if an otp +config is given, this value will always be set to legacy.

    See Also

    • npm registry
    • diff --git a/deps/npm/docs/output/commands/npm-audit.html b/deps/npm/docs/output/commands/npm-audit.html index c98c2a9720c770..6d530d7efb7429 100644 --- a/deps/npm/docs/output/commands/npm-audit.html +++ b/deps/npm/docs/output/commands/npm-audit.html @@ -141,9 +141,9 @@
      -

      +

      npm-audit - @11.6.2 + @11.6.3

      Run a security audit
      @@ -283,20 +283,19 @@

      audit-level

    • Default: null
    • Type: null, "info", "low", "moderate", "high", "critical", or "none"
    -

    The minimum level of vulnerability for npm audit to exit with a -non-zero exit code.

    +

    The minimum level of vulnerability for npm audit to exit with a non-zero +exit code.

    dry-run

    • Default: false
    • Type: 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.

    +

    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.

    force

    • Default: false
    • @@ -308,16 +307,14 @@

      force

    • Allow clobbering non-npm files in global installs.
    • Allow the npm version command to work on an unclean git repository.
    • Allow deleting the cache folder with npm cache clean.
    • -
    • Allow installing packages that have an engines declaration -requiring a different version of npm.
    • -
    • Allow installing packages that have an engines declaration -requiring a different version of node, even if --engine-strict is -enabled.
    • -
    • Allow npm audit fix to install modules outside your stated -dependency range (including SemVer-major changes).
    • +
    • Allow installing packages that have an engines declaration requiring a +different version of npm.
    • +
    • Allow installing packages that have an engines declaration requiring a +different version of node, even if --engine-strict is enabled.
    • +
    • Allow npm audit fix to install modules outside your stated dependency +range (including SemVer-major changes).
    • Allow unpublishing all versions of a published package.
    • -
    • Allow conflicting peerDependencies to be installed in the root -project.
    • +
    • Allow conflicting peerDependencies to be installed in the root project.
    • Implicitly set --yes during npm init.
    • Allow clobbering existing values in npm pkg
    • Allow unpublishing of entire packages (not just a single version).
    • @@ -331,8 +328,8 @@

      json

    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.
    • +
    • 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.

    package-lock-only

    @@ -340,21 +337,19 @@

    package-lock-only

  • Default: false
  • Type: Boolean
  • -

    If set to true, the current operation will only use the -package-lock.json, ignoring node_modules.

    +

    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.

    +

    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.

    package-lock

    • Default: true
    • Type: Boolean
    -

    If set to false, then ignore package-lock.json files when -installing. This will also prevent writing package-lock.json if -save is true.

    +

    If set to false, then ignore package-lock.json files when installing. This +will also prevent writing package-lock.json if save is true.

    omit

    • Default: 'dev' if the NODE_ENV environment variable is set to @@ -365,52 +360,48 @@

      omit

      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.

      +

      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

      • Default:
      • -
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple -times)
      • +
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple times)
      -

      Option that allows for defining which types of dependencies to -install.

      +

      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.

      +

      Dependency types specified in --include will not be omitted, regardless of +the order in which omit/include are specified on the command-line.

      foreground-scripts

        -
      • Default: false unless when using npm pack or npm publish where -it defaults to true
      • +
      • Default: false unless when using npm pack or npm publish where it +defaults to true
      • Type: Boolean
      -

      Run all build scripts (ie, preinstall, install, and -postinstall) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process.

      -

      Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging.

      +

      Run all build scripts (ie, preinstall, install, and postinstall) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process.

      +

      Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging.

      ignore-scripts

      • Default: false
      • Type: Boolean

      If true, npm does not run scripts specified in package.json files.

      -

      Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

      +

      Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

      workspace

      • Default:
      • Type: String (can be set multiple times)
      -

      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.

      +

      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:

      • Workspace names
      • @@ -418,9 +409,9 @@

        workspace

      • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
      -

      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.

      +

      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

        @@ -429,14 +420,13 @@

        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:

      +

      Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

        -
      • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
      • +
      • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

      This value is not exported to the environment for child processes.

      include-workspace-root

      @@ -445,19 +435,18 @@

      include-workspace-root

    • Type: Boolean

    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.

    +

    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.

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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 install
    • diff --git a/deps/npm/docs/output/commands/npm-bugs.html b/deps/npm/docs/output/commands/npm-bugs.html index a1464fa983236a..8950a7ccedb0d5 100644 --- a/deps/npm/docs/output/commands/npm-bugs.html +++ b/deps/npm/docs/output/commands/npm-bugs.html @@ -141,9 +141,9 @@
      -

      +

      npm-bugs - @11.6.2 + @11.6.3

      Report bugs for a package in a web browser
      @@ -182,9 +182,9 @@

      workspace

    • Default:
    • Type: String (can be set multiple times)
    -

    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.

    +

    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:

    • Workspace names
    • @@ -192,9 +192,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -203,14 +203,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    include-workspace-root

    @@ -219,10 +218,9 @@

    include-workspace-root

  • Type: Boolean
  • 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.

    +

    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.

    See Also

      diff --git a/deps/npm/docs/output/commands/npm-cache.html b/deps/npm/docs/output/commands/npm-cache.html index 312cff4a1bce7a..78e1628c1bb81e 100644 --- a/deps/npm/docs/output/commands/npm-cache.html +++ b/deps/npm/docs/output/commands/npm-cache.html @@ -141,9 +141,9 @@
      -

      +

      npm-cache - @11.6.2 + @11.6.3

      Manipulates packages cache
      diff --git a/deps/npm/docs/output/commands/npm-ci.html b/deps/npm/docs/output/commands/npm-ci.html index 95fea4d7bb9bcb..17aaf6140a1c6e 100644 --- a/deps/npm/docs/output/commands/npm-ci.html +++ b/deps/npm/docs/output/commands/npm-ci.html @@ -141,9 +141,9 @@
      -

      +

      npm-ci - @11.6.2 + @11.6.3

      Clean install a project
      @@ -203,12 +203,11 @@

      install-strategy

    • Type: "hoisted", "nested", "shallow", or "linked"

    Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted.

    +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted.

    legacy-bundling

    • Default: false
    • @@ -216,10 +215,10 @@

      legacy-bundling

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=nested
    -

    Instead of hoisting package installs in node_modules, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets --install-strategy=nested.

    +

    Instead of hoisting package installs in node_modules, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets --install-strategy=nested.

    global-style

    • Default: false
    • @@ -227,8 +226,8 @@

      global-style

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=shallow
    -

    Only install direct dependencies in the top level node_modules, but -hoist on deeper dependencies. Sets --install-strategy=shallow.

    +

    Only install direct dependencies in the top level node_modules, but hoist +on deeper dependencies. Sets --install-strategy=shallow.

    omit

    • Default: 'dev' if the NODE_ENV environment variable is set to @@ -239,70 +238,65 @@

      omit

      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.

      +

      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

      • Default:
      • -
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple -times)
      • +
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple times)
      -

      Option that allows for defining which types of dependencies to -install.

      +

      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.

      +

      Dependency types specified in --include will not be omitted, regardless of +the order in which omit/include are specified on the command-line.

      strict-peer-deps

      • Default: false
      • Type: Boolean

      If set to true, and --legacy-peer-deps is not set, then any -conflicting peerDependencies will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships.

      -

      By default, conflicting peerDependencies deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -peerDependencies object.

      -

      When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If --strict-peer-deps is -set, then this warning is treated as a failure.

      +conflicting peerDependencies will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships.

      +

      By default, conflicting peerDependencies deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's peerDependencies object.

      +

      When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If --strict-peer-deps is set, then +this warning is treated as a failure.

      foreground-scripts

        -
      • Default: false unless when using npm pack or npm publish where -it defaults to true
      • +
      • Default: false unless when using npm pack or npm publish where it +defaults to true
      • Type: Boolean
      -

      Run all build scripts (ie, preinstall, install, and -postinstall) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process.

      -

      Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging.

      +

      Run all build scripts (ie, preinstall, install, and postinstall) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process.

      +

      Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging.

      ignore-scripts

      • Default: false
      • Type: Boolean

      If true, npm does not run scripts specified in package.json files.

      -

      Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

      +

      Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

      audit

      • Default: true
      • Type: Boolean
      -

      When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for npm audit for details -on what is submitted.

      +

      When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for npm audit for details on what is +submitted.

      • Default: true
      • @@ -310,37 +304,35 @@

      Tells npm to create symlinks (or .cmd shims on Windows) for package executables.

      -

      Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems.

      +

      Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems.

      fund

      • Default: true
      • Type: Boolean

      When "true" displays the message at the end of each npm install -acknowledging the number of dependencies looking for funding. See -npm fund for details.

      +acknowledging the number of dependencies looking for funding. See npm fund for details.

      dry-run

      • Default: false
      • Type: 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.

      +

      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.

      workspace

      • Default:
      • Type: String (can be set multiple times)
      -

      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.

      +

      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:

      • Workspace names
      • @@ -348,9 +340,9 @@

        workspace

      • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
      -

      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.

      +

      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

        @@ -359,14 +351,13 @@

        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:

      +

      Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

        -
      • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
      • +
      • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

      This value is not exported to the environment for child processes.

      include-workspace-root

      @@ -375,19 +366,18 @@

      include-workspace-root

    • Type: Boolean

    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.

    +

    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.

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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 install
    • diff --git a/deps/npm/docs/output/commands/npm-completion.html b/deps/npm/docs/output/commands/npm-completion.html index 62c34b3e664752..ad9ce77e828e48 100644 --- a/deps/npm/docs/output/commands/npm-completion.html +++ b/deps/npm/docs/output/commands/npm-completion.html @@ -141,9 +141,9 @@
      -

      +

      npm-completion - @11.6.2 + @11.6.3

      Tab Completion for npm
      diff --git a/deps/npm/docs/output/commands/npm-config.html b/deps/npm/docs/output/commands/npm-config.html index e8551dcacd9e96..0e7ffc87a4dbab 100644 --- a/deps/npm/docs/output/commands/npm-config.html +++ b/deps/npm/docs/output/commands/npm-config.html @@ -141,9 +141,9 @@
      -

      +

      npm-config - @11.6.2 + @11.6.3

      Manage the npm configuration files
      @@ -215,8 +215,8 @@

      json

    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.
    • +
    • 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.

    global

    @@ -224,13 +224,12 @@

    global

  • Default: false
  • Type: Boolean
  • -

    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.

    +

    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.

      -
    • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
    • +
    • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
    • bin files are linked to {prefix}/bin
    • man pages are linked to {prefix}/share/man
    @@ -243,18 +242,17 @@

    editor

    The command to run for npm edit and npm config edit.

    location

      -
    • Default: "user" unless --global is passed, which will also set this -value to "global"
    • +
    • Default: "user" unless --global is passed, which will also set this value +to "global"
    • Type: "global", "user", or "project"

    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.

    +

    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.

      -
    • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
    • +
    • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
    • bin files are linked to {prefix}/bin
    • man pages are linked to {prefix}/share/man
    diff --git a/deps/npm/docs/output/commands/npm-dedupe.html b/deps/npm/docs/output/commands/npm-dedupe.html index 761d5129fac3b3..67cec4c1115ac0 100644 --- a/deps/npm/docs/output/commands/npm-dedupe.html +++ b/deps/npm/docs/output/commands/npm-dedupe.html @@ -141,9 +141,9 @@
    -

    +

    npm-dedupe - @11.6.2 + @11.6.3

    Reduce duplication in the package tree
    @@ -197,12 +197,11 @@

    install-strategy

  • Type: "hoisted", "nested", "shallow", or "linked"
  • Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted.

    +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted.

    legacy-bundling

    • Default: false
    • @@ -210,10 +209,10 @@

      legacy-bundling

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=nested
    -

    Instead of hoisting package installs in node_modules, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets --install-strategy=nested.

    +

    Instead of hoisting package installs in node_modules, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets --install-strategy=nested.

    global-style

    • Default: false
    • @@ -221,33 +220,31 @@

      global-style

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=shallow
    -

    Only install direct dependencies in the top level node_modules, but -hoist on deeper dependencies. Sets --install-strategy=shallow.

    +

    Only install direct dependencies in the top level node_modules, but hoist +on deeper dependencies. Sets --install-strategy=shallow.

    strict-peer-deps

    • Default: false
    • Type: Boolean

    If set to true, and --legacy-peer-deps is not set, then any -conflicting peerDependencies will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships.

    -

    By default, conflicting peerDependencies deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -peerDependencies object.

    -

    When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If --strict-peer-deps is -set, then this warning is treated as a failure.

    +conflicting peerDependencies will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships.

    +

    By default, conflicting peerDependencies deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's peerDependencies object.

    +

    When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If --strict-peer-deps is set, then +this warning is treated as a failure.

    package-lock

    • Default: true
    • Type: Boolean
    -

    If set to false, then ignore package-lock.json files when -installing. This will also prevent writing package-lock.json if -save is true.

    +

    If set to false, then ignore package-lock.json files when installing. This +will also prevent writing package-lock.json if save is true.

    omit

    • Default: 'dev' if the NODE_ENV environment variable is set to @@ -258,41 +255,38 @@

      omit

      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.

      +

      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

      • Default:
      • -
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple -times)
      • +
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple times)
      -

      Option that allows for defining which types of dependencies to -install.

      +

      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.

      +

      Dependency types specified in --include will not be omitted, regardless of +the order in which omit/include are specified on the command-line.

      ignore-scripts

      • Default: false
      • Type: Boolean

      If true, npm does not run scripts specified in package.json files.

      -

      Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

      +

      Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

      audit

      • Default: true
      • Type: Boolean
      -

      When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for npm audit for details -on what is submitted.

      +

      When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for npm audit for details on what is +submitted.

      • Default: true
      • @@ -300,37 +294,35 @@

      Tells npm to create symlinks (or .cmd shims on Windows) for package executables.

      -

      Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems.

      +

      Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems.

      fund

      • Default: true
      • Type: Boolean

      When "true" displays the message at the end of each npm install -acknowledging the number of dependencies looking for funding. See -npm fund for details.

      +acknowledging the number of dependencies looking for funding. See npm fund for details.

      dry-run

      • Default: false
      • Type: 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.

      +

      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.

      workspace

      • Default:
      • Type: String (can be set multiple times)
      -

      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.

      +

      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:

      • Workspace names
      • @@ -338,9 +330,9 @@

        workspace

      • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
      -

      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.

      +

      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

        @@ -349,14 +341,13 @@

        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:

      +

      Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

        -
      • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
      • +
      • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

      This value is not exported to the environment for child processes.

      include-workspace-root

      @@ -365,19 +356,18 @@

      include-workspace-root

    • Type: Boolean

    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.

    +

    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.

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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 find-dupes
    • diff --git a/deps/npm/docs/output/commands/npm-deprecate.html b/deps/npm/docs/output/commands/npm-deprecate.html index c3292a349b8cc7..0b9322fd055b43 100644 --- a/deps/npm/docs/output/commands/npm-deprecate.html +++ b/deps/npm/docs/output/commands/npm-deprecate.html @@ -141,9 +141,9 @@
      -

      +

      npm-deprecate - @11.6.2 + @11.6.3

      Deprecate a version of a package
      @@ -183,22 +183,21 @@

      otp

    • Default: null
    • Type: null or String
    -

    This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with npm access.

    -

    If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one.

    +

    This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with npm access.

    +

    If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one.

    dry-run

    • Default: false
    • Type: 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.

    +

    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.

    See Also

    • package spec
    • diff --git a/deps/npm/docs/output/commands/npm-diff.html b/deps/npm/docs/output/commands/npm-diff.html index 18e0aaf07f306d..8ea1a7ba81b64b 100644 --- a/deps/npm/docs/output/commands/npm-diff.html +++ b/deps/npm/docs/output/commands/npm-diff.html @@ -141,9 +141,9 @@
      -

      +

      npm-diff - @11.6.2 + @11.6.3

      The registry diff command
      @@ -281,13 +281,12 @@

      global

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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.

      -
    • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
    • +
    • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
    • bin files are linked to {prefix}/bin
    • man pages are linked to {prefix}/share/man
    @@ -296,21 +295,21 @@

    tag

  • Default: "latest"
  • Type: String
  • -

    If you ask npm to install a package and don't tell it a specific -version, then it will install the specified tag.

    +

    If you ask npm to install a package and don't tell it a specific version, +then it will install the specified tag.

    It is the tag added to the package@version specified in the npm dist-tag add command, if no explicit tag is given.

    -

    When used by the npm diff command, this is the tag used to fetch -the tarball that will be compared with the local files by default.

    -

    If used in the npm publish command, this is the tag that will be -added to the package submitted to the registry.

    +

    When used by the npm diff command, this is the tag used to fetch the +tarball that will be compared with the local files by default.

    +

    If used in the npm publish command, this is the tag that will be added to +the package submitted to the registry.

    workspace

    • Default:
    • Type: String (can be set multiple times)
    -

    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.

    +

    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:

    • Workspace names
    • @@ -318,9 +317,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -329,14 +328,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    include-workspace-root

    @@ -345,10 +343,9 @@

    include-workspace-root

  • Type: Boolean
  • 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.

    +

    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.

    See Also

      diff --git a/deps/npm/docs/output/commands/npm-dist-tag.html b/deps/npm/docs/output/commands/npm-dist-tag.html index b7d2d1bf7cec7c..d5148c06bf7458 100644 --- a/deps/npm/docs/output/commands/npm-dist-tag.html +++ b/deps/npm/docs/output/commands/npm-dist-tag.html @@ -141,9 +141,9 @@
      -

      +

      npm-dist-tag - @11.6.2 + @11.6.3

      Modify package distribution tags
      @@ -207,9 +207,9 @@

      workspace

    • Default:
    • Type: String (can be set multiple times)
    -

    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.

    +

    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:

    • Workspace names
    • @@ -217,9 +217,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -228,14 +228,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    include-workspace-root

    @@ -244,10 +243,9 @@

    include-workspace-root

  • Type: Boolean
  • 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.

    +

    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.

    See Also

      diff --git a/deps/npm/docs/output/commands/npm-docs.html b/deps/npm/docs/output/commands/npm-docs.html index 64524857304ef5..3079c0a8f7dfb6 100644 --- a/deps/npm/docs/output/commands/npm-docs.html +++ b/deps/npm/docs/output/commands/npm-docs.html @@ -141,9 +141,9 @@
      -

      +

      npm-docs - @11.6.2 + @11.6.3

      Open documentation for a package in a web browser
      @@ -183,9 +183,9 @@

      workspace

    • Default:
    • Type: String (can be set multiple times)
    -

    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.

    +

    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:

    • Workspace names
    • @@ -193,9 +193,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -204,14 +204,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    include-workspace-root

    @@ -220,10 +219,9 @@

    include-workspace-root

  • Type: Boolean
  • 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.

    +

    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.

    See Also

      diff --git a/deps/npm/docs/output/commands/npm-doctor.html b/deps/npm/docs/output/commands/npm-doctor.html index f5c65a6ad7db19..af0992070b5bab 100644 --- a/deps/npm/docs/output/commands/npm-doctor.html +++ b/deps/npm/docs/output/commands/npm-doctor.html @@ -141,9 +141,9 @@
      -

      +

      npm-doctor - @11.6.2 + @11.6.3

      Check the health of your npm environment
      diff --git a/deps/npm/docs/output/commands/npm-edit.html b/deps/npm/docs/output/commands/npm-edit.html index b058b0bb0c8223..be573b8a910373 100644 --- a/deps/npm/docs/output/commands/npm-edit.html +++ b/deps/npm/docs/output/commands/npm-edit.html @@ -141,9 +141,9 @@
      -

      +

      npm-edit - @11.6.2 + @11.6.3

      Edit an installed package
      diff --git a/deps/npm/docs/output/commands/npm-exec.html b/deps/npm/docs/output/commands/npm-exec.html index b6b91582f0d828..cef51ac78c447e 100644 --- a/deps/npm/docs/output/commands/npm-exec.html +++ b/deps/npm/docs/output/commands/npm-exec.html @@ -141,9 +141,9 @@
      -

      +

      npm-exec - @11.6.2 + @11.6.3

      Run a command from a local or remote npm package
      @@ -213,9 +213,8 @@

      call

    • Default: ""
    • Type: String
    -

    Optional companion option for npm exec, npx that allows for -specifying a custom command to be run along with the installed -packages.

    +

    Optional companion option for npm exec, npx that allows for specifying a +custom command to be run along with the installed packages.

    npm exec --package yo --package generator-node --call "yo node"
     

    workspace

    @@ -223,9 +222,9 @@

    workspace

  • Default:
  • Type: String (can be set multiple times)
  • -

    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.

    +

    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:

    • Workspace names
    • @@ -233,9 +232,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -244,14 +243,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    include-workspace-root

    @@ -260,10 +258,9 @@

    include-workspace-root

  • Type: Boolean
  • 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.

    +

    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.

    Examples

    Run the version of tap in the local dependencies, with the provided arguments:

    diff --git a/deps/npm/docs/output/commands/npm-explain.html b/deps/npm/docs/output/commands/npm-explain.html index c1576d6630c503..ad349ead318759 100644 --- a/deps/npm/docs/output/commands/npm-explain.html +++ b/deps/npm/docs/output/commands/npm-explain.html @@ -141,9 +141,9 @@
    -

    +

    npm-explain - @11.6.2 + @11.6.3

    Explain installed packages
    @@ -194,8 +194,8 @@

    json

    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.
    • +
    • 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.

    workspace

    @@ -203,9 +203,9 @@

    workspace

  • Default:
  • Type: String (can be set multiple times)
  • -

    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.

    +

    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:

    • Workspace names
    • @@ -213,9 +213,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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.

    See Also

      diff --git a/deps/npm/docs/output/commands/npm-explore.html b/deps/npm/docs/output/commands/npm-explore.html index 6e0775684d9123..913e8e43add861 100644 --- a/deps/npm/docs/output/commands/npm-explore.html +++ b/deps/npm/docs/output/commands/npm-explore.html @@ -141,9 +141,9 @@
      -

      +

      npm-explore - @11.6.2 + @11.6.3

      Browse an installed package
      @@ -167,8 +167,8 @@

      Description

      Configuration

      shell

        -
      • Default: SHELL environment variable, or "bash" on Posix, or "cmd.exe" -on Windows
      • +
      • Default: SHELL environment variable, or "bash" on Posix, or "cmd.exe" on +Windows
      • Type: String

      The shell to run for the npm explore command.

      diff --git a/deps/npm/docs/output/commands/npm-find-dupes.html b/deps/npm/docs/output/commands/npm-find-dupes.html index 36654d5b7be6cb..82345e5a5ebb65 100644 --- a/deps/npm/docs/output/commands/npm-find-dupes.html +++ b/deps/npm/docs/output/commands/npm-find-dupes.html @@ -141,9 +141,9 @@
      -

      +

      npm-find-dupes - @11.6.2 + @11.6.3

      Find duplication in the package tree
      @@ -165,12 +165,11 @@

      install-strategy

    • Type: "hoisted", "nested", "shallow", or "linked"

    Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted.

    +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted.

    legacy-bundling

    • Default: false
    • @@ -178,10 +177,10 @@

      legacy-bundling

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=nested
    -

    Instead of hoisting package installs in node_modules, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets --install-strategy=nested.

    +

    Instead of hoisting package installs in node_modules, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets --install-strategy=nested.

    global-style

    • Default: false
    • @@ -189,33 +188,31 @@

      global-style

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=shallow
    -

    Only install direct dependencies in the top level node_modules, but -hoist on deeper dependencies. Sets --install-strategy=shallow.

    +

    Only install direct dependencies in the top level node_modules, but hoist +on deeper dependencies. Sets --install-strategy=shallow.

    strict-peer-deps

    • Default: false
    • Type: Boolean

    If set to true, and --legacy-peer-deps is not set, then any -conflicting peerDependencies will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships.

    -

    By default, conflicting peerDependencies deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -peerDependencies object.

    -

    When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If --strict-peer-deps is -set, then this warning is treated as a failure.

    +conflicting peerDependencies will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships.

    +

    By default, conflicting peerDependencies deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's peerDependencies object.

    +

    When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If --strict-peer-deps is set, then +this warning is treated as a failure.

    package-lock

    • Default: true
    • Type: Boolean
    -

    If set to false, then ignore package-lock.json files when -installing. This will also prevent writing package-lock.json if -save is true.

    +

    If set to false, then ignore package-lock.json files when installing. This +will also prevent writing package-lock.json if save is true.

    omit

    • Default: 'dev' if the NODE_ENV environment variable is set to @@ -226,41 +223,38 @@

      omit

      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.

      +

      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

      • Default:
      • -
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple -times)
      • +
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple times)
      -

      Option that allows for defining which types of dependencies to -install.

      +

      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.

      +

      Dependency types specified in --include will not be omitted, regardless of +the order in which omit/include are specified on the command-line.

      ignore-scripts

      • Default: false
      • Type: Boolean

      If true, npm does not run scripts specified in package.json files.

      -

      Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

      +

      Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

      audit

      • Default: true
      • Type: Boolean
      -

      When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for npm audit for details -on what is submitted.

      +

      When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for npm audit for details on what is +submitted.

      • Default: true
      • @@ -268,25 +262,24 @@

      Tells npm to create symlinks (or .cmd shims on Windows) for package executables.

      -

      Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems.

      +

      Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems.

      fund

      • Default: true
      • Type: Boolean

      When "true" displays the message at the end of each npm install -acknowledging the number of dependencies looking for funding. See -npm fund for details.

      +acknowledging the number of dependencies looking for funding. See npm fund for details.

      workspace

      • Default:
      • Type: String (can be set multiple times)
      -

      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.

      +

      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:

      • Workspace names
      • @@ -294,9 +287,9 @@

        workspace

      • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
      -

      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.

      +

      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

        @@ -305,14 +298,13 @@

        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:

      +

      Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

        -
      • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
      • +
      • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

      This value is not exported to the environment for child processes.

      include-workspace-root

      @@ -321,19 +313,18 @@

      include-workspace-root

    • Type: Boolean

    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.

    +

    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.

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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 dedupe
    • diff --git a/deps/npm/docs/output/commands/npm-fund.html b/deps/npm/docs/output/commands/npm-fund.html index b50ef08583fb2b..5608c295c2ad26 100644 --- a/deps/npm/docs/output/commands/npm-fund.html +++ b/deps/npm/docs/output/commands/npm-fund.html @@ -141,9 +141,9 @@
      -

      +

      npm-fund - @11.6.2 + @11.6.3

      Retrieve funding information
      @@ -195,8 +195,8 @@

      json

    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.
    • +
    • 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.

    browser

    @@ -210,21 +210,20 @@

    browser

    Set to true to use default system URL opener.

    unicode

      -
    • Default: false on windows, true on mac/unix systems with a unicode -locale, as defined by the LC_ALL, LC_CTYPE, or LANG environment -variables.
    • +
    • Default: false on windows, true on mac/unix systems with a unicode locale, +as defined by the LC_ALL, LC_CTYPE, or LANG environment variables.
    • Type: Boolean
    -

    When set to true, npm uses unicode characters in the tree output. -When false, it uses ascii characters instead of unicode glyphs.

    +

    When set to true, npm uses unicode characters in the tree output. When +false, it uses ascii characters instead of unicode glyphs.

    workspace

    • Default:
    • Type: String (can be set multiple times)
    -

    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.

    +

    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:

    • Workspace names
    • @@ -232,17 +231,16 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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.

    which

    • Default: null
    • Type: null or Number
    -

    If there are multiple funding sources, which 1-indexed source URL to -open.

    +

    If there are multiple funding sources, which 1-indexed source URL to open.

    See Also

    • package spec
    • diff --git a/deps/npm/docs/output/commands/npm-help-search.html b/deps/npm/docs/output/commands/npm-help-search.html index 302450849aa5bb..38715599a43535 100644 --- a/deps/npm/docs/output/commands/npm-help-search.html +++ b/deps/npm/docs/output/commands/npm-help-search.html @@ -141,9 +141,9 @@
      -

      +

      npm-help-search - @11.6.2 + @11.6.3

      Search npm help documentation
      diff --git a/deps/npm/docs/output/commands/npm-help.html b/deps/npm/docs/output/commands/npm-help.html index fcf951538a0cbc..a45b70b65b74b8 100644 --- a/deps/npm/docs/output/commands/npm-help.html +++ b/deps/npm/docs/output/commands/npm-help.html @@ -141,9 +141,9 @@
      -

      +

      npm-help - @11.6.2 + @11.6.3

      Get help on npm
      @@ -170,8 +170,7 @@

      viewer

    • Type: String

    The program to use to view help content.

    -

    Set to "browser" to view html help content in the default web -browser.

    +

    Set to "browser" to view html help content in the default web browser.

    See Also

    • npm
    • diff --git a/deps/npm/docs/output/commands/npm-init.html b/deps/npm/docs/output/commands/npm-init.html index a614375240ac91..7ca120139e16c4 100644 --- a/deps/npm/docs/output/commands/npm-init.html +++ b/deps/npm/docs/output/commands/npm-init.html @@ -141,9 +141,9 @@
      -

      +

      npm-init - @11.6.2 + @11.6.3

      Create a package.json file
      @@ -248,8 +248,7 @@

      init-author-name

    • Default: ""
    • Type: String
    -

    The value npm init should use by default for the package author's -name.

    +

    The value npm init should use by default for the package author's name.

    init-author-url

    • Default: ""
    • @@ -270,29 +269,28 @@

      init-module

    A module that will be loaded by the npm init command. See the documentation for the -init-package-json module -for more information, or npm init.

    +init-package-json module for +more information, or npm init.

    init-type

    • Default: "commonjs"
    • Type: String
    -

    The value that npm init should use by default for the package.json -type field.

    +

    The value that npm init should use by default for the package.json type +field.

    init-version

    • Default: "1.0.0"
    • Type: SemVer string
    -

    The value that npm init should use by default for the package -version number, if not already set in package.json.

    +

    The value that npm init should use by default for the package version +number, if not already set in package.json.

    init-private

    • Default: false
    • Type: Boolean
    -

    The value npm init should use by default for the package's private -flag.

    +

    The value npm init should use by default for the package's private flag.

    yes

    • Default: null
    • @@ -311,16 +309,14 @@

      force

    • Allow clobbering non-npm files in global installs.
    • Allow the npm version command to work on an unclean git repository.
    • Allow deleting the cache folder with npm cache clean.
    • -
    • Allow installing packages that have an engines declaration -requiring a different version of npm.
    • -
    • Allow installing packages that have an engines declaration -requiring a different version of node, even if --engine-strict is -enabled.
    • -
    • Allow npm audit fix to install modules outside your stated -dependency range (including SemVer-major changes).
    • +
    • Allow installing packages that have an engines declaration requiring a +different version of npm.
    • +
    • Allow installing packages that have an engines declaration requiring a +different version of node, even if --engine-strict is enabled.
    • +
    • Allow npm audit fix to install modules outside your stated dependency +range (including SemVer-major changes).
    • Allow unpublishing all versions of a published package.
    • -
    • Allow conflicting peerDependencies to be installed in the root -project.
    • +
    • Allow conflicting peerDependencies to be installed in the root project.
    • Implicitly set --yes during npm init.
    • Allow clobbering existing values in npm pkg
    • Allow unpublishing of entire packages (not just a single version).
    • @@ -353,9 +349,9 @@

      workspace

    • Default:
    • Type: String (can be set multiple times)
    -

    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.

    +

    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:

    • Workspace names
    • @@ -363,9 +359,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -374,14 +370,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    workspaces-update

    @@ -389,19 +384,17 @@

    workspaces-update

  • Default: true
  • Type: Boolean
  • -

    If set to true, the npm cli will run an update after operations that -may possibly change the workspaces installed to the node_modules -folder.

    +

    If set to true, the npm cli will run an update after operations that may +possibly change the workspaces installed to the node_modules folder.

    include-workspace-root

    • Default: false
    • Type: Boolean

    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.

    +

    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.

    See Also

      diff --git a/deps/npm/docs/output/commands/npm-install-ci-test.html b/deps/npm/docs/output/commands/npm-install-ci-test.html index 5ce09186ea55cd..87ab6df8202828 100644 --- a/deps/npm/docs/output/commands/npm-install-ci-test.html +++ b/deps/npm/docs/output/commands/npm-install-ci-test.html @@ -141,9 +141,9 @@
      -

      +

      npm-install-ci-test - @11.6.2 + @11.6.3

      Install a project with a clean slate and run tests
      @@ -167,12 +167,11 @@

      install-strategy

    • Type: "hoisted", "nested", "shallow", or "linked"

    Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted.

    +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted.

    legacy-bundling

    • Default: false
    • @@ -180,10 +179,10 @@

      legacy-bundling

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=nested
    -

    Instead of hoisting package installs in node_modules, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets --install-strategy=nested.

    +

    Instead of hoisting package installs in node_modules, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets --install-strategy=nested.

    global-style

    • Default: false
    • @@ -191,8 +190,8 @@

      global-style

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=shallow
    -

    Only install direct dependencies in the top level node_modules, but -hoist on deeper dependencies. Sets --install-strategy=shallow.

    +

    Only install direct dependencies in the top level node_modules, but hoist +on deeper dependencies. Sets --install-strategy=shallow.

    omit

    • Default: 'dev' if the NODE_ENV environment variable is set to @@ -203,70 +202,65 @@

      omit

      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.

      +

      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

      • Default:
      • -
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple -times)
      • +
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple times)
      -

      Option that allows for defining which types of dependencies to -install.

      +

      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.

      +

      Dependency types specified in --include will not be omitted, regardless of +the order in which omit/include are specified on the command-line.

      strict-peer-deps

      • Default: false
      • Type: Boolean

      If set to true, and --legacy-peer-deps is not set, then any -conflicting peerDependencies will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships.

      -

      By default, conflicting peerDependencies deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -peerDependencies object.

      -

      When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If --strict-peer-deps is -set, then this warning is treated as a failure.

      +conflicting peerDependencies will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships.

      +

      By default, conflicting peerDependencies deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's peerDependencies object.

      +

      When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If --strict-peer-deps is set, then +this warning is treated as a failure.

      foreground-scripts

        -
      • Default: false unless when using npm pack or npm publish where -it defaults to true
      • +
      • Default: false unless when using npm pack or npm publish where it +defaults to true
      • Type: Boolean
      -

      Run all build scripts (ie, preinstall, install, and -postinstall) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process.

      -

      Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging.

      +

      Run all build scripts (ie, preinstall, install, and postinstall) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process.

      +

      Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging.

      ignore-scripts

      • Default: false
      • Type: Boolean

      If true, npm does not run scripts specified in package.json files.

      -

      Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

      +

      Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

      audit

      • Default: true
      • Type: Boolean
      -

      When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for npm audit for details -on what is submitted.

      +

      When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for npm audit for details on what is +submitted.

      • Default: true
      • @@ -274,37 +268,35 @@

      Tells npm to create symlinks (or .cmd shims on Windows) for package executables.

      -

      Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems.

      +

      Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems.

      fund

      • Default: true
      • Type: Boolean

      When "true" displays the message at the end of each npm install -acknowledging the number of dependencies looking for funding. See -npm fund for details.

      +acknowledging the number of dependencies looking for funding. See npm fund for details.

      dry-run

      • Default: false
      • Type: 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.

      +

      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.

      workspace

      • Default:
      • Type: String (can be set multiple times)
      -

      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.

      +

      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:

      • Workspace names
      • @@ -312,9 +304,9 @@

        workspace

      • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
      -

      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.

      +

      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

        @@ -323,14 +315,13 @@

        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:

      +

      Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

        -
      • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
      • +
      • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

      This value is not exported to the environment for child processes.

      include-workspace-root

      @@ -339,19 +330,18 @@

      include-workspace-root

    • Type: Boolean

    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.

    +

    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.

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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 install-test
    • diff --git a/deps/npm/docs/output/commands/npm-install-test.html b/deps/npm/docs/output/commands/npm-install-test.html index e1db52fb95b05b..f230e441c05384 100644 --- a/deps/npm/docs/output/commands/npm-install-test.html +++ b/deps/npm/docs/output/commands/npm-install-test.html @@ -141,9 +141,9 @@
      -

      +

      npm-install-test - @11.6.2 + @11.6.3

      Install package(s) and run tests
      @@ -164,8 +164,7 @@

      Description

      Configuration

      save

        -
      • Default: true unless when using npm update where it defaults to -false
      • +
      • Default: true unless when using npm update where it defaults to false
      • Type: Boolean

      Save installed packages to a package.json file as dependencies.

      @@ -177,20 +176,19 @@

      save-exact

    • Default: false
    • Type: Boolean
    -

    Dependencies saved to package.json will be configured with an exact -version rather than using npm's default semver range operator.

    +

    Dependencies saved to package.json will be configured with an exact version +rather than using npm's default semver range operator.

    global

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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.

      -
    • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
    • +
    • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
    • bin files are linked to {prefix}/bin
    • man pages are linked to {prefix}/share/man
    @@ -200,12 +198,11 @@

    install-strategy

  • Type: "hoisted", "nested", "shallow", or "linked"
  • Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted.

    +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted.

    legacy-bundling

    • Default: false
    • @@ -213,10 +210,10 @@

      legacy-bundling

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=nested
    -

    Instead of hoisting package installs in node_modules, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets --install-strategy=nested.

    +

    Instead of hoisting package installs in node_modules, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets --install-strategy=nested.

    global-style

    • Default: false
    • @@ -224,8 +221,8 @@

      global-style

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=shallow
    -

    Only install direct dependencies in the top level node_modules, but -hoist on deeper dependencies. Sets --install-strategy=shallow.

    +

    Only install direct dependencies in the top level node_modules, but hoist +on deeper dependencies. Sets --install-strategy=shallow.

    omit

    • Default: 'dev' if the NODE_ENV environment variable is set to @@ -236,110 +233,103 @@

      omit

      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.

      +

      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

      • Default:
      • -
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple -times)
      • +
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple times)
      -

      Option that allows for defining which types of dependencies to -install.

      +

      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.

      +

      Dependency types specified in --include will not be omitted, regardless of +the order in which omit/include are specified on the command-line.

      strict-peer-deps

      • Default: false
      • Type: Boolean

      If set to true, and --legacy-peer-deps is not set, then any -conflicting peerDependencies will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships.

      -

      By default, conflicting peerDependencies deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -peerDependencies object.

      -

      When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If --strict-peer-deps is -set, then this warning is treated as a failure.

      +conflicting peerDependencies will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships.

      +

      By default, conflicting peerDependencies deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's peerDependencies object.

      +

      When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If --strict-peer-deps is set, then +this warning is treated as a failure.

      prefer-dedupe

      • Default: false
      • Type: Boolean
      -

      Prefer to deduplicate packages if possible, rather than choosing a -newer version of a dependency.

      +

      Prefer to deduplicate packages if possible, rather than choosing a newer +version of a dependency.

      package-lock

      • Default: true
      • Type: Boolean
      -

      If set to false, then ignore package-lock.json files when -installing. This will also prevent writing package-lock.json if -save is true.

      +

      If set to false, then ignore package-lock.json files when installing. This +will also prevent writing package-lock.json if save is true.

      package-lock-only

      • Default: false
      • Type: Boolean
      -

      If set to true, the current operation will only use the -package-lock.json, ignoring node_modules.

      +

      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.

      +

      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.

      foreground-scripts

        -
      • Default: false unless when using npm pack or npm publish where -it defaults to true
      • +
      • Default: false unless when using npm pack or npm publish where it +defaults to true
      • Type: Boolean
      -

      Run all build scripts (ie, preinstall, install, and -postinstall) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process.

      -

      Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging.

      +

      Run all build scripts (ie, preinstall, install, and postinstall) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process.

      +

      Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging.

      ignore-scripts

      • Default: false
      • Type: Boolean

      If true, npm does not run scripts specified in package.json files.

      -

      Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

      +

      Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

      audit

      • Default: true
      • Type: Boolean
      -

      When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for npm audit for details -on what is submitted.

      +

      When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for npm audit for details on what is +submitted.

      before

      • Default: null
      • Type: null or Date

      If passed to npm install, will rebuild the npm tree such that only -versions that were available on or before the given date are -installed. If there are no versions available for the current set of -dependencies, the command will error.

      -

      If the requested version is a dist-tag and the given tag does not -pass the --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.

      +versions that were available on or before the given date are installed. +If there are no versions available for the current set of dependencies, the +command will error.

      +

      If the requested version is a dist-tag and the given tag does not pass the +--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.

      • Default: true
      • @@ -347,59 +337,56 @@

      Tells npm to create symlinks (or .cmd shims on Windows) for package executables.

      -

      Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems.

      +

      Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems.

      fund

      • Default: true
      • Type: Boolean

      When "true" displays the message at the end of each npm install -acknowledging the number of dependencies looking for funding. See -npm fund for details.

      +acknowledging the number of dependencies looking for funding. See npm fund for details.

      dry-run

      • Default: false
      • Type: 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.

      +

      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.

      cpu

      • Default: null
      • Type: null or String
      -

      Override CPU architecture of native modules to install. Acceptable -values are same as cpu field of package.json, which comes from -process.arch.

      +

      Override CPU architecture of native modules to install. Acceptable values +are same as cpu field of package.json, which comes from process.arch.

      os

      • Default: null
      • Type: null or String
      -

      Override OS of native modules to install. Acceptable values are same -as os field of package.json, which comes from process.platform.

      +

      Override OS of native modules to install. Acceptable values are same as os +field of package.json, which comes from process.platform.

      libc

      • Default: null
      • Type: null or String
      -

      Override libc of native modules to install. Acceptable values are -same as libc field of package.json

      +

      Override libc of native modules to install. Acceptable values are same as +libc field of package.json

      workspace

      • Default:
      • Type: String (can be set multiple times)
      -

      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.

      +

      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:

      • Workspace names
      • @@ -407,9 +394,9 @@

        workspace

      • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
      -

      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.

      +

      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

        @@ -418,14 +405,13 @@

        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:

      +

      Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

        -
      • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
      • +
      • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

      This value is not exported to the environment for child processes.

      include-workspace-root

      @@ -434,19 +420,18 @@

      include-workspace-root

    • Type: Boolean

    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.

    +

    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.

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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 install
    • diff --git a/deps/npm/docs/output/commands/npm-install.html b/deps/npm/docs/output/commands/npm-install.html index f439db3cb17c69..89a97891b029ff 100644 --- a/deps/npm/docs/output/commands/npm-install.html +++ b/deps/npm/docs/output/commands/npm-install.html @@ -141,9 +141,9 @@
      -

      +

      npm-install - @11.6.2 + @11.6.3

      Install a package
      @@ -420,8 +420,7 @@

      Configuration

      These are some of the most common options related to installation.

      save

        -
      • Default: true unless when using npm update where it defaults to -false
      • +
      • Default: true unless when using npm update where it defaults to false
      • Type: Boolean

      Save installed packages to a package.json file as dependencies.

      @@ -433,20 +432,19 @@

      save-exact

    • Default: false
    • Type: Boolean
    -

    Dependencies saved to package.json will be configured with an exact -version rather than using npm's default semver range operator.

    +

    Dependencies saved to package.json will be configured with an exact version +rather than using npm's default semver range operator.

    global

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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.

      -
    • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
    • +
    • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
    • bin files are linked to {prefix}/bin
    • man pages are linked to {prefix}/share/man
    @@ -456,12 +454,11 @@

    install-strategy

  • Type: "hoisted", "nested", "shallow", or "linked"
  • Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted.

    +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted.

    legacy-bundling

    • Default: false
    • @@ -469,10 +466,10 @@

      legacy-bundling

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=nested
    -

    Instead of hoisting package installs in node_modules, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets --install-strategy=nested.

    +

    Instead of hoisting package installs in node_modules, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets --install-strategy=nested.

    global-style

    • Default: false
    • @@ -480,8 +477,8 @@

      global-style

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=shallow
    -

    Only install direct dependencies in the top level node_modules, but -hoist on deeper dependencies. Sets --install-strategy=shallow.

    +

    Only install direct dependencies in the top level node_modules, but hoist +on deeper dependencies. Sets --install-strategy=shallow.

    omit

    • Default: 'dev' if the NODE_ENV environment variable is set to @@ -492,110 +489,103 @@

      omit

      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.

      +

      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

      • Default:
      • -
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple -times)
      • +
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple times)
      -

      Option that allows for defining which types of dependencies to -install.

      +

      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.

      +

      Dependency types specified in --include will not be omitted, regardless of +the order in which omit/include are specified on the command-line.

      strict-peer-deps

      • Default: false
      • Type: Boolean

      If set to true, and --legacy-peer-deps is not set, then any -conflicting peerDependencies will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships.

      -

      By default, conflicting peerDependencies deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -peerDependencies object.

      -

      When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If --strict-peer-deps is -set, then this warning is treated as a failure.

      +conflicting peerDependencies will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships.

      +

      By default, conflicting peerDependencies deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's peerDependencies object.

      +

      When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If --strict-peer-deps is set, then +this warning is treated as a failure.

      prefer-dedupe

      • Default: false
      • Type: Boolean
      -

      Prefer to deduplicate packages if possible, rather than choosing a -newer version of a dependency.

      +

      Prefer to deduplicate packages if possible, rather than choosing a newer +version of a dependency.

      package-lock

      • Default: true
      • Type: Boolean
      -

      If set to false, then ignore package-lock.json files when -installing. This will also prevent writing package-lock.json if -save is true.

      +

      If set to false, then ignore package-lock.json files when installing. This +will also prevent writing package-lock.json if save is true.

      package-lock-only

      • Default: false
      • Type: Boolean
      -

      If set to true, the current operation will only use the -package-lock.json, ignoring node_modules.

      +

      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.

      +

      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.

      foreground-scripts

        -
      • Default: false unless when using npm pack or npm publish where -it defaults to true
      • +
      • Default: false unless when using npm pack or npm publish where it +defaults to true
      • Type: Boolean
      -

      Run all build scripts (ie, preinstall, install, and -postinstall) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process.

      -

      Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging.

      +

      Run all build scripts (ie, preinstall, install, and postinstall) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process.

      +

      Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging.

      ignore-scripts

      • Default: false
      • Type: Boolean

      If true, npm does not run scripts specified in package.json files.

      -

      Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

      +

      Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

      audit

      • Default: true
      • Type: Boolean
      -

      When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for npm audit for details -on what is submitted.

      +

      When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for npm audit for details on what is +submitted.

      before

      • Default: null
      • Type: null or Date

      If passed to npm install, will rebuild the npm tree such that only -versions that were available on or before the given date are -installed. If there are no versions available for the current set of -dependencies, the command will error.

      -

      If the requested version is a dist-tag and the given tag does not -pass the --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.

      +versions that were available on or before the given date are installed. +If there are no versions available for the current set of dependencies, the +command will error.

      +

      If the requested version is a dist-tag and the given tag does not pass the +--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.

      • Default: true
      • @@ -603,59 +593,56 @@

      Tells npm to create symlinks (or .cmd shims on Windows) for package executables.

      -

      Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems.

      +

      Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems.

      fund

      • Default: true
      • Type: Boolean

      When "true" displays the message at the end of each npm install -acknowledging the number of dependencies looking for funding. See -npm fund for details.

      +acknowledging the number of dependencies looking for funding. See npm fund for details.

      dry-run

      • Default: false
      • Type: 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.

      +

      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.

      cpu

      • Default: null
      • Type: null or String
      -

      Override CPU architecture of native modules to install. Acceptable -values are same as cpu field of package.json, which comes from -process.arch.

      +

      Override CPU architecture of native modules to install. Acceptable values +are same as cpu field of package.json, which comes from process.arch.

      os

      • Default: null
      • Type: null or String
      -

      Override OS of native modules to install. Acceptable values are same -as os field of package.json, which comes from process.platform.

      +

      Override OS of native modules to install. Acceptable values are same as os +field of package.json, which comes from process.platform.

      libc

      • Default: null
      • Type: null or String
      -

      Override libc of native modules to install. Acceptable values are -same as libc field of package.json

      +

      Override libc of native modules to install. Acceptable values are same as +libc field of package.json

      workspace

      • Default:
      • Type: String (can be set multiple times)
      -

      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.

      +

      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:

      • Workspace names
      • @@ -663,9 +650,9 @@

        workspace

      • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
      -

      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.

      +

      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

        @@ -674,14 +661,13 @@

        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:

      +

      Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

        -
      • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
      • +
      • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

      This value is not exported to the environment for child processes.

      include-workspace-root

      @@ -690,19 +676,18 @@

      include-workspace-root

    • Type: Boolean

    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.

    +

    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.

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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.

    Algorithm

    Given a package{dep} structure: A{B,C}, B{C}, C{D}, the npm install algorithm produces:

    A
    diff --git a/deps/npm/docs/output/commands/npm-link.html b/deps/npm/docs/output/commands/npm-link.html
    index 72ab0b3ada6997..444de4ffcb36ad 100644
    --- a/deps/npm/docs/output/commands/npm-link.html
    +++ b/deps/npm/docs/output/commands/npm-link.html
    @@ -141,9 +141,9 @@
     
     
    -

    +

    npm-link - @11.6.2 + @11.6.3

    Symlink a package folder
    @@ -206,8 +206,7 @@

    Workspace Usage

    Configuration

    save

      -
    • Default: true unless when using npm update where it defaults to -false
    • +
    • Default: true unless when using npm update where it defaults to false
    • Type: Boolean

    Save installed packages to a package.json file as dependencies.

    @@ -219,20 +218,19 @@

    save-exact

  • Default: false
  • Type: Boolean
  • -

    Dependencies saved to package.json will be configured with an exact -version rather than using npm's default semver range operator.

    +

    Dependencies saved to package.json will be configured with an exact version +rather than using npm's default semver range operator.

    global

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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.

      -
    • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
    • +
    • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
    • bin files are linked to {prefix}/bin
    • man pages are linked to {prefix}/share/man
    @@ -242,12 +240,11 @@

    install-strategy

  • Type: "hoisted", "nested", "shallow", or "linked"
  • Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted.

    +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted.

    legacy-bundling

    • Default: false
    • @@ -255,10 +252,10 @@

      legacy-bundling

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=nested
    -

    Instead of hoisting package installs in node_modules, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets --install-strategy=nested.

    +

    Instead of hoisting package installs in node_modules, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets --install-strategy=nested.

    global-style

    • Default: false
    • @@ -266,33 +263,31 @@

      global-style

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=shallow
    -

    Only install direct dependencies in the top level node_modules, but -hoist on deeper dependencies. Sets --install-strategy=shallow.

    +

    Only install direct dependencies in the top level node_modules, but hoist +on deeper dependencies. Sets --install-strategy=shallow.

    strict-peer-deps

    • Default: false
    • Type: Boolean

    If set to true, and --legacy-peer-deps is not set, then any -conflicting peerDependencies will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships.

    -

    By default, conflicting peerDependencies deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -peerDependencies object.

    -

    When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If --strict-peer-deps is -set, then this warning is treated as a failure.

    +conflicting peerDependencies will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships.

    +

    By default, conflicting peerDependencies deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's peerDependencies object.

    +

    When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If --strict-peer-deps is set, then +this warning is treated as a failure.

    package-lock

    • Default: true
    • Type: Boolean
    -

    If set to false, then ignore package-lock.json files when -installing. This will also prevent writing package-lock.json if -save is true.

    +

    If set to false, then ignore package-lock.json files when installing. This +will also prevent writing package-lock.json if save is true.

    omit

    • Default: 'dev' if the NODE_ENV environment variable is set to @@ -303,41 +298,38 @@

      omit

      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.

      +

      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

      • Default:
      • -
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple -times)
      • +
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple times)
      -

      Option that allows for defining which types of dependencies to -install.

      +

      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.

      +

      Dependency types specified in --include will not be omitted, regardless of +the order in which omit/include are specified on the command-line.

      ignore-scripts

      • Default: false
      • Type: Boolean

      If true, npm does not run scripts specified in package.json files.

      -

      Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

      +

      Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

      audit

      • Default: true
      • Type: Boolean
      -

      When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for npm audit for details -on what is submitted.

      +

      When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for npm audit for details on what is +submitted.

      • Default: true
      • @@ -345,37 +337,35 @@

      Tells npm to create symlinks (or .cmd shims on Windows) for package executables.

      -

      Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems.

      +

      Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems.

      fund

      • Default: true
      • Type: Boolean

      When "true" displays the message at the end of each npm install -acknowledging the number of dependencies looking for funding. See -npm fund for details.

      +acknowledging the number of dependencies looking for funding. See npm fund for details.

      dry-run

      • Default: false
      • Type: 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.

      +

      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.

      workspace

      • Default:
      • Type: String (can be set multiple times)
      -

      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.

      +

      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:

      • Workspace names
      • @@ -383,9 +373,9 @@

        workspace

      • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
      -

      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.

      +

      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

        @@ -394,14 +384,13 @@

        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:

      +

      Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

        -
      • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
      • +
      • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

      This value is not exported to the environment for child processes.

      include-workspace-root

      @@ -410,19 +399,18 @@

      include-workspace-root

    • Type: Boolean

    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.

    +

    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.

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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

    • package spec
    • diff --git a/deps/npm/docs/output/commands/npm-login.html b/deps/npm/docs/output/commands/npm-login.html index 1031b01ae7559b..06b57e7c9d729b 100644 --- a/deps/npm/docs/output/commands/npm-login.html +++ b/deps/npm/docs/output/commands/npm-login.html @@ -141,9 +141,9 @@
      -

      +

      npm-login - @11.6.2 + @11.6.3

      Login to a registry user account
      @@ -201,8 +201,8 @@

      auth-type

    • Default: "web"
    • Type: "legacy" or "web"
    -

    What authentication strategy to use with login. Note that if an -otp config is given, this value will always be set to legacy.

    +

    What authentication strategy to use with login. Note that if an otp +config is given, this value will always be set to legacy.

    See Also

    • npm registry
    • diff --git a/deps/npm/docs/output/commands/npm-logout.html b/deps/npm/docs/output/commands/npm-logout.html index 2959f2369d51b9..9eca555d7258ec 100644 --- a/deps/npm/docs/output/commands/npm-logout.html +++ b/deps/npm/docs/output/commands/npm-logout.html @@ -141,9 +141,9 @@
      -

      +

      npm-logout - @11.6.2 + @11.6.3

      Log out of the registry
      diff --git a/deps/npm/docs/output/commands/npm-ls.html b/deps/npm/docs/output/commands/npm-ls.html index 2bbca3b4a70bc2..aaa2dcdcdcdfaa 100644 --- a/deps/npm/docs/output/commands/npm-ls.html +++ b/deps/npm/docs/output/commands/npm-ls.html @@ -141,9 +141,9 @@
      -

      +

      npm-ls - @11.6.2 + @11.6.3

      List installed packages
      @@ -164,7 +164,7 @@

      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.6.2 /path/to/npm
      +
      npm@11.6.3 /path/to/npm
       └─┬ init-package-json@0.0.4
         └── promzard@0.1.5
       
      @@ -178,9 +178,9 @@

      all

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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

    • Default: false
    • @@ -188,8 +188,8 @@

      json

    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.
    • +
    • 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.

    long

    @@ -203,20 +203,19 @@

    parseable

  • Default: false
  • Type: Boolean
  • -

    Output parseable results from commands that write to standard output. -For npm search, this will be tab-separated table format.

    +

    Output parseable results from commands that write to standard output. For +npm search, this will be tab-separated table format.

    global

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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.

      -
    • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
    • +
    • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
    • bin files are linked to {prefix}/bin
    • man pages are linked to {prefix}/share/man
    @@ -226,9 +225,8 @@

    depth

  • Type: null or Number
  • 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.

    +

    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

    • Default: 'dev' if the NODE_ENV environment variable is set to @@ -239,59 +237,52 @@

      omit

      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.

      +

      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

      • Default:
      • -
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple -times)
      • +
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple times)
      -

      Option that allows for defining which types of dependencies to -install.

      +

      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.

      +

      Dependency types specified in --include will not be omitted, regardless of +the order in which omit/include are specified on the command-line.

      • Default: false
      • Type: Boolean
      -

      Used with npm ls, limiting output to only those packages that are -linked.

      +

      Used with npm ls, limiting output to only those packages that are linked.

      package-lock-only

      • Default: false
      • Type: Boolean
      -

      If set to true, the current operation will only use the -package-lock.json, ignoring node_modules.

      +

      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.

      +

      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

        -
      • Default: false on windows, true on mac/unix systems with a unicode -locale, as defined by the LC_ALL, LC_CTYPE, or LANG environment -variables.
      • +
      • Default: false on windows, true on mac/unix systems with a unicode locale, +as defined by the LC_ALL, LC_CTYPE, or LANG environment variables.
      • Type: Boolean
      -

      When set to true, npm uses unicode characters in the tree output. -When false, it uses ascii characters instead of unicode glyphs.

      +

      When set to true, npm uses unicode characters in the tree output. When +false, it uses ascii characters instead of unicode glyphs.

      workspace

      • Default:
      • Type: String (can be set multiple times)
      -

      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.

      +

      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:

      • Workspace names
      • @@ -299,9 +290,9 @@

        workspace

      • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
      -

      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.

      +

      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

        @@ -310,14 +301,13 @@

        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:

      +

      Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

        -
      • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
      • +
      • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

      This value is not exported to the environment for child processes.

      include-workspace-root

      @@ -326,19 +316,18 @@

      include-workspace-root

    • Type: Boolean

    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.

    +

    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.

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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

    • package spec
    • diff --git a/deps/npm/docs/output/commands/npm-org.html b/deps/npm/docs/output/commands/npm-org.html index 9082d54b259491..e57fc20d8f7d7d 100644 --- a/deps/npm/docs/output/commands/npm-org.html +++ b/deps/npm/docs/output/commands/npm-org.html @@ -141,9 +141,9 @@
      -

      +

      npm-org - @11.6.2 + @11.6.3

      Manage orgs
      @@ -195,10 +195,10 @@

      otp

    • Default: null
    • Type: null or String
    -

    This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with npm access.

    -

    If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one.

    +

    This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with npm access.

    +

    If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one.

    json

    • Default: false
    • @@ -206,8 +206,8 @@

      json

    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.
    • +
    • 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.

    parseable

    @@ -215,8 +215,8 @@

    parseable

  • Default: false
  • Type: Boolean
  • -

    Output parseable results from commands that write to standard output. -For npm search, this will be tab-separated table format.

    +

    Output parseable results from commands that write to standard output. For +npm search, this will be tab-separated table format.

    See Also

    • using orgs
    • diff --git a/deps/npm/docs/output/commands/npm-outdated.html b/deps/npm/docs/output/commands/npm-outdated.html index 441b0a65170d69..e29b0d5dfcda6e 100644 --- a/deps/npm/docs/output/commands/npm-outdated.html +++ b/deps/npm/docs/output/commands/npm-outdated.html @@ -141,9 +141,9 @@
      -

      +

      npm-outdated - @11.6.2 + @11.6.3

      Check for outdated packages
      @@ -210,9 +210,9 @@

      all

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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

    • Default: false
    • @@ -220,8 +220,8 @@

      json

    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.
    • +
    • 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.

    long

    @@ -235,20 +235,19 @@

    parseable

  • Default: false
  • Type: Boolean
  • -

    Output parseable results from commands that write to standard output. -For npm search, this will be tab-separated table format.

    +

    Output parseable results from commands that write to standard output. For +npm search, this will be tab-separated table format.

    global

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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.

      -
    • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
    • +
    • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
    • bin files are linked to {prefix}/bin
    • man pages are linked to {prefix}/share/man
    @@ -257,9 +256,9 @@

    workspace

  • Default:
  • Type: String (can be set multiple times)
  • -

    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.

    +

    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:

    • Workspace names
    • @@ -267,9 +266,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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.

    before

      @@ -277,13 +276,13 @@

      before

    • Type: null or Date

    If passed to npm install, will rebuild the npm tree such that only -versions that were available on or before the given date are -installed. If there are no versions available for the current set of -dependencies, the command will error.

    -

    If the requested version is a dist-tag and the given tag does not -pass the --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.

    +versions that were available on or before the given date are installed. +If there are no versions available for the current set of dependencies, the +command will error.

    +

    If the requested version is a dist-tag and the given tag does not pass the +--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.

    See Also

    • package spec
    • diff --git a/deps/npm/docs/output/commands/npm-owner.html b/deps/npm/docs/output/commands/npm-owner.html index c846c1f6ca6339..ae8d37d42be3b1 100644 --- a/deps/npm/docs/output/commands/npm-owner.html +++ b/deps/npm/docs/output/commands/npm-owner.html @@ -141,9 +141,9 @@
      -

      +

      npm-owner - @11.6.2 + @11.6.3

      Manage package owners
      @@ -186,18 +186,18 @@

      otp

    • Default: null
    • Type: null or String
    -

    This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with npm access.

    -

    If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one.

    +

    This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with npm access.

    +

    If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one.

    workspace

    • Default:
    • Type: String (can be set multiple times)
    -

    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.

    +

    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:

    • Workspace names
    • @@ -205,9 +205,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -216,14 +216,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    See Also

    diff --git a/deps/npm/docs/output/commands/npm-pack.html b/deps/npm/docs/output/commands/npm-pack.html index c8172c92333766..402f9550fac9bc 100644 --- a/deps/npm/docs/output/commands/npm-pack.html +++ b/deps/npm/docs/output/commands/npm-pack.html @@ -141,9 +141,9 @@
    -

    +

    npm-pack - @11.6.2 + @11.6.3

    Create a tarball from a package
    @@ -162,13 +162,12 @@

    dry-run

  • Default: false
  • Type: 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.

    +

    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

    • Default: false
    • @@ -176,8 +175,8 @@

      json

    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.
    • +
    • 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.

    pack-destination

    @@ -191,9 +190,9 @@

    workspace

  • Default:
  • Type: String (can be set multiple times)
  • -

    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.

    +

    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:

    • Workspace names
    • @@ -201,9 +200,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -212,14 +211,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    include-workspace-root

    @@ -228,10 +226,9 @@

    include-workspace-root

  • Type: Boolean
  • 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.

    +

    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.

    ignore-scripts

      @@ -239,9 +236,10 @@

      ignore-scripts

    • Type: Boolean

    If true, npm does not run scripts specified in package.json files.

    -

    Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

    +

    Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

    Description

    For anything that's installable (that is, a package folder, tarball, tarball url, git url, name@tag, name@version, name, or scoped name), this command will fetch it to the cache, copy the tarball to the current working directory as <name>-<version>.tgz, and then write the filenames out to stdout.

    If the same package is specified multiple times, then the file will be overwritten the second time.

    diff --git a/deps/npm/docs/output/commands/npm-ping.html b/deps/npm/docs/output/commands/npm-ping.html index 3c99ecd918e10b..594c954e2769cb 100644 --- a/deps/npm/docs/output/commands/npm-ping.html +++ b/deps/npm/docs/output/commands/npm-ping.html @@ -141,9 +141,9 @@
    -

    +

    npm-ping - @11.6.2 + @11.6.3

    Ping npm registry
    diff --git a/deps/npm/docs/output/commands/npm-pkg.html b/deps/npm/docs/output/commands/npm-pkg.html index 64c2c9b83796ca..3fe81a8d81d60f 100644 --- a/deps/npm/docs/output/commands/npm-pkg.html +++ b/deps/npm/docs/output/commands/npm-pkg.html @@ -141,9 +141,9 @@
    -

    +

    npm-pkg - @11.6.2 + @11.6.3

    Manages your package.json
    @@ -261,16 +261,14 @@

    force

  • Allow clobbering non-npm files in global installs.
  • Allow the npm version command to work on an unclean git repository.
  • Allow deleting the cache folder with npm cache clean.
  • -
  • Allow installing packages that have an engines declaration -requiring a different version of npm.
  • -
  • Allow installing packages that have an engines declaration -requiring a different version of node, even if --engine-strict is -enabled.
  • -
  • Allow npm audit fix to install modules outside your stated -dependency range (including SemVer-major changes).
  • +
  • Allow installing packages that have an engines declaration requiring a +different version of npm.
  • +
  • Allow installing packages that have an engines declaration requiring a +different version of node, even if --engine-strict is enabled.
  • +
  • Allow npm audit fix to install modules outside your stated dependency +range (including SemVer-major changes).
  • Allow unpublishing all versions of a published package.
  • -
  • Allow conflicting peerDependencies to be installed in the root -project.
  • +
  • Allow conflicting peerDependencies to be installed in the root project.
  • Implicitly set --yes during npm init.
  • Allow clobbering existing values in npm pkg
  • Allow unpublishing of entire packages (not just a single version).
  • @@ -284,8 +282,8 @@

    json

    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.
    • +
    • 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.

    workspace

    @@ -293,9 +291,9 @@

    workspace

  • Default:
  • Type: String (can be set multiple times)
  • -

    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.

    +

    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:

    • Workspace names
    • @@ -303,9 +301,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -314,14 +312,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    See Also

    diff --git a/deps/npm/docs/output/commands/npm-prefix.html b/deps/npm/docs/output/commands/npm-prefix.html index df4c70981f3bc0..53a8c6846a6e70 100644 --- a/deps/npm/docs/output/commands/npm-prefix.html +++ b/deps/npm/docs/output/commands/npm-prefix.html @@ -141,9 +141,9 @@
    -

    +

    npm-prefix - @11.6.2 + @11.6.3

    Display prefix
    @@ -175,13 +175,12 @@

    global

  • Default: false
  • Type: Boolean
  • -

    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.

    +

    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.

      -
    • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
    • +
    • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
    • bin files are linked to {prefix}/bin
    • man pages are linked to {prefix}/share/man
    diff --git a/deps/npm/docs/output/commands/npm-profile.html b/deps/npm/docs/output/commands/npm-profile.html index e6632924f28ecb..6d49dde54698ac 100644 --- a/deps/npm/docs/output/commands/npm-profile.html +++ b/deps/npm/docs/output/commands/npm-profile.html @@ -141,9 +141,9 @@
    -

    +

    npm-profile - @11.6.2 + @11.6.3

    Change settings on your registry profile
    @@ -218,8 +218,8 @@

    json

    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.
    • +
    • 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.

    parseable

    @@ -227,17 +227,17 @@

    parseable

  • Default: false
  • Type: Boolean
  • -

    Output parseable results from commands that write to standard output. -For npm search, this will be tab-separated table format.

    +

    Output parseable results from commands that write to standard output. For +npm search, this will be tab-separated table format.

    otp

    • Default: null
    • Type: null or String
    -

    This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with npm access.

    -

    If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one.

    +

    This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with npm access.

    +

    If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one.

    See Also

    • npm adduser
    • diff --git a/deps/npm/docs/output/commands/npm-prune.html b/deps/npm/docs/output/commands/npm-prune.html index 921556183dc5b0..bedc9c1badf58f 100644 --- a/deps/npm/docs/output/commands/npm-prune.html +++ b/deps/npm/docs/output/commands/npm-prune.html @@ -141,9 +141,9 @@
      -

      +

      npm-prune - @11.6.2 + @11.6.3

      Remove extraneous packages
      @@ -176,35 +176,30 @@

      omit

      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.

      +

      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

      • Default:
      • -
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple -times)
      • +
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple times)
      -

      Option that allows for defining which types of dependencies to -install.

      +

      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.

      +

      Dependency types specified in --include will not be omitted, regardless of +the order in which omit/include are specified on the command-line.

      dry-run

      • Default: false
      • Type: 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.

      +

      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

      • Default: false
      • @@ -212,39 +207,39 @@

        json

      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.
      • +
      • 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.

      foreground-scripts

        -
      • Default: false unless when using npm pack or npm publish where -it defaults to true
      • +
      • Default: false unless when using npm pack or npm publish where it +defaults to true
      • Type: Boolean
      -

      Run all build scripts (ie, preinstall, install, and -postinstall) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process.

      -

      Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging.

      +

      Run all build scripts (ie, preinstall, install, and postinstall) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process.

      +

      Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging.

      ignore-scripts

      • Default: false
      • Type: Boolean

      If true, npm does not run scripts specified in package.json files.

      -

      Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

      +

      Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

      workspace

      • Default:
      • Type: String (can be set multiple times)
      -

      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.

      +

      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:

      • Workspace names
      • @@ -252,9 +247,9 @@

        workspace

      • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
      -

      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.

      +

      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

        @@ -263,14 +258,13 @@

        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:

      +

      Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

        -
      • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
      • +
      • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

      This value is not exported to the environment for child processes.

      include-workspace-root

      @@ -279,19 +273,18 @@

      include-workspace-root

    • Type: Boolean

    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.

    +

    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.

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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

    Description

    Publishes a package to the registry so that it can be installed by name.

    +

    Examples

    +

    Publish the package in the current directory:

    +
    npm publish
    +
    +

    Publish a specific workspace:

    +
    npm publish --workspace=<workspace-name>
    +
    +

    Publish multiple workspaces:

    +
    npm publish --workspace=workspace-a --workspace=workspace-b
    +
    +

    Publish all workspaces:

    +
    npm publish --workspaces
    +

    By default npm will publish to the public registry. This can be overridden by specifying a different default registry or using a scope in the name, combined with a scope-configured registry (see package.json).

    A package is interpreted the same way as other commands (like npm install) and can be:

    @@ -209,55 +222,53 @@

    tag

  • Default: "latest"
  • Type: String
  • -

    If you ask npm to install a package and don't tell it a specific -version, then it will install the specified tag.

    +

    If you ask npm to install a package and don't tell it a specific version, +then it will install the specified tag.

    It is the tag added to the package@version specified in the npm dist-tag add command, if no explicit tag is given.

    -

    When used by the npm diff command, this is the tag used to fetch -the tarball that will be compared with the local files by default.

    -

    If used in the npm publish command, this is the tag that will be -added to the package submitted to the registry.

    +

    When used by the npm diff command, this is the tag used to fetch the +tarball that will be compared with the local files by default.

    +

    If used in the npm publish command, this is the tag that will be added to +the package submitted to the registry.

    access

      -
    • Default: 'public' for new packages, existing packages it will not -change the current level
    • +
    • Default: 'public' for new packages, existing packages it will not change the +current level
    • Type: null, "restricted", or "public"

    If you do not want your scoped package to be publicly viewable (and installable) set --access=restricted.

    Unscoped packages cannot be set to restricted.

    -

    Note: This defaults to not changing the current access level for -existing packages. Specifying a value of restricted or public -during publish will change the access for an existing package the -same way that npm access set status would.

    +

    Note: This defaults to not changing the current access level for existing +packages. Specifying a value of restricted or public during publish will +change the access for an existing package the same way that npm access set status would.

    dry-run

    • Default: false
    • Type: 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.

    +

    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.

    otp

    • Default: null
    • Type: null or String
    -

    This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with npm access.

    -

    If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one.

    +

    This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with npm access.

    +

    If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one.

    workspace

    • Default:
    • Type: String (can be set multiple times)
    -

    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.

    +

    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:

    • Workspace names
    • @@ -265,9 +276,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -276,14 +287,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    include-workspace-root

    @@ -292,26 +302,24 @@

    include-workspace-root

  • Type: Boolean
  • 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.

    +

    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.

    provenance

    • Default: false
    • Type: Boolean
    -

    When publishing from a supported cloud CI/CD system, the package will -be publicly linked to where it was built and published from.

    +

    When publishing from a supported cloud CI/CD system, the package will be +publicly linked to where it was built and published from.

    This config cannot be used with: provenance-file

    provenance-file

    • Default: null
    • Type: Path
    -

    When publishing, the provenance bundle at the given path will be -used.

    +

    When publishing, the provenance bundle at the given path will be used.

    This config cannot be used with: provenance

    See Also

      diff --git a/deps/npm/docs/output/commands/npm-query.html b/deps/npm/docs/output/commands/npm-query.html index 0e4aab89d146dc..5a8113a49b0f7c 100644 --- a/deps/npm/docs/output/commands/npm-query.html +++ b/deps/npm/docs/output/commands/npm-query.html @@ -141,9 +141,9 @@
      -

      +

      npm-query - @11.6.2 + @11.6.3

      Dependency selector query
      @@ -289,13 +289,12 @@

      global

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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.

      -
    • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
    • +
    • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
    • bin files are linked to {prefix}/bin
    • man pages are linked to {prefix}/share/man
    @@ -304,9 +303,9 @@

    workspace

  • Default:
  • Type: String (can be set multiple times)
  • -

    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.

    +

    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:

    • Workspace names
    • @@ -314,9 +313,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -325,14 +324,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    include-workspace-root

    @@ -341,30 +339,28 @@

    include-workspace-root

  • Type: Boolean
  • 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.

    +

    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.

    package-lock-only

    • Default: false
    • Type: Boolean
    -

    If set to true, the current operation will only use the -package-lock.json, ignoring node_modules.

    +

    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.

    +

    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.

    expect-results

    • Default: null
    • Type: null or Boolean
    -

    Tells npm whether or not to expect results from the command. Can be -either true (expect some results) or false (expect no results).

    +

    Tells npm whether or not to expect results from the command. Can be either +true (expect some results) or false (expect no results).

    This config cannot be used with: expect-result-count

    expect-result-count

      diff --git a/deps/npm/docs/output/commands/npm-rebuild.html b/deps/npm/docs/output/commands/npm-rebuild.html index 9eac53b7fe6079..e96d953caf1940 100644 --- a/deps/npm/docs/output/commands/npm-rebuild.html +++ b/deps/npm/docs/output/commands/npm-rebuild.html @@ -141,9 +141,9 @@
      -

      +

      npm-rebuild - @11.6.2 + @11.6.3

      Rebuild a package
      @@ -184,13 +184,12 @@

      global

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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.

      -
    • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
    • +
    • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
    • bin files are linked to {prefix}/bin
    • man pages are linked to {prefix}/share/man
    @@ -201,38 +200,38 @@

    Tells npm to create symlinks (or .cmd shims on Windows) for package executables.

    -

    Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems.

    +

    Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems.

    foreground-scripts

      -
    • Default: false unless when using npm pack or npm publish where -it defaults to true
    • +
    • Default: false unless when using npm pack or npm publish where it +defaults to true
    • Type: Boolean
    -

    Run all build scripts (ie, preinstall, install, and -postinstall) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process.

    -

    Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging.

    +

    Run all build scripts (ie, preinstall, install, and postinstall) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process.

    +

    Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging.

    ignore-scripts

    • Default: false
    • Type: Boolean

    If true, npm does not run scripts specified in package.json files.

    -

    Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

    +

    Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

    workspace

    • Default:
    • Type: String (can be set multiple times)
    -

    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.

    +

    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:

    • Workspace names
    • @@ -240,9 +239,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -251,14 +250,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    include-workspace-root

    @@ -267,19 +265,18 @@

    include-workspace-root

  • Type: Boolean
  • 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.

    +

    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.

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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

    • package spec
    • diff --git a/deps/npm/docs/output/commands/npm-repo.html b/deps/npm/docs/output/commands/npm-repo.html index 2fa1fcc138f40b..d4eb1388728ed1 100644 --- a/deps/npm/docs/output/commands/npm-repo.html +++ b/deps/npm/docs/output/commands/npm-repo.html @@ -141,9 +141,9 @@
      -

      +

      npm-repo - @11.6.2 + @11.6.3

      Open package repository page in the browser
      @@ -180,9 +180,9 @@

      workspace

    • Default:
    • Type: String (can be set multiple times)
    -

    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.

    +

    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:

    • Workspace names
    • @@ -190,9 +190,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -201,14 +201,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    include-workspace-root

    @@ -217,10 +216,9 @@

    include-workspace-root

  • Type: Boolean
  • 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.

    +

    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.

    See Also

      diff --git a/deps/npm/docs/output/commands/npm-restart.html b/deps/npm/docs/output/commands/npm-restart.html index 14fdcfe42503bf..9b3771a4a57d56 100644 --- a/deps/npm/docs/output/commands/npm-restart.html +++ b/deps/npm/docs/output/commands/npm-restart.html @@ -141,9 +141,9 @@
      -

      +

      npm-restart - @11.6.2 + @11.6.3

      Restart a package
      @@ -183,16 +183,16 @@

      ignore-scripts

    • Type: Boolean

    If true, npm does not run scripts specified in package.json files.

    -

    Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

    +

    Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

    script-shell

    • Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
    • Type: null or String
    -

    The shell to use for scripts run with the npm exec, npm run and -npm init <package-spec> commands.

    +

    The shell to use for scripts run with the npm exec, npm run and npm init <package-spec> commands.

    See Also

    • npm run
    • diff --git a/deps/npm/docs/output/commands/npm-root.html b/deps/npm/docs/output/commands/npm-root.html index 0498af80a8b4f2..f09fb6805f2420 100644 --- a/deps/npm/docs/output/commands/npm-root.html +++ b/deps/npm/docs/output/commands/npm-root.html @@ -141,9 +141,9 @@
      -

      +

      npm-root - @11.6.2 + @11.6.3

      Display npm root
      @@ -171,13 +171,12 @@

      global

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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.

      -
    • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
    • +
    • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
    • bin files are linked to {prefix}/bin
    • man pages are linked to {prefix}/share/man
    diff --git a/deps/npm/docs/output/commands/npm-run.html b/deps/npm/docs/output/commands/npm-run.html index b481925c92e9c3..b5043c6baf5cdc 100644 --- a/deps/npm/docs/output/commands/npm-run.html +++ b/deps/npm/docs/output/commands/npm-run.html @@ -141,9 +141,9 @@
    -

    +

    npm-run - @11.6.2 + @11.6.3

    Run arbitrary package scripts
    @@ -226,9 +226,9 @@

    workspace

  • Default:
  • Type: String (can be set multiple times)
  • -

    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.

    +

    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:

    • Workspace names
    • @@ -236,9 +236,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -247,14 +247,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    include-workspace-root

    @@ -263,22 +262,21 @@

    include-workspace-root

  • Type: Boolean
  • 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.

    +

    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.

    if-present

    • Default: false
    • Type: Boolean
    -

    If true, npm will not exit with an error code when run is invoked -for a script that isn't defined in the scripts section of -package.json. This option can be used when it's desirable to -optionally run a script when it's present and fail if the script -fails. This is useful, for example, when running scripts that may -only apply for some builds in an otherwise generic CI setup.

    +

    If true, npm will not exit with an error code when run is invoked for a +script that isn't defined in the scripts section of package.json. This +option can be used when it's desirable to optionally run a script when it's +present and fail if the script fails. This is useful, for example, when +running scripts that may only apply for some builds in an otherwise generic +CI setup.

    This value is not exported to the environment for child processes.

    ignore-scripts

      @@ -286,28 +284,27 @@

      ignore-scripts

    • Type: Boolean

    If true, npm does not run scripts specified in package.json files.

    -

    Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

    +

    Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

    foreground-scripts

      -
    • Default: false unless when using npm pack or npm publish where -it defaults to true
    • +
    • Default: false unless when using npm pack or npm publish where it +defaults to true
    • Type: Boolean
    -

    Run all build scripts (ie, preinstall, install, and -postinstall) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process.

    -

    Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging.

    +

    Run all build scripts (ie, preinstall, install, and postinstall) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process.

    +

    Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging.

    script-shell

    • Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
    • Type: null or String
    -

    The shell to use for scripts run with the npm exec, npm run and -npm init <package-spec> commands.

    +

    The shell to use for scripts run with the npm exec, npm run and npm init <package-spec> commands.

    See Also

    • npm scripts
    • diff --git a/deps/npm/docs/output/commands/npm-sbom.html b/deps/npm/docs/output/commands/npm-sbom.html index 1aa1d701f3570f..97be8fe8c0e64d 100644 --- a/deps/npm/docs/output/commands/npm-sbom.html +++ b/deps/npm/docs/output/commands/npm-sbom.html @@ -141,9 +141,9 @@
      -

      +

      npm-sbom - @11.6.2 + @11.6.3

      Generate a Software Bill of Materials (SBOM)
      @@ -358,23 +358,21 @@

      omit

      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.

      +

      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.

      package-lock-only

      • Default: false
      • Type: Boolean
      -

      If set to true, the current operation will only use the -package-lock.json, ignoring node_modules.

      +

      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.

      +

      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.

      sbom-format

      • Default: null
      • @@ -386,17 +384,17 @@

        sbom-type

      • Default: "library"
      • Type: "library", "application", or "framework"
      -

      The type of package described by the generated SBOM. For SPDX, this -is the value for the primaryPackagePurpose field. For CycloneDX, -this is the value for the type field.

      +

      The type of package described by the generated SBOM. For SPDX, this is the +value for the primaryPackagePurpose field. For CycloneDX, this is the +value for the type field.

      workspace

      • Default:
      • Type: String (can be set multiple times)
      -

      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.

      +

      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:

      • Workspace names
      • @@ -404,9 +402,9 @@

        workspace

      • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
      -

      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.

      +

      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

        @@ -415,14 +413,13 @@

        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:

      +

      Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

        -
      • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
      • +
      • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

      This value is not exported to the environment for child processes.

      See Also

      diff --git a/deps/npm/docs/output/commands/npm-search.html b/deps/npm/docs/output/commands/npm-search.html index 82bf85d1347d26..d663dc288e36ae 100644 --- a/deps/npm/docs/output/commands/npm-search.html +++ b/deps/npm/docs/output/commands/npm-search.html @@ -141,9 +141,9 @@
      -

      +

      npm-search - @11.6.2 + @11.6.3

      Search for packages
      @@ -179,25 +179,24 @@

      json

    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.
    • +
    • 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.

    color

      -
    • Default: true unless the NO_COLOR environ is set to something other -than '0'
    • +
    • Default: true unless the NO_COLOR environ is set to something other than '0'
    • Type: "always" or Boolean
    -

    If false, never shows colors. If "always" then always shows colors. -If true, then only prints color codes for tty file descriptors.

    +

    If false, never shows colors. If "always" then always shows colors. If +true, then only prints color codes for tty file descriptors.

    parseable

    • Default: false
    • Type: Boolean
    -

    Output parseable results from commands that write to standard output. -For npm search, this will be tab-separated table format.

    +

    Output parseable results from commands that write to standard output. For +npm search, this will be tab-separated table format.

    description

    • Default: true
    • @@ -209,8 +208,8 @@

      searchlimit

    • Default: 20
    • Type: Number
    -

    Number of items to limit search results to. Will not apply at all to -legacy searches.

    +

    Number of items to limit search results to. Will not apply at all to legacy +searches.

    searchopts

    • Default: ""
    • @@ -234,24 +233,23 @@

      prefer-online

    • Default: false
    • Type: Boolean
    -

    If true, staleness checks for cached data will be forced, making the -CLI look for updates immediately even for fresh package data.

    +

    If true, staleness checks for cached data will be forced, making the CLI +look for updates immediately even for fresh package data.

    prefer-offline

    • Default: false
    • Type: Boolean
    -

    If true, staleness checks for cached data will be bypassed, but -missing data will be requested from the server. To force full offline -mode, use --offline.

    +

    If true, staleness checks for cached data will be bypassed, but missing data +will be requested from the server. To force full offline mode, use +--offline.

    offline

    • Default: false
    • Type: Boolean
    -

    Force offline mode: no network requests will be done during install. -To allow the CLI to fill in missing cache data, see ---prefer-offline.

    +

    Force offline mode: no network requests will be done during install. To +allow the CLI to fill in missing cache data, see --prefer-offline.

    See Also

    • npm registry
    • diff --git a/deps/npm/docs/output/commands/npm-shrinkwrap.html b/deps/npm/docs/output/commands/npm-shrinkwrap.html index f898acb8713c23..ef3f3858819f6a 100644 --- a/deps/npm/docs/output/commands/npm-shrinkwrap.html +++ b/deps/npm/docs/output/commands/npm-shrinkwrap.html @@ -141,9 +141,9 @@
      -

      +

      npm-shrinkwrap - @11.6.2 + @11.6.3

      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 4c8a18633f1d59..cec90004e9b6a8 100644 --- a/deps/npm/docs/output/commands/npm-star.html +++ b/deps/npm/docs/output/commands/npm-star.html @@ -141,9 +141,9 @@
      -

      +

      npm-star - @11.6.2 + @11.6.3

      Mark your favorite packages
      @@ -178,22 +178,21 @@

      registry

      The base URL of the npm registry.

      unicode

        -
      • Default: false on windows, true on mac/unix systems with a unicode -locale, as defined by the LC_ALL, LC_CTYPE, or LANG environment -variables.
      • +
      • Default: false on windows, true on mac/unix systems with a unicode locale, +as defined by the LC_ALL, LC_CTYPE, or LANG environment variables.
      • Type: Boolean
      -

      When set to true, npm uses unicode characters in the tree output. -When false, it uses ascii characters instead of unicode glyphs.

      +

      When set to true, npm uses unicode characters in the tree output. When +false, it uses ascii characters instead of unicode glyphs.

      otp

      • Default: null
      • Type: null or String
      -

      This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with npm access.

      -

      If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one.

      +

      This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with npm access.

      +

      If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one.

      See Also

      • package spec
      • diff --git a/deps/npm/docs/output/commands/npm-stars.html b/deps/npm/docs/output/commands/npm-stars.html index cbf6a3e230b327..09012e7f3de48d 100644 --- a/deps/npm/docs/output/commands/npm-stars.html +++ b/deps/npm/docs/output/commands/npm-stars.html @@ -141,9 +141,9 @@
        -

        +

        npm-stars - @11.6.2 + @11.6.3

        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 dc5efc037fbf76..5c60765f584442 100644 --- a/deps/npm/docs/output/commands/npm-start.html +++ b/deps/npm/docs/output/commands/npm-start.html @@ -141,9 +141,9 @@
        -

        +

        npm-start - @11.6.2 + @11.6.3

        Start a package
        @@ -184,16 +184,16 @@

        ignore-scripts

      • Type: Boolean

      If true, npm does not run scripts specified in package.json files.

      -

      Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

      +

      Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

      script-shell

      • Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
      • Type: null or String
      -

      The shell to use for scripts run with the npm exec, npm run and -npm init <package-spec> commands.

      +

      The shell to use for scripts run with the npm exec, npm run and npm init <package-spec> commands.

      See Also

      • npm run
      • diff --git a/deps/npm/docs/output/commands/npm-stop.html b/deps/npm/docs/output/commands/npm-stop.html index c0adcdc7ba495d..29a4de71806196 100644 --- a/deps/npm/docs/output/commands/npm-stop.html +++ b/deps/npm/docs/output/commands/npm-stop.html @@ -141,9 +141,9 @@
        -

        +

        npm-stop - @11.6.2 + @11.6.3

        Stop a package
        @@ -181,16 +181,16 @@

        ignore-scripts

      • Type: Boolean

      If true, npm does not run scripts specified in package.json files.

      -

      Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

      +

      Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

      script-shell

      • Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
      • Type: null or String
      -

      The shell to use for scripts run with the npm exec, npm run and -npm init <package-spec> commands.

      +

      The shell to use for scripts run with the npm exec, npm run and npm init <package-spec> commands.

      See Also

      • npm run
      • diff --git a/deps/npm/docs/output/commands/npm-team.html b/deps/npm/docs/output/commands/npm-team.html index 8e88ded725cef9..64050b2a67e565 100644 --- a/deps/npm/docs/output/commands/npm-team.html +++ b/deps/npm/docs/output/commands/npm-team.html @@ -141,9 +141,9 @@
        -

        +

        npm-team - @11.6.2 + @11.6.3

        Manage organization teams and team memberships
        @@ -225,17 +225,17 @@

        otp

      • Default: null
      • Type: null or String
      -

      This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with npm access.

      -

      If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one.

      +

      This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with npm access.

      +

      If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one.

      parseable

      • Default: false
      • Type: Boolean
      -

      Output parseable results from commands that write to standard output. -For npm search, this will be tab-separated table format.

      +

      Output parseable results from commands that write to standard output. For +npm search, this will be tab-separated table format.

      json

      • Default: false
      • @@ -243,8 +243,8 @@

        json

      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.
      • +
      • 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.

      See Also

      diff --git a/deps/npm/docs/output/commands/npm-test.html b/deps/npm/docs/output/commands/npm-test.html index d2fd55d9c7d547..adfc216fc7a61b 100644 --- a/deps/npm/docs/output/commands/npm-test.html +++ b/deps/npm/docs/output/commands/npm-test.html @@ -141,9 +141,9 @@
      -

      +

      npm-test - @11.6.2 + @11.6.3

      Test a package
      @@ -180,16 +180,16 @@

      ignore-scripts

    • Type: Boolean

    If true, npm does not run scripts specified in package.json files.

    -

    Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

    +

    Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

    script-shell

    • Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
    • Type: null or String
    -

    The shell to use for scripts run with the npm exec, npm run and -npm init <package-spec> commands.

    +

    The shell to use for scripts run with the npm exec, npm run and npm init <package-spec> commands.

    See Also

    Configuration

    -

    read-only

    +

    name

    +
      +
    • Default: null
    • +
    • Type: null or String
    • +
    +

    When creating a Granular Access Token with npm token create, this sets the +name/description for the token.

    +

    token-description

    +
      +
    • Default: null
    • +
    • Type: null or String
    • +
    +

    Description text for the token when using npm token create.

    +

    expires

    +
      +
    • Default: null
    • +
    • Type: null or Number
    • +
    +

    When creating a Granular Access Token with npm token create, this sets the +expiration in days. If not specified, the server will determine the default +expiration.

    +

    packages

    +
      +
    • Default:
    • +
    • Type: null or String (can be set multiple times)
    • +
    +

    When creating a Granular Access Token with npm token create, this limits +the token access to specific packages. Provide a comma-separated list of +package names.

    +

    packages-all

    • Default: false
    • Type: Boolean
    -

    This is used to mark a token as unable to publish when configuring -limited access tokens with the npm token create command.

    +

    When creating a Granular Access Token with npm token create, grants the +token access to all packages instead of limiting to specific packages.

    +

    scopes

    +
      +
    • Default: null
    • +
    • Type: null or String (can be set multiple times)
    • +
    +

    When creating a Granular Access Token with npm token create, this limits +the token access to specific scopes. Provide a comma-separated list of scope +names (with or without @ prefix).

    +

    orgs

    +
      +
    • Default: null
    • +
    • Type: null or String (can be set multiple times)
    • +
    +

    When creating a Granular Access Token with npm token create, this limits +the token access to specific organizations. Provide a comma-separated list +of organization names.

    +

    packages-and-scopes-permission

    +
      +
    • Default: null
    • +
    • Type: null, "read-only", "read-write", or "no-access"
    • +
    +

    When creating a Granular Access Token with npm token create, sets the +permission level for packages and scopes. Options are "read-only", +"read-write", or "no-access".

    +

    orgs-permission

    +
      +
    • Default: null
    • +
    • Type: null, "read-only", "read-write", or "no-access"
    • +
    +

    When creating a Granular Access Token with npm token create, sets the +permission level for organizations. Options are "read-only", "read-write", +or "no-access".

    cidr

    • Default: null
    • Type: null or String (can be set multiple times)
    -

    This is a list of CIDR address to be used when configuring limited -access tokens with the npm token create command.

    +

    This is a list of CIDR address to be used when configuring limited access +tokens with the npm token create command.

    +

    bypass-2fa

    +
      +
    • Default: false
    • +
    • Type: Boolean
    • +
    +

    When creating a Granular Access Token with npm token create, setting this +to true will allow the token to bypass two-factor authentication. This is +useful for automation and CI/CD workflows.

    +

    password

    +
      +
    • Default: null
    • +
    • Type: null or String
    • +
    +

    Password for authentication. Can be provided via command line when creating +tokens, though it's generally safer to be prompted for it.

    registry

    -

    This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with npm access.

    -

    If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one.

    +

    This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with npm access.

    +

    If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one.

    +

    read-only

    +
      +
    • Default: false
    • +
    • Type: Boolean
    • +
    +

    This is used to mark a token as unable to publish when configuring limited +access tokens with the npm token create command.

    See Also

    • npm adduser
    • diff --git a/deps/npm/docs/output/commands/npm-undeprecate.html b/deps/npm/docs/output/commands/npm-undeprecate.html index c1d80ebb5b58ee..c1de6aa4565e94 100644 --- a/deps/npm/docs/output/commands/npm-undeprecate.html +++ b/deps/npm/docs/output/commands/npm-undeprecate.html @@ -141,9 +141,9 @@
      -

      +

      npm-undeprecate - @11.6.2 + @11.6.3

      Undeprecate a version of a package
      @@ -172,22 +172,21 @@

      otp

    • Default: null
    • Type: null or String
    -

    This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with npm access.

    -

    If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one.

    +

    This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with npm access.

    +

    If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one.

    dry-run

    • Default: false
    • Type: 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.

    +

    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.

    See Also

    • npm deprecate
    • diff --git a/deps/npm/docs/output/commands/npm-uninstall.html b/deps/npm/docs/output/commands/npm-uninstall.html index 8d594127caa15c..fb9ca4c192247e 100644 --- a/deps/npm/docs/output/commands/npm-uninstall.html +++ b/deps/npm/docs/output/commands/npm-uninstall.html @@ -141,9 +141,9 @@
      -

      +

      npm-uninstall - @11.6.2 + @11.6.3

      Remove a package
      @@ -180,8 +180,7 @@

      Examples

      Configuration

      save

        -
      • Default: true unless when using npm update where it defaults to -false
      • +
      • Default: true unless when using npm update where it defaults to false
      • Type: Boolean

      Save installed packages to a package.json file as dependencies.

      @@ -193,13 +192,12 @@

      global

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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.

      -
    • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
    • +
    • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
    • bin files are linked to {prefix}/bin
    • man pages are linked to {prefix}/share/man
    @@ -208,9 +206,9 @@

    workspace

  • Default:
  • Type: String (can be set multiple times)
  • -

    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.

    +

    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:

    • Workspace names
    • @@ -218,9 +216,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -229,14 +227,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    include-workspace-root

    @@ -245,19 +242,18 @@

    include-workspace-root

  • Type: Boolean
  • 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.

    +

    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.

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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 prune
    • diff --git a/deps/npm/docs/output/commands/npm-unpublish.html b/deps/npm/docs/output/commands/npm-unpublish.html index 97c04a4eea2ecc..27ce30074d090b 100644 --- a/deps/npm/docs/output/commands/npm-unpublish.html +++ b/deps/npm/docs/output/commands/npm-unpublish.html @@ -141,9 +141,9 @@
      -

      +

      npm-unpublish - @11.6.2 + @11.6.3

      Remove a package from the registry
      @@ -173,13 +173,12 @@

      dry-run

    • Default: false
    • Type: 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.

    +

    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.

    force

    • Default: false
    • @@ -191,16 +190,14 @@

      force

    • Allow clobbering non-npm files in global installs.
    • Allow the npm version command to work on an unclean git repository.
    • Allow deleting the cache folder with npm cache clean.
    • -
    • Allow installing packages that have an engines declaration -requiring a different version of npm.
    • -
    • Allow installing packages that have an engines declaration -requiring a different version of node, even if --engine-strict is -enabled.
    • -
    • Allow npm audit fix to install modules outside your stated -dependency range (including SemVer-major changes).
    • +
    • Allow installing packages that have an engines declaration requiring a +different version of npm.
    • +
    • Allow installing packages that have an engines declaration requiring a +different version of node, even if --engine-strict is enabled.
    • +
    • Allow npm audit fix to install modules outside your stated dependency +range (including SemVer-major changes).
    • Allow unpublishing all versions of a published package.
    • -
    • Allow conflicting peerDependencies to be installed in the root -project.
    • +
    • Allow conflicting peerDependencies to be installed in the root project.
    • Implicitly set --yes during npm init.
    • Allow clobbering existing values in npm pkg
    • Allow unpublishing of entire packages (not just a single version).
    • @@ -212,9 +209,9 @@

      workspace

    • Default:
    • Type: String (can be set multiple times)
    -

    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.

    +

    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:

    • Workspace names
    • @@ -222,9 +219,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -233,14 +230,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    See Also

    diff --git a/deps/npm/docs/output/commands/npm-unstar.html b/deps/npm/docs/output/commands/npm-unstar.html index b3976de6064321..d5257fc3a379fd 100644 --- a/deps/npm/docs/output/commands/npm-unstar.html +++ b/deps/npm/docs/output/commands/npm-unstar.html @@ -141,9 +141,9 @@
    -

    +

    npm-unstar - @11.6.2 + @11.6.3

    Remove an item from your favorite packages
    @@ -174,22 +174,21 @@

    registry

    The base URL of the npm registry.

    unicode

      -
    • Default: false on windows, true on mac/unix systems with a unicode -locale, as defined by the LC_ALL, LC_CTYPE, or LANG environment -variables.
    • +
    • Default: false on windows, true on mac/unix systems with a unicode locale, +as defined by the LC_ALL, LC_CTYPE, or LANG environment variables.
    • Type: Boolean
    -

    When set to true, npm uses unicode characters in the tree output. -When false, it uses ascii characters instead of unicode glyphs.

    +

    When set to true, npm uses unicode characters in the tree output. When +false, it uses ascii characters instead of unicode glyphs.

    otp

    • Default: null
    • Type: null or String
    -

    This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with npm access.

    -

    If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one.

    +

    This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with npm access.

    +

    If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one.

    See Also

    • npm star
    • diff --git a/deps/npm/docs/output/commands/npm-update.html b/deps/npm/docs/output/commands/npm-update.html index ecd560cc49574c..bda592e900b0b4 100644 --- a/deps/npm/docs/output/commands/npm-update.html +++ b/deps/npm/docs/output/commands/npm-update.html @@ -141,9 +141,9 @@
      -

      +

      npm-update - @11.6.2 + @11.6.3

      Update packages
      @@ -243,8 +243,7 @@

      Updating Globally-Installed Packag

      Configuration

      save

        -
      • Default: true unless when using npm update where it defaults to -false
      • +
      • Default: true unless when using npm update where it defaults to false
      • Type: Boolean

      Save installed packages to a package.json file as dependencies.

      @@ -256,13 +255,12 @@

      global

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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.

      -
    • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
    • +
    • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
    • bin files are linked to {prefix}/bin
    • man pages are linked to {prefix}/share/man
    @@ -272,12 +270,11 @@

    install-strategy

  • Type: "hoisted", "nested", "shallow", or "linked"
  • Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted.

    +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted.

    legacy-bundling

    • Default: false
    • @@ -285,10 +282,10 @@

      legacy-bundling

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=nested
    -

    Instead of hoisting package installs in node_modules, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets --install-strategy=nested.

    +

    Instead of hoisting package installs in node_modules, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets --install-strategy=nested.

    global-style

    • Default: false
    • @@ -296,8 +293,8 @@

      global-style

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=shallow
    -

    Only install direct dependencies in the top level node_modules, but -hoist on deeper dependencies. Sets --install-strategy=shallow.

    +

    Only install direct dependencies in the top level node_modules, but hoist +on deeper dependencies. Sets --install-strategy=shallow.

    omit

    • Default: 'dev' if the NODE_ENV environment variable is set to @@ -308,91 +305,85 @@

      omit

      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.

      +

      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

      • Default:
      • -
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple -times)
      • +
      • Type: "prod", "dev", "optional", or "peer" (can be set multiple times)
      -

      Option that allows for defining which types of dependencies to -install.

      +

      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.

      +

      Dependency types specified in --include will not be omitted, regardless of +the order in which omit/include are specified on the command-line.

      strict-peer-deps

      • Default: false
      • Type: Boolean

      If set to true, and --legacy-peer-deps is not set, then any -conflicting peerDependencies will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships.

      -

      By default, conflicting peerDependencies deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -peerDependencies object.

      -

      When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If --strict-peer-deps is -set, then this warning is treated as a failure.

      +conflicting peerDependencies will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships.

      +

      By default, conflicting peerDependencies deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's peerDependencies object.

      +

      When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If --strict-peer-deps is set, then +this warning is treated as a failure.

      package-lock

      • Default: true
      • Type: Boolean
      -

      If set to false, then ignore package-lock.json files when -installing. This will also prevent writing package-lock.json if -save is true.

      +

      If set to false, then ignore package-lock.json files when installing. This +will also prevent writing package-lock.json if save is true.

      foreground-scripts

        -
      • Default: false unless when using npm pack or npm publish where -it defaults to true
      • +
      • Default: false unless when using npm pack or npm publish where it +defaults to true
      • Type: Boolean
      -

      Run all build scripts (ie, preinstall, install, and -postinstall) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process.

      -

      Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging.

      +

      Run all build scripts (ie, preinstall, install, and postinstall) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process.

      +

      Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging.

      ignore-scripts

      • Default: false
      • Type: Boolean

      If true, npm does not run scripts specified in package.json files.

      -

      Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

      +

      Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

      audit

      • Default: true
      • Type: Boolean
      -

      When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for npm audit for details -on what is submitted.

      +

      When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for npm audit for details on what is +submitted.

      before

      • Default: null
      • Type: null or Date

      If passed to npm install, will rebuild the npm tree such that only -versions that were available on or before the given date are -installed. If there are no versions available for the current set of -dependencies, the command will error.

      -

      If the requested version is a dist-tag and the given tag does not -pass the --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.

      +versions that were available on or before the given date are installed. +If there are no versions available for the current set of dependencies, the +command will error.

      +

      If the requested version is a dist-tag and the given tag does not pass the +--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.

      • Default: true
      • @@ -400,37 +391,35 @@

      Tells npm to create symlinks (or .cmd shims on Windows) for package executables.

      -

      Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems.

      +

      Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems.

      fund

      • Default: true
      • Type: Boolean

      When "true" displays the message at the end of each npm install -acknowledging the number of dependencies looking for funding. See -npm fund for details.

      +acknowledging the number of dependencies looking for funding. See npm fund for details.

      dry-run

      • Default: false
      • Type: 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.

      +

      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.

      workspace

      • Default:
      • Type: String (can be set multiple times)
      -

      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.

      +

      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:

      • Workspace names
      • @@ -438,9 +427,9 @@

        workspace

      • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
      -

      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.

      +

      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

        @@ -449,14 +438,13 @@

        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:

      +

      Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

        -
      • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
      • +
      • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

      This value is not exported to the environment for child processes.

      include-workspace-root

      @@ -465,19 +453,18 @@

      include-workspace-root

    • Type: Boolean

    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.

    +

    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.

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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

    -

    Prevents throwing an error when npm version is used to set the new -version to the same value as the current version.

    +

    Prevents throwing an error when npm version is used to set the new version +to the same value as the current version.

    commit-hooks

    • Default: true
    • @@ -177,8 +177,8 @@

      git-tag-version

    • Default: true
    • Type: Boolean
    -

    Tag the commit when using the npm version command. Setting this to -false results in no commit being made at all.

    +

    Tag the commit when using the npm version command. Setting this to false +results in no commit being made at all.

    json

    • Default: false
    • @@ -186,8 +186,8 @@

      json

    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.
    • +
    • 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.

    preid

    @@ -195,25 +195,34 @@

    preid

  • Default: ""
  • Type: String
  • -

    The "prerelease identifier" to use as a prefix for the "prerelease" -part of a semver. Like the rc in 1.2.0-rc.8.

    +

    The "prerelease identifier" to use as a prefix for the "prerelease" part of +a semver. Like the rc in 1.2.0-rc.8.

    sign-git-tag

    • Default: false
    • Type: Boolean
    -

    If set to true, then the npm version command will tag the version -using -s to add a signature.

    -

    Note that git requires you to have set up GPG keys in your git -configs for this to work properly.

    +

    If set to true, then the npm version command will tag the version using +-s to add a signature.

    +

    Note that git requires you to have set up GPG keys in your git configs for +this to work properly.

    +

    save

    +
      +
    • Default: true unless when using npm update where it defaults to false
    • +
    • Type: Boolean
    • +
    +

    Save installed packages to a package.json file as dependencies.

    +

    When used with the npm rm command, removes the dependency from +package.json.

    +

    Will also prevent writing to package-lock.json if set to false.

    workspace

    • Default:
    • Type: String (can be set multiple times)
    -

    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.

    +

    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:

    • Workspace names
    • @@ -221,9 +230,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -232,14 +241,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    workspaces-update

    @@ -247,20 +255,28 @@

    workspaces-update

  • Default: true
  • Type: Boolean
  • -

    If set to true, the npm cli will run an update after operations that -may possibly change the workspaces installed to the node_modules -folder.

    +

    If set to true, the npm cli will run an update after operations that may +possibly change the workspaces installed to the node_modules folder.

    include-workspace-root

    • Default: false
    • Type: Boolean

    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.

    +

    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.

    +

    ignore-scripts

    +
      +
    • Default: false
    • +
    • Type: Boolean
    • +
    +

    If true, npm does not run scripts specified in package.json files.

    +

    Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

    Description

    Run this in a package directory to bump the version and write the new data back to package.json, package-lock.json, and, if present, npm-shrinkwrap.json.

    diff --git a/deps/npm/docs/output/commands/npm-view.html b/deps/npm/docs/output/commands/npm-view.html index e48ae33a4c619d..9c0e30efee1218 100644 --- a/deps/npm/docs/output/commands/npm-view.html +++ b/deps/npm/docs/output/commands/npm-view.html @@ -141,9 +141,9 @@
    -

    +

    npm-view - @11.6.2 + @11.6.3

    View registry info
    @@ -217,8 +217,8 @@

    json

    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.
    • +
    • 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.

    workspace

    @@ -226,9 +226,9 @@

    workspace

  • Default:
  • Type: String (can be set multiple times)
  • -

    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.

    +

    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:

    • Workspace names
    • @@ -236,9 +236,9 @@

      workspace

    • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
    -

    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.

    +

    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

      @@ -247,14 +247,13 @@

      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:

    +

    Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

      -
    • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
    • +
    • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

    This value is not exported to the environment for child processes.

    include-workspace-root

    @@ -263,10 +262,9 @@

    include-workspace-root

  • Type: Boolean
  • 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.

    +

    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.

    Output

    If only a single string field for a single version is output, then it will not be colorized or quoted, to enable piping the output to another command. diff --git a/deps/npm/docs/output/commands/npm-whoami.html b/deps/npm/docs/output/commands/npm-whoami.html index f7407455d0de8b..86515fe7870f42 100644 --- a/deps/npm/docs/output/commands/npm-whoami.html +++ b/deps/npm/docs/output/commands/npm-whoami.html @@ -141,9 +141,9 @@

    -

    +

    npm-whoami - @11.6.2 + @11.6.3

    Display npm username
    diff --git a/deps/npm/docs/output/commands/npm.html b/deps/npm/docs/output/commands/npm.html index 6bb3e7ffd89962..5cb902d2b16709 100644 --- a/deps/npm/docs/output/commands/npm.html +++ b/deps/npm/docs/output/commands/npm.html @@ -141,9 +141,9 @@
    -

    +

    npm - @11.6.2 + @11.6.3

    javascript package manager
    @@ -158,7 +158,7 @@

    Table of contents

    Note: This command is unaware of workspaces.

    Version

    -

    11.6.2

    +

    11.6.3

    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 1358a8399dce97..721cfd0967e28b 100644 --- a/deps/npm/docs/output/commands/npx.html +++ b/deps/npm/docs/output/commands/npx.html @@ -141,9 +141,9 @@
    -

    +

    npx - @11.6.2 + @11.6.3

    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 5b0f7946324bdf..506da51d46c0d6 100644 --- a/deps/npm/docs/output/configuring-npm/folders.html +++ b/deps/npm/docs/output/configuring-npm/folders.html @@ -141,9 +141,9 @@
    -

    +

    folders - @11.6.2 + @11.6.3

    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 2c55261fc691f4..a4f342963dd06f 100644 --- a/deps/npm/docs/output/configuring-npm/install.html +++ b/deps/npm/docs/output/configuring-npm/install.html @@ -141,9 +141,9 @@
    -

    +

    install - @11.6.2 + @11.6.3

    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 5b0f7946324bdf..506da51d46c0d6 100644 --- a/deps/npm/docs/output/configuring-npm/npm-global.html +++ b/deps/npm/docs/output/configuring-npm/npm-global.html @@ -141,9 +141,9 @@
    -

    +

    folders - @11.6.2 + @11.6.3

    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 bd50e9c1f15907..6682591557b5a4 100644 --- a/deps/npm/docs/output/configuring-npm/npm-json.html +++ b/deps/npm/docs/output/configuring-npm/npm-json.html @@ -141,9 +141,9 @@
    -

    +

    package.json - @11.6.2 + @11.6.3

    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 db174340c220bf..2d81edfc27cf39 100644 --- a/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html +++ b/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html @@ -141,9 +141,9 @@
    -

    +

    npm-shrinkwrap.json - @11.6.2 + @11.6.3

    A publishable lockfile
    diff --git a/deps/npm/docs/output/configuring-npm/npmrc.html b/deps/npm/docs/output/configuring-npm/npmrc.html index 819e8c80b66213..2b2b876a44188f 100644 --- a/deps/npm/docs/output/configuring-npm/npmrc.html +++ b/deps/npm/docs/output/configuring-npm/npmrc.html @@ -141,9 +141,9 @@
    -

    +

    npmrc - @11.6.2 + @11.6.3

    The npm config files
    diff --git a/deps/npm/docs/output/configuring-npm/package-json.html b/deps/npm/docs/output/configuring-npm/package-json.html index bd50e9c1f15907..6682591557b5a4 100644 --- a/deps/npm/docs/output/configuring-npm/package-json.html +++ b/deps/npm/docs/output/configuring-npm/package-json.html @@ -141,9 +141,9 @@
    -

    +

    package.json - @11.6.2 + @11.6.3

    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 cfb5d95a827395..1065eb0f69bd8f 100644 --- a/deps/npm/docs/output/configuring-npm/package-lock-json.html +++ b/deps/npm/docs/output/configuring-npm/package-lock-json.html @@ -141,9 +141,9 @@
    -

    +

    package-lock.json - @11.6.2 + @11.6.3

    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 1cffacc56efad2..12fff8d16e8067 100644 --- a/deps/npm/docs/output/using-npm/config.html +++ b/deps/npm/docs/output/using-npm/config.html @@ -141,16 +141,16 @@
    -

    +

    config - @11.6.2 + @11.6.3

    More than you probably want to know about npm configuration

    Table of contents

    -
    +

    Description

    @@ -244,77 +244,75 @@

    _auth

  • Default: null
  • Type: null or String
  • -

    A basic-auth string to use when authenticating against the npm -registry. This will ONLY be used to authenticate against the npm -registry. For other registries you will need to scope it like -"//other-registry.tld/:_auth"

    -

    Warning: This should generally not be set via a command-line option. -It is safer to use a registry-provided authentication bearer token -stored in the ~/.npmrc file by running npm login.

    +

    A basic-auth string to use when authenticating against the npm registry. +This will ONLY be used to authenticate against the npm registry. For other +registries you will need to scope it like "//other-registry.tld/:_auth"

    +

    Warning: This should generally not be set via a command-line option. It is +safer to use a registry-provided authentication bearer token stored in the +~/.npmrc file by running npm login.

    access

      -
    • Default: 'public' for new packages, existing packages it will not -change the current level
    • +
    • Default: 'public' for new packages, existing packages it will not change the +current level
    • Type: null, "restricted", or "public"

    If you do not want your scoped package to be publicly viewable (and installable) set --access=restricted.

    Unscoped packages cannot be set to restricted.

    -

    Note: This defaults to not changing the current access level for -existing packages. Specifying a value of restricted or public -during publish will change the access for an existing package the -same way that npm access set status would.

    +

    Note: This defaults to not changing the current access level for existing +packages. Specifying a value of restricted or public during publish will +change the access for an existing package the same way that npm access set status would.

    all

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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.

    allow-same-version

    • Default: false
    • Type: Boolean
    -

    Prevents throwing an error when npm version is used to set the new -version to the same value as the current version.

    +

    Prevents throwing an error when npm version is used to set the new version +to the same value as the current version.

    audit

    • Default: true
    • Type: Boolean
    -

    When "true" submit audit reports alongside the current npm command to -the default registry and all registries configured for scopes. See -the documentation for npm audit for details -on what is submitted.

    +

    When "true" submit audit reports alongside the current npm command to the +default registry and all registries configured for scopes. See the +documentation for npm audit for details on what is +submitted.

    audit-level

    • Default: null
    • Type: null, "info", "low", "moderate", "high", "critical", or "none"
    -

    The minimum level of vulnerability for npm audit to exit with a -non-zero exit code.

    +

    The minimum level of vulnerability for npm audit to exit with a non-zero +exit code.

    auth-type

    • Default: "web"
    • Type: "legacy" or "web"
    -

    What authentication strategy to use with login. Note that if an -otp config is given, this value will always be set to legacy.

    +

    What authentication strategy to use with login. Note that if an otp +config is given, this value will always be set to legacy.

    before

    • Default: null
    • Type: null or Date

    If passed to npm install, will rebuild the npm tree such that only -versions that were available on or before the given date are -installed. If there are no versions available for the current set of -dependencies, the command will error.

    -

    If the requested version is a dist-tag and the given tag does not -pass the --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.

    +versions that were available on or before the given date are installed. +If there are no versions available for the current set of dependencies, the +command will error.

    +

    If the requested version is a dist-tag and the given tag does not pass the +--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.

    • Default: true
    • @@ -322,9 +320,9 @@

    Tells npm to create symlinks (or .cmd shims on Windows) for package executables.

    -

    Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems.

    +

    Set to false to have it not do this. This can be used to work around the +fact that some file systems don't support symlinks, even on ostensibly Unix +systems.

    browser

    • Default: macOS: "open", Windows: "start", Others: "xdg-open"
    • @@ -334,19 +332,27 @@

      browser

      Set to false to suppress browser behavior and instead print urls to terminal.

      Set to true to use default system URL opener.

      +

      bypass-2fa

      +
        +
      • Default: false
      • +
      • Type: Boolean
      • +
      +

      When creating a Granular Access Token with npm token create, setting this +to true will allow the token to bypass two-factor authentication. This is +useful for automation and CI/CD workflows.

      ca

      • Default: null
      • Type: null or String (can be set multiple times)

      The Certificate Authority signing certificate that is trusted for SSL -connections to the registry. Values should be in PEM format (Windows -calls it "Base-64 encoded X.509 (.CER)") with newlines replaced by -the string "\n". For example:

      +connections to the registry. Values should be in PEM format (Windows calls +it "Base-64 encoded X.509 (.CER)") with newlines replaced by the string +"\n". For example:

      ca="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
       
      -

      Set to null to only allow "known" registrars, or to a specific CA -cert to trust only that specific signing authority.

      +

      Set to null to only allow "known" registrars, or to a specific CA cert to +trust only that specific signing authority.

      Multiple CAs can be trusted by specifying an array of certificates:

      ca[]="..."
       ca[]="..."
      @@ -363,18 +369,16 @@ 

      cafile

    • Default: null
    • Type: Path
    -

    A path to a file containing one or multiple Certificate Authority -signing certificates. Similar to the ca setting, but allows for -multiple CA's, as well as for the CA information to be stored in a -file on disk.

    +

    A path to a file containing one or multiple Certificate Authority signing +certificates. Similar to the ca setting, but allows for multiple CA's, as +well as for the CA information to be stored in a file on disk.

    call

    • Default: ""
    • Type: String
    -

    Optional companion option for npm exec, npx that allows for -specifying a custom command to be run along with the installed -packages.

    +

    Optional companion option for npm exec, npx that allows for specifying a +custom command to be run along with the installed packages.

    npm exec --package yo --package generator-node --call "yo node"
     

    cidr

    @@ -382,16 +386,15 @@

    cidr

  • Default: null
  • Type: null or String (can be set multiple times)
  • -

    This is a list of CIDR address to be used when configuring limited -access tokens with the npm token create command.

    +

    This is a list of CIDR address to be used when configuring limited access +tokens with the npm token create command.

    color

      -
    • Default: true unless the NO_COLOR environ is set to something other -than '0'
    • +
    • Default: true unless the NO_COLOR environ is set to something other than '0'
    • Type: "always" or Boolean
    -

    If false, never shows colors. If "always" then always shows colors. -If true, then only prints color codes for tty file descriptors.

    +

    If false, never shows colors. If "always" then always shows colors. If +true, then only prints color codes for tty file descriptors.

    commit-hooks

    • Default: true
    • @@ -403,18 +406,16 @@

      cpu

    • Default: null
    • Type: null or String
    -

    Override CPU architecture of native modules to install. Acceptable -values are same as cpu field of package.json, which comes from -process.arch.

    +

    Override CPU architecture of native modules to install. Acceptable values +are same as cpu field of package.json, which comes from process.arch.

    depth

    • Default: Infinity if --all is set; otherwise, 0
    • Type: null or Number

    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.

    +

    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.

    description

    • Default: true
    • @@ -476,13 +477,12 @@

      dry-run

    • Default: false
    • Type: 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.

    +

    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.

    editor

    • Default: The EDITOR or VISUAL environment variables, or @@ -495,9 +495,9 @@

      engine-strict

    • Default: false
    • Type: Boolean
    -

    If set to true, then npm will stubbornly refuse to install (or even -consider installing) any package that claims to not be compatible -with the current Node.js version.

    +

    If set to true, then npm will stubbornly refuse to install (or even consider +installing) any package that claims to not be compatible with the current +Node.js version.

    This can be overridden by setting the --force flag.

    expect-result-count

      @@ -511,25 +511,32 @@

      expect-results

    • Default: null
    • Type: null or Boolean
    -

    Tells npm whether or not to expect results from the command. Can be -either true (expect some results) or false (expect no results).

    +

    Tells npm whether or not to expect results from the command. Can be either +true (expect some results) or false (expect no results).

    This config cannot be used with: expect-result-count

    +

    expires

    +
      +
    • Default: null
    • +
    • Type: null or Number
    • +
    +

    When creating a Granular Access Token with npm token create, this sets the +expiration in days. If not specified, the server will determine the default +expiration.

    fetch-retries

    • Default: 2
    • Type: Number
    -

    The "retries" config for the retry module to use when fetching -packages from the registry.

    -

    npm will retry idempotent read requests to the registry in the case -of network failures or 5xx HTTP errors.

    +

    The "retries" config for the retry module to use when fetching packages +from the registry.

    +

    npm will retry idempotent read requests to the registry in the case of +network failures or 5xx HTTP errors.

    fetch-retry-factor

    • Default: 10
    • Type: Number
    -

    The "factor" config for the retry module to use when fetching -packages.

    +

    The "factor" config for the retry module to use when fetching packages.

    fetch-retry-maxtimeout

    • Default: 60000 (1 minute)
    • @@ -561,16 +568,14 @@

      force

    • Allow clobbering non-npm files in global installs.
    • Allow the npm version command to work on an unclean git repository.
    • Allow deleting the cache folder with npm cache clean.
    • -
    • Allow installing packages that have an engines declaration -requiring a different version of npm.
    • -
    • Allow installing packages that have an engines declaration -requiring a different version of node, even if --engine-strict is -enabled.
    • -
    • Allow npm audit fix to install modules outside your stated -dependency range (including SemVer-major changes).
    • +
    • Allow installing packages that have an engines declaration requiring a +different version of npm.
    • +
    • Allow installing packages that have an engines declaration requiring a +different version of node, even if --engine-strict is enabled.
    • +
    • Allow npm audit fix to install modules outside your stated dependency +range (including SemVer-major changes).
    • Allow unpublishing all versions of a published package.
    • -
    • Allow conflicting peerDependencies to be installed in the root -project.
    • +
    • Allow conflicting peerDependencies to be installed in the root project.
    • Implicitly set --yes during npm init.
    • Allow clobbering existing values in npm pkg
    • Allow unpublishing of entire packages (not just a single version).
    • @@ -579,58 +584,54 @@

      force

      recommended that you do not use this option!

      foreground-scripts

        -
      • Default: false unless when using npm pack or npm publish where -it defaults to true
      • +
      • Default: false unless when using npm pack or npm publish where it +defaults to true
      • Type: Boolean
      -

      Run all build scripts (ie, preinstall, install, and -postinstall) scripts for installed packages in the foreground -process, sharing standard input, output, and error with the main npm -process.

      -

      Note that this will generally make installs run slower, and be much -noisier, but can be useful for debugging.

      +

      Run all build scripts (ie, preinstall, install, and postinstall) +scripts for installed packages in the foreground process, sharing standard +input, output, and error with the main npm process.

      +

      Note that this will generally make installs run slower, and be much noisier, +but can be useful for debugging.

      format-package-lock

      • Default: true
      • Type: Boolean
      -

      Format package-lock.json or npm-shrinkwrap.json as a human -readable file.

      +

      Format package-lock.json or npm-shrinkwrap.json as a human readable +file.

      fund

      • Default: true
      • Type: Boolean

      When "true" displays the message at the end of each npm install -acknowledging the number of dependencies looking for funding. See -npm fund for details.

      +acknowledging the number of dependencies looking for funding. See npm fund for details.

      git

      • Default: "git"
      • Type: String
      -

      The command to use for git commands. If git is installed on the -computer, but is not in the PATH, then set this to the full path to -the git binary.

      +

      The command to use for git commands. If git is installed on the computer, +but is not in the PATH, then set this to the full path to the git binary.

      git-tag-version

      • Default: true
      • Type: Boolean
      -

      Tag the commit when using the npm version command. Setting this to -false results in no commit being made at all.

      +

      Tag the commit when using the npm version command. Setting this to false +results in no commit being made at all.

      global

      • Default: false
      • Type: Boolean
      -

      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.

      +

      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.

        -
      • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
      • +
      • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
      • bin files are linked to {prefix}/bin
      • man pages are linked to {prefix}/share/man
      @@ -653,20 +654,20 @@

      https-proxy

    • Type: null or URL

    A proxy to use for outgoing https requests. If the HTTPS_PROXY or -https_proxy or HTTP_PROXY or http_proxy environment variables -are set, proxy settings will be honored by the underlying -make-fetch-happen library.

    +https_proxy or HTTP_PROXY or http_proxy environment variables are set, +proxy settings will be honored by the underlying make-fetch-happen +library.

    if-present

    • Default: false
    • Type: Boolean
    -

    If true, npm will not exit with an error code when run is invoked -for a script that isn't defined in the scripts section of -package.json. This option can be used when it's desirable to -optionally run a script when it's present and fail if the script -fails. This is useful, for example, when running scripts that may -only apply for some builds in an otherwise generic CI setup.

    +

    If true, npm will not exit with an error code when run is invoked for a +script that isn't defined in the scripts section of package.json. This +option can be used when it's desirable to optionally run a script when it's +present and fail if the script fails. This is useful, for example, when +running scripts that may only apply for some builds in an otherwise generic +CI setup.

    This value is not exported to the environment for child processes.

    ignore-scripts

      @@ -674,28 +675,26 @@

      ignore-scripts

    • Type: Boolean

    If true, npm does not run scripts specified in package.json files.

    -

    Note that commands explicitly intended to run a particular script, -such as npm start, npm stop, npm restart, npm test, and npm run will still run their intended script if ignore-scripts is set, -but they will not run any pre- or post-scripts.

    +

    Note that commands explicitly intended to run a particular script, such as +npm start, npm stop, npm restart, npm test, and npm run will still +run their intended script if ignore-scripts is set, but they will not +run any pre- or post-scripts.

    include

    • Default:
    • -
    • Type: "prod", "dev", "optional", or "peer" (can be set multiple -times)
    • +
    • Type: "prod", "dev", "optional", or "peer" (can be set multiple times)
    -

    Option that allows for defining which types of dependencies to -install.

    +

    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.

    +

    Dependency types specified in --include will not be omitted, regardless of +the order in which omit/include are specified on the command-line.

    include-staged

    • Default: false
    • Type: Boolean
    -

    Allow installing "staged" published packages, as defined by npm RFC -PR #92.

    +

    Allow installing "staged" published packages, as defined by npm RFC PR +#92.

    This is experimental, and not implemented by the npm public registry.

    include-workspace-root

      @@ -703,25 +702,22 @@

      include-workspace-root

    • Type: Boolean

    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.

    +

    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.

    init-author-email

    • Default: ""
    • Type: String
    -

    The value npm init should use by default for the package author's -email.

    +

    The value npm init should use by default for the package author's email.

    init-author-name

    • Default: ""
    • Type: String
    -

    The value npm init should use by default for the package author's -name.

    +

    The value npm init should use by default for the package author's name.

    init-author-url

    • Default: ""
    • @@ -742,49 +738,47 @@

      init-module

    A module that will be loaded by the npm init command. See the documentation for the -init-package-json module -for more information, or npm init.

    +init-package-json module for +more information, or npm init.

    init-private

    • Default: false
    • Type: Boolean
    -

    The value npm init should use by default for the package's private -flag.

    +

    The value npm init should use by default for the package's private flag.

    init-type

    • Default: "commonjs"
    • Type: String
    -

    The value that npm init should use by default for the package.json -type field.

    +

    The value that npm init should use by default for the package.json type +field.

    init-version

    • Default: "1.0.0"
    • Type: SemVer string
    -

    The value that npm init should use by default for the package -version number, if not already set in package.json.

    +

    The value that npm init should use by default for the package version +number, if not already set in package.json.

    • Default: false
    • Type: Boolean
    -

    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.

    +

    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.

    install-strategy

    • Default: "hoisted"
    • Type: "hoisted", "nested", "shallow", or "linked"

    Sets the strategy for installing packages in node_modules. hoisted -(default): Install non-duplicated in top-level, and duplicated as -necessary within directory structure. nested: (formerly ---legacy-bundling) install in place, no hoisting. shallow (formerly ---global-style) only install direct deps at top-level. linked: -(experimental) install in node_modules/.store, link in place, -unhoisted.

    +(default): Install non-duplicated in top-level, and duplicated as necessary +within directory structure. nested: (formerly --legacy-bundling) install in +place, no hoisting. shallow (formerly --global-style) only install direct +deps at top-level. linked: (experimental) install in node_modules/.store, +link in place, unhoisted.

    json

    • Default: false
    • @@ -792,8 +786,8 @@

      json

    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.
    • +
    • 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.

    legacy-peer-deps

    @@ -801,83 +795,77 @@

    legacy-peer-deps

  • Default: false
  • Type: Boolean
  • -

    Causes npm to completely ignore peerDependencies when building a -package tree, as in npm versions 3 through 6.

    -

    If a package cannot be installed because of overly strict -peerDependencies that collide, it provides a way to move forward -resolving the situation.

    -

    This differs from --omit=peer, in that --omit=peer will avoid -unpacking peerDependencies on disk, but will still design a tree -such that peerDependencies could be unpacked in a correct place.

    -

    Use of legacy-peer-deps is not recommended, as it will not enforce -the peerDependencies contract that meta-dependencies may rely on.

    +

    Causes npm to completely ignore peerDependencies when building a package +tree, as in npm versions 3 through 6.

    +

    If a package cannot be installed because of overly strict peerDependencies +that collide, it provides a way to move forward resolving the situation.

    +

    This differs from --omit=peer, in that --omit=peer will avoid unpacking +peerDependencies on disk, but will still design a tree such that +peerDependencies could be unpacked in a correct place.

    +

    Use of legacy-peer-deps is not recommended, as it will not enforce the +peerDependencies contract that meta-dependencies may rely on.

    libc

    • Default: null
    • Type: null or String
    -

    Override libc of native modules to install. Acceptable values are -same as libc field of package.json

    +

    Override libc of native modules to install. Acceptable values are same as +libc field of package.json

    • Default: false
    • Type: Boolean
    -

    Used with npm ls, limiting output to only those packages that are -linked.

    +

    Used with npm ls, limiting output to only those packages that are linked.

    local-address

    • Default: null
    • Type: IP Address
    -

    The IP address of the local interface to use when making connections -to the npm registry. Must be IPv4 in versions of Node prior to 0.12.

    +

    The IP address of the local interface to use when making connections to the +npm registry. Must be IPv4 in versions of Node prior to 0.12.

    location

      -
    • Default: "user" unless --global is passed, which will also set this -value to "global"
    • +
    • Default: "user" unless --global is passed, which will also set this value +to "global"
    • Type: "global", "user", or "project"

    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.

    +

    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.

      -
    • packages are installed into the {prefix}/lib/node_modules folder, -instead of the current working directory.
    • +
    • packages are installed into the {prefix}/lib/node_modules folder, instead +of the current working directory.
    • bin files are linked to {prefix}/bin
    • man pages are linked to {prefix}/share/man

    lockfile-version

      -
    • Default: Version 3 if no lockfile, auto-converting v1 lockfiles to -v3; otherwise, maintain current lockfile version.
    • +
    • Default: Version 3 if no lockfile, auto-converting v1 lockfiles to v3; +otherwise, maintain current lockfile version.
    • Type: null, 1, 2, 3, "1", "2", or "3"

    Set the lockfile format version to be used in package-lock.json and npm-shrinkwrap-json files. Possible options are:

    -

    1: The lockfile version used by npm versions 5 and 6. Lacks some data -that is used during the install, resulting in slower and possibly -less deterministic installs. Prevents lockfile churn when -interoperating with older npm versions.

    -

    2: The default lockfile version used by npm version 7 and 8. Includes -both the version 1 lockfile data and version 3 lockfile data, for -maximum determinism and interoperability, at the expense of more -bytes on disk.

    -

    3: Only the new lockfile information introduced in npm version 7. -Smaller on disk than lockfile version 2, but not interoperable with -older npm versions. Ideal if all users are on npm version 7 and -higher.

    +

    1: The lockfile version used by npm versions 5 and 6. Lacks some data that +is used during the install, resulting in slower and possibly less +deterministic installs. Prevents lockfile churn when interoperating with +older npm versions.

    +

    2: The default lockfile version used by npm version 7 and 8. Includes both +the version 1 lockfile data and version 3 lockfile data, for maximum +determinism and interoperability, at the expense of more bytes on disk.

    +

    3: Only the new lockfile information introduced in npm version 7. Smaller on +disk than lockfile version 2, but not interoperable with older npm versions. +Ideal if all users are on npm version 7 and higher.

    loglevel

    • Default: "notice"
    • -
    • Type: "silent", "error", "warn", "notice", "http", "info", "verbose", -or "silly"
    • +
    • Type: "silent", "error", "warn", "notice", "http", "info", "verbose", or +"silly"
    -

    What level of logs to report. All logs are written to a debug log, -with the path to that file printed if the execution of a command -fails.

    +

    What level of logs to report. All logs are written to a debug log, with the +path to that file printed if the execution of a command fails.

    Any logs of a higher level than the setting are shown. The default is "notice".

    See also the foreground-scripts config.

    @@ -886,7 +874,8 @@

    logs-dir

  • Default: A directory named _logs inside the cache
  • Type: null or Path
  • -

    The location of npm's log directory. See npm logging for more information.

    +

    The location of npm's log directory. See npm logging +for more information.

    logs-max

    • Default: 10
    • @@ -905,33 +894,39 @@

      maxsockets

    • Default: 15
    • Type: Number
    -

    The maximum number of connections to use per origin -(protocol/host/port combination).

    +

    The maximum number of connections to use per origin (protocol/host/port +combination).

    message

    • Default: "%s"
    • Type: String
    -

    Commit message which is used by npm version when creating version -commit.

    +

    Commit message which is used by npm version when creating version commit.

    Any "%s" in the message will be replaced with the version number.

    +

    name

    +
      +
    • Default: null
    • +
    • Type: null or String
    • +
    +

    When creating a Granular Access Token with npm token create, this sets the +name/description for the token.

    node-gyp

    • Default: The path to the node-gyp bin that ships with npm
    • Type: Path
    -

    This is the location of the "node-gyp" bin. By default it uses one -that ships with npm itself.

    -

    You can use this config to specify your own "node-gyp" to run when it -is required to build a package.

    +

    This is the location of the "node-gyp" bin. By default it uses one that +ships with npm itself.

    +

    You can use this config to specify your own "node-gyp" to run when it is +required to build a package.

    node-options

    • Default: null
    • Type: null or String

    Options to pass through to Node.js via the NODE_OPTIONS environment -variable. This does not impact how npm itself is executed but it does -impact how lifecycle scripts are called.

    +variable. This does not impact how npm itself is executed but it does impact +how lifecycle scripts are called.

    noproxy

    • Default: The value of the NO_PROXY environment variable
    • @@ -944,9 +939,8 @@

      offline

    • Default: false
    • Type: Boolean
    -

    Force offline mode: no network requests will be done during install. -To allow the CLI to fill in missing cache data, see ---prefer-offline.

    +

    Force offline mode: no network requests will be done during install. To +allow the CLI to fill in missing cache data, see --prefer-offline.

    omit

    • Default: 'dev' if the NODE_ENV environment variable is set to @@ -957,36 +951,51 @@

      omit

      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.

      +

      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.

      omit-lockfile-registry-resolved

      • Default: false
      • Type: Boolean
      -

      This option causes npm to create lock files without a resolved key -for registry dependencies. Subsequent installs will need to resolve -tarball endpoints with the configured registry, likely resulting in a -longer install time.

      +

      This option causes npm to create lock files without a resolved key for +registry dependencies. Subsequent installs will need to resolve tarball +endpoints with the configured registry, likely resulting in a longer install +time.

      +

      orgs

      +
        +
      • Default: null
      • +
      • Type: null or String (can be set multiple times)
      • +
      +

      When creating a Granular Access Token with npm token create, this limits +the token access to specific organizations. Provide a comma-separated list +of organization names.

      +

      orgs-permission

      +
        +
      • Default: null
      • +
      • Type: null, "read-only", "read-write", or "no-access"
      • +
      +

      When creating a Granular Access Token with npm token create, sets the +permission level for organizations. Options are "read-only", "read-write", +or "no-access".

      os

      • Default: null
      • Type: null or String
      -

      Override OS of native modules to install. Acceptable values are same -as os field of package.json, which comes from process.platform.

      +

      Override OS of native modules to install. Acceptable values are same as os +field of package.json, which comes from process.platform.

      otp

      • Default: null
      • Type: null or String
      -

      This is a one-time password from a two-factor authenticator. It's -needed when publishing or changing package permissions with npm access.

      -

      If not set, and a registry response fails with a challenge for a -one-time password, npm will prompt on the command line for one.

      +

      This is a one-time password from a two-factor authenticator. It's needed +when publishing or changing package permissions with npm access.

      +

      If not set, and a registry response fails with a challenge for a one-time +password, npm will prompt on the command line for one.

      pack-destination

      • Default: "."
      • @@ -1004,91 +1013,117 @@

        package-lock

      • Default: true
      • Type: Boolean
      -

      If set to false, then ignore package-lock.json files when -installing. This will also prevent writing package-lock.json if -save is true.

      +

      If set to false, then ignore package-lock.json files when installing. This +will also prevent writing package-lock.json if save is true.

      package-lock-only

      • Default: false
      • Type: Boolean
      -

      If set to true, the current operation will only use the -package-lock.json, ignoring node_modules.

      +

      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.

      +

      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.

      +

      packages

      +
        +
      • Default:
      • +
      • Type: null or String (can be set multiple times)
      • +
      +

      When creating a Granular Access Token with npm token create, this limits +the token access to specific packages. Provide a comma-separated list of +package names.

      +

      packages-all

      +
        +
      • Default: false
      • +
      • Type: Boolean
      • +
      +

      When creating a Granular Access Token with npm token create, grants the +token access to all packages instead of limiting to specific packages.

      +

      packages-and-scopes-permission

      +
        +
      • Default: null
      • +
      • Type: null, "read-only", "read-write", or "no-access"
      • +
      +

      When creating a Granular Access Token with npm token create, sets the +permission level for packages and scopes. Options are "read-only", +"read-write", or "no-access".

      parseable

      • Default: false
      • Type: Boolean
      -

      Output parseable results from commands that write to standard output. -For npm search, this will be tab-separated table format.

      +

      Output parseable results from commands that write to standard output. For +npm search, this will be tab-separated table format.

      +

      password

      +
        +
      • Default: null
      • +
      • Type: null or String
      • +
      +

      Password for authentication. Can be provided via command line when creating +tokens, though it's generally safer to be prompted for it.

      prefer-dedupe

      • Default: false
      • Type: Boolean
      -

      Prefer to deduplicate packages if possible, rather than choosing a -newer version of a dependency.

      +

      Prefer to deduplicate packages if possible, rather than choosing a newer +version of a dependency.

      prefer-offline

      • Default: false
      • Type: Boolean
      -

      If true, staleness checks for cached data will be bypassed, but -missing data will be requested from the server. To force full offline -mode, use --offline.

      +

      If true, staleness checks for cached data will be bypassed, but missing data +will be requested from the server. To force full offline mode, use +--offline.

      prefer-online

      • Default: false
      • Type: Boolean
      -

      If true, staleness checks for cached data will be forced, making the -CLI look for updates immediately even for fresh package data.

      +

      If true, staleness checks for cached data will be forced, making the CLI +look for updates immediately even for fresh package data.

      prefix

        -
      • Default: In global mode, the folder where the node executable is -installed. Otherwise, the nearest parent folder containing either a -package.json file or a node_modules folder.
      • +
      • Default: In global mode, the folder where the node executable is installed. +Otherwise, the nearest parent folder containing either a package.json file +or a node_modules folder.
      • Type: Path
      -

      The location to install global items. If set on the command line, -then it forces non-global commands to run in the specified folder.

      +

      The location to install global items. If set on the command line, then it +forces non-global commands to run in the specified folder.

      preid

      • Default: ""
      • Type: String
      -

      The "prerelease identifier" to use as a prefix for the "prerelease" -part of a semver. Like the rc in 1.2.0-rc.8.

      +

      The "prerelease identifier" to use as a prefix for the "prerelease" part of +a semver. Like the rc in 1.2.0-rc.8.

      progress

        -
      • Default: true when not in CI and both stderr and stdout are TTYs -and not in a dumb terminal
      • +
      • Default: true when not in CI and both stderr and stdout are TTYs and not +in a dumb terminal
      • Type: Boolean
      -

      When set to true, npm will display a progress bar during time -intensive operations, if process.stderr and process.stdout are a -TTY.

      +

      When set to true, npm will display a progress bar during time intensive +operations, if process.stderr and process.stdout are a TTY.

      Set to false to suppress the progress bar.

      provenance

      • Default: false
      • Type: Boolean
      -

      When publishing from a supported cloud CI/CD system, the package will -be publicly linked to where it was built and published from.

      +

      When publishing from a supported cloud CI/CD system, the package will be +publicly linked to where it was built and published from.

      This config cannot be used with: provenance-file

      provenance-file

      • Default: null
      • Type: Path
      -

      When publishing, the provenance bundle at the given path will be -used.

      +

      When publishing, the provenance bundle at the given path will be used.

      This config cannot be used with: provenance

      proxy

        @@ -1096,15 +1131,15 @@

        proxy

      • Type: null, false, or URL

      A proxy to use for outgoing http requests. If the HTTP_PROXY or -http_proxy environment variables are set, proxy settings will be -honored by the underlying request library.

      +http_proxy environment variables are set, proxy settings will be honored +by the underlying request library.

      read-only

      • Default: false
      • Type: Boolean
      -

      This is used to mark a token as unable to publish when configuring -limited access tokens with the npm token create command.

      +

      This is used to mark a token as unable to publish when configuring limited +access tokens with the npm token create command.

      rebuild-bundle

      • Default: true
      • @@ -1122,17 +1157,16 @@

        replace-registry-host

      • Default: "npmjs"
      • Type: "npmjs", "never", "always", or String
      -

      Defines behavior for replacing the registry host in a lockfile with -the configured registry.

      +

      Defines behavior for replacing the registry host in a lockfile with the +configured registry.

      The default behavior is to replace package dist URLs from the default -registry (https://registry.npmjs.org) to the configured registry. If -set to "never", then use the registry value. If set to "always", then -replace the registry host with the configured host every time.

      +registry (https://registry.npmjs.org) to the configured registry. If set to +"never", then use the registry value. If set to "always", then replace the +registry host with the configured host every time.

      You may also specify a bare hostname (e.g., "registry.npmjs.org").

      save

        -
      • Default: true unless when using npm update where it defaults to -false
      • +
      • Default: true unless when using npm update where it defaults to false
      • Type: Boolean

      Save installed packages to a package.json file as dependencies.

      @@ -1147,30 +1181,27 @@

      save-bundle

      If a package would be saved at install time by the use of --save, --save-dev, or --save-optional, then also put it in the bundleDependencies list.

      -

      Ignored if --save-peer is set, since peerDependencies cannot be -bundled.

      +

      Ignored if --save-peer is set, since peerDependencies cannot be bundled.

      save-dev

      • Default: false
      • Type: Boolean

      Save installed packages to a package.json file as devDependencies.

      -

      This config cannot be used with: save-optional, save-peer, -save-prod

      +

      This config cannot be used with: save-optional, save-peer, save-prod

      save-exact

      • Default: false
      • Type: Boolean
      -

      Dependencies saved to package.json will be configured with an exact -version rather than using npm's default semver range operator.

      +

      Dependencies saved to package.json will be configured with an exact version +rather than using npm's default semver range operator.

      save-optional

      • Default: false
      • Type: Boolean
      -

      Save installed packages to a package.json file as -optionalDependencies.

      +

      Save installed packages to a package.json file as optionalDependencies.

      This config cannot be used with: save-dev, save-peer, save-prod

      save-peer

        @@ -1178,32 +1209,28 @@

        save-peer

      • Type: Boolean

      Save installed packages to a package.json file as peerDependencies

      -

      This config cannot be used with: save-dev, save-optional, -save-prod

      +

      This config cannot be used with: save-dev, save-optional, save-prod

      save-prefix

      • Default: "^"
      • Type: String
      -

      Configure how versions of packages installed to a package.json file -via --save or --save-dev get prefixed.

      -

      For example if a package has version 1.2.3, by default its version -is set to ^1.2.3 which allows minor upgrades for that package, but -after npm config set save-prefix='~' it would be set to ~1.2.3 -which only allows patch upgrades.

      +

      Configure how versions of packages installed to a package.json file via +--save or --save-dev get prefixed.

      +

      For example if a package has version 1.2.3, by default its version is set +to ^1.2.3 which allows minor upgrades for that package, but after npm config set save-prefix='~' it would be set to ~1.2.3 which only allows +patch upgrades.

      save-prod

      • Default: false
      • Type: Boolean
      -

      Save installed packages into dependencies specifically. This is -useful if a package already exists in devDependencies or -optionalDependencies, but you want to move it to be a non-optional -production dependency.

      -

      This is the default behavior if --save is true, and neither ---save-dev or --save-optional are true.

      -

      This config cannot be used with: save-dev, save-optional, -save-peer

      +

      Save installed packages into dependencies specifically. This is useful if +a package already exists in devDependencies or optionalDependencies, but +you want to move it to be a non-optional production dependency.

      +

      This is the default behavior if --save is true, and neither --save-dev +or --save-optional are true.

      +

      This config cannot be used with: save-dev, save-optional, save-peer

      sbom-format

      • Default: null
      • @@ -1215,9 +1242,9 @@

        sbom-type

      • Default: "library"
      • Type: "library", "application", or "framework"
      -

      The type of package described by the generated SBOM. For SPDX, this -is the value for the primaryPackagePurpose field. For CycloneDX, -this is the value for the type field.

      +

      The type of package described by the generated SBOM. For SPDX, this is the +value for the primaryPackagePurpose field. For CycloneDX, this is the +value for the type field.

      scope

      • Default: the scope of the current project, if any, or ""
      • @@ -1239,13 +1266,20 @@

        scope

        # instead of just named "whatever" npm init --scope=@foo --yes
        +

        scopes

        +
          +
        • Default: null
        • +
        • Type: null or String (can be set multiple times)
        • +
        +

        When creating a Granular Access Token with npm token create, this limits +the token access to specific scopes. Provide a comma-separated list of scope +names (with or without @ prefix).

        script-shell

        • Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
        • Type: null or String
        -

        The shell to use for scripts run with the npm exec, npm run and -npm init <package-spec> commands.

        +

        The shell to use for scripts run with the npm exec, npm run and npm init <package-spec> commands.

        searchexclude

        • Default: ""
        • @@ -1257,8 +1291,8 @@

          searchlimit

        • Default: 20
        • Type: Number
        -

        Number of items to limit search results to. Will not apply at all to -legacy searches.

        +

        Number of items to limit search results to. Will not apply at all to legacy +searches.

        searchopts

        • Default: ""
        • @@ -1270,12 +1304,12 @@

          searchstaleness

        • Default: 900
        • Type: Number
        -

        The age of the cache, in seconds, before another registry request is -made if using legacy search endpoint.

        +

        The age of the cache, in seconds, before another registry request is made if +using legacy search endpoint.

        shell

          -
        • Default: SHELL environment variable, or "bash" on Posix, or "cmd.exe" -on Windows
        • +
        • Default: SHELL environment variable, or "bash" on Posix, or "cmd.exe" on +Windows
        • Type: String

        The shell to run for the npm explore command.

        @@ -1284,111 +1318,114 @@

        sign-git-commit

      • Default: false
      • Type: Boolean
      -

      If set to true, then the npm version command will commit the new -package version using -S to add a signature.

      -

      Note that git requires you to have set up GPG keys in your git -configs for this to work properly.

      +

      If set to true, then the npm version command will commit the new package +version using -S to add a signature.

      +

      Note that git requires you to have set up GPG keys in your git configs for +this to work properly.

      sign-git-tag

      • Default: false
      • Type: Boolean
      -

      If set to true, then the npm version command will tag the version -using -s to add a signature.

      -

      Note that git requires you to have set up GPG keys in your git -configs for this to work properly.

      +

      If set to true, then the npm version command will tag the version using +-s to add a signature.

      +

      Note that git requires you to have set up GPG keys in your git configs for +this to work properly.

      strict-peer-deps

      • Default: false
      • Type: Boolean

      If set to true, and --legacy-peer-deps is not set, then any -conflicting peerDependencies will be treated as an install failure, -even if npm could reasonably guess the appropriate resolution based -on non-peer dependency relationships.

      -

      By default, conflicting peerDependencies deep in the dependency -graph will be resolved using the nearest non-peer dependency -specification, even if doing so will result in some packages -receiving a peer dependency outside the range set in their package's -peerDependencies object.

      -

      When such an override is performed, a warning is printed, explaining -the conflict and the packages involved. If --strict-peer-deps is -set, then this warning is treated as a failure.

      +conflicting peerDependencies will be treated as an install failure, even +if npm could reasonably guess the appropriate resolution based on non-peer +dependency relationships.

      +

      By default, conflicting peerDependencies deep in the dependency graph will +be resolved using the nearest non-peer dependency specification, even if +doing so will result in some packages receiving a peer dependency outside +the range set in their package's peerDependencies object.

      +

      When such an override is performed, a warning is printed, explaining the +conflict and the packages involved. If --strict-peer-deps is set, then +this warning is treated as a failure.

      strict-ssl

      • Default: true
      • Type: Boolean
      -

      Whether or not to do SSL key validation when making requests to the -registry via https.

      +

      Whether or not to do SSL key validation when making requests to the registry +via https.

      See also the ca config.

      tag

      • Default: "latest"
      • Type: String
      -

      If you ask npm to install a package and don't tell it a specific -version, then it will install the specified tag.

      +

      If you ask npm to install a package and don't tell it a specific version, +then it will install the specified tag.

      It is the tag added to the package@version specified in the npm dist-tag add command, if no explicit tag is given.

      -

      When used by the npm diff command, this is the tag used to fetch -the tarball that will be compared with the local files by default.

      -

      If used in the npm publish command, this is the tag that will be -added to the package submitted to the registry.

      +

      When used by the npm diff command, this is the tag used to fetch the +tarball that will be compared with the local files by default.

      +

      If used in the npm publish command, this is the tag that will be added to +the package submitted to the registry.

      tag-version-prefix

      • Default: "v"
      • Type: String
      -

      If set, alters the prefix used when tagging a new version when -performing a version increment using npm version. To remove the -prefix altogether, set it to the empty string: "".

      -

      Because other tools may rely on the convention that npm version tags -look like v1.0.0, only use this property if it is absolutely -necessary. In particular, use care when overriding this setting for -public packages.

      +

      If set, alters the prefix used when tagging a new version when performing a +version increment using npm version. To remove the prefix altogether, set +it to the empty string: "".

      +

      Because other tools may rely on the convention that npm version tags look +like v1.0.0, only use this property if it is absolutely necessary. In +particular, use care when overriding this setting for public packages.

      timing

      • Default: false
      • Type: Boolean
      -

      If true, writes timing information to a process specific json file in -the cache or logs-dir. The file name ends with -timing.json.

      -

      You can quickly view it with this json command -line: cat ~/.npm/_logs/*-timing.json | npm exec -- json -g.

      -

      Timing information will also be reported in the terminal. To suppress -this while still writing the timing file, use --silent.

      +

      If true, writes timing information to a process specific json file in the +cache or logs-dir. The file name ends with -timing.json.

      +

      You can quickly view it with this json command line: +cat ~/.npm/_logs/*-timing.json | npm exec -- json -g.

      +

      Timing information will also be reported in the terminal. To suppress this +while still writing the timing file, use --silent.

      +

      token-description

      +
        +
      • Default: null
      • +
      • Type: null or String
      • +
      +

      Description text for the token when using npm token create.

      umask

      • Default: 0
      • Type: Octal numeric string in range 0000..0777 (0..511)
      -

      The "umask" value to use when setting the file creation mode on files -and folders.

      -

      Folders and executables are given a mode which is 0o777 masked -against this value. Other files are given a mode which is 0o666 -masked against this value.

      -

      Note that the underlying system will also apply its own umask value -to files and folders that are created, and npm does not circumvent -this, but rather adds the --umask config to it.

      -

      Thus, the effective default umask value on most POSIX systems is -0o22, meaning that folders and executables are created with a mode of -0o755 and other files are created with a mode of 0o644.

      +

      The "umask" value to use when setting the file creation mode on files and +folders.

      +

      Folders and executables are given a mode which is 0o777 masked against +this value. Other files are given a mode which is 0o666 masked against +this value.

      +

      Note that the underlying system will also apply its own umask value to +files and folders that are created, and npm does not circumvent this, but +rather adds the --umask config to it.

      +

      Thus, the effective default umask value on most POSIX systems is 0o22, +meaning that folders and executables are created with a mode of 0o755 and +other files are created with a mode of 0o644.

      unicode

        -
      • Default: false on windows, true on mac/unix systems with a unicode -locale, as defined by the LC_ALL, LC_CTYPE, or LANG environment -variables.
      • +
      • Default: false on windows, true on mac/unix systems with a unicode locale, +as defined by the LC_ALL, LC_CTYPE, or LANG environment variables.
      • Type: Boolean
      -

      When set to true, npm uses unicode characters in the tree output. -When false, it uses ascii characters instead of unicode glyphs.

      +

      When set to true, npm uses unicode characters in the tree output. When +false, it uses ascii characters instead of unicode glyphs.

      update-notifier

      • Default: true
      • Type: Boolean
      -

      Set to false to suppress the update notification when using an older -version of npm than the latest.

      +

      Set to false to suppress the update notification when using an older version +of npm than the latest.

      usage

      • Default: false
      • @@ -1401,17 +1438,17 @@

        user-agent

        workspaces/{workspaces} {ci}"
      • Type: String
      -

      Sets the User-Agent request header. The following fields are replaced -with their actual counterparts:

      +

      Sets the User-Agent request header. The following fields are replaced with +their actual counterparts:

      • {npm-version} - The npm version in use
      • {node-version} - The Node.js version in use
      • {platform} - The value of process.platform
      • {arch} - The value of process.arch
      • -
      • {workspaces} - Set to true if the workspaces or workspace -options are set.
      • -
      • {ci} - The value of the ci-name config, if set, prefixed with -ci/, or an empty string if ci-name is empty.
      • +
      • {workspaces} - Set to true if the workspaces or workspace options +are set.
      • +
      • {ci} - The value of the ci-name config, if set, prefixed with ci/, or +an empty string if ci-name is empty.

      userconfig

        @@ -1419,9 +1456,9 @@

        userconfig

      • Type: Path

      The location of user-level configuration settings.

      -

      This may be overridden by the npm_config_userconfig environment -variable or the --userconfig command line option, but may not be -overridden by settings in the globalconfig file.

      +

      This may be overridden by the npm_config_userconfig environment variable +or the --userconfig command line option, but may not be overridden by +settings in the globalconfig file.

      version

      • Default: false
      • @@ -1434,9 +1471,9 @@

        versions

      • Default: false
      • Type: Boolean
      -

      If true, output the npm version as well as node's process.versions -map and the version in the current working directory's package.json -file if one exists, and exit successfully.

      +

      If true, output the npm version as well as node's process.versions map and +the version in the current working directory's package.json file if one +exists, and exit successfully.

      Only relevant when specified explicitly on the command line.

      viewer

        @@ -1444,23 +1481,21 @@

        viewer

      • Type: String

      The program to use to view help content.

      -

      Set to "browser" to view html help content in the default web -browser.

      +

      Set to "browser" to view html help content in the default web browser.

      which

      • Default: null
      • Type: null or Number
      -

      If there are multiple funding sources, which 1-indexed source URL to -open.

      +

      If there are multiple funding sources, which 1-indexed source URL to open.

      workspace

      • Default:
      • Type: String (can be set multiple times)
      -

      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.

      +

      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:

      • Workspace names
      • @@ -1468,9 +1503,9 @@

        workspace

      • Path to a parent workspace directory (will result in selecting all workspaces within that folder)
      -

      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.

      +

      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

        @@ -1479,14 +1514,13 @@

        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:

      +

      Explicitly setting this to false will cause commands like install to +ignore workspaces altogether. When not set explicitly:

        -
      • Commands that operate on the node_modules tree (install, update, -etc.) will link workspaces into the node_modules folder. - Commands -that do other things (test, exec, publish, etc.) will operate on the -root project, unless one or more workspaces are specified in the -workspace config.
      • +
      • Commands that operate on the node_modules tree (install, update, etc.) +will link workspaces into the node_modules folder. - Commands that do +other things (test, exec, publish, etc.) will operate on the root project, +unless one or more workspaces are specified in the workspace config.

      This value is not exported to the environment for child processes.

      workspaces-update

      @@ -1494,9 +1528,8 @@

      workspaces-update

    • Default: true
    • Type: Boolean
    -

    If set to true, the npm cli will run an update after operations that -may possibly change the workspaces installed to the node_modules -folder.

    +

    If set to true, the npm cli will run an update after operations that may +possibly change the workspaces installed to the node_modules folder.

    yes

    • Default: null
    • @@ -1510,22 +1543,19 @@

      also

    • Type: null, "dev", or "development"
    • DEPRECATED: Please use --include=dev instead.
    -

    When set to dev or development, this is an alias for ---include=dev.

    +

    When set to dev or development, this is an alias for --include=dev.

    cache-max

    • Default: Infinity
    • Type: Number
    • -
    • DEPRECATED: This option has been deprecated in favor of ---prefer-online
    • +
    • DEPRECATED: This option has been deprecated in favor of --prefer-online

    --cache-max=0 is an alias for --prefer-online

    cache-min

    • Default: 0
    • Type: Number
    • -
    • DEPRECATED: This option has been deprecated in favor of ---prefer-offline.
    • +
    • DEPRECATED: This option has been deprecated in favor of --prefer-offline.

    --cache-min=9999 (or bigger) is an alias for --prefer-offline.

    cert

    @@ -1533,13 +1563,13 @@

    cert

  • Default: null
  • Type: null or String
  • DEPRECATED: key and cert are no longer used for most registry -operations. Use registry scoped keyfile and certfile instead. -Example: //other-registry.tld/:keyfile=/path/to/key.pem +operations. Use registry scoped keyfile and certfile instead. Example: +//other-registry.tld/:keyfile=/path/to/key.pem //other-registry.tld/:certfile=/path/to/cert.crt
  • -

    A client certificate to pass when accessing the registry. Values -should be in PEM format (Windows calls it "Base-64 encoded X.509 -(.CER)") with newlines replaced by the string "\n". For example:

    +

    A client certificate to pass when accessing the registry. Values should be +in PEM format (Windows calls it "Base-64 encoded X.509 (.CER)") with +newlines replaced by the string "\n". For example:

    cert="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
     

    It is not the path to a certificate file, though you can set a @@ -1559,8 +1589,8 @@

    global-style

  • DEPRECATED: This option has been deprecated in favor of --install-strategy=shallow
  • -

    Only install direct dependencies in the top level node_modules, but -hoist on deeper dependencies. Sets --install-strategy=shallow.

    +

    Only install direct dependencies in the top level node_modules, but hoist +on deeper dependencies. Sets --install-strategy=shallow.

    init.author.email

    • Default: ""
    • @@ -1608,17 +1638,16 @@

      key

    • Default: null
    • Type: null or String
    • DEPRECATED: key and cert are no longer used for most registry -operations. Use registry scoped keyfile and certfile instead. -Example: //other-registry.tld/:keyfile=/path/to/key.pem +operations. Use registry scoped keyfile and certfile instead. Example: +//other-registry.tld/:keyfile=/path/to/key.pem //other-registry.tld/:certfile=/path/to/cert.crt
    -

    A client key to pass when accessing the registry. Values should be in -PEM format with newlines replaced by the string "\n". For example:

    +

    A client key to pass when accessing the registry. Values should be in PEM +format with newlines replaced by the string "\n". For example:

    key="-----BEGIN PRIVATE KEY-----\nXXXX\nXXXX\n-----END PRIVATE KEY-----"
     
    -

    It is not the path to a key file, though you can set a -registry-scoped "keyfile" path like -"//other-registry.tld/:keyfile=/path/to/key.pem".

    +

    It is not the path to a key file, though you can set a registry-scoped +"keyfile" path like "//other-registry.tld/:keyfile=/path/to/key.pem".

    legacy-bundling

    • Default: false
    • @@ -1626,25 +1655,23 @@

      legacy-bundling

    • DEPRECATED: This option has been deprecated in favor of --install-strategy=nested
    -

    Instead of hoisting package installs in node_modules, install -packages in the same manner that they are depended on. This may cause -very deep directory structures and duplicate package installs as -there is no de-duplicating. Sets --install-strategy=nested.

    +

    Instead of hoisting package installs in node_modules, install packages in +the same manner that they are depended on. This may cause very deep +directory structures and duplicate package installs as there is no +de-duplicating. Sets --install-strategy=nested.

    only

    • Default: null
    • Type: null, "prod", or "production"
    • -
    • DEPRECATED: Use --omit=dev to omit dev dependencies from the -install.
    • +
    • DEPRECATED: Use --omit=dev to omit dev dependencies from the install.
    -

    When set to prod or production, this is an alias for ---omit=dev.

    +

    When set to prod or production, this is an alias for --omit=dev.

    optional

    • Default: null
    • Type: null or Boolean
    • -
    • DEPRECATED: Use --omit=optional to exclude optional dependencies, -or --include=optional to include them.
    • +
    • DEPRECATED: Use --omit=optional to exclude optional dependencies, or +--include=optional to include them.

    Default value does install optional deps unless otherwise omitted.

    Alias for --include=optional or --omit=optional

    diff --git a/deps/npm/docs/output/using-npm/dependency-selectors.html b/deps/npm/docs/output/using-npm/dependency-selectors.html index 67ea145085b0b6..a333f55fff5ce7 100644 --- a/deps/npm/docs/output/using-npm/dependency-selectors.html +++ b/deps/npm/docs/output/using-npm/dependency-selectors.html @@ -141,9 +141,9 @@
    -

    +

    Dependency Selector Syntax & Querying - @11.6.2 + @11.6.3

    Dependency Selector Syntax & Querying
    diff --git a/deps/npm/docs/output/using-npm/developers.html b/deps/npm/docs/output/using-npm/developers.html index 41890488eead60..3d33984abd9bee 100644 --- a/deps/npm/docs/output/using-npm/developers.html +++ b/deps/npm/docs/output/using-npm/developers.html @@ -141,9 +141,9 @@
    -

    +

    developers - @11.6.2 + @11.6.3

    Developer Guide
    diff --git a/deps/npm/docs/output/using-npm/logging.html b/deps/npm/docs/output/using-npm/logging.html index b2d76c4b1c54c6..6b33e9df878464 100644 --- a/deps/npm/docs/output/using-npm/logging.html +++ b/deps/npm/docs/output/using-npm/logging.html @@ -141,9 +141,9 @@
    -

    +

    Logging - @11.6.2 + @11.6.3

    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 b998bb01581526..4d791ea11feacf 100644 --- a/deps/npm/docs/output/using-npm/orgs.html +++ b/deps/npm/docs/output/using-npm/orgs.html @@ -141,9 +141,9 @@
    -

    +

    orgs - @11.6.2 + @11.6.3

    Working with Teams & Orgs
    diff --git a/deps/npm/docs/output/using-npm/package-spec.html b/deps/npm/docs/output/using-npm/package-spec.html index 764a2ad3eb4291..a6aae850e60b2e 100644 --- a/deps/npm/docs/output/using-npm/package-spec.html +++ b/deps/npm/docs/output/using-npm/package-spec.html @@ -141,9 +141,9 @@
    -

    +

    package-spec - @11.6.2 + @11.6.3

    Package name specifier
    diff --git a/deps/npm/docs/output/using-npm/registry.html b/deps/npm/docs/output/using-npm/registry.html index 95fe69d0f0e1fb..b658abe719e6b5 100644 --- a/deps/npm/docs/output/using-npm/registry.html +++ b/deps/npm/docs/output/using-npm/registry.html @@ -141,9 +141,9 @@
    -

    +

    registry - @11.6.2 + @11.6.3

    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 23db6a16ca78d5..8caa2947f58bb8 100644 --- a/deps/npm/docs/output/using-npm/removal.html +++ b/deps/npm/docs/output/using-npm/removal.html @@ -141,9 +141,9 @@
    -

    +

    removal - @11.6.2 + @11.6.3

    Cleaning the Slate
    diff --git a/deps/npm/docs/output/using-npm/scope.html b/deps/npm/docs/output/using-npm/scope.html index a2ff83d6221a24..0d50f0417d40e2 100644 --- a/deps/npm/docs/output/using-npm/scope.html +++ b/deps/npm/docs/output/using-npm/scope.html @@ -141,9 +141,9 @@
    -

    +

    scope - @11.6.2 + @11.6.3

    Scoped packages
    diff --git a/deps/npm/docs/output/using-npm/scripts.html b/deps/npm/docs/output/using-npm/scripts.html index 1e76b658763907..8f8f112be4ccc4 100644 --- a/deps/npm/docs/output/using-npm/scripts.html +++ b/deps/npm/docs/output/using-npm/scripts.html @@ -141,9 +141,9 @@
    -

    +

    scripts - @11.6.2 + @11.6.3

    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 f1062e2d28399f..e050cafb0a6ee0 100644 --- a/deps/npm/docs/output/using-npm/workspaces.html +++ b/deps/npm/docs/output/using-npm/workspaces.html @@ -141,9 +141,9 @@
    -

    +

    workspaces - @11.6.2 + @11.6.3

    Working with workspaces
    diff --git a/deps/npm/lib/commands/completion.js b/deps/npm/lib/commands/completion.js index 1a1cb901ee5a0d..ae459aaaf31ce5 100644 --- a/deps/npm/lib/commands/completion.js +++ b/deps/npm/lib/commands/completion.js @@ -164,7 +164,7 @@ class Completion extends BaseCommand { return this.wrap(opts, comps) } } catch { - // it wasnt a valid command, so do nothing + // it wasn't a valid command, so do nothing } } diff --git a/deps/npm/lib/commands/explain.js b/deps/npm/lib/commands/explain.js index 1505b4dbf5e9a4..5f37ba9925f410 100644 --- a/deps/npm/lib/commands/explain.js +++ b/deps/npm/lib/commands/explain.js @@ -92,7 +92,7 @@ class Explain extends ArboristWorkspaceCmd { } // if it's a location, get that node - const maybeLoc = arg.replace(/\\/g, '/').replace(/\/+$/, '') + const maybeLoc = arg.replace(/\\/g, '/').replace(/(? resolve(this.npm.localPrefix, filterArg) diff --git a/deps/npm/lib/commands/token.js b/deps/npm/lib/commands/token.js index fac55d46e0c3bd..9cc04f83e7dd24 100644 --- a/deps/npm/lib/commands/token.js +++ b/deps/npm/lib/commands/token.js @@ -1,14 +1,38 @@ -const { log, output } = require('proc-log') -const { listTokens, createToken, removeToken } = require('npm-profile') +const { log, output, META } = require('proc-log') +const fetch = require('npm-registry-fetch') const { otplease } = require('../utils/auth.js') const readUserInfo = require('../utils/read-user-info.js') const BaseCommand = require('../base-cmd.js') +async function paginate (href, opts, items = []) { + while (href) { + const result = await fetch.json(href, opts) + items = items.concat(result.objects) + href = result.urls.next + } + return items +} + class Token extends BaseCommand { static description = 'Manage your authentication tokens' static name = 'token' - static usage = ['list', 'revoke ', 'create [--read-only] [--cidr=list]'] - static params = ['read-only', 'cidr', 'registry', 'otp'] + static usage = ['list', 'revoke ', 'create --name= [--token-description=] [--packages=] [--packages-all] [--scopes=] [--orgs=] [--packages-and-scopes-permission=] [--orgs-permission=] [--expires=] [--cidr=] [--bypass-2fa] [--password=]'] + static params = ['name', + 'token-description', + 'expires', + 'packages', + 'packages-all', + 'scopes', + 'orgs', + 'packages-and-scopes-permission', + 'orgs-permission', + 'cidr', + 'bypass-2fa', + 'password', + 'registry', + 'otp', + 'read-only', + ] static async completion (opts) { const argv = opts.conf.argv.remain @@ -48,7 +72,7 @@ class Token extends BaseCommand { const json = this.npm.config.get('json') const parseable = this.npm.config.get('parseable') log.info('token', 'getting list') - const tokens = await listTokens(this.npm.flatOptions) + const tokens = await paginate('/-/npm/v1/tokens', this.npm.flatOptions) if (json) { output.buffer(tokens) return @@ -89,10 +113,9 @@ class Token extends BaseCommand { const json = this.npm.config.get('json') const parseable = this.npm.config.get('parseable') const toRemove = [] - const opts = { ...this.npm.flatOptions } log.info('token', `removing ${toRemove.length} tokens`) - const tokens = await listTokens(opts) - args.forEach(id => { + const tokens = await paginate('/-/npm/v1/tokens', this.npm.flatOptions) + for (const id of args) { const matches = tokens.filter(token => token.key.indexOf(id) === 0) if (matches.length === 1) { toRemove.push(matches[0].key) @@ -108,12 +131,16 @@ class Token extends BaseCommand { toRemove.push(id) } - }) - await Promise.all( - toRemove.map(key => { - return otplease(this.npm, opts, c => removeToken(key, c)) - }) - ) + } + for (const tokenKey of toRemove) { + await otplease(this.npm, this.npm.flatOptions, opts => + fetch(`/-/npm/v1/tokens/token/${tokenKey}`, { + ...opts, + method: 'DELETE', + ignoreBody: true, + }) + ) + } if (json) { output.buffer(toRemove) } else if (parseable) { @@ -127,15 +154,74 @@ class Token extends BaseCommand { const json = this.npm.config.get('json') const parseable = this.npm.config.get('parseable') const cidr = this.npm.config.get('cidr') - const readonly = this.npm.config.get('read-only') + const name = this.npm.config.get('name') + const tokenDescription = this.npm.config.get('token-description') + const expires = this.npm.config.get('expires') + const packages = this.npm.config.get('packages') + const packagesAll = this.npm.config.get('packages-all') + const scopes = this.npm.config.get('scopes') + const orgs = this.npm.config.get('orgs') + const packagesAndScopesPermission = this.npm.config.get('packages-and-scopes-permission') + const orgsPermission = this.npm.config.get('orgs-permission') + const bypassTwoFactor = this.npm.config.get('bypass-2fa') + let password = this.npm.config.get('password') const validCIDR = await this.validateCIDRList(cidr) - const password = await readUserInfo.password() + + /* istanbul ignore if - skip testing read input */ + if (!password) { + password = await readUserInfo.password() + } + + const tokenData = { + name: name, + password: password, + } + + if (tokenDescription) { + tokenData.description = tokenDescription + } + + if (packages?.length > 0) { + tokenData.packages = packages + } + if (packagesAll) { + tokenData.packages_all = true + } + if (scopes?.length > 0) { + tokenData.scopes = scopes + } + if (orgs?.length > 0) { + tokenData.orgs = orgs + } + + if (packagesAndScopesPermission) { + tokenData.packages_and_scopes_permission = packagesAndScopesPermission + } + if (orgsPermission) { + tokenData.orgs_permission = orgsPermission + } + + // Add expiration in days + if (expires) { + tokenData.expires = parseInt(expires, 10) + } + + // Add optional fields + if (validCIDR?.length > 0) { + tokenData.cidr_whitelist = validCIDR + } + if (bypassTwoFactor) { + tokenData.bypass_2fa = true + } + log.info('token', 'creating') - const result = await otplease( - this.npm, - { ...this.npm.flatOptions }, - c => createToken(password, readonly, validCIDR, c) + const result = await otplease(this.npm, this.npm.flatOptions, opts => + fetch.json('/-/npm/v1/tokens', { + ...opts, + method: 'POST', + body: tokenData, + }) ) delete result.key delete result.updated @@ -145,12 +231,16 @@ class Token extends BaseCommand { Object.keys(result).forEach(k => output.standard(k + '\t' + result[k])) } else { const chalk = this.npm.chalk - // Identical to list - const level = result.readonly ? 'read only' : 'publish' - output.standard(`Created ${chalk.blue(level)} token ${result.token}`) + // Display based on access level + // Identical to list? XXX + const level = result.access === 'read-only' || result.readonly ? 'read only' : 'publish' + output.standard(`Created ${chalk.blue(level)} token ${result.token}`, { [META]: true, redact: false }) if (result.cidr_whitelist?.length) { output.standard(`with IP whitelist: ${chalk.green(result.cidr_whitelist.join(','))}`) } + if (result.expires) { + output.standard(`expires: ${result.expires}`) + } } } @@ -180,7 +270,7 @@ class Token extends BaseCommand { for (const cidr of list) { if (isCidrV6(cidr)) { throw this.invalidCIDRError( - `CIDR whitelist can only contain IPv4 addresses${cidr} is IPv6` + `CIDR whitelist can only contain IPv4 addresses, ${cidr} is IPv6` ) } diff --git a/deps/npm/lib/commands/version.js b/deps/npm/lib/commands/version.js index 1d1a6753c70de1..fe70322fd7cb9c 100644 --- a/deps/npm/lib/commands/version.js +++ b/deps/npm/lib/commands/version.js @@ -13,10 +13,12 @@ class Version extends BaseCommand { 'json', 'preid', 'sign-git-tag', + 'save', 'workspace', 'workspaces', 'workspaces-update', 'include-workspace-root', + 'ignore-scripts', ] static workspaces = true diff --git a/deps/npm/lib/utils/error-message.js b/deps/npm/lib/utils/error-message.js index 4fc14c92c17a98..578bcc82287de2 100644 --- a/deps/npm/lib/utils/error-message.js +++ b/deps/npm/lib/utils/error-message.js @@ -301,7 +301,7 @@ const errorMessage = (er, npm) => { 'Not compatible with your version of node/npm: ' + er.pkgid, 'Required: ' + JSON.stringify(er.required), 'Actual: ' + - JSON.stringify({ npm: npm.version, node: process.version }), + JSON.stringify({ node: process.version, npm: npm.version }), ].join('\n')]) break diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1 index 8165aa386bd0d9..52a667c9847687 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-ACCESS" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-access\fR - Set access level on published packages .SS "Synopsis" @@ -77,8 +77,7 @@ Type: null or String .RE 0 .P -This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm -access\fR. +This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm access\fR. .P If not set, and a registry response fails with a challenge for a one-time password, npm will prompt on the command line for one. .SS "\fBregistry\fR" diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1 index 9435eb6f819788..16daea9418cc3b 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-ADDUSER" "1" "November 2025" "NPM@11.6.3" "" .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 70e8b778937a12..f5379fd10a8d49 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-AUDIT" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-audit\fR - Run a security audit .SS "Synopsis" @@ -368,8 +368,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBworkspace\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1 index 72053050d6e14f..f7eb770fb44200 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-BUGS" "1" "November 2025" "NPM@11.6.3" "" .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 41a41ba928e1ed..573907f8b308f6 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-CACHE" "1" "November 2025" "NPM@11.6.3" "" .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 87ae6170434e39..ed11ab54ed4499 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-CI" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-ci\fR - Clean install a project .SS "Synopsis" @@ -167,8 +167,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBaudit\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1 index 06e58655c486d5..09e3965d4641c8 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-COMPLETION" "1" "November 2025" "NPM@11.6.3" "" .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 17f27ea10b5f71..4e9b5136fadf7c 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-CONFIG" "1" "November 2025" "NPM@11.6.3" "" .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 10472a8aa93446..1154b0f4603ad3 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-DEDUPE" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-dedupe\fR - Reduce duplication in the package tree .SS "Synopsis" @@ -164,8 +164,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBaudit\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1 index 871577b872385f..50e36d9c989420 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-DEPRECATE" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-deprecate\fR - Deprecate a version of a package .SS "Synopsis" @@ -55,8 +55,7 @@ Type: null or String .RE 0 .P -This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm -access\fR. +This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm access\fR. .P If not set, and a registry response fails with a challenge for a one-time password, npm will prompt on the command line for one. .SS "\fBdry-run\fR" diff --git a/deps/npm/man/man1/npm-diff.1 b/deps/npm/man/man1/npm-diff.1 index a1f2b5f2e38c78..7949ae477b6ad4 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-DIFF" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-diff\fR - The registry diff command .SS "Synopsis" @@ -233,8 +233,8 @@ Type: String .P If you ask npm to install a package and don't tell it a specific version, then it will install the specified tag. .P -It is the tag added to the package@version specified in the \fBnpm -dist-tag add\fR command, if no explicit tag is given. +It is the tag added to the package@version specified in the \fBnpm dist-tag +add\fR command, if no explicit tag is given. .P When used by the \fBnpm diff\fR command, this is the tag used to fetch the tarball that will be compared with the local files by default. .P diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1 index 6defc97bdfe2af..6417845460e3d3 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-DIST-TAG" "1" "November 2025" "NPM@11.6.3" "" .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 602888e1d713f1..d07b611895c9e0 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-DOCS" "1" "November 2025" "NPM@11.6.3" "" .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 1f5f653bbf5ad5..e38807ad2c0dd5 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-DOCTOR" "1" "November 2025" "NPM@11.6.3" "" .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 19d5c537d889f6..5f815c8ddd59f6 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-EDIT" "1" "November 2025" "NPM@11.6.3" "" .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 d6b3d384eae666..072d60ebe39f91 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-EXEC" "1" "November 2025" "NPM@11.6.3" "" .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 88f209f5ddc1b5..be2d0d9bcd9a3e 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-EXPLAIN" "1" "November 2025" "NPM@11.6.3" "" .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 b91eb6dbee5cc9..1d38e872498638 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-EXPLORE" "1" "November 2025" "NPM@11.6.3" "" .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 2373a842661e3e..5b59f2b70ff2f6 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-FIND-DUPES" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-find-dupes\fR - Find duplication in the package tree .SS "Synopsis" @@ -111,8 +111,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBaudit\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-fund.1 b/deps/npm/man/man1/npm-fund.1 index 58eb3cd3577615..ebed13a09c88e9 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-FUND" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-fund\fR - Retrieve funding information .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1 index 94c7dc9e7b8b2a..14133d023ad663 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-HELP-SEARCH" "1" "November 2025" "NPM@11.6.3" "" .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 0f07f5a9582fd1..c1141b6383e136 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-HELP" "1" "November 2025" "NPM@11.6.3" "" .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 322cd28ccbb29f..ba6f4474ed5018 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-INIT" "1" "November 2025" "NPM@11.6.3" "" .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 035b5c073523de..2273c50a7be872 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-INSTALL-CI-TEST" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-install-ci-test\fR - Install a project with a clean slate and run tests .SS "Synopsis" @@ -115,8 +115,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBaudit\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1 index fe6ae37b386184..ea527d0024ab96 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-INSTALL-TEST" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-install-test\fR - Install package(s) and run tests .SS "Synopsis" @@ -192,8 +192,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBaudit\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 b90459ae8ce71a..8a9eef28d3ddea 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-INSTALL" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-install\fR - Install a package .SS "Synopsis" @@ -553,8 +553,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBaudit\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 9850cd544a93d8..7ffea61ec64e6e 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-LINK" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-link\fR - Symlink a package folder .SS "Synopsis" @@ -223,8 +223,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBaudit\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-login.1 b/deps/npm/man/man1/npm-login.1 index de24dae466d3ac..fb57066b2f74ad 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-LOGIN" "1" "November 2025" "NPM@11.6.3" "" .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 7d7624bbea3f25..a9ec065ca92591 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-LOGOUT" "1" "November 2025" "NPM@11.6.3" "" .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 88858109203301..a0eca71370bb45 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-LS" "1" "November 2025" "NPM@11.6.3" "" .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.6.2 /path/to/npm +npm@11.6.3 /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 56f6f269509a97..e94126b1b20c15 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-ORG" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-org\fR - Manage orgs .SS "Synopsis" @@ -86,8 +86,7 @@ Type: null or String .RE 0 .P -This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm -access\fR. +This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm access\fR. .P If not set, and a registry response fails with a challenge for a one-time password, npm will prompt on the command line for one. .SS "\fBjson\fR" diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1 index 5e715d6bf25b34..eba7b06ae0a986 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-OUTDATED" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-outdated\fR - Check for outdated packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1 index 0e51922629f3ce..0472c9e894a3d6 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-OWNER" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-owner\fR - Manage package owners .SS "Synopsis" @@ -48,8 +48,7 @@ Type: null or String .RE 0 .P -This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm -access\fR. +This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm access\fR. .P If not set, and a registry response fails with a challenge for a one-time password, npm will prompt on the command line for one. .SS "\fBworkspace\fR" diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1 index 52d7feb68d94d5..8c4f204f02dea5 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-PACK" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-pack\fR - Create a tarball from a package .SS "Synopsis" @@ -117,8 +117,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "Description" .P For anything that's installable (that is, a package folder, tarball, tarball url, git url, name@tag, name@version, name, or scoped name), this command will fetch it to the cache, copy the tarball to the current working directory as \fB-.tgz\fR, and then write the filenames out to stdout. diff --git a/deps/npm/man/man1/npm-ping.1 b/deps/npm/man/man1/npm-ping.1 index 7a686e9fff0539..28d50e2c71f06d 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-PING" "1" "November 2025" "NPM@11.6.3" "" .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 4940be8a413210..37f28fcc0592e5 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-PKG" "1" "November 2025" "NPM@11.6.3" "" .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 b0c93b019644fd..d0270d8ad8f6ae 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-PREFIX" "1" "November 2025" "NPM@11.6.3" "" .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 0e53039daf0625..017953fc4364ef 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-PROFILE" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-profile\fR - Change settings on your registry profile .SS "Synopsis" @@ -104,8 +104,7 @@ Type: null or String .RE 0 .P -This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm -access\fR. +This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm access\fR. .P If not set, and a registry response fails with a challenge for a one-time password, npm will prompt on the command line for one. .SS "See Also" diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1 index 8f139fd2f4df9c..f43ee8b687b20e 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-PRUNE" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-prune\fR - Remove extraneous packages .SS "Synopsis" @@ -104,8 +104,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBworkspace\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1 index 96be016f9fdacf..b93c07e0563633 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-PUBLISH" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-publish\fR - Publish a package .SS "Synopsis" @@ -11,6 +11,39 @@ npm publish .SS "Description" .P Publishes a package to the registry so that it can be installed by name. +.SS "Examples" +.P +Publish the package in the current directory: +.P +.RS 2 +.nf +npm publish +.fi +.RE +.P +Publish a specific workspace: +.P +.RS 2 +.nf +npm publish --workspace= +.fi +.RE +.P +Publish multiple workspaces: +.P +.RS 2 +.nf +npm publish --workspace=workspace-a --workspace=workspace-b +.fi +.RE +.P +Publish all workspaces: +.P +.RS 2 +.nf +npm publish --workspaces +.fi +.RE .P By default npm will publish to the public registry. This can be overridden by specifying a different default registry or using a npm help scope in the name, combined with a scope-configured registry (see \fB\[rs]fBpackage.json\[rs]fR\fR \fI\(la/configuring-npm/package-json\(ra\fR). .P @@ -74,8 +107,8 @@ Type: String .P If you ask npm to install a package and don't tell it a specific version, then it will install the specified tag. .P -It is the tag added to the package@version specified in the \fBnpm -dist-tag add\fR command, if no explicit tag is given. +It is the tag added to the package@version specified in the \fBnpm dist-tag +add\fR command, if no explicit tag is given. .P When used by the \fBnpm diff\fR command, this is the tag used to fetch the tarball that will be compared with the local files by default. .P @@ -93,7 +126,8 @@ If you do not want your scoped package to be publicly viewable (and installable) .P Unscoped packages cannot be set to \fBrestricted\fR. .P -Note: This defaults to not changing the current access level for existing packages. Specifying a value of \fBrestricted\fR or \fBpublic\fR during publish will change the access for an existing package the same way that \fBnpm access set status\fR would. +Note: This defaults to not changing the current access level for existing packages. Specifying a value of \fBrestricted\fR or \fBpublic\fR during publish will change the access for an existing package the same way that \fBnpm access set +status\fR would. .SS "\fBdry-run\fR" .RS 0 .IP \(bu 4 @@ -115,8 +149,7 @@ Type: null or String .RE 0 .P -This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm -access\fR. +This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm access\fR. .P If not set, and a registry response fails with a challenge for a one-time password, npm will prompt on the command line for one. .SS "\fBworkspace\fR" diff --git a/deps/npm/man/man1/npm-query.1 b/deps/npm/man/man1/npm-query.1 index 7e626c7f1d4a6a..1fbd15c4308fcf 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-QUERY" "1" "November 2025" "NPM@11.6.3" "" .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 dcd4dfb91210d9..da9c7600a41a6b 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-REBUILD" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-rebuild\fR - Rebuild a package .SS "Synopsis" @@ -100,8 +100,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBworkspace\fR" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1 index 634e6358838e0c..682757d6c506ce 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-REPO" "1" "November 2025" "NPM@11.6.3" "" .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 837fffcfd05d92..11a4f1502ae1a8 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-RESTART" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-restart\fR - Restart a package .SS "Synopsis" @@ -55,8 +55,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBscript-shell\fR" .RS 0 .IP \(bu 4 @@ -66,7 +65,8 @@ Type: null or String .RE 0 .P -The shell to use for scripts run with the \fBnpm exec\fR, \fBnpm run\fR and \fBnpm init \fR commands. +The shell to use for scripts run with the \fBnpm exec\fR, \fBnpm run\fR and \fBnpm +init \fR commands. .SS "See Also" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1 index 97d5c3f868dc06..70dd8b1e31ea1b 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-ROOT" "1" "November 2025" "NPM@11.6.3" "" .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 a1834d3d2bc2df..0a005689055d29 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-RUN" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-run\fR - Run arbitrary package scripts .SS "Synopsis" @@ -191,8 +191,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBforeground-scripts\fR" .RS 0 .IP \(bu 4 @@ -214,7 +213,8 @@ Type: null or String .RE 0 .P -The shell to use for scripts run with the \fBnpm exec\fR, \fBnpm run\fR and \fBnpm init \fR commands. +The shell to use for scripts run with the \fBnpm exec\fR, \fBnpm run\fR and \fBnpm +init \fR commands. .SS "See Also" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-sbom.1 b/deps/npm/man/man1/npm-sbom.1 index 11212d9653b5b0..16bee1a5dae39d 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-SBOM" "1" "November 2025" "NPM@11.6.3" "" .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 0fb57fafd4512e..fc0030a854141f 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-SEARCH" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-search\fR - Search for packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-shrinkwrap.1 b/deps/npm/man/man1/npm-shrinkwrap.1 index c47c6b76bc0e8a..683ec9374f3505 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-SHRINKWRAP" "1" "November 2025" "NPM@11.6.3" "" .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 2f137195aa92c7..063c07ab838ed6 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-STAR" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-star\fR - Mark your favorite packages .SS "Synopsis" @@ -56,8 +56,7 @@ Type: null or String .RE 0 .P -This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm -access\fR. +This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm access\fR. .P If not set, and a registry response fails with a challenge for a one-time password, npm will prompt on the command line for one. .SS "See Also" diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1 index 8c0533aadfb997..656d82a3b9bfc6 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-STARS" "1" "November 2025" "NPM@11.6.3" "" .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 c9c55e4ec6ee3c..3bc7bb47d1911b 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-START" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-start\fR - Start a package .SS "Synopsis" @@ -52,8 +52,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBscript-shell\fR" .RS 0 .IP \(bu 4 @@ -63,7 +62,8 @@ Type: null or String .RE 0 .P -The shell to use for scripts run with the \fBnpm exec\fR, \fBnpm run\fR and \fBnpm init \fR commands. +The shell to use for scripts run with the \fBnpm exec\fR, \fBnpm run\fR and \fBnpm +init \fR commands. .SS "See Also" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1 index da49dd07de80a6..5b870c5cb25d29 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-STOP" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-stop\fR - Stop a package .SS "Synopsis" @@ -48,8 +48,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBscript-shell\fR" .RS 0 .IP \(bu 4 @@ -59,7 +58,8 @@ Type: null or String .RE 0 .P -The shell to use for scripts run with the \fBnpm exec\fR, \fBnpm run\fR and \fBnpm init \fR commands. +The shell to use for scripts run with the \fBnpm exec\fR, \fBnpm run\fR and \fBnpm +init \fR commands. .SS "See Also" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1 index e4c885229a41d7..7a351a7b2ef46b 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-TEAM" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-team\fR - Manage organization teams and team memberships .SS "Synopsis" @@ -107,8 +107,7 @@ Type: null or String .RE 0 .P -This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm -access\fR. +This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm access\fR. .P If not set, and a registry response fails with a challenge for a one-time password, npm will prompt on the command line for one. .SS "\fBparseable\fR" diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1 index d233bd2c54ccd8..6d82bad6e0dd93 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-TEST" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-test\fR - Test a package .SS "Synopsis" @@ -46,8 +46,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBscript-shell\fR" .RS 0 .IP \(bu 4 @@ -57,7 +56,8 @@ Type: null or String .RE 0 .P -The shell to use for scripts run with the \fBnpm exec\fR, \fBnpm run\fR and \fBnpm init \fR commands. +The shell to use for scripts run with the \fBnpm exec\fR, \fBnpm run\fR and \fBnpm +init \fR commands. .SS "See Also" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-token.1 b/deps/npm/man/man1/npm-token.1 index e1005725bdcf74..0c31d163bb7075 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-TOKEN" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-token\fR - Manage your authentication tokens .SS "Synopsis" @@ -7,7 +7,7 @@ .nf npm token list npm token revoke -npm token create \[lB]--read-only\[rB] \[lB]--cidr=list\[rB] +npm token create --name= \[lB]--token-description=\[rB] \[lB]--packages=\[rB] \[lB]--packages-all\[rB] \[lB]--scopes=\[rB] \[lB]--orgs=\[rB] \[lB]--packages-and-scopes-permission=\[rB] \[lB]--orgs-permission=\[rB] \[lB]--expires=\[rB] \[lB]--cidr=\[rB] \[lB]--bypass-2fa\[rB] \[lB]--password=\[rB] .fi .RE .P @@ -51,7 +51,47 @@ Created publish token a73c9572-f1b9-8983-983d-ba3ac3cc913d .RE 0 .SS "Configuration" -.SS "\fBread-only\fR" +.SS "\fBname\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null or String +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, this sets the name/description for the token. +.SS "\fBtoken-description\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null or String +.RE 0 + +.P +Description text for the token when using \fBnpm token create\fR. +.SS "\fBexpires\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null or Number +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, this sets the expiration in days. If not specified, the server will determine the default expiration. +.SS "\fBpackages\fR" +.RS 0 +.IP \(bu 4 +Default: +.IP \(bu 4 +Type: null or String (can be set multiple times) +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, this limits the token access to specific packages. Provide a comma-separated list of package names. +.SS "\fBpackages-all\fR" .RS 0 .IP \(bu 4 Default: false @@ -60,7 +100,47 @@ Type: Boolean .RE 0 .P -This is used to mark a token as unable to publish when configuring limited access tokens with the \fBnpm token create\fR command. +When creating a Granular Access Token with \fBnpm token create\fR, grants the token access to all packages instead of limiting to specific packages. +.SS "\fBscopes\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null or String (can be set multiple times) +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, this limits the token access to specific scopes. Provide a comma-separated list of scope names (with or without @ prefix). +.SS "\fBorgs\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null or String (can be set multiple times) +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, this limits the token access to specific organizations. Provide a comma-separated list of organization names. +.SS "\fBpackages-and-scopes-permission\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null, "read-only", "read-write", or "no-access" +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, sets the permission level for packages and scopes. Options are "read-only", "read-write", or "no-access". +.SS "\fBorgs-permission\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null, "read-only", "read-write", or "no-access" +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, sets the permission level for organizations. Options are "read-only", "read-write", or "no-access". .SS "\fBcidr\fR" .RS 0 .IP \(bu 4 @@ -71,6 +151,26 @@ Type: null or String (can be set multiple times) .P This is a list of CIDR address to be used when configuring limited access tokens with the \fBnpm token create\fR command. +.SS "\fBbypass-2fa\fR" +.RS 0 +.IP \(bu 4 +Default: false +.IP \(bu 4 +Type: Boolean +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, setting this to true will allow the token to bypass two-factor authentication. This is useful for automation and CI/CD workflows. +.SS "\fBpassword\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null or String +.RE 0 + +.P +Password for authentication. Can be provided via command line when creating tokens, though it's generally safer to be prompted for it. .SS "\fBregistry\fR" .RS 0 .IP \(bu 4 @@ -90,10 +190,19 @@ Type: null or String .RE 0 .P -This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm -access\fR. +This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm access\fR. .P If not set, and a registry response fails with a challenge for a one-time password, npm will prompt on the command line for one. +.SS "\fBread-only\fR" +.RS 0 +.IP \(bu 4 +Default: false +.IP \(bu 4 +Type: Boolean +.RE 0 + +.P +This is used to mark a token as unable to publish when configuring limited access tokens with the \fBnpm token create\fR command. .SS "See Also" .RS 0 .IP \(bu 4 diff --git a/deps/npm/man/man1/npm-undeprecate.1 b/deps/npm/man/man1/npm-undeprecate.1 index 2593ba2bb3adf9..7d9f2b8a0acf6e 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-UNDEPRECATE" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-undeprecate\fR - Undeprecate a version of a package .SS "Synopsis" @@ -35,8 +35,7 @@ Type: null or String .RE 0 .P -This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm -access\fR. +This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm access\fR. .P If not set, and a registry response fails with a challenge for a one-time password, npm will prompt on the command line for one. .SS "\fBdry-run\fR" diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1 index 9a3713bba4051e..31abec58e8851c 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-UNINSTALL" "1" "November 2025" "NPM@11.6.3" "" .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 eb8073bf3575d7..574c93034c0f75 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-UNPUBLISH" "1" "November 2025" "NPM@11.6.3" "" .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 3c0fd6a17d546d..71fcd92da083cc 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-UNSTAR" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-unstar\fR - Remove an item from your favorite packages .SS "Synopsis" @@ -52,8 +52,7 @@ Type: null or String .RE 0 .P -This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm -access\fR. +This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm access\fR. .P If not set, and a registry response fails with a challenge for a one-time password, npm will prompt on the command line for one. .SS "See Also" diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1 index 50eaa09ef1a2de..aad4792b445c68 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-UPDATE" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-update\fR - Update packages .SS "Synopsis" @@ -276,8 +276,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBaudit\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 4d467c1682102b..281b6d05b5f7a1 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-VERSION" "1" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpm-version\fR - Bump a package version .SS "Synopsis" @@ -80,6 +80,20 @@ Type: Boolean If set to true, then the \fBnpm version\fR command will tag the version using \fB-s\fR to add a signature. .P Note that git requires you to have set up GPG keys in your git configs for this to work properly. +.SS "\fBsave\fR" +.RS 0 +.IP \(bu 4 +Default: \fBtrue\fR unless when using \fBnpm update\fR where it defaults to \fBfalse\fR +.IP \(bu 4 +Type: Boolean +.RE 0 + +.P +Save installed packages to a \fBpackage.json\fR file as dependencies. +.P +When used with the \fBnpm rm\fR command, removes the dependency from \fBpackage.json\fR. +.P +Will also prevent writing to \fBpackage-lock.json\fR if set to \fBfalse\fR. .SS "\fBworkspace\fR" .RS 0 .IP \(bu 4 @@ -148,6 +162,18 @@ Include the workspace root when workspaces are enabled for a command. 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 "\fBignore-scripts\fR" +.RS 0 +.IP \(bu 4 +Default: false +.IP \(bu 4 +Type: Boolean +.RE 0 + +.P +If true, npm does not run scripts specified in package.json files. +.P +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "Description" .P Run this in a package directory to bump the version and write the new data back to \fBpackage.json\fR, \fBpackage-lock.json\fR, and, if present, \fBnpm-shrinkwrap.json\fR. diff --git a/deps/npm/man/man1/npm-view.1 b/deps/npm/man/man1/npm-view.1 index 63c57ffa7156bc..006e021625faff 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-VIEW" "1" "November 2025" "NPM@11.6.3" "" .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 0a316e3a3fc72f..8e662fde73ad9e 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-WHOAMI" "1" "November 2025" "NPM@11.6.3" "" .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 cda18c5f71c59c..15e8927d3c17f4 100644 --- a/deps/npm/man/man1/npm.1 +++ b/deps/npm/man/man1/npm.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "October 2025" "NPM@11.6.2" "" +.TH "NPM" "1" "November 2025" "NPM@11.6.3" "" .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.6.2 +11.6.3 .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 a862e5d6e8b2b6..beb7652683f09a 100644 --- a/deps/npm/man/man1/npx.1 +++ b/deps/npm/man/man1/npx.1 @@ -1,4 +1,4 @@ -.TH "NPX" "1" "October 2025" "NPM@11.6.2" "" +.TH "NPX" "1" "November 2025" "NPM@11.6.3" "" .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 e6b255cef3eda8..3a9dc52805d9e1 100644 --- a/deps/npm/man/man5/folders.5 +++ b/deps/npm/man/man5/folders.5 @@ -1,4 +1,4 @@ -.TH "FOLDERS" "5" "October 2025" "NPM@11.6.2" "" +.TH "FOLDERS" "5" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBfolders\fR - Folder Structures Used by npm .SS "Description" diff --git a/deps/npm/man/man5/install.5 b/deps/npm/man/man5/install.5 index 2864350ce80d94..5fc71b73adabda 100644 --- a/deps/npm/man/man5/install.5 +++ b/deps/npm/man/man5/install.5 @@ -1,4 +1,4 @@ -.TH "INSTALL" "5" "October 2025" "NPM@11.6.2" "" +.TH "INSTALL" "5" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBinstall\fR - Download and install node and npm .SS "Description" diff --git a/deps/npm/man/man5/npm-global.5 b/deps/npm/man/man5/npm-global.5 index e6b255cef3eda8..3a9dc52805d9e1 100644 --- a/deps/npm/man/man5/npm-global.5 +++ b/deps/npm/man/man5/npm-global.5 @@ -1,4 +1,4 @@ -.TH "FOLDERS" "5" "October 2025" "NPM@11.6.2" "" +.TH "FOLDERS" "5" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBfolders\fR - Folder Structures Used by npm .SS "Description" diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5 index c12aa8fe3b1b31..a465ba0ab32ddb 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" "October 2025" "NPM@11.6.2" "" +.TH "PACKAGE.JSON" "5" "November 2025" "NPM@11.6.3" "" .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 b4b8cee1b390f5..b0ddc4e9b1b004 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" "October 2025" "NPM@11.6.2" "" +.TH "NPM-SHRINKWRAP.JSON" "5" "November 2025" "NPM@11.6.3" "" .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 1d50198b83e0ab..824d29ecb741d0 100644 --- a/deps/npm/man/man5/npmrc.5 +++ b/deps/npm/man/man5/npmrc.5 @@ -1,4 +1,4 @@ -.TH "NPMRC" "5" "October 2025" "NPM@11.6.2" "" +.TH "NPMRC" "5" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBnpmrc\fR - The npm config files .SS "Description" diff --git a/deps/npm/man/man5/package-json.5 b/deps/npm/man/man5/package-json.5 index c12aa8fe3b1b31..a465ba0ab32ddb 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" "October 2025" "NPM@11.6.2" "" +.TH "PACKAGE.JSON" "5" "November 2025" "NPM@11.6.3" "" .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 3bbf561cce657e..75f1a9d86fa99e 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" "October 2025" "NPM@11.6.2" "" +.TH "PACKAGE-LOCK.JSON" "5" "November 2025" "NPM@11.6.3" "" .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 3703e0634686b9..6bdae9b9dbeb8a 100644 --- a/deps/npm/man/man7/config.7 +++ b/deps/npm/man/man7/config.7 @@ -1,4 +1,4 @@ -.TH "CONFIG" "7" "October 2025" "NPM@11.6.2" "" +.TH "CONFIG" "7" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBconfig\fR - More than you probably want to know about npm configuration .SS "Description" @@ -167,7 +167,8 @@ If you do not want your scoped package to be publicly viewable (and installable) .P Unscoped packages cannot be set to \fBrestricted\fR. .P -Note: This defaults to not changing the current access level for existing packages. Specifying a value of \fBrestricted\fR or \fBpublic\fR during publish will change the access for an existing package the same way that \fBnpm access set status\fR would. +Note: This defaults to not changing the current access level for existing packages. Specifying a value of \fBrestricted\fR or \fBpublic\fR during publish will change the access for an existing package the same way that \fBnpm access set +status\fR would. .SS "\fBall\fR" .RS 0 .IP \(bu 4 @@ -256,6 +257,16 @@ The browser that is called by npm commands to open websites. Set to \fBfalse\fR to suppress browser behavior and instead print urls to terminal. .P Set to \fBtrue\fR to use default system URL opener. +.SS "\fBbypass-2fa\fR" +.RS 0 +.IP \(bu 4 +Default: false +.IP \(bu 4 +Type: Boolean +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, setting this to true will allow the token to bypass two-factor authentication. This is useful for automation and CI/CD workflows. .SS "\fBca\fR" .RS 0 .IP \(bu 4 @@ -523,6 +534,16 @@ Type: null or Boolean Tells npm whether or not to expect results from the command. Can be either true (expect some results) or false (expect no results). .P This config cannot be used with: \fBexpect-result-count\fR +.SS "\fBexpires\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null or Number +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, this sets the expiration in days. If not specified, the server will determine the default expiration. .SS "\fBfetch-retries\fR" .RS 0 .IP \(bu 4 @@ -736,8 +757,7 @@ Type: Boolean .P If true, npm does not run scripts specified in package.json files. .P -Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm -run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. +Note that commands explicitly intended to run a particular script, such as \fBnpm start\fR, \fBnpm stop\fR, \fBnpm restart\fR, \fBnpm test\fR, and \fBnpm run\fR will still run their intended script if \fBignore-scripts\fR is set, but they will \fInot\fR run any pre- or post-scripts. .SS "\fBinclude\fR" .RS 0 .IP \(bu 4 @@ -1046,6 +1066,16 @@ 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 "\fBname\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null or String +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, this sets the name/description for the token. .SS "\fBnode-gyp\fR" .RS 0 .IP \(bu 4 @@ -1116,6 +1146,26 @@ Type: Boolean .P This option causes npm to create lock files without a \fBresolved\fR key for registry dependencies. Subsequent installs will need to resolve tarball endpoints with the configured registry, likely resulting in a longer install time. +.SS "\fBorgs\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null or String (can be set multiple times) +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, this limits the token access to specific organizations. Provide a comma-separated list of organization names. +.SS "\fBorgs-permission\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null, "read-only", "read-write", or "no-access" +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, sets the permission level for organizations. Options are "read-only", "read-write", or "no-access". .SS "\fBos\fR" .RS 0 .IP \(bu 4 @@ -1135,8 +1185,7 @@ Type: null or String .RE 0 .P -This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm -access\fR. +This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with \fBnpm access\fR. .P If not set, and a registry response fails with a challenge for a one-time password, npm will prompt on the command line for one. .SS "\fBpack-destination\fR" @@ -1183,6 +1232,36 @@ If set to true, the current operation will only use the \fBpackage-lock.json\fR, 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 "\fBpackages\fR" +.RS 0 +.IP \(bu 4 +Default: +.IP \(bu 4 +Type: null or String (can be set multiple times) +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, this limits the token access to specific packages. Provide a comma-separated list of package names. +.SS "\fBpackages-all\fR" +.RS 0 +.IP \(bu 4 +Default: false +.IP \(bu 4 +Type: Boolean +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, grants the token access to all packages instead of limiting to specific packages. +.SS "\fBpackages-and-scopes-permission\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null, "read-only", "read-write", or "no-access" +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, sets the permission level for packages and scopes. Options are "read-only", "read-write", or "no-access". .SS "\fBparseable\fR" .RS 0 .IP \(bu 4 @@ -1193,6 +1272,16 @@ Type: Boolean .P Output parseable results from commands that write to standard output. For \fBnpm search\fR, this will be tab-separated table format. +.SS "\fBpassword\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null or String +.RE 0 + +.P +Password for authentication. Can be provided via command line when creating tokens, though it's generally safer to be prompted for it. .SS "\fBprefer-dedupe\fR" .RS 0 .IP \(bu 4 @@ -1416,7 +1505,8 @@ Type: String .P Configure how versions of packages installed to a package.json file via \fB--save\fR or \fB--save-dev\fR get prefixed. .P -For example if a package has version \fB1.2.3\fR, by default its version is set to \fB^1.2.3\fR which allows minor upgrades for that package, but after \fBnpm config set save-prefix='~'\fR it would be set to \fB~1.2.3\fR which only allows patch upgrades. +For example if a package has version \fB1.2.3\fR, by default its version is set to \fB^1.2.3\fR which allows minor upgrades for that package, but after \fBnpm +config set save-prefix='~'\fR it would be set to \fB~1.2.3\fR which only allows patch upgrades. .SS "\fBsave-prod\fR" .RS 0 .IP \(bu 4 @@ -1485,6 +1575,16 @@ This will also cause \fBnpm init\fR to create a scoped package. npm init --scope=@foo --yes .fi .RE +.SS "\fBscopes\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null or String (can be set multiple times) +.RE 0 + +.P +When creating a Granular Access Token with \fBnpm token create\fR, this limits the token access to specific scopes. Provide a comma-separated list of scope names (with or without @ prefix). .SS "\fBscript-shell\fR" .RS 0 .IP \(bu 4 @@ -1494,7 +1594,8 @@ Type: null or String .RE 0 .P -The shell to use for scripts run with the \fBnpm exec\fR, \fBnpm run\fR and \fBnpm init \fR commands. +The shell to use for scripts run with the \fBnpm exec\fR, \fBnpm run\fR and \fBnpm +init \fR commands. .SS "\fBsearchexclude\fR" .RS 0 .IP \(bu 4 @@ -1606,8 +1707,8 @@ Type: String .P If you ask npm to install a package and don't tell it a specific version, then it will install the specified tag. .P -It is the tag added to the package@version specified in the \fBnpm -dist-tag add\fR command, if no explicit tag is given. +It is the tag added to the package@version specified in the \fBnpm dist-tag +add\fR command, if no explicit tag is given. .P When used by the \fBnpm diff\fR command, this is the tag used to fetch the tarball that will be compared with the local files by default. .P @@ -1638,6 +1739,16 @@ If true, writes timing information to a process specific json file in the cache You can quickly view it with this \fBjson\fR \fI\(lahttps://npm.im/json\(ra\fR command line: \fBcat ~/.npm/_logs/*-timing.json | npm exec -- json -g\fR. .P Timing information will also be reported in the terminal. To suppress this while still writing the timing file, use \fB--silent\fR. +.SS "\fBtoken-description\fR" +.RS 0 +.IP \(bu 4 +Default: null +.IP \(bu 4 +Type: null or String +.RE 0 + +.P +Description text for the token when using \fBnpm token create\fR. .SS "\fBumask\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 eed3d6c769106f..188ed46f626db4 100644 --- a/deps/npm/man/man7/dependency-selectors.7 +++ b/deps/npm/man/man7/dependency-selectors.7 @@ -1,4 +1,4 @@ -.TH "QUERYING" "7" "October 2025" "NPM@11.6.2" "" +.TH "QUERYING" "7" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBQuerying\fR - Dependency Selector Syntax & Querying .SS "Description" diff --git a/deps/npm/man/man7/developers.7 b/deps/npm/man/man7/developers.7 index a65327f7813f1d..92311087536ef9 100644 --- a/deps/npm/man/man7/developers.7 +++ b/deps/npm/man/man7/developers.7 @@ -1,4 +1,4 @@ -.TH "DEVELOPERS" "7" "October 2025" "NPM@11.6.2" "" +.TH "DEVELOPERS" "7" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBdevelopers\fR - Developer Guide .SS "Description" diff --git a/deps/npm/man/man7/logging.7 b/deps/npm/man/man7/logging.7 index fcdcfcec66c5aa..a8070b5a9f4873 100644 --- a/deps/npm/man/man7/logging.7 +++ b/deps/npm/man/man7/logging.7 @@ -1,4 +1,4 @@ -.TH "LOGGING" "7" "October 2025" "NPM@11.6.2" "" +.TH "LOGGING" "7" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBLogging\fR - Why, What & How We Log .SS "Description" diff --git a/deps/npm/man/man7/orgs.7 b/deps/npm/man/man7/orgs.7 index e68241ff36fe19..5112f9668bf7d6 100644 --- a/deps/npm/man/man7/orgs.7 +++ b/deps/npm/man/man7/orgs.7 @@ -1,4 +1,4 @@ -.TH "ORGS" "7" "October 2025" "NPM@11.6.2" "" +.TH "ORGS" "7" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBorgs\fR - Working with Teams & Orgs .SS "Description" diff --git a/deps/npm/man/man7/package-spec.7 b/deps/npm/man/man7/package-spec.7 index c70815de103705..29121b9ff2a871 100644 --- a/deps/npm/man/man7/package-spec.7 +++ b/deps/npm/man/man7/package-spec.7 @@ -1,4 +1,4 @@ -.TH "PACKAGE-SPEC" "7" "October 2025" "NPM@11.6.2" "" +.TH "PACKAGE-SPEC" "7" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBpackage-spec\fR - Package name specifier .SS "Description" diff --git a/deps/npm/man/man7/registry.7 b/deps/npm/man/man7/registry.7 index 1c0b0bf111a2e6..e23ed66824a6d9 100644 --- a/deps/npm/man/man7/registry.7 +++ b/deps/npm/man/man7/registry.7 @@ -1,4 +1,4 @@ -.TH "REGISTRY" "7" "October 2025" "NPM@11.6.2" "" +.TH "REGISTRY" "7" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBregistry\fR - The JavaScript Package Registry .SS "Description" diff --git a/deps/npm/man/man7/removal.7 b/deps/npm/man/man7/removal.7 index 750f5a0b35ed84..6e12a153ac0788 100644 --- a/deps/npm/man/man7/removal.7 +++ b/deps/npm/man/man7/removal.7 @@ -1,4 +1,4 @@ -.TH "REMOVAL" "7" "October 2025" "NPM@11.6.2" "" +.TH "REMOVAL" "7" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBremoval\fR - Cleaning the Slate .SS "Synopsis" diff --git a/deps/npm/man/man7/scope.7 b/deps/npm/man/man7/scope.7 index c12c8360f3f076..aaadc2f935fae9 100644 --- a/deps/npm/man/man7/scope.7 +++ b/deps/npm/man/man7/scope.7 @@ -1,4 +1,4 @@ -.TH "SCOPE" "7" "October 2025" "NPM@11.6.2" "" +.TH "SCOPE" "7" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBscope\fR - Scoped packages .SS "Description" diff --git a/deps/npm/man/man7/scripts.7 b/deps/npm/man/man7/scripts.7 index cbef73ef64ad2d..e10d871bf3342e 100644 --- a/deps/npm/man/man7/scripts.7 +++ b/deps/npm/man/man7/scripts.7 @@ -1,4 +1,4 @@ -.TH "SCRIPTS" "7" "October 2025" "NPM@11.6.2" "" +.TH "SCRIPTS" "7" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBscripts\fR - How npm handles the "scripts" field .SS "Description" diff --git a/deps/npm/man/man7/workspaces.7 b/deps/npm/man/man7/workspaces.7 index 74a291685b8b29..06517e0ab5c037 100644 --- a/deps/npm/man/man7/workspaces.7 +++ b/deps/npm/man/man7/workspaces.7 @@ -1,4 +1,4 @@ -.TH "WORKSPACES" "7" "October 2025" "NPM@11.6.2" "" +.TH "WORKSPACES" "7" "November 2025" "NPM@11.6.3" "" .SH "NAME" \fBworkspaces\fR - Working with workspaces .SS "Description" 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 3a066d9b6d336f..699735f3498262 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 @@ -42,7 +42,6 @@ const _flagsSuspect = Symbol.for('flagsSuspect') const _setWorkspaces = Symbol.for('setWorkspaces') const _updateNames = Symbol.for('updateNames') const _resolvedAdd = Symbol.for('resolvedAdd') -const _usePackageLock = Symbol.for('usePackageLock') const _rpcache = Symbol.for('realpathCache') const _stcache = Symbol.for('statCache') @@ -101,39 +100,28 @@ module.exports = cls => class IdealTreeBuilder extends cls { constructor (options) { super(options) - // normalize trailing slash - const registry = options.registry || 'https://registry.npmjs.org' - options.registry = this.registry = registry.replace(/\/+$/, '') + '/' - const { follow = false, installStrategy = 'hoisted', - idealTree = null, - installLinks = false, - legacyPeerDeps = false, - packageLock = true, strictPeerDeps = false, - workspaces, global, } = options this.#strictPeerDeps = !!strictPeerDeps - this.idealTree = idealTree - this.installLinks = installLinks - this.legacyPeerDeps = legacyPeerDeps - - this[_usePackageLock] = packageLock this.#installStrategy = global ? 'shallow' : installStrategy this.#follow = !!follow - if (workspaces?.length && global) { - throw new Error('Cannot operate on workspaces in global mode') - } - this[_updateAll] = false this[_updateNames] = [] this[_resolvedAdd] = [] + + // caches for cached realpath calls + const cwd = process.cwd() + // assume that the cwd is real enough for our purposes + this[_rpcache] = new Map([[cwd, cwd]]) + this[_stcache] = new Map() + this[_flagsSuspect] = false } get explicitRequests () { @@ -298,7 +286,7 @@ module.exports = cls => class IdealTreeBuilder extends cls { .then(root => { if (this.options.global) { return root - } else if (!this[_usePackageLock] || this[_updateAll]) { + } else if (!this.options.usePackageLock || this[_updateAll]) { return Shrinkwrap.reset({ path: this.path, lockfileVersion: this.options.lockfileVersion, @@ -351,7 +339,7 @@ module.exports = cls => class IdealTreeBuilder extends cls { filter: node => node, visit: node => { for (const edge of node.edgesOut.values()) { - if (!edge.to || !edge.valid) { + if ((!edge.to && edge.type !== 'peerOptional') || !edge.valid) { this.#depsQueue.push(node) break // no need to continue the loop after the first hit } @@ -754,6 +742,7 @@ This is a one-time fix-up, please be patient... // have to re-calc dep flags, because the nodes don't have edges // until their packages get assigned, so everything looks extraneous + resetDepFlags(this.idealTree) calcDepFlags(this.idealTree) // yes, yes, this isn't the "original" version, but now that it's been @@ -1230,7 +1219,7 @@ This is a one-time fix-up, please be patient... } } - #nodeFromSpec (name, spec, parent, edge) { + async #nodeFromSpec (name, spec, parent, edge) { // pacote will slap integrity on its options, so we have to clone // the object so it doesn't get mutated. // Don't bother to load the manifest for link deps, because the target @@ -1259,7 +1248,13 @@ This is a one-time fix-up, please be patient... // Decide whether to link or copy the dependency const shouldLink = (isWorkspace || isProjectInternalFileSpec || !installLinks) && !isTransitiveFileDep if (spec.type === 'directory' && shouldLink) { - return this.#linkFromSpec(name, spec, parent, edge) + const realpath = spec.fetchSpec + const { content: pkg } = await PackageJson.normalize(realpath).catch(() => { + return { content: {} } + }) + const link = new Link({ name, parent, realpath, pkg, installLinks, legacyPeerDeps }) + this.#linkNodes.add(link) + return link } // if the spec matches a workspace name, then see if the workspace node will satisfy the edge. if it does, we return the workspace node to make sure it takes priority. @@ -1300,17 +1295,6 @@ This is a one-time fix-up, please be patient... }) } - async #linkFromSpec (name, spec, parent) { - const realpath = spec.fetchSpec - const { installLinks, legacyPeerDeps } = this - const { content: pkg } = await PackageJson.normalize(realpath).catch(() => { - return { content: {} } - }) - const link = new Link({ name, parent, realpath, pkg, installLinks, legacyPeerDeps }) - this.#linkNodes.add(link) - return link - } - // load all peer deps and meta-peer deps into the node's parent // At the end of this, the node's peer-type outward edges are all // resolved, and so are all of theirs, but other dep types are not. @@ -1445,6 +1429,7 @@ This is a one-time fix-up, please be patient... // and add it to the _depsQueue // // call buildDepStep if anything was added to the queue; otherwise, we're done + // XXX load-virtual also has a #resolveLinks, is there overlap? #resolveLinks () { for (const link of this.#linkNodes) { this.#linkNodes.delete(link) @@ -1508,11 +1493,7 @@ This is a one-time fix-up, please be patient... } else { // otherwise just unset all the flags on the root node // since they will sometimes have the default value - this.idealTree.extraneous = false - this.idealTree.dev = false - this.idealTree.optional = false - this.idealTree.devOptional = false - this.idealTree.peer = false + this.idealTree.unsetDepFlags() } // at this point, any node marked as extraneous should be pruned. @@ -1555,12 +1536,7 @@ This is a one-time fix-up, please be patient... #idealTreePrune () { for (const node of this.idealTree.inventory.values()) { - // optional peer dependencies are meant to be added to the tree - // through an explicit required dependency (most commonly in the - // root package.json), at which point they won't be optional so - // any dependencies still marked as both optional and peer at - // this point can be pruned as a special kind of extraneous - if (node.extraneous || (node.peer && node.optional)) { + if (node.extraneous) { node.parent = null } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/index.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/index.js index 3622f957b7acde..4c1faffa786f35 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/index.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/index.js @@ -68,6 +68,34 @@ class Arborist extends Base { constructor (options = {}) { const timeEnd = time.start('arborist:ctor') super(options) + + // normalize trailing slash + const registry = options.registry || 'https://registry.npmjs.org' + options.registry = this.registry = registry.replace(/(? class IsolatedReifier extends cls { result.hasInstallScript = node.hasInstallScript } - async [_createBundledTree] () { + async #createBundledTree () { // TODO: make sure that idealTree object exists const idealTree = this.idealTree // TODO: test workspaces having bundled deps @@ -217,7 +216,7 @@ module.exports = cls => class IsolatedReifier extends cls { const proxiedIdealTree = this.idealGraph - const bundledTree = await this[_createBundledTree]() + const bundledTree = await this.#createBundledTree() const treeHash = (startNode) => { // generate short hash based on the dependency tree diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-actual.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-actual.js index 3be44780e01aee..30a11e392cd168 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-actual.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-actual.js @@ -41,19 +41,6 @@ module.exports = cls => class ActualLoader extends cls { #topNodes = new Set() #transplantFilter - constructor (options) { - super(options) - - // the tree of nodes on disk - this.actualTree = options.actualTree - - // caches for cached realpath calls - const cwd = process.cwd() - // assume that the cwd is real enough for our purposes - this[_rpcache] = new Map([[cwd, cwd]]) - this[_stcache] = new Map() - } - // public method // TODO remove options param in next semver major async loadActual (options = {}) { diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js index ba1b7478bd510f..e5a96a0b5f0b08 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js @@ -18,14 +18,6 @@ const setWorkspaces = Symbol.for('setWorkspaces') module.exports = cls => class VirtualLoader extends cls { #rootOptionProvided - constructor (options) { - super(options) - - // the virtual tree we load from a shrinkwrap - this.virtualTree = options.virtualTree - this[flagsSuspect] = false - } - // public method async loadVirtual (options = {}) { if (this.virtualTree) { @@ -69,11 +61,7 @@ module.exports = cls => class VirtualLoader extends cls { if (!this.#rootOptionProvided) { // root is never any of these things, but might be a brand new // baby Node object that never had its dep flags calculated. - root.extraneous = false - root.dev = false - root.optional = false - root.devOptional = false - root.peer = false + root.unsetDepFlags() } else { this[flagsSuspect] = true } @@ -81,7 +69,21 @@ module.exports = cls => class VirtualLoader extends cls { this.#checkRootEdges(s, root) root.meta = s this.virtualTree = root - const { links, nodes } = this.#resolveNodes(s, root) + // separate out link metadata, and create Node objects for nodes + const links = new Map() + const nodes = new Map([['', root]]) + for (const [location, meta] of Object.entries(s.data.packages)) { + // skip the root because we already got it + if (!location) { + continue + } + + if (meta.link) { + links.set(location, meta) + } else { + nodes.set(location, this.#loadNode(location, meta)) + } + } await this.#resolveLinks(links, nodes) if (!(s.originalLockfileVersion >= 2)) { this.#assignBundles(nodes) @@ -93,11 +95,7 @@ module.exports = cls => class VirtualLoader extends cls { if (node.isRoot || node === this.#rootOptionProvided) { continue } - node.extraneous = true - node.dev = true - node.optional = true - node.devOptional = true - node.peer = true + node.resetDepFlags() } calcDepFlags(this.virtualTree, !this.#rootOptionProvided) } @@ -168,27 +166,9 @@ module.exports = cls => class VirtualLoader extends cls { } } - // separate out link metadata, and create Node objects for nodes - #resolveNodes (s, root) { - const links = new Map() - const nodes = new Map([['', root]]) - for (const [location, meta] of Object.entries(s.data.packages)) { - // skip the root because we already got it - if (!location) { - continue - } - - if (meta.link) { - links.set(location, meta) - } else { - nodes.set(location, this.#loadNode(location, meta)) - } - } - return { links, nodes } - } - // links is the set of metadata, and nodes is the map of non-Link nodes // Set the targets to nodes in the set, if we have them (we might not) + // XXX build-ideal-tree also has a #resolveLinks, is there overlap? async #resolveLinks (links, nodes) { for (const [location, meta] of links.entries()) { const targetPath = resolve(this.path, meta.resolved) @@ -255,11 +235,6 @@ To fix: sw.name = nameFromFolder(path) } - const dev = sw.dev - const optional = sw.optional - const devOptional = dev || optional || sw.devOptional - const peer = sw.peer - const node = new Node({ installLinks: this.installLinks, legacyPeerDeps: this.legacyPeerDeps, @@ -270,18 +245,15 @@ To fix: resolved: consistentResolve(sw.resolved, this.path, path), pkg: sw, hasShrinkwrap: sw.hasShrinkwrap, - dev, - optional, - devOptional, - peer, loadOverrides, + // cast to boolean because they're undefined in the lock file when false + extraneous: !!sw.extraneous, + devOptional: !!(sw.devOptional || sw.dev || sw.optional), + peer: !!sw.peer, + optional: !!sw.optional, + dev: !!sw.dev, }) - // cast to boolean because they're undefined in the lock file when false - node.extraneous = !!sw.extraneous - node.devOptional = !!(sw.devOptional || sw.dev || sw.optional) - node.peer = !!sw.peer - node.optional = !!sw.optional - node.dev = !!sw.dev + return node } 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 272d6a4122aef7..eef557208208d9 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js @@ -24,13 +24,12 @@ const _trashList = Symbol.for('trashList') module.exports = cls => class Builder extends cls { #doHandleOptionalFailure #oldMeta = null - #queues - - constructor (options) { - super(options) - - this.scriptsRun = new Set() - this.#resetQueues() + #queues = { + preinstall: [], + install: [], + postinstall: [], + prepare: [], + bin: [], } async rebuild ({ nodes, handleOptionalFailure = false } = {}) { @@ -62,7 +61,13 @@ module.exports = cls => class Builder extends cls { // build link deps if (linkNodes.size) { - this.#resetQueues() + this.#queues = { + preinstall: [], + install: [], + postinstall: [], + prepare: [], + bin: [], + } await this.#build(linkNodes, { type: 'links' }) } @@ -132,16 +137,6 @@ module.exports = cls => class Builder extends cls { } } - #resetQueues () { - this.#queues = { - preinstall: [], - install: [], - postinstall: [], - prepare: [], - bin: [], - } - } - async #build (nodes, { type = 'deps' }) { const timeEnd = time.start(`build:${type}`) 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 70d4d9796d2e72..ff71044536d8c8 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js @@ -57,11 +57,9 @@ const _rollbackRetireShallowNodes = Symbol.for('rollbackRetireShallowNodes') const _rollbackCreateSparseTree = Symbol.for('rollbackCreateSparseTree') const _rollbackMoveBackRetiredUnchanged = Symbol.for('rollbackMoveBackRetiredUnchanged') const _saveIdealTree = Symbol.for('saveIdealTree') -const _reifyPackages = Symbol.for('reifyPackages') // defined by build-ideal-tree mixin const _resolvedAdd = Symbol.for('resolvedAdd') -const _usePackageLock = Symbol.for('usePackageLock') // used by build-ideal-tree mixin const _addNodeToTrashList = Symbol.for('addNodeToTrashList') @@ -70,12 +68,10 @@ const _createIsolatedTree = Symbol.for('createIsolatedTree') module.exports = cls => class Reifier extends cls { #bundleMissing = new Set() // child nodes we'd EXPECT to be included in a bundle, but aren't #bundleUnpacked = new Set() // the nodes we unpack to read their bundles - #dryRun #nmValidated = new Set() #omit #retiredPaths = {} #retiredUnchanged = {} - #savePrefix #shrinkwrapInflated = new Set() #sparseTreeDirs = new Set() #sparseTreeRoots = new Set() @@ -122,7 +118,7 @@ module.exports = cls => class Reifier extends cls { this.idealTree = await this[_createIsolatedTree]() } await this[_diffTrees]() - await this[_reifyPackages]() + await this.#reifyPackages() if (linked) { // swap back in the idealTree // so that the lockfile is preserved @@ -261,7 +257,7 @@ module.exports = cls => class Reifier extends cls { return treeCheck(this.actualTree) } - async [_reifyPackages] () { + async #reifyPackages () { // we don't submit the audit report or write to disk on dry runs if (this.options.dryRun) { return @@ -817,9 +813,17 @@ module.exports = cls => class Reifier extends cls { // Make sure we don't double-include the path if it's already there const registryPath = registryURL.pathname.replace(/\/$/, '') - if (registryPath && registryPath !== '/' && !resolvedURL.pathname.startsWith(registryPath)) { - // Since hostname is changed, we need to ensure the registry path is included - resolvedURL.pathname = registryPath + resolvedURL.pathname + if (registryPath && registryPath !== '/') { + // Check if the resolved pathname already starts with the registry path + // We need to ensure it's a proper path prefix, not just a string prefix + // e.g., registry path '/npm' should not match '/npm-run-path' + const hasRegistryPath = resolvedURL.pathname === registryPath || + resolvedURL.pathname.startsWith(registryPath + '/') + + if (!hasRegistryPath) { + // Since hostname is changed, we need to ensure the registry path is included + resolvedURL.pathname = registryPath + resolvedURL.pathname + } } return resolvedURL.toString() @@ -1496,7 +1500,7 @@ module.exports = cls => class Reifier extends cls { // before now edge specs could be changing, affecting the `requires` field // in the package lock, so we hold off saving to the very last action - if (this[_usePackageLock]) { + if (this.options.usePackageLock) { // preserve indentation, if possible let format = this.idealTree.package[Symbol.for('indent')] if (format === undefined) { diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/calc-dep-flags.js b/deps/npm/node_modules/@npmcli/arborist/lib/calc-dep-flags.js index 76de452ed3d80f..5f2484858094dc 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/calc-dep-flags.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/calc-dep-flags.js @@ -1,144 +1,102 @@ -const { depth } = require('treeverse') - +// Dep flag (dev, peer, etc.) calculation requires default or reset flags. +// Flags are true by default and are unset to false as we walk deps. +// We iterate outward edges looking for dep flags that can +// be unset based on the current nodes flags and edge type. +// Examples: +// - a non-optional node with a non-optional edge out, the edge node should not be optional +// - a non-peer node with a non-peer edge out, the edge node should not be peer +// If a node is changed, we add to the queue and continue until no more changes. +// Flags that remain after all this unsetting should be valid. +// Examples: +// - a node still flagged optional must only be reachable via optional edges +// - a node still flagged peer must only be reachable via peer edges const calcDepFlags = (tree, resetRoot = true) => { if (resetRoot) { - tree.dev = false - tree.optional = false - tree.devOptional = false - tree.peer = false + tree.unsetDepFlags() } - const ret = depth({ - tree, - visit: node => calcDepFlagsStep(node), - filter: node => node, - getChildren: (node, tree) => - [...tree.edgesOut.values()].map(edge => edge.to), - }) - return ret -} - -const calcDepFlagsStep = (node) => { - // This rewalk is necessary to handle cases where devDep and optional - // or normal dependency graphs overlap deep in the dep graph. - // Since we're only walking through deps that are not already flagged - // as non-dev/non-optional, it's typically a very shallow traversal - - node.extraneous = false - resetParents(node, 'extraneous') - resetParents(node, 'dev') - resetParents(node, 'peer') - resetParents(node, 'devOptional') - resetParents(node, 'optional') - - // for links, map their hierarchy appropriately - if (node.isLink) { - // node.target can be null, we check to ensure it's not null before proceeding - if (node.target == null) { - return node - } - node.target.dev = node.dev - node.target.optional = node.optional - node.target.devOptional = node.devOptional - node.target.peer = node.peer - return calcDepFlagsStep(node.target) - } - - node.edgesOut.forEach(({ peer, optional, dev, to }) => { - // if the dep is missing, then its flags are already maximally unset - if (!to) { - return - } - // everything with any kind of edge into it is not extraneous - to.extraneous = false - - // If this is a peer edge, mark the target as peer - if (peer) { - to.peer = true - } else if (to.peer && !hasIncomingPeerEdge(to)) { - unsetFlag(to, 'peer') - } - // devOptional is the *overlap* of the dev and optional tree. - // however, for convenience and to save an extra rewalk, we leave - // it set when we are in *either* tree, and then omit it from the - // package-lock if either dev or optional are set. - const unsetDevOpt = !node.devOptional && !node.dev && !node.optional && !dev && !optional + const seen = new Set() + const queue = [tree] - // if we are not in the devOpt tree, then we're also not in - // either the dev or opt trees - const unsetDev = unsetDevOpt || !node.dev && !dev - const unsetOpt = unsetDevOpt || !node.optional && !optional + let node + while (node = queue.pop()) { + seen.add(node) - if (unsetDevOpt) { - unsetFlag(to, 'devOptional') + // Unset extraneous from all parents to avoid removal of children. + if (!node.extraneous) { + for (let n = node.resolveParent; n?.extraneous; n = n.resolveParent) { + n.extraneous = false + } } - if (unsetDev) { - unsetFlag(to, 'dev') + // for links, map their hierarchy appropriately + if (node.isLink) { + // node.target can be null, we check to ensure it's not null before proceeding + if (node.target == null) { + continue + } + node.target.dev = node.dev + node.target.optional = node.optional + node.target.devOptional = node.devOptional + node.target.peer = node.peer + node.target.extraneous = node.extraneous + queue.push(node.target) + continue } - if (unsetOpt) { - unsetFlag(to, 'optional') - } - }) - - return node -} - -const hasIncomingPeerEdge = (node) => { - const target = node.isLink && node.target ? node.target : node - for (const edge of target.edgesIn) { - if (edge.type === 'peer') { - return true + for (const { peer, optional, dev, to } of node.edgesOut.values()) { + // if the dep is missing, then its flags are already maximally unset + if (!to) { + continue + } + + let changed = false + + // only optional peer dependencies should stay extraneous + if (to.extraneous && !node.extraneous && !(peer && optional)) { + to.extraneous = false + changed = true + } + + if (to.dev && !node.dev && !dev) { + to.dev = false + changed = true + } + + if (to.optional && !node.optional && !optional) { + to.optional = false + changed = true + } + + // devOptional is the *overlap* of the dev and optional tree. + // A node may be depended on by separate dev and optional nodes. + // It SHOULD NOT be removed when pruning dev OR optional. + // It SHOULD be removed when pruning dev AND optional. + // We only unset here if a node is not dev AND not optional because + // if we did unset, it would prevent any overlap deeper in the tree. + // We correct this later by removing if dev OR optional is set. + if (to.devOptional && !node.devOptional && !node.dev && !node.optional && !dev && !optional) { + to.devOptional = false + changed = true + } + + if (to.peer && !node.peer && !peer) { + to.peer = false + changed = true + } + + if (changed) { + queue.push(to) + } } } - return false -} -const resetParents = (node, flag) => { - if (node[flag]) { - return - } - - for (let p = node; p && (p === node || p[flag]); p = p.resolveParent) { - p[flag] = false - } -} - -// typically a short walk, since it only traverses deps that have the flag set. -const unsetFlag = (node, flag) => { - if (node[flag]) { - node[flag] = false - depth({ - tree: node, - visit: node => { - node.extraneous = node[flag] = false - if (node.isLink && node.target) { - node.target.extraneous = node.target[flag] = false - } - }, - getChildren: node => { - const children = [] - const targetNode = node.isLink && node.target ? node.target : node - for (const edge of targetNode.edgesOut.values()) { - if (edge.to?.[flag]) { - // For the peer flag, only follow peer edges to unset the flag - // Don't propagate peer flag through prod/dev/optional edges - if (flag === 'peer') { - if (edge.type === 'peer') { - children.push(edge.to) - } - } else { - // For other flags, follow prod edges (and peer edges for non-peer flags) - if (edge.type === 'prod' || edge.type === 'peer') { - children.push(edge.to) - } - } - } - } - return children - }, - }) + // Remove incorrect devOptional flags now that we have walked all deps. + seen.delete(tree) + for (const node of seen.values()) { + if (node.devOptional && (node.dev || node.optional)) { + node.devOptional = false + } } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/edge.js b/deps/npm/node_modules/@npmcli/arborist/lib/edge.js index 242d2669ae4ca3..32e523cbc83cac 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/edge.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/edge.js @@ -276,9 +276,15 @@ class Edge { } else if (!this.satisfiedBy(this.#to)) { this.#error = 'INVALID' } else if (this.overrides && this.#to.edgesOut.size && OverrideSet.doOverrideSetsConflict(this.overrides, this.#to.overrides)) { - // Any inconsistency between the edge's override set and the target's override set is potentially problematic. - // But we only say the edge is in error if the override sets are plainly conflicting. - // Note that if the target doesn't have any dependencies of their own, then this inconsistency is irrelevant. + // Check for conflicts between the edge's override set and the target node's override set. + // This catches cases where different parts of the tree have genuinely incompatible + // version requirements for the same package. + // The improved conflict detection uses semantic comparison (checking for incompatible + // version ranges) rather than pure structural equality, avoiding false positives from: + // - Reference overrides ($syntax) that resolve to compatible versions + // - Peer dependencies with different but compatible override contexts + // Note: We only check if the target has dependencies (edgesOut.size > 0), since + // override conflicts are only relevant if the target has its own dependencies. this.#error = 'INVALID' } else { this.#error = 'OK' diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/node.js b/deps/npm/node_modules/@npmcli/arborist/lib/node.js index 41871756c221cc..8c6d361e863858 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/node.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/node.js @@ -1613,6 +1613,22 @@ class Node { [util.inspect.custom] () { return this.toJSON() } + + resetDepFlags () { + this.extraneous = true + this.dev = true + this.optional = true + this.devOptional = true + this.peer = true + } + + unsetDepFlags () { + this.extraneous = false + this.dev = false + this.optional = false + this.devOptional = false + this.peer = false + } } module.exports = Node diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/optional-set.js b/deps/npm/node_modules/@npmcli/arborist/lib/optional-set.js index 76d557c0e52c55..021a0ef72aa172 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/optional-set.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/optional-set.js @@ -10,10 +10,6 @@ const gatherDepSet = require('./gather-dep-set.js') const optionalSet = node => { - if (!node.optional) { - return new Set() - } - // start with the node, then walk up the dependency graph until we // get to the boundaries that define the optional set. since the // node is optional, we know that all paths INTO this area of the diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/override-set.js b/deps/npm/node_modules/@npmcli/arborist/lib/override-set.js index 3f05609bfacc1f..b4a11ba589df77 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/override-set.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/override-set.js @@ -201,8 +201,82 @@ class OverrideSet { static doOverrideSetsConflict (first, second) { // If override sets contain one another then we can try to use the more specific one. - // If neither one is more specific, then we consider them to be in conflict. - return (this.findSpecificOverrideSet(first, second) === undefined) + // If neither one is more specific, check for semantic conflicts. + const specificSet = this.findSpecificOverrideSet(first, second) + if (specificSet !== undefined) { + // One contains the other, so no conflict + return false + } + + // The override sets are structurally incomparable, but this doesn't necessarily + // mean they conflict. We need to check if they have conflicting version requirements + // for any package that appears in both rulesets. + return this.haveConflictingRules(first, second) + } + + static haveConflictingRules (first, second) { + // Get all rules from both override sets + const firstRules = first.ruleset + const secondRules = second.ruleset + + // Check each package that appears in both rulesets + for (const [key, firstRule] of firstRules) { + const secondRule = secondRules.get(key) + if (!secondRule) { + // Package only appears in one ruleset, no conflict + continue + } + + // Same rule object means no conflict + if (firstRule === secondRule || firstRule.isEqual(secondRule)) { + continue + } + + // Both rulesets have rules for this package with different values. + // Check if the version requirements are actually incompatible. + const firstValue = firstRule.value + const secondValue = secondRule.value + + // If either value is a reference (starts with $), we can't determine + // compatibility here - the reference might resolve to compatible versions. + // We defer to runtime resolution rather than failing early. + if (firstValue.startsWith('$') || secondValue.startsWith('$')) { + continue + } + + // Check if the version ranges are compatible using semver + // If both specify version ranges, they conflict only if they have no overlap + try { + const firstSpec = npa(`${firstRule.name}@${firstValue}`) + const secondSpec = npa(`${secondRule.name}@${secondValue}`) + + // For range/version types, check if they intersect + if ((firstSpec.type === 'range' || firstSpec.type === 'version') && + (secondSpec.type === 'range' || secondSpec.type === 'version')) { + // Check if the ranges intersect + const firstRange = firstSpec.fetchSpec + const secondRange = secondSpec.fetchSpec + + // If the ranges don't intersect, we have a real conflict + if (!semver.intersects(firstRange, secondRange)) { + log.silly('Found conflicting override rules', { + package: firstRule.name, + first: firstValue, + second: secondValue, + }) + return true + } + } + // For other types (git, file, directory, tag), we can't easily determine + // compatibility, so we conservatively assume no conflict + } catch { + // If we can't parse the specs, conservatively assume no conflict + // Real conflicts will be caught during dependency resolution + } + } + + // No conflicting rules found + return false } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/reset-dep-flags.js b/deps/npm/node_modules/@npmcli/arborist/lib/reset-dep-flags.js index e259e901a56254..6bb4ceceb6972f 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/reset-dep-flags.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/reset-dep-flags.js @@ -6,10 +6,6 @@ // we can find the set that is actually extraneous. module.exports = tree => { for (const node of tree.inventory.values()) { - node.extraneous = true - node.dev = true - node.devOptional = true - node.peer = true - node.optional = true + node.resetDepFlags() } } diff --git a/deps/npm/node_modules/@npmcli/arborist/package.json b/deps/npm/node_modules/@npmcli/arborist/package.json index ed00181eceaec0..ae7dbc433c5b28 100644 --- a/deps/npm/node_modules/@npmcli/arborist/package.json +++ b/deps/npm/node_modules/@npmcli/arborist/package.json @@ -1,20 +1,20 @@ { "name": "@npmcli/arborist", - "version": "9.1.6", + "version": "9.1.7", "description": "Manage node_modules trees", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/fs": "^4.0.0", - "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/installed-package-contents": "^4.0.0", "@npmcli/map-workspaces": "^5.0.0", "@npmcli/metavuln-calculator": "^9.0.2", - "@npmcli/name-from-folder": "^3.0.0", - "@npmcli/node-gyp": "^4.0.0", + "@npmcli/name-from-folder": "^4.0.0", + "@npmcli/node-gyp": "^5.0.0", "@npmcli/package-json": "^7.0.0", "@npmcli/query": "^4.0.0", - "@npmcli/redact": "^3.0.0", + "@npmcli/redact": "^4.0.0", "@npmcli/run-script": "^10.0.0", - "bin-links": "^5.0.0", + "bin-links": "^6.0.0", "cacache": "^20.0.1", "common-ancestor-path": "^1.0.1", "hosted-git-info": "^9.0.0", @@ -22,18 +22,18 @@ "lru-cache": "^11.2.1", "minimatch": "^10.0.3", "nopt": "^8.0.0", - "npm-install-checks": "^7.1.0", + "npm-install-checks": "^8.0.0", "npm-package-arg": "^13.0.0", "npm-pick-manifest": "^11.0.1", "npm-registry-fetch": "^19.0.0", "pacote": "^21.0.2", - "parse-conflict-json": "^4.0.0", - "proc-log": "^5.0.0", + "parse-conflict-json": "^5.0.1", + "proc-log": "^6.0.0", "proggy": "^3.0.0", "promise-all-reject-late": "^1.0.0", "promise-call-limit": "^3.0.1", "semver": "^7.3.7", - "ssri": "^12.0.0", + "ssri": "^13.0.0", "treeverse": "^3.0.0", "walk-up-path": "^4.0.0" }, 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 739428508d2fe9..a91baf6927dfa3 100644 --- a/deps/npm/node_modules/@npmcli/config/lib/definitions/definitions.js +++ b/deps/npm/node_modules/@npmcli/config/lib/definitions/definitions.js @@ -274,6 +274,16 @@ const definitions = { `, flatten, }), + 'bypass-2fa': new Definition('bypass-2fa', { + default: false, + type: Boolean, + description: ` + When creating a Granular Access Token with \`npm token create\`, + setting this to true will allow the token to bypass two-factor + authentication. This is useful for automation and CI/CD workflows. + `, + flatten, + }), ca: new Definition('ca', { default: null, type: [null, String, Array], @@ -624,6 +634,16 @@ const definitions = { Can be either true (expect some results) or false (expect no results). `, }), + expires: new Definition('expires', { + default: null, + type: [null, Number], + description: ` + When creating a Granular Access Token with \`npm token create\`, + this sets the expiration in days. If not specified, the server + will determine the default expiration. + `, + flatten, + }), 'fetch-retries': new Definition('fetch-retries', { default: 2, type: Number, @@ -1281,6 +1301,16 @@ const definitions = { Show extended information in \`ls\`, \`search\`, and \`help-search\`. `, }), + name: new Definition('name', { + default: null, + type: [null, String], + hint: '', + description: ` + When creating a Granular Access Token with \`npm token create\`, + this sets the name/description for the token. + `, + flatten, + }), maxsockets: new Definition('maxsockets', { default: 15, type: Number, @@ -1409,6 +1439,17 @@ const definitions = { definitions.omit.flatten('omit', obj, flatOptions) }, }), + orgs: new Definition('orgs', { + default: null, + type: [null, String, Array], + hint: '', + description: ` + When creating a Granular Access Token with \`npm token create\`, + this limits the token access to specific organizations. Provide + a comma-separated list of organization names. + `, + flatten, + }), optional: new Definition('optional', { default: null, type: [null, Boolean], @@ -1505,6 +1546,17 @@ const definitions = { `, flatten, }), + packages: new Definition('packages', { + default: [], + type: [null, String, Array], + hint: '', + description: ` + When creating a Granular Access Token with \`npm token create\`, + this limits the token access to specific packages. Provide + a comma-separated list of package names. + `, + flatten, + }), parseable: new Definition('parseable', { default: false, type: Boolean, @@ -1900,6 +1952,64 @@ const definitions = { flatOptions.projectScope = scope }, }), + scopes: new Definition('scopes', { + default: null, + type: [null, String, Array], + hint: '<@scope1,@scope2>', + description: ` + When creating a Granular Access Token with \`npm token create\`, + this limits the token access to specific scopes. Provide + a comma-separated list of scope names (with or without @ prefix). + `, + flatten, + }), + 'packages-all': new Definition('packages-all', { + default: false, + type: Boolean, + description: ` + When creating a Granular Access Token with \`npm token create\`, + grants the token access to all packages instead of limiting to + specific packages. + `, + flatten, + }), + 'packages-and-scopes-permission': new Definition('packages-and-scopes-permission', { + default: null, + type: [null, 'read-only', 'read-write', 'no-access'], + description: ` + When creating a Granular Access Token with \`npm token create\`, + sets the permission level for packages and scopes. Options are + "read-only", "read-write", or "no-access". + `, + flatten, + }), + 'orgs-permission': new Definition('orgs-permission', { + default: null, + type: [null, 'read-only', 'read-write', 'no-access'], + description: ` + When creating a Granular Access Token with \`npm token create\`, + sets the permission level for organizations. Options are + "read-only", "read-write", or "no-access". + `, + flatten, + }), + password: new Definition('password', { + default: null, + type: [null, String], + description: ` + Password for authentication. Can be provided via command line when + creating tokens, though it's generally safer to be prompted for it. + `, + flatten, + }), + 'token-description': new Definition('token-description', { + default: null, + type: [null, String], + description: ` + Description text for the token when using \`npm token create\`. + `, + flatten, + }), 'script-shell': new Definition('script-shell', { default: null, defaultDescription: ` diff --git a/deps/npm/node_modules/@npmcli/config/package.json b/deps/npm/node_modules/@npmcli/config/package.json index 651e2135893f48..7317cda73cd816 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.4.2", + "version": "10.4.3", "files": [ "bin/", "lib/" @@ -40,9 +40,9 @@ "@npmcli/map-workspaces": "^5.0.0", "@npmcli/package-json": "^7.0.0", "ci-info": "^4.0.0", - "ini": "^5.0.0", + "ini": "^6.0.0", "nopt": "^8.1.0", - "proc-log": "^5.0.0", + "proc-log": "^6.0.0", "semver": "^7.3.5", "walk-up-path": "^4.0.0" }, diff --git a/deps/npm/node_modules/@npmcli/git/package.json b/deps/npm/node_modules/@npmcli/git/package.json index f4e844bccab0db..78d077513dd81a 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.0", + "version": "7.0.1", "main": "lib/index.js", "files": [ "bin/", @@ -38,14 +38,14 @@ "tap": "^16.0.1" }, "dependencies": { - "@npmcli/promise-spawn": "^8.0.0", - "ini": "^5.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": "^5.0.0", + "proc-log": "^6.0.0", "promise-retry": "^2.0.1", "semver": "^7.3.5", - "which": "^5.0.0" + "which": "^6.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" diff --git a/deps/npm/node_modules/@npmcli/installed-package-contents/package.json b/deps/npm/node_modules/@npmcli/installed-package-contents/package.json index d5b68a737daf49..599b285fb467d7 100644 --- a/deps/npm/node_modules/@npmcli/installed-package-contents/package.json +++ b/deps/npm/node_modules/@npmcli/installed-package-contents/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/installed-package-contents", - "version": "3.0.0", + "version": "4.0.0", "description": "Get the list of files installed in a package in node_modules, including bundled dependencies", "author": "GitHub Inc.", "main": "lib/index.js", @@ -20,12 +20,12 @@ }, "devDependencies": { "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.23.3", + "@npmcli/template-oss": "4.27.1", "tap": "^16.3.0" }, "dependencies": { - "npm-bundled": "^4.0.0", - "npm-normalize-package-bin": "^4.0.0" + "npm-bundled": "^5.0.0", + "npm-normalize-package-bin": "^5.0.0" }, "repository": { "type": "git", @@ -36,11 +36,11 @@ "lib/" ], "engines": { - "node": "^18.17.0 || >=20.5.0" + "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.23.3", + "version": "4.27.1", "publish": true }, "tap": { diff --git a/deps/npm/node_modules/@npmcli/map-workspaces/package.json b/deps/npm/node_modules/@npmcli/map-workspaces/package.json index fb77ea8615c1ca..5f6c9c24f5ed76 100644 --- a/deps/npm/node_modules/@npmcli/map-workspaces/package.json +++ b/deps/npm/node_modules/@npmcli/map-workspaces/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/map-workspaces", - "version": "5.0.0", + "version": "5.0.1", "main": "lib/index.js", "files": [ "bin/", @@ -44,18 +44,18 @@ }, "devDependencies": { "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.25.0", + "@npmcli/template-oss": "4.27.1", "tap": "^16.0.1" }, "dependencies": { - "@npmcli/name-from-folder": "^3.0.0", + "@npmcli/name-from-folder": "^4.0.0", "@npmcli/package-json": "^7.0.0", "glob": "^11.0.3", "minimatch": "^10.0.3" }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.25.0", + "version": "4.27.1", "publish": "true" } } diff --git a/deps/npm/node_modules/@npmcli/metavuln-calculator/package.json b/deps/npm/node_modules/@npmcli/metavuln-calculator/package.json index 9d17000653c0e7..02b13bc8e82193 100644 --- a/deps/npm/node_modules/@npmcli/metavuln-calculator/package.json +++ b/deps/npm/node_modules/@npmcli/metavuln-calculator/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/metavuln-calculator", - "version": "9.0.2", + "version": "9.0.3", "main": "lib/index.js", "files": [ "bin/", @@ -34,15 +34,15 @@ }, "devDependencies": { "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.25.0", + "@npmcli/template-oss": "4.27.1", "require-inject": "^1.4.4", "tap": "^16.0.1" }, "dependencies": { "cacache": "^20.0.0", - "json-parse-even-better-errors": "^4.0.0", + "json-parse-even-better-errors": "^5.0.0", "pacote": "^21.0.0", - "proc-log": "^5.0.0", + "proc-log": "^6.0.0", "semver": "^7.3.5" }, "engines": { @@ -50,7 +50,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.25.0", + "version": "4.27.1", "publish": "true", "ciVersions": [ "16.14.0", diff --git a/deps/npm/node_modules/@npmcli/name-from-folder/package.json b/deps/npm/node_modules/@npmcli/name-from-folder/package.json index 323edd81d22fb4..503667521565d4 100644 --- a/deps/npm/node_modules/@npmcli/name-from-folder/package.json +++ b/deps/npm/node_modules/@npmcli/name-from-folder/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/name-from-folder", - "version": "3.0.0", + "version": "4.0.0", "files": [ "bin/", "lib/" @@ -25,15 +25,15 @@ }, "devDependencies": { "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.23.3", + "@npmcli/template-oss": "4.27.1", "tap": "^16.3.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "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.23.3", + "version": "4.27.1", "publish": true }, "tap": { diff --git a/deps/npm/node_modules/@npmcli/node-gyp/package.json b/deps/npm/node_modules/@npmcli/node-gyp/package.json index 3be9663a39de04..a34dc6be617516 100644 --- a/deps/npm/node_modules/@npmcli/node-gyp/package.json +++ b/deps/npm/node_modules/@npmcli/node-gyp/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/node-gyp", - "version": "4.0.0", + "version": "5.0.0", "description": "Tools for dealing with node-gyp packages", "scripts": { "test": "tap", @@ -30,15 +30,15 @@ "license": "ISC", "devDependencies": { "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.23.3", + "@npmcli/template-oss": "4.27.1", "tap": "^16.0.1" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "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.23.3", + "version": "4.27.1", "publish": true }, "tap": { diff --git a/deps/npm/node_modules/@npmcli/package-json/lib/index.js b/deps/npm/node_modules/@npmcli/package-json/lib/index.js index fabe5fbcda7bc5..adcbac67eabbac 100644 --- a/deps/npm/node_modules/@npmcli/package-json/lib/index.js +++ b/deps/npm/node_modules/@npmcli/package-json/lib/index.js @@ -225,7 +225,7 @@ class PackageJson { this.#manifest = step({ content, originalContent: this.content }) } - // unknown properties will just be overwitten + // unknown properties will just be overwritten for (const [key, value] of Object.entries(content)) { if (!knownKeys.has(key)) { this.content[key] = value diff --git a/deps/npm/node_modules/@npmcli/package-json/package.json b/deps/npm/node_modules/@npmcli/package-json/package.json index 46c39c22a19007..3dc9f45c847cf4 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.1", + "version": "7.0.2", "description": "Programmatic API to update package.json", "keywords": [ "npm", @@ -32,14 +32,14 @@ "@npmcli/git": "^7.0.0", "glob": "^11.0.3", "hosted-git-info": "^9.0.0", - "json-parse-even-better-errors": "^4.0.0", - "proc-log": "^5.0.0", + "json-parse-even-better-errors": "^5.0.0", + "proc-log": "^6.0.0", "semver": "^7.5.3", "validate-npm-package-license": "^3.0.4" }, "devDependencies": { - "@npmcli/eslint-config": "^5.1.0", - "@npmcli/template-oss": "4.25.0", + "@npmcli/eslint-config": "^6.0.0", + "@npmcli/template-oss": "4.28.0", "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.25.0", + "version": "4.28.0", "publish": "true" }, "tap": { diff --git a/deps/npm/node_modules/@npmcli/promise-spawn/lib/escape.js b/deps/npm/node_modules/@npmcli/promise-spawn/lib/escape.js index 9aca8bde70a6e9..5fab00210f26c1 100644 --- a/deps/npm/node_modules/@npmcli/promise-spawn/lib/escape.js +++ b/deps/npm/node_modules/@npmcli/promise-spawn/lib/escape.js @@ -1,6 +1,5 @@ 'use strict' -// eslint-disable-next-line max-len // this code adapted from: https://blogs.msdn.microsoft.com/twistylittlepassagesallalike/2011/04/23/everyone-quotes-command-line-arguments-the-wrong-way/ const cmd = (input, doubleEscape) => { if (!input.length) { diff --git a/deps/npm/node_modules/@npmcli/promise-spawn/package.json b/deps/npm/node_modules/@npmcli/promise-spawn/package.json index 1436659a446126..f00ee324355c8f 100644 --- a/deps/npm/node_modules/@npmcli/promise-spawn/package.json +++ b/deps/npm/node_modules/@npmcli/promise-spawn/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/promise-spawn", - "version": "8.0.3", + "version": "9.0.1", "files": [ "bin/", "lib/" @@ -32,20 +32,20 @@ ] }, "devDependencies": { - "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.25.0", + "@npmcli/eslint-config": "^6.0.0", + "@npmcli/template-oss": "4.28.0", "spawk": "^1.7.1", "tap": "^16.0.1" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "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.0", + "version": "4.28.0", "publish": true }, "dependencies": { - "which": "^5.0.0" + "which": "^6.0.0" } } diff --git a/deps/npm/node_modules/@npmcli/redact/package.json b/deps/npm/node_modules/@npmcli/redact/package.json index b5070113b1330c..53d0edf50b73d4 100644 --- a/deps/npm/node_modules/@npmcli/redact/package.json +++ b/deps/npm/node_modules/@npmcli/redact/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/redact", - "version": "3.2.2", + "version": "4.0.0", "description": "Redact sensitive npm information from output", "main": "lib/index.js", "exports": { @@ -31,7 +31,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.24.3", + "version": "4.27.1", "publish": true }, "tap": { @@ -43,10 +43,10 @@ }, "devDependencies": { "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.24.3", + "@npmcli/template-oss": "4.27.1", "tap": "^16.3.10" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^20.17.0 || >=22.9.0" } } diff --git a/deps/npm/node_modules/@npmcli/run-script/package.json b/deps/npm/node_modules/@npmcli/run-script/package.json index 2873f7cbf91c52..9ddb499084173c 100644 --- a/deps/npm/node_modules/@npmcli/run-script/package.json +++ b/deps/npm/node_modules/@npmcli/run-script/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/run-script", - "version": "10.0.0", + "version": "10.0.3", "description": "Run a lifecycle script for a package (descendant of npm-lifecycle)", "author": "GitHub Inc.", "license": "ISC", @@ -15,18 +15,18 @@ "template-oss-apply": "template-oss-apply --force" }, "devDependencies": { - "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.25.0", + "@npmcli/eslint-config": "^6.0.0", + "@npmcli/template-oss": "4.28.0", "spawk": "^1.8.1", "tap": "^16.0.1" }, "dependencies": { - "@npmcli/node-gyp": "^4.0.0", + "@npmcli/node-gyp": "^5.0.0", "@npmcli/package-json": "^7.0.0", - "@npmcli/promise-spawn": "^8.0.0", - "node-gyp": "^11.0.0", - "proc-log": "^5.0.0", - "which": "^5.0.0" + "@npmcli/promise-spawn": "^9.0.0", + "node-gyp": "^12.1.0", + "proc-log": "^6.0.0", + "which": "^6.0.0" }, "files": [ "bin/", @@ -42,7 +42,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.25.0", + "version": "4.28.0", "publish": "true" }, "tap": { diff --git a/deps/npm/node_modules/@pkgjs/parseargs/LICENSE b/deps/npm/node_modules/@pkgjs/parseargs/LICENSE deleted file mode 100644 index 261eeb9e9f8b2b..00000000000000 --- a/deps/npm/node_modules/@pkgjs/parseargs/LICENSE +++ /dev/null @@ -1,201 +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/@pkgjs/parseargs/examples/is-default-value.js b/deps/npm/node_modules/@pkgjs/parseargs/examples/is-default-value.js deleted file mode 100644 index 0a67972b71d135..00000000000000 --- a/deps/npm/node_modules/@pkgjs/parseargs/examples/is-default-value.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -// This example shows how to understand if a default value is used or not. - -// 1. const { parseArgs } = require('node:util'); // from node -// 2. const { parseArgs } = require('@pkgjs/parseargs'); // from package -const { parseArgs } = require('..'); // in repo - -const options = { - file: { short: 'f', type: 'string', default: 'FOO' }, -}; - -const { values, tokens } = parseArgs({ options, tokens: true }); - -const isFileDefault = !tokens.some((token) => token.kind === 'option' && - token.name === 'file' -); - -console.log(values); -console.log(`Is the file option [${values.file}] the default value? ${isFileDefault}`); - -// Try the following: -// node is-default-value.js -// node is-default-value.js -f FILE -// node is-default-value.js --file FILE diff --git a/deps/npm/node_modules/@pkgjs/parseargs/examples/limit-long-syntax.js b/deps/npm/node_modules/@pkgjs/parseargs/examples/limit-long-syntax.js deleted file mode 100644 index 943e643ee9553b..00000000000000 --- a/deps/npm/node_modules/@pkgjs/parseargs/examples/limit-long-syntax.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -// This is an example of using tokens to add a custom behaviour. -// -// Require the use of `=` for long options and values by blocking -// the use of space separated values. -// So allow `--foo=bar`, and not allow `--foo bar`. -// -// Note: this is not a common behaviour, most CLIs allow both forms. - -// 1. const { parseArgs } = require('node:util'); // from node -// 2. const { parseArgs } = require('@pkgjs/parseargs'); // from package -const { parseArgs } = require('..'); // in repo - -const options = { - file: { short: 'f', type: 'string' }, - log: { type: 'string' }, -}; - -const { values, tokens } = parseArgs({ options, tokens: true }); - -const badToken = tokens.find((token) => token.kind === 'option' && - token.value != null && - token.rawName.startsWith('--') && - !token.inlineValue -); -if (badToken) { - throw new Error(`Option value for '${badToken.rawName}' must be inline, like '${badToken.rawName}=VALUE'`); -} - -console.log(values); - -// Try the following: -// node limit-long-syntax.js -f FILE --log=LOG -// node limit-long-syntax.js --file FILE diff --git a/deps/npm/node_modules/@pkgjs/parseargs/examples/negate.js b/deps/npm/node_modules/@pkgjs/parseargs/examples/negate.js deleted file mode 100644 index b6634690a4a0c0..00000000000000 --- a/deps/npm/node_modules/@pkgjs/parseargs/examples/negate.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; - -// This example is used in the documentation. - -// How might I add my own support for --no-foo? - -// 1. const { parseArgs } = require('node:util'); // from node -// 2. const { parseArgs } = require('@pkgjs/parseargs'); // from package -const { parseArgs } = require('..'); // in repo - -const options = { - 'color': { type: 'boolean' }, - 'no-color': { type: 'boolean' }, - 'logfile': { type: 'string' }, - 'no-logfile': { type: 'boolean' }, -}; -const { values, tokens } = parseArgs({ options, tokens: true }); - -// Reprocess the option tokens and overwrite the returned values. -tokens - .filter((token) => token.kind === 'option') - .forEach((token) => { - if (token.name.startsWith('no-')) { - // Store foo:false for --no-foo - const positiveName = token.name.slice(3); - values[positiveName] = false; - delete values[token.name]; - } else { - // Resave value so last one wins if both --foo and --no-foo. - values[token.name] = token.value ?? true; - } - }); - -const color = values.color; -const logfile = values.logfile ?? 'default.log'; - -console.log({ logfile, color }); - -// Try the following: -// node negate.js -// node negate.js --no-logfile --no-color -// negate.js --logfile=test.log --color -// node negate.js --no-logfile --logfile=test.log --color --no-color diff --git a/deps/npm/node_modules/@pkgjs/parseargs/examples/no-repeated-options.js b/deps/npm/node_modules/@pkgjs/parseargs/examples/no-repeated-options.js deleted file mode 100644 index 0c324688af0305..00000000000000 --- a/deps/npm/node_modules/@pkgjs/parseargs/examples/no-repeated-options.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -// This is an example of using tokens to add a custom behaviour. -// -// Throw an error if an option is used more than once. - -// 1. const { parseArgs } = require('node:util'); // from node -// 2. const { parseArgs } = require('@pkgjs/parseargs'); // from package -const { parseArgs } = require('..'); // in repo - -const options = { - ding: { type: 'boolean', short: 'd' }, - beep: { type: 'boolean', short: 'b' } -}; -const { values, tokens } = parseArgs({ options, tokens: true }); - -const seenBefore = new Set(); -tokens.forEach((token) => { - if (token.kind !== 'option') return; - if (seenBefore.has(token.name)) { - throw new Error(`option '${token.name}' used multiple times`); - } - seenBefore.add(token.name); -}); - -console.log(values); - -// Try the following: -// node no-repeated-options --ding --beep -// node no-repeated-options --beep -b -// node no-repeated-options -ddd diff --git a/deps/npm/node_modules/@pkgjs/parseargs/examples/ordered-options.mjs b/deps/npm/node_modules/@pkgjs/parseargs/examples/ordered-options.mjs deleted file mode 100644 index 8ab7367b8bbb11..00000000000000 --- a/deps/npm/node_modules/@pkgjs/parseargs/examples/ordered-options.mjs +++ /dev/null @@ -1,41 +0,0 @@ -// This is an example of using tokens to add a custom behaviour. -// -// This adds a option order check so that --some-unstable-option -// may only be used after --enable-experimental-options -// -// Note: this is not a common behaviour, the order of different options -// does not usually matter. - -import { parseArgs } from '../index.js'; - -function findTokenIndex(tokens, target) { - return tokens.findIndex((token) => token.kind === 'option' && - token.name === target - ); -} - -const experimentalName = 'enable-experimental-options'; -const unstableName = 'some-unstable-option'; - -const options = { - [experimentalName]: { type: 'boolean' }, - [unstableName]: { type: 'boolean' }, -}; - -const { values, tokens } = parseArgs({ options, tokens: true }); - -const experimentalIndex = findTokenIndex(tokens, experimentalName); -const unstableIndex = findTokenIndex(tokens, unstableName); -if (unstableIndex !== -1 && - ((experimentalIndex === -1) || (unstableIndex < experimentalIndex))) { - throw new Error(`'--${experimentalName}' must be specified before '--${unstableName}'`); -} - -console.log(values); - -/* eslint-disable max-len */ -// Try the following: -// node ordered-options.mjs -// node ordered-options.mjs --some-unstable-option -// node ordered-options.mjs --some-unstable-option --enable-experimental-options -// node ordered-options.mjs --enable-experimental-options --some-unstable-option diff --git a/deps/npm/node_modules/@pkgjs/parseargs/examples/simple-hard-coded.js b/deps/npm/node_modules/@pkgjs/parseargs/examples/simple-hard-coded.js deleted file mode 100644 index eff04c2a60fa21..00000000000000 --- a/deps/npm/node_modules/@pkgjs/parseargs/examples/simple-hard-coded.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -// This example is used in the documentation. - -// 1. const { parseArgs } = require('node:util'); // from node -// 2. const { parseArgs } = require('@pkgjs/parseargs'); // from package -const { parseArgs } = require('..'); // in repo - -const args = ['-f', '--bar', 'b']; -const options = { - foo: { - type: 'boolean', - short: 'f' - }, - bar: { - type: 'string' - } -}; -const { - values, - positionals -} = parseArgs({ args, options }); -console.log(values, positionals); - -// Try the following: -// node simple-hard-coded.js diff --git a/deps/npm/node_modules/@pkgjs/parseargs/index.js b/deps/npm/node_modules/@pkgjs/parseargs/index.js deleted file mode 100644 index b1004c7b72f271..00000000000000 --- a/deps/npm/node_modules/@pkgjs/parseargs/index.js +++ /dev/null @@ -1,396 +0,0 @@ -'use strict'; - -const { - ArrayPrototypeForEach, - ArrayPrototypeIncludes, - ArrayPrototypeMap, - ArrayPrototypePush, - ArrayPrototypePushApply, - ArrayPrototypeShift, - ArrayPrototypeSlice, - ArrayPrototypeUnshiftApply, - ObjectEntries, - ObjectPrototypeHasOwnProperty: ObjectHasOwn, - StringPrototypeCharAt, - StringPrototypeIndexOf, - StringPrototypeSlice, - StringPrototypeStartsWith, -} = require('./internal/primordials'); - -const { - validateArray, - validateBoolean, - validateBooleanArray, - validateObject, - validateString, - validateStringArray, - validateUnion, -} = require('./internal/validators'); - -const { - kEmptyObject, -} = require('./internal/util'); - -const { - findLongOptionForShort, - isLoneLongOption, - isLoneShortOption, - isLongOptionAndValue, - isOptionValue, - isOptionLikeValue, - isShortOptionAndValue, - isShortOptionGroup, - useDefaultValueOption, - objectGetOwn, - optionsGetOwn, -} = require('./utils'); - -const { - codes: { - ERR_INVALID_ARG_VALUE, - ERR_PARSE_ARGS_INVALID_OPTION_VALUE, - ERR_PARSE_ARGS_UNKNOWN_OPTION, - ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL, - }, -} = require('./internal/errors'); - -function getMainArgs() { - // Work out where to slice process.argv for user supplied arguments. - - // Check node options for scenarios where user CLI args follow executable. - const execArgv = process.execArgv; - if (ArrayPrototypeIncludes(execArgv, '-e') || - ArrayPrototypeIncludes(execArgv, '--eval') || - ArrayPrototypeIncludes(execArgv, '-p') || - ArrayPrototypeIncludes(execArgv, '--print')) { - return ArrayPrototypeSlice(process.argv, 1); - } - - // Normally first two arguments are executable and script, then CLI arguments - return ArrayPrototypeSlice(process.argv, 2); -} - -/** - * In strict mode, throw for possible usage errors like --foo --bar - * - * @param {object} token - from tokens as available from parseArgs - */ -function checkOptionLikeValue(token) { - if (!token.inlineValue && isOptionLikeValue(token.value)) { - // Only show short example if user used short option. - const example = StringPrototypeStartsWith(token.rawName, '--') ? - `'${token.rawName}=-XYZ'` : - `'--${token.name}=-XYZ' or '${token.rawName}-XYZ'`; - const errorMessage = `Option '${token.rawName}' argument is ambiguous. -Did you forget to specify the option argument for '${token.rawName}'? -To specify an option argument starting with a dash use ${example}.`; - throw new ERR_PARSE_ARGS_INVALID_OPTION_VALUE(errorMessage); - } -} - -/** - * In strict mode, throw for usage errors. - * - * @param {object} config - from config passed to parseArgs - * @param {object} token - from tokens as available from parseArgs - */ -function checkOptionUsage(config, token) { - if (!ObjectHasOwn(config.options, token.name)) { - throw new ERR_PARSE_ARGS_UNKNOWN_OPTION( - token.rawName, config.allowPositionals); - } - - const short = optionsGetOwn(config.options, token.name, 'short'); - const shortAndLong = `${short ? `-${short}, ` : ''}--${token.name}`; - const type = optionsGetOwn(config.options, token.name, 'type'); - if (type === 'string' && typeof token.value !== 'string') { - throw new ERR_PARSE_ARGS_INVALID_OPTION_VALUE(`Option '${shortAndLong} ' argument missing`); - } - // (Idiomatic test for undefined||null, expecting undefined.) - if (type === 'boolean' && token.value != null) { - throw new ERR_PARSE_ARGS_INVALID_OPTION_VALUE(`Option '${shortAndLong}' does not take an argument`); - } -} - - -/** - * Store the option value in `values`. - * - * @param {string} longOption - long option name e.g. 'foo' - * @param {string|undefined} optionValue - value from user args - * @param {object} options - option configs, from parseArgs({ options }) - * @param {object} values - option values returned in `values` by parseArgs - */ -function storeOption(longOption, optionValue, options, values) { - if (longOption === '__proto__') { - return; // No. Just no. - } - - // We store based on the option value rather than option type, - // preserving the users intent for author to deal with. - const newValue = optionValue ?? true; - if (optionsGetOwn(options, longOption, 'multiple')) { - // Always store value in array, including for boolean. - // values[longOption] starts out not present, - // first value is added as new array [newValue], - // subsequent values are pushed to existing array. - // (note: values has null prototype, so simpler usage) - if (values[longOption]) { - ArrayPrototypePush(values[longOption], newValue); - } else { - values[longOption] = [newValue]; - } - } else { - values[longOption] = newValue; - } -} - -/** - * Store the default option value in `values`. - * - * @param {string} longOption - long option name e.g. 'foo' - * @param {string - * | boolean - * | string[] - * | boolean[]} optionValue - default value from option config - * @param {object} values - option values returned in `values` by parseArgs - */ -function storeDefaultOption(longOption, optionValue, values) { - if (longOption === '__proto__') { - return; // No. Just no. - } - - values[longOption] = optionValue; -} - -/** - * Process args and turn into identified tokens: - * - option (along with value, if any) - * - positional - * - option-terminator - * - * @param {string[]} args - from parseArgs({ args }) or mainArgs - * @param {object} options - option configs, from parseArgs({ options }) - */ -function argsToTokens(args, options) { - const tokens = []; - let index = -1; - let groupCount = 0; - - const remainingArgs = ArrayPrototypeSlice(args); - while (remainingArgs.length > 0) { - const arg = ArrayPrototypeShift(remainingArgs); - const nextArg = remainingArgs[0]; - if (groupCount > 0) - groupCount--; - else - index++; - - // Check if `arg` is an options terminator. - // Guideline 10 in https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html - if (arg === '--') { - // Everything after a bare '--' is considered a positional argument. - ArrayPrototypePush(tokens, { kind: 'option-terminator', index }); - ArrayPrototypePushApply( - tokens, ArrayPrototypeMap(remainingArgs, (arg) => { - return { kind: 'positional', index: ++index, value: arg }; - }) - ); - break; // Finished processing args, leave while loop. - } - - if (isLoneShortOption(arg)) { - // e.g. '-f' - const shortOption = StringPrototypeCharAt(arg, 1); - const longOption = findLongOptionForShort(shortOption, options); - let value; - let inlineValue; - if (optionsGetOwn(options, longOption, 'type') === 'string' && - isOptionValue(nextArg)) { - // e.g. '-f', 'bar' - value = ArrayPrototypeShift(remainingArgs); - inlineValue = false; - } - ArrayPrototypePush( - tokens, - { kind: 'option', name: longOption, rawName: arg, - index, value, inlineValue }); - if (value != null) ++index; - continue; - } - - if (isShortOptionGroup(arg, options)) { - // Expand -fXzy to -f -X -z -y - const expanded = []; - for (let index = 1; index < arg.length; index++) { - const shortOption = StringPrototypeCharAt(arg, index); - const longOption = findLongOptionForShort(shortOption, options); - if (optionsGetOwn(options, longOption, 'type') !== 'string' || - index === arg.length - 1) { - // Boolean option, or last short in group. Well formed. - ArrayPrototypePush(expanded, `-${shortOption}`); - } else { - // String option in middle. Yuck. - // Expand -abfFILE to -a -b -fFILE - ArrayPrototypePush(expanded, `-${StringPrototypeSlice(arg, index)}`); - break; // finished short group - } - } - ArrayPrototypeUnshiftApply(remainingArgs, expanded); - groupCount = expanded.length; - continue; - } - - if (isShortOptionAndValue(arg, options)) { - // e.g. -fFILE - const shortOption = StringPrototypeCharAt(arg, 1); - const longOption = findLongOptionForShort(shortOption, options); - const value = StringPrototypeSlice(arg, 2); - ArrayPrototypePush( - tokens, - { kind: 'option', name: longOption, rawName: `-${shortOption}`, - index, value, inlineValue: true }); - continue; - } - - if (isLoneLongOption(arg)) { - // e.g. '--foo' - const longOption = StringPrototypeSlice(arg, 2); - let value; - let inlineValue; - if (optionsGetOwn(options, longOption, 'type') === 'string' && - isOptionValue(nextArg)) { - // e.g. '--foo', 'bar' - value = ArrayPrototypeShift(remainingArgs); - inlineValue = false; - } - ArrayPrototypePush( - tokens, - { kind: 'option', name: longOption, rawName: arg, - index, value, inlineValue }); - if (value != null) ++index; - continue; - } - - if (isLongOptionAndValue(arg)) { - // e.g. --foo=bar - const equalIndex = StringPrototypeIndexOf(arg, '='); - const longOption = StringPrototypeSlice(arg, 2, equalIndex); - const value = StringPrototypeSlice(arg, equalIndex + 1); - ArrayPrototypePush( - tokens, - { kind: 'option', name: longOption, rawName: `--${longOption}`, - index, value, inlineValue: true }); - continue; - } - - ArrayPrototypePush(tokens, { kind: 'positional', index, value: arg }); - } - - return tokens; -} - -const parseArgs = (config = kEmptyObject) => { - const args = objectGetOwn(config, 'args') ?? getMainArgs(); - const strict = objectGetOwn(config, 'strict') ?? true; - const allowPositionals = objectGetOwn(config, 'allowPositionals') ?? !strict; - const returnTokens = objectGetOwn(config, 'tokens') ?? false; - const options = objectGetOwn(config, 'options') ?? { __proto__: null }; - // Bundle these up for passing to strict-mode checks. - const parseConfig = { args, strict, options, allowPositionals }; - - // Validate input configuration. - validateArray(args, 'args'); - validateBoolean(strict, 'strict'); - validateBoolean(allowPositionals, 'allowPositionals'); - validateBoolean(returnTokens, 'tokens'); - validateObject(options, 'options'); - ArrayPrototypeForEach( - ObjectEntries(options), - ({ 0: longOption, 1: optionConfig }) => { - validateObject(optionConfig, `options.${longOption}`); - - // type is required - const optionType = objectGetOwn(optionConfig, 'type'); - validateUnion(optionType, `options.${longOption}.type`, ['string', 'boolean']); - - if (ObjectHasOwn(optionConfig, 'short')) { - const shortOption = optionConfig.short; - validateString(shortOption, `options.${longOption}.short`); - if (shortOption.length !== 1) { - throw new ERR_INVALID_ARG_VALUE( - `options.${longOption}.short`, - shortOption, - 'must be a single character' - ); - } - } - - const multipleOption = objectGetOwn(optionConfig, 'multiple'); - if (ObjectHasOwn(optionConfig, 'multiple')) { - validateBoolean(multipleOption, `options.${longOption}.multiple`); - } - - const defaultValue = objectGetOwn(optionConfig, 'default'); - if (defaultValue !== undefined) { - let validator; - switch (optionType) { - case 'string': - validator = multipleOption ? validateStringArray : validateString; - break; - - case 'boolean': - validator = multipleOption ? validateBooleanArray : validateBoolean; - break; - } - validator(defaultValue, `options.${longOption}.default`); - } - } - ); - - // Phase 1: identify tokens - const tokens = argsToTokens(args, options); - - // Phase 2: process tokens into parsed option values and positionals - const result = { - values: { __proto__: null }, - positionals: [], - }; - if (returnTokens) { - result.tokens = tokens; - } - ArrayPrototypeForEach(tokens, (token) => { - if (token.kind === 'option') { - if (strict) { - checkOptionUsage(parseConfig, token); - checkOptionLikeValue(token); - } - storeOption(token.name, token.value, options, result.values); - } else if (token.kind === 'positional') { - if (!allowPositionals) { - throw new ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL(token.value); - } - ArrayPrototypePush(result.positionals, token.value); - } - }); - - // Phase 3: fill in default values for missing args - ArrayPrototypeForEach(ObjectEntries(options), ({ 0: longOption, - 1: optionConfig }) => { - const mustSetDefault = useDefaultValueOption(longOption, - optionConfig, - result.values); - if (mustSetDefault) { - storeDefaultOption(longOption, - objectGetOwn(optionConfig, 'default'), - result.values); - } - }); - - - return result; -}; - -module.exports = { - parseArgs, -}; diff --git a/deps/npm/node_modules/@pkgjs/parseargs/internal/errors.js b/deps/npm/node_modules/@pkgjs/parseargs/internal/errors.js deleted file mode 100644 index e1b237b5b16395..00000000000000 --- a/deps/npm/node_modules/@pkgjs/parseargs/internal/errors.js +++ /dev/null @@ -1,47 +0,0 @@ -'use strict'; - -class ERR_INVALID_ARG_TYPE extends TypeError { - constructor(name, expected, actual) { - super(`${name} must be ${expected} got ${actual}`); - this.code = 'ERR_INVALID_ARG_TYPE'; - } -} - -class ERR_INVALID_ARG_VALUE extends TypeError { - constructor(arg1, arg2, expected) { - super(`The property ${arg1} ${expected}. Received '${arg2}'`); - this.code = 'ERR_INVALID_ARG_VALUE'; - } -} - -class ERR_PARSE_ARGS_INVALID_OPTION_VALUE extends Error { - constructor(message) { - super(message); - this.code = 'ERR_PARSE_ARGS_INVALID_OPTION_VALUE'; - } -} - -class ERR_PARSE_ARGS_UNKNOWN_OPTION extends Error { - constructor(option, allowPositionals) { - const suggestDashDash = allowPositionals ? `. To specify a positional argument starting with a '-', place it at the end of the command after '--', as in '-- ${JSON.stringify(option)}` : ''; - super(`Unknown option '${option}'${suggestDashDash}`); - this.code = 'ERR_PARSE_ARGS_UNKNOWN_OPTION'; - } -} - -class ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL extends Error { - constructor(positional) { - super(`Unexpected argument '${positional}'. This command does not take positional arguments`); - this.code = 'ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL'; - } -} - -module.exports = { - codes: { - ERR_INVALID_ARG_TYPE, - ERR_INVALID_ARG_VALUE, - ERR_PARSE_ARGS_INVALID_OPTION_VALUE, - ERR_PARSE_ARGS_UNKNOWN_OPTION, - ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL, - } -}; diff --git a/deps/npm/node_modules/@pkgjs/parseargs/internal/primordials.js b/deps/npm/node_modules/@pkgjs/parseargs/internal/primordials.js deleted file mode 100644 index 63e23ab117a9cc..00000000000000 --- a/deps/npm/node_modules/@pkgjs/parseargs/internal/primordials.js +++ /dev/null @@ -1,393 +0,0 @@ -/* -This file is copied from https://github.com/nodejs/node/blob/v14.19.3/lib/internal/per_context/primordials.js -under the following license: - -Copyright Node.js contributors. All rights reserved. - -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. -*/ - -'use strict'; - -/* eslint-disable node-core/prefer-primordials */ - -// This file subclasses and stores the JS builtins that come from the VM -// so that Node.js's builtin modules do not need to later look these up from -// the global proxy, which can be mutated by users. - -// Use of primordials have sometimes a dramatic impact on performance, please -// benchmark all changes made in performance-sensitive areas of the codebase. -// See: https://github.com/nodejs/node/pull/38248 - -const primordials = {}; - -const { - defineProperty: ReflectDefineProperty, - getOwnPropertyDescriptor: ReflectGetOwnPropertyDescriptor, - ownKeys: ReflectOwnKeys, -} = Reflect; - -// `uncurryThis` is equivalent to `func => Function.prototype.call.bind(func)`. -// It is using `bind.bind(call)` to avoid using `Function.prototype.bind` -// and `Function.prototype.call` after it may have been mutated by users. -const { apply, bind, call } = Function.prototype; -const uncurryThis = bind.bind(call); -primordials.uncurryThis = uncurryThis; - -// `applyBind` is equivalent to `func => Function.prototype.apply.bind(func)`. -// It is using `bind.bind(apply)` to avoid using `Function.prototype.bind` -// and `Function.prototype.apply` after it may have been mutated by users. -const applyBind = bind.bind(apply); -primordials.applyBind = applyBind; - -// Methods that accept a variable number of arguments, and thus it's useful to -// also create `${prefix}${key}Apply`, which uses `Function.prototype.apply`, -// instead of `Function.prototype.call`, and thus doesn't require iterator -// destructuring. -const varargsMethods = [ - // 'ArrayPrototypeConcat' is omitted, because it performs the spread - // on its own for arrays and array-likes with a truthy - // @@isConcatSpreadable symbol property. - 'ArrayOf', - 'ArrayPrototypePush', - 'ArrayPrototypeUnshift', - // 'FunctionPrototypeCall' is omitted, since there's 'ReflectApply' - // and 'FunctionPrototypeApply'. - 'MathHypot', - 'MathMax', - 'MathMin', - 'StringPrototypeConcat', - 'TypedArrayOf', -]; - -function getNewKey(key) { - return typeof key === 'symbol' ? - `Symbol${key.description[7].toUpperCase()}${key.description.slice(8)}` : - `${key[0].toUpperCase()}${key.slice(1)}`; -} - -function copyAccessor(dest, prefix, key, { enumerable, get, set }) { - ReflectDefineProperty(dest, `${prefix}Get${key}`, { - value: uncurryThis(get), - enumerable - }); - if (set !== undefined) { - ReflectDefineProperty(dest, `${prefix}Set${key}`, { - value: uncurryThis(set), - enumerable - }); - } -} - -function copyPropsRenamed(src, dest, prefix) { - for (const key of ReflectOwnKeys(src)) { - const newKey = getNewKey(key); - const desc = ReflectGetOwnPropertyDescriptor(src, key); - if ('get' in desc) { - copyAccessor(dest, prefix, newKey, desc); - } else { - const name = `${prefix}${newKey}`; - ReflectDefineProperty(dest, name, desc); - if (varargsMethods.includes(name)) { - ReflectDefineProperty(dest, `${name}Apply`, { - // `src` is bound as the `this` so that the static `this` points - // to the object it was defined on, - // e.g.: `ArrayOfApply` gets a `this` of `Array`: - value: applyBind(desc.value, src), - }); - } - } - } -} - -function copyPropsRenamedBound(src, dest, prefix) { - for (const key of ReflectOwnKeys(src)) { - const newKey = getNewKey(key); - const desc = ReflectGetOwnPropertyDescriptor(src, key); - if ('get' in desc) { - copyAccessor(dest, prefix, newKey, desc); - } else { - const { value } = desc; - if (typeof value === 'function') { - desc.value = value.bind(src); - } - - const name = `${prefix}${newKey}`; - ReflectDefineProperty(dest, name, desc); - if (varargsMethods.includes(name)) { - ReflectDefineProperty(dest, `${name}Apply`, { - value: applyBind(value, src), - }); - } - } - } -} - -function copyPrototype(src, dest, prefix) { - for (const key of ReflectOwnKeys(src)) { - const newKey = getNewKey(key); - const desc = ReflectGetOwnPropertyDescriptor(src, key); - if ('get' in desc) { - copyAccessor(dest, prefix, newKey, desc); - } else { - const { value } = desc; - if (typeof value === 'function') { - desc.value = uncurryThis(value); - } - - const name = `${prefix}${newKey}`; - ReflectDefineProperty(dest, name, desc); - if (varargsMethods.includes(name)) { - ReflectDefineProperty(dest, `${name}Apply`, { - value: applyBind(value), - }); - } - } - } -} - -// Create copies of configurable value properties of the global object -[ - 'Proxy', - 'globalThis', -].forEach((name) => { - // eslint-disable-next-line no-restricted-globals - primordials[name] = globalThis[name]; -}); - -// Create copies of URI handling functions -[ - decodeURI, - decodeURIComponent, - encodeURI, - encodeURIComponent, -].forEach((fn) => { - primordials[fn.name] = fn; -}); - -// Create copies of the namespace objects -[ - 'JSON', - 'Math', - 'Proxy', - 'Reflect', -].forEach((name) => { - // eslint-disable-next-line no-restricted-globals - copyPropsRenamed(global[name], primordials, name); -}); - -// Create copies of intrinsic objects -[ - 'Array', - 'ArrayBuffer', - 'BigInt', - 'BigInt64Array', - 'BigUint64Array', - 'Boolean', - 'DataView', - 'Date', - 'Error', - 'EvalError', - 'Float32Array', - 'Float64Array', - 'Function', - 'Int16Array', - 'Int32Array', - 'Int8Array', - 'Map', - 'Number', - 'Object', - 'RangeError', - 'ReferenceError', - 'RegExp', - 'Set', - 'String', - 'Symbol', - 'SyntaxError', - 'TypeError', - 'URIError', - 'Uint16Array', - 'Uint32Array', - 'Uint8Array', - 'Uint8ClampedArray', - 'WeakMap', - 'WeakSet', -].forEach((name) => { - // eslint-disable-next-line no-restricted-globals - const original = global[name]; - primordials[name] = original; - copyPropsRenamed(original, primordials, name); - copyPrototype(original.prototype, primordials, `${name}Prototype`); -}); - -// Create copies of intrinsic objects that require a valid `this` to call -// static methods. -// Refs: https://www.ecma-international.org/ecma-262/#sec-promise.all -[ - 'Promise', -].forEach((name) => { - // eslint-disable-next-line no-restricted-globals - const original = global[name]; - primordials[name] = original; - copyPropsRenamedBound(original, primordials, name); - copyPrototype(original.prototype, primordials, `${name}Prototype`); -}); - -// Create copies of abstract intrinsic objects that are not directly exposed -// on the global object. -// Refs: https://tc39.es/ecma262/#sec-%typedarray%-intrinsic-object -[ - { name: 'TypedArray', original: Reflect.getPrototypeOf(Uint8Array) }, - { name: 'ArrayIterator', original: { - prototype: Reflect.getPrototypeOf(Array.prototype[Symbol.iterator]()), - } }, - { name: 'StringIterator', original: { - prototype: Reflect.getPrototypeOf(String.prototype[Symbol.iterator]()), - } }, -].forEach(({ name, original }) => { - primordials[name] = original; - // The static %TypedArray% methods require a valid `this`, but can't be bound, - // as they need a subclass constructor as the receiver: - copyPrototype(original, primordials, name); - copyPrototype(original.prototype, primordials, `${name}Prototype`); -}); - -/* eslint-enable node-core/prefer-primordials */ - -const { - ArrayPrototypeForEach, - FunctionPrototypeCall, - Map, - ObjectFreeze, - ObjectSetPrototypeOf, - Set, - SymbolIterator, - WeakMap, - WeakSet, -} = primordials; - -// Because these functions are used by `makeSafe`, which is exposed -// on the `primordials` object, it's important to use const references -// to the primordials that they use: -const createSafeIterator = (factory, next) => { - class SafeIterator { - constructor(iterable) { - this._iterator = factory(iterable); - } - next() { - return next(this._iterator); - } - [SymbolIterator]() { - return this; - } - } - ObjectSetPrototypeOf(SafeIterator.prototype, null); - ObjectFreeze(SafeIterator.prototype); - ObjectFreeze(SafeIterator); - return SafeIterator; -}; - -primordials.SafeArrayIterator = createSafeIterator( - primordials.ArrayPrototypeSymbolIterator, - primordials.ArrayIteratorPrototypeNext -); -primordials.SafeStringIterator = createSafeIterator( - primordials.StringPrototypeSymbolIterator, - primordials.StringIteratorPrototypeNext -); - -const copyProps = (src, dest) => { - ArrayPrototypeForEach(ReflectOwnKeys(src), (key) => { - if (!ReflectGetOwnPropertyDescriptor(dest, key)) { - ReflectDefineProperty( - dest, - key, - ReflectGetOwnPropertyDescriptor(src, key)); - } - }); -}; - -const makeSafe = (unsafe, safe) => { - if (SymbolIterator in unsafe.prototype) { - const dummy = new unsafe(); - let next; // We can reuse the same `next` method. - - ArrayPrototypeForEach(ReflectOwnKeys(unsafe.prototype), (key) => { - if (!ReflectGetOwnPropertyDescriptor(safe.prototype, key)) { - const desc = ReflectGetOwnPropertyDescriptor(unsafe.prototype, key); - if ( - typeof desc.value === 'function' && - desc.value.length === 0 && - SymbolIterator in (FunctionPrototypeCall(desc.value, dummy) ?? {}) - ) { - const createIterator = uncurryThis(desc.value); - next = next ?? uncurryThis(createIterator(dummy).next); - const SafeIterator = createSafeIterator(createIterator, next); - desc.value = function() { - return new SafeIterator(this); - }; - } - ReflectDefineProperty(safe.prototype, key, desc); - } - }); - } else { - copyProps(unsafe.prototype, safe.prototype); - } - copyProps(unsafe, safe); - - ObjectSetPrototypeOf(safe.prototype, null); - ObjectFreeze(safe.prototype); - ObjectFreeze(safe); - return safe; -}; -primordials.makeSafe = makeSafe; - -// Subclass the constructors because we need to use their prototype -// methods later. -// Defining the `constructor` is necessary here to avoid the default -// constructor which uses the user-mutable `%ArrayIteratorPrototype%.next`. -primordials.SafeMap = makeSafe( - Map, - class SafeMap extends Map { - constructor(i) { super(i); } // eslint-disable-line no-useless-constructor - } -); -primordials.SafeWeakMap = makeSafe( - WeakMap, - class SafeWeakMap extends WeakMap { - constructor(i) { super(i); } // eslint-disable-line no-useless-constructor - } -); -primordials.SafeSet = makeSafe( - Set, - class SafeSet extends Set { - constructor(i) { super(i); } // eslint-disable-line no-useless-constructor - } -); -primordials.SafeWeakSet = makeSafe( - WeakSet, - class SafeWeakSet extends WeakSet { - constructor(i) { super(i); } // eslint-disable-line no-useless-constructor - } -); - -ObjectSetPrototypeOf(primordials, null); -ObjectFreeze(primordials); - -module.exports = primordials; diff --git a/deps/npm/node_modules/@pkgjs/parseargs/internal/util.js b/deps/npm/node_modules/@pkgjs/parseargs/internal/util.js deleted file mode 100644 index b9b8fe5b8d7c02..00000000000000 --- a/deps/npm/node_modules/@pkgjs/parseargs/internal/util.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -// This is a placeholder for util.js in node.js land. - -const { - ObjectCreate, - ObjectFreeze, -} = require('./primordials'); - -const kEmptyObject = ObjectFreeze(ObjectCreate(null)); - -module.exports = { - kEmptyObject, -}; diff --git a/deps/npm/node_modules/@pkgjs/parseargs/internal/validators.js b/deps/npm/node_modules/@pkgjs/parseargs/internal/validators.js deleted file mode 100644 index b5ac4fb501eff4..00000000000000 --- a/deps/npm/node_modules/@pkgjs/parseargs/internal/validators.js +++ /dev/null @@ -1,89 +0,0 @@ -'use strict'; - -// This file is a proxy of the original file located at: -// https://github.com/nodejs/node/blob/main/lib/internal/validators.js -// Every addition or modification to this file must be evaluated -// during the PR review. - -const { - ArrayIsArray, - ArrayPrototypeIncludes, - ArrayPrototypeJoin, -} = require('./primordials'); - -const { - codes: { - ERR_INVALID_ARG_TYPE - } -} = require('./errors'); - -function validateString(value, name) { - if (typeof value !== 'string') { - throw new ERR_INVALID_ARG_TYPE(name, 'String', value); - } -} - -function validateUnion(value, name, union) { - if (!ArrayPrototypeIncludes(union, value)) { - throw new ERR_INVALID_ARG_TYPE(name, `('${ArrayPrototypeJoin(union, '|')}')`, value); - } -} - -function validateBoolean(value, name) { - if (typeof value !== 'boolean') { - throw new ERR_INVALID_ARG_TYPE(name, 'Boolean', value); - } -} - -function validateArray(value, name) { - if (!ArrayIsArray(value)) { - throw new ERR_INVALID_ARG_TYPE(name, 'Array', value); - } -} - -function validateStringArray(value, name) { - validateArray(value, name); - for (let i = 0; i < value.length; i++) { - validateString(value[i], `${name}[${i}]`); - } -} - -function validateBooleanArray(value, name) { - validateArray(value, name); - for (let i = 0; i < value.length; i++) { - validateBoolean(value[i], `${name}[${i}]`); - } -} - -/** - * @param {unknown} value - * @param {string} name - * @param {{ - * allowArray?: boolean, - * allowFunction?: boolean, - * nullable?: boolean - * }} [options] - */ -function validateObject(value, name, options) { - const useDefaultOptions = options == null; - const allowArray = useDefaultOptions ? false : options.allowArray; - const allowFunction = useDefaultOptions ? false : options.allowFunction; - const nullable = useDefaultOptions ? false : options.nullable; - if ((!nullable && value === null) || - (!allowArray && ArrayIsArray(value)) || - (typeof value !== 'object' && ( - !allowFunction || typeof value !== 'function' - ))) { - throw new ERR_INVALID_ARG_TYPE(name, 'Object', value); - } -} - -module.exports = { - validateArray, - validateObject, - validateString, - validateStringArray, - validateUnion, - validateBoolean, - validateBooleanArray, -}; diff --git a/deps/npm/node_modules/@pkgjs/parseargs/package.json b/deps/npm/node_modules/@pkgjs/parseargs/package.json deleted file mode 100644 index 0bcc05c0d4a3ec..00000000000000 --- a/deps/npm/node_modules/@pkgjs/parseargs/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "@pkgjs/parseargs", - "version": "0.11.0", - "description": "Polyfill of future proposal for `util.parseArgs()`", - "engines": { - "node": ">=14" - }, - "main": "index.js", - "exports": { - ".": "./index.js", - "./package.json": "./package.json" - }, - "scripts": { - "coverage": "c8 --check-coverage tape 'test/*.js'", - "test": "c8 tape 'test/*.js'", - "posttest": "eslint .", - "fix": "npm run posttest -- --fix" - }, - "repository": { - "type": "git", - "url": "git@github.com:pkgjs/parseargs.git" - }, - "keywords": [], - "author": "", - "license": "MIT", - "bugs": { - "url": "https://github.com/pkgjs/parseargs/issues" - }, - "homepage": "https://github.com/pkgjs/parseargs#readme", - "devDependencies": { - "c8": "^7.10.0", - "eslint": "^8.2.0", - "eslint-plugin-node-core": "iansu/eslint-plugin-node-core", - "tape": "^5.2.2" - } -} diff --git a/deps/npm/node_modules/@pkgjs/parseargs/utils.js b/deps/npm/node_modules/@pkgjs/parseargs/utils.js deleted file mode 100644 index d7f420a2339246..00000000000000 --- a/deps/npm/node_modules/@pkgjs/parseargs/utils.js +++ /dev/null @@ -1,198 +0,0 @@ -'use strict'; - -const { - ArrayPrototypeFind, - ObjectEntries, - ObjectPrototypeHasOwnProperty: ObjectHasOwn, - StringPrototypeCharAt, - StringPrototypeIncludes, - StringPrototypeStartsWith, -} = require('./internal/primordials'); - -const { - validateObject, -} = require('./internal/validators'); - -// These are internal utilities to make the parsing logic easier to read, and -// add lots of detail for the curious. They are in a separate file to allow -// unit testing, although that is not essential (this could be rolled into -// main file and just tested implicitly via API). -// -// These routines are for internal use, not for export to client. - -/** - * Return the named property, but only if it is an own property. - */ -function objectGetOwn(obj, prop) { - if (ObjectHasOwn(obj, prop)) - return obj[prop]; -} - -/** - * Return the named options property, but only if it is an own property. - */ -function optionsGetOwn(options, longOption, prop) { - if (ObjectHasOwn(options, longOption)) - return objectGetOwn(options[longOption], prop); -} - -/** - * Determines if the argument may be used as an option value. - * @example - * isOptionValue('V') // returns true - * isOptionValue('-v') // returns true (greedy) - * isOptionValue('--foo') // returns true (greedy) - * isOptionValue(undefined) // returns false - */ -function isOptionValue(value) { - if (value == null) return false; - - // Open Group Utility Conventions are that an option-argument - // is the argument after the option, and may start with a dash. - return true; // greedy! -} - -/** - * Detect whether there is possible confusion and user may have omitted - * the option argument, like `--port --verbose` when `port` of type:string. - * In strict mode we throw errors if value is option-like. - */ -function isOptionLikeValue(value) { - if (value == null) return false; - - return value.length > 1 && StringPrototypeCharAt(value, 0) === '-'; -} - -/** - * Determines if `arg` is just a short option. - * @example '-f' - */ -function isLoneShortOption(arg) { - return arg.length === 2 && - StringPrototypeCharAt(arg, 0) === '-' && - StringPrototypeCharAt(arg, 1) !== '-'; -} - -/** - * Determines if `arg` is a lone long option. - * @example - * isLoneLongOption('a') // returns false - * isLoneLongOption('-a') // returns false - * isLoneLongOption('--foo') // returns true - * isLoneLongOption('--foo=bar') // returns false - */ -function isLoneLongOption(arg) { - return arg.length > 2 && - StringPrototypeStartsWith(arg, '--') && - !StringPrototypeIncludes(arg, '=', 3); -} - -/** - * Determines if `arg` is a long option and value in the same argument. - * @example - * isLongOptionAndValue('--foo') // returns false - * isLongOptionAndValue('--foo=bar') // returns true - */ -function isLongOptionAndValue(arg) { - return arg.length > 2 && - StringPrototypeStartsWith(arg, '--') && - StringPrototypeIncludes(arg, '=', 3); -} - -/** - * Determines if `arg` is a short option group. - * - * See Guideline 5 of the [Open Group Utility Conventions](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html). - * One or more options without option-arguments, followed by at most one - * option that takes an option-argument, should be accepted when grouped - * behind one '-' delimiter. - * @example - * isShortOptionGroup('-a', {}) // returns false - * isShortOptionGroup('-ab', {}) // returns true - * // -fb is an option and a value, not a short option group - * isShortOptionGroup('-fb', { - * options: { f: { type: 'string' } } - * }) // returns false - * isShortOptionGroup('-bf', { - * options: { f: { type: 'string' } } - * }) // returns true - * // -bfb is an edge case, return true and caller sorts it out - * isShortOptionGroup('-bfb', { - * options: { f: { type: 'string' } } - * }) // returns true - */ -function isShortOptionGroup(arg, options) { - if (arg.length <= 2) return false; - if (StringPrototypeCharAt(arg, 0) !== '-') return false; - if (StringPrototypeCharAt(arg, 1) === '-') return false; - - const firstShort = StringPrototypeCharAt(arg, 1); - const longOption = findLongOptionForShort(firstShort, options); - return optionsGetOwn(options, longOption, 'type') !== 'string'; -} - -/** - * Determine if arg is a short string option followed by its value. - * @example - * isShortOptionAndValue('-a', {}); // returns false - * isShortOptionAndValue('-ab', {}); // returns false - * isShortOptionAndValue('-fFILE', { - * options: { foo: { short: 'f', type: 'string' }} - * }) // returns true - */ -function isShortOptionAndValue(arg, options) { - validateObject(options, 'options'); - - if (arg.length <= 2) return false; - if (StringPrototypeCharAt(arg, 0) !== '-') return false; - if (StringPrototypeCharAt(arg, 1) === '-') return false; - - const shortOption = StringPrototypeCharAt(arg, 1); - const longOption = findLongOptionForShort(shortOption, options); - return optionsGetOwn(options, longOption, 'type') === 'string'; -} - -/** - * Find the long option associated with a short option. Looks for a configured - * `short` and returns the short option itself if a long option is not found. - * @example - * findLongOptionForShort('a', {}) // returns 'a' - * findLongOptionForShort('b', { - * options: { bar: { short: 'b' } } - * }) // returns 'bar' - */ -function findLongOptionForShort(shortOption, options) { - validateObject(options, 'options'); - const longOptionEntry = ArrayPrototypeFind( - ObjectEntries(options), - ({ 1: optionConfig }) => objectGetOwn(optionConfig, 'short') === shortOption - ); - return longOptionEntry?.[0] ?? shortOption; -} - -/** - * Check if the given option includes a default value - * and that option has not been set by the input args. - * - * @param {string} longOption - long option name e.g. 'foo' - * @param {object} optionConfig - the option configuration properties - * @param {object} values - option values returned in `values` by parseArgs - */ -function useDefaultValueOption(longOption, optionConfig, values) { - return objectGetOwn(optionConfig, 'default') !== undefined && - values[longOption] === undefined; -} - -module.exports = { - findLongOptionForShort, - isLoneLongOption, - isLoneShortOption, - isLongOptionAndValue, - isOptionValue, - isOptionLikeValue, - isShortOptionAndValue, - isShortOptionGroup, - useDefaultValueOption, - objectGetOwn, - optionsGetOwn, -}; diff --git a/deps/npm/node_modules/minimatch/LICENSE b/deps/npm/node_modules/@sigstore/sign/node_modules/proc-log/LICENSE similarity index 92% rename from deps/npm/node_modules/minimatch/LICENSE rename to deps/npm/node_modules/@sigstore/sign/node_modules/proc-log/LICENSE index 1493534e60dce4..83837797202b70 100644 --- a/deps/npm/node_modules/minimatch/LICENSE +++ b/deps/npm/node_modules/@sigstore/sign/node_modules/proc-log/LICENSE @@ -1,6 +1,6 @@ The ISC License -Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors +Copyright (c) GitHub, Inc. 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/@sigstore/sign/node_modules/proc-log/lib/index.js b/deps/npm/node_modules/@sigstore/sign/node_modules/proc-log/lib/index.js new file mode 100644 index 00000000000000..86d90861078dab --- /dev/null +++ b/deps/npm/node_modules/@sigstore/sign/node_modules/proc-log/lib/index.js @@ -0,0 +1,153 @@ +const META = Symbol('proc-log.meta') +module.exports = { + META: META, + output: { + LEVELS: [ + 'standard', + 'error', + 'buffer', + 'flush', + ], + KEYS: { + standard: 'standard', + error: 'error', + buffer: 'buffer', + flush: 'flush', + }, + standard: function (...args) { + return process.emit('output', 'standard', ...args) + }, + error: function (...args) { + return process.emit('output', 'error', ...args) + }, + buffer: function (...args) { + return process.emit('output', 'buffer', ...args) + }, + flush: function (...args) { + return process.emit('output', 'flush', ...args) + }, + }, + log: { + LEVELS: [ + 'notice', + 'error', + 'warn', + 'info', + 'verbose', + 'http', + 'silly', + 'timing', + 'pause', + 'resume', + ], + KEYS: { + notice: 'notice', + error: 'error', + warn: 'warn', + info: 'info', + verbose: 'verbose', + http: 'http', + silly: 'silly', + timing: 'timing', + pause: 'pause', + resume: 'resume', + }, + error: function (...args) { + return process.emit('log', 'error', ...args) + }, + notice: function (...args) { + return process.emit('log', 'notice', ...args) + }, + warn: function (...args) { + return process.emit('log', 'warn', ...args) + }, + info: function (...args) { + return process.emit('log', 'info', ...args) + }, + verbose: function (...args) { + return process.emit('log', 'verbose', ...args) + }, + http: function (...args) { + return process.emit('log', 'http', ...args) + }, + silly: function (...args) { + return process.emit('log', 'silly', ...args) + }, + timing: function (...args) { + return process.emit('log', 'timing', ...args) + }, + pause: function () { + return process.emit('log', 'pause') + }, + resume: function () { + return process.emit('log', 'resume') + }, + }, + time: { + LEVELS: [ + 'start', + 'end', + ], + KEYS: { + start: 'start', + end: 'end', + }, + start: function (name, fn) { + process.emit('time', 'start', name) + function end () { + return process.emit('time', 'end', name) + } + if (typeof fn === 'function') { + const res = fn() + if (res && res.finally) { + return res.finally(end) + } + end() + return res + } + return end + }, + end: function (name) { + return process.emit('time', 'end', name) + }, + }, + input: { + LEVELS: [ + 'start', + 'end', + 'read', + ], + KEYS: { + start: 'start', + end: 'end', + read: 'read', + }, + start: function (fn) { + process.emit('input', 'start') + function end () { + return process.emit('input', 'end') + } + if (typeof fn === 'function') { + const res = fn() + if (res && res.finally) { + return res.finally(end) + } + end() + return res + } + return end + }, + end: function () { + return process.emit('input', 'end') + }, + read: function (...args) { + let resolve, reject + const promise = new Promise((_resolve, _reject) => { + resolve = _resolve + reject = _reject + }) + process.emit('input', 'read', resolve, reject, ...args) + return promise + }, + }, +} diff --git a/deps/npm/node_modules/@sigstore/sign/node_modules/proc-log/package.json b/deps/npm/node_modules/@sigstore/sign/node_modules/proc-log/package.json new file mode 100644 index 00000000000000..957209d3954e53 --- /dev/null +++ b/deps/npm/node_modules/@sigstore/sign/node_modules/proc-log/package.json @@ -0,0 +1,46 @@ +{ + "name": "proc-log", + "version": "5.0.0", + "files": [ + "bin/", + "lib/" + ], + "main": "lib/index.js", + "description": "just emit 'log' events on the process object", + "repository": { + "type": "git", + "url": "git+https://github.com/npm/proc-log.git" + }, + "author": "GitHub Inc.", + "license": "ISC", + "scripts": { + "test": "tap", + "snap": "tap", + "posttest": "npm run lint", + "postsnap": "eslint index.js test/*.js --fix", + "lint": "npm run eslint", + "postlint": "template-oss-check", + "lintfix": "npm run eslint -- --fix", + "template-oss-apply": "template-oss-apply --force", + "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\"" + }, + "devDependencies": { + "@npmcli/eslint-config": "^5.0.0", + "@npmcli/template-oss": "4.23.3", + "tap": "^16.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + }, + "templateOSS": { + "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", + "version": "4.23.3", + "publish": true + }, + "tap": { + "nyc-arg": [ + "--exclude", + "tap-snapshots/**" + ] + } +} diff --git a/deps/npm/node_modules/abbrev/package.json b/deps/npm/node_modules/abbrev/package.json index 077d4bccd0e69e..f17aaccfa56add 100644 --- a/deps/npm/node_modules/abbrev/package.json +++ b/deps/npm/node_modules/abbrev/package.json @@ -1,18 +1,19 @@ { "name": "abbrev", - "version": "3.0.1", + "version": "4.0.0", "description": "Like ruby's abbrev module, but in js", "author": "GitHub Inc.", "main": "lib/index.js", "scripts": { - "test": "tap", + "test": "node --test", "lint": "npm run eslint", "postlint": "template-oss-check", "template-oss-apply": "template-oss-apply --force", "lintfix": "npm run eslint -- --fix", - "snap": "tap", + "snap": "node --test --test-update-snapshots", "posttest": "npm run lint", - "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\"" + "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\"", + "test:cover": "node --test --experimental-test-coverage --test-timeout=3000 --test-coverage-lines=100 --test-coverage-functions=100 --test-coverage-branches=100" }, "repository": { "type": "git", @@ -21,25 +22,20 @@ "license": "ISC", "devDependencies": { "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.24.3", - "tap": "^16.3.0" - }, - "tap": { - "nyc-arg": [ - "--exclude", - "tap-snapshots/**" - ] + "@npmcli/template-oss": "4.26.1" }, "files": [ "bin/", "lib/" ], "engines": { - "node": "^18.17.0 || >=20.5.0" + "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.24.3", - "publish": true + "version": "4.26.1", + "publish": true, + "testRunner": "node:test", + "latestCiVersion": 24 } } diff --git a/deps/npm/node_modules/bin-links/package.json b/deps/npm/node_modules/bin-links/package.json index 22858d660ae0b9..23f52cfc96ec46 100644 --- a/deps/npm/node_modules/bin-links/package.json +++ b/deps/npm/node_modules/bin-links/package.json @@ -1,6 +1,6 @@ { "name": "bin-links", - "version": "5.0.0", + "version": "6.0.0", "description": "JavaScript package binary linker", "main": "./lib/index.js", "scripts": { @@ -24,15 +24,15 @@ ], "license": "ISC", "dependencies": { - "cmd-shim": "^7.0.0", - "npm-normalize-package-bin": "^4.0.0", - "proc-log": "^5.0.0", - "read-cmd-shim": "^5.0.0", - "write-file-atomic": "^6.0.0" + "cmd-shim": "^8.0.0", + "npm-normalize-package-bin": "^5.0.0", + "proc-log": "^6.0.0", + "read-cmd-shim": "^6.0.0", + "write-file-atomic": "^7.0.0" }, "devDependencies": { "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.23.3", + "@npmcli/template-oss": "4.27.1", "require-inject": "^1.4.4", "tap": "^16.0.1" }, @@ -49,13 +49,13 @@ "lib/" ], "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^20.17.0 || >=22.9.0" }, "author": "GitHub Inc.", "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", "windowsCI": false, - "version": "4.23.3", + "version": "4.27.1", "publish": true } } diff --git a/deps/npm/node_modules/cacache/package.json b/deps/npm/node_modules/cacache/package.json index 6eec0a8375e5cc..40a84748948ac2 100644 --- a/deps/npm/node_modules/cacache/package.json +++ b/deps/npm/node_modules/cacache/package.json @@ -1,6 +1,6 @@ { "name": "cacache", - "version": "20.0.1", + "version": "20.0.2", "cache-version": { "content": "2", "index": "5" @@ -55,7 +55,7 @@ "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^7.0.2", - "ssri": "^12.0.0", + "ssri": "^13.0.0", "unique-filename": "^4.0.0" }, "devDependencies": { diff --git a/deps/npm/node_modules/cmd-shim/package.json b/deps/npm/node_modules/cmd-shim/package.json index 5f2e85d1c73db0..0da1978b985d2c 100644 --- a/deps/npm/node_modules/cmd-shim/package.json +++ b/deps/npm/node_modules/cmd-shim/package.json @@ -1,6 +1,6 @@ { "name": "cmd-shim", - "version": "7.0.0", + "version": "8.0.0", "description": "Used in npm for command line application support", "scripts": { "test": "tap", @@ -19,7 +19,7 @@ "license": "ISC", "devDependencies": { "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.23.1", + "@npmcli/template-oss": "4.27.1", "tap": "^16.0.1" }, "files": [ @@ -37,12 +37,12 @@ ] }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^20.17.0 || >=22.9.0" }, "author": "GitHub Inc.", "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.23.1", + "version": "4.27.1", "publish": true } } diff --git a/deps/npm/node_modules/exponential-backoff/package.json b/deps/npm/node_modules/exponential-backoff/package.json index 53fb159f827828..e3e8dc9a5dccd1 100644 --- a/deps/npm/node_modules/exponential-backoff/package.json +++ b/deps/npm/node_modules/exponential-backoff/package.json @@ -1,6 +1,6 @@ { "name": "exponential-backoff", - "version": "3.1.2", + "version": "3.1.3", "description": "A utility that allows retrying a function with an exponential delay between attempts.", "files": [ "dist/", diff --git a/deps/npm/node_modules/ini/package.json b/deps/npm/node_modules/ini/package.json index 6a3995f158cc5b..7bbc0576937c50 100644 --- a/deps/npm/node_modules/ini/package.json +++ b/deps/npm/node_modules/ini/package.json @@ -2,7 +2,7 @@ "author": "GitHub Inc.", "name": "ini", "description": "An ini encoder/decoder for node", - "version": "5.0.0", + "version": "6.0.0", "repository": { "type": "git", "url": "git+https://github.com/npm/ini.git" @@ -20,7 +20,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.23.3", + "@npmcli/template-oss": "4.27.1", "tap": "^16.0.1" }, "license": "ISC", @@ -29,11 +29,11 @@ "lib/" ], "engines": { - "node": "^18.17.0 || >=20.5.0" + "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.23.3", + "version": "4.27.1", "publish": "true" }, "tap": { diff --git a/deps/npm/node_modules/init-package-json/package.json b/deps/npm/node_modules/init-package-json/package.json index de404b658c7b76..715fc64673598a 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.2", + "version": "8.2.3", "main": "lib/init-package-json.js", "scripts": { "test": "tap", @@ -26,7 +26,7 @@ "read": "^4.0.0", "semver": "^7.7.2", "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^6.0.2" + "validate-npm-package-name": "^7.0.0" }, "devDependencies": { "@npmcli/config": "^10.0.0", diff --git a/deps/npm/node_modules/json-parse-even-better-errors/package.json b/deps/npm/node_modules/json-parse-even-better-errors/package.json index 193f0d9d459a53..6e696c98548db5 100644 --- a/deps/npm/node_modules/json-parse-even-better-errors/package.json +++ b/deps/npm/node_modules/json-parse-even-better-errors/package.json @@ -1,6 +1,6 @@ { "name": "json-parse-even-better-errors", - "version": "4.0.0", + "version": "5.0.0", "description": "JSON.parse with context information on error", "main": "lib/index.js", "files": [ @@ -29,7 +29,7 @@ "license": "MIT", "devDependencies": { "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.23.3", + "@npmcli/template-oss": "4.27.1", "tap": "^16.3.0" }, "tap": { @@ -40,11 +40,11 @@ ] }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "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.23.3", + "version": "4.27.1", "publish": true } } diff --git a/deps/npm/node_modules/libnpmdiff/package.json b/deps/npm/node_modules/libnpmdiff/package.json index ff894976468dbc..6813bf882e44b4 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.0.9", + "version": "8.0.10", "description": "The registry diff", "repository": { "type": "git", @@ -47,7 +47,7 @@ "tap": "^16.3.8" }, "dependencies": { - "@npmcli/arborist": "^9.1.6", + "@npmcli/arborist": "^9.1.7", "@npmcli/installed-package-contents": "^3.0.0", "binary-extensions": "^3.0.0", "diff": "^8.0.2", diff --git a/deps/npm/node_modules/libnpmexec/lib/with-lock.js b/deps/npm/node_modules/libnpmexec/lib/with-lock.js index 897046adedb8a7..c7ba531ca5484d 100644 --- a/deps/npm/node_modules/libnpmexec/lib/with-lock.js +++ b/deps/npm/node_modules/libnpmexec/lib/with-lock.js @@ -18,9 +18,10 @@ const { onExit } = require('signal-exit') // - more ergonomic compromised lock handling (i.e. withLock will reject, and callbacks have access to an AbortSignal) // - uses a more recent version of signal-exit +// mtime precision is platform dependent, so deal in seconds const touchInterval = 1_000 -// mtime precision is platform dependent, so use a reasonably large threshold -const staleThreshold = 5_000 +// use a reasonably large threshold, in case stat calls take a while +const staleThreshold = 60_000 // track current locks and their cleanup functions const currentLocks = new Map() @@ -144,6 +145,7 @@ async function maintainLock (lockPath) { let mtime = Math.round(stats.mtimeMs / 1000) const signal = controller.signal + let timeout async function touchLock () { try { const currentStats = (await fs.stat(lockPath)) @@ -156,16 +158,16 @@ async function maintainLock (lockPath) { if (currentLocks.has(lockPath)) { await fs.utimes(lockPath, mtime, mtime) } + timeout = setTimeout(touchLock, touchInterval).unref() } catch (err) { // stats mismatch or other fs error means the lock was compromised controller.abort() } } - const timeout = setInterval(touchLock, touchInterval) - timeout.unref() + timeout = setTimeout(touchLock, touchInterval).unref() function cleanup () { - clearInterval(timeout) + clearTimeout(timeout) deleteLock(lockPath) } currentLocks.set(lockPath, cleanup) diff --git a/deps/npm/node_modules/libnpmexec/package.json b/deps/npm/node_modules/libnpmexec/package.json index d06081ce21a609..cd380abf3cb9cd 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.1.8", + "version": "10.1.9", "files": [ "bin/", "lib/" @@ -53,20 +53,20 @@ "@npmcli/eslint-config": "^5.0.1", "@npmcli/mock-registry": "^1.0.0", "@npmcli/template-oss": "4.25.1", - "bin-links": "^5.0.0", + "bin-links": "^6.0.0", "chalk": "^5.2.0", "just-extend": "^6.2.0", "just-safe-set": "^4.2.1", "tap": "^16.3.8" }, "dependencies": { - "@npmcli/arborist": "^9.1.6", + "@npmcli/arborist": "^9.1.7", "@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": "^5.0.0", + "proc-log": "^6.0.0", "promise-retry": "^2.0.1", "read": "^4.0.0", "semver": "^7.3.7", diff --git a/deps/npm/node_modules/libnpmfund/package.json b/deps/npm/node_modules/libnpmfund/package.json index 7b9bf8e703a5f5..d77a056fc6884d 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.9", + "version": "7.0.10", "main": "lib/index.js", "files": [ "bin/", @@ -46,7 +46,7 @@ "tap": "^16.3.8" }, "dependencies": { - "@npmcli/arborist": "^9.1.6" + "@npmcli/arborist": "^9.1.7" }, "engines": { "node": "^20.17.0 || >=22.9.0" diff --git a/deps/npm/node_modules/libnpmpack/package.json b/deps/npm/node_modules/libnpmpack/package.json index dc4def4651723c..b105cb045cc0a7 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.0.9", + "version": "9.0.10", "description": "Programmatic API for the bits behind npm pack", "author": "GitHub Inc.", "main": "lib/index.js", @@ -37,7 +37,7 @@ "bugs": "https://github.com/npm/libnpmpack/issues", "homepage": "https://npmjs.com/package/libnpmpack", "dependencies": { - "@npmcli/arborist": "^9.1.6", + "@npmcli/arborist": "^9.1.7", "@npmcli/run-script": "^10.0.0", "npm-package-arg": "^13.0.0", "pacote": "^21.0.2" diff --git a/deps/npm/node_modules/libnpmpublish/package.json b/deps/npm/node_modules/libnpmpublish/package.json index d9f00aaffac6c5..65a4ae3c11d0ce 100644 --- a/deps/npm/node_modules/libnpmpublish/package.json +++ b/deps/npm/node_modules/libnpmpublish/package.json @@ -1,6 +1,6 @@ { "name": "libnpmpublish", - "version": "11.1.2", + "version": "11.1.3", "description": "Programmatic API for the bits behind npm publish and unpublish", "author": "GitHub Inc.", "main": "lib/index.js", @@ -42,10 +42,10 @@ "ci-info": "^4.0.0", "npm-package-arg": "^13.0.0", "npm-registry-fetch": "^19.0.0", - "proc-log": "^5.0.0", + "proc-log": "^6.0.0", "semver": "^7.3.7", "sigstore": "^4.0.0", - "ssri": "^12.0.0" + "ssri": "^13.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" diff --git a/deps/npm/node_modules/libnpmversion/package.json b/deps/npm/node_modules/libnpmversion/package.json index db1538b5721cce..e80966b6aeeb8c 100644 --- a/deps/npm/node_modules/libnpmversion/package.json +++ b/deps/npm/node_modules/libnpmversion/package.json @@ -1,6 +1,6 @@ { "name": "libnpmversion", - "version": "8.0.2", + "version": "8.0.3", "main": "lib/index.js", "files": [ "bin/", @@ -40,8 +40,8 @@ "dependencies": { "@npmcli/git": "^7.0.0", "@npmcli/run-script": "^10.0.0", - "json-parse-even-better-errors": "^4.0.0", - "proc-log": "^5.0.0", + "json-parse-even-better-errors": "^5.0.0", + "proc-log": "^6.0.0", "semver": "^7.3.7" }, "engines": { diff --git a/deps/npm/node_modules/make-fetch-happen/package.json b/deps/npm/node_modules/make-fetch-happen/package.json index 41815ec3c8f110..203b32304c461c 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.2", + "version": "15.0.3", "description": "Opinionated, caching, retrying fetch client", "main": "lib/index.js", "files": [ @@ -37,13 +37,13 @@ "cacache": "^20.0.1", "http-cache-semantics": "^4.1.1", "minipass": "^7.0.2", - "minipass-fetch": "^4.0.0", + "minipass-fetch": "^5.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^1.0.0", - "proc-log": "^5.0.0", + "proc-log": "^6.0.0", "promise-retry": "^2.0.1", - "ssri": "^12.0.0" + "ssri": "^13.0.0" }, "devDependencies": { "@npmcli/eslint-config": "^5.0.0", diff --git a/deps/npm/node_modules/node-gyp/node_modules/jackspeak/LICENSE.md b/deps/npm/node_modules/minimatch/LICENSE.md similarity index 100% rename from deps/npm/node_modules/node-gyp/node_modules/jackspeak/LICENSE.md rename to deps/npm/node_modules/minimatch/LICENSE.md diff --git a/deps/npm/node_modules/minimatch/dist/commonjs/ast.js b/deps/npm/node_modules/minimatch/dist/commonjs/ast.js index 9e1f9e765c597e..997343fbd1eab1 100644 --- a/deps/npm/node_modules/minimatch/dist/commonjs/ast.js +++ b/deps/npm/node_modules/minimatch/dist/commonjs/ast.js @@ -415,7 +415,9 @@ class AST { if (this.#root === this) this.#fillNegs(); if (!this.type) { - const noEmpty = this.isStart() && this.isEnd(); + const noEmpty = this.isStart() && + this.isEnd() && + !this.#parts.some(s => typeof s !== 'string'); const src = this.#parts .map(p => { const [re, _, hasMagic, uflag] = typeof p === 'string' @@ -571,10 +573,7 @@ class AST { } } if (c === '*') { - if (noEmpty && glob === '*') - re += starNoEmpty; - else - re += star; + re += noEmpty && glob === '*' ? starNoEmpty : star; hasMagic = true; continue; } diff --git a/deps/npm/node_modules/minimatch/dist/commonjs/escape.js b/deps/npm/node_modules/minimatch/dist/commonjs/escape.js index 02a4f8a8e0a588..6fb634fb41033c 100644 --- a/deps/npm/node_modules/minimatch/dist/commonjs/escape.js +++ b/deps/npm/node_modules/minimatch/dist/commonjs/escape.js @@ -4,16 +4,24 @@ exports.escape = void 0; /** * Escape all magic characters in a glob pattern. * - * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape} + * If the {@link MinimatchOptions.windowsPathsNoEscape} * option is used, then characters are escaped by wrapping in `[]`, because * a magic character wrapped in a character class can only be satisfied by * that exact character. In this mode, `\` is _not_ escaped, because it is * not interpreted as a magic character, but instead as a path separator. + * + * If the {@link MinimatchOptions.magicalBraces} option is used, + * then braces (`{` and `}`) will be escaped. */ -const escape = (s, { windowsPathsNoEscape = false, } = {}) => { +const escape = (s, { windowsPathsNoEscape = false, magicalBraces = false, } = {}) => { // don't need to escape +@! because we escape the parens // 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, '[$&]') + : s.replace(/[?*()[\]\\{}]/g, '\\$&'); + } return windowsPathsNoEscape ? s.replace(/[?*()[\]]/g, '[$&]') : s.replace(/[?*()[\]\\]/g, '\\$&'); diff --git a/deps/npm/node_modules/minimatch/dist/commonjs/index.js b/deps/npm/node_modules/minimatch/dist/commonjs/index.js index f58fb8616aa9ab..966dc9b8bb2165 100644 --- a/deps/npm/node_modules/minimatch/dist/commonjs/index.js +++ b/deps/npm/node_modules/minimatch/dist/commonjs/index.js @@ -640,7 +640,7 @@ class Minimatch { } } // resolve and reduce . and .. portions in the file as well. - // dont' need to do the second phase, because it's only one string[] + // don't need to do the second phase, because it's only one string[] const { optimizationLevel = 1 } = this.options; if (optimizationLevel >= 2) { file = this.levelTwoFileOptimize(file); @@ -893,14 +893,25 @@ class Minimatch { } } else if (next === undefined) { - pp[i - 1] = prev + '(?:\\/|' + twoStar + ')?'; + pp[i - 1] = prev + '(?:\\/|\\/' + twoStar + ')?'; } else if (next !== exports.GLOBSTAR) { pp[i - 1] = prev + '(?:\\/|\\/' + twoStar + '\\/)' + next; pp[i + 1] = exports.GLOBSTAR; } }); - return pp.filter(p => p !== exports.GLOBSTAR).join('/'); + const filtered = pp.filter(p => p !== exports.GLOBSTAR); + // For partial matches, we need to make the pattern match + // any prefix of the full path. We do this by generating + // alternative patterns that match progressively longer prefixes. + if (this.partial && filtered.length >= 1) { + const prefixes = []; + for (let i = 1; i <= filtered.length; i++) { + prefixes.push(filtered.slice(0, i).join('/')); + } + return '(?:' + prefixes.join('|') + ')'; + } + return filtered.join('/'); }) .join('|'); // need to wrap in parens if we had more than one thing with |, @@ -909,6 +920,10 @@ class Minimatch { // must match entire pattern // ending in a * or ** will make it less strict. re = '^' + open + re + close + '$'; + // In partial mode, '/' should always match as it's a valid prefix for any pattern + if (this.partial) { + re = '^(?:\\/|' + open + re.slice(1, -1) + close + ')$'; + } // can match anything, as long as it's not this. if (this.negate) re = '^(?!' + re + ').+$'; diff --git a/deps/npm/node_modules/minimatch/dist/commonjs/unescape.js b/deps/npm/node_modules/minimatch/dist/commonjs/unescape.js index 47c36bcee5a02a..171098d8a4ceb5 100644 --- a/deps/npm/node_modules/minimatch/dist/commonjs/unescape.js +++ b/deps/npm/node_modules/minimatch/dist/commonjs/unescape.js @@ -4,21 +4,35 @@ exports.unescape = void 0; /** * Un-escape a string that has been escaped with {@link escape}. * - * If the {@link windowsPathsNoEscape} option is used, then square-brace - * escapes are removed, but not backslash escapes. For example, it will turn - * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`, - * becuase `\` is a path separator in `windowsPathsNoEscape` mode. + * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then + * square-bracket escapes are removed, but not backslash escapes. * - * When `windowsPathsNoEscape` is not set, then both brace escapes and + * For example, it will turn the string `'[*]'` into `*`, but it will not + * turn `'\\*'` into `'*'`, because `\` is a path separator in + * `windowsPathsNoEscape` mode. + * + * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and * backslash escapes are removed. * * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped * or unescaped. + * + * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be + * unescaped. */ -const unescape = (s, { windowsPathsNoEscape = false, } = {}) => { +const unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true, } = {}) => { + if (magicalBraces) { + return windowsPathsNoEscape + ? s.replace(/\[([^\/\\])\]/g, '$1') + : s + .replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2') + .replace(/\\([^\/])/g, '$1'); + } return windowsPathsNoEscape - ? s.replace(/\[([^\/\\])\]/g, '$1') - : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2').replace(/\\([^\/])/g, '$1'); + ? s.replace(/\[([^\/\\{}])\]/g, '$1') + : s + .replace(/((?!\\).|^)\[([^\/\\{}])\]/g, '$1$2') + .replace(/\\([^\/{}])/g, '$1'); }; exports.unescape = unescape; //# sourceMappingURL=unescape.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/minimatch/dist/esm/ast.js b/deps/npm/node_modules/minimatch/dist/esm/ast.js index 02c6bda68427fc..0ae609ad10d519 100644 --- a/deps/npm/node_modules/minimatch/dist/esm/ast.js +++ b/deps/npm/node_modules/minimatch/dist/esm/ast.js @@ -412,7 +412,9 @@ export class AST { if (this.#root === this) this.#fillNegs(); if (!this.type) { - const noEmpty = this.isStart() && this.isEnd(); + const noEmpty = this.isStart() && + this.isEnd() && + !this.#parts.some(s => typeof s !== 'string'); const src = this.#parts .map(p => { const [re, _, hasMagic, uflag] = typeof p === 'string' @@ -568,10 +570,7 @@ export class AST { } } if (c === '*') { - if (noEmpty && glob === '*') - re += starNoEmpty; - else - re += star; + re += noEmpty && glob === '*' ? starNoEmpty : star; hasMagic = true; continue; } diff --git a/deps/npm/node_modules/minimatch/dist/esm/escape.js b/deps/npm/node_modules/minimatch/dist/esm/escape.js index 16f7c8c7bdc646..bab968ff3d83c9 100644 --- a/deps/npm/node_modules/minimatch/dist/esm/escape.js +++ b/deps/npm/node_modules/minimatch/dist/esm/escape.js @@ -1,16 +1,24 @@ /** * Escape all magic characters in a glob pattern. * - * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape} + * If the {@link MinimatchOptions.windowsPathsNoEscape} * option is used, then characters are escaped by wrapping in `[]`, because * a magic character wrapped in a character class can only be satisfied by * that exact character. In this mode, `\` is _not_ escaped, because it is * not interpreted as a magic character, but instead as a path separator. + * + * If the {@link MinimatchOptions.magicalBraces} option is used, + * then braces (`{` and `}`) will be escaped. */ -export const escape = (s, { windowsPathsNoEscape = false, } = {}) => { +export const escape = (s, { windowsPathsNoEscape = false, magicalBraces = false, } = {}) => { // don't need to escape +@! because we escape the parens // 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, '[$&]') + : s.replace(/[?*()[\]\\{}]/g, '\\$&'); + } return windowsPathsNoEscape ? s.replace(/[?*()[\]]/g, '[$&]') : s.replace(/[?*()[\]\\]/g, '\\$&'); diff --git a/deps/npm/node_modules/minimatch/dist/esm/index.js b/deps/npm/node_modules/minimatch/dist/esm/index.js index 790d6c02a2f22e..e83823fa6e1b55 100644 --- a/deps/npm/node_modules/minimatch/dist/esm/index.js +++ b/deps/npm/node_modules/minimatch/dist/esm/index.js @@ -631,7 +631,7 @@ export class Minimatch { } } // resolve and reduce . and .. portions in the file as well. - // dont' need to do the second phase, because it's only one string[] + // don't need to do the second phase, because it's only one string[] const { optimizationLevel = 1 } = this.options; if (optimizationLevel >= 2) { file = this.levelTwoFileOptimize(file); @@ -884,14 +884,25 @@ export class Minimatch { } } else if (next === undefined) { - pp[i - 1] = prev + '(?:\\/|' + twoStar + ')?'; + pp[i - 1] = prev + '(?:\\/|\\/' + twoStar + ')?'; } else if (next !== GLOBSTAR) { pp[i - 1] = prev + '(?:\\/|\\/' + twoStar + '\\/)' + next; pp[i + 1] = GLOBSTAR; } }); - return pp.filter(p => p !== GLOBSTAR).join('/'); + const filtered = pp.filter(p => p !== GLOBSTAR); + // For partial matches, we need to make the pattern match + // any prefix of the full path. We do this by generating + // alternative patterns that match progressively longer prefixes. + if (this.partial && filtered.length >= 1) { + const prefixes = []; + for (let i = 1; i <= filtered.length; i++) { + prefixes.push(filtered.slice(0, i).join('/')); + } + return '(?:' + prefixes.join('|') + ')'; + } + return filtered.join('/'); }) .join('|'); // need to wrap in parens if we had more than one thing with |, @@ -900,6 +911,10 @@ export class Minimatch { // must match entire pattern // ending in a * or ** will make it less strict. re = '^' + open + re + close + '$'; + // In partial mode, '/' should always match as it's a valid prefix for any pattern + if (this.partial) { + re = '^(?:\\/|' + open + re.slice(1, -1) + close + ')$'; + } // can match anything, as long as it's not this. if (this.negate) re = '^(?!' + re + ').+$'; diff --git a/deps/npm/node_modules/minimatch/dist/esm/unescape.js b/deps/npm/node_modules/minimatch/dist/esm/unescape.js index 0faf9a2b7306f7..dfa408d39853bc 100644 --- a/deps/npm/node_modules/minimatch/dist/esm/unescape.js +++ b/deps/npm/node_modules/minimatch/dist/esm/unescape.js @@ -1,20 +1,34 @@ /** * Un-escape a string that has been escaped with {@link escape}. * - * If the {@link windowsPathsNoEscape} option is used, then square-brace - * escapes are removed, but not backslash escapes. For example, it will turn - * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`, - * becuase `\` is a path separator in `windowsPathsNoEscape` mode. + * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then + * square-bracket escapes are removed, but not backslash escapes. * - * When `windowsPathsNoEscape` is not set, then both brace escapes and + * For example, it will turn the string `'[*]'` into `*`, but it will not + * turn `'\\*'` into `'*'`, because `\` is a path separator in + * `windowsPathsNoEscape` mode. + * + * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and * backslash escapes are removed. * * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped * or unescaped. + * + * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be + * unescaped. */ -export const unescape = (s, { windowsPathsNoEscape = false, } = {}) => { +export const unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true, } = {}) => { + if (magicalBraces) { + return windowsPathsNoEscape + ? s.replace(/\[([^\/\\])\]/g, '$1') + : s + .replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2') + .replace(/\\([^\/])/g, '$1'); + } return windowsPathsNoEscape - ? s.replace(/\[([^\/\\])\]/g, '$1') - : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2').replace(/\\([^\/])/g, '$1'); + ? s.replace(/\[([^\/\\{}])\]/g, '$1') + : s + .replace(/((?!\\).|^)\[([^\/\\{}])\]/g, '$1$2') + .replace(/\\([^\/{}])/g, '$1'); }; //# sourceMappingURL=unescape.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/minimatch/package.json b/deps/npm/node_modules/minimatch/package.json index bfa2423f50b5e2..620c0309f0d16d 100644 --- a/deps/npm/node_modules/minimatch/package.json +++ b/deps/npm/node_modules/minimatch/package.json @@ -2,10 +2,10 @@ "author": "Isaac Z. Schlueter (http://blog.izs.me)", "name": "minimatch", "description": "a glob matcher in javascript", - "version": "10.0.3", + "version": "10.1.1", "repository": { "type": "git", - "url": "git://github.com/isaacs/minimatch.git" + "url": "git@github.com:isaacs/minimatch" }, "main": "./dist/commonjs/index.js", "types": "./dist/commonjs/index.d.ts", @@ -34,9 +34,9 @@ "presnap": "npm run prepare", "test": "tap", "snap": "tap", - "format": "prettier --write . --loglevel warn", + "format": "prettier --write . --log-level warn", "benchmark": "node benchmark/index.js", - "typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts" + "typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts" }, "prettier": { "semi": false, @@ -53,10 +53,9 @@ "node": "20 || >=22" }, "devDependencies": { - "@types/brace-expansion": "^1.1.2", "@types/node": "^24.0.0", "mkdirp": "^3.0.1", - "prettier": "^3.3.2", + "prettier": "^3.6.2", "tap": "^21.1.0", "tshy": "^3.0.2", "typedoc": "^0.28.5" @@ -64,7 +63,7 @@ "funding": { "url": "https://github.com/sponsors/isaacs" }, - "license": "ISC", + "license": "BlueOak-1.0.0", "tshy": { "exports": { "./package.json": "./package.json", diff --git a/deps/npm/node_modules/minipass-fetch/package.json b/deps/npm/node_modules/minipass-fetch/package.json index eb8a4d4fac40d4..7863e7e5e9dee9 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": "4.0.1", + "version": "5.0.0", "description": "An implementation of window.fetch in Node.js using Minipass streams", "license": "MIT", "main": "lib/index.js", @@ -25,7 +25,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.23.3", + "@npmcli/template-oss": "4.27.1", "@ungap/url-search-params": "^0.2.2", "abort-controller": "^3.0.0", "abortcontroller-polyfill": "~1.7.3", @@ -59,12 +59,12 @@ "lib/" ], "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^20.17.0 || >=22.9.0" }, "author": "GitHub Inc.", "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.23.3", + "version": "4.27.1", "publish": "true" } } diff --git a/deps/npm/node_modules/node-gyp/.release-please-manifest.json b/deps/npm/node_modules/node-gyp/.release-please-manifest.json index a94451c9e13429..4899c67643487d 100644 --- a/deps/npm/node_modules/node-gyp/.release-please-manifest.json +++ b/deps/npm/node_modules/node-gyp/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.4.2" + ".": "12.1.0" } diff --git a/deps/npm/node_modules/node-gyp/CHANGELOG.md b/deps/npm/node_modules/node-gyp/CHANGELOG.md index 952284d697f828..2bdec2cc6b5e4e 100644 --- a/deps/npm/node_modules/node-gyp/CHANGELOG.md +++ b/deps/npm/node_modules/node-gyp/CHANGELOG.md @@ -1,5 +1,62 @@ # Changelog +## [12.1.0](https://github.com/nodejs/node-gyp/compare/v12.0.0...v12.1.0) (2025-11-12) + + +### Features + +* Add support for Visual Studio 2026 (18.x) ([69e5fd2](https://github.com/nodejs/node-gyp/commit/69e5fd2c98ac83dad5200a47515b301ccd80d2d3)) +* Support for Visual Studio 2026 (18.x) ([69e5fd2](https://github.com/nodejs/node-gyp/commit/69e5fd2c98ac83dad5200a47515b301ccd80d2d3)) + +## [12.0.0](https://github.com/nodejs/node-gyp/compare/v11.5.0...v12.0.0) (2025-11-10) + + +### ⚠ BREAKING CHANGES + +* align to npm 11 node engine range + +### Features + +* align to npm 11 node engine range ([2f85686](https://github.com/nodejs/node-gyp/commit/2f85686bbe745673350a8f9dbb0e86ee0190f213)) +* update gyp-next to v0.21.0 ([c57cd2e](https://github.com/nodejs/node-gyp/commit/c57cd2e86dc57707475b9f7e676e189f064817de)) + + +### Core + +* **deps:** bump actions/setup-node from 5 to 6 ([ae90e63](https://github.com/nodejs/node-gyp/commit/ae90e632d9fab85f4cd902dc9205ba9dfafaf3bc)) +* **deps:** bump env-paths from 2.2.1 to 3.0.0 ([#3235](https://github.com/nodejs/node-gyp/issues/3235)) ([5fffb2f](https://github.com/nodejs/node-gyp/commit/5fffb2ffee304cc898fdea7a0cd9e41d54c53839)) +* **deps:** bump which from 5.0.0 to 6.0.0 ([#3238](https://github.com/nodejs/node-gyp/issues/3238)) ([eaa8e34](https://github.com/nodejs/node-gyp/commit/eaa8e34cb5a0710bef0602c42e5840b47eb76822)) +* make-fetch-happen@15.0.0 ([e2b9d21](https://github.com/nodejs/node-gyp/commit/e2b9d21bce27c35d18fcb6f8583e386d15ce395c)) +* nopt@9.0.0 ([9bdeaf3](https://github.com/nodejs/node-gyp/commit/9bdeaf307cd7a254946859d306465989fa39dfb2)) +* proc-log@6.0.0 ([dfc68df](https://github.com/nodejs/node-gyp/commit/dfc68dfba3c17deb0bda9a395bb49d8fb9fa5951)) + + +### Miscellaneous + +* increase test timeouts ([#3237](https://github.com/nodejs/node-gyp/issues/3237)) ([3b41971](https://github.com/nodejs/node-gyp/commit/3b41971e2f6b90e02b1d7df592d403b8dfc8fa4d)) +* setup dependabot for npm ([86d65c7](https://github.com/nodejs/node-gyp/commit/86d65c7874eb41eb49c9b8bbf342becac8e57c6f)) +* update devDependencies ([41b0cea](https://github.com/nodejs/node-gyp/commit/41b0cea2f12342a790580cc8f844f075d49e096c)) + +## [11.5.0](https://github.com/nodejs/node-gyp/compare/v11.4.2...v11.5.0) (2025-10-15) + + +### Features + +* update gyp-next to v0.20.5 ([#3222](https://github.com/nodejs/node-gyp/issues/3222)) ([848e950](https://github.com/nodejs/node-gyp/commit/848e950833b90f0b25f346710ee42e9be4797604)) + + +### Bug Fixes + +* **ci:** Run Visual Studio test on Windows 11 on ARM ([#3217](https://github.com/nodejs/node-gyp/issues/3217)) ([8bd3f63](https://github.com/nodejs/node-gyp/commit/8bd3f6354b8bd43262a4d99d58a568beab0459e8)) +* **ci:** Test on Python 3.14 release candidate 3 on Linux and macOS ([#3216](https://github.com/nodejs/node-gyp/issues/3216)) ([085b445](https://github.com/nodejs/node-gyp/commit/085b445d1c00f8f1fc6a6ff80d8a93c6643f11ee)) + + +### Core + +* **deps:** bump actions/github-script from 7 to 8 ([#3213](https://github.com/nodejs/node-gyp/issues/3213)) ([c6b968c](https://github.com/nodejs/node-gyp/commit/c6b968caf7f4e22687fc10716162675b1411f713)) +* **deps:** bump actions/setup-node from 4 to 5 ([#3211](https://github.com/nodejs/node-gyp/issues/3211)) ([921c04d](https://github.com/nodejs/node-gyp/commit/921c04d142549f172d3aeae4097c9e0af05599dd)) +* **deps:** bump actions/setup-python from 5 to 6 ([#3210](https://github.com/nodejs/node-gyp/issues/3210)) ([6b70b05](https://github.com/nodejs/node-gyp/commit/6b70b05ed21cb977214348c97c2b97515c0d08f3)) + ## [11.4.2](https://github.com/nodejs/node-gyp/compare/v11.4.1...v11.4.2) (2025-08-26) diff --git a/deps/npm/node_modules/node-gyp/gyp/.release-please-manifest.json b/deps/npm/node_modules/node-gyp/gyp/.release-please-manifest.json index bdb726346fc28b..ca64307ab84750 100644 --- a/deps/npm/node_modules/node-gyp/gyp/.release-please-manifest.json +++ b/deps/npm/node_modules/node-gyp/gyp/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.20.4" + ".": "0.21.0" } diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py index 09baf44b2b0f8a..2d8e4ceab9a94c 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py @@ -270,6 +270,18 @@ def _CreateVersion(name, path, sdk_based=False): if path: path = os.path.normpath(path) versions = { + "2026": VisualStudioVersion( + "2026", + "Visual Studio 2026", + solution_version="12.00", + project_version="18.0", + flat_sln=False, + uses_vcxproj=True, + path=path, + sdk_based=sdk_based, + default_toolset="v145", + compatible_sdks=["v8.1", "v10.0"], + ), "2022": VisualStudioVersion( "2022", "Visual Studio 2022", @@ -462,6 +474,7 @@ def _DetectVisualStudioVersions(versions_to_check, force_express): "15.0": "2017", "16.0": "2019", "17.0": "2022", + "18.0": "2026", } versions = [] for version in versions_to_check: @@ -537,7 +550,18 @@ def SelectVisualStudioVersion(version="auto", allow_fallback=True): if version == "auto": version = os.environ.get("GYP_MSVS_VERSION", "auto") version_map = { - "auto": ("17.0", "16.0", "15.0", "14.0", "12.0", "10.0", "9.0", "8.0", "11.0"), + "auto": ( + "18.0", + "17.0", + "16.0", + "15.0", + "14.0", + "12.0", + "10.0", + "9.0", + "8.0", + "11.0", + ), "2005": ("8.0",), "2005e": ("8.0",), "2008": ("9.0",), @@ -552,6 +576,7 @@ def SelectVisualStudioVersion(version="auto", allow_fallback=True): "2017": ("15.0",), "2019": ("16.0",), "2022": ("17.0",), + "2026": ("18.0",), } if override_path := os.environ.get("GYP_MSVS_OVERRIDE_PATH"): msvs_version = os.environ.get("GYP_MSVS_VERSION") diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py index cfc0681f6bb049..5d5cae2afbf668 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py @@ -378,7 +378,7 @@ def WriteRules(self, rules, extra_sources, extra_outputs): inputs = rule.get("inputs") for rule_source in rule.get("rule_sources", []): (rule_source_dirname, rule_source_basename) = os.path.split(rule_source) - (rule_source_root, rule_source_ext) = os.path.splitext( + (rule_source_root, _rule_source_ext) = os.path.splitext( rule_source_basename ) diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py index bebb1303154e16..1361aeca48d0cd 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py @@ -100,7 +100,7 @@ def resolve(filename): def GenerateOutput(target_list, target_dicts, data, params): per_config_commands = {} for qualified_target, target in target_dicts.items(): - build_file, target_name, toolset = gyp.common.ParseQualifiedTarget( + build_file, _target_name, _toolset = gyp.common.ParseQualifiedTarget( qualified_target ) if IsMac(params): diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py index 3c70b81fd25625..89af24a201b101 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py @@ -73,7 +73,7 @@ def GenerateOutput(target_list, target_dicts, data, params): output_files = {} for qualified_target in target_list: - [input_file, target] = gyp.common.ParseQualifiedTarget(qualified_target)[0:2] + [input_file, _target] = gyp.common.ParseQualifiedTarget(qualified_target)[0:2] if input_file[-4:] != ".gyp": continue diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py index 1f0995718b59b7..5f30f39fc503e5 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py @@ -1169,7 +1169,7 @@ def WriteRules( for rule_source in rule.get("rule_sources", []): dirs = set() (rule_source_dirname, rule_source_basename) = os.path.split(rule_source) - (rule_source_root, rule_source_ext) = os.path.splitext( + (rule_source_root, _rule_source_ext) = os.path.splitext( rule_source_basename ) diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py index 3b258ee8f395e7..0f14c055049add 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py @@ -1666,7 +1666,7 @@ def _HandlePreCompiledHeaders(p, sources, spec): p.AddFileConfig( source, _ConfigFullName(config_name, config), {}, tools=[tool] ) - basename, extension = os.path.splitext(source) + _basename, extension = os.path.splitext(source) if extension == ".c": extensions_excluded_from_precompile = [".cc", ".cpp", ".cxx"] else: @@ -1677,7 +1677,7 @@ def DisableForSourceTree(source_tree): if isinstance(source, MSVSProject.Filter): DisableForSourceTree(source.contents) else: - basename, extension = os.path.splitext(source) + _basename, extension = os.path.splitext(source) if extension in extensions_excluded_from_precompile: for config_name, config in spec["configurations"].items(): tool = MSVSProject.Tool( @@ -3579,7 +3579,7 @@ def _AddSources2( # If the precompiled header is generated by a C source, # we must not try to use it for C++ sources, # and vice versa. - basename, extension = os.path.splitext(precompiled_source) + _basename, extension = os.path.splitext(precompiled_source) if extension == ".c": extensions_excluded_from_precompile = [ ".cc", diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py index 8e05657961fe98..db4b45d1a04d25 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py @@ -531,7 +531,7 @@ def AddSourceToTarget(source, type, pbxp, xct): library_extensions = ["a", "dylib", "framework", "o"] basename = posixpath.basename(source) - (root, ext) = posixpath.splitext(basename) + (_root, ext) = posixpath.splitext(basename) if ext: ext = ext[1:].lower() @@ -696,7 +696,7 @@ def GenerateOutput(target_list, target_dicts, data, params): xcode_targets = {} xcode_target_to_target_dict = {} for qualified_target in target_list: - [build_file, target_name, toolset] = gyp.common.ParseQualifiedTarget( + [build_file, target_name, _toolset] = gyp.common.ParseQualifiedTarget( qualified_target ) @@ -1215,7 +1215,7 @@ def GenerateOutput(target_list, target_dicts, data, params): # Add "sources". for source in spec.get("sources", []): - (source_root, source_extension) = posixpath.splitext(source) + (_source_root, source_extension) = posixpath.splitext(source) if source_extension[1:] not in rules_by_ext: # AddSourceToTarget will add the file to a root group if it's not # already there. @@ -1227,7 +1227,7 @@ def GenerateOutput(target_list, target_dicts, data, params): # it's a bundle of any type. if is_bundle: for resource in tgt_mac_bundle_resources: - (resource_root, resource_extension) = posixpath.splitext(resource) + (_resource_root, resource_extension) = posixpath.splitext(resource) if resource_extension[1:] not in rules_by_ext: AddResourceToTarget(resource, pbxp, xct) else: diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py index 4965ff1571c73c..f3a5e168f2075d 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py @@ -2757,7 +2757,7 @@ def ValidateRulesInTarget(target, target_dict, extra_sources_for_rules): source_keys.extend(extra_sources_for_rules) for source_key in source_keys: for source in target_dict.get(source_key, []): - (source_root, source_extension) = os.path.splitext(source) + (_source_root, source_extension) = os.path.splitext(source) if source_extension.startswith("."): source_extension = source_extension[1:] if source_extension == rule_extension: diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py index 192a523529fddd..d13eaa9af240b7 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py @@ -1534,18 +1534,20 @@ def CLTVersion(): FROM_XCODE_PKG_ID = "com.apple.pkg.DeveloperToolsCLI" MAVERICKS_PKG_ID = "com.apple.pkg.CLTools_Executables" - regex = re.compile("version: (?P.+)") + regex = re.compile(r"version: (?P.+)") for key in [MAVERICKS_PKG_ID, STANDALONE_PKG_ID, FROM_XCODE_PKG_ID]: try: output = GetStdout(["/usr/sbin/pkgutil", "--pkg-info", key]) - return re.search(regex, output).groupdict()["version"] + if m := re.search(regex, output): + return m.groupdict()["version"] except (GypError, OSError): continue regex = re.compile(r"Command Line Tools for Xcode\s+(?P\S+)") try: output = GetStdout(["/usr/sbin/softwareupdate", "--history"]) - return re.search(regex, output).groupdict()["version"] + if m := re.search(regex, output): + return m.groupdict()["version"] except (GypError, OSError): return None diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py index 1a97a06c51d9f5..a133fdbe8b4f58 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py @@ -22,7 +22,7 @@ def _WriteWorkspace(main_gyp, sources_gyp, params): """Create a workspace to wrap main and sources gyp paths.""" - (build_file_root, build_file_ext) = os.path.splitext(main_gyp) + (build_file_root, _build_file_ext) = os.path.splitext(main_gyp) workspace_path = build_file_root + ".xcworkspace" options = params["options"] if options.generator_output: diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py index 11e2be07372230..cb467470d3044b 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py @@ -487,7 +487,7 @@ def Children(self): children = [] for property, attributes in self._schema.items(): - (is_list, property_type, is_strong) = attributes[0:3] + (is_list, _property_type, is_strong) = attributes[0:3] if is_strong and property in self._properties: if not is_list: children.append(self._properties[property]) @@ -913,7 +913,7 @@ def VerifyHasRequiredProperties(self): # TODO(mark): A stronger verification mechanism is needed. Some # subclasses need to perform validation beyond what the schema can enforce. for property, attributes in self._schema.items(): - (is_list, property_type, is_strong, is_required) = attributes[0:4] + (_is_list, _property_type, _is_strong, is_required) = attributes[0:4] if is_required and property not in self._properties: raise KeyError(self.__class__.__name__ + " requires " + property) @@ -923,7 +923,7 @@ def _SetDefaultsFromSchema(self): defaults = {} for property, attributes in self._schema.items(): - (is_list, property_type, is_strong, is_required) = attributes[0:4] + (_is_list, _property_type, _is_strong, is_required) = attributes[0:4] if ( is_required and len(attributes) >= 5 @@ -1616,7 +1616,7 @@ def __init__(self, properties=None, id=None, parent=None): prop_name = "lastKnownFileType" else: basename = posixpath.basename(self._properties["path"]) - (root, ext) = posixpath.splitext(basename) + (_root, ext) = posixpath.splitext(basename) # Check the map using a lowercase extension. # TODO(mark): Maybe it should try with the original case first and fall # back to lowercase, in case there are any instances where case @@ -2010,7 +2010,7 @@ def Name(self): return "Frameworks" def FileGroup(self, path): - (root, ext) = posixpath.splitext(path) + (_root, ext) = posixpath.splitext(path) if ext != "": ext = ext[1:].lower() if ext == "o": diff --git a/deps/npm/node_modules/node-gyp/gyp/pyproject.toml b/deps/npm/node_modules/node-gyp/gyp/pyproject.toml index 3a029c4fc5140c..cd4f0383fd37c7 100644 --- a/deps/npm/node_modules/node-gyp/gyp/pyproject.toml +++ b/deps/npm/node_modules/node-gyp/gyp/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "gyp-next" -version = "0.20.4" +version = "0.21.0" authors = [ { name="Node.js contributors", email="ryzokuken@disroot.org" }, ] diff --git a/deps/npm/node_modules/node-gyp/lib/find-visualstudio.js b/deps/npm/node_modules/node-gyp/lib/find-visualstudio.js index e9aa7fafdc98a4..e0cf383489e282 100644 --- a/deps/npm/node_modules/node-gyp/lib/find-visualstudio.js +++ b/deps/npm/node_modules/node-gyp/lib/find-visualstudio.js @@ -119,7 +119,7 @@ class VisualStudioFinder { } async findVisualStudio2019OrNewerFromSpecifiedLocation () { - return this.findVSFromSpecifiedLocation([2019, 2022]) + return this.findVSFromSpecifiedLocation([2019, 2022, 2026]) } async findVisualStudio2017FromSpecifiedLocation () { @@ -162,7 +162,7 @@ class VisualStudioFinder { } async findVisualStudio2019OrNewerUsingSetupModule () { - return this.findNewVSUsingSetupModule([2019, 2022]) + return this.findNewVSUsingSetupModule([2019, 2022, 2026]) } async findVisualStudio2017UsingSetupModule () { @@ -223,7 +223,7 @@ class VisualStudioFinder { // Invoke the PowerShell script to get information about Visual Studio 2019 // or newer installations async findVisualStudio2019OrNewer () { - return this.findNewVS([2019, 2022]) + return this.findNewVS([2019, 2022, 2026]) } // Invoke the PowerShell script to get information about Visual Studio 2017 @@ -389,6 +389,10 @@ class VisualStudioFinder { ret.versionYear = 2022 return ret } + if (ret.versionMajor === 18) { + ret.versionYear = 2026 + return ret + } this.log.silly('- unsupported version:', ret.versionMajor) return {} } @@ -456,6 +460,8 @@ class VisualStudioFinder { return 'v142' } else if (versionYear === 2022) { return 'v143' + } else if (versionYear === 2026) { + return 'v145' } this.log.silly('- invalid versionYear:', versionYear) return null diff --git a/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/agents.js b/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/agents.js deleted file mode 100644 index c541b93001517e..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/agents.js +++ /dev/null @@ -1,206 +0,0 @@ -'use strict' - -const net = require('net') -const tls = require('tls') -const { once } = require('events') -const timers = require('timers/promises') -const { normalizeOptions, cacheOptions } = require('./options') -const { getProxy, getProxyAgent, proxyCache } = require('./proxy.js') -const Errors = require('./errors.js') -const { Agent: AgentBase } = require('agent-base') - -module.exports = class Agent extends AgentBase { - #options - #timeouts - #proxy - #noProxy - #ProxyAgent - - constructor (options = {}) { - const { timeouts, proxy, noProxy, ...normalizedOptions } = normalizeOptions(options) - - super(normalizedOptions) - - this.#options = normalizedOptions - this.#timeouts = timeouts - - if (proxy) { - this.#proxy = new URL(proxy) - this.#noProxy = noProxy - this.#ProxyAgent = getProxyAgent(proxy) - } - } - - get proxy () { - return this.#proxy ? { url: this.#proxy } : {} - } - - #getProxy (options) { - if (!this.#proxy) { - return - } - - const proxy = getProxy(`${options.protocol}//${options.host}:${options.port}`, { - proxy: this.#proxy, - noProxy: this.#noProxy, - }) - - if (!proxy) { - return - } - - const cacheKey = cacheOptions({ - ...options, - ...this.#options, - timeouts: this.#timeouts, - proxy, - }) - - if (proxyCache.has(cacheKey)) { - return proxyCache.get(cacheKey) - } - - let ProxyAgent = this.#ProxyAgent - if (Array.isArray(ProxyAgent)) { - ProxyAgent = this.isSecureEndpoint(options) ? ProxyAgent[1] : ProxyAgent[0] - } - - const proxyAgent = new ProxyAgent(proxy, { - ...this.#options, - socketOptions: { family: this.#options.family }, - }) - proxyCache.set(cacheKey, proxyAgent) - - return proxyAgent - } - - // takes an array of promises and races them against the connection timeout - // which will throw the necessary error if it is hit. This will return the - // result of the promise race. - async #timeoutConnection ({ promises, options, timeout }, ac = new AbortController()) { - if (timeout) { - const connectionTimeout = timers.setTimeout(timeout, null, { signal: ac.signal }) - .then(() => { - throw new Errors.ConnectionTimeoutError(`${options.host}:${options.port}`) - }).catch((err) => { - if (err.name === 'AbortError') { - return - } - throw err - }) - promises.push(connectionTimeout) - } - - let result - try { - result = await Promise.race(promises) - ac.abort() - } catch (err) { - ac.abort() - throw err - } - return result - } - - async connect (request, options) { - // if the connection does not have its own lookup function - // set, then use the one from our options - options.lookup ??= this.#options.lookup - - let socket - let timeout = this.#timeouts.connection - const isSecureEndpoint = this.isSecureEndpoint(options) - - const proxy = this.#getProxy(options) - if (proxy) { - // some of the proxies will wait for the socket to fully connect before - // returning so we have to await this while also racing it against the - // connection timeout. - const start = Date.now() - socket = await this.#timeoutConnection({ - options, - timeout, - promises: [proxy.connect(request, options)], - }) - // see how much time proxy.connect took and subtract it from - // the timeout - if (timeout) { - timeout = timeout - (Date.now() - start) - } - } else { - socket = (isSecureEndpoint ? tls : net).connect(options) - } - - socket.setKeepAlive(this.keepAlive, this.keepAliveMsecs) - socket.setNoDelay(this.keepAlive) - - const abortController = new AbortController() - const { signal } = abortController - - const connectPromise = socket[isSecureEndpoint ? 'secureConnecting' : 'connecting'] - ? once(socket, isSecureEndpoint ? 'secureConnect' : 'connect', { signal }) - : Promise.resolve() - - await this.#timeoutConnection({ - options, - timeout, - promises: [ - connectPromise, - once(socket, 'error', { signal }).then((err) => { - throw err[0] - }), - ], - }, abortController) - - if (this.#timeouts.idle) { - socket.setTimeout(this.#timeouts.idle, () => { - socket.destroy(new Errors.IdleTimeoutError(`${options.host}:${options.port}`)) - }) - } - - return socket - } - - addRequest (request, options) { - const proxy = this.#getProxy(options) - // it would be better to call proxy.addRequest here but this causes the - // http-proxy-agent to call its super.addRequest which causes the request - // to be added to the agent twice. since we only support 3 agents - // currently (see the required agents in proxy.js) we have manually - // checked that the only public methods we need to call are called in the - // next block. this could change in the future and presumably we would get - // failing tests until we have properly called the necessary methods on - // each of our proxy agents - if (proxy?.setRequestProps) { - proxy.setRequestProps(request, options) - } - - request.setHeader('connection', this.keepAlive ? 'keep-alive' : 'close') - - if (this.#timeouts.response) { - let responseTimeout - request.once('finish', () => { - setTimeout(() => { - request.destroy(new Errors.ResponseTimeoutError(request, this.#proxy)) - }, this.#timeouts.response) - }) - request.once('response', () => { - clearTimeout(responseTimeout) - }) - } - - if (this.#timeouts.transfer) { - let transferTimeout - request.once('response', (res) => { - setTimeout(() => { - res.destroy(new Errors.TransferTimeoutError(request, this.#proxy)) - }, this.#timeouts.transfer) - res.once('close', () => { - clearTimeout(transferTimeout) - }) - }) - } - - return super.addRequest(request, options) - } -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/dns.js b/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/dns.js deleted file mode 100644 index 3c6946c566d736..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/dns.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict' - -const { LRUCache } = require('lru-cache') -const dns = require('dns') - -// this is a factory so that each request can have its own opts (i.e. ttl) -// while still sharing the cache across all requests -const cache = new LRUCache({ max: 50 }) - -const getOptions = ({ - family = 0, - hints = dns.ADDRCONFIG, - all = false, - verbatim = undefined, - ttl = 5 * 60 * 1000, - lookup = dns.lookup, -}) => ({ - // hints and lookup are returned since both are top level properties to (net|tls).connect - hints, - lookup: (hostname, ...args) => { - const callback = args.pop() // callback is always last arg - const lookupOptions = args[0] ?? {} - - const options = { - family, - hints, - all, - verbatim, - ...(typeof lookupOptions === 'number' ? { family: lookupOptions } : lookupOptions), - } - - const key = JSON.stringify({ hostname, ...options }) - - if (cache.has(key)) { - const cached = cache.get(key) - return process.nextTick(callback, null, ...cached) - } - - lookup(hostname, options, (err, ...result) => { - if (err) { - return callback(err) - } - - cache.set(key, result, { ttl }) - return callback(null, ...result) - }) - }, -}) - -module.exports = { - cache, - getOptions, -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/errors.js b/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/errors.js deleted file mode 100644 index 70475aec8eb357..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/errors.js +++ /dev/null @@ -1,61 +0,0 @@ -'use strict' - -class InvalidProxyProtocolError extends Error { - constructor (url) { - super(`Invalid protocol \`${url.protocol}\` connecting to proxy \`${url.host}\``) - this.code = 'EINVALIDPROXY' - this.proxy = url - } -} - -class ConnectionTimeoutError extends Error { - constructor (host) { - super(`Timeout connecting to host \`${host}\``) - this.code = 'ECONNECTIONTIMEOUT' - this.host = host - } -} - -class IdleTimeoutError extends Error { - constructor (host) { - super(`Idle timeout reached for host \`${host}\``) - this.code = 'EIDLETIMEOUT' - this.host = host - } -} - -class ResponseTimeoutError extends Error { - constructor (request, proxy) { - let msg = 'Response timeout ' - if (proxy) { - msg += `from proxy \`${proxy.host}\` ` - } - msg += `connecting to host \`${request.host}\`` - super(msg) - this.code = 'ERESPONSETIMEOUT' - this.proxy = proxy - this.request = request - } -} - -class TransferTimeoutError extends Error { - constructor (request, proxy) { - let msg = 'Transfer timeout ' - if (proxy) { - msg += `from proxy \`${proxy.host}\` ` - } - msg += `for \`${request.host}\`` - super(msg) - this.code = 'ETRANSFERTIMEOUT' - this.proxy = proxy - this.request = request - } -} - -module.exports = { - InvalidProxyProtocolError, - ConnectionTimeoutError, - IdleTimeoutError, - ResponseTimeoutError, - TransferTimeoutError, -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/index.js b/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/index.js deleted file mode 100644 index b33d6eaef07a21..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/index.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict' - -const { LRUCache } = require('lru-cache') -const { normalizeOptions, cacheOptions } = require('./options') -const { getProxy, proxyCache } = require('./proxy.js') -const dns = require('./dns.js') -const Agent = require('./agents.js') - -const agentCache = new LRUCache({ max: 20 }) - -const getAgent = (url, { agent, proxy, noProxy, ...options } = {}) => { - // false has meaning so this can't be a simple truthiness check - if (agent != null) { - return agent - } - - url = new URL(url) - - const proxyForUrl = getProxy(url, { proxy, noProxy }) - const normalizedOptions = { - ...normalizeOptions(options), - proxy: proxyForUrl, - } - - const cacheKey = cacheOptions({ - ...normalizedOptions, - secureEndpoint: url.protocol === 'https:', - }) - - if (agentCache.has(cacheKey)) { - return agentCache.get(cacheKey) - } - - const newAgent = new Agent(normalizedOptions) - agentCache.set(cacheKey, newAgent) - - return newAgent -} - -module.exports = { - getAgent, - Agent, - // these are exported for backwards compatability - HttpAgent: Agent, - HttpsAgent: Agent, - cache: { - proxy: proxyCache, - agent: agentCache, - dns: dns.cache, - clear: () => { - proxyCache.clear() - agentCache.clear() - dns.cache.clear() - }, - }, -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/options.js b/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/options.js deleted file mode 100644 index 0bf53f725f0846..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/options.js +++ /dev/null @@ -1,86 +0,0 @@ -'use strict' - -const dns = require('./dns') - -const normalizeOptions = (opts) => { - const family = parseInt(opts.family ?? '0', 10) - const keepAlive = opts.keepAlive ?? true - - const normalized = { - // nodejs http agent options. these are all the defaults - // but kept here to increase the likelihood of cache hits - // https://nodejs.org/api/http.html#new-agentoptions - keepAliveMsecs: keepAlive ? 1000 : undefined, - maxSockets: opts.maxSockets ?? 15, - maxTotalSockets: Infinity, - maxFreeSockets: keepAlive ? 256 : undefined, - scheduling: 'fifo', - // then spread the rest of the options - ...opts, - // we already set these to their defaults that we want - family, - keepAlive, - // our custom timeout options - timeouts: { - // the standard timeout option is mapped to our idle timeout - // and then deleted below - idle: opts.timeout ?? 0, - connection: 0, - response: 0, - transfer: 0, - ...opts.timeouts, - }, - // get the dns options that go at the top level of socket connection - ...dns.getOptions({ family, ...opts.dns }), - } - - // remove timeout since we already used it to set our own idle timeout - delete normalized.timeout - - return normalized -} - -const createKey = (obj) => { - let key = '' - const sorted = Object.entries(obj).sort((a, b) => a[0] - b[0]) - for (let [k, v] of sorted) { - if (v == null) { - v = 'null' - } else if (v instanceof URL) { - v = v.toString() - } else if (typeof v === 'object') { - v = createKey(v) - } - key += `${k}:${v}:` - } - return key -} - -const cacheOptions = ({ secureEndpoint, ...options }) => createKey({ - secureEndpoint: !!secureEndpoint, - // socket connect options - family: options.family, - hints: options.hints, - localAddress: options.localAddress, - // tls specific connect options - strictSsl: secureEndpoint ? !!options.rejectUnauthorized : false, - ca: secureEndpoint ? options.ca : null, - cert: secureEndpoint ? options.cert : null, - key: secureEndpoint ? options.key : null, - // http agent options - keepAlive: options.keepAlive, - keepAliveMsecs: options.keepAliveMsecs, - maxSockets: options.maxSockets, - maxTotalSockets: options.maxTotalSockets, - maxFreeSockets: options.maxFreeSockets, - scheduling: options.scheduling, - // timeout options - timeouts: options.timeouts, - // proxy - proxy: options.proxy, -}) - -module.exports = { - normalizeOptions, - cacheOptions, -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/proxy.js b/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/proxy.js deleted file mode 100644 index 6272e929e57bcf..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/lib/proxy.js +++ /dev/null @@ -1,88 +0,0 @@ -'use strict' - -const { HttpProxyAgent } = require('http-proxy-agent') -const { HttpsProxyAgent } = require('https-proxy-agent') -const { SocksProxyAgent } = require('socks-proxy-agent') -const { LRUCache } = require('lru-cache') -const { InvalidProxyProtocolError } = require('./errors.js') - -const PROXY_CACHE = new LRUCache({ max: 20 }) - -const SOCKS_PROTOCOLS = new Set(SocksProxyAgent.protocols) - -const PROXY_ENV_KEYS = new Set(['https_proxy', 'http_proxy', 'proxy', 'no_proxy']) - -const PROXY_ENV = Object.entries(process.env).reduce((acc, [key, value]) => { - key = key.toLowerCase() - if (PROXY_ENV_KEYS.has(key)) { - acc[key] = value - } - return acc -}, {}) - -const getProxyAgent = (url) => { - url = new URL(url) - - const protocol = url.protocol.slice(0, -1) - if (SOCKS_PROTOCOLS.has(protocol)) { - return SocksProxyAgent - } - if (protocol === 'https' || protocol === 'http') { - return [HttpProxyAgent, HttpsProxyAgent] - } - - throw new InvalidProxyProtocolError(url) -} - -const isNoProxy = (url, noProxy) => { - if (typeof noProxy === 'string') { - noProxy = noProxy.split(',').map((p) => p.trim()).filter(Boolean) - } - - if (!noProxy || !noProxy.length) { - return false - } - - const hostSegments = url.hostname.split('.').reverse() - - return noProxy.some((no) => { - const noSegments = no.split('.').filter(Boolean).reverse() - if (!noSegments.length) { - return false - } - - for (let i = 0; i < noSegments.length; i++) { - if (hostSegments[i] !== noSegments[i]) { - return false - } - } - - return true - }) -} - -const getProxy = (url, { proxy, noProxy }) => { - url = new URL(url) - - if (!proxy) { - proxy = url.protocol === 'https:' - ? PROXY_ENV.https_proxy - : PROXY_ENV.https_proxy || PROXY_ENV.http_proxy || PROXY_ENV.proxy - } - - if (!noProxy) { - noProxy = PROXY_ENV.no_proxy - } - - if (!proxy || isNoProxy(url, noProxy)) { - return null - } - - return new URL(proxy) -} - -module.exports = { - getProxyAgent, - getProxy, - proxyCache: PROXY_CACHE, -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/LICENSE.md b/deps/npm/node_modules/node-gyp/node_modules/cacache/LICENSE.md deleted file mode 100644 index 8d28acf866d932..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/LICENSE.md +++ /dev/null @@ -1,16 +0,0 @@ -ISC License - -Copyright (c) npm, Inc. - -Permission to use, copy, modify, and/or distribute this software for -any purpose with or without fee is hereby granted, provided that the -above copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE COPYRIGHT HOLDER DISCLAIMS -ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE -OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE -USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/path.js b/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/path.js deleted file mode 100644 index ad5a76a4f73f26..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/path.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict' - -const contentVer = require('../../package.json')['cache-version'].content -const hashToSegments = require('../util/hash-to-segments') -const path = require('path') -const ssri = require('ssri') - -// Current format of content file path: -// -// sha512-BaSE64Hex= -> -// ~/.my-cache/content-v2/sha512/ba/da/55deadbeefc0ffee -// -module.exports = contentPath - -function contentPath (cache, integrity) { - const sri = ssri.parse(integrity, { single: true }) - // contentPath is the *strongest* algo given - return path.join( - contentDir(cache), - sri.algorithm, - ...hashToSegments(sri.hexDigest()) - ) -} - -module.exports.contentDir = contentDir - -function contentDir (cache) { - return path.join(cache, `content-v${contentVer}`) -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/read.js b/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/read.js deleted file mode 100644 index 5f6192c3cec566..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/read.js +++ /dev/null @@ -1,165 +0,0 @@ -'use strict' - -const fs = require('fs/promises') -const fsm = require('fs-minipass') -const ssri = require('ssri') -const contentPath = require('./path') -const Pipeline = require('minipass-pipeline') - -module.exports = read - -const MAX_SINGLE_READ_SIZE = 64 * 1024 * 1024 -async function read (cache, integrity, opts = {}) { - const { size } = opts - const { stat, cpath, sri } = await withContentSri(cache, integrity, async (cpath, sri) => { - // get size - const stat = size ? { size } : await fs.stat(cpath) - return { stat, cpath, sri } - }) - - if (stat.size > MAX_SINGLE_READ_SIZE) { - return readPipeline(cpath, stat.size, sri, new Pipeline()).concat() - } - - const data = await fs.readFile(cpath, { encoding: null }) - - if (stat.size !== data.length) { - throw sizeError(stat.size, data.length) - } - - if (!ssri.checkData(data, sri)) { - throw integrityError(sri, cpath) - } - - return data -} - -const readPipeline = (cpath, size, sri, stream) => { - stream.push( - new fsm.ReadStream(cpath, { - size, - readSize: MAX_SINGLE_READ_SIZE, - }), - ssri.integrityStream({ - integrity: sri, - size, - }) - ) - return stream -} - -module.exports.stream = readStream -module.exports.readStream = readStream - -function readStream (cache, integrity, opts = {}) { - const { size } = opts - const stream = new Pipeline() - // Set all this up to run on the stream and then just return the stream - Promise.resolve().then(async () => { - const { stat, cpath, sri } = await withContentSri(cache, integrity, async (cpath, sri) => { - // get size - const stat = size ? { size } : await fs.stat(cpath) - return { stat, cpath, sri } - }) - - return readPipeline(cpath, stat.size, sri, stream) - }).catch(err => stream.emit('error', err)) - - return stream -} - -module.exports.copy = copy - -function copy (cache, integrity, dest) { - return withContentSri(cache, integrity, (cpath) => { - return fs.copyFile(cpath, dest) - }) -} - -module.exports.hasContent = hasContent - -async function hasContent (cache, integrity) { - if (!integrity) { - return false - } - - try { - return await withContentSri(cache, integrity, async (cpath, sri) => { - const stat = await fs.stat(cpath) - return { size: stat.size, sri, stat } - }) - } catch (err) { - if (err.code === 'ENOENT') { - return false - } - - if (err.code === 'EPERM') { - /* istanbul ignore else */ - if (process.platform !== 'win32') { - throw err - } else { - return false - } - } - } -} - -async function withContentSri (cache, integrity, fn) { - const sri = ssri.parse(integrity) - // If `integrity` has multiple entries, pick the first digest - // with available local data. - const algo = sri.pickAlgorithm() - const digests = sri[algo] - - if (digests.length <= 1) { - const cpath = contentPath(cache, digests[0]) - return fn(cpath, digests[0]) - } else { - // Can't use race here because a generic error can happen before - // a ENOENT error, and can happen before a valid result - const results = await Promise.all(digests.map(async (meta) => { - try { - return await withContentSri(cache, meta, fn) - } catch (err) { - if (err.code === 'ENOENT') { - return Object.assign( - new Error('No matching content found for ' + sri.toString()), - { code: 'ENOENT' } - ) - } - return err - } - })) - // Return the first non error if it is found - const result = results.find((r) => !(r instanceof Error)) - if (result) { - return result - } - - // Throw the No matching content found error - const enoentError = results.find((r) => r.code === 'ENOENT') - if (enoentError) { - throw enoentError - } - - // Throw generic error - throw results.find((r) => r instanceof Error) - } -} - -function sizeError (expected, found) { - /* eslint-disable-next-line max-len */ - const err = new Error(`Bad data size: expected inserted data to be ${expected} bytes, but got ${found} instead`) - err.expected = expected - err.found = found - err.code = 'EBADSIZE' - return err -} - -function integrityError (sri, path) { - const err = new Error(`Integrity verification failed for ${sri} (${path})`) - err.code = 'EINTEGRITY' - err.sri = sri - err.path = path - return err -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/rm.js b/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/rm.js deleted file mode 100644 index ce58d679e4cb25..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/rm.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict' - -const fs = require('fs/promises') -const contentPath = require('./path') -const { hasContent } = require('./read') - -module.exports = rm - -async function rm (cache, integrity) { - const content = await hasContent(cache, integrity) - // ~pretty~ sure we can't end up with a content lacking sri, but be safe - if (content && content.sri) { - await fs.rm(contentPath(cache, content.sri), { recursive: true, force: true }) - return true - } else { - return false - } -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/write.js b/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/write.js deleted file mode 100644 index e7187abca8788a..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/content/write.js +++ /dev/null @@ -1,206 +0,0 @@ -'use strict' - -const events = require('events') - -const contentPath = require('./path') -const fs = require('fs/promises') -const { moveFile } = require('@npmcli/fs') -const { Minipass } = require('minipass') -const Pipeline = require('minipass-pipeline') -const Flush = require('minipass-flush') -const path = require('path') -const ssri = require('ssri') -const uniqueFilename = require('unique-filename') -const fsm = require('fs-minipass') - -module.exports = write - -// Cache of move operations in process so we don't duplicate -const moveOperations = new Map() - -async function write (cache, data, opts = {}) { - const { algorithms, size, integrity } = opts - - if (typeof size === 'number' && data.length !== size) { - throw sizeError(size, data.length) - } - - const sri = ssri.fromData(data, algorithms ? { algorithms } : {}) - if (integrity && !ssri.checkData(data, integrity, opts)) { - throw checksumError(integrity, sri) - } - - for (const algo in sri) { - const tmp = await makeTmp(cache, opts) - const hash = sri[algo].toString() - try { - await fs.writeFile(tmp.target, data, { flag: 'wx' }) - await moveToDestination(tmp, cache, hash, opts) - } finally { - if (!tmp.moved) { - await fs.rm(tmp.target, { recursive: true, force: true }) - } - } - } - return { integrity: sri, size: data.length } -} - -module.exports.stream = writeStream - -// writes proxied to the 'inputStream' that is passed to the Promise -// 'end' is deferred until content is handled. -class CacacheWriteStream extends Flush { - constructor (cache, opts) { - super() - this.opts = opts - this.cache = cache - this.inputStream = new Minipass() - this.inputStream.on('error', er => this.emit('error', er)) - this.inputStream.on('drain', () => this.emit('drain')) - this.handleContentP = null - } - - write (chunk, encoding, cb) { - if (!this.handleContentP) { - this.handleContentP = handleContent( - this.inputStream, - this.cache, - this.opts - ) - this.handleContentP.catch(error => this.emit('error', error)) - } - return this.inputStream.write(chunk, encoding, cb) - } - - flush (cb) { - this.inputStream.end(() => { - if (!this.handleContentP) { - const e = new Error('Cache input stream was empty') - e.code = 'ENODATA' - // empty streams are probably emitting end right away. - // defer this one tick by rejecting a promise on it. - return Promise.reject(e).catch(cb) - } - // eslint-disable-next-line promise/catch-or-return - this.handleContentP.then( - (res) => { - res.integrity && this.emit('integrity', res.integrity) - // eslint-disable-next-line promise/always-return - res.size !== null && this.emit('size', res.size) - cb() - }, - (er) => cb(er) - ) - }) - } -} - -function writeStream (cache, opts = {}) { - return new CacacheWriteStream(cache, opts) -} - -async function handleContent (inputStream, cache, opts) { - const tmp = await makeTmp(cache, opts) - try { - const res = await pipeToTmp(inputStream, cache, tmp.target, opts) - await moveToDestination( - tmp, - cache, - res.integrity, - opts - ) - return res - } finally { - if (!tmp.moved) { - await fs.rm(tmp.target, { recursive: true, force: true }) - } - } -} - -async function pipeToTmp (inputStream, cache, tmpTarget, opts) { - const outStream = new fsm.WriteStream(tmpTarget, { - flags: 'wx', - }) - - if (opts.integrityEmitter) { - // we need to create these all simultaneously since they can fire in any order - const [integrity, size] = await Promise.all([ - events.once(opts.integrityEmitter, 'integrity').then(res => res[0]), - events.once(opts.integrityEmitter, 'size').then(res => res[0]), - new Pipeline(inputStream, outStream).promise(), - ]) - return { integrity, size } - } - - let integrity - let size - const hashStream = ssri.integrityStream({ - integrity: opts.integrity, - algorithms: opts.algorithms, - size: opts.size, - }) - hashStream.on('integrity', i => { - integrity = i - }) - hashStream.on('size', s => { - size = s - }) - - const pipeline = new Pipeline(inputStream, hashStream, outStream) - await pipeline.promise() - return { integrity, size } -} - -async function makeTmp (cache, opts) { - const tmpTarget = uniqueFilename(path.join(cache, 'tmp'), opts.tmpPrefix) - await fs.mkdir(path.dirname(tmpTarget), { recursive: true }) - return { - target: tmpTarget, - moved: false, - } -} - -async function moveToDestination (tmp, cache, sri) { - const destination = contentPath(cache, sri) - const destDir = path.dirname(destination) - if (moveOperations.has(destination)) { - return moveOperations.get(destination) - } - moveOperations.set( - destination, - fs.mkdir(destDir, { recursive: true }) - .then(async () => { - await moveFile(tmp.target, destination, { overwrite: false }) - tmp.moved = true - return tmp.moved - }) - .catch(err => { - if (!err.message.startsWith('The destination file exists')) { - throw Object.assign(err, { code: 'EEXIST' }) - } - }).finally(() => { - moveOperations.delete(destination) - }) - - ) - return moveOperations.get(destination) -} - -function sizeError (expected, found) { - /* eslint-disable-next-line max-len */ - const err = new Error(`Bad data size: expected inserted data to be ${expected} bytes, but got ${found} instead`) - err.expected = expected - err.found = found - err.code = 'EBADSIZE' - return err -} - -function checksumError (expected, found) { - const err = new Error(`Integrity check failed: - Wanted: ${expected} - Found: ${found}`) - err.code = 'EINTEGRITY' - err.expected = expected - err.found = found - return err -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/entry-index.js b/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/entry-index.js deleted file mode 100644 index 0e09b10818d097..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/entry-index.js +++ /dev/null @@ -1,336 +0,0 @@ -'use strict' - -const crypto = require('crypto') -const { - appendFile, - mkdir, - readFile, - readdir, - rm, - writeFile, -} = require('fs/promises') -const { Minipass } = require('minipass') -const path = require('path') -const ssri = require('ssri') -const uniqueFilename = require('unique-filename') - -const contentPath = require('./content/path') -const hashToSegments = require('./util/hash-to-segments') -const indexV = require('../package.json')['cache-version'].index -const { moveFile } = require('@npmcli/fs') - -const lsStreamConcurrency = 5 - -module.exports.NotFoundError = class NotFoundError extends Error { - constructor (cache, key) { - super(`No cache entry for ${key} found in ${cache}`) - this.code = 'ENOENT' - this.cache = cache - this.key = key - } -} - -module.exports.compact = compact - -async function compact (cache, key, matchFn, opts = {}) { - const bucket = bucketPath(cache, key) - const entries = await bucketEntries(bucket) - const newEntries = [] - // we loop backwards because the bottom-most result is the newest - // since we add new entries with appendFile - for (let i = entries.length - 1; i >= 0; --i) { - const entry = entries[i] - // a null integrity could mean either a delete was appended - // or the user has simply stored an index that does not map - // to any content. we determine if the user wants to keep the - // null integrity based on the validateEntry function passed in options. - // if the integrity is null and no validateEntry is provided, we break - // as we consider the null integrity to be a deletion of everything - // that came before it. - if (entry.integrity === null && !opts.validateEntry) { - break - } - - // if this entry is valid, and it is either the first entry or - // the newEntries array doesn't already include an entry that - // matches this one based on the provided matchFn, then we add - // it to the beginning of our list - if ((!opts.validateEntry || opts.validateEntry(entry) === true) && - (newEntries.length === 0 || - !newEntries.find((oldEntry) => matchFn(oldEntry, entry)))) { - newEntries.unshift(entry) - } - } - - const newIndex = '\n' + newEntries.map((entry) => { - const stringified = JSON.stringify(entry) - const hash = hashEntry(stringified) - return `${hash}\t${stringified}` - }).join('\n') - - const setup = async () => { - const target = uniqueFilename(path.join(cache, 'tmp'), opts.tmpPrefix) - await mkdir(path.dirname(target), { recursive: true }) - return { - target, - moved: false, - } - } - - const teardown = async (tmp) => { - if (!tmp.moved) { - return rm(tmp.target, { recursive: true, force: true }) - } - } - - const write = async (tmp) => { - await writeFile(tmp.target, newIndex, { flag: 'wx' }) - await mkdir(path.dirname(bucket), { recursive: true }) - // we use @npmcli/move-file directly here because we - // want to overwrite the existing file - await moveFile(tmp.target, bucket) - tmp.moved = true - } - - // write the file atomically - const tmp = await setup() - try { - await write(tmp) - } finally { - await teardown(tmp) - } - - // we reverse the list we generated such that the newest - // entries come first in order to make looping through them easier - // the true passed to formatEntry tells it to keep null - // integrity values, if they made it this far it's because - // validateEntry returned true, and as such we should return it - return newEntries.reverse().map((entry) => formatEntry(cache, entry, true)) -} - -module.exports.insert = insert - -async function insert (cache, key, integrity, opts = {}) { - const { metadata, size, time } = opts - const bucket = bucketPath(cache, key) - const entry = { - key, - integrity: integrity && ssri.stringify(integrity), - time: time || Date.now(), - size, - metadata, - } - try { - await mkdir(path.dirname(bucket), { recursive: true }) - const stringified = JSON.stringify(entry) - // NOTE - Cleverness ahoy! - // - // This works because it's tremendously unlikely for an entry to corrupt - // another while still preserving the string length of the JSON in - // question. So, we just slap the length in there and verify it on read. - // - // Thanks to @isaacs for the whiteboarding session that ended up with - // this. - await appendFile(bucket, `\n${hashEntry(stringified)}\t${stringified}`) - } catch (err) { - if (err.code === 'ENOENT') { - return undefined - } - - throw err - } - return formatEntry(cache, entry) -} - -module.exports.find = find - -async function find (cache, key) { - const bucket = bucketPath(cache, key) - try { - const entries = await bucketEntries(bucket) - return entries.reduce((latest, next) => { - if (next && next.key === key) { - return formatEntry(cache, next) - } else { - return latest - } - }, null) - } catch (err) { - if (err.code === 'ENOENT') { - return null - } else { - throw err - } - } -} - -module.exports.delete = del - -function del (cache, key, opts = {}) { - if (!opts.removeFully) { - return insert(cache, key, null, opts) - } - - const bucket = bucketPath(cache, key) - return rm(bucket, { recursive: true, force: true }) -} - -module.exports.lsStream = lsStream - -function lsStream (cache) { - const indexDir = bucketDir(cache) - const stream = new Minipass({ objectMode: true }) - - // Set all this up to run on the stream and then just return the stream - Promise.resolve().then(async () => { - const { default: pMap } = await import('p-map') - const buckets = await readdirOrEmpty(indexDir) - await pMap(buckets, async (bucket) => { - const bucketPath = path.join(indexDir, bucket) - const subbuckets = await readdirOrEmpty(bucketPath) - await pMap(subbuckets, async (subbucket) => { - const subbucketPath = path.join(bucketPath, subbucket) - - // "/cachename//./*" - const subbucketEntries = await readdirOrEmpty(subbucketPath) - await pMap(subbucketEntries, async (entry) => { - const entryPath = path.join(subbucketPath, entry) - try { - const entries = await bucketEntries(entryPath) - // using a Map here prevents duplicate keys from showing up - // twice, I guess? - const reduced = entries.reduce((acc, entry) => { - acc.set(entry.key, entry) - return acc - }, new Map()) - // reduced is a map of key => entry - for (const entry of reduced.values()) { - const formatted = formatEntry(cache, entry) - if (formatted) { - stream.write(formatted) - } - } - } catch (err) { - if (err.code === 'ENOENT') { - return undefined - } - throw err - } - }, - { concurrency: lsStreamConcurrency }) - }, - { concurrency: lsStreamConcurrency }) - }, - { concurrency: lsStreamConcurrency }) - stream.end() - return stream - }).catch(err => stream.emit('error', err)) - - return stream -} - -module.exports.ls = ls - -async function ls (cache) { - const entries = await lsStream(cache).collect() - return entries.reduce((acc, xs) => { - acc[xs.key] = xs - return acc - }, {}) -} - -module.exports.bucketEntries = bucketEntries - -async function bucketEntries (bucket, filter) { - const data = await readFile(bucket, 'utf8') - return _bucketEntries(data, filter) -} - -function _bucketEntries (data) { - const entries = [] - data.split('\n').forEach((entry) => { - if (!entry) { - return - } - - const pieces = entry.split('\t') - if (!pieces[1] || hashEntry(pieces[1]) !== pieces[0]) { - // Hash is no good! Corruption or malice? Doesn't matter! - // EJECT EJECT - return - } - let obj - try { - obj = JSON.parse(pieces[1]) - } catch (_) { - // eslint-ignore-next-line no-empty-block - } - // coverage disabled here, no need to test with an entry that parses to something falsey - // istanbul ignore else - if (obj) { - entries.push(obj) - } - }) - return entries -} - -module.exports.bucketDir = bucketDir - -function bucketDir (cache) { - return path.join(cache, `index-v${indexV}`) -} - -module.exports.bucketPath = bucketPath - -function bucketPath (cache, key) { - const hashed = hashKey(key) - return path.join.apply( - path, - [bucketDir(cache)].concat(hashToSegments(hashed)) - ) -} - -module.exports.hashKey = hashKey - -function hashKey (key) { - return hash(key, 'sha256') -} - -module.exports.hashEntry = hashEntry - -function hashEntry (str) { - return hash(str, 'sha1') -} - -function hash (str, digest) { - return crypto - .createHash(digest) - .update(str) - .digest('hex') -} - -function formatEntry (cache, entry, keepAll) { - // Treat null digests as deletions. They'll shadow any previous entries. - if (!entry.integrity && !keepAll) { - return null - } - - return { - key: entry.key, - integrity: entry.integrity, - path: entry.integrity ? contentPath(cache, entry.integrity) : undefined, - size: entry.size, - time: entry.time, - metadata: entry.metadata, - } -} - -function readdirOrEmpty (dir) { - return readdir(dir).catch((err) => { - if (err.code === 'ENOENT' || err.code === 'ENOTDIR') { - return [] - } - - throw err - }) -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/get.js b/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/get.js deleted file mode 100644 index 80ec206c7ecaaa..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/get.js +++ /dev/null @@ -1,170 +0,0 @@ -'use strict' - -const Collect = require('minipass-collect') -const { Minipass } = require('minipass') -const Pipeline = require('minipass-pipeline') - -const index = require('./entry-index') -const memo = require('./memoization') -const read = require('./content/read') - -async function getData (cache, key, opts = {}) { - const { integrity, memoize, size } = opts - const memoized = memo.get(cache, key, opts) - if (memoized && memoize !== false) { - return { - metadata: memoized.entry.metadata, - data: memoized.data, - integrity: memoized.entry.integrity, - size: memoized.entry.size, - } - } - - const entry = await index.find(cache, key, opts) - if (!entry) { - throw new index.NotFoundError(cache, key) - } - const data = await read(cache, entry.integrity, { integrity, size }) - if (memoize) { - memo.put(cache, entry, data, opts) - } - - return { - data, - metadata: entry.metadata, - size: entry.size, - integrity: entry.integrity, - } -} -module.exports = getData - -async function getDataByDigest (cache, key, opts = {}) { - const { integrity, memoize, size } = opts - const memoized = memo.get.byDigest(cache, key, opts) - if (memoized && memoize !== false) { - return memoized - } - - const res = await read(cache, key, { integrity, size }) - if (memoize) { - memo.put.byDigest(cache, key, res, opts) - } - return res -} -module.exports.byDigest = getDataByDigest - -const getMemoizedStream = (memoized) => { - const stream = new Minipass() - stream.on('newListener', function (ev, cb) { - ev === 'metadata' && cb(memoized.entry.metadata) - ev === 'integrity' && cb(memoized.entry.integrity) - ev === 'size' && cb(memoized.entry.size) - }) - stream.end(memoized.data) - return stream -} - -function getStream (cache, key, opts = {}) { - const { memoize, size } = opts - const memoized = memo.get(cache, key, opts) - if (memoized && memoize !== false) { - return getMemoizedStream(memoized) - } - - const stream = new Pipeline() - // Set all this up to run on the stream and then just return the stream - Promise.resolve().then(async () => { - const entry = await index.find(cache, key) - if (!entry) { - throw new index.NotFoundError(cache, key) - } - - stream.emit('metadata', entry.metadata) - stream.emit('integrity', entry.integrity) - stream.emit('size', entry.size) - stream.on('newListener', function (ev, cb) { - ev === 'metadata' && cb(entry.metadata) - ev === 'integrity' && cb(entry.integrity) - ev === 'size' && cb(entry.size) - }) - - const src = read.readStream( - cache, - entry.integrity, - { ...opts, size: typeof size !== 'number' ? entry.size : size } - ) - - if (memoize) { - const memoStream = new Collect.PassThrough() - memoStream.on('collect', data => memo.put(cache, entry, data, opts)) - stream.unshift(memoStream) - } - stream.unshift(src) - return stream - }).catch((err) => stream.emit('error', err)) - - return stream -} - -module.exports.stream = getStream - -function getStreamDigest (cache, integrity, opts = {}) { - const { memoize } = opts - const memoized = memo.get.byDigest(cache, integrity, opts) - if (memoized && memoize !== false) { - const stream = new Minipass() - stream.end(memoized) - return stream - } else { - const stream = read.readStream(cache, integrity, opts) - if (!memoize) { - return stream - } - - const memoStream = new Collect.PassThrough() - memoStream.on('collect', data => memo.put.byDigest( - cache, - integrity, - data, - opts - )) - return new Pipeline(stream, memoStream) - } -} - -module.exports.stream.byDigest = getStreamDigest - -function info (cache, key, opts = {}) { - const { memoize } = opts - const memoized = memo.get(cache, key, opts) - if (memoized && memoize !== false) { - return Promise.resolve(memoized.entry) - } else { - return index.find(cache, key) - } -} -module.exports.info = info - -async function copy (cache, key, dest, opts = {}) { - const entry = await index.find(cache, key, opts) - if (!entry) { - throw new index.NotFoundError(cache, key) - } - await read.copy(cache, entry.integrity, dest, opts) - return { - metadata: entry.metadata, - size: entry.size, - integrity: entry.integrity, - } -} - -module.exports.copy = copy - -async function copyByDigest (cache, key, dest, opts = {}) { - await read.copy(cache, key, dest, opts) - return key -} - -module.exports.copy.byDigest = copyByDigest - -module.exports.hasContent = read.hasContent diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/index.js b/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/index.js deleted file mode 100644 index c9b0da5f3a271b..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/index.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict' - -const get = require('./get.js') -const put = require('./put.js') -const rm = require('./rm.js') -const verify = require('./verify.js') -const { clearMemoized } = require('./memoization.js') -const tmp = require('./util/tmp.js') -const index = require('./entry-index.js') - -module.exports.index = {} -module.exports.index.compact = index.compact -module.exports.index.insert = index.insert - -module.exports.ls = index.ls -module.exports.ls.stream = index.lsStream - -module.exports.get = get -module.exports.get.byDigest = get.byDigest -module.exports.get.stream = get.stream -module.exports.get.stream.byDigest = get.stream.byDigest -module.exports.get.copy = get.copy -module.exports.get.copy.byDigest = get.copy.byDigest -module.exports.get.info = get.info -module.exports.get.hasContent = get.hasContent - -module.exports.put = put -module.exports.put.stream = put.stream - -module.exports.rm = rm.entry -module.exports.rm.all = rm.all -module.exports.rm.entry = module.exports.rm -module.exports.rm.content = rm.content - -module.exports.clearMemoized = clearMemoized - -module.exports.tmp = {} -module.exports.tmp.mkdir = tmp.mkdir -module.exports.tmp.withTmp = tmp.withTmp - -module.exports.verify = verify -module.exports.verify.lastRun = verify.lastRun diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/memoization.js b/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/memoization.js deleted file mode 100644 index 2ecc60912e4563..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/memoization.js +++ /dev/null @@ -1,72 +0,0 @@ -'use strict' - -const { LRUCache } = require('lru-cache') - -const MEMOIZED = new LRUCache({ - max: 500, - maxSize: 50 * 1024 * 1024, // 50MB - ttl: 3 * 60 * 1000, // 3 minutes - sizeCalculation: (entry, key) => key.startsWith('key:') ? entry.data.length : entry.length, -}) - -module.exports.clearMemoized = clearMemoized - -function clearMemoized () { - const old = {} - MEMOIZED.forEach((v, k) => { - old[k] = v - }) - MEMOIZED.clear() - return old -} - -module.exports.put = put - -function put (cache, entry, data, opts) { - pickMem(opts).set(`key:${cache}:${entry.key}`, { entry, data }) - putDigest(cache, entry.integrity, data, opts) -} - -module.exports.put.byDigest = putDigest - -function putDigest (cache, integrity, data, opts) { - pickMem(opts).set(`digest:${cache}:${integrity}`, data) -} - -module.exports.get = get - -function get (cache, key, opts) { - return pickMem(opts).get(`key:${cache}:${key}`) -} - -module.exports.get.byDigest = getDigest - -function getDigest (cache, integrity, opts) { - return pickMem(opts).get(`digest:${cache}:${integrity}`) -} - -class ObjProxy { - constructor (obj) { - this.obj = obj - } - - get (key) { - return this.obj[key] - } - - set (key, val) { - this.obj[key] = val - } -} - -function pickMem (opts) { - if (!opts || !opts.memoize) { - return MEMOIZED - } else if (opts.memoize.get && opts.memoize.set) { - return opts.memoize - } else if (typeof opts.memoize === 'object') { - return new ObjProxy(opts.memoize) - } else { - return MEMOIZED - } -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/put.js b/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/put.js deleted file mode 100644 index 9fc932d5f6dec5..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/put.js +++ /dev/null @@ -1,80 +0,0 @@ -'use strict' - -const index = require('./entry-index') -const memo = require('./memoization') -const write = require('./content/write') -const Flush = require('minipass-flush') -const { PassThrough } = require('minipass-collect') -const Pipeline = require('minipass-pipeline') - -const putOpts = (opts) => ({ - algorithms: ['sha512'], - ...opts, -}) - -module.exports = putData - -async function putData (cache, key, data, opts = {}) { - const { memoize } = opts - opts = putOpts(opts) - const res = await write(cache, data, opts) - const entry = await index.insert(cache, key, res.integrity, { ...opts, size: res.size }) - if (memoize) { - memo.put(cache, entry, data, opts) - } - - return res.integrity -} - -module.exports.stream = putStream - -function putStream (cache, key, opts = {}) { - const { memoize } = opts - opts = putOpts(opts) - let integrity - let size - let error - - let memoData - const pipeline = new Pipeline() - // first item in the pipeline is the memoizer, because we need - // that to end first and get the collected data. - if (memoize) { - const memoizer = new PassThrough().on('collect', data => { - memoData = data - }) - pipeline.push(memoizer) - } - - // contentStream is a write-only, not a passthrough - // no data comes out of it. - const contentStream = write.stream(cache, opts) - .on('integrity', (int) => { - integrity = int - }) - .on('size', (s) => { - size = s - }) - .on('error', (err) => { - error = err - }) - - pipeline.push(contentStream) - - // last but not least, we write the index and emit hash and size, - // and memoize if we're doing that - pipeline.push(new Flush({ - async flush () { - if (!error) { - const entry = await index.insert(cache, key, integrity, { ...opts, size }) - if (memoize && memoData) { - memo.put(cache, entry, memoData, opts) - } - pipeline.emit('integrity', integrity) - pipeline.emit('size', size) - } - }, - })) - - return pipeline -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/rm.js b/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/rm.js deleted file mode 100644 index a94760c7cf2430..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/rm.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict' - -const { rm } = require('fs/promises') -const glob = require('./util/glob.js') -const index = require('./entry-index') -const memo = require('./memoization') -const path = require('path') -const rmContent = require('./content/rm') - -module.exports = entry -module.exports.entry = entry - -function entry (cache, key, opts) { - memo.clearMemoized() - return index.delete(cache, key, opts) -} - -module.exports.content = content - -function content (cache, integrity) { - memo.clearMemoized() - return rmContent(cache, integrity) -} - -module.exports.all = all - -async function all (cache) { - memo.clearMemoized() - const paths = await glob(path.join(cache, '*(content-*|index-*)'), { silent: true, nosort: true }) - return Promise.all(paths.map((p) => rm(p, { recursive: true, force: true }))) -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/util/glob.js b/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/util/glob.js deleted file mode 100644 index 8500c1c16a429f..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/util/glob.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -const { glob } = require('glob') -const path = require('path') - -const globify = (pattern) => pattern.split(path.win32.sep).join(path.posix.sep) -module.exports = (path, options) => glob(globify(path), options) diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/util/hash-to-segments.js b/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/util/hash-to-segments.js deleted file mode 100644 index 445599b5038088..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/util/hash-to-segments.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict' - -module.exports = hashToSegments - -function hashToSegments (hash) { - return [hash.slice(0, 2), hash.slice(2, 4), hash.slice(4)] -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/util/tmp.js b/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/util/tmp.js deleted file mode 100644 index 0bf5302136ebeb..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/util/tmp.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict' - -const { withTempDir } = require('@npmcli/fs') -const fs = require('fs/promises') -const path = require('path') - -module.exports.mkdir = mktmpdir - -async function mktmpdir (cache, opts = {}) { - const { tmpPrefix } = opts - const tmpDir = path.join(cache, 'tmp') - await fs.mkdir(tmpDir, { recursive: true, owner: 'inherit' }) - // do not use path.join(), it drops the trailing / if tmpPrefix is unset - const target = `${tmpDir}${path.sep}${tmpPrefix || ''}` - return fs.mkdtemp(target, { owner: 'inherit' }) -} - -module.exports.withTmp = withTmp - -function withTmp (cache, opts, cb) { - if (!cb) { - cb = opts - opts = {} - } - return withTempDir(path.join(cache, 'tmp'), cb, opts) -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/verify.js b/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/verify.js deleted file mode 100644 index dcff3aa73f3173..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/lib/verify.js +++ /dev/null @@ -1,258 +0,0 @@ -'use strict' - -const { - mkdir, - readFile, - rm, - stat, - truncate, - writeFile, -} = require('fs/promises') -const contentPath = require('./content/path') -const fsm = require('fs-minipass') -const glob = require('./util/glob.js') -const index = require('./entry-index') -const path = require('path') -const ssri = require('ssri') - -const hasOwnProperty = (obj, key) => - Object.prototype.hasOwnProperty.call(obj, key) - -const verifyOpts = (opts) => ({ - concurrency: 20, - log: { silly () {} }, - ...opts, -}) - -module.exports = verify - -async function verify (cache, opts) { - opts = verifyOpts(opts) - opts.log.silly('verify', 'verifying cache at', cache) - - const steps = [ - markStartTime, - fixPerms, - garbageCollect, - rebuildIndex, - cleanTmp, - writeVerifile, - markEndTime, - ] - - const stats = {} - for (const step of steps) { - const label = step.name - const start = new Date() - const s = await step(cache, opts) - if (s) { - Object.keys(s).forEach((k) => { - stats[k] = s[k] - }) - } - const end = new Date() - if (!stats.runTime) { - stats.runTime = {} - } - stats.runTime[label] = end - start - } - stats.runTime.total = stats.endTime - stats.startTime - opts.log.silly( - 'verify', - 'verification finished for', - cache, - 'in', - `${stats.runTime.total}ms` - ) - return stats -} - -async function markStartTime () { - return { startTime: new Date() } -} - -async function markEndTime () { - return { endTime: new Date() } -} - -async function fixPerms (cache, opts) { - opts.log.silly('verify', 'fixing cache permissions') - await mkdir(cache, { recursive: true }) - return null -} - -// Implements a naive mark-and-sweep tracing garbage collector. -// -// The algorithm is basically as follows: -// 1. Read (and filter) all index entries ("pointers") -// 2. Mark each integrity value as "live" -// 3. Read entire filesystem tree in `content-vX/` dir -// 4. If content is live, verify its checksum and delete it if it fails -// 5. If content is not marked as live, rm it. -// -async function garbageCollect (cache, opts) { - opts.log.silly('verify', 'garbage collecting content') - const { default: pMap } = await import('p-map') - const indexStream = index.lsStream(cache) - const liveContent = new Set() - indexStream.on('data', (entry) => { - if (opts.filter && !opts.filter(entry)) { - return - } - - // integrity is stringified, re-parse it so we can get each hash - const integrity = ssri.parse(entry.integrity) - for (const algo in integrity) { - liveContent.add(integrity[algo].toString()) - } - }) - await new Promise((resolve, reject) => { - indexStream.on('end', resolve).on('error', reject) - }) - const contentDir = contentPath.contentDir(cache) - const files = await glob(path.join(contentDir, '**'), { - follow: false, - nodir: true, - nosort: true, - }) - const stats = { - verifiedContent: 0, - reclaimedCount: 0, - reclaimedSize: 0, - badContentCount: 0, - keptSize: 0, - } - await pMap( - files, - async (f) => { - const split = f.split(/[/\\]/) - const digest = split.slice(split.length - 3).join('') - const algo = split[split.length - 4] - const integrity = ssri.fromHex(digest, algo) - if (liveContent.has(integrity.toString())) { - const info = await verifyContent(f, integrity) - if (!info.valid) { - stats.reclaimedCount++ - stats.badContentCount++ - stats.reclaimedSize += info.size - } else { - stats.verifiedContent++ - stats.keptSize += info.size - } - } else { - // No entries refer to this content. We can delete. - stats.reclaimedCount++ - const s = await stat(f) - await rm(f, { recursive: true, force: true }) - stats.reclaimedSize += s.size - } - return stats - }, - { concurrency: opts.concurrency } - ) - return stats -} - -async function verifyContent (filepath, sri) { - const contentInfo = {} - try { - const { size } = await stat(filepath) - contentInfo.size = size - contentInfo.valid = true - await ssri.checkStream(new fsm.ReadStream(filepath), sri) - } catch (err) { - if (err.code === 'ENOENT') { - return { size: 0, valid: false } - } - if (err.code !== 'EINTEGRITY') { - throw err - } - - await rm(filepath, { recursive: true, force: true }) - contentInfo.valid = false - } - return contentInfo -} - -async function rebuildIndex (cache, opts) { - opts.log.silly('verify', 'rebuilding index') - const { default: pMap } = await import('p-map') - const entries = await index.ls(cache) - const stats = { - missingContent: 0, - rejectedEntries: 0, - totalEntries: 0, - } - const buckets = {} - for (const k in entries) { - /* istanbul ignore else */ - if (hasOwnProperty(entries, k)) { - const hashed = index.hashKey(k) - const entry = entries[k] - const excluded = opts.filter && !opts.filter(entry) - excluded && stats.rejectedEntries++ - if (buckets[hashed] && !excluded) { - buckets[hashed].push(entry) - } else if (buckets[hashed] && excluded) { - // skip - } else if (excluded) { - buckets[hashed] = [] - buckets[hashed]._path = index.bucketPath(cache, k) - } else { - buckets[hashed] = [entry] - buckets[hashed]._path = index.bucketPath(cache, k) - } - } - } - await pMap( - Object.keys(buckets), - (key) => { - return rebuildBucket(cache, buckets[key], stats, opts) - }, - { concurrency: opts.concurrency } - ) - return stats -} - -async function rebuildBucket (cache, bucket, stats) { - await truncate(bucket._path) - // This needs to be serialized because cacache explicitly - // lets very racy bucket conflicts clobber each other. - for (const entry of bucket) { - const content = contentPath(cache, entry.integrity) - try { - await stat(content) - await index.insert(cache, entry.key, entry.integrity, { - metadata: entry.metadata, - size: entry.size, - time: entry.time, - }) - stats.totalEntries++ - } catch (err) { - if (err.code === 'ENOENT') { - stats.rejectedEntries++ - stats.missingContent++ - } else { - throw err - } - } - } -} - -function cleanTmp (cache, opts) { - opts.log.silly('verify', 'cleaning tmp directory') - return rm(path.join(cache, 'tmp'), { recursive: true, force: true }) -} - -async function writeVerifile (cache, opts) { - const verifile = path.join(cache, '_lastverified') - opts.log.silly('verify', 'writing verifile to ' + verifile) - return writeFile(verifile, `${Date.now()}`) -} - -module.exports.lastRun = lastRun - -async function lastRun (cache) { - const data = await readFile(path.join(cache, '_lastverified'), { encoding: 'utf8' }) - return new Date(+data) -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/cacache/package.json b/deps/npm/node_modules/node-gyp/node_modules/cacache/package.json deleted file mode 100644 index ebb0f3f8ed4108..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/cacache/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "name": "cacache", - "version": "19.0.1", - "cache-version": { - "content": "2", - "index": "5" - }, - "description": "Fast, fault-tolerant, cross-platform, disk-based, data-agnostic, content-addressable cache.", - "main": "lib/index.js", - "files": [ - "bin/", - "lib/" - ], - "scripts": { - "test": "tap", - "snap": "tap", - "coverage": "tap", - "test-docker": "docker run -it --rm --name pacotest -v \"$PWD\":/tmp -w /tmp node:latest npm test", - "lint": "npm run eslint", - "npmclilint": "npmcli-lint", - "lintfix": "npm run eslint -- --fix", - "postsnap": "npm run lintfix --", - "postlint": "template-oss-check", - "posttest": "npm run lint", - "template-oss-apply": "template-oss-apply --force", - "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\"" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/npm/cacache.git" - }, - "keywords": [ - "cache", - "caching", - "content-addressable", - "sri", - "sri hash", - "subresource integrity", - "cache", - "storage", - "store", - "file store", - "filesystem", - "disk cache", - "disk storage" - ], - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^4.0.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^7.0.2", - "ssri": "^12.0.0", - "tar": "^7.4.3", - "unique-filename": "^4.0.0" - }, - "devDependencies": { - "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.23.3", - "tap": "^16.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - }, - "templateOSS": { - "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "windowsCI": false, - "version": "4.23.3", - "publish": "true" - }, - "author": "GitHub Inc.", - "tap": { - "nyc-arg": [ - "--exclude", - "tap-snapshots/**" - ] - } -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/README.md b/deps/npm/node_modules/node-gyp/node_modules/glob/README.md deleted file mode 100644 index 023cd7796820e0..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/README.md +++ /dev/null @@ -1,1265 +0,0 @@ -# Glob - -Match files using the patterns the shell uses. - -The most correct and second fastest glob implementation in -JavaScript. (See **Comparison to Other JavaScript Glob -Implementations** at the bottom of this readme.) - -![a fun cartoon logo made of glob characters](https://github.com/isaacs/node-glob/raw/main/logo/glob.png) - -## Usage - -Install with npm - -``` -npm i glob -``` - -**Note** the npm package name is _not_ `node-glob` that's a -different thing that was abandoned years ago. Just `glob`. - -```js -// load using import -import { glob, globSync, globStream, globStreamSync, Glob } from 'glob' -// or using commonjs, that's fine, too -const { - glob, - globSync, - globStream, - globStreamSync, - Glob, -} = require('glob') - -// the main glob() and globSync() resolve/return array of filenames - -// all js files, but don't look in node_modules -const jsfiles = await glob('**/*.js', { ignore: 'node_modules/**' }) - -// pass in a signal to cancel the glob walk -const stopAfter100ms = await glob('**/*.css', { - signal: AbortSignal.timeout(100), -}) - -// multiple patterns supported as well -const images = await glob(['css/*.{png,jpeg}', 'public/*.{png,jpeg}']) - -// but of course you can do that with the glob pattern also -// the sync function is the same, just returns a string[] instead -// of Promise -const imagesAlt = globSync('{css,public}/*.{png,jpeg}') - -// you can also stream them, this is a Minipass stream -const filesStream = globStream(['**/*.dat', 'logs/**/*.log']) - -// construct a Glob object if you wanna do it that way, which -// allows for much faster walks if you have to look in the same -// folder multiple times. -const g = new Glob('**/foo', {}) -// glob objects are async iterators, can also do globIterate() or -// g.iterate(), same deal -for await (const file of g) { - console.log('found a foo file:', file) -} -// pass a glob as the glob options to reuse its settings and caches -const g2 = new Glob('**/bar', g) -// sync iteration works as well -for (const file of g2) { - console.log('found a bar file:', file) -} - -// you can also pass withFileTypes: true to get Path objects -// these are like a Dirent, but with some more added powers -// check out http://npm.im/path-scurry for more info on their API -const g3 = new Glob('**/baz/**', { withFileTypes: true }) -g3.stream().on('data', path => { - console.log( - 'got a path object', - path.fullpath(), - path.isDirectory(), - path.readdirSync().map(e => e.name), - ) -}) - -// if you use stat:true and withFileTypes, you can sort results -// by things like modified time, filter by permission mode, etc. -// All Stats fields will be available in that case. Slightly -// slower, though. -// For example: -const results = await glob('**', { stat: true, withFileTypes: true }) - -const timeSortedFiles = results - .sort((a, b) => a.mtimeMs - b.mtimeMs) - .map(path => path.fullpath()) - -const groupReadableFiles = results - .filter(path => path.mode & 0o040) - .map(path => path.fullpath()) - -// custom ignores can be done like this, for example by saying -// you'll ignore all markdown files, and all folders named 'docs' -const customIgnoreResults = await glob('**', { - ignore: { - ignored: p => /\.md$/.test(p.name), - childrenIgnored: p => p.isNamed('docs'), - }, -}) - -// another fun use case, only return files with the same name as -// their parent folder, plus either `.ts` or `.js` -const folderNamedModules = await glob('**/*.{ts,js}', { - ignore: { - ignored: p => { - const pp = p.parent - return !(p.isNamed(pp.name + '.ts') || p.isNamed(pp.name + '.js')) - }, - }, -}) - -// find all files edited in the last hour, to do this, we ignore -// all of them that are more than an hour old -const newFiles = await glob('**', { - // need stat so we have mtime - stat: true, - // only want the files, not the dirs - nodir: true, - ignore: { - ignored: p => { - return new Date() - p.mtime > 60 * 60 * 1000 - }, - // could add similar childrenIgnored here as well, but - // directory mtime is inconsistent across platforms, so - // probably better not to, unless you know the system - // tracks this reliably. - }, -}) -``` - -**Note** Glob patterns should always use `/` as a path separator, -even on Windows systems, as `\` is used to escape glob -characters. If you wish to use `\` as a path separator _instead -of_ using it as an escape character on Windows platforms, you may -set `windowsPathsNoEscape:true` in the options. In this mode, -special glob characters cannot be escaped, making it impossible -to match a literal `*` `?` and so on in filenames. - -## Command Line Interface - -``` -$ glob -h - -Usage: - glob [options] [ [ ...]] - -Expand the positional glob expression arguments into any matching file system -paths found. - - -c --cmd= - Run the command provided, passing the glob expression - matches as arguments. - - -A --all By default, the glob cli command will not expand any - arguments that are an exact match to a file on disk. - - This prevents double-expanding, in case the shell - expands an argument whose filename is a glob - expression. - - For example, if 'app/*.ts' would match 'app/[id].ts', - then on Windows powershell or cmd.exe, 'glob app/*.ts' - will expand to 'app/[id].ts', as expected. However, in - posix shells such as bash or zsh, the shell will first - expand 'app/*.ts' to a list of filenames. Then glob - will look for a file matching 'app/[id].ts' (ie, - 'app/i.ts' or 'app/d.ts'), which is unexpected. - - Setting '--all' prevents this behavior, causing glob to - treat ALL patterns as glob expressions to be expanded, - even if they are an exact match to a file on disk. - - When setting this option, be sure to enquote arguments - so that the shell will not expand them prior to passing - them to the glob command process. - - -a --absolute Expand to absolute paths - -d --dot-relative Prepend './' on relative matches - -m --mark Append a / on any directories matched - -x --posix Always resolve to posix style paths, using '/' as the - directory separator, even on Windows. Drive letter - absolute matches on Windows will be expanded to their - full resolved UNC maths, eg instead of 'C:\foo\bar', it - will expand to '//?/C:/foo/bar'. - - -f --follow Follow symlinked directories when expanding '**' - -R --realpath Call 'fs.realpath' on all of the results. In the case - of an entry that cannot be resolved, the entry is - omitted. This incurs a slight performance penalty, of - course, because of the added system calls. - - -s --stat Call 'fs.lstat' on all entries, whether required or not - to determine if it's a valid match. - - -b --match-base Perform a basename-only match if the pattern does not - contain any slash characters. That is, '*.js' would be - treated as equivalent to '**/*.js', matching js files - in all directories. - - --dot Allow patterns to match files/directories that start - with '.', even if the pattern does not start with '.' - - --nobrace Do not expand {...} patterns - --nocase Perform a case-insensitive match. This defaults to - 'true' on macOS and Windows platforms, and false on all - others. - - Note: 'nocase' should only be explicitly set when it is - known that the filesystem's case sensitivity differs - from the platform default. If set 'true' on - case-insensitive file systems, then the walk may return - more or less results than expected. - - --nodir Do not match directories, only files. - - Note: to *only* match directories, append a '/' at the - end of the pattern. - - --noext Do not expand extglob patterns, such as '+(a|b)' - --noglobstar Do not expand '**' against multiple path portions. Ie, - treat it as a normal '*' instead. - - --windows-path-no-escape - Use '\' as a path separator *only*, and *never* as an - escape character. If set, all '\' characters are - replaced with '/' in the pattern. - - -D --max-depth= Maximum depth to traverse from the current working - directory - - -C --cwd= Current working directory to execute/match in - -r --root= A string path resolved against the 'cwd', which is used - as the starting point for absolute patterns that start - with '/' (but not drive letters or UNC paths on - Windows). - - Note that this *doesn't* necessarily limit the walk to - the 'root' directory, and doesn't affect the cwd - starting point for non-absolute patterns. A pattern - containing '..' will still be able to traverse out of - the root directory, if it is not an actual root - directory on the filesystem, and any non-absolute - patterns will still be matched in the 'cwd'. - - To start absolute and non-absolute patterns in the same - path, you can use '--root=' to set it to the empty - string. However, be aware that on Windows systems, a - pattern like 'x:/*' or '//host/share/*' will *always* - start in the 'x:/' or '//host/share/' directory, - regardless of the --root setting. - - --platform= Defaults to the value of 'process.platform' if - available, or 'linux' if not. Setting --platform=win32 - on non-Windows systems may cause strange behavior! - - -i --ignore= - Glob patterns to ignore Can be set multiple times - -v --debug Output a huge amount of noisy debug information about - patterns as they are parsed and used to match files. - - -h --help Show this usage information -``` - -## `glob(pattern: string | string[], options?: GlobOptions) => Promise` - -Perform an asynchronous glob search for the pattern(s) specified. -Returns -[Path](https://isaacs.github.io/path-scurry/classes/PathBase) -objects if the `withFileTypes` option is set to `true`. See below -for full options field desciptions. - -## `globSync(pattern: string | string[], options?: GlobOptions) => string[] | Path[]` - -Synchronous form of `glob()`. - -Alias: `glob.sync()` - -## `globIterate(pattern: string | string[], options?: GlobOptions) => AsyncGenerator` - -Return an async iterator for walking glob pattern matches. - -Alias: `glob.iterate()` - -## `globIterateSync(pattern: string | string[], options?: GlobOptions) => Generator` - -Return a sync iterator for walking glob pattern matches. - -Alias: `glob.iterate.sync()`, `glob.sync.iterate()` - -## `globStream(pattern: string | string[], options?: GlobOptions) => Minipass` - -Return a stream that emits all the strings or `Path` objects and -then emits `end` when completed. - -Alias: `glob.stream()` - -## `globStreamSync(pattern: string | string[], options?: GlobOptions) => Minipass` - -Syncronous form of `globStream()`. Will read all the matches as -fast as you consume them, even all in a single tick if you -consume them immediately, but will still respond to backpressure -if they're not consumed immediately. - -Alias: `glob.stream.sync()`, `glob.sync.stream()` - -## `hasMagic(pattern: string | string[], options?: GlobOptions) => boolean` - -Returns `true` if the provided pattern contains any "magic" glob -characters, given the options provided. - -Brace expansion is not considered "magic" unless the -`magicalBraces` option is set, as brace expansion just turns one -string into an array of strings. So a pattern like `'x{a,b}y'` -would return `false`, because `'xay'` and `'xby'` both do not -contain any magic glob characters, and it's treated the same as -if you had called it on `['xay', 'xby']`. When -`magicalBraces:true` is in the options, brace expansion _is_ -treated as a pattern having magic. - -## `escape(pattern: string, options?: GlobOptions) => string` - -Escape all magic characters in a glob pattern, so that it will -only ever match literal strings - -If the `windowsPathsNoEscape` option is used, then characters are -escaped by wrapping in `[]`, because a magic character wrapped in -a character class can only be satisfied by that exact character. - -Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot -be escaped or unescaped. - -## `unescape(pattern: string, options?: GlobOptions) => string` - -Un-escape a glob string that may contain some escaped characters. - -If the `windowsPathsNoEscape` option is used, then square-brace -escapes are removed, but not backslash escapes. For example, it -will turn the string `'[*]'` into `*`, but it will not turn -`'\\*'` into `'*'`, because `\` is a path separator in -`windowsPathsNoEscape` mode. - -When `windowsPathsNoEscape` is not set, then both brace escapes -and backslash escapes are removed. - -Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot -be escaped or unescaped. - -## Class `Glob` - -An object that can perform glob pattern traversals. - -### `const g = new Glob(pattern: string | string[], options: GlobOptions)` - -Options object is required. - -See full options descriptions below. - -Note that a previous `Glob` object can be passed as the -`GlobOptions` to another `Glob` instantiation to re-use settings -and caches with a new pattern. - -Traversal functions can be called multiple times to run the walk -again. - -### `g.stream()` - -Stream results asynchronously, - -### `g.streamSync()` - -Stream results synchronously. - -### `g.iterate()` - -Default async iteration function. Returns an AsyncGenerator that -iterates over the results. - -### `g.iterateSync()` - -Default sync iteration function. Returns a Generator that -iterates over the results. - -### `g.walk()` - -Returns a Promise that resolves to the results array. - -### `g.walkSync()` - -Returns a results array. - -### Properties - -All options are stored as properties on the `Glob` object. - -- `opts` The options provided to the constructor. -- `patterns` An array of parsed immutable `Pattern` objects. - -## Options - -Exported as `GlobOptions` TypeScript interface. A `GlobOptions` -object may be provided to any of the exported methods, and must -be provided to the `Glob` constructor. - -All options are optional, boolean, and false by default, unless -otherwise noted. - -All resolved options are added to the Glob object as properties. - -If you are running many `glob` operations, you can pass a Glob -object as the `options` argument to a subsequent operation to -share the previously loaded cache. - -- `cwd` String path or `file://` string or URL object. The - current working directory in which to search. Defaults to - `process.cwd()`. See also: "Windows, CWDs, Drive Letters, and - UNC Paths", below. - - This option may be either a string path or a `file://` URL - object or string. - -- `root` A string path resolved against the `cwd` option, which - is used as the starting point for absolute patterns that start - with `/`, (but not drive letters or UNC paths on Windows). - - Note that this _doesn't_ necessarily limit the walk to the - `root` directory, and doesn't affect the cwd starting point for - non-absolute patterns. A pattern containing `..` will still be - able to traverse out of the root directory, if it is not an - actual root directory on the filesystem, and any non-absolute - patterns will be matched in the `cwd`. For example, the - pattern `/../*` with `{root:'/some/path'}` will return all - files in `/some`, not all files in `/some/path`. The pattern - `*` with `{root:'/some/path'}` will return all the entries in - the cwd, not the entries in `/some/path`. - - To start absolute and non-absolute patterns in the same - path, you can use `{root:''}`. However, be aware that on - Windows systems, a pattern like `x:/*` or `//host/share/*` will - _always_ start in the `x:/` or `//host/share` directory, - regardless of the `root` setting. - -- `windowsPathsNoEscape` Use `\\` as a path separator _only_, and - _never_ as an escape character. If set, all `\\` characters are - replaced with `/` in the pattern. - - Note that this makes it **impossible** to match against paths - containing literal glob pattern characters, but allows matching - with patterns constructed using `path.join()` and - `path.resolve()` on Windows platforms, mimicking the (buggy!) - behavior of Glob v7 and before on Windows. Please use with - caution, and be mindful of [the caveat below about Windows - paths](#windows). (For legacy reasons, this is also set if - `allowWindowsEscape` is set to the exact value `false`.) - -- `dot` Include `.dot` files in normal matches and `globstar` - matches. Note that an explicit dot in a portion of the pattern - will always match dot files. - -- `magicalBraces` Treat brace expansion like `{a,b}` as a "magic" - pattern. Has no effect if {@link nobrace} is set. - - Only has effect on the {@link hasMagic} function, no effect on - glob pattern matching itself. - -- `dotRelative` Prepend all relative path strings with `./` (or - `.\` on Windows). - - Without this option, returned relative paths are "bare", so - instead of returning `'./foo/bar'`, they are returned as - `'foo/bar'`. - - Relative patterns starting with `'../'` are not prepended with - `./`, even if this option is set. - -- `mark` Add a `/` character to directory matches. Note that this - requires additional stat calls. - -- `nobrace` Do not expand `{a,b}` and `{1..3}` brace sets. - -- `noglobstar` Do not match `**` against multiple filenames. (Ie, - treat it as a normal `*` instead.) - -- `noext` Do not match "extglob" patterns such as `+(a|b)`. - -- `nocase` Perform a case-insensitive match. This defaults to - `true` on macOS and Windows systems, and `false` on all others. - - **Note** `nocase` should only be explicitly set when it is - known that the filesystem's case sensitivity differs from the - platform default. If set `true` on case-sensitive file - systems, or `false` on case-insensitive file systems, then the - walk may return more or less results than expected. - -- `maxDepth` Specify a number to limit the depth of the directory - traversal to this many levels below the `cwd`. - -- `matchBase` Perform a basename-only match if the pattern does - not contain any slash characters. That is, `*.js` would be - treated as equivalent to `**/*.js`, matching all js files in - all directories. - -- `nodir` Do not match directories, only files. (Note: to match - _only_ directories, put a `/` at the end of the pattern.) - - Note: when `follow` and `nodir` are both set, then symbolic - links to directories are also omitted. - -- `stat` Call `lstat()` on all entries, whether required or not - to determine whether it's a valid match. When used with - `withFileTypes`, this means that matches will include data such - as modified time, permissions, and so on. Note that this will - incur a performance cost due to the added system calls. - -- `ignore` string or string[], or an object with `ignore` and - `ignoreChildren` methods. - - If a string or string[] is provided, then this is treated as a - glob pattern or array of glob patterns to exclude from matches. - To ignore all children within a directory, as well as the entry - itself, append `'/**'` to the ignore pattern. - - **Note** `ignore` patterns are _always_ in `dot:true` mode, - regardless of any other settings. - - If an object is provided that has `ignored(path)` and/or - `childrenIgnored(path)` methods, then these methods will be - called to determine whether any Path is a match or if its - children should be traversed, respectively. - -- `follow` Follow symlinked directories when expanding `**` - patterns. This can result in a lot of duplicate references in - the presence of cyclic links, and make performance quite bad. - - By default, a `**` in a pattern will follow 1 symbolic link if - it is not the first item in the pattern, or none if it is the - first item in the pattern, following the same behavior as Bash. - - Note: when `follow` and `nodir` are both set, then symbolic - links to directories are also omitted. - -- `realpath` Set to true to call `fs.realpath` on all of the - results. In the case of an entry that cannot be resolved, the - entry is omitted. This incurs a slight performance penalty, of - course, because of the added system calls. - -- `absolute` Set to true to always receive absolute paths for - matched files. Set to `false` to always receive relative paths - for matched files. - - By default, when this option is not set, absolute paths are - returned for patterns that are absolute, and otherwise paths - are returned that are relative to the `cwd` setting. - - This does _not_ make an extra system call to get the realpath, - it only does string path resolution. - - `absolute` may not be used along with `withFileTypes`. - -- `posix` Set to true to use `/` as the path separator in - returned results. On posix systems, this has no effect. On - Windows systems, this will return `/` delimited path results, - and absolute paths will be returned in their full resolved UNC - path form, eg insted of `'C:\\foo\\bar'`, it will return - `//?/C:/foo/bar`. - -- `platform` Defaults to value of `process.platform` if - available, or `'linux'` if not. Setting `platform:'win32'` on - non-Windows systems may cause strange behavior. - -- `withFileTypes` Return [PathScurry](http://npm.im/path-scurry) - `Path` objects instead of strings. These are similar to a - NodeJS `Dirent` object, but with additional methods and - properties. - - `withFileTypes` may not be used along with `absolute`. - -- `signal` An AbortSignal which will cancel the Glob walk when - triggered. - -- `fs` An override object to pass in custom filesystem methods. - See [PathScurry docs](http://npm.im/path-scurry) for what can - be overridden. - -- `scurry` A [PathScurry](http://npm.im/path-scurry) object used - to traverse the file system. If the `nocase` option is set - explicitly, then any provided `scurry` object must match this - setting. - -- `includeChildMatches` boolean, default `true`. Do not match any - children of any matches. For example, the pattern `**\/foo` - would match `a/foo`, but not `a/foo/b/foo` in this mode. - - This is especially useful for cases like "find all - `node_modules` folders, but not the ones in `node_modules`". - - In order to support this, the `Ignore` implementation must - support an `add(pattern: string)` method. If using the default - `Ignore` class, then this is fine, but if this is set to - `false`, and a custom `Ignore` is provided that does not have - an `add()` method, then it will throw an error. - - **Caveat** It _only_ ignores matches that would be a descendant - of a previous match, and only if that descendant is matched - _after_ the ancestor is encountered. Since the file system walk - happens in indeterminate order, it's possible that a match will - already be added before its ancestor, if multiple or braced - patterns are used. - - For example: - - ```js - const results = await glob( - [ - // likely to match first, since it's just a stat - 'a/b/c/d/e/f', - - // this pattern is more complicated! It must to various readdir() - // calls and test the results against a regular expression, and that - // is certainly going to take a little bit longer. - // - // So, later on, it encounters a match at 'a/b/c/d/e', but it's too - // late to ignore a/b/c/d/e/f, because it's already been emitted. - 'a/[bdf]/?/[a-z]/*', - ], - { includeChildMatches: false }, - ) - ``` - - It's best to only set this to `false` if you can be reasonably - sure that no components of the pattern will potentially match - one another's file system descendants, or if the occasional - included child entry will not cause problems. - -## Glob Primer - -Much more information about glob pattern expansion can be found -by running `man bash` and searching for `Pattern Matching`. - -"Globs" are the patterns you type when you do stuff like `ls -*.js` on the command line, or put `build/*` in a `.gitignore` -file. - -Before parsing the path part patterns, braced sections are -expanded into a set. Braced sections start with `{` and end with -`}`, with 2 or more comma-delimited sections within. Braced -sections may contain slash characters, so `a{/b/c,bcd}` would -expand into `a/b/c` and `abcd`. - -The following characters have special magic meaning when used in -a path portion. With the exception of `**`, none of these match -path separators (ie, `/` on all platforms, and `\` on Windows). - -- `*` Matches 0 or more characters in a single path portion. - When alone in a path portion, it must match at least 1 - character. If `dot:true` is not specified, then `*` will not - match against a `.` character at the start of a path portion. -- `?` Matches 1 character. If `dot:true` is not specified, then - `?` will not match against a `.` character at the start of a - path portion. -- `[...]` Matches a range of characters, similar to a RegExp - range. If the first character of the range is `!` or `^` then - it matches any character not in the range. If the first - character is `]`, then it will be considered the same as `\]`, - rather than the end of the character class. -- `!(pattern|pattern|pattern)` Matches anything that does not - match any of the patterns provided. May _not_ contain `/` - characters. Similar to `*`, if alone in a path portion, then - the path portion must have at least one character. -- `?(pattern|pattern|pattern)` Matches zero or one occurrence of - the patterns provided. May _not_ contain `/` characters. -- `+(pattern|pattern|pattern)` Matches one or more occurrences of - the patterns provided. May _not_ contain `/` characters. -- `*(a|b|c)` Matches zero or more occurrences of the patterns - provided. May _not_ contain `/` characters. -- `@(pattern|pat*|pat?erN)` Matches exactly one of the patterns - provided. May _not_ contain `/` characters. -- `**` If a "globstar" is alone in a path portion, then it - matches zero or more directories and subdirectories searching - for matches. It does not crawl symlinked directories, unless - `{follow:true}` is passed in the options object. A pattern - like `a/b/**` will only match `a/b` if it is a directory. - Follows 1 symbolic link if not the first item in the pattern, - or 0 if it is the first item, unless `follow:true` is set, in - which case it follows all symbolic links. - -`[:class:]` patterns are supported by this implementation, but -`[=c=]` and `[.symbol.]` style class patterns are not. - -### Dots - -If a file or directory path portion has a `.` as the first -character, then it will not match any glob pattern unless that -pattern's corresponding path part also has a `.` as its first -character. - -For example, the pattern `a/.*/c` would match the file at -`a/.b/c`. However the pattern `a/*/c` would not, because `*` does -not start with a dot character. - -You can make glob treat dots as normal characters by setting -`dot:true` in the options. - -### Basename Matching - -If you set `matchBase:true` in the options, and the pattern has -no slashes in it, then it will seek for any file anywhere in the -tree with a matching basename. For example, `*.js` would match -`test/simple/basic.js`. - -### Empty Sets - -If no matching files are found, then an empty array is returned. -This differs from the shell, where the pattern itself is -returned. For example: - -```sh -$ echo a*s*d*f -a*s*d*f -``` - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a -worthwhile goal, some discrepancies exist between node-glob and -other implementations, and are intentional. - -The double-star character `**` is supported by default, unless -the `noglobstar` flag is set. This is supported in the manner of -bsdglob and bash 5, where `**` only has special significance if -it is the only thing in a path part. That is, `a/**/b` will match -`a/x/y/b`, but `a/**b` will not. - -Note that symlinked directories are not traversed as part of a -`**`, though their contents may match against subsequent portions -of the pattern. This prevents infinite loops and duplicates and -the like. You can force glob to traverse symlinks with `**` by -setting `{follow:true}` in the options. - -There is no equivalent of the `nonull` option. A pattern that -does not find any matches simply resolves to nothing. (An empty -array, immediately ended stream, etc.) - -If brace expansion is not disabled, then it is performed before -any other interpretation of the glob pattern. Thus, a pattern -like `+(a|{b),c)}`, which would not be valid in bash or zsh, is -expanded **first** into the set of `+(a|b)` and `+(a|c)`, and -those patterns are checked for validity. Since those two are -valid, matching proceeds. - -The character class patterns `[:class:]` (posix standard named -classes) style class patterns are supported and unicode-aware, -but `[=c=]` (locale-specific character collation weight), and -`[.symbol.]` (collating symbol), are not. - -### Repeated Slashes - -Unlike Bash and zsh, repeated `/` are always coalesced into a -single path separator. - -### Comments and Negation - -Previously, this module let you mark a pattern as a "comment" if -it started with a `#` character, or a "negated" pattern if it -started with a `!` character. - -These options were deprecated in version 5, and removed in -version 6. - -To specify things that should not match, use the `ignore` option. - -## Windows - -**Please only use forward-slashes in glob expressions.** - -Though windows uses either `/` or `\` as its path separator, only -`/` characters are used by this glob implementation. You must use -forward-slashes **only** in glob expressions. Back-slashes will -always be interpreted as escape characters, not path separators. - -Results from absolute patterns such as `/foo/*` are mounted onto -the root setting using `path.join`. On windows, this will by -default result in `/foo/*` matching `C:\foo\bar.txt`. - -To automatically coerce all `\` characters to `/` in pattern -strings, **thus making it impossible to escape literal glob -characters**, you may set the `windowsPathsNoEscape` option to -`true`. - -### Windows, CWDs, Drive Letters, and UNC Paths - -On posix systems, when a pattern starts with `/`, any `cwd` -option is ignored, and the traversal starts at `/`, plus any -non-magic path portions specified in the pattern. - -On Windows systems, the behavior is similar, but the concept of -an "absolute path" is somewhat more involved. - -#### UNC Paths - -A UNC path may be used as the start of a pattern on Windows -platforms. For example, a pattern like: `//?/x:/*` will return -all file entries in the root of the `x:` drive. A pattern like -`//ComputerName/Share/*` will return all files in the associated -share. - -UNC path roots are always compared case insensitively. - -#### Drive Letters - -A pattern starting with a drive letter, like `c:/*`, will search -in that drive, regardless of any `cwd` option provided. - -If the pattern starts with `/`, and is not a UNC path, and there -is an explicit `cwd` option set with a drive letter, then the -drive letter in the `cwd` is used as the root of the directory -traversal. - -For example, `glob('/tmp', { cwd: 'c:/any/thing' })` will return -`['c:/tmp']` as the result. - -If an explicit `cwd` option is not provided, and the pattern -starts with `/`, then the traversal will run on the root of the -drive provided as the `cwd` option. (That is, it is the result of -`path.resolve('/')`.) - -## Race Conditions - -Glob searching, by its very nature, is susceptible to race -conditions, since it relies on directory walking. - -As a result, it is possible that a file that exists when glob -looks for it may have been deleted or modified by the time it -returns the result. - -By design, this implementation caches all readdir calls that it -makes, in order to cut down on system overhead. However, this -also makes it even more susceptible to races, especially if the -cache object is reused between glob calls. - -Users are thus advised not to use a glob result as a guarantee of -filesystem state in the face of rapid changes. For the vast -majority of operations, this is never a problem. - -### See Also: - -- `man sh` -- `man bash` [Pattern - Matching](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html) -- `man 3 fnmatch` -- `man 5 gitignore` -- [minimatch documentation](https://github.com/isaacs/minimatch) - -## Glob Logo - -Glob's logo was created by [Tanya -Brassie](http://tanyabrassie.com/). Logo files can be found -[here](https://github.com/isaacs/node-glob/tree/master/logo). - -The logo is licensed under a [Creative Commons -Attribution-ShareAlike 4.0 International -License](https://creativecommons.org/licenses/by-sa/4.0/). - -## Contributing - -Any change to behavior (including bugfixes) must come with a -test. - -Patches that fail tests or reduce performance will be rejected. - -```sh -# to run tests -npm test - -# to re-generate test fixtures -npm run test-regen - -# run the benchmarks -npm run bench - -# to profile javascript -npm run prof -``` - -## Comparison to Other JavaScript Glob Implementations - -**tl;dr** - -- If you want glob matching that is as faithful as possible to - Bash pattern expansion semantics, and as fast as possible - within that constraint, _use this module_. -- If you are reasonably sure that the patterns you will encounter - are relatively simple, and want the absolutely fastest glob - matcher out there, _use [fast-glob](http://npm.im/fast-glob)_. -- If you are reasonably sure that the patterns you will encounter - are relatively simple, and want the convenience of - automatically respecting `.gitignore` files, _use - [globby](http://npm.im/globby)_. - -There are some other glob matcher libraries on npm, but these -three are (in my opinion, as of 2023) the best. - ---- - -**full explanation** - -Every library reflects a set of opinions and priorities in the -trade-offs it makes. Other than this library, I can personally -recommend both [globby](http://npm.im/globby) and -[fast-glob](http://npm.im/fast-glob), though they differ in their -benefits and drawbacks. - -Both have very nice APIs and are reasonably fast. - -`fast-glob` is, as far as I am aware, the fastest glob -implementation in JavaScript today. However, there are many -cases where the choices that `fast-glob` makes in pursuit of -speed mean that its results differ from the results returned by -Bash and other sh-like shells, which may be surprising. - -In my testing, `fast-glob` is around 10-20% faster than this -module when walking over 200k files nested 4 directories -deep[1](#fn-webscale). However, there are some inconsistencies -with Bash matching behavior that this module does not suffer -from: - -- `**` only matches files, not directories -- `..` path portions are not handled unless they appear at the - start of the pattern -- `./!()` will not match any files that _start_ with - ``, even if they do not match ``. For - example, `!(9).txt` will not match `9999.txt`. -- Some brace patterns in the middle of a pattern will result in - failing to find certain matches. -- Extglob patterns are allowed to contain `/` characters. - -Globby exhibits all of the same pattern semantics as fast-glob, -(as it is a wrapper around fast-glob) and is slightly slower than -node-glob (by about 10-20% in the benchmark test set, or in other -words, anywhere from 20-50% slower than fast-glob). However, it -adds some API conveniences that may be worth the costs. - -- Support for `.gitignore` and other ignore files. -- Support for negated globs (ie, patterns starting with `!` - rather than using a separate `ignore` option). - -The priority of this module is "correctness" in the sense of -performing a glob pattern expansion as faithfully as possible to -the behavior of Bash and other sh-like shells, with as much speed -as possible. - -Note that prior versions of `node-glob` are _not_ on this list. -Former versions of this module are far too slow for any cases -where performance matters at all, and were designed with APIs -that are extremely dated by current JavaScript standards. - ---- - -[1]: In the cases where this module -returns results and `fast-glob` doesn't, it's even faster, of -course. - -![lumpy space princess saying 'oh my GLOB'](https://github.com/isaacs/node-glob/raw/main/oh-my-glob.gif) - -### Benchmark Results - -First number is time, smaller is better. - -Second number is the count of results returned. - -``` ---- pattern: '**' --- -~~ sync ~~ -node fast-glob sync 0m0.598s 200364 -node globby sync 0m0.765s 200364 -node current globSync mjs 0m0.683s 222656 -node current glob syncStream 0m0.649s 222656 -~~ async ~~ -node fast-glob async 0m0.350s 200364 -node globby async 0m0.509s 200364 -node current glob async mjs 0m0.463s 222656 -node current glob stream 0m0.411s 222656 - ---- pattern: '**/..' --- -~~ sync ~~ -node fast-glob sync 0m0.486s 0 -node globby sync 0m0.769s 200364 -node current globSync mjs 0m0.564s 2242 -node current glob syncStream 0m0.583s 2242 -~~ async ~~ -node fast-glob async 0m0.283s 0 -node globby async 0m0.512s 200364 -node current glob async mjs 0m0.299s 2242 -node current glob stream 0m0.312s 2242 - ---- pattern: './**/0/**/0/**/0/**/0/**/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.490s 10 -node globby sync 0m0.517s 10 -node current globSync mjs 0m0.540s 10 -node current glob syncStream 0m0.550s 10 -~~ async ~~ -node fast-glob async 0m0.290s 10 -node globby async 0m0.296s 10 -node current glob async mjs 0m0.278s 10 -node current glob stream 0m0.302s 10 - ---- pattern: './**/[01]/**/[12]/**/[23]/**/[45]/**/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.500s 160 -node globby sync 0m0.528s 160 -node current globSync mjs 0m0.556s 160 -node current glob syncStream 0m0.573s 160 -~~ async ~~ -node fast-glob async 0m0.283s 160 -node globby async 0m0.301s 160 -node current glob async mjs 0m0.306s 160 -node current glob stream 0m0.322s 160 - ---- pattern: './**/0/**/0/**/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.502s 5230 -node globby sync 0m0.527s 5230 -node current globSync mjs 0m0.544s 5230 -node current glob syncStream 0m0.557s 5230 -~~ async ~~ -node fast-glob async 0m0.285s 5230 -node globby async 0m0.305s 5230 -node current glob async mjs 0m0.304s 5230 -node current glob stream 0m0.310s 5230 - ---- pattern: '**/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.580s 200023 -node globby sync 0m0.771s 200023 -node current globSync mjs 0m0.685s 200023 -node current glob syncStream 0m0.649s 200023 -~~ async ~~ -node fast-glob async 0m0.349s 200023 -node globby async 0m0.509s 200023 -node current glob async mjs 0m0.427s 200023 -node current glob stream 0m0.388s 200023 - ---- pattern: '{**/*.txt,**/?/**/*.txt,**/?/**/?/**/*.txt,**/?/**/?/**/?/**/*.txt,**/?/**/?/**/?/**/?/**/*.txt}' --- -~~ sync ~~ -node fast-glob sync 0m0.589s 200023 -node globby sync 0m0.771s 200023 -node current globSync mjs 0m0.716s 200023 -node current glob syncStream 0m0.684s 200023 -~~ async ~~ -node fast-glob async 0m0.351s 200023 -node globby async 0m0.518s 200023 -node current glob async mjs 0m0.462s 200023 -node current glob stream 0m0.468s 200023 - ---- pattern: '**/5555/0000/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.496s 1000 -node globby sync 0m0.519s 1000 -node current globSync mjs 0m0.539s 1000 -node current glob syncStream 0m0.567s 1000 -~~ async ~~ -node fast-glob async 0m0.285s 1000 -node globby async 0m0.299s 1000 -node current glob async mjs 0m0.305s 1000 -node current glob stream 0m0.301s 1000 - ---- pattern: './**/0/**/../[01]/**/0/../**/0/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.484s 0 -node globby sync 0m0.507s 0 -node current globSync mjs 0m0.577s 4880 -node current glob syncStream 0m0.586s 4880 -~~ async ~~ -node fast-glob async 0m0.280s 0 -node globby async 0m0.298s 0 -node current glob async mjs 0m0.327s 4880 -node current glob stream 0m0.324s 4880 - ---- pattern: '**/????/????/????/????/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.547s 100000 -node globby sync 0m0.673s 100000 -node current globSync mjs 0m0.626s 100000 -node current glob syncStream 0m0.618s 100000 -~~ async ~~ -node fast-glob async 0m0.315s 100000 -node globby async 0m0.414s 100000 -node current glob async mjs 0m0.366s 100000 -node current glob stream 0m0.345s 100000 - ---- pattern: './{**/?{/**/?{/**/?{/**/?,,,,},,,,},,,,},,,}/**/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.588s 100000 -node globby sync 0m0.670s 100000 -node current globSync mjs 0m0.717s 200023 -node current glob syncStream 0m0.687s 200023 -~~ async ~~ -node fast-glob async 0m0.343s 100000 -node globby async 0m0.418s 100000 -node current glob async mjs 0m0.519s 200023 -node current glob stream 0m0.451s 200023 - ---- pattern: '**/!(0|9).txt' --- -~~ sync ~~ -node fast-glob sync 0m0.573s 160023 -node globby sync 0m0.731s 160023 -node current globSync mjs 0m0.680s 180023 -node current glob syncStream 0m0.659s 180023 -~~ async ~~ -node fast-glob async 0m0.345s 160023 -node globby async 0m0.476s 160023 -node current glob async mjs 0m0.427s 180023 -node current glob stream 0m0.388s 180023 - ---- pattern: './{*/**/../{*/**/../{*/**/../{*/**/../{*/**,,,,},,,,},,,,},,,,},,,,}/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.483s 0 -node globby sync 0m0.512s 0 -node current globSync mjs 0m0.811s 200023 -node current glob syncStream 0m0.773s 200023 -~~ async ~~ -node fast-glob async 0m0.280s 0 -node globby async 0m0.299s 0 -node current glob async mjs 0m0.617s 200023 -node current glob stream 0m0.568s 200023 - ---- pattern: './*/**/../*/**/../*/**/../*/**/../*/**/../*/**/../*/**/../*/**/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.485s 0 -node globby sync 0m0.507s 0 -node current globSync mjs 0m0.759s 200023 -node current glob syncStream 0m0.740s 200023 -~~ async ~~ -node fast-glob async 0m0.281s 0 -node globby async 0m0.297s 0 -node current glob async mjs 0m0.544s 200023 -node current glob stream 0m0.464s 200023 - ---- pattern: './*/**/../*/**/../*/**/../*/**/../*/**/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.486s 0 -node globby sync 0m0.513s 0 -node current globSync mjs 0m0.734s 200023 -node current glob syncStream 0m0.696s 200023 -~~ async ~~ -node fast-glob async 0m0.286s 0 -node globby async 0m0.296s 0 -node current glob async mjs 0m0.506s 200023 -node current glob stream 0m0.483s 200023 - ---- pattern: './0/**/../1/**/../2/**/../3/**/../4/**/../5/**/../6/**/../7/**/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.060s 0 -node globby sync 0m0.074s 0 -node current globSync mjs 0m0.067s 0 -node current glob syncStream 0m0.066s 0 -~~ async ~~ -node fast-glob async 0m0.060s 0 -node globby async 0m0.075s 0 -node current glob async mjs 0m0.066s 0 -node current glob stream 0m0.067s 0 - ---- pattern: './**/?/**/?/**/?/**/?/**/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.568s 100000 -node globby sync 0m0.651s 100000 -node current globSync mjs 0m0.619s 100000 -node current glob syncStream 0m0.617s 100000 -~~ async ~~ -node fast-glob async 0m0.332s 100000 -node globby async 0m0.409s 100000 -node current glob async mjs 0m0.372s 100000 -node current glob stream 0m0.351s 100000 - ---- pattern: '**/*/**/*/**/*/**/*/**' --- -~~ sync ~~ -node fast-glob sync 0m0.603s 200113 -node globby sync 0m0.798s 200113 -node current globSync mjs 0m0.730s 222137 -node current glob syncStream 0m0.693s 222137 -~~ async ~~ -node fast-glob async 0m0.356s 200113 -node globby async 0m0.525s 200113 -node current glob async mjs 0m0.508s 222137 -node current glob stream 0m0.455s 222137 - ---- pattern: './**/*/**/*/**/*/**/*/**/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.622s 200000 -node globby sync 0m0.792s 200000 -node current globSync mjs 0m0.722s 200000 -node current glob syncStream 0m0.695s 200000 -~~ async ~~ -node fast-glob async 0m0.369s 200000 -node globby async 0m0.527s 200000 -node current glob async mjs 0m0.502s 200000 -node current glob stream 0m0.481s 200000 - ---- pattern: '**/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.588s 200023 -node globby sync 0m0.771s 200023 -node current globSync mjs 0m0.684s 200023 -node current glob syncStream 0m0.658s 200023 -~~ async ~~ -node fast-glob async 0m0.352s 200023 -node globby async 0m0.516s 200023 -node current glob async mjs 0m0.432s 200023 -node current glob stream 0m0.384s 200023 - ---- pattern: './**/**/**/**/**/**/**/**/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.589s 200023 -node globby sync 0m0.766s 200023 -node current globSync mjs 0m0.682s 200023 -node current glob syncStream 0m0.652s 200023 -~~ async ~~ -node fast-glob async 0m0.352s 200023 -node globby async 0m0.523s 200023 -node current glob async mjs 0m0.436s 200023 -node current glob stream 0m0.380s 200023 - ---- pattern: '**/*/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.592s 200023 -node globby sync 0m0.776s 200023 -node current globSync mjs 0m0.691s 200023 -node current glob syncStream 0m0.659s 200023 -~~ async ~~ -node fast-glob async 0m0.357s 200023 -node globby async 0m0.513s 200023 -node current glob async mjs 0m0.471s 200023 -node current glob stream 0m0.424s 200023 - ---- pattern: '**/*/**/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.585s 200023 -node globby sync 0m0.766s 200023 -node current globSync mjs 0m0.694s 200023 -node current glob syncStream 0m0.664s 200023 -~~ async ~~ -node fast-glob async 0m0.350s 200023 -node globby async 0m0.514s 200023 -node current glob async mjs 0m0.472s 200023 -node current glob stream 0m0.424s 200023 - ---- pattern: '**/[0-9]/**/*.txt' --- -~~ sync ~~ -node fast-glob sync 0m0.544s 100000 -node globby sync 0m0.636s 100000 -node current globSync mjs 0m0.626s 100000 -node current glob syncStream 0m0.621s 100000 -~~ async ~~ -node fast-glob async 0m0.322s 100000 -node globby async 0m0.404s 100000 -node current glob async mjs 0m0.360s 100000 -node current glob stream 0m0.352s 100000 -``` diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.d.ts b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.d.ts deleted file mode 100644 index 25262b3ddf489e..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.d.ts +++ /dev/null @@ -1,388 +0,0 @@ -import { Minimatch } from 'minimatch'; -import { Minipass } from 'minipass'; -import { FSOption, Path, PathScurry } from 'path-scurry'; -import { IgnoreLike } from './ignore.js'; -import { Pattern } from './pattern.js'; -export type MatchSet = Minimatch['set']; -export type GlobParts = Exclude; -/** - * A `GlobOptions` object may be provided to any of the exported methods, and - * must be provided to the `Glob` constructor. - * - * All options are optional, boolean, and false by default, unless otherwise - * noted. - * - * All resolved options are added to the Glob object as properties. - * - * If you are running many `glob` operations, you can pass a Glob object as the - * `options` argument to a subsequent operation to share the previously loaded - * cache. - */ -export interface GlobOptions { - /** - * Set to `true` to always receive absolute paths for - * matched files. Set to `false` to always return relative paths. - * - * When this option is not set, absolute paths are returned for patterns - * that are absolute, and otherwise paths are returned that are relative - * to the `cwd` setting. - * - * This does _not_ make an extra system call to get - * the realpath, it only does string path resolution. - * - * Conflicts with {@link withFileTypes} - */ - absolute?: boolean; - /** - * Set to false to enable {@link windowsPathsNoEscape} - * - * @deprecated - */ - allowWindowsEscape?: boolean; - /** - * The current working directory in which to search. Defaults to - * `process.cwd()`. - * - * May be eiher a string path or a `file://` URL object or string. - */ - cwd?: string | URL; - /** - * Include `.dot` files in normal matches and `globstar` - * matches. Note that an explicit dot in a portion of the pattern - * will always match dot files. - */ - dot?: boolean; - /** - * Prepend all relative path strings with `./` (or `.\` on Windows). - * - * Without this option, returned relative paths are "bare", so instead of - * returning `'./foo/bar'`, they are returned as `'foo/bar'`. - * - * Relative patterns starting with `'../'` are not prepended with `./`, even - * if this option is set. - */ - dotRelative?: boolean; - /** - * Follow symlinked directories when expanding `**` - * patterns. This can result in a lot of duplicate references in - * the presence of cyclic links, and make performance quite bad. - * - * By default, a `**` in a pattern will follow 1 symbolic link if - * it is not the first item in the pattern, or none if it is the - * first item in the pattern, following the same behavior as Bash. - */ - follow?: boolean; - /** - * string or string[], or an object with `ignore` and `ignoreChildren` - * methods. - * - * If a string or string[] is provided, then this is treated as a glob - * pattern or array of glob patterns to exclude from matches. To ignore all - * children within a directory, as well as the entry itself, append `'/**'` - * to the ignore pattern. - * - * **Note** `ignore` patterns are _always_ in `dot:true` mode, regardless of - * any other settings. - * - * If an object is provided that has `ignored(path)` and/or - * `childrenIgnored(path)` methods, then these methods will be called to - * determine whether any Path is a match or if its children should be - * traversed, respectively. - */ - ignore?: string | string[] | IgnoreLike; - /** - * Treat brace expansion like `{a,b}` as a "magic" pattern. Has no - * effect if {@link nobrace} is set. - * - * Only has effect on the {@link hasMagic} function. - */ - magicalBraces?: boolean; - /** - * Add a `/` character to directory matches. Note that this requires - * additional stat calls in some cases. - */ - mark?: boolean; - /** - * Perform a basename-only match if the pattern does not contain any slash - * characters. That is, `*.js` would be treated as equivalent to - * `**\/*.js`, matching all js files in all directories. - */ - matchBase?: boolean; - /** - * Limit the directory traversal to a given depth below the cwd. - * Note that this does NOT prevent traversal to sibling folders, - * root patterns, and so on. It only limits the maximum folder depth - * that the walk will descend, relative to the cwd. - */ - maxDepth?: number; - /** - * Do not expand `{a,b}` and `{1..3}` brace sets. - */ - nobrace?: boolean; - /** - * Perform a case-insensitive match. This defaults to `true` on macOS and - * Windows systems, and `false` on all others. - * - * **Note** `nocase` should only be explicitly set when it is - * known that the filesystem's case sensitivity differs from the - * platform default. If set `true` on case-sensitive file - * systems, or `false` on case-insensitive file systems, then the - * walk may return more or less results than expected. - */ - nocase?: boolean; - /** - * Do not match directories, only files. (Note: to match - * _only_ directories, put a `/` at the end of the pattern.) - */ - nodir?: boolean; - /** - * Do not match "extglob" patterns such as `+(a|b)`. - */ - noext?: boolean; - /** - * Do not match `**` against multiple filenames. (Ie, treat it as a normal - * `*` instead.) - * - * Conflicts with {@link matchBase} - */ - noglobstar?: boolean; - /** - * Defaults to value of `process.platform` if available, or `'linux'` if - * not. Setting `platform:'win32'` on non-Windows systems may cause strange - * behavior. - */ - platform?: NodeJS.Platform; - /** - * Set to true to call `fs.realpath` on all of the - * results. In the case of an entry that cannot be resolved, the - * entry is omitted. This incurs a slight performance penalty, of - * course, because of the added system calls. - */ - realpath?: boolean; - /** - * - * A string path resolved against the `cwd` option, which - * is used as the starting point for absolute patterns that start - * with `/`, (but not drive letters or UNC paths on Windows). - * - * Note that this _doesn't_ necessarily limit the walk to the - * `root` directory, and doesn't affect the cwd starting point for - * non-absolute patterns. A pattern containing `..` will still be - * able to traverse out of the root directory, if it is not an - * actual root directory on the filesystem, and any non-absolute - * patterns will be matched in the `cwd`. For example, the - * pattern `/../*` with `{root:'/some/path'}` will return all - * files in `/some`, not all files in `/some/path`. The pattern - * `*` with `{root:'/some/path'}` will return all the entries in - * the cwd, not the entries in `/some/path`. - * - * To start absolute and non-absolute patterns in the same - * path, you can use `{root:''}`. However, be aware that on - * Windows systems, a pattern like `x:/*` or `//host/share/*` will - * _always_ start in the `x:/` or `//host/share` directory, - * regardless of the `root` setting. - */ - root?: string; - /** - * A [PathScurry](http://npm.im/path-scurry) object used - * to traverse the file system. If the `nocase` option is set - * explicitly, then any provided `scurry` object must match this - * setting. - */ - scurry?: PathScurry; - /** - * Call `lstat()` on all entries, whether required or not to determine - * if it's a valid match. When used with {@link withFileTypes}, this means - * that matches will include data such as modified time, permissions, and - * so on. Note that this will incur a performance cost due to the added - * system calls. - */ - stat?: boolean; - /** - * An AbortSignal which will cancel the Glob walk when - * triggered. - */ - signal?: AbortSignal; - /** - * Use `\\` as a path separator _only_, and - * _never_ as an escape character. If set, all `\\` characters are - * replaced with `/` in the pattern. - * - * Note that this makes it **impossible** to match against paths - * containing literal glob pattern characters, but allows matching - * with patterns constructed using `path.join()` and - * `path.resolve()` on Windows platforms, mimicking the (buggy!) - * behavior of Glob v7 and before on Windows. Please use with - * caution, and be mindful of [the caveat below about Windows - * paths](#windows). (For legacy reasons, this is also set if - * `allowWindowsEscape` is set to the exact value `false`.) - */ - windowsPathsNoEscape?: boolean; - /** - * Return [PathScurry](http://npm.im/path-scurry) - * `Path` objects instead of strings. These are similar to a - * NodeJS `Dirent` object, but with additional methods and - * properties. - * - * Conflicts with {@link absolute} - */ - withFileTypes?: boolean; - /** - * An fs implementation to override some or all of the defaults. See - * http://npm.im/path-scurry for details about what can be overridden. - */ - fs?: FSOption; - /** - * Just passed along to Minimatch. Note that this makes all pattern - * matching operations slower and *extremely* noisy. - */ - debug?: boolean; - /** - * Return `/` delimited paths, even on Windows. - * - * On posix systems, this has no effect. But, on Windows, it means that - * paths will be `/` delimited, and absolute paths will be their full - * resolved UNC forms, eg instead of `'C:\\foo\\bar'`, it would return - * `'//?/C:/foo/bar'` - */ - posix?: boolean; - /** - * Do not match any children of any matches. For example, the pattern - * `**\/foo` would match `a/foo`, but not `a/foo/b/foo` in this mode. - * - * This is especially useful for cases like "find all `node_modules` - * folders, but not the ones in `node_modules`". - * - * In order to support this, the `Ignore` implementation must support an - * `add(pattern: string)` method. If using the default `Ignore` class, then - * this is fine, but if this is set to `false`, and a custom `Ignore` is - * provided that does not have an `add()` method, then it will throw an - * error. - * - * **Caveat** It *only* ignores matches that would be a descendant of a - * previous match, and only if that descendant is matched *after* the - * ancestor is encountered. Since the file system walk happens in - * indeterminate order, it's possible that a match will already be added - * before its ancestor, if multiple or braced patterns are used. - * - * For example: - * - * ```ts - * const results = await glob([ - * // likely to match first, since it's just a stat - * 'a/b/c/d/e/f', - * - * // this pattern is more complicated! It must to various readdir() - * // calls and test the results against a regular expression, and that - * // is certainly going to take a little bit longer. - * // - * // So, later on, it encounters a match at 'a/b/c/d/e', but it's too - * // late to ignore a/b/c/d/e/f, because it's already been emitted. - * 'a/[bdf]/?/[a-z]/*', - * ], { includeChildMatches: false }) - * ``` - * - * It's best to only set this to `false` if you can be reasonably sure that - * no components of the pattern will potentially match one another's file - * system descendants, or if the occasional included child entry will not - * cause problems. - * - * @default true - */ - includeChildMatches?: boolean; -} -export type GlobOptionsWithFileTypesTrue = GlobOptions & { - withFileTypes: true; - absolute?: undefined; - mark?: undefined; - posix?: undefined; -}; -export type GlobOptionsWithFileTypesFalse = GlobOptions & { - withFileTypes?: false; -}; -export type GlobOptionsWithFileTypesUnset = GlobOptions & { - withFileTypes?: undefined; -}; -export type Result = Opts extends GlobOptionsWithFileTypesTrue ? Path : Opts extends GlobOptionsWithFileTypesFalse ? string : Opts extends GlobOptionsWithFileTypesUnset ? string : string | Path; -export type Results = Result[]; -export type FileTypes = Opts extends GlobOptionsWithFileTypesTrue ? true : Opts extends GlobOptionsWithFileTypesFalse ? false : Opts extends GlobOptionsWithFileTypesUnset ? false : boolean; -/** - * An object that can perform glob pattern traversals. - */ -export declare class Glob implements GlobOptions { - absolute?: boolean; - cwd: string; - root?: string; - dot: boolean; - dotRelative: boolean; - follow: boolean; - ignore?: string | string[] | IgnoreLike; - magicalBraces: boolean; - mark?: boolean; - matchBase: boolean; - maxDepth: number; - nobrace: boolean; - nocase: boolean; - nodir: boolean; - noext: boolean; - noglobstar: boolean; - pattern: string[]; - platform: NodeJS.Platform; - realpath: boolean; - scurry: PathScurry; - stat: boolean; - signal?: AbortSignal; - windowsPathsNoEscape: boolean; - withFileTypes: FileTypes; - includeChildMatches: boolean; - /** - * The options provided to the constructor. - */ - opts: Opts; - /** - * An array of parsed immutable {@link Pattern} objects. - */ - patterns: Pattern[]; - /** - * All options are stored as properties on the `Glob` object. - * - * See {@link GlobOptions} for full options descriptions. - * - * Note that a previous `Glob` object can be passed as the - * `GlobOptions` to another `Glob` instantiation to re-use settings - * and caches with a new pattern. - * - * Traversal functions can be called multiple times to run the walk - * again. - */ - constructor(pattern: string | string[], opts: Opts); - /** - * Returns a Promise that resolves to the results array. - */ - walk(): Promise>; - /** - * synchronous {@link Glob.walk} - */ - walkSync(): Results; - /** - * Stream results asynchronously. - */ - stream(): Minipass, Result>; - /** - * Stream results synchronously. - */ - streamSync(): Minipass, Result>; - /** - * Default sync iteration function. Returns a Generator that - * iterates over the results. - */ - iterateSync(): Generator, void, void>; - [Symbol.iterator](): Generator, void, void>; - /** - * Default async iteration function. Returns an AsyncGenerator that - * iterates over the results. - */ - iterate(): AsyncGenerator, void, void>; - [Symbol.asyncIterator](): AsyncGenerator, void, void>; -} -//# sourceMappingURL=glob.d.ts.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.d.ts.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.d.ts.map deleted file mode 100644 index c32dc74c967741..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../src/glob.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.js b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.js deleted file mode 100644 index e1339bbbcf57f3..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.js +++ /dev/null @@ -1,247 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Glob = void 0; -const minimatch_1 = require("minimatch"); -const node_url_1 = require("node:url"); -const path_scurry_1 = require("path-scurry"); -const pattern_js_1 = require("./pattern.js"); -const walker_js_1 = require("./walker.js"); -// if no process global, just call it linux. -// so we default to case-sensitive, / separators -const defaultPlatform = (typeof process === 'object' && - process && - typeof process.platform === 'string') ? - process.platform - : 'linux'; -/** - * An object that can perform glob pattern traversals. - */ -class Glob { - 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; - /** - * The options provided to the constructor. - */ - opts; - /** - * An array of parsed immutable {@link Pattern} objects. - */ - patterns; - /** - * All options are stored as properties on the `Glob` object. - * - * See {@link GlobOptions} for full options descriptions. - * - * Note that a previous `Glob` object can be passed as the - * `GlobOptions` to another `Glob` instantiation to re-use settings - * and caches with a new pattern. - * - * Traversal functions can be called multiple times to run the walk - * again. - */ - constructor(pattern, opts) { - /* c8 ignore start */ - if (!opts) - throw new TypeError('glob options required'); - /* c8 ignore stop */ - this.withFileTypes = !!opts.withFileTypes; - this.signal = opts.signal; - this.follow = !!opts.follow; - this.dot = !!opts.dot; - this.dotRelative = !!opts.dotRelative; - this.nodir = !!opts.nodir; - this.mark = !!opts.mark; - if (!opts.cwd) { - this.cwd = ''; - } - else if (opts.cwd instanceof URL || opts.cwd.startsWith('file://')) { - opts.cwd = (0, node_url_1.fileURLToPath)(opts.cwd); - } - this.cwd = opts.cwd || ''; - this.root = opts.root; - this.magicalBraces = !!opts.magicalBraces; - this.nobrace = !!opts.nobrace; - this.noext = !!opts.noext; - this.realpath = !!opts.realpath; - this.absolute = opts.absolute; - this.includeChildMatches = opts.includeChildMatches !== false; - this.noglobstar = !!opts.noglobstar; - this.matchBase = !!opts.matchBase; - this.maxDepth = - typeof opts.maxDepth === 'number' ? opts.maxDepth : Infinity; - this.stat = !!opts.stat; - this.ignore = opts.ignore; - if (this.withFileTypes && this.absolute !== undefined) { - throw new Error('cannot set absolute and withFileTypes:true'); - } - if (typeof pattern === 'string') { - pattern = [pattern]; - } - this.windowsPathsNoEscape = - !!opts.windowsPathsNoEscape || - opts.allowWindowsEscape === - false; - if (this.windowsPathsNoEscape) { - pattern = pattern.map(p => p.replace(/\\/g, '/')); - } - if (this.matchBase) { - if (opts.noglobstar) { - throw new TypeError('base matching requires globstar'); - } - pattern = pattern.map(p => (p.includes('/') ? p : `./**/${p}`)); - } - this.pattern = pattern; - this.platform = opts.platform || defaultPlatform; - this.opts = { ...opts, platform: this.platform }; - if (opts.scurry) { - this.scurry = opts.scurry; - if (opts.nocase !== undefined && - opts.nocase !== opts.scurry.nocase) { - throw new Error('nocase option contradicts provided scurry option'); - } - } - else { - const Scurry = opts.platform === 'win32' ? path_scurry_1.PathScurryWin32 - : opts.platform === 'darwin' ? path_scurry_1.PathScurryDarwin - : opts.platform ? path_scurry_1.PathScurryPosix - : path_scurry_1.PathScurry; - this.scurry = new Scurry(this.cwd, { - nocase: opts.nocase, - fs: opts.fs, - }); - } - this.nocase = this.scurry.nocase; - // If you do nocase:true on a case-sensitive file system, then - // we need to use regexps instead of strings for non-magic - // path portions, because statting `aBc` won't return results - // for the file `AbC` for example. - const nocaseMagicOnly = this.platform === 'darwin' || this.platform === 'win32'; - const mmo = { - // default nocase based on platform - ...opts, - dot: this.dot, - matchBase: this.matchBase, - nobrace: this.nobrace, - nocase: this.nocase, - nocaseMagicOnly, - nocomment: true, - noext: this.noext, - nonegate: true, - optimizationLevel: 2, - platform: this.platform, - windowsPathsNoEscape: this.windowsPathsNoEscape, - debug: !!this.opts.debug, - }; - const mms = this.pattern.map(p => new minimatch_1.Minimatch(p, mmo)); - const [matchSet, globParts] = mms.reduce((set, m) => { - set[0].push(...m.set); - set[1].push(...m.globParts); - return set; - }, [[], []]); - this.patterns = matchSet.map((set, i) => { - const g = globParts[i]; - /* c8 ignore start */ - if (!g) - throw new Error('invalid pattern object'); - /* c8 ignore stop */ - return new pattern_js_1.Pattern(set, g, 0, this.platform); - }); - } - async walk() { - // Walkers always return array of Path objects, so we just have to - // coerce them into the right shape. It will have already called - // realpath() if the option was set to do so, so we know that's cached. - // start out knowing the cwd, at least - return [ - ...(await new walker_js_1.GlobWalker(this.patterns, this.scurry.cwd, { - ...this.opts, - maxDepth: this.maxDepth !== Infinity ? - this.maxDepth + this.scurry.cwd.depth() - : Infinity, - platform: this.platform, - nocase: this.nocase, - includeChildMatches: this.includeChildMatches, - }).walk()), - ]; - } - walkSync() { - return [ - ...new walker_js_1.GlobWalker(this.patterns, this.scurry.cwd, { - ...this.opts, - maxDepth: this.maxDepth !== Infinity ? - this.maxDepth + this.scurry.cwd.depth() - : Infinity, - platform: this.platform, - nocase: this.nocase, - includeChildMatches: this.includeChildMatches, - }).walkSync(), - ]; - } - stream() { - return new walker_js_1.GlobStream(this.patterns, this.scurry.cwd, { - ...this.opts, - maxDepth: this.maxDepth !== Infinity ? - this.maxDepth + this.scurry.cwd.depth() - : Infinity, - platform: this.platform, - nocase: this.nocase, - includeChildMatches: this.includeChildMatches, - }).stream(); - } - streamSync() { - return new walker_js_1.GlobStream(this.patterns, this.scurry.cwd, { - ...this.opts, - maxDepth: this.maxDepth !== Infinity ? - this.maxDepth + this.scurry.cwd.depth() - : Infinity, - platform: this.platform, - nocase: this.nocase, - includeChildMatches: this.includeChildMatches, - }).streamSync(); - } - /** - * Default sync iteration function. Returns a Generator that - * iterates over the results. - */ - iterateSync() { - return this.streamSync()[Symbol.iterator](); - } - [Symbol.iterator]() { - return this.iterateSync(); - } - /** - * Default async iteration function. Returns an AsyncGenerator that - * iterates over the results. - */ - iterate() { - return this.stream()[Symbol.asyncIterator](); - } - [Symbol.asyncIterator]() { - return this.iterate(); - } -} -exports.Glob = Glob; -//# sourceMappingURL=glob.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.js.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.js.map deleted file mode 100644 index ddab419717efa5..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/glob.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/glob.ts"],"names":[],"mappings":"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","sourcesContent":["import { Minimatch, MinimatchOptions } from 'minimatch'\nimport { Minipass } from 'minipass'\nimport { fileURLToPath } from 'node:url'\nimport {\n FSOption,\n Path,\n PathScurry,\n PathScurryDarwin,\n PathScurryPosix,\n PathScurryWin32,\n} from 'path-scurry'\nimport { IgnoreLike } from './ignore.js'\nimport { Pattern } from './pattern.js'\nimport { GlobStream, GlobWalker } from './walker.js'\n\nexport type MatchSet = Minimatch['set']\nexport type GlobParts = Exclude\n\n// if no process global, just call it linux.\n// so we default to case-sensitive, / separators\nconst defaultPlatform: NodeJS.Platform =\n (\n typeof process === 'object' &&\n process &&\n typeof process.platform === 'string'\n ) ?\n process.platform\n : 'linux'\n\n/**\n * A `GlobOptions` object may be provided to any of the exported methods, and\n * must be provided to the `Glob` constructor.\n *\n * All options are optional, boolean, and false by default, unless otherwise\n * noted.\n *\n * All resolved options are added to the Glob object as properties.\n *\n * If you are running many `glob` operations, you can pass a Glob object as the\n * `options` argument to a subsequent operation to share the previously loaded\n * cache.\n */\nexport interface GlobOptions {\n /**\n * Set to `true` to always receive absolute paths for\n * matched files. Set to `false` to always return relative paths.\n *\n * When this option is not set, absolute paths are returned for patterns\n * that are absolute, and otherwise paths are returned that are relative\n * to the `cwd` setting.\n *\n * This does _not_ make an extra system call to get\n * the realpath, it only does string path resolution.\n *\n * Conflicts with {@link withFileTypes}\n */\n absolute?: boolean\n\n /**\n * Set to false to enable {@link windowsPathsNoEscape}\n *\n * @deprecated\n */\n allowWindowsEscape?: boolean\n\n /**\n * The current working directory in which to search. Defaults to\n * `process.cwd()`.\n *\n * May be eiher a string path or a `file://` URL object or string.\n */\n cwd?: string | URL\n\n /**\n * Include `.dot` files in normal matches and `globstar`\n * matches. Note that an explicit dot in a portion of the pattern\n * will always match dot files.\n */\n dot?: boolean\n\n /**\n * Prepend all relative path strings with `./` (or `.\\` on Windows).\n *\n * Without this option, returned relative paths are \"bare\", so instead of\n * returning `'./foo/bar'`, they are returned as `'foo/bar'`.\n *\n * Relative patterns starting with `'../'` are not prepended with `./`, even\n * if this option is set.\n */\n dotRelative?: boolean\n\n /**\n * Follow symlinked directories when expanding `**`\n * patterns. This can result in a lot of duplicate references in\n * the presence of cyclic links, and make performance quite bad.\n *\n * By default, a `**` in a pattern will follow 1 symbolic link if\n * it is not the first item in the pattern, or none if it is the\n * first item in the pattern, following the same behavior as Bash.\n */\n follow?: boolean\n\n /**\n * string or string[], or an object with `ignore` and `ignoreChildren`\n * methods.\n *\n * If a string or string[] is provided, then this is treated as a glob\n * pattern or array of glob patterns to exclude from matches. To ignore all\n * children within a directory, as well as the entry itself, append `'/**'`\n * to the ignore pattern.\n *\n * **Note** `ignore` patterns are _always_ in `dot:true` mode, regardless of\n * any other settings.\n *\n * If an object is provided that has `ignored(path)` and/or\n * `childrenIgnored(path)` methods, then these methods will be called to\n * determine whether any Path is a match or if its children should be\n * traversed, respectively.\n */\n ignore?: string | string[] | IgnoreLike\n\n /**\n * Treat brace expansion like `{a,b}` as a \"magic\" pattern. Has no\n * effect if {@link nobrace} is set.\n *\n * Only has effect on the {@link hasMagic} function.\n */\n magicalBraces?: boolean\n\n /**\n * Add a `/` character to directory matches. Note that this requires\n * additional stat calls in some cases.\n */\n mark?: boolean\n\n /**\n * Perform a basename-only match if the pattern does not contain any slash\n * characters. That is, `*.js` would be treated as equivalent to\n * `**\\/*.js`, matching all js files in all directories.\n */\n matchBase?: boolean\n\n /**\n * Limit the directory traversal to a given depth below the cwd.\n * Note that this does NOT prevent traversal to sibling folders,\n * root patterns, and so on. It only limits the maximum folder depth\n * that the walk will descend, relative to the cwd.\n */\n maxDepth?: number\n\n /**\n * Do not expand `{a,b}` and `{1..3}` brace sets.\n */\n nobrace?: boolean\n\n /**\n * Perform a case-insensitive match. This defaults to `true` on macOS and\n * Windows systems, and `false` on all others.\n *\n * **Note** `nocase` should only be explicitly set when it is\n * known that the filesystem's case sensitivity differs from the\n * platform default. If set `true` on case-sensitive file\n * systems, or `false` on case-insensitive file systems, then the\n * walk may return more or less results than expected.\n */\n nocase?: boolean\n\n /**\n * Do not match directories, only files. (Note: to match\n * _only_ directories, put a `/` at the end of the pattern.)\n */\n nodir?: boolean\n\n /**\n * Do not match \"extglob\" patterns such as `+(a|b)`.\n */\n noext?: boolean\n\n /**\n * Do not match `**` against multiple filenames. (Ie, treat it as a normal\n * `*` instead.)\n *\n * Conflicts with {@link matchBase}\n */\n noglobstar?: boolean\n\n /**\n * Defaults to value of `process.platform` if available, or `'linux'` if\n * not. Setting `platform:'win32'` on non-Windows systems may cause strange\n * behavior.\n */\n platform?: NodeJS.Platform\n\n /**\n * Set to true to call `fs.realpath` on all of the\n * results. In the case of an entry that cannot be resolved, the\n * entry is omitted. This incurs a slight performance penalty, of\n * course, because of the added system calls.\n */\n realpath?: boolean\n\n /**\n *\n * A string path resolved against the `cwd` option, which\n * is used as the starting point for absolute patterns that start\n * with `/`, (but not drive letters or UNC paths on Windows).\n *\n * Note that this _doesn't_ necessarily limit the walk to the\n * `root` directory, and doesn't affect the cwd starting point for\n * non-absolute patterns. A pattern containing `..` will still be\n * able to traverse out of the root directory, if it is not an\n * actual root directory on the filesystem, and any non-absolute\n * patterns will be matched in the `cwd`. For example, the\n * pattern `/../*` with `{root:'/some/path'}` will return all\n * files in `/some`, not all files in `/some/path`. The pattern\n * `*` with `{root:'/some/path'}` will return all the entries in\n * the cwd, not the entries in `/some/path`.\n *\n * To start absolute and non-absolute patterns in the same\n * path, you can use `{root:''}`. However, be aware that on\n * Windows systems, a pattern like `x:/*` or `//host/share/*` will\n * _always_ start in the `x:/` or `//host/share` directory,\n * regardless of the `root` setting.\n */\n root?: string\n\n /**\n * A [PathScurry](http://npm.im/path-scurry) object used\n * to traverse the file system. If the `nocase` option is set\n * explicitly, then any provided `scurry` object must match this\n * setting.\n */\n scurry?: PathScurry\n\n /**\n * Call `lstat()` on all entries, whether required or not to determine\n * if it's a valid match. When used with {@link withFileTypes}, this means\n * that matches will include data such as modified time, permissions, and\n * so on. Note that this will incur a performance cost due to the added\n * system calls.\n */\n stat?: boolean\n\n /**\n * An AbortSignal which will cancel the Glob walk when\n * triggered.\n */\n signal?: AbortSignal\n\n /**\n * Use `\\\\` as a path separator _only_, and\n * _never_ as an escape character. If set, all `\\\\` characters are\n * replaced with `/` in the pattern.\n *\n * Note that this makes it **impossible** to match against paths\n * containing literal glob pattern characters, but allows matching\n * with patterns constructed using `path.join()` and\n * `path.resolve()` on Windows platforms, mimicking the (buggy!)\n * behavior of Glob v7 and before on Windows. Please use with\n * caution, and be mindful of [the caveat below about Windows\n * paths](#windows). (For legacy reasons, this is also set if\n * `allowWindowsEscape` is set to the exact value `false`.)\n */\n windowsPathsNoEscape?: boolean\n\n /**\n * Return [PathScurry](http://npm.im/path-scurry)\n * `Path` objects instead of strings. These are similar to a\n * NodeJS `Dirent` object, but with additional methods and\n * properties.\n *\n * Conflicts with {@link absolute}\n */\n withFileTypes?: boolean\n\n /**\n * An fs implementation to override some or all of the defaults. See\n * http://npm.im/path-scurry for details about what can be overridden.\n */\n fs?: FSOption\n\n /**\n * Just passed along to Minimatch. Note that this makes all pattern\n * matching operations slower and *extremely* noisy.\n */\n debug?: boolean\n\n /**\n * Return `/` delimited paths, even on Windows.\n *\n * On posix systems, this has no effect. But, on Windows, it means that\n * paths will be `/` delimited, and absolute paths will be their full\n * resolved UNC forms, eg instead of `'C:\\\\foo\\\\bar'`, it would return\n * `'//?/C:/foo/bar'`\n */\n posix?: boolean\n\n /**\n * Do not match any children of any matches. For example, the pattern\n * `**\\/foo` would match `a/foo`, but not `a/foo/b/foo` in this mode.\n *\n * This is especially useful for cases like \"find all `node_modules`\n * folders, but not the ones in `node_modules`\".\n *\n * In order to support this, the `Ignore` implementation must support an\n * `add(pattern: string)` method. If using the default `Ignore` class, then\n * this is fine, but if this is set to `false`, and a custom `Ignore` is\n * provided that does not have an `add()` method, then it will throw an\n * error.\n *\n * **Caveat** It *only* ignores matches that would be a descendant of a\n * previous match, and only if that descendant is matched *after* the\n * ancestor is encountered. Since the file system walk happens in\n * indeterminate order, it's possible that a match will already be added\n * before its ancestor, if multiple or braced patterns are used.\n *\n * For example:\n *\n * ```ts\n * const results = await glob([\n * // likely to match first, since it's just a stat\n * 'a/b/c/d/e/f',\n *\n * // this pattern is more complicated! It must to various readdir()\n * // calls and test the results against a regular expression, and that\n * // is certainly going to take a little bit longer.\n * //\n * // So, later on, it encounters a match at 'a/b/c/d/e', but it's too\n * // late to ignore a/b/c/d/e/f, because it's already been emitted.\n * 'a/[bdf]/?/[a-z]/*',\n * ], { includeChildMatches: false })\n * ```\n *\n * It's best to only set this to `false` if you can be reasonably sure that\n * no components of the pattern will potentially match one another's file\n * system descendants, or if the occasional included child entry will not\n * cause problems.\n *\n * @default true\n */\n includeChildMatches?: boolean\n}\n\nexport type GlobOptionsWithFileTypesTrue = GlobOptions & {\n withFileTypes: true\n // string options not relevant if returning Path objects.\n absolute?: undefined\n mark?: undefined\n posix?: undefined\n}\n\nexport type GlobOptionsWithFileTypesFalse = GlobOptions & {\n withFileTypes?: false\n}\n\nexport type GlobOptionsWithFileTypesUnset = GlobOptions & {\n withFileTypes?: undefined\n}\n\nexport type Result =\n Opts extends GlobOptionsWithFileTypesTrue ? Path\n : Opts extends GlobOptionsWithFileTypesFalse ? string\n : Opts extends GlobOptionsWithFileTypesUnset ? string\n : string | Path\nexport type Results = Result[]\n\nexport type FileTypes =\n Opts extends GlobOptionsWithFileTypesTrue ? true\n : Opts extends GlobOptionsWithFileTypesFalse ? false\n : Opts extends GlobOptionsWithFileTypesUnset ? false\n : boolean\n\n/**\n * An object that can perform glob pattern traversals.\n */\nexport class Glob implements GlobOptions {\n absolute?: boolean\n cwd: string\n root?: string\n dot: boolean\n dotRelative: boolean\n follow: boolean\n ignore?: string | string[] | IgnoreLike\n magicalBraces: boolean\n mark?: boolean\n matchBase: boolean\n maxDepth: number\n nobrace: boolean\n nocase: boolean\n nodir: boolean\n noext: boolean\n noglobstar: boolean\n pattern: string[]\n platform: NodeJS.Platform\n realpath: boolean\n scurry: PathScurry\n stat: boolean\n signal?: AbortSignal\n windowsPathsNoEscape: boolean\n withFileTypes: FileTypes\n includeChildMatches: boolean\n\n /**\n * The options provided to the constructor.\n */\n opts: Opts\n\n /**\n * An array of parsed immutable {@link Pattern} objects.\n */\n patterns: Pattern[]\n\n /**\n * All options are stored as properties on the `Glob` object.\n *\n * See {@link GlobOptions} for full options descriptions.\n *\n * Note that a previous `Glob` object can be passed as the\n * `GlobOptions` to another `Glob` instantiation to re-use settings\n * and caches with a new pattern.\n *\n * Traversal functions can be called multiple times to run the walk\n * again.\n */\n constructor(pattern: string | string[], opts: Opts) {\n /* c8 ignore start */\n if (!opts) throw new TypeError('glob options required')\n /* c8 ignore stop */\n this.withFileTypes = !!opts.withFileTypes as FileTypes\n this.signal = opts.signal\n this.follow = !!opts.follow\n this.dot = !!opts.dot\n this.dotRelative = !!opts.dotRelative\n this.nodir = !!opts.nodir\n this.mark = !!opts.mark\n if (!opts.cwd) {\n this.cwd = ''\n } else if (opts.cwd instanceof URL || opts.cwd.startsWith('file://')) {\n opts.cwd = fileURLToPath(opts.cwd)\n }\n this.cwd = opts.cwd || ''\n this.root = opts.root\n this.magicalBraces = !!opts.magicalBraces\n this.nobrace = !!opts.nobrace\n this.noext = !!opts.noext\n this.realpath = !!opts.realpath\n this.absolute = opts.absolute\n this.includeChildMatches = opts.includeChildMatches !== false\n\n this.noglobstar = !!opts.noglobstar\n this.matchBase = !!opts.matchBase\n this.maxDepth =\n typeof opts.maxDepth === 'number' ? opts.maxDepth : Infinity\n this.stat = !!opts.stat\n this.ignore = opts.ignore\n\n if (this.withFileTypes && this.absolute !== undefined) {\n throw new Error('cannot set absolute and withFileTypes:true')\n }\n\n if (typeof pattern === 'string') {\n pattern = [pattern]\n }\n\n this.windowsPathsNoEscape =\n !!opts.windowsPathsNoEscape ||\n (opts as { allowWindowsEscape?: boolean }).allowWindowsEscape ===\n false\n\n if (this.windowsPathsNoEscape) {\n pattern = pattern.map(p => p.replace(/\\\\/g, '/'))\n }\n\n if (this.matchBase) {\n if (opts.noglobstar) {\n throw new TypeError('base matching requires globstar')\n }\n pattern = pattern.map(p => (p.includes('/') ? p : `./**/${p}`))\n }\n\n this.pattern = pattern\n\n this.platform = opts.platform || defaultPlatform\n this.opts = { ...opts, platform: this.platform }\n if (opts.scurry) {\n this.scurry = opts.scurry\n if (\n opts.nocase !== undefined &&\n opts.nocase !== opts.scurry.nocase\n ) {\n throw new Error('nocase option contradicts provided scurry option')\n }\n } else {\n const Scurry =\n opts.platform === 'win32' ? PathScurryWin32\n : opts.platform === 'darwin' ? PathScurryDarwin\n : opts.platform ? PathScurryPosix\n : PathScurry\n this.scurry = new Scurry(this.cwd, {\n nocase: opts.nocase,\n fs: opts.fs,\n })\n }\n this.nocase = this.scurry.nocase\n\n // If you do nocase:true on a case-sensitive file system, then\n // we need to use regexps instead of strings for non-magic\n // path portions, because statting `aBc` won't return results\n // for the file `AbC` for example.\n const nocaseMagicOnly =\n this.platform === 'darwin' || this.platform === 'win32'\n\n const mmo: MinimatchOptions = {\n // default nocase based on platform\n ...opts,\n dot: this.dot,\n matchBase: this.matchBase,\n nobrace: this.nobrace,\n nocase: this.nocase,\n nocaseMagicOnly,\n nocomment: true,\n noext: this.noext,\n nonegate: true,\n optimizationLevel: 2,\n platform: this.platform,\n windowsPathsNoEscape: this.windowsPathsNoEscape,\n debug: !!this.opts.debug,\n }\n\n const mms = this.pattern.map(p => new Minimatch(p, mmo))\n const [matchSet, globParts] = mms.reduce(\n (set: [MatchSet, GlobParts], m) => {\n set[0].push(...m.set)\n set[1].push(...m.globParts)\n return set\n },\n [[], []],\n )\n this.patterns = matchSet.map((set, i) => {\n const g = globParts[i]\n /* c8 ignore start */\n if (!g) throw new Error('invalid pattern object')\n /* c8 ignore stop */\n return new Pattern(set, g, 0, this.platform)\n })\n }\n\n /**\n * Returns a Promise that resolves to the results array.\n */\n async walk(): Promise>\n async walk(): Promise<(string | Path)[]> {\n // Walkers always return array of Path objects, so we just have to\n // coerce them into the right shape. It will have already called\n // realpath() if the option was set to do so, so we know that's cached.\n // start out knowing the cwd, at least\n return [\n ...(await new GlobWalker(this.patterns, this.scurry.cwd, {\n ...this.opts,\n maxDepth:\n this.maxDepth !== Infinity ?\n this.maxDepth + this.scurry.cwd.depth()\n : Infinity,\n platform: this.platform,\n nocase: this.nocase,\n includeChildMatches: this.includeChildMatches,\n }).walk()),\n ]\n }\n\n /**\n * synchronous {@link Glob.walk}\n */\n walkSync(): Results\n walkSync(): (string | Path)[] {\n return [\n ...new GlobWalker(this.patterns, this.scurry.cwd, {\n ...this.opts,\n maxDepth:\n this.maxDepth !== Infinity ?\n this.maxDepth + this.scurry.cwd.depth()\n : Infinity,\n platform: this.platform,\n nocase: this.nocase,\n includeChildMatches: this.includeChildMatches,\n }).walkSync(),\n ]\n }\n\n /**\n * Stream results asynchronously.\n */\n stream(): Minipass, Result>\n stream(): Minipass {\n return new GlobStream(this.patterns, this.scurry.cwd, {\n ...this.opts,\n maxDepth:\n this.maxDepth !== Infinity ?\n this.maxDepth + this.scurry.cwd.depth()\n : Infinity,\n platform: this.platform,\n nocase: this.nocase,\n includeChildMatches: this.includeChildMatches,\n }).stream()\n }\n\n /**\n * Stream results synchronously.\n */\n streamSync(): Minipass, Result>\n streamSync(): Minipass {\n return new GlobStream(this.patterns, this.scurry.cwd, {\n ...this.opts,\n maxDepth:\n this.maxDepth !== Infinity ?\n this.maxDepth + this.scurry.cwd.depth()\n : Infinity,\n platform: this.platform,\n nocase: this.nocase,\n includeChildMatches: this.includeChildMatches,\n }).streamSync()\n }\n\n /**\n * Default sync iteration function. Returns a Generator that\n * iterates over the results.\n */\n iterateSync(): Generator, void, void> {\n return this.streamSync()[Symbol.iterator]()\n }\n [Symbol.iterator]() {\n return this.iterateSync()\n }\n\n /**\n * Default async iteration function. Returns an AsyncGenerator that\n * iterates over the results.\n */\n iterate(): AsyncGenerator, void, void> {\n return this.stream()[Symbol.asyncIterator]()\n }\n [Symbol.asyncIterator]() {\n return this.iterate()\n }\n}\n"]} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.d.ts b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.d.ts deleted file mode 100644 index 8aec3bd9725175..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { GlobOptions } from './glob.js'; -/** - * Return true if the patterns provided contain any magic glob characters, - * given the options provided. - * - * Brace expansion is not considered "magic" unless the `magicalBraces` option - * is set, as brace expansion just turns one string into an array of strings. - * So a pattern like `'x{a,b}y'` would return `false`, because `'xay'` and - * `'xby'` both do not contain any magic glob characters, and it's treated the - * same as if you had called it on `['xay', 'xby']`. When `magicalBraces:true` - * is in the options, brace expansion _is_ treated as a pattern having magic. - */ -export declare const hasMagic: (pattern: string | string[], options?: GlobOptions) => boolean; -//# sourceMappingURL=has-magic.d.ts.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.d.ts.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.d.ts.map deleted file mode 100644 index b24dd4ec47e0bb..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"has-magic.d.ts","sourceRoot":"","sources":["../../src/has-magic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAEvC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,YACV,MAAM,GAAG,MAAM,EAAE,YACjB,WAAW,KACnB,OAQF,CAAA"} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.js b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.js deleted file mode 100644 index 0918bd57e0f1c2..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.hasMagic = void 0; -const minimatch_1 = require("minimatch"); -/** - * Return true if the patterns provided contain any magic glob characters, - * given the options provided. - * - * Brace expansion is not considered "magic" unless the `magicalBraces` option - * is set, as brace expansion just turns one string into an array of strings. - * So a pattern like `'x{a,b}y'` would return `false`, because `'xay'` and - * `'xby'` both do not contain any magic glob characters, and it's treated the - * same as if you had called it on `['xay', 'xby']`. When `magicalBraces:true` - * is in the options, brace expansion _is_ treated as a pattern having magic. - */ -const hasMagic = (pattern, options = {}) => { - if (!Array.isArray(pattern)) { - pattern = [pattern]; - } - for (const p of pattern) { - if (new minimatch_1.Minimatch(p, options).hasMagic()) - return true; - } - return false; -}; -exports.hasMagic = hasMagic; -//# sourceMappingURL=has-magic.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.js.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.js.map deleted file mode 100644 index 44deab29058276..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/has-magic.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"has-magic.js","sourceRoot":"","sources":["../../src/has-magic.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAGrC;;;;;;;;;;GAUG;AACI,MAAM,QAAQ,GAAG,CACtB,OAA0B,EAC1B,UAAuB,EAAE,EAChB,EAAE;IACX,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,CAAA;IACrB,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,IAAI,qBAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE;YAAE,OAAO,IAAI,CAAA;IACvD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAXY,QAAA,QAAQ,YAWpB","sourcesContent":["import { Minimatch } from 'minimatch'\nimport { GlobOptions } from './glob.js'\n\n/**\n * Return true if the patterns provided contain any magic glob characters,\n * given the options provided.\n *\n * Brace expansion is not considered \"magic\" unless the `magicalBraces` option\n * is set, as brace expansion just turns one string into an array of strings.\n * So a pattern like `'x{a,b}y'` would return `false`, because `'xay'` and\n * `'xby'` both do not contain any magic glob characters, and it's treated the\n * same as if you had called it on `['xay', 'xby']`. When `magicalBraces:true`\n * is in the options, brace expansion _is_ treated as a pattern having magic.\n */\nexport const hasMagic = (\n pattern: string | string[],\n options: GlobOptions = {},\n): boolean => {\n if (!Array.isArray(pattern)) {\n pattern = [pattern]\n }\n for (const p of pattern) {\n if (new Minimatch(p, options).hasMagic()) return true\n }\n return false\n}\n"]} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.d.ts b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.d.ts deleted file mode 100644 index 1893b16df877c9..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Minimatch, MinimatchOptions } from 'minimatch'; -import { Path } from 'path-scurry'; -import { GlobWalkerOpts } from './walker.js'; -export interface IgnoreLike { - ignored?: (p: Path) => boolean; - childrenIgnored?: (p: Path) => boolean; - add?: (ignore: string) => void; -} -/** - * Class used to process ignored patterns - */ -export declare class Ignore implements IgnoreLike { - relative: Minimatch[]; - relativeChildren: Minimatch[]; - absolute: Minimatch[]; - absoluteChildren: Minimatch[]; - platform: NodeJS.Platform; - mmopts: MinimatchOptions; - constructor(ignored: string[], { nobrace, nocase, noext, noglobstar, platform, }: GlobWalkerOpts); - add(ign: string): void; - ignored(p: Path): boolean; - childrenIgnored(p: Path): boolean; -} -//# sourceMappingURL=ignore.d.ts.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.d.ts.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.d.ts.map deleted file mode 100644 index 57d6ab6153d770..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ignore.d.ts","sourceRoot":"","sources":["../../src/ignore.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,OAAO,CAAA;IAC9B,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,OAAO,CAAA;IACtC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B;AAWD;;GAEG;AACH,qBAAa,MAAO,YAAW,UAAU;IACvC,QAAQ,EAAE,SAAS,EAAE,CAAA;IACrB,gBAAgB,EAAE,SAAS,EAAE,CAAA;IAC7B,QAAQ,EAAE,SAAS,EAAE,CAAA;IACrB,gBAAgB,EAAE,SAAS,EAAE,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAA;IACzB,MAAM,EAAE,gBAAgB,CAAA;gBAGtB,OAAO,EAAE,MAAM,EAAE,EACjB,EACE,OAAO,EACP,MAAM,EACN,KAAK,EACL,UAAU,EACV,QAA0B,GAC3B,EAAE,cAAc;IAqBnB,GAAG,CAAC,GAAG,EAAE,MAAM;IAyCf,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO;IAczB,eAAe,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO;CAWlC"} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.js b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.js deleted file mode 100644 index 5f1fde0680dea3..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.js +++ /dev/null @@ -1,119 +0,0 @@ -"use strict"; -// give it a pattern, and it'll be able to tell you if -// a given path should be ignored. -// Ignoring a path ignores its children if the pattern ends in /** -// Ignores are always parsed in dot:true mode -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Ignore = void 0; -const minimatch_1 = require("minimatch"); -const pattern_js_1 = require("./pattern.js"); -const defaultPlatform = (typeof process === 'object' && - process && - typeof process.platform === 'string') ? - process.platform - : 'linux'; -/** - * Class used to process ignored patterns - */ -class Ignore { - relative; - relativeChildren; - absolute; - absoluteChildren; - platform; - mmopts; - constructor(ignored, { nobrace, nocase, noext, noglobstar, platform = defaultPlatform, }) { - this.relative = []; - this.absolute = []; - this.relativeChildren = []; - this.absoluteChildren = []; - this.platform = platform; - this.mmopts = { - dot: true, - nobrace, - nocase, - noext, - noglobstar, - optimizationLevel: 2, - platform, - nocomment: true, - nonegate: true, - }; - for (const ign of ignored) - this.add(ign); - } - add(ign) { - // this is a little weird, but it gives us a clean set of optimized - // minimatch matchers, without getting tripped up if one of them - // ends in /** inside a brace section, and it's only inefficient at - // the start of the walk, not along it. - // It'd be nice if the Pattern class just had a .test() method, but - // handling globstars is a bit of a pita, and that code already lives - // in minimatch anyway. - // Another way would be if maybe Minimatch could take its set/globParts - // as an option, and then we could at least just use Pattern to test - // for absolute-ness. - // Yet another way, Minimatch could take an array of glob strings, and - // a cwd option, and do the right thing. - const mm = new minimatch_1.Minimatch(ign, this.mmopts); - for (let i = 0; i < mm.set.length; i++) { - const parsed = mm.set[i]; - const globParts = mm.globParts[i]; - /* c8 ignore start */ - if (!parsed || !globParts) { - throw new Error('invalid pattern object'); - } - // strip off leading ./ portions - // https://github.com/isaacs/node-glob/issues/570 - while (parsed[0] === '.' && globParts[0] === '.') { - parsed.shift(); - globParts.shift(); - } - /* c8 ignore stop */ - const p = new pattern_js_1.Pattern(parsed, globParts, 0, this.platform); - const m = new minimatch_1.Minimatch(p.globString(), this.mmopts); - const children = globParts[globParts.length - 1] === '**'; - const absolute = p.isAbsolute(); - if (absolute) - this.absolute.push(m); - else - this.relative.push(m); - if (children) { - if (absolute) - this.absoluteChildren.push(m); - else - this.relativeChildren.push(m); - } - } - } - ignored(p) { - const fullpath = p.fullpath(); - const fullpaths = `${fullpath}/`; - const relative = p.relative() || '.'; - const relatives = `${relative}/`; - for (const m of this.relative) { - if (m.match(relative) || m.match(relatives)) - return true; - } - for (const m of this.absolute) { - if (m.match(fullpath) || m.match(fullpaths)) - return true; - } - return false; - } - childrenIgnored(p) { - const fullpath = p.fullpath() + '/'; - const relative = (p.relative() || '.') + '/'; - for (const m of this.relativeChildren) { - if (m.match(relative)) - return true; - } - for (const m of this.absoluteChildren) { - if (m.match(fullpath)) - return true; - } - return false; - } -} -exports.Ignore = Ignore; -//# sourceMappingURL=ignore.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.js.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.js.map deleted file mode 100644 index d9dfdfa34ab5c0..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/ignore.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ignore.js","sourceRoot":"","sources":["../../src/ignore.ts"],"names":[],"mappings":"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","sourcesContent":["// give it a pattern, and it'll be able to tell you if\n// a given path should be ignored.\n// Ignoring a path ignores its children if the pattern ends in /**\n// Ignores are always parsed in dot:true mode\n\nimport { Minimatch, MinimatchOptions } from 'minimatch'\nimport { Path } from 'path-scurry'\nimport { Pattern } from './pattern.js'\nimport { GlobWalkerOpts } from './walker.js'\n\nexport interface IgnoreLike {\n ignored?: (p: Path) => boolean\n childrenIgnored?: (p: Path) => boolean\n add?: (ignore: string) => void\n}\n\nconst defaultPlatform: NodeJS.Platform =\n (\n typeof process === 'object' &&\n process &&\n typeof process.platform === 'string'\n ) ?\n process.platform\n : 'linux'\n\n/**\n * Class used to process ignored patterns\n */\nexport class Ignore implements IgnoreLike {\n relative: Minimatch[]\n relativeChildren: Minimatch[]\n absolute: Minimatch[]\n absoluteChildren: Minimatch[]\n platform: NodeJS.Platform\n mmopts: MinimatchOptions\n\n constructor(\n ignored: string[],\n {\n nobrace,\n nocase,\n noext,\n noglobstar,\n platform = defaultPlatform,\n }: GlobWalkerOpts,\n ) {\n this.relative = []\n this.absolute = []\n this.relativeChildren = []\n this.absoluteChildren = []\n this.platform = platform\n this.mmopts = {\n dot: true,\n nobrace,\n nocase,\n noext,\n noglobstar,\n optimizationLevel: 2,\n platform,\n nocomment: true,\n nonegate: true,\n }\n for (const ign of ignored) this.add(ign)\n }\n\n add(ign: string) {\n // this is a little weird, but it gives us a clean set of optimized\n // minimatch matchers, without getting tripped up if one of them\n // ends in /** inside a brace section, and it's only inefficient at\n // the start of the walk, not along it.\n // It'd be nice if the Pattern class just had a .test() method, but\n // handling globstars is a bit of a pita, and that code already lives\n // in minimatch anyway.\n // Another way would be if maybe Minimatch could take its set/globParts\n // as an option, and then we could at least just use Pattern to test\n // for absolute-ness.\n // Yet another way, Minimatch could take an array of glob strings, and\n // a cwd option, and do the right thing.\n const mm = new Minimatch(ign, this.mmopts)\n for (let i = 0; i < mm.set.length; i++) {\n const parsed = mm.set[i]\n const globParts = mm.globParts[i]\n /* c8 ignore start */\n if (!parsed || !globParts) {\n throw new Error('invalid pattern object')\n }\n // strip off leading ./ portions\n // https://github.com/isaacs/node-glob/issues/570\n while (parsed[0] === '.' && globParts[0] === '.') {\n parsed.shift()\n globParts.shift()\n }\n /* c8 ignore stop */\n const p = new Pattern(parsed, globParts, 0, this.platform)\n const m = new Minimatch(p.globString(), this.mmopts)\n const children = globParts[globParts.length - 1] === '**'\n const absolute = p.isAbsolute()\n if (absolute) this.absolute.push(m)\n else this.relative.push(m)\n if (children) {\n if (absolute) this.absoluteChildren.push(m)\n else this.relativeChildren.push(m)\n }\n }\n }\n\n ignored(p: Path): boolean {\n const fullpath = p.fullpath()\n const fullpaths = `${fullpath}/`\n const relative = p.relative() || '.'\n const relatives = `${relative}/`\n for (const m of this.relative) {\n if (m.match(relative) || m.match(relatives)) return true\n }\n for (const m of this.absolute) {\n if (m.match(fullpath) || m.match(fullpaths)) return true\n }\n return false\n }\n\n childrenIgnored(p: Path): boolean {\n const fullpath = p.fullpath() + '/'\n const relative = (p.relative() || '.') + '/'\n for (const m of this.relativeChildren) {\n if (m.match(relative)) return true\n }\n for (const m of this.absoluteChildren) {\n if (m.match(fullpath)) return true\n }\n return false\n }\n}\n"]} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.d.ts b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.d.ts deleted file mode 100644 index 9c326ddc895b61..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.d.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { Minipass } from 'minipass'; -import { Path } from 'path-scurry'; -import type { GlobOptions, GlobOptionsWithFileTypesFalse, GlobOptionsWithFileTypesTrue, GlobOptionsWithFileTypesUnset } from './glob.js'; -import { Glob } from './glob.js'; -export { escape, unescape } from 'minimatch'; -export type { FSOption, Path, WalkOptions, WalkOptionsWithFileTypesTrue, WalkOptionsWithFileTypesUnset, } from 'path-scurry'; -export { Glob } from './glob.js'; -export type { GlobOptions, GlobOptionsWithFileTypesFalse, GlobOptionsWithFileTypesTrue, GlobOptionsWithFileTypesUnset, } from './glob.js'; -export { hasMagic } from './has-magic.js'; -export { Ignore } from './ignore.js'; -export type { IgnoreLike } from './ignore.js'; -export type { MatchStream } from './walker.js'; -/** - * Syncronous form of {@link globStream}. Will read all the matches as fast as - * you consume them, even all in a single tick if you consume them immediately, - * but will still respond to backpressure if they're not consumed immediately. - */ -export declare function globStreamSync(pattern: string | string[], options: GlobOptionsWithFileTypesTrue): Minipass; -export declare function globStreamSync(pattern: string | string[], options: GlobOptionsWithFileTypesFalse): Minipass; -export declare function globStreamSync(pattern: string | string[], options: GlobOptionsWithFileTypesUnset): Minipass; -export declare function globStreamSync(pattern: string | string[], options: GlobOptions): Minipass | Minipass; -/** - * Return a stream that emits all the strings or `Path` objects and - * then emits `end` when completed. - */ -export declare function globStream(pattern: string | string[], options: GlobOptionsWithFileTypesFalse): Minipass; -export declare function globStream(pattern: string | string[], options: GlobOptionsWithFileTypesTrue): Minipass; -export declare function globStream(pattern: string | string[], options?: GlobOptionsWithFileTypesUnset | undefined): Minipass; -export declare function globStream(pattern: string | string[], options: GlobOptions): Minipass | Minipass; -/** - * Synchronous form of {@link glob} - */ -export declare function globSync(pattern: string | string[], options: GlobOptionsWithFileTypesFalse): string[]; -export declare function globSync(pattern: string | string[], options: GlobOptionsWithFileTypesTrue): Path[]; -export declare function globSync(pattern: string | string[], options?: GlobOptionsWithFileTypesUnset | undefined): string[]; -export declare function globSync(pattern: string | string[], options: GlobOptions): Path[] | string[]; -/** - * Perform an asynchronous glob search for the pattern(s) specified. Returns - * [Path](https://isaacs.github.io/path-scurry/classes/PathBase) objects if the - * {@link withFileTypes} option is set to `true`. See {@link GlobOptions} for - * full option descriptions. - */ -declare function glob_(pattern: string | string[], options?: GlobOptionsWithFileTypesUnset | undefined): Promise; -declare function glob_(pattern: string | string[], options: GlobOptionsWithFileTypesTrue): Promise; -declare function glob_(pattern: string | string[], options: GlobOptionsWithFileTypesFalse): Promise; -declare function glob_(pattern: string | string[], options: GlobOptions): Promise; -/** - * Return a sync iterator for walking glob pattern matches. - */ -export declare function globIterateSync(pattern: string | string[], options?: GlobOptionsWithFileTypesUnset | undefined): Generator; -export declare function globIterateSync(pattern: string | string[], options: GlobOptionsWithFileTypesTrue): Generator; -export declare function globIterateSync(pattern: string | string[], options: GlobOptionsWithFileTypesFalse): Generator; -export declare function globIterateSync(pattern: string | string[], options: GlobOptions): Generator | Generator; -/** - * Return an async iterator for walking glob pattern matches. - */ -export declare function globIterate(pattern: string | string[], options?: GlobOptionsWithFileTypesUnset | undefined): AsyncGenerator; -export declare function globIterate(pattern: string | string[], options: GlobOptionsWithFileTypesTrue): AsyncGenerator; -export declare function globIterate(pattern: string | string[], options: GlobOptionsWithFileTypesFalse): AsyncGenerator; -export declare function globIterate(pattern: string | string[], options: GlobOptions): AsyncGenerator | AsyncGenerator; -export declare const streamSync: typeof globStreamSync; -export declare const stream: typeof globStream & { - sync: typeof globStreamSync; -}; -export declare const iterateSync: typeof globIterateSync; -export declare const iterate: typeof globIterate & { - sync: typeof globIterateSync; -}; -export declare const sync: typeof globSync & { - stream: typeof globStreamSync; - iterate: typeof globIterateSync; -}; -export declare const glob: typeof glob_ & { - glob: typeof glob_; - globSync: typeof globSync; - sync: typeof globSync & { - stream: typeof globStreamSync; - iterate: typeof globIterateSync; - }; - globStream: typeof globStream; - stream: typeof globStream & { - sync: typeof globStreamSync; - }; - globStreamSync: typeof globStreamSync; - streamSync: typeof globStreamSync; - globIterate: typeof globIterate; - iterate: typeof globIterate & { - sync: typeof globIterateSync; - }; - globIterateSync: typeof globIterateSync; - iterateSync: typeof globIterateSync; - Glob: typeof Glob; - hasMagic: (pattern: string | string[], options?: GlobOptions) => boolean; - escape: (s: string, { windowsPathsNoEscape, }?: Pick) => string; - unescape: (s: string, { windowsPathsNoEscape, }?: Pick) => string; -}; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.d.ts.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.d.ts.map deleted file mode 100644 index 5fb32252b63747..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.js b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.js deleted file mode 100644 index 151495d170efa2..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.js +++ /dev/null @@ -1,68 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -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 = globStreamSync; -exports.globStream = globStream; -exports.globSync = globSync; -exports.globIterateSync = globIterateSync; -exports.globIterate = globIterate; -const minimatch_1 = require("minimatch"); -const glob_js_1 = require("./glob.js"); -const has_magic_js_1 = require("./has-magic.js"); -var minimatch_2 = require("minimatch"); -Object.defineProperty(exports, "escape", { enumerable: true, get: function () { return minimatch_2.escape; } }); -Object.defineProperty(exports, "unescape", { enumerable: true, get: function () { return minimatch_2.unescape; } }); -var glob_js_2 = require("./glob.js"); -Object.defineProperty(exports, "Glob", { enumerable: true, get: function () { return glob_js_2.Glob; } }); -var has_magic_js_2 = require("./has-magic.js"); -Object.defineProperty(exports, "hasMagic", { enumerable: true, get: function () { return has_magic_js_2.hasMagic; } }); -var ignore_js_1 = require("./ignore.js"); -Object.defineProperty(exports, "Ignore", { enumerable: true, get: function () { return ignore_js_1.Ignore; } }); -function globStreamSync(pattern, options = {}) { - return new glob_js_1.Glob(pattern, options).streamSync(); -} -function globStream(pattern, options = {}) { - return new glob_js_1.Glob(pattern, options).stream(); -} -function globSync(pattern, options = {}) { - return new glob_js_1.Glob(pattern, options).walkSync(); -} -async function glob_(pattern, options = {}) { - return new glob_js_1.Glob(pattern, options).walk(); -} -function globIterateSync(pattern, options = {}) { - return new glob_js_1.Glob(pattern, options).iterateSync(); -} -function globIterate(pattern, options = {}) { - return new glob_js_1.Glob(pattern, options).iterate(); -} -// aliases: glob.sync.stream() glob.stream.sync() glob.sync() etc -exports.streamSync = globStreamSync; -exports.stream = Object.assign(globStream, { sync: globStreamSync }); -exports.iterateSync = globIterateSync; -exports.iterate = Object.assign(globIterate, { - sync: globIterateSync, -}); -exports.sync = Object.assign(globSync, { - stream: globStreamSync, - iterate: globIterateSync, -}); -exports.glob = Object.assign(glob_, { - glob: glob_, - globSync, - sync: exports.sync, - globStream, - stream: exports.stream, - globStreamSync, - streamSync: exports.streamSync, - globIterate, - iterate: exports.iterate, - globIterateSync, - iterateSync: exports.iterateSync, - Glob: glob_js_1.Glob, - hasMagic: has_magic_js_1.hasMagic, - escape: minimatch_1.escape, - unescape: minimatch_1.unescape, -}); -exports.glob.glob = exports.glob; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.js.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.js.map deleted file mode 100644 index e648b1d01939bc..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAqDA,wCAKC;AAsBD,gCAKC;AAqBD,4BAKC;AAkDD,0CAKC;AAqBD,kCAKC;AAhMD,yCAA4C;AAS5C,uCAAgC;AAChC,iDAAyC;AAEzC,uCAA4C;AAAnC,mGAAA,MAAM,OAAA;AAAE,qGAAA,QAAQ,OAAA;AAQzB,qCAAgC;AAAvB,+FAAA,IAAI,OAAA;AAOb,+CAAyC;AAAhC,wGAAA,QAAQ,OAAA;AACjB,yCAAoC;AAA3B,mGAAA,MAAM,OAAA;AAyBf,SAAgB,cAAc,CAC5B,OAA0B,EAC1B,UAAuB,EAAE;IAEzB,OAAO,IAAI,cAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,UAAU,EAAE,CAAA;AAChD,CAAC;AAsBD,SAAgB,UAAU,CACxB,OAA0B,EAC1B,UAAuB,EAAE;IAEzB,OAAO,IAAI,cAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;AAC5C,CAAC;AAqBD,SAAgB,QAAQ,CACtB,OAA0B,EAC1B,UAAuB,EAAE;IAEzB,OAAO,IAAI,cAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAA;AAC9C,CAAC;AAwBD,KAAK,UAAU,KAAK,CAClB,OAA0B,EAC1B,UAAuB,EAAE;IAEzB,OAAO,IAAI,cAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;AAC1C,CAAC;AAqBD,SAAgB,eAAe,CAC7B,OAA0B,EAC1B,UAAuB,EAAE;IAEzB,OAAO,IAAI,cAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;AACjD,CAAC;AAqBD,SAAgB,WAAW,CACzB,OAA0B,EAC1B,UAAuB,EAAE;IAEzB,OAAO,IAAI,cAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAA;AAC7C,CAAC;AAED,iEAAiE;AACpD,QAAA,UAAU,GAAG,cAAc,CAAA;AAC3B,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAA;AAC5D,QAAA,WAAW,GAAG,eAAe,CAAA;AAC7B,QAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE;IAChD,IAAI,EAAE,eAAe;CACtB,CAAC,CAAA;AACW,QAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC1C,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,eAAe;CACzB,CAAC,CAAA;AAEW,QAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;IACvC,IAAI,EAAE,KAAK;IACX,QAAQ;IACR,IAAI,EAAJ,YAAI;IACJ,UAAU;IACV,MAAM,EAAN,cAAM;IACN,cAAc;IACd,UAAU,EAAV,kBAAU;IACV,WAAW;IACX,OAAO,EAAP,eAAO;IACP,eAAe;IACf,WAAW,EAAX,mBAAW;IACX,IAAI,EAAJ,cAAI;IACJ,QAAQ,EAAR,uBAAQ;IACR,MAAM,EAAN,kBAAM;IACN,QAAQ,EAAR,oBAAQ;CACT,CAAC,CAAA;AACF,YAAI,CAAC,IAAI,GAAG,YAAI,CAAA","sourcesContent":["import { escape, unescape } from 'minimatch'\nimport { Minipass } from 'minipass'\nimport { Path } from 'path-scurry'\nimport type {\n GlobOptions,\n GlobOptionsWithFileTypesFalse,\n GlobOptionsWithFileTypesTrue,\n GlobOptionsWithFileTypesUnset,\n} from './glob.js'\nimport { Glob } from './glob.js'\nimport { hasMagic } from './has-magic.js'\n\nexport { escape, unescape } from 'minimatch'\nexport type {\n FSOption,\n Path,\n WalkOptions,\n WalkOptionsWithFileTypesTrue,\n WalkOptionsWithFileTypesUnset,\n} from 'path-scurry'\nexport { Glob } from './glob.js'\nexport type {\n GlobOptions,\n GlobOptionsWithFileTypesFalse,\n GlobOptionsWithFileTypesTrue,\n GlobOptionsWithFileTypesUnset,\n} from './glob.js'\nexport { hasMagic } from './has-magic.js'\nexport { Ignore } from './ignore.js'\nexport type { IgnoreLike } from './ignore.js'\nexport type { MatchStream } from './walker.js'\n\n/**\n * Syncronous form of {@link globStream}. Will read all the matches as fast as\n * you consume them, even all in a single tick if you consume them immediately,\n * but will still respond to backpressure if they're not consumed immediately.\n */\nexport function globStreamSync(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesTrue,\n): Minipass\nexport function globStreamSync(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesFalse,\n): Minipass\nexport function globStreamSync(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesUnset,\n): Minipass\nexport function globStreamSync(\n pattern: string | string[],\n options: GlobOptions,\n): Minipass | Minipass\nexport function globStreamSync(\n pattern: string | string[],\n options: GlobOptions = {},\n) {\n return new Glob(pattern, options).streamSync()\n}\n\n/**\n * Return a stream that emits all the strings or `Path` objects and\n * then emits `end` when completed.\n */\nexport function globStream(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesFalse,\n): Minipass\nexport function globStream(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesTrue,\n): Minipass\nexport function globStream(\n pattern: string | string[],\n options?: GlobOptionsWithFileTypesUnset | undefined,\n): Minipass\nexport function globStream(\n pattern: string | string[],\n options: GlobOptions,\n): Minipass | Minipass\nexport function globStream(\n pattern: string | string[],\n options: GlobOptions = {},\n) {\n return new Glob(pattern, options).stream()\n}\n\n/**\n * Synchronous form of {@link glob}\n */\nexport function globSync(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesFalse,\n): string[]\nexport function globSync(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesTrue,\n): Path[]\nexport function globSync(\n pattern: string | string[],\n options?: GlobOptionsWithFileTypesUnset | undefined,\n): string[]\nexport function globSync(\n pattern: string | string[],\n options: GlobOptions,\n): Path[] | string[]\nexport function globSync(\n pattern: string | string[],\n options: GlobOptions = {},\n) {\n return new Glob(pattern, options).walkSync()\n}\n\n/**\n * Perform an asynchronous glob search for the pattern(s) specified. Returns\n * [Path](https://isaacs.github.io/path-scurry/classes/PathBase) objects if the\n * {@link withFileTypes} option is set to `true`. See {@link GlobOptions} for\n * full option descriptions.\n */\nasync function glob_(\n pattern: string | string[],\n options?: GlobOptionsWithFileTypesUnset | undefined,\n): Promise\nasync function glob_(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesTrue,\n): Promise\nasync function glob_(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesFalse,\n): Promise\nasync function glob_(\n pattern: string | string[],\n options: GlobOptions,\n): Promise\nasync function glob_(\n pattern: string | string[],\n options: GlobOptions = {},\n) {\n return new Glob(pattern, options).walk()\n}\n\n/**\n * Return a sync iterator for walking glob pattern matches.\n */\nexport function globIterateSync(\n pattern: string | string[],\n options?: GlobOptionsWithFileTypesUnset | undefined,\n): Generator\nexport function globIterateSync(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesTrue,\n): Generator\nexport function globIterateSync(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesFalse,\n): Generator\nexport function globIterateSync(\n pattern: string | string[],\n options: GlobOptions,\n): Generator | Generator\nexport function globIterateSync(\n pattern: string | string[],\n options: GlobOptions = {},\n) {\n return new Glob(pattern, options).iterateSync()\n}\n\n/**\n * Return an async iterator for walking glob pattern matches.\n */\nexport function globIterate(\n pattern: string | string[],\n options?: GlobOptionsWithFileTypesUnset | undefined,\n): AsyncGenerator\nexport function globIterate(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesTrue,\n): AsyncGenerator\nexport function globIterate(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesFalse,\n): AsyncGenerator\nexport function globIterate(\n pattern: string | string[],\n options: GlobOptions,\n): AsyncGenerator | AsyncGenerator\nexport function globIterate(\n pattern: string | string[],\n options: GlobOptions = {},\n) {\n return new Glob(pattern, options).iterate()\n}\n\n// aliases: glob.sync.stream() glob.stream.sync() glob.sync() etc\nexport const streamSync = globStreamSync\nexport const stream = Object.assign(globStream, { sync: globStreamSync })\nexport const iterateSync = globIterateSync\nexport const iterate = Object.assign(globIterate, {\n sync: globIterateSync,\n})\nexport const sync = Object.assign(globSync, {\n stream: globStreamSync,\n iterate: globIterateSync,\n})\n\nexport const glob = Object.assign(glob_, {\n glob: glob_,\n globSync,\n sync,\n globStream,\n stream,\n globStreamSync,\n streamSync,\n globIterate,\n iterate,\n globIterateSync,\n iterateSync,\n Glob,\n hasMagic,\n escape,\n unescape,\n})\nglob.glob = glob\n"]} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/package.json b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/package.json deleted file mode 100644 index 5bbefffbabee39..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.d.ts b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.d.ts deleted file mode 100644 index 9636df3b54df29..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.d.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { GLOBSTAR } from 'minimatch'; -export type MMPattern = string | RegExp | typeof GLOBSTAR; -export type PatternList = [p: MMPattern, ...rest: MMPattern[]]; -export type UNCPatternList = [ - p0: '', - p1: '', - p2: string, - p3: string, - ...rest: MMPattern[] -]; -export type DrivePatternList = [p0: string, ...rest: MMPattern[]]; -export type AbsolutePatternList = [p0: '', ...rest: MMPattern[]]; -export type GlobList = [p: string, ...rest: string[]]; -/** - * An immutable-ish view on an array of glob parts and their parsed - * results - */ -export declare class Pattern { - #private; - readonly length: number; - constructor(patternList: MMPattern[], globList: string[], index: number, platform: NodeJS.Platform); - /** - * The first entry in the parsed list of patterns - */ - pattern(): MMPattern; - /** - * true of if pattern() returns a string - */ - isString(): boolean; - /** - * true of if pattern() returns GLOBSTAR - */ - isGlobstar(): boolean; - /** - * true if pattern() returns a regexp - */ - isRegExp(): boolean; - /** - * The /-joined set of glob parts that make up this pattern - */ - globString(): string; - /** - * true if there are more pattern parts after this one - */ - hasMore(): boolean; - /** - * The rest of the pattern after this part, or null if this is the end - */ - rest(): Pattern | null; - /** - * true if the pattern represents a //unc/path/ on windows - */ - isUNC(): boolean; - /** - * True if the pattern starts with a drive letter on Windows - */ - isDrive(): boolean; - /** - * True if the pattern is rooted on an absolute path - */ - isAbsolute(): boolean; - /** - * consume the root of the pattern, and return it - */ - root(): string; - /** - * Check to see if the current globstar pattern is allowed to follow - * a symbolic link. - */ - checkFollowGlobstar(): boolean; - /** - * Mark that the current globstar pattern is following a symbolic link - */ - markFollowGlobstar(): boolean; -} -//# sourceMappingURL=pattern.d.ts.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.d.ts.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.d.ts.map deleted file mode 100644 index cdf322346317d8..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../../src/pattern.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,QAAQ,CAAA;AAGzD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AAC9D,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,GAAG,IAAI,EAAE,SAAS,EAAE;CACrB,CAAA;AACD,MAAM,MAAM,gBAAgB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AACjE,MAAM,MAAM,mBAAmB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AAChE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AAMrD;;;GAGG;AACH,qBAAa,OAAO;;IAIlB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;gBAUrB,WAAW,EAAE,SAAS,EAAE,EACxB,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;IA6D3B;;OAEG;IACH,OAAO,IAAI,SAAS;IAIpB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAGnB;;OAEG;IACH,UAAU,IAAI,OAAO;IAGrB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,UAAU,IAAI,MAAM;IAUpB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,IAAI,IAAI,OAAO,GAAG,IAAI;IAetB;;OAEG;IACH,KAAK,IAAI,OAAO;IAoBhB;;OAEG;IACH,OAAO,IAAI,OAAO;IAelB;;OAEG;IACH,UAAU,IAAI,OAAO;IAUrB;;OAEG;IACH,IAAI,IAAI,MAAM;IASd;;;OAGG;IACH,mBAAmB,IAAI,OAAO;IAQ9B;;OAEG;IACH,kBAAkB,IAAI,OAAO;CAM9B"} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.js b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.js deleted file mode 100644 index f0de35fb5bed9d..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.js +++ /dev/null @@ -1,219 +0,0 @@ -"use strict"; -// this is just a very light wrapper around 2 arrays with an offset index -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Pattern = void 0; -const minimatch_1 = require("minimatch"); -const isPatternList = (pl) => pl.length >= 1; -const isGlobList = (gl) => gl.length >= 1; -/** - * An immutable-ish view on an array of glob parts and their parsed - * results - */ -class Pattern { - #patternList; - #globList; - #index; - length; - #platform; - #rest; - #globString; - #isDrive; - #isUNC; - #isAbsolute; - #followGlobstar = true; - constructor(patternList, globList, index, platform) { - if (!isPatternList(patternList)) { - throw new TypeError('empty pattern list'); - } - if (!isGlobList(globList)) { - throw new TypeError('empty glob list'); - } - if (globList.length !== patternList.length) { - throw new TypeError('mismatched pattern list and glob list lengths'); - } - this.length = patternList.length; - if (index < 0 || index >= this.length) { - throw new TypeError('index out of range'); - } - this.#patternList = patternList; - this.#globList = globList; - this.#index = index; - this.#platform = platform; - // normalize root entries of absolute patterns on initial creation. - if (this.#index === 0) { - // c: => ['c:/'] - // C:/ => ['C:/'] - // C:/x => ['C:/', 'x'] - // //host/share => ['//host/share/'] - // //host/share/ => ['//host/share/'] - // //host/share/x => ['//host/share/', 'x'] - // /etc => ['/', 'etc'] - // / => ['/'] - if (this.isUNC()) { - // '' / '' / 'host' / 'share' - const [p0, p1, p2, p3, ...prest] = this.#patternList; - const [g0, g1, g2, g3, ...grest] = this.#globList; - if (prest[0] === '') { - // ends in / - prest.shift(); - grest.shift(); - } - const p = [p0, p1, p2, p3, ''].join('/'); - const g = [g0, g1, g2, g3, ''].join('/'); - this.#patternList = [p, ...prest]; - this.#globList = [g, ...grest]; - this.length = this.#patternList.length; - } - else if (this.isDrive() || this.isAbsolute()) { - const [p1, ...prest] = this.#patternList; - const [g1, ...grest] = this.#globList; - if (prest[0] === '') { - // ends in / - prest.shift(); - grest.shift(); - } - const p = p1 + '/'; - const g = g1 + '/'; - this.#patternList = [p, ...prest]; - this.#globList = [g, ...grest]; - this.length = this.#patternList.length; - } - } - } - /** - * The first entry in the parsed list of patterns - */ - pattern() { - return this.#patternList[this.#index]; - } - /** - * true of if pattern() returns a string - */ - isString() { - return typeof this.#patternList[this.#index] === 'string'; - } - /** - * true of if pattern() returns GLOBSTAR - */ - isGlobstar() { - return this.#patternList[this.#index] === minimatch_1.GLOBSTAR; - } - /** - * true if pattern() returns a regexp - */ - isRegExp() { - return this.#patternList[this.#index] instanceof RegExp; - } - /** - * The /-joined set of glob parts that make up this pattern - */ - globString() { - return (this.#globString = - this.#globString || - (this.#index === 0 ? - this.isAbsolute() ? - this.#globList[0] + this.#globList.slice(1).join('/') - : this.#globList.join('/') - : this.#globList.slice(this.#index).join('/'))); - } - /** - * true if there are more pattern parts after this one - */ - hasMore() { - return this.length > this.#index + 1; - } - /** - * The rest of the pattern after this part, or null if this is the end - */ - rest() { - if (this.#rest !== undefined) - return this.#rest; - if (!this.hasMore()) - return (this.#rest = null); - this.#rest = new Pattern(this.#patternList, this.#globList, this.#index + 1, this.#platform); - this.#rest.#isAbsolute = this.#isAbsolute; - this.#rest.#isUNC = this.#isUNC; - this.#rest.#isDrive = this.#isDrive; - return this.#rest; - } - /** - * true if the pattern represents a //unc/path/ on windows - */ - isUNC() { - const pl = this.#patternList; - return this.#isUNC !== undefined ? - this.#isUNC - : (this.#isUNC = - this.#platform === 'win32' && - this.#index === 0 && - pl[0] === '' && - pl[1] === '' && - typeof pl[2] === 'string' && - !!pl[2] && - typeof pl[3] === 'string' && - !!pl[3]); - } - // pattern like C:/... - // split = ['C:', ...] - // XXX: would be nice to handle patterns like `c:*` to test the cwd - // in c: for *, but I don't know of a way to even figure out what that - // cwd is without actually chdir'ing into it? - /** - * True if the pattern starts with a drive letter on Windows - */ - isDrive() { - const pl = this.#patternList; - return this.#isDrive !== undefined ? - this.#isDrive - : (this.#isDrive = - this.#platform === 'win32' && - this.#index === 0 && - this.length > 1 && - typeof pl[0] === 'string' && - /^[a-z]:$/i.test(pl[0])); - } - // pattern = '/' or '/...' or '/x/...' - // split = ['', ''] or ['', ...] or ['', 'x', ...] - // Drive and UNC both considered absolute on windows - /** - * True if the pattern is rooted on an absolute path - */ - isAbsolute() { - const pl = this.#patternList; - return this.#isAbsolute !== undefined ? - this.#isAbsolute - : (this.#isAbsolute = - (pl[0] === '' && pl.length > 1) || - this.isDrive() || - this.isUNC()); - } - /** - * consume the root of the pattern, and return it - */ - root() { - const p = this.#patternList[0]; - return (typeof p === 'string' && this.isAbsolute() && this.#index === 0) ? - p - : ''; - } - /** - * Check to see if the current globstar pattern is allowed to follow - * a symbolic link. - */ - checkFollowGlobstar() { - return !(this.#index === 0 || - !this.isGlobstar() || - !this.#followGlobstar); - } - /** - * Mark that the current globstar pattern is following a symbolic link - */ - markFollowGlobstar() { - if (this.#index === 0 || !this.isGlobstar() || !this.#followGlobstar) - return false; - this.#followGlobstar = false; - return true; - } -} -exports.Pattern = Pattern; -//# sourceMappingURL=pattern.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.js.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.js.map deleted file mode 100644 index fc10ea5d6c4ef4..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/pattern.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../src/pattern.ts"],"names":[],"mappings":"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","sourcesContent":["// this is just a very light wrapper around 2 arrays with an offset index\n\nimport { GLOBSTAR } from 'minimatch'\nexport type MMPattern = string | RegExp | typeof GLOBSTAR\n\n// an array of length >= 1\nexport type PatternList = [p: MMPattern, ...rest: MMPattern[]]\nexport type UNCPatternList = [\n p0: '',\n p1: '',\n p2: string,\n p3: string,\n ...rest: MMPattern[],\n]\nexport type DrivePatternList = [p0: string, ...rest: MMPattern[]]\nexport type AbsolutePatternList = [p0: '', ...rest: MMPattern[]]\nexport type GlobList = [p: string, ...rest: string[]]\n\nconst isPatternList = (pl: MMPattern[]): pl is PatternList =>\n pl.length >= 1\nconst isGlobList = (gl: string[]): gl is GlobList => gl.length >= 1\n\n/**\n * An immutable-ish view on an array of glob parts and their parsed\n * results\n */\nexport class Pattern {\n readonly #patternList: PatternList\n readonly #globList: GlobList\n readonly #index: number\n readonly length: number\n readonly #platform: NodeJS.Platform\n #rest?: Pattern | null\n #globString?: string\n #isDrive?: boolean\n #isUNC?: boolean\n #isAbsolute?: boolean\n #followGlobstar: boolean = true\n\n constructor(\n patternList: MMPattern[],\n globList: string[],\n index: number,\n platform: NodeJS.Platform,\n ) {\n if (!isPatternList(patternList)) {\n throw new TypeError('empty pattern list')\n }\n if (!isGlobList(globList)) {\n throw new TypeError('empty glob list')\n }\n if (globList.length !== patternList.length) {\n throw new TypeError('mismatched pattern list and glob list lengths')\n }\n this.length = patternList.length\n if (index < 0 || index >= this.length) {\n throw new TypeError('index out of range')\n }\n this.#patternList = patternList\n this.#globList = globList\n this.#index = index\n this.#platform = platform\n\n // normalize root entries of absolute patterns on initial creation.\n if (this.#index === 0) {\n // c: => ['c:/']\n // C:/ => ['C:/']\n // C:/x => ['C:/', 'x']\n // //host/share => ['//host/share/']\n // //host/share/ => ['//host/share/']\n // //host/share/x => ['//host/share/', 'x']\n // /etc => ['/', 'etc']\n // / => ['/']\n if (this.isUNC()) {\n // '' / '' / 'host' / 'share'\n const [p0, p1, p2, p3, ...prest] = this.#patternList\n const [g0, g1, g2, g3, ...grest] = this.#globList\n if (prest[0] === '') {\n // ends in /\n prest.shift()\n grest.shift()\n }\n const p = [p0, p1, p2, p3, ''].join('/')\n const g = [g0, g1, g2, g3, ''].join('/')\n this.#patternList = [p, ...prest]\n this.#globList = [g, ...grest]\n this.length = this.#patternList.length\n } else if (this.isDrive() || this.isAbsolute()) {\n const [p1, ...prest] = this.#patternList\n const [g1, ...grest] = this.#globList\n if (prest[0] === '') {\n // ends in /\n prest.shift()\n grest.shift()\n }\n const p = (p1 as string) + '/'\n const g = g1 + '/'\n this.#patternList = [p, ...prest]\n this.#globList = [g, ...grest]\n this.length = this.#patternList.length\n }\n }\n }\n\n /**\n * The first entry in the parsed list of patterns\n */\n pattern(): MMPattern {\n return this.#patternList[this.#index] as MMPattern\n }\n\n /**\n * true of if pattern() returns a string\n */\n isString(): boolean {\n return typeof this.#patternList[this.#index] === 'string'\n }\n /**\n * true of if pattern() returns GLOBSTAR\n */\n isGlobstar(): boolean {\n return this.#patternList[this.#index] === GLOBSTAR\n }\n /**\n * true if pattern() returns a regexp\n */\n isRegExp(): boolean {\n return this.#patternList[this.#index] instanceof RegExp\n }\n\n /**\n * The /-joined set of glob parts that make up this pattern\n */\n globString(): string {\n return (this.#globString =\n this.#globString ||\n (this.#index === 0 ?\n this.isAbsolute() ?\n this.#globList[0] + this.#globList.slice(1).join('/')\n : this.#globList.join('/')\n : this.#globList.slice(this.#index).join('/')))\n }\n\n /**\n * true if there are more pattern parts after this one\n */\n hasMore(): boolean {\n return this.length > this.#index + 1\n }\n\n /**\n * The rest of the pattern after this part, or null if this is the end\n */\n rest(): Pattern | null {\n if (this.#rest !== undefined) return this.#rest\n if (!this.hasMore()) return (this.#rest = null)\n this.#rest = new Pattern(\n this.#patternList,\n this.#globList,\n this.#index + 1,\n this.#platform,\n )\n this.#rest.#isAbsolute = this.#isAbsolute\n this.#rest.#isUNC = this.#isUNC\n this.#rest.#isDrive = this.#isDrive\n return this.#rest\n }\n\n /**\n * true if the pattern represents a //unc/path/ on windows\n */\n isUNC(): boolean {\n const pl = this.#patternList\n return this.#isUNC !== undefined ?\n this.#isUNC\n : (this.#isUNC =\n this.#platform === 'win32' &&\n this.#index === 0 &&\n pl[0] === '' &&\n pl[1] === '' &&\n typeof pl[2] === 'string' &&\n !!pl[2] &&\n typeof pl[3] === 'string' &&\n !!pl[3])\n }\n\n // pattern like C:/...\n // split = ['C:', ...]\n // XXX: would be nice to handle patterns like `c:*` to test the cwd\n // in c: for *, but I don't know of a way to even figure out what that\n // cwd is without actually chdir'ing into it?\n /**\n * True if the pattern starts with a drive letter on Windows\n */\n isDrive(): boolean {\n const pl = this.#patternList\n return this.#isDrive !== undefined ?\n this.#isDrive\n : (this.#isDrive =\n this.#platform === 'win32' &&\n this.#index === 0 &&\n this.length > 1 &&\n typeof pl[0] === 'string' &&\n /^[a-z]:$/i.test(pl[0]))\n }\n\n // pattern = '/' or '/...' or '/x/...'\n // split = ['', ''] or ['', ...] or ['', 'x', ...]\n // Drive and UNC both considered absolute on windows\n /**\n * True if the pattern is rooted on an absolute path\n */\n isAbsolute(): boolean {\n const pl = this.#patternList\n return this.#isAbsolute !== undefined ?\n this.#isAbsolute\n : (this.#isAbsolute =\n (pl[0] === '' && pl.length > 1) ||\n this.isDrive() ||\n this.isUNC())\n }\n\n /**\n * consume the root of the pattern, and return it\n */\n root(): string {\n const p = this.#patternList[0]\n return (\n typeof p === 'string' && this.isAbsolute() && this.#index === 0\n ) ?\n p\n : ''\n }\n\n /**\n * Check to see if the current globstar pattern is allowed to follow\n * a symbolic link.\n */\n checkFollowGlobstar(): boolean {\n return !(\n this.#index === 0 ||\n !this.isGlobstar() ||\n !this.#followGlobstar\n )\n }\n\n /**\n * Mark that the current globstar pattern is following a symbolic link\n */\n markFollowGlobstar(): boolean {\n if (this.#index === 0 || !this.isGlobstar() || !this.#followGlobstar)\n return false\n this.#followGlobstar = false\n return true\n }\n}\n"]} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.d.ts b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.d.ts deleted file mode 100644 index ccedfbf2820f7d..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { MMRegExp } from 'minimatch'; -import { Path } from 'path-scurry'; -import { Pattern } from './pattern.js'; -import { GlobWalkerOpts } from './walker.js'; -/** - * A cache of which patterns have been processed for a given Path - */ -export declare class HasWalkedCache { - store: Map>; - constructor(store?: Map>); - copy(): HasWalkedCache; - hasWalked(target: Path, pattern: Pattern): boolean | undefined; - storeWalked(target: Path, pattern: Pattern): void; -} -/** - * A record of which paths have been matched in a given walk step, - * and whether they only are considered a match if they are a directory, - * and whether their absolute or relative path should be returned. - */ -export declare class MatchRecord { - store: Map; - add(target: Path, absolute: boolean, ifDir: boolean): void; - entries(): [Path, boolean, boolean][]; -} -/** - * A collection of patterns that must be processed in a subsequent step - * for a given path. - */ -export declare class SubWalks { - store: Map; - add(target: Path, pattern: Pattern): void; - get(target: Path): Pattern[]; - entries(): [Path, Pattern[]][]; - keys(): Path[]; -} -/** - * The class that processes patterns for a given path. - * - * Handles child entry filtering, and determining whether a path's - * directory contents must be read. - */ -export declare class Processor { - hasWalkedCache: HasWalkedCache; - matches: MatchRecord; - subwalks: SubWalks; - patterns?: Pattern[]; - follow: boolean; - dot: boolean; - opts: GlobWalkerOpts; - constructor(opts: GlobWalkerOpts, hasWalkedCache?: HasWalkedCache); - processPatterns(target: Path, patterns: Pattern[]): this; - subwalkTargets(): Path[]; - child(): Processor; - filterEntries(parent: Path, entries: Path[]): Processor; - testGlobstar(e: Path, pattern: Pattern, rest: Pattern | null, absolute: boolean): void; - testRegExp(e: Path, p: MMRegExp, rest: Pattern | null, absolute: boolean): void; - testString(e: Path, p: string, rest: Pattern | null, absolute: boolean): void; -} -//# sourceMappingURL=processor.d.ts.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.d.ts.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.d.ts.map deleted file mode 100644 index aa266fee4a0544..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../src/processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAa,OAAO,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C;;GAEG;AACH,qBAAa,cAAc;IACzB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;gBACnB,KAAK,GAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAGvD,IAAI;IAGJ,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;IAGxC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;CAM3C;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAY;IACpC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;IAMnD,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;CAOtC;AAED;;;GAGG;AACH,qBAAa,QAAQ;IACnB,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAY;IACvC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;IAWlC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,EAAE;IAS5B,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;IAG9B,IAAI,IAAI,IAAI,EAAE;CAGf;AAED;;;;;GAKG;AACH,qBAAa,SAAS;IACpB,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,cAAoB;IAC3B,QAAQ,WAAiB;IACzB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,MAAM,EAAE,OAAO,CAAA;IACf,GAAG,EAAE,OAAO,CAAA;IACZ,IAAI,EAAE,cAAc,CAAA;gBAER,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,cAAc;IAQjE,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;IAmGjD,cAAc,IAAI,IAAI,EAAE;IAIxB,KAAK;IAQL,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,SAAS;IAqBvD,YAAY,CACV,CAAC,EAAE,IAAI,EACP,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,GAAG,IAAI,EACpB,QAAQ,EAAE,OAAO;IA8CnB,UAAU,CACR,CAAC,EAAE,IAAI,EACP,CAAC,EAAE,QAAQ,EACX,IAAI,EAAE,OAAO,GAAG,IAAI,EACpB,QAAQ,EAAE,OAAO;IAUnB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO;CASvE"} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.js b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.js deleted file mode 100644 index ee3bb4397e0b2d..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.js +++ /dev/null @@ -1,301 +0,0 @@ -"use strict"; -// synchronous utility for filtering entries and calculating subwalks -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Processor = exports.SubWalks = exports.MatchRecord = exports.HasWalkedCache = void 0; -const minimatch_1 = require("minimatch"); -/** - * A cache of which patterns have been processed for a given Path - */ -class HasWalkedCache { - store; - constructor(store = new Map()) { - this.store = store; - } - copy() { - return new HasWalkedCache(new Map(this.store)); - } - hasWalked(target, pattern) { - return this.store.get(target.fullpath())?.has(pattern.globString()); - } - storeWalked(target, pattern) { - const fullpath = target.fullpath(); - const cached = this.store.get(fullpath); - if (cached) - cached.add(pattern.globString()); - else - this.store.set(fullpath, new Set([pattern.globString()])); - } -} -exports.HasWalkedCache = HasWalkedCache; -/** - * A record of which paths have been matched in a given walk step, - * and whether they only are considered a match if they are a directory, - * and whether their absolute or relative path should be returned. - */ -class MatchRecord { - store = new Map(); - add(target, absolute, ifDir) { - const n = (absolute ? 2 : 0) | (ifDir ? 1 : 0); - const current = this.store.get(target); - this.store.set(target, current === undefined ? n : n & current); - } - // match, absolute, ifdir - entries() { - return [...this.store.entries()].map(([path, n]) => [ - path, - !!(n & 2), - !!(n & 1), - ]); - } -} -exports.MatchRecord = MatchRecord; -/** - * A collection of patterns that must be processed in a subsequent step - * for a given path. - */ -class SubWalks { - store = new Map(); - add(target, pattern) { - if (!target.canReaddir()) { - return; - } - const subs = this.store.get(target); - if (subs) { - if (!subs.find(p => p.globString() === pattern.globString())) { - subs.push(pattern); - } - } - else - this.store.set(target, [pattern]); - } - get(target) { - const subs = this.store.get(target); - /* c8 ignore start */ - if (!subs) { - throw new Error('attempting to walk unknown path'); - } - /* c8 ignore stop */ - return subs; - } - entries() { - return this.keys().map(k => [k, this.store.get(k)]); - } - keys() { - return [...this.store.keys()].filter(t => t.canReaddir()); - } -} -exports.SubWalks = SubWalks; -/** - * The class that processes patterns for a given path. - * - * Handles child entry filtering, and determining whether a path's - * directory contents must be read. - */ -class Processor { - hasWalkedCache; - matches = new MatchRecord(); - subwalks = new SubWalks(); - patterns; - follow; - dot; - opts; - constructor(opts, hasWalkedCache) { - this.opts = opts; - this.follow = !!opts.follow; - this.dot = !!opts.dot; - this.hasWalkedCache = - hasWalkedCache ? hasWalkedCache.copy() : new HasWalkedCache(); - } - processPatterns(target, patterns) { - this.patterns = patterns; - const processingSet = patterns.map(p => [target, p]); - // map of paths to the magic-starting subwalks they need to walk - // first item in patterns is the filter - for (let [t, pattern] of processingSet) { - this.hasWalkedCache.storeWalked(t, pattern); - const root = pattern.root(); - const absolute = pattern.isAbsolute() && this.opts.absolute !== false; - // start absolute patterns at root - if (root) { - t = t.resolve(root === '/' && this.opts.root !== undefined ? - this.opts.root - : root); - const rest = pattern.rest(); - if (!rest) { - this.matches.add(t, true, false); - continue; - } - else { - pattern = rest; - } - } - if (t.isENOENT()) - continue; - let p; - let rest; - let changed = false; - while (typeof (p = pattern.pattern()) === 'string' && - (rest = pattern.rest())) { - const c = t.resolve(p); - t = c; - pattern = rest; - changed = true; - } - p = pattern.pattern(); - rest = pattern.rest(); - if (changed) { - if (this.hasWalkedCache.hasWalked(t, pattern)) - continue; - this.hasWalkedCache.storeWalked(t, pattern); - } - // now we have either a final string for a known entry, - // more strings for an unknown entry, - // or a pattern starting with magic, mounted on t. - if (typeof p === 'string') { - // must not be final entry, otherwise we would have - // concatenated it earlier. - const ifDir = p === '..' || p === '' || p === '.'; - this.matches.add(t.resolve(p), absolute, ifDir); - continue; - } - else if (p === minimatch_1.GLOBSTAR) { - // if no rest, match and subwalk pattern - // if rest, process rest and subwalk pattern - // if it's a symlink, but we didn't get here by way of a - // globstar match (meaning it's the first time THIS globstar - // has traversed a symlink), then we follow it. Otherwise, stop. - if (!t.isSymbolicLink() || - this.follow || - pattern.checkFollowGlobstar()) { - this.subwalks.add(t, pattern); - } - const rp = rest?.pattern(); - const rrest = rest?.rest(); - if (!rest || ((rp === '' || rp === '.') && !rrest)) { - // only HAS to be a dir if it ends in **/ or **/. - // but ending in ** will match files as well. - this.matches.add(t, absolute, rp === '' || rp === '.'); - } - else { - if (rp === '..') { - // this would mean you're matching **/.. at the fs root, - // and no thanks, I'm not gonna test that specific case. - /* c8 ignore start */ - const tp = t.parent || t; - /* c8 ignore stop */ - if (!rrest) - this.matches.add(tp, absolute, true); - else if (!this.hasWalkedCache.hasWalked(tp, rrest)) { - this.subwalks.add(tp, rrest); - } - } - } - } - else if (p instanceof RegExp) { - this.subwalks.add(t, pattern); - } - } - return this; - } - subwalkTargets() { - return this.subwalks.keys(); - } - child() { - return new Processor(this.opts, this.hasWalkedCache); - } - // return a new Processor containing the subwalks for each - // child entry, and a set of matches, and - // a hasWalkedCache that's a copy of this one - // then we're going to call - filterEntries(parent, entries) { - const patterns = this.subwalks.get(parent); - // put matches and entry walks into the results processor - const results = this.child(); - for (const e of entries) { - for (const pattern of patterns) { - const absolute = pattern.isAbsolute(); - const p = pattern.pattern(); - const rest = pattern.rest(); - if (p === minimatch_1.GLOBSTAR) { - results.testGlobstar(e, pattern, rest, absolute); - } - else if (p instanceof RegExp) { - results.testRegExp(e, p, rest, absolute); - } - else { - results.testString(e, p, rest, absolute); - } - } - } - return results; - } - testGlobstar(e, pattern, rest, absolute) { - if (this.dot || !e.name.startsWith('.')) { - if (!pattern.hasMore()) { - this.matches.add(e, absolute, false); - } - if (e.canReaddir()) { - // if we're in follow mode or it's not a symlink, just keep - // testing the same pattern. If there's more after the globstar, - // then this symlink consumes the globstar. If not, then we can - // follow at most ONE symlink along the way, so we mark it, which - // also checks to ensure that it wasn't already marked. - if (this.follow || !e.isSymbolicLink()) { - this.subwalks.add(e, pattern); - } - else if (e.isSymbolicLink()) { - if (rest && pattern.checkFollowGlobstar()) { - this.subwalks.add(e, rest); - } - else if (pattern.markFollowGlobstar()) { - this.subwalks.add(e, pattern); - } - } - } - } - // if the NEXT thing matches this entry, then also add - // the rest. - if (rest) { - const rp = rest.pattern(); - if (typeof rp === 'string' && - // dots and empty were handled already - rp !== '..' && - rp !== '' && - rp !== '.') { - this.testString(e, rp, rest.rest(), absolute); - } - else if (rp === '..') { - /* c8 ignore start */ - const ep = e.parent || e; - /* c8 ignore stop */ - this.subwalks.add(ep, rest); - } - else if (rp instanceof RegExp) { - this.testRegExp(e, rp, rest.rest(), absolute); - } - } - } - testRegExp(e, p, rest, absolute) { - if (!p.test(e.name)) - return; - if (!rest) { - this.matches.add(e, absolute, false); - } - else { - this.subwalks.add(e, rest); - } - } - testString(e, p, rest, absolute) { - // should never happen? - if (!e.isNamed(p)) - return; - if (!rest) { - this.matches.add(e, absolute, false); - } - else { - this.subwalks.add(e, rest); - } - } -} -exports.Processor = Processor; -//# sourceMappingURL=processor.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.js.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.js.map deleted file mode 100644 index 58a70882e9462f..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/processor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../src/processor.ts"],"names":[],"mappings":"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","sourcesContent":["// synchronous utility for filtering entries and calculating subwalks\n\nimport { GLOBSTAR, MMRegExp } from 'minimatch'\nimport { Path } from 'path-scurry'\nimport { MMPattern, Pattern } from './pattern.js'\nimport { GlobWalkerOpts } from './walker.js'\n\n/**\n * A cache of which patterns have been processed for a given Path\n */\nexport class HasWalkedCache {\n store: Map>\n constructor(store: Map> = new Map()) {\n this.store = store\n }\n copy() {\n return new HasWalkedCache(new Map(this.store))\n }\n hasWalked(target: Path, pattern: Pattern) {\n return this.store.get(target.fullpath())?.has(pattern.globString())\n }\n storeWalked(target: Path, pattern: Pattern) {\n const fullpath = target.fullpath()\n const cached = this.store.get(fullpath)\n if (cached) cached.add(pattern.globString())\n else this.store.set(fullpath, new Set([pattern.globString()]))\n }\n}\n\n/**\n * A record of which paths have been matched in a given walk step,\n * and whether they only are considered a match if they are a directory,\n * and whether their absolute or relative path should be returned.\n */\nexport class MatchRecord {\n store: Map = new Map()\n add(target: Path, absolute: boolean, ifDir: boolean) {\n const n = (absolute ? 2 : 0) | (ifDir ? 1 : 0)\n const current = this.store.get(target)\n this.store.set(target, current === undefined ? n : n & current)\n }\n // match, absolute, ifdir\n entries(): [Path, boolean, boolean][] {\n return [...this.store.entries()].map(([path, n]) => [\n path,\n !!(n & 2),\n !!(n & 1),\n ])\n }\n}\n\n/**\n * A collection of patterns that must be processed in a subsequent step\n * for a given path.\n */\nexport class SubWalks {\n store: Map = new Map()\n add(target: Path, pattern: Pattern) {\n if (!target.canReaddir()) {\n return\n }\n const subs = this.store.get(target)\n if (subs) {\n if (!subs.find(p => p.globString() === pattern.globString())) {\n subs.push(pattern)\n }\n } else this.store.set(target, [pattern])\n }\n get(target: Path): Pattern[] {\n const subs = this.store.get(target)\n /* c8 ignore start */\n if (!subs) {\n throw new Error('attempting to walk unknown path')\n }\n /* c8 ignore stop */\n return subs\n }\n entries(): [Path, Pattern[]][] {\n return this.keys().map(k => [k, this.store.get(k) as Pattern[]])\n }\n keys(): Path[] {\n return [...this.store.keys()].filter(t => t.canReaddir())\n }\n}\n\n/**\n * The class that processes patterns for a given path.\n *\n * Handles child entry filtering, and determining whether a path's\n * directory contents must be read.\n */\nexport class Processor {\n hasWalkedCache: HasWalkedCache\n matches = new MatchRecord()\n subwalks = new SubWalks()\n patterns?: Pattern[]\n follow: boolean\n dot: boolean\n opts: GlobWalkerOpts\n\n constructor(opts: GlobWalkerOpts, hasWalkedCache?: HasWalkedCache) {\n this.opts = opts\n this.follow = !!opts.follow\n this.dot = !!opts.dot\n this.hasWalkedCache =\n hasWalkedCache ? hasWalkedCache.copy() : new HasWalkedCache()\n }\n\n processPatterns(target: Path, patterns: Pattern[]) {\n this.patterns = patterns\n const processingSet: [Path, Pattern][] = patterns.map(p => [target, p])\n\n // map of paths to the magic-starting subwalks they need to walk\n // first item in patterns is the filter\n\n for (let [t, pattern] of processingSet) {\n this.hasWalkedCache.storeWalked(t, pattern)\n\n const root = pattern.root()\n const absolute = pattern.isAbsolute() && this.opts.absolute !== false\n\n // start absolute patterns at root\n if (root) {\n t = t.resolve(\n root === '/' && this.opts.root !== undefined ?\n this.opts.root\n : root,\n )\n const rest = pattern.rest()\n if (!rest) {\n this.matches.add(t, true, false)\n continue\n } else {\n pattern = rest\n }\n }\n\n if (t.isENOENT()) continue\n\n let p: MMPattern\n let rest: Pattern | null\n let changed = false\n while (\n typeof (p = pattern.pattern()) === 'string' &&\n (rest = pattern.rest())\n ) {\n const c = t.resolve(p)\n t = c\n pattern = rest\n changed = true\n }\n p = pattern.pattern()\n rest = pattern.rest()\n if (changed) {\n if (this.hasWalkedCache.hasWalked(t, pattern)) continue\n this.hasWalkedCache.storeWalked(t, pattern)\n }\n\n // now we have either a final string for a known entry,\n // more strings for an unknown entry,\n // or a pattern starting with magic, mounted on t.\n if (typeof p === 'string') {\n // must not be final entry, otherwise we would have\n // concatenated it earlier.\n const ifDir = p === '..' || p === '' || p === '.'\n this.matches.add(t.resolve(p), absolute, ifDir)\n continue\n } else if (p === GLOBSTAR) {\n // if no rest, match and subwalk pattern\n // if rest, process rest and subwalk pattern\n // if it's a symlink, but we didn't get here by way of a\n // globstar match (meaning it's the first time THIS globstar\n // has traversed a symlink), then we follow it. Otherwise, stop.\n if (\n !t.isSymbolicLink() ||\n this.follow ||\n pattern.checkFollowGlobstar()\n ) {\n this.subwalks.add(t, pattern)\n }\n const rp = rest?.pattern()\n const rrest = rest?.rest()\n if (!rest || ((rp === '' || rp === '.') && !rrest)) {\n // only HAS to be a dir if it ends in **/ or **/.\n // but ending in ** will match files as well.\n this.matches.add(t, absolute, rp === '' || rp === '.')\n } else {\n if (rp === '..') {\n // this would mean you're matching **/.. at the fs root,\n // and no thanks, I'm not gonna test that specific case.\n /* c8 ignore start */\n const tp = t.parent || t\n /* c8 ignore stop */\n if (!rrest) this.matches.add(tp, absolute, true)\n else if (!this.hasWalkedCache.hasWalked(tp, rrest)) {\n this.subwalks.add(tp, rrest)\n }\n }\n }\n } else if (p instanceof RegExp) {\n this.subwalks.add(t, pattern)\n }\n }\n\n return this\n }\n\n subwalkTargets(): Path[] {\n return this.subwalks.keys()\n }\n\n child() {\n return new Processor(this.opts, this.hasWalkedCache)\n }\n\n // return a new Processor containing the subwalks for each\n // child entry, and a set of matches, and\n // a hasWalkedCache that's a copy of this one\n // then we're going to call\n filterEntries(parent: Path, entries: Path[]): Processor {\n const patterns = this.subwalks.get(parent)\n // put matches and entry walks into the results processor\n const results = this.child()\n for (const e of entries) {\n for (const pattern of patterns) {\n const absolute = pattern.isAbsolute()\n const p = pattern.pattern()\n const rest = pattern.rest()\n if (p === GLOBSTAR) {\n results.testGlobstar(e, pattern, rest, absolute)\n } else if (p instanceof RegExp) {\n results.testRegExp(e, p, rest, absolute)\n } else {\n results.testString(e, p, rest, absolute)\n }\n }\n }\n return results\n }\n\n testGlobstar(\n e: Path,\n pattern: Pattern,\n rest: Pattern | null,\n absolute: boolean,\n ) {\n if (this.dot || !e.name.startsWith('.')) {\n if (!pattern.hasMore()) {\n this.matches.add(e, absolute, false)\n }\n if (e.canReaddir()) {\n // if we're in follow mode or it's not a symlink, just keep\n // testing the same pattern. If there's more after the globstar,\n // then this symlink consumes the globstar. If not, then we can\n // follow at most ONE symlink along the way, so we mark it, which\n // also checks to ensure that it wasn't already marked.\n if (this.follow || !e.isSymbolicLink()) {\n this.subwalks.add(e, pattern)\n } else if (e.isSymbolicLink()) {\n if (rest && pattern.checkFollowGlobstar()) {\n this.subwalks.add(e, rest)\n } else if (pattern.markFollowGlobstar()) {\n this.subwalks.add(e, pattern)\n }\n }\n }\n }\n // if the NEXT thing matches this entry, then also add\n // the rest.\n if (rest) {\n const rp = rest.pattern()\n if (\n typeof rp === 'string' &&\n // dots and empty were handled already\n rp !== '..' &&\n rp !== '' &&\n rp !== '.'\n ) {\n this.testString(e, rp, rest.rest(), absolute)\n } else if (rp === '..') {\n /* c8 ignore start */\n const ep = e.parent || e\n /* c8 ignore stop */\n this.subwalks.add(ep, rest)\n } else if (rp instanceof RegExp) {\n this.testRegExp(e, rp, rest.rest(), absolute)\n }\n }\n }\n\n testRegExp(\n e: Path,\n p: MMRegExp,\n rest: Pattern | null,\n absolute: boolean,\n ) {\n if (!p.test(e.name)) return\n if (!rest) {\n this.matches.add(e, absolute, false)\n } else {\n this.subwalks.add(e, rest)\n }\n }\n\n testString(e: Path, p: string, rest: Pattern | null, absolute: boolean) {\n // should never happen?\n if (!e.isNamed(p)) return\n if (!rest) {\n this.matches.add(e, absolute, false)\n } else {\n this.subwalks.add(e, rest)\n }\n }\n}\n"]} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.d.ts b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.d.ts deleted file mode 100644 index 499c8f4933857a..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.d.ts +++ /dev/null @@ -1,97 +0,0 @@ -/** - * Single-use utility classes to provide functionality to the {@link Glob} - * methods. - * - * @module - */ -import { Minipass } from 'minipass'; -import { Path } from 'path-scurry'; -import { IgnoreLike } from './ignore.js'; -import { Pattern } from './pattern.js'; -import { Processor } from './processor.js'; -export interface GlobWalkerOpts { - absolute?: boolean; - allowWindowsEscape?: boolean; - cwd?: string | URL; - dot?: boolean; - dotRelative?: boolean; - follow?: boolean; - ignore?: string | string[] | IgnoreLike; - mark?: boolean; - matchBase?: boolean; - maxDepth?: number; - nobrace?: boolean; - nocase?: boolean; - nodir?: boolean; - noext?: boolean; - noglobstar?: boolean; - platform?: NodeJS.Platform; - posix?: boolean; - realpath?: boolean; - root?: string; - stat?: boolean; - signal?: AbortSignal; - windowsPathsNoEscape?: boolean; - withFileTypes?: boolean; - includeChildMatches?: boolean; -} -export type GWOFileTypesTrue = GlobWalkerOpts & { - withFileTypes: true; -}; -export type GWOFileTypesFalse = GlobWalkerOpts & { - withFileTypes: false; -}; -export type GWOFileTypesUnset = GlobWalkerOpts & { - withFileTypes?: undefined; -}; -export type Result = O extends GWOFileTypesTrue ? Path : O extends GWOFileTypesFalse ? string : O extends GWOFileTypesUnset ? string : Path | string; -export type Matches = O extends GWOFileTypesTrue ? Set : O extends GWOFileTypesFalse ? Set : O extends GWOFileTypesUnset ? Set : Set; -export type MatchStream = Minipass, Result>; -/** - * basic walking utilities that all the glob walker types use - */ -export declare abstract class GlobUtil { - #private; - path: Path; - patterns: Pattern[]; - opts: O; - seen: Set; - paused: boolean; - aborted: boolean; - signal?: AbortSignal; - maxDepth: number; - includeChildMatches: boolean; - constructor(patterns: Pattern[], path: Path, opts: O); - pause(): void; - resume(): void; - onResume(fn: () => any): void; - matchCheck(e: Path, ifDir: boolean): Promise; - matchCheckTest(e: Path | undefined, ifDir: boolean): Path | undefined; - matchCheckSync(e: Path, ifDir: boolean): Path | undefined; - abstract matchEmit(p: Result): void; - abstract matchEmit(p: string | Path): void; - matchFinish(e: Path, absolute: boolean): void; - match(e: Path, absolute: boolean, ifDir: boolean): Promise; - matchSync(e: Path, absolute: boolean, ifDir: boolean): void; - walkCB(target: Path, patterns: Pattern[], cb: () => any): void; - walkCB2(target: Path, patterns: Pattern[], processor: Processor, cb: () => any): any; - walkCB3(target: Path, entries: Path[], processor: Processor, cb: () => any): void; - walkCBSync(target: Path, patterns: Pattern[], cb: () => any): void; - walkCB2Sync(target: Path, patterns: Pattern[], processor: Processor, cb: () => any): any; - walkCB3Sync(target: Path, entries: Path[], processor: Processor, cb: () => any): void; -} -export declare class GlobWalker extends GlobUtil { - matches: Set>; - constructor(patterns: Pattern[], path: Path, opts: O); - matchEmit(e: Result): void; - walk(): Promise>>; - walkSync(): Set>; -} -export declare class GlobStream extends GlobUtil { - results: Minipass, Result>; - constructor(patterns: Pattern[], path: Path, opts: O); - matchEmit(e: Result): void; - stream(): MatchStream; - streamSync(): MatchStream; -} -//# sourceMappingURL=walker.d.ts.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.d.ts.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.d.ts.map deleted file mode 100644 index 769957bd59bb1c..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"walker.d.ts","sourceRoot":"","sources":["../../src/walker.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.js b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.js deleted file mode 100644 index cb15946d9a852c..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.js +++ /dev/null @@ -1,387 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GlobStream = exports.GlobWalker = exports.GlobUtil = void 0; -/** - * Single-use utility classes to provide functionality to the {@link Glob} - * methods. - * - * @module - */ -const minipass_1 = require("minipass"); -const ignore_js_1 = require("./ignore.js"); -const processor_js_1 = require("./processor.js"); -const makeIgnore = (ignore, opts) => typeof ignore === 'string' ? new ignore_js_1.Ignore([ignore], opts) - : Array.isArray(ignore) ? new ignore_js_1.Ignore(ignore, opts) - : ignore; -/** - * basic walking utilities that all the glob walker types use - */ -class GlobUtil { - path; - patterns; - opts; - seen = new Set(); - paused = false; - aborted = false; - #onResume = []; - #ignore; - #sep; - signal; - maxDepth; - includeChildMatches; - constructor(patterns, path, opts) { - this.patterns = patterns; - this.path = path; - this.opts = opts; - this.#sep = !opts.posix && opts.platform === 'win32' ? '\\' : '/'; - this.includeChildMatches = opts.includeChildMatches !== false; - if (opts.ignore || !this.includeChildMatches) { - this.#ignore = makeIgnore(opts.ignore ?? [], opts); - if (!this.includeChildMatches && - typeof this.#ignore.add !== 'function') { - const m = 'cannot ignore child matches, ignore lacks add() method.'; - throw new Error(m); - } - } - // ignore, always set with maxDepth, but it's optional on the - // GlobOptions type - /* c8 ignore start */ - this.maxDepth = opts.maxDepth || Infinity; - /* c8 ignore stop */ - if (opts.signal) { - this.signal = opts.signal; - this.signal.addEventListener('abort', () => { - this.#onResume.length = 0; - }); - } - } - #ignored(path) { - return this.seen.has(path) || !!this.#ignore?.ignored?.(path); - } - #childrenIgnored(path) { - return !!this.#ignore?.childrenIgnored?.(path); - } - // backpressure mechanism - pause() { - this.paused = true; - } - resume() { - /* c8 ignore start */ - if (this.signal?.aborted) - return; - /* c8 ignore stop */ - this.paused = false; - let fn = undefined; - while (!this.paused && (fn = this.#onResume.shift())) { - fn(); - } - } - onResume(fn) { - if (this.signal?.aborted) - return; - /* c8 ignore start */ - if (!this.paused) { - fn(); - } - else { - /* c8 ignore stop */ - this.#onResume.push(fn); - } - } - // do the requisite realpath/stat checking, and return the path - // to add or undefined to filter it out. - async matchCheck(e, ifDir) { - if (ifDir && this.opts.nodir) - return undefined; - let rpc; - if (this.opts.realpath) { - rpc = e.realpathCached() || (await e.realpath()); - if (!rpc) - return undefined; - e = rpc; - } - const needStat = e.isUnknown() || this.opts.stat; - const s = needStat ? await e.lstat() : e; - if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) { - const target = await s.realpath(); - /* c8 ignore start */ - if (target && (target.isUnknown() || this.opts.stat)) { - await target.lstat(); - } - /* c8 ignore stop */ - } - return this.matchCheckTest(s, ifDir); - } - matchCheckTest(e, ifDir) { - return (e && - (this.maxDepth === Infinity || e.depth() <= this.maxDepth) && - (!ifDir || e.canReaddir()) && - (!this.opts.nodir || !e.isDirectory()) && - (!this.opts.nodir || - !this.opts.follow || - !e.isSymbolicLink() || - !e.realpathCached()?.isDirectory()) && - !this.#ignored(e)) ? - e - : undefined; - } - matchCheckSync(e, ifDir) { - if (ifDir && this.opts.nodir) - return undefined; - let rpc; - if (this.opts.realpath) { - rpc = e.realpathCached() || e.realpathSync(); - if (!rpc) - return undefined; - e = rpc; - } - const needStat = e.isUnknown() || this.opts.stat; - const s = needStat ? e.lstatSync() : e; - if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) { - const target = s.realpathSync(); - if (target && (target?.isUnknown() || this.opts.stat)) { - target.lstatSync(); - } - } - return this.matchCheckTest(s, ifDir); - } - matchFinish(e, absolute) { - if (this.#ignored(e)) - return; - // we know we have an ignore if this is false, but TS doesn't - if (!this.includeChildMatches && this.#ignore?.add) { - const ign = `${e.relativePosix()}/**`; - this.#ignore.add(ign); - } - const abs = this.opts.absolute === undefined ? absolute : this.opts.absolute; - this.seen.add(e); - const mark = this.opts.mark && e.isDirectory() ? this.#sep : ''; - // ok, we have what we need! - if (this.opts.withFileTypes) { - this.matchEmit(e); - } - else if (abs) { - const abs = this.opts.posix ? e.fullpathPosix() : e.fullpath(); - this.matchEmit(abs + mark); - } - else { - const rel = this.opts.posix ? e.relativePosix() : e.relative(); - const pre = this.opts.dotRelative && !rel.startsWith('..' + this.#sep) ? - '.' + this.#sep - : ''; - this.matchEmit(!rel ? '.' + mark : pre + rel + mark); - } - } - async match(e, absolute, ifDir) { - const p = await this.matchCheck(e, ifDir); - if (p) - this.matchFinish(p, absolute); - } - matchSync(e, absolute, ifDir) { - const p = this.matchCheckSync(e, ifDir); - if (p) - this.matchFinish(p, absolute); - } - walkCB(target, patterns, cb) { - /* c8 ignore start */ - if (this.signal?.aborted) - cb(); - /* c8 ignore stop */ - this.walkCB2(target, patterns, new processor_js_1.Processor(this.opts), cb); - } - walkCB2(target, patterns, processor, cb) { - if (this.#childrenIgnored(target)) - return cb(); - if (this.signal?.aborted) - cb(); - if (this.paused) { - this.onResume(() => this.walkCB2(target, patterns, processor, cb)); - return; - } - processor.processPatterns(target, patterns); - // done processing. all of the above is sync, can be abstracted out. - // subwalks is a map of paths to the entry filters they need - // matches is a map of paths to [absolute, ifDir] tuples. - let tasks = 1; - const next = () => { - if (--tasks === 0) - cb(); - }; - for (const [m, absolute, ifDir] of processor.matches.entries()) { - if (this.#ignored(m)) - continue; - tasks++; - this.match(m, absolute, ifDir).then(() => next()); - } - for (const t of processor.subwalkTargets()) { - if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) { - continue; - } - tasks++; - const childrenCached = t.readdirCached(); - if (t.calledReaddir()) - this.walkCB3(t, childrenCached, processor, next); - else { - t.readdirCB((_, entries) => this.walkCB3(t, entries, processor, next), true); - } - } - next(); - } - walkCB3(target, entries, processor, cb) { - processor = processor.filterEntries(target, entries); - let tasks = 1; - const next = () => { - if (--tasks === 0) - cb(); - }; - for (const [m, absolute, ifDir] of processor.matches.entries()) { - if (this.#ignored(m)) - continue; - tasks++; - this.match(m, absolute, ifDir).then(() => next()); - } - for (const [target, patterns] of processor.subwalks.entries()) { - tasks++; - this.walkCB2(target, patterns, processor.child(), next); - } - next(); - } - walkCBSync(target, patterns, cb) { - /* c8 ignore start */ - if (this.signal?.aborted) - cb(); - /* c8 ignore stop */ - this.walkCB2Sync(target, patterns, new processor_js_1.Processor(this.opts), cb); - } - walkCB2Sync(target, patterns, processor, cb) { - if (this.#childrenIgnored(target)) - return cb(); - if (this.signal?.aborted) - cb(); - if (this.paused) { - this.onResume(() => this.walkCB2Sync(target, patterns, processor, cb)); - return; - } - processor.processPatterns(target, patterns); - // done processing. all of the above is sync, can be abstracted out. - // subwalks is a map of paths to the entry filters they need - // matches is a map of paths to [absolute, ifDir] tuples. - let tasks = 1; - const next = () => { - if (--tasks === 0) - cb(); - }; - for (const [m, absolute, ifDir] of processor.matches.entries()) { - if (this.#ignored(m)) - continue; - this.matchSync(m, absolute, ifDir); - } - for (const t of processor.subwalkTargets()) { - if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) { - continue; - } - tasks++; - const children = t.readdirSync(); - this.walkCB3Sync(t, children, processor, next); - } - next(); - } - walkCB3Sync(target, entries, processor, cb) { - processor = processor.filterEntries(target, entries); - let tasks = 1; - const next = () => { - if (--tasks === 0) - cb(); - }; - for (const [m, absolute, ifDir] of processor.matches.entries()) { - if (this.#ignored(m)) - continue; - this.matchSync(m, absolute, ifDir); - } - for (const [target, patterns] of processor.subwalks.entries()) { - tasks++; - this.walkCB2Sync(target, patterns, processor.child(), next); - } - next(); - } -} -exports.GlobUtil = GlobUtil; -class GlobWalker extends GlobUtil { - matches = new Set(); - constructor(patterns, path, opts) { - super(patterns, path, opts); - } - matchEmit(e) { - this.matches.add(e); - } - async walk() { - if (this.signal?.aborted) - throw this.signal.reason; - if (this.path.isUnknown()) { - await this.path.lstat(); - } - await new Promise((res, rej) => { - this.walkCB(this.path, this.patterns, () => { - if (this.signal?.aborted) { - rej(this.signal.reason); - } - else { - res(this.matches); - } - }); - }); - return this.matches; - } - walkSync() { - if (this.signal?.aborted) - throw this.signal.reason; - if (this.path.isUnknown()) { - this.path.lstatSync(); - } - // nothing for the callback to do, because this never pauses - this.walkCBSync(this.path, this.patterns, () => { - if (this.signal?.aborted) - throw this.signal.reason; - }); - return this.matches; - } -} -exports.GlobWalker = GlobWalker; -class GlobStream extends GlobUtil { - results; - constructor(patterns, path, opts) { - super(patterns, path, opts); - this.results = new minipass_1.Minipass({ - signal: this.signal, - objectMode: true, - }); - this.results.on('drain', () => this.resume()); - this.results.on('resume', () => this.resume()); - } - matchEmit(e) { - this.results.write(e); - if (!this.results.flowing) - this.pause(); - } - stream() { - const target = this.path; - if (target.isUnknown()) { - target.lstat().then(() => { - this.walkCB(target, this.patterns, () => this.results.end()); - }); - } - else { - this.walkCB(target, this.patterns, () => this.results.end()); - } - return this.results; - } - streamSync() { - if (this.path.isUnknown()) { - this.path.lstatSync(); - } - this.walkCBSync(this.path, this.patterns, () => this.results.end()); - return this.results; - } -} -exports.GlobStream = GlobStream; -//# sourceMappingURL=walker.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.js.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.js.map deleted file mode 100644 index 49b013864d534b..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/commonjs/walker.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"walker.js","sourceRoot":"","sources":["../../src/walker.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Single-use utility classes to provide functionality to the {@link Glob}\n * methods.\n *\n * @module\n */\nimport { Minipass } from 'minipass'\nimport { Path } from 'path-scurry'\nimport { Ignore, IgnoreLike } from './ignore.js'\n\n// XXX can we somehow make it so that it NEVER processes a given path more than\n// once, enough that the match set tracking is no longer needed? that'd speed\n// things up a lot. Or maybe bring back nounique, and skip it in that case?\n\n// a single minimatch set entry with 1 or more parts\nimport { Pattern } from './pattern.js'\nimport { Processor } from './processor.js'\n\nexport interface GlobWalkerOpts {\n absolute?: boolean\n allowWindowsEscape?: boolean\n cwd?: string | URL\n dot?: boolean\n dotRelative?: boolean\n follow?: boolean\n ignore?: string | string[] | IgnoreLike\n mark?: boolean\n matchBase?: boolean\n // Note: maxDepth here means \"maximum actual Path.depth()\",\n // not \"maximum depth beyond cwd\"\n maxDepth?: number\n nobrace?: boolean\n nocase?: boolean\n nodir?: boolean\n noext?: boolean\n noglobstar?: boolean\n platform?: NodeJS.Platform\n posix?: boolean\n realpath?: boolean\n root?: string\n stat?: boolean\n signal?: AbortSignal\n windowsPathsNoEscape?: boolean\n withFileTypes?: boolean\n includeChildMatches?: boolean\n}\n\nexport type GWOFileTypesTrue = GlobWalkerOpts & {\n withFileTypes: true\n}\nexport type GWOFileTypesFalse = GlobWalkerOpts & {\n withFileTypes: false\n}\nexport type GWOFileTypesUnset = GlobWalkerOpts & {\n withFileTypes?: undefined\n}\n\nexport type Result =\n O extends GWOFileTypesTrue ? Path\n : O extends GWOFileTypesFalse ? string\n : O extends GWOFileTypesUnset ? string\n : Path | string\n\nexport type Matches =\n O extends GWOFileTypesTrue ? Set\n : O extends GWOFileTypesFalse ? Set\n : O extends GWOFileTypesUnset ? Set\n : Set\n\nexport type MatchStream = Minipass<\n Result,\n Result\n>\n\nconst makeIgnore = (\n ignore: string | string[] | IgnoreLike,\n opts: GlobWalkerOpts,\n): IgnoreLike =>\n typeof ignore === 'string' ? new Ignore([ignore], opts)\n : Array.isArray(ignore) ? new Ignore(ignore, opts)\n : ignore\n\n/**\n * basic walking utilities that all the glob walker types use\n */\nexport abstract class GlobUtil {\n path: Path\n patterns: Pattern[]\n opts: O\n seen: Set = new Set()\n paused: boolean = false\n aborted: boolean = false\n #onResume: (() => any)[] = []\n #ignore?: IgnoreLike\n #sep: '\\\\' | '/'\n signal?: AbortSignal\n maxDepth: number\n includeChildMatches: boolean\n\n constructor(patterns: Pattern[], path: Path, opts: O)\n constructor(patterns: Pattern[], path: Path, opts: O) {\n this.patterns = patterns\n this.path = path\n this.opts = opts\n this.#sep = !opts.posix && opts.platform === 'win32' ? '\\\\' : '/'\n this.includeChildMatches = opts.includeChildMatches !== false\n if (opts.ignore || !this.includeChildMatches) {\n this.#ignore = makeIgnore(opts.ignore ?? [], opts)\n if (\n !this.includeChildMatches &&\n typeof this.#ignore.add !== 'function'\n ) {\n const m = 'cannot ignore child matches, ignore lacks add() method.'\n throw new Error(m)\n }\n }\n // ignore, always set with maxDepth, but it's optional on the\n // GlobOptions type\n /* c8 ignore start */\n this.maxDepth = opts.maxDepth || Infinity\n /* c8 ignore stop */\n if (opts.signal) {\n this.signal = opts.signal\n this.signal.addEventListener('abort', () => {\n this.#onResume.length = 0\n })\n }\n }\n\n #ignored(path: Path): boolean {\n return this.seen.has(path) || !!this.#ignore?.ignored?.(path)\n }\n #childrenIgnored(path: Path): boolean {\n return !!this.#ignore?.childrenIgnored?.(path)\n }\n\n // backpressure mechanism\n pause() {\n this.paused = true\n }\n resume() {\n /* c8 ignore start */\n if (this.signal?.aborted) return\n /* c8 ignore stop */\n this.paused = false\n let fn: (() => any) | undefined = undefined\n while (!this.paused && (fn = this.#onResume.shift())) {\n fn()\n }\n }\n onResume(fn: () => any) {\n if (this.signal?.aborted) return\n /* c8 ignore start */\n if (!this.paused) {\n fn()\n } else {\n /* c8 ignore stop */\n this.#onResume.push(fn)\n }\n }\n\n // do the requisite realpath/stat checking, and return the path\n // to add or undefined to filter it out.\n async matchCheck(e: Path, ifDir: boolean): Promise {\n if (ifDir && this.opts.nodir) return undefined\n let rpc: Path | undefined\n if (this.opts.realpath) {\n rpc = e.realpathCached() || (await e.realpath())\n if (!rpc) return undefined\n e = rpc\n }\n const needStat = e.isUnknown() || this.opts.stat\n const s = needStat ? await e.lstat() : e\n if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) {\n const target = await s.realpath()\n /* c8 ignore start */\n if (target && (target.isUnknown() || this.opts.stat)) {\n await target.lstat()\n }\n /* c8 ignore stop */\n }\n return this.matchCheckTest(s, ifDir)\n }\n\n matchCheckTest(e: Path | undefined, ifDir: boolean): Path | undefined {\n return (\n e &&\n (this.maxDepth === Infinity || e.depth() <= this.maxDepth) &&\n (!ifDir || e.canReaddir()) &&\n (!this.opts.nodir || !e.isDirectory()) &&\n (!this.opts.nodir ||\n !this.opts.follow ||\n !e.isSymbolicLink() ||\n !e.realpathCached()?.isDirectory()) &&\n !this.#ignored(e)\n ) ?\n e\n : undefined\n }\n\n matchCheckSync(e: Path, ifDir: boolean): Path | undefined {\n if (ifDir && this.opts.nodir) return undefined\n let rpc: Path | undefined\n if (this.opts.realpath) {\n rpc = e.realpathCached() || e.realpathSync()\n if (!rpc) return undefined\n e = rpc\n }\n const needStat = e.isUnknown() || this.opts.stat\n const s = needStat ? e.lstatSync() : e\n if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) {\n const target = s.realpathSync()\n if (target && (target?.isUnknown() || this.opts.stat)) {\n target.lstatSync()\n }\n }\n return this.matchCheckTest(s, ifDir)\n }\n\n abstract matchEmit(p: Result): void\n abstract matchEmit(p: string | Path): void\n\n matchFinish(e: Path, absolute: boolean) {\n if (this.#ignored(e)) return\n // we know we have an ignore if this is false, but TS doesn't\n if (!this.includeChildMatches && this.#ignore?.add) {\n const ign = `${e.relativePosix()}/**`\n this.#ignore.add(ign)\n }\n const abs =\n this.opts.absolute === undefined ? absolute : this.opts.absolute\n this.seen.add(e)\n const mark = this.opts.mark && e.isDirectory() ? this.#sep : ''\n // ok, we have what we need!\n if (this.opts.withFileTypes) {\n this.matchEmit(e)\n } else if (abs) {\n const abs = this.opts.posix ? e.fullpathPosix() : e.fullpath()\n this.matchEmit(abs + mark)\n } else {\n const rel = this.opts.posix ? e.relativePosix() : e.relative()\n const pre =\n this.opts.dotRelative && !rel.startsWith('..' + this.#sep) ?\n '.' + this.#sep\n : ''\n this.matchEmit(!rel ? '.' + mark : pre + rel + mark)\n }\n }\n\n async match(e: Path, absolute: boolean, ifDir: boolean): Promise {\n const p = await this.matchCheck(e, ifDir)\n if (p) this.matchFinish(p, absolute)\n }\n\n matchSync(e: Path, absolute: boolean, ifDir: boolean): void {\n const p = this.matchCheckSync(e, ifDir)\n if (p) this.matchFinish(p, absolute)\n }\n\n walkCB(target: Path, patterns: Pattern[], cb: () => any) {\n /* c8 ignore start */\n if (this.signal?.aborted) cb()\n /* c8 ignore stop */\n this.walkCB2(target, patterns, new Processor(this.opts), cb)\n }\n\n walkCB2(\n target: Path,\n patterns: Pattern[],\n processor: Processor,\n cb: () => any,\n ) {\n if (this.#childrenIgnored(target)) return cb()\n if (this.signal?.aborted) cb()\n if (this.paused) {\n this.onResume(() => this.walkCB2(target, patterns, processor, cb))\n return\n }\n processor.processPatterns(target, patterns)\n\n // done processing. all of the above is sync, can be abstracted out.\n // subwalks is a map of paths to the entry filters they need\n // matches is a map of paths to [absolute, ifDir] tuples.\n let tasks = 1\n const next = () => {\n if (--tasks === 0) cb()\n }\n\n for (const [m, absolute, ifDir] of processor.matches.entries()) {\n if (this.#ignored(m)) continue\n tasks++\n this.match(m, absolute, ifDir).then(() => next())\n }\n\n for (const t of processor.subwalkTargets()) {\n if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) {\n continue\n }\n tasks++\n const childrenCached = t.readdirCached()\n if (t.calledReaddir())\n this.walkCB3(t, childrenCached, processor, next)\n else {\n t.readdirCB(\n (_, entries) => this.walkCB3(t, entries, processor, next),\n true,\n )\n }\n }\n\n next()\n }\n\n walkCB3(\n target: Path,\n entries: Path[],\n processor: Processor,\n cb: () => any,\n ) {\n processor = processor.filterEntries(target, entries)\n\n let tasks = 1\n const next = () => {\n if (--tasks === 0) cb()\n }\n\n for (const [m, absolute, ifDir] of processor.matches.entries()) {\n if (this.#ignored(m)) continue\n tasks++\n this.match(m, absolute, ifDir).then(() => next())\n }\n for (const [target, patterns] of processor.subwalks.entries()) {\n tasks++\n this.walkCB2(target, patterns, processor.child(), next)\n }\n\n next()\n }\n\n walkCBSync(target: Path, patterns: Pattern[], cb: () => any) {\n /* c8 ignore start */\n if (this.signal?.aborted) cb()\n /* c8 ignore stop */\n this.walkCB2Sync(target, patterns, new Processor(this.opts), cb)\n }\n\n walkCB2Sync(\n target: Path,\n patterns: Pattern[],\n processor: Processor,\n cb: () => any,\n ) {\n if (this.#childrenIgnored(target)) return cb()\n if (this.signal?.aborted) cb()\n if (this.paused) {\n this.onResume(() =>\n this.walkCB2Sync(target, patterns, processor, cb),\n )\n return\n }\n processor.processPatterns(target, patterns)\n\n // done processing. all of the above is sync, can be abstracted out.\n // subwalks is a map of paths to the entry filters they need\n // matches is a map of paths to [absolute, ifDir] tuples.\n let tasks = 1\n const next = () => {\n if (--tasks === 0) cb()\n }\n\n for (const [m, absolute, ifDir] of processor.matches.entries()) {\n if (this.#ignored(m)) continue\n this.matchSync(m, absolute, ifDir)\n }\n\n for (const t of processor.subwalkTargets()) {\n if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) {\n continue\n }\n tasks++\n const children = t.readdirSync()\n this.walkCB3Sync(t, children, processor, next)\n }\n\n next()\n }\n\n walkCB3Sync(\n target: Path,\n entries: Path[],\n processor: Processor,\n cb: () => any,\n ) {\n processor = processor.filterEntries(target, entries)\n\n let tasks = 1\n const next = () => {\n if (--tasks === 0) cb()\n }\n\n for (const [m, absolute, ifDir] of processor.matches.entries()) {\n if (this.#ignored(m)) continue\n this.matchSync(m, absolute, ifDir)\n }\n for (const [target, patterns] of processor.subwalks.entries()) {\n tasks++\n this.walkCB2Sync(target, patterns, processor.child(), next)\n }\n\n next()\n }\n}\n\nexport class GlobWalker<\n O extends GlobWalkerOpts = GlobWalkerOpts,\n> extends GlobUtil {\n matches = new Set>()\n\n constructor(patterns: Pattern[], path: Path, opts: O) {\n super(patterns, path, opts)\n }\n\n matchEmit(e: Result): void {\n this.matches.add(e)\n }\n\n async walk(): Promise>> {\n if (this.signal?.aborted) throw this.signal.reason\n if (this.path.isUnknown()) {\n await this.path.lstat()\n }\n await new Promise((res, rej) => {\n this.walkCB(this.path, this.patterns, () => {\n if (this.signal?.aborted) {\n rej(this.signal.reason)\n } else {\n res(this.matches)\n }\n })\n })\n return this.matches\n }\n\n walkSync(): Set> {\n if (this.signal?.aborted) throw this.signal.reason\n if (this.path.isUnknown()) {\n this.path.lstatSync()\n }\n // nothing for the callback to do, because this never pauses\n this.walkCBSync(this.path, this.patterns, () => {\n if (this.signal?.aborted) throw this.signal.reason\n })\n return this.matches\n }\n}\n\nexport class GlobStream<\n O extends GlobWalkerOpts = GlobWalkerOpts,\n> extends GlobUtil {\n results: Minipass, Result>\n\n constructor(patterns: Pattern[], path: Path, opts: O) {\n super(patterns, path, opts)\n this.results = new Minipass, Result>({\n signal: this.signal,\n objectMode: true,\n })\n this.results.on('drain', () => this.resume())\n this.results.on('resume', () => this.resume())\n }\n\n matchEmit(e: Result): void {\n this.results.write(e)\n if (!this.results.flowing) this.pause()\n }\n\n stream(): MatchStream {\n const target = this.path\n if (target.isUnknown()) {\n target.lstat().then(() => {\n this.walkCB(target, this.patterns, () => this.results.end())\n })\n } else {\n this.walkCB(target, this.patterns, () => this.results.end())\n }\n return this.results\n }\n\n streamSync(): MatchStream {\n if (this.path.isUnknown()) {\n this.path.lstatSync()\n }\n this.walkCBSync(this.path, this.patterns, () => this.results.end())\n return this.results\n }\n}\n"]} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.d.mts b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.d.mts deleted file mode 100644 index 77298e47708175..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.d.mts +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node -export {}; -//# sourceMappingURL=bin.d.mts.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.d.mts.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.d.mts.map deleted file mode 100644 index ec64bdda861bc9..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.d.mts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bin.d.mts","sourceRoot":"","sources":["../../src/bin.mts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.mjs b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.mjs deleted file mode 100755 index 5c7bf1e9256105..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.mjs +++ /dev/null @@ -1,270 +0,0 @@ -#!/usr/bin/env node -import { foregroundChild } from 'foreground-child'; -import { existsSync } from 'fs'; -import { jack } from 'jackspeak'; -import { loadPackageJson } from 'package-json-from-dist'; -import { join } from 'path'; -import { globStream } from './index.js'; -const { version } = loadPackageJson(import.meta.url, '../package.json'); -const j = jack({ - usage: 'glob [options] [ [ ...]]', -}) - .description(` - Glob v${version} - - Expand the positional glob expression arguments into any matching file - system paths found. - `) - .opt({ - cmd: { - short: 'c', - hint: 'command', - description: `Run the command provided, passing the glob expression - matches as arguments.`, - }, -}) - .opt({ - default: { - short: 'p', - hint: 'pattern', - description: `If no positional arguments are provided, glob will use - this pattern`, - }, -}) - .flag({ - all: { - short: 'A', - description: `By default, the glob cli command will not expand any - arguments that are an exact match to a file on disk. - - This prevents double-expanding, in case the shell expands - an argument whose filename is a glob expression. - - For example, if 'app/*.ts' would match 'app/[id].ts', then - on Windows powershell or cmd.exe, 'glob app/*.ts' will - expand to 'app/[id].ts', as expected. However, in posix - shells such as bash or zsh, the shell will first expand - 'app/*.ts' to a list of filenames. Then glob will look - for a file matching 'app/[id].ts' (ie, 'app/i.ts' or - 'app/d.ts'), which is unexpected. - - Setting '--all' prevents this behavior, causing glob - to treat ALL patterns as glob expressions to be expanded, - even if they are an exact match to a file on disk. - - When setting this option, be sure to enquote arguments - so that the shell will not expand them prior to passing - them to the glob command process. - `, - }, - absolute: { - short: 'a', - description: 'Expand to absolute paths', - }, - 'dot-relative': { - short: 'd', - description: `Prepend './' on relative matches`, - }, - mark: { - short: 'm', - description: `Append a / on any directories matched`, - }, - posix: { - short: 'x', - description: `Always resolve to posix style paths, using '/' as the - directory separator, even on Windows. Drive letter - absolute matches on Windows will be expanded to their - full resolved UNC maths, eg instead of 'C:\\foo\\bar', - it will expand to '//?/C:/foo/bar'. - `, - }, - follow: { - short: 'f', - description: `Follow symlinked directories when expanding '**'`, - }, - realpath: { - short: 'R', - description: `Call 'fs.realpath' on all of the results. In the case - of an entry that cannot be resolved, the entry is - omitted. This incurs a slight performance penalty, of - course, because of the added system calls.`, - }, - stat: { - short: 's', - description: `Call 'fs.lstat' on all entries, whether required or not - to determine if it's a valid match.`, - }, - 'match-base': { - short: 'b', - description: `Perform a basename-only match if the pattern does not - contain any slash characters. That is, '*.js' would be - treated as equivalent to '**/*.js', matching js files - in all directories. - `, - }, - dot: { - description: `Allow patterns to match files/directories that start - with '.', even if the pattern does not start with '.' - `, - }, - nobrace: { - description: 'Do not expand {...} patterns', - }, - nocase: { - description: `Perform a case-insensitive match. This defaults to - 'true' on macOS and Windows platforms, and false on - all others. - - Note: 'nocase' should only be explicitly set when it is - known that the filesystem's case sensitivity differs - from the platform default. If set 'true' on - case-insensitive file systems, then the walk may return - more or less results than expected. - `, - }, - nodir: { - description: `Do not match directories, only files. - - Note: to *only* match directories, append a '/' at the - end of the pattern. - `, - }, - noext: { - description: `Do not expand extglob patterns, such as '+(a|b)'`, - }, - noglobstar: { - description: `Do not expand '**' against multiple path portions. - Ie, treat it as a normal '*' instead.`, - }, - 'windows-path-no-escape': { - description: `Use '\\' as a path separator *only*, and *never* as an - escape character. If set, all '\\' characters are - replaced with '/' in the pattern.`, - }, -}) - .num({ - 'max-depth': { - short: 'D', - description: `Maximum depth to traverse from the current - working directory`, - }, -}) - .opt({ - cwd: { - short: 'C', - description: 'Current working directory to execute/match in', - default: process.cwd(), - }, - root: { - short: 'r', - description: `A string path resolved against the 'cwd', which is - used as the starting point for absolute patterns that - start with '/' (but not drive letters or UNC paths - on Windows). - - Note that this *doesn't* necessarily limit the walk to - the 'root' directory, and doesn't affect the cwd - starting point for non-absolute patterns. A pattern - containing '..' will still be able to traverse out of - the root directory, if it is not an actual root directory - on the filesystem, and any non-absolute patterns will - still be matched in the 'cwd'. - - To start absolute and non-absolute patterns in the same - path, you can use '--root=' to set it to the empty - string. However, be aware that on Windows systems, a - pattern like 'x:/*' or '//host/share/*' will *always* - start in the 'x:/' or '//host/share/' directory, - regardless of the --root setting. - `, - }, - platform: { - description: `Defaults to the value of 'process.platform' if - available, or 'linux' if not. Setting --platform=win32 - on non-Windows systems may cause strange behavior!`, - validOptions: [ - 'aix', - 'android', - 'darwin', - 'freebsd', - 'haiku', - 'linux', - 'openbsd', - 'sunos', - 'win32', - 'cygwin', - 'netbsd', - ], - }, -}) - .optList({ - ignore: { - short: 'i', - description: `Glob patterns to ignore`, - }, -}) - .flag({ - debug: { - short: 'v', - description: `Output a huge amount of noisy debug information about - patterns as they are parsed and used to match files.`, - }, -}) - .flag({ - help: { - short: 'h', - description: 'Show this usage information', - }, -}); -try { - const { positionals, values } = j.parse(); - if (values.help) { - console.log(j.usage()); - process.exit(0); - } - if (positionals.length === 0 && !values.default) - throw 'No patterns provided'; - if (positionals.length === 0 && values.default) - positionals.push(values.default); - const patterns = values.all ? positionals : positionals.filter(p => !existsSync(p)); - const matches = values.all ? - [] - : positionals.filter(p => existsSync(p)).map(p => join(p)); - const stream = globStream(patterns, { - absolute: values.absolute, - cwd: values.cwd, - dot: values.dot, - dotRelative: values['dot-relative'], - follow: values.follow, - ignore: values.ignore, - mark: values.mark, - matchBase: values['match-base'], - maxDepth: values['max-depth'], - nobrace: values.nobrace, - nocase: values.nocase, - nodir: values.nodir, - noext: values.noext, - noglobstar: values.noglobstar, - platform: values.platform, - realpath: values.realpath, - root: values.root, - stat: values.stat, - debug: values.debug, - posix: values.posix, - }); - const cmd = values.cmd; - if (!cmd) { - matches.forEach(m => console.log(m)); - stream.on('data', f => console.log(f)); - } - else { - stream.on('data', f => matches.push(f)); - stream.on('end', () => foregroundChild(cmd, matches, { shell: true })); - } -} -catch (e) { - console.error(j.usage()); - console.error(e instanceof Error ? e.message : String(e)); - process.exit(1); -} -//# sourceMappingURL=bin.mjs.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.mjs.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.mjs.map deleted file mode 100644 index 67247d5b4634a5..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/bin.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bin.mjs","sourceRoot":"","sources":["../../src/bin.mts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { foregroundChild } from 'foreground-child'\nimport { existsSync } from 'fs'\nimport { jack } from 'jackspeak'\nimport { loadPackageJson } from 'package-json-from-dist'\nimport { join } from 'path'\nimport { globStream } from './index.js'\n\nconst { version } = loadPackageJson(import.meta.url, '../package.json')\n\nconst j = jack({\n usage: 'glob [options] [ [ ...]]',\n})\n .description(\n `\n Glob v${version}\n\n Expand the positional glob expression arguments into any matching file\n system paths found.\n `,\n )\n .opt({\n cmd: {\n short: 'c',\n hint: 'command',\n description: `Run the command provided, passing the glob expression\n matches as arguments.`,\n },\n })\n .opt({\n default: {\n short: 'p',\n hint: 'pattern',\n description: `If no positional arguments are provided, glob will use\n this pattern`,\n },\n })\n .flag({\n all: {\n short: 'A',\n description: `By default, the glob cli command will not expand any\n arguments that are an exact match to a file on disk.\n\n This prevents double-expanding, in case the shell expands\n an argument whose filename is a glob expression.\n\n For example, if 'app/*.ts' would match 'app/[id].ts', then\n on Windows powershell or cmd.exe, 'glob app/*.ts' will\n expand to 'app/[id].ts', as expected. However, in posix\n shells such as bash or zsh, the shell will first expand\n 'app/*.ts' to a list of filenames. Then glob will look\n for a file matching 'app/[id].ts' (ie, 'app/i.ts' or\n 'app/d.ts'), which is unexpected.\n\n Setting '--all' prevents this behavior, causing glob\n to treat ALL patterns as glob expressions to be expanded,\n even if they are an exact match to a file on disk.\n\n When setting this option, be sure to enquote arguments\n so that the shell will not expand them prior to passing\n them to the glob command process.\n `,\n },\n absolute: {\n short: 'a',\n description: 'Expand to absolute paths',\n },\n 'dot-relative': {\n short: 'd',\n description: `Prepend './' on relative matches`,\n },\n mark: {\n short: 'm',\n description: `Append a / on any directories matched`,\n },\n posix: {\n short: 'x',\n description: `Always resolve to posix style paths, using '/' as the\n directory separator, even on Windows. Drive letter\n absolute matches on Windows will be expanded to their\n full resolved UNC maths, eg instead of 'C:\\\\foo\\\\bar',\n it will expand to '//?/C:/foo/bar'.\n `,\n },\n\n follow: {\n short: 'f',\n description: `Follow symlinked directories when expanding '**'`,\n },\n realpath: {\n short: 'R',\n description: `Call 'fs.realpath' on all of the results. In the case\n of an entry that cannot be resolved, the entry is\n omitted. This incurs a slight performance penalty, of\n course, because of the added system calls.`,\n },\n stat: {\n short: 's',\n description: `Call 'fs.lstat' on all entries, whether required or not\n to determine if it's a valid match.`,\n },\n 'match-base': {\n short: 'b',\n description: `Perform a basename-only match if the pattern does not\n contain any slash characters. That is, '*.js' would be\n treated as equivalent to '**/*.js', matching js files\n in all directories.\n `,\n },\n\n dot: {\n description: `Allow patterns to match files/directories that start\n with '.', even if the pattern does not start with '.'\n `,\n },\n nobrace: {\n description: 'Do not expand {...} patterns',\n },\n nocase: {\n description: `Perform a case-insensitive match. This defaults to\n 'true' on macOS and Windows platforms, and false on\n all others.\n\n Note: 'nocase' should only be explicitly set when it is\n known that the filesystem's case sensitivity differs\n from the platform default. If set 'true' on\n case-insensitive file systems, then the walk may return\n more or less results than expected.\n `,\n },\n nodir: {\n description: `Do not match directories, only files.\n\n Note: to *only* match directories, append a '/' at the\n end of the pattern.\n `,\n },\n noext: {\n description: `Do not expand extglob patterns, such as '+(a|b)'`,\n },\n noglobstar: {\n description: `Do not expand '**' against multiple path portions.\n Ie, treat it as a normal '*' instead.`,\n },\n 'windows-path-no-escape': {\n description: `Use '\\\\' as a path separator *only*, and *never* as an\n escape character. If set, all '\\\\' characters are\n replaced with '/' in the pattern.`,\n },\n })\n .num({\n 'max-depth': {\n short: 'D',\n description: `Maximum depth to traverse from the current\n working directory`,\n },\n })\n .opt({\n cwd: {\n short: 'C',\n description: 'Current working directory to execute/match in',\n default: process.cwd(),\n },\n root: {\n short: 'r',\n description: `A string path resolved against the 'cwd', which is\n used as the starting point for absolute patterns that\n start with '/' (but not drive letters or UNC paths\n on Windows).\n\n Note that this *doesn't* necessarily limit the walk to\n the 'root' directory, and doesn't affect the cwd\n starting point for non-absolute patterns. A pattern\n containing '..' will still be able to traverse out of\n the root directory, if it is not an actual root directory\n on the filesystem, and any non-absolute patterns will\n still be matched in the 'cwd'.\n\n To start absolute and non-absolute patterns in the same\n path, you can use '--root=' to set it to the empty\n string. However, be aware that on Windows systems, a\n pattern like 'x:/*' or '//host/share/*' will *always*\n start in the 'x:/' or '//host/share/' directory,\n regardless of the --root setting.\n `,\n },\n platform: {\n description: `Defaults to the value of 'process.platform' if\n available, or 'linux' if not. Setting --platform=win32\n on non-Windows systems may cause strange behavior!`,\n validOptions: [\n 'aix',\n 'android',\n 'darwin',\n 'freebsd',\n 'haiku',\n 'linux',\n 'openbsd',\n 'sunos',\n 'win32',\n 'cygwin',\n 'netbsd',\n ],\n },\n })\n .optList({\n ignore: {\n short: 'i',\n description: `Glob patterns to ignore`,\n },\n })\n .flag({\n debug: {\n short: 'v',\n description: `Output a huge amount of noisy debug information about\n patterns as they are parsed and used to match files.`,\n },\n })\n .flag({\n help: {\n short: 'h',\n description: 'Show this usage information',\n },\n })\n\ntry {\n const { positionals, values } = j.parse()\n if (values.help) {\n console.log(j.usage())\n process.exit(0)\n }\n if (positionals.length === 0 && !values.default)\n throw 'No patterns provided'\n if (positionals.length === 0 && values.default)\n positionals.push(values.default)\n const patterns =\n values.all ? positionals : positionals.filter(p => !existsSync(p))\n const matches =\n values.all ?\n []\n : positionals.filter(p => existsSync(p)).map(p => join(p))\n const stream = globStream(patterns, {\n absolute: values.absolute,\n cwd: values.cwd,\n dot: values.dot,\n dotRelative: values['dot-relative'],\n follow: values.follow,\n ignore: values.ignore,\n mark: values.mark,\n matchBase: values['match-base'],\n maxDepth: values['max-depth'],\n nobrace: values.nobrace,\n nocase: values.nocase,\n nodir: values.nodir,\n noext: values.noext,\n noglobstar: values.noglobstar,\n platform: values.platform as undefined | NodeJS.Platform,\n realpath: values.realpath,\n root: values.root,\n stat: values.stat,\n debug: values.debug,\n posix: values.posix,\n })\n\n const cmd = values.cmd\n if (!cmd) {\n matches.forEach(m => console.log(m))\n stream.on('data', f => console.log(f))\n } else {\n stream.on('data', f => matches.push(f))\n stream.on('end', () => foregroundChild(cmd, matches, { shell: true }))\n }\n} catch (e) {\n console.error(j.usage())\n console.error(e instanceof Error ? e.message : String(e))\n process.exit(1)\n}\n"]} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.d.ts b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.d.ts deleted file mode 100644 index 25262b3ddf489e..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.d.ts +++ /dev/null @@ -1,388 +0,0 @@ -import { Minimatch } from 'minimatch'; -import { Minipass } from 'minipass'; -import { FSOption, Path, PathScurry } from 'path-scurry'; -import { IgnoreLike } from './ignore.js'; -import { Pattern } from './pattern.js'; -export type MatchSet = Minimatch['set']; -export type GlobParts = Exclude; -/** - * A `GlobOptions` object may be provided to any of the exported methods, and - * must be provided to the `Glob` constructor. - * - * All options are optional, boolean, and false by default, unless otherwise - * noted. - * - * All resolved options are added to the Glob object as properties. - * - * If you are running many `glob` operations, you can pass a Glob object as the - * `options` argument to a subsequent operation to share the previously loaded - * cache. - */ -export interface GlobOptions { - /** - * Set to `true` to always receive absolute paths for - * matched files. Set to `false` to always return relative paths. - * - * When this option is not set, absolute paths are returned for patterns - * that are absolute, and otherwise paths are returned that are relative - * to the `cwd` setting. - * - * This does _not_ make an extra system call to get - * the realpath, it only does string path resolution. - * - * Conflicts with {@link withFileTypes} - */ - absolute?: boolean; - /** - * Set to false to enable {@link windowsPathsNoEscape} - * - * @deprecated - */ - allowWindowsEscape?: boolean; - /** - * The current working directory in which to search. Defaults to - * `process.cwd()`. - * - * May be eiher a string path or a `file://` URL object or string. - */ - cwd?: string | URL; - /** - * Include `.dot` files in normal matches and `globstar` - * matches. Note that an explicit dot in a portion of the pattern - * will always match dot files. - */ - dot?: boolean; - /** - * Prepend all relative path strings with `./` (or `.\` on Windows). - * - * Without this option, returned relative paths are "bare", so instead of - * returning `'./foo/bar'`, they are returned as `'foo/bar'`. - * - * Relative patterns starting with `'../'` are not prepended with `./`, even - * if this option is set. - */ - dotRelative?: boolean; - /** - * Follow symlinked directories when expanding `**` - * patterns. This can result in a lot of duplicate references in - * the presence of cyclic links, and make performance quite bad. - * - * By default, a `**` in a pattern will follow 1 symbolic link if - * it is not the first item in the pattern, or none if it is the - * first item in the pattern, following the same behavior as Bash. - */ - follow?: boolean; - /** - * string or string[], or an object with `ignore` and `ignoreChildren` - * methods. - * - * If a string or string[] is provided, then this is treated as a glob - * pattern or array of glob patterns to exclude from matches. To ignore all - * children within a directory, as well as the entry itself, append `'/**'` - * to the ignore pattern. - * - * **Note** `ignore` patterns are _always_ in `dot:true` mode, regardless of - * any other settings. - * - * If an object is provided that has `ignored(path)` and/or - * `childrenIgnored(path)` methods, then these methods will be called to - * determine whether any Path is a match or if its children should be - * traversed, respectively. - */ - ignore?: string | string[] | IgnoreLike; - /** - * Treat brace expansion like `{a,b}` as a "magic" pattern. Has no - * effect if {@link nobrace} is set. - * - * Only has effect on the {@link hasMagic} function. - */ - magicalBraces?: boolean; - /** - * Add a `/` character to directory matches. Note that this requires - * additional stat calls in some cases. - */ - mark?: boolean; - /** - * Perform a basename-only match if the pattern does not contain any slash - * characters. That is, `*.js` would be treated as equivalent to - * `**\/*.js`, matching all js files in all directories. - */ - matchBase?: boolean; - /** - * Limit the directory traversal to a given depth below the cwd. - * Note that this does NOT prevent traversal to sibling folders, - * root patterns, and so on. It only limits the maximum folder depth - * that the walk will descend, relative to the cwd. - */ - maxDepth?: number; - /** - * Do not expand `{a,b}` and `{1..3}` brace sets. - */ - nobrace?: boolean; - /** - * Perform a case-insensitive match. This defaults to `true` on macOS and - * Windows systems, and `false` on all others. - * - * **Note** `nocase` should only be explicitly set when it is - * known that the filesystem's case sensitivity differs from the - * platform default. If set `true` on case-sensitive file - * systems, or `false` on case-insensitive file systems, then the - * walk may return more or less results than expected. - */ - nocase?: boolean; - /** - * Do not match directories, only files. (Note: to match - * _only_ directories, put a `/` at the end of the pattern.) - */ - nodir?: boolean; - /** - * Do not match "extglob" patterns such as `+(a|b)`. - */ - noext?: boolean; - /** - * Do not match `**` against multiple filenames. (Ie, treat it as a normal - * `*` instead.) - * - * Conflicts with {@link matchBase} - */ - noglobstar?: boolean; - /** - * Defaults to value of `process.platform` if available, or `'linux'` if - * not. Setting `platform:'win32'` on non-Windows systems may cause strange - * behavior. - */ - platform?: NodeJS.Platform; - /** - * Set to true to call `fs.realpath` on all of the - * results. In the case of an entry that cannot be resolved, the - * entry is omitted. This incurs a slight performance penalty, of - * course, because of the added system calls. - */ - realpath?: boolean; - /** - * - * A string path resolved against the `cwd` option, which - * is used as the starting point for absolute patterns that start - * with `/`, (but not drive letters or UNC paths on Windows). - * - * Note that this _doesn't_ necessarily limit the walk to the - * `root` directory, and doesn't affect the cwd starting point for - * non-absolute patterns. A pattern containing `..` will still be - * able to traverse out of the root directory, if it is not an - * actual root directory on the filesystem, and any non-absolute - * patterns will be matched in the `cwd`. For example, the - * pattern `/../*` with `{root:'/some/path'}` will return all - * files in `/some`, not all files in `/some/path`. The pattern - * `*` with `{root:'/some/path'}` will return all the entries in - * the cwd, not the entries in `/some/path`. - * - * To start absolute and non-absolute patterns in the same - * path, you can use `{root:''}`. However, be aware that on - * Windows systems, a pattern like `x:/*` or `//host/share/*` will - * _always_ start in the `x:/` or `//host/share` directory, - * regardless of the `root` setting. - */ - root?: string; - /** - * A [PathScurry](http://npm.im/path-scurry) object used - * to traverse the file system. If the `nocase` option is set - * explicitly, then any provided `scurry` object must match this - * setting. - */ - scurry?: PathScurry; - /** - * Call `lstat()` on all entries, whether required or not to determine - * if it's a valid match. When used with {@link withFileTypes}, this means - * that matches will include data such as modified time, permissions, and - * so on. Note that this will incur a performance cost due to the added - * system calls. - */ - stat?: boolean; - /** - * An AbortSignal which will cancel the Glob walk when - * triggered. - */ - signal?: AbortSignal; - /** - * Use `\\` as a path separator _only_, and - * _never_ as an escape character. If set, all `\\` characters are - * replaced with `/` in the pattern. - * - * Note that this makes it **impossible** to match against paths - * containing literal glob pattern characters, but allows matching - * with patterns constructed using `path.join()` and - * `path.resolve()` on Windows platforms, mimicking the (buggy!) - * behavior of Glob v7 and before on Windows. Please use with - * caution, and be mindful of [the caveat below about Windows - * paths](#windows). (For legacy reasons, this is also set if - * `allowWindowsEscape` is set to the exact value `false`.) - */ - windowsPathsNoEscape?: boolean; - /** - * Return [PathScurry](http://npm.im/path-scurry) - * `Path` objects instead of strings. These are similar to a - * NodeJS `Dirent` object, but with additional methods and - * properties. - * - * Conflicts with {@link absolute} - */ - withFileTypes?: boolean; - /** - * An fs implementation to override some or all of the defaults. See - * http://npm.im/path-scurry for details about what can be overridden. - */ - fs?: FSOption; - /** - * Just passed along to Minimatch. Note that this makes all pattern - * matching operations slower and *extremely* noisy. - */ - debug?: boolean; - /** - * Return `/` delimited paths, even on Windows. - * - * On posix systems, this has no effect. But, on Windows, it means that - * paths will be `/` delimited, and absolute paths will be their full - * resolved UNC forms, eg instead of `'C:\\foo\\bar'`, it would return - * `'//?/C:/foo/bar'` - */ - posix?: boolean; - /** - * Do not match any children of any matches. For example, the pattern - * `**\/foo` would match `a/foo`, but not `a/foo/b/foo` in this mode. - * - * This is especially useful for cases like "find all `node_modules` - * folders, but not the ones in `node_modules`". - * - * In order to support this, the `Ignore` implementation must support an - * `add(pattern: string)` method. If using the default `Ignore` class, then - * this is fine, but if this is set to `false`, and a custom `Ignore` is - * provided that does not have an `add()` method, then it will throw an - * error. - * - * **Caveat** It *only* ignores matches that would be a descendant of a - * previous match, and only if that descendant is matched *after* the - * ancestor is encountered. Since the file system walk happens in - * indeterminate order, it's possible that a match will already be added - * before its ancestor, if multiple or braced patterns are used. - * - * For example: - * - * ```ts - * const results = await glob([ - * // likely to match first, since it's just a stat - * 'a/b/c/d/e/f', - * - * // this pattern is more complicated! It must to various readdir() - * // calls and test the results against a regular expression, and that - * // is certainly going to take a little bit longer. - * // - * // So, later on, it encounters a match at 'a/b/c/d/e', but it's too - * // late to ignore a/b/c/d/e/f, because it's already been emitted. - * 'a/[bdf]/?/[a-z]/*', - * ], { includeChildMatches: false }) - * ``` - * - * It's best to only set this to `false` if you can be reasonably sure that - * no components of the pattern will potentially match one another's file - * system descendants, or if the occasional included child entry will not - * cause problems. - * - * @default true - */ - includeChildMatches?: boolean; -} -export type GlobOptionsWithFileTypesTrue = GlobOptions & { - withFileTypes: true; - absolute?: undefined; - mark?: undefined; - posix?: undefined; -}; -export type GlobOptionsWithFileTypesFalse = GlobOptions & { - withFileTypes?: false; -}; -export type GlobOptionsWithFileTypesUnset = GlobOptions & { - withFileTypes?: undefined; -}; -export type Result = Opts extends GlobOptionsWithFileTypesTrue ? Path : Opts extends GlobOptionsWithFileTypesFalse ? string : Opts extends GlobOptionsWithFileTypesUnset ? string : string | Path; -export type Results = Result[]; -export type FileTypes = Opts extends GlobOptionsWithFileTypesTrue ? true : Opts extends GlobOptionsWithFileTypesFalse ? false : Opts extends GlobOptionsWithFileTypesUnset ? false : boolean; -/** - * An object that can perform glob pattern traversals. - */ -export declare class Glob implements GlobOptions { - absolute?: boolean; - cwd: string; - root?: string; - dot: boolean; - dotRelative: boolean; - follow: boolean; - ignore?: string | string[] | IgnoreLike; - magicalBraces: boolean; - mark?: boolean; - matchBase: boolean; - maxDepth: number; - nobrace: boolean; - nocase: boolean; - nodir: boolean; - noext: boolean; - noglobstar: boolean; - pattern: string[]; - platform: NodeJS.Platform; - realpath: boolean; - scurry: PathScurry; - stat: boolean; - signal?: AbortSignal; - windowsPathsNoEscape: boolean; - withFileTypes: FileTypes; - includeChildMatches: boolean; - /** - * The options provided to the constructor. - */ - opts: Opts; - /** - * An array of parsed immutable {@link Pattern} objects. - */ - patterns: Pattern[]; - /** - * All options are stored as properties on the `Glob` object. - * - * See {@link GlobOptions} for full options descriptions. - * - * Note that a previous `Glob` object can be passed as the - * `GlobOptions` to another `Glob` instantiation to re-use settings - * and caches with a new pattern. - * - * Traversal functions can be called multiple times to run the walk - * again. - */ - constructor(pattern: string | string[], opts: Opts); - /** - * Returns a Promise that resolves to the results array. - */ - walk(): Promise>; - /** - * synchronous {@link Glob.walk} - */ - walkSync(): Results; - /** - * Stream results asynchronously. - */ - stream(): Minipass, Result>; - /** - * Stream results synchronously. - */ - streamSync(): Minipass, Result>; - /** - * Default sync iteration function. Returns a Generator that - * iterates over the results. - */ - iterateSync(): Generator, void, void>; - [Symbol.iterator](): Generator, void, void>; - /** - * Default async iteration function. Returns an AsyncGenerator that - * iterates over the results. - */ - iterate(): AsyncGenerator, void, void>; - [Symbol.asyncIterator](): AsyncGenerator, void, void>; -} -//# sourceMappingURL=glob.d.ts.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.d.ts.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.d.ts.map deleted file mode 100644 index c32dc74c967741..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../src/glob.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.js b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.js deleted file mode 100644 index c9ff3b0036d945..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.js +++ /dev/null @@ -1,243 +0,0 @@ -import { Minimatch } from 'minimatch'; -import { fileURLToPath } from 'node:url'; -import { PathScurry, PathScurryDarwin, PathScurryPosix, PathScurryWin32, } from 'path-scurry'; -import { Pattern } from './pattern.js'; -import { GlobStream, GlobWalker } from './walker.js'; -// if no process global, just call it linux. -// so we default to case-sensitive, / separators -const defaultPlatform = (typeof process === 'object' && - process && - typeof process.platform === 'string') ? - process.platform - : 'linux'; -/** - * An object that can perform glob pattern traversals. - */ -export class Glob { - 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; - /** - * The options provided to the constructor. - */ - opts; - /** - * An array of parsed immutable {@link Pattern} objects. - */ - patterns; - /** - * All options are stored as properties on the `Glob` object. - * - * See {@link GlobOptions} for full options descriptions. - * - * Note that a previous `Glob` object can be passed as the - * `GlobOptions` to another `Glob` instantiation to re-use settings - * and caches with a new pattern. - * - * Traversal functions can be called multiple times to run the walk - * again. - */ - constructor(pattern, opts) { - /* c8 ignore start */ - if (!opts) - throw new TypeError('glob options required'); - /* c8 ignore stop */ - this.withFileTypes = !!opts.withFileTypes; - this.signal = opts.signal; - this.follow = !!opts.follow; - this.dot = !!opts.dot; - this.dotRelative = !!opts.dotRelative; - this.nodir = !!opts.nodir; - this.mark = !!opts.mark; - if (!opts.cwd) { - this.cwd = ''; - } - else if (opts.cwd instanceof URL || opts.cwd.startsWith('file://')) { - opts.cwd = fileURLToPath(opts.cwd); - } - this.cwd = opts.cwd || ''; - this.root = opts.root; - this.magicalBraces = !!opts.magicalBraces; - this.nobrace = !!opts.nobrace; - this.noext = !!opts.noext; - this.realpath = !!opts.realpath; - this.absolute = opts.absolute; - this.includeChildMatches = opts.includeChildMatches !== false; - this.noglobstar = !!opts.noglobstar; - this.matchBase = !!opts.matchBase; - this.maxDepth = - typeof opts.maxDepth === 'number' ? opts.maxDepth : Infinity; - this.stat = !!opts.stat; - this.ignore = opts.ignore; - if (this.withFileTypes && this.absolute !== undefined) { - throw new Error('cannot set absolute and withFileTypes:true'); - } - if (typeof pattern === 'string') { - pattern = [pattern]; - } - this.windowsPathsNoEscape = - !!opts.windowsPathsNoEscape || - opts.allowWindowsEscape === - false; - if (this.windowsPathsNoEscape) { - pattern = pattern.map(p => p.replace(/\\/g, '/')); - } - if (this.matchBase) { - if (opts.noglobstar) { - throw new TypeError('base matching requires globstar'); - } - pattern = pattern.map(p => (p.includes('/') ? p : `./**/${p}`)); - } - this.pattern = pattern; - this.platform = opts.platform || defaultPlatform; - this.opts = { ...opts, platform: this.platform }; - if (opts.scurry) { - this.scurry = opts.scurry; - if (opts.nocase !== undefined && - opts.nocase !== opts.scurry.nocase) { - throw new Error('nocase option contradicts provided scurry option'); - } - } - else { - const Scurry = opts.platform === 'win32' ? PathScurryWin32 - : opts.platform === 'darwin' ? PathScurryDarwin - : opts.platform ? PathScurryPosix - : PathScurry; - this.scurry = new Scurry(this.cwd, { - nocase: opts.nocase, - fs: opts.fs, - }); - } - this.nocase = this.scurry.nocase; - // If you do nocase:true on a case-sensitive file system, then - // we need to use regexps instead of strings for non-magic - // path portions, because statting `aBc` won't return results - // for the file `AbC` for example. - const nocaseMagicOnly = this.platform === 'darwin' || this.platform === 'win32'; - const mmo = { - // default nocase based on platform - ...opts, - dot: this.dot, - matchBase: this.matchBase, - nobrace: this.nobrace, - nocase: this.nocase, - nocaseMagicOnly, - nocomment: true, - noext: this.noext, - nonegate: true, - optimizationLevel: 2, - platform: this.platform, - windowsPathsNoEscape: this.windowsPathsNoEscape, - debug: !!this.opts.debug, - }; - const mms = this.pattern.map(p => new Minimatch(p, mmo)); - const [matchSet, globParts] = mms.reduce((set, m) => { - set[0].push(...m.set); - set[1].push(...m.globParts); - return set; - }, [[], []]); - this.patterns = matchSet.map((set, i) => { - const g = globParts[i]; - /* c8 ignore start */ - if (!g) - throw new Error('invalid pattern object'); - /* c8 ignore stop */ - return new Pattern(set, g, 0, this.platform); - }); - } - async walk() { - // Walkers always return array of Path objects, so we just have to - // coerce them into the right shape. It will have already called - // realpath() if the option was set to do so, so we know that's cached. - // start out knowing the cwd, at least - return [ - ...(await new GlobWalker(this.patterns, this.scurry.cwd, { - ...this.opts, - maxDepth: this.maxDepth !== Infinity ? - this.maxDepth + this.scurry.cwd.depth() - : Infinity, - platform: this.platform, - nocase: this.nocase, - includeChildMatches: this.includeChildMatches, - }).walk()), - ]; - } - walkSync() { - return [ - ...new GlobWalker(this.patterns, this.scurry.cwd, { - ...this.opts, - maxDepth: this.maxDepth !== Infinity ? - this.maxDepth + this.scurry.cwd.depth() - : Infinity, - platform: this.platform, - nocase: this.nocase, - includeChildMatches: this.includeChildMatches, - }).walkSync(), - ]; - } - stream() { - return new GlobStream(this.patterns, this.scurry.cwd, { - ...this.opts, - maxDepth: this.maxDepth !== Infinity ? - this.maxDepth + this.scurry.cwd.depth() - : Infinity, - platform: this.platform, - nocase: this.nocase, - includeChildMatches: this.includeChildMatches, - }).stream(); - } - streamSync() { - return new GlobStream(this.patterns, this.scurry.cwd, { - ...this.opts, - maxDepth: this.maxDepth !== Infinity ? - this.maxDepth + this.scurry.cwd.depth() - : Infinity, - platform: this.platform, - nocase: this.nocase, - includeChildMatches: this.includeChildMatches, - }).streamSync(); - } - /** - * Default sync iteration function. Returns a Generator that - * iterates over the results. - */ - iterateSync() { - return this.streamSync()[Symbol.iterator](); - } - [Symbol.iterator]() { - return this.iterateSync(); - } - /** - * Default async iteration function. Returns an AsyncGenerator that - * iterates over the results. - */ - iterate() { - return this.stream()[Symbol.asyncIterator](); - } - [Symbol.asyncIterator]() { - return this.iterate(); - } -} -//# sourceMappingURL=glob.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.js.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.js.map deleted file mode 100644 index a62c3239827814..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/glob.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/glob.ts"],"names":[],"mappings":"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","sourcesContent":["import { Minimatch, MinimatchOptions } from 'minimatch'\nimport { Minipass } from 'minipass'\nimport { fileURLToPath } from 'node:url'\nimport {\n FSOption,\n Path,\n PathScurry,\n PathScurryDarwin,\n PathScurryPosix,\n PathScurryWin32,\n} from 'path-scurry'\nimport { IgnoreLike } from './ignore.js'\nimport { Pattern } from './pattern.js'\nimport { GlobStream, GlobWalker } from './walker.js'\n\nexport type MatchSet = Minimatch['set']\nexport type GlobParts = Exclude\n\n// if no process global, just call it linux.\n// so we default to case-sensitive, / separators\nconst defaultPlatform: NodeJS.Platform =\n (\n typeof process === 'object' &&\n process &&\n typeof process.platform === 'string'\n ) ?\n process.platform\n : 'linux'\n\n/**\n * A `GlobOptions` object may be provided to any of the exported methods, and\n * must be provided to the `Glob` constructor.\n *\n * All options are optional, boolean, and false by default, unless otherwise\n * noted.\n *\n * All resolved options are added to the Glob object as properties.\n *\n * If you are running many `glob` operations, you can pass a Glob object as the\n * `options` argument to a subsequent operation to share the previously loaded\n * cache.\n */\nexport interface GlobOptions {\n /**\n * Set to `true` to always receive absolute paths for\n * matched files. Set to `false` to always return relative paths.\n *\n * When this option is not set, absolute paths are returned for patterns\n * that are absolute, and otherwise paths are returned that are relative\n * to the `cwd` setting.\n *\n * This does _not_ make an extra system call to get\n * the realpath, it only does string path resolution.\n *\n * Conflicts with {@link withFileTypes}\n */\n absolute?: boolean\n\n /**\n * Set to false to enable {@link windowsPathsNoEscape}\n *\n * @deprecated\n */\n allowWindowsEscape?: boolean\n\n /**\n * The current working directory in which to search. Defaults to\n * `process.cwd()`.\n *\n * May be eiher a string path or a `file://` URL object or string.\n */\n cwd?: string | URL\n\n /**\n * Include `.dot` files in normal matches and `globstar`\n * matches. Note that an explicit dot in a portion of the pattern\n * will always match dot files.\n */\n dot?: boolean\n\n /**\n * Prepend all relative path strings with `./` (or `.\\` on Windows).\n *\n * Without this option, returned relative paths are \"bare\", so instead of\n * returning `'./foo/bar'`, they are returned as `'foo/bar'`.\n *\n * Relative patterns starting with `'../'` are not prepended with `./`, even\n * if this option is set.\n */\n dotRelative?: boolean\n\n /**\n * Follow symlinked directories when expanding `**`\n * patterns. This can result in a lot of duplicate references in\n * the presence of cyclic links, and make performance quite bad.\n *\n * By default, a `**` in a pattern will follow 1 symbolic link if\n * it is not the first item in the pattern, or none if it is the\n * first item in the pattern, following the same behavior as Bash.\n */\n follow?: boolean\n\n /**\n * string or string[], or an object with `ignore` and `ignoreChildren`\n * methods.\n *\n * If a string or string[] is provided, then this is treated as a glob\n * pattern or array of glob patterns to exclude from matches. To ignore all\n * children within a directory, as well as the entry itself, append `'/**'`\n * to the ignore pattern.\n *\n * **Note** `ignore` patterns are _always_ in `dot:true` mode, regardless of\n * any other settings.\n *\n * If an object is provided that has `ignored(path)` and/or\n * `childrenIgnored(path)` methods, then these methods will be called to\n * determine whether any Path is a match or if its children should be\n * traversed, respectively.\n */\n ignore?: string | string[] | IgnoreLike\n\n /**\n * Treat brace expansion like `{a,b}` as a \"magic\" pattern. Has no\n * effect if {@link nobrace} is set.\n *\n * Only has effect on the {@link hasMagic} function.\n */\n magicalBraces?: boolean\n\n /**\n * Add a `/` character to directory matches. Note that this requires\n * additional stat calls in some cases.\n */\n mark?: boolean\n\n /**\n * Perform a basename-only match if the pattern does not contain any slash\n * characters. That is, `*.js` would be treated as equivalent to\n * `**\\/*.js`, matching all js files in all directories.\n */\n matchBase?: boolean\n\n /**\n * Limit the directory traversal to a given depth below the cwd.\n * Note that this does NOT prevent traversal to sibling folders,\n * root patterns, and so on. It only limits the maximum folder depth\n * that the walk will descend, relative to the cwd.\n */\n maxDepth?: number\n\n /**\n * Do not expand `{a,b}` and `{1..3}` brace sets.\n */\n nobrace?: boolean\n\n /**\n * Perform a case-insensitive match. This defaults to `true` on macOS and\n * Windows systems, and `false` on all others.\n *\n * **Note** `nocase` should only be explicitly set when it is\n * known that the filesystem's case sensitivity differs from the\n * platform default. If set `true` on case-sensitive file\n * systems, or `false` on case-insensitive file systems, then the\n * walk may return more or less results than expected.\n */\n nocase?: boolean\n\n /**\n * Do not match directories, only files. (Note: to match\n * _only_ directories, put a `/` at the end of the pattern.)\n */\n nodir?: boolean\n\n /**\n * Do not match \"extglob\" patterns such as `+(a|b)`.\n */\n noext?: boolean\n\n /**\n * Do not match `**` against multiple filenames. (Ie, treat it as a normal\n * `*` instead.)\n *\n * Conflicts with {@link matchBase}\n */\n noglobstar?: boolean\n\n /**\n * Defaults to value of `process.platform` if available, or `'linux'` if\n * not. Setting `platform:'win32'` on non-Windows systems may cause strange\n * behavior.\n */\n platform?: NodeJS.Platform\n\n /**\n * Set to true to call `fs.realpath` on all of the\n * results. In the case of an entry that cannot be resolved, the\n * entry is omitted. This incurs a slight performance penalty, of\n * course, because of the added system calls.\n */\n realpath?: boolean\n\n /**\n *\n * A string path resolved against the `cwd` option, which\n * is used as the starting point for absolute patterns that start\n * with `/`, (but not drive letters or UNC paths on Windows).\n *\n * Note that this _doesn't_ necessarily limit the walk to the\n * `root` directory, and doesn't affect the cwd starting point for\n * non-absolute patterns. A pattern containing `..` will still be\n * able to traverse out of the root directory, if it is not an\n * actual root directory on the filesystem, and any non-absolute\n * patterns will be matched in the `cwd`. For example, the\n * pattern `/../*` with `{root:'/some/path'}` will return all\n * files in `/some`, not all files in `/some/path`. The pattern\n * `*` with `{root:'/some/path'}` will return all the entries in\n * the cwd, not the entries in `/some/path`.\n *\n * To start absolute and non-absolute patterns in the same\n * path, you can use `{root:''}`. However, be aware that on\n * Windows systems, a pattern like `x:/*` or `//host/share/*` will\n * _always_ start in the `x:/` or `//host/share` directory,\n * regardless of the `root` setting.\n */\n root?: string\n\n /**\n * A [PathScurry](http://npm.im/path-scurry) object used\n * to traverse the file system. If the `nocase` option is set\n * explicitly, then any provided `scurry` object must match this\n * setting.\n */\n scurry?: PathScurry\n\n /**\n * Call `lstat()` on all entries, whether required or not to determine\n * if it's a valid match. When used with {@link withFileTypes}, this means\n * that matches will include data such as modified time, permissions, and\n * so on. Note that this will incur a performance cost due to the added\n * system calls.\n */\n stat?: boolean\n\n /**\n * An AbortSignal which will cancel the Glob walk when\n * triggered.\n */\n signal?: AbortSignal\n\n /**\n * Use `\\\\` as a path separator _only_, and\n * _never_ as an escape character. If set, all `\\\\` characters are\n * replaced with `/` in the pattern.\n *\n * Note that this makes it **impossible** to match against paths\n * containing literal glob pattern characters, but allows matching\n * with patterns constructed using `path.join()` and\n * `path.resolve()` on Windows platforms, mimicking the (buggy!)\n * behavior of Glob v7 and before on Windows. Please use with\n * caution, and be mindful of [the caveat below about Windows\n * paths](#windows). (For legacy reasons, this is also set if\n * `allowWindowsEscape` is set to the exact value `false`.)\n */\n windowsPathsNoEscape?: boolean\n\n /**\n * Return [PathScurry](http://npm.im/path-scurry)\n * `Path` objects instead of strings. These are similar to a\n * NodeJS `Dirent` object, but with additional methods and\n * properties.\n *\n * Conflicts with {@link absolute}\n */\n withFileTypes?: boolean\n\n /**\n * An fs implementation to override some or all of the defaults. See\n * http://npm.im/path-scurry for details about what can be overridden.\n */\n fs?: FSOption\n\n /**\n * Just passed along to Minimatch. Note that this makes all pattern\n * matching operations slower and *extremely* noisy.\n */\n debug?: boolean\n\n /**\n * Return `/` delimited paths, even on Windows.\n *\n * On posix systems, this has no effect. But, on Windows, it means that\n * paths will be `/` delimited, and absolute paths will be their full\n * resolved UNC forms, eg instead of `'C:\\\\foo\\\\bar'`, it would return\n * `'//?/C:/foo/bar'`\n */\n posix?: boolean\n\n /**\n * Do not match any children of any matches. For example, the pattern\n * `**\\/foo` would match `a/foo`, but not `a/foo/b/foo` in this mode.\n *\n * This is especially useful for cases like \"find all `node_modules`\n * folders, but not the ones in `node_modules`\".\n *\n * In order to support this, the `Ignore` implementation must support an\n * `add(pattern: string)` method. If using the default `Ignore` class, then\n * this is fine, but if this is set to `false`, and a custom `Ignore` is\n * provided that does not have an `add()` method, then it will throw an\n * error.\n *\n * **Caveat** It *only* ignores matches that would be a descendant of a\n * previous match, and only if that descendant is matched *after* the\n * ancestor is encountered. Since the file system walk happens in\n * indeterminate order, it's possible that a match will already be added\n * before its ancestor, if multiple or braced patterns are used.\n *\n * For example:\n *\n * ```ts\n * const results = await glob([\n * // likely to match first, since it's just a stat\n * 'a/b/c/d/e/f',\n *\n * // this pattern is more complicated! It must to various readdir()\n * // calls and test the results against a regular expression, and that\n * // is certainly going to take a little bit longer.\n * //\n * // So, later on, it encounters a match at 'a/b/c/d/e', but it's too\n * // late to ignore a/b/c/d/e/f, because it's already been emitted.\n * 'a/[bdf]/?/[a-z]/*',\n * ], { includeChildMatches: false })\n * ```\n *\n * It's best to only set this to `false` if you can be reasonably sure that\n * no components of the pattern will potentially match one another's file\n * system descendants, or if the occasional included child entry will not\n * cause problems.\n *\n * @default true\n */\n includeChildMatches?: boolean\n}\n\nexport type GlobOptionsWithFileTypesTrue = GlobOptions & {\n withFileTypes: true\n // string options not relevant if returning Path objects.\n absolute?: undefined\n mark?: undefined\n posix?: undefined\n}\n\nexport type GlobOptionsWithFileTypesFalse = GlobOptions & {\n withFileTypes?: false\n}\n\nexport type GlobOptionsWithFileTypesUnset = GlobOptions & {\n withFileTypes?: undefined\n}\n\nexport type Result =\n Opts extends GlobOptionsWithFileTypesTrue ? Path\n : Opts extends GlobOptionsWithFileTypesFalse ? string\n : Opts extends GlobOptionsWithFileTypesUnset ? string\n : string | Path\nexport type Results = Result[]\n\nexport type FileTypes =\n Opts extends GlobOptionsWithFileTypesTrue ? true\n : Opts extends GlobOptionsWithFileTypesFalse ? false\n : Opts extends GlobOptionsWithFileTypesUnset ? false\n : boolean\n\n/**\n * An object that can perform glob pattern traversals.\n */\nexport class Glob implements GlobOptions {\n absolute?: boolean\n cwd: string\n root?: string\n dot: boolean\n dotRelative: boolean\n follow: boolean\n ignore?: string | string[] | IgnoreLike\n magicalBraces: boolean\n mark?: boolean\n matchBase: boolean\n maxDepth: number\n nobrace: boolean\n nocase: boolean\n nodir: boolean\n noext: boolean\n noglobstar: boolean\n pattern: string[]\n platform: NodeJS.Platform\n realpath: boolean\n scurry: PathScurry\n stat: boolean\n signal?: AbortSignal\n windowsPathsNoEscape: boolean\n withFileTypes: FileTypes\n includeChildMatches: boolean\n\n /**\n * The options provided to the constructor.\n */\n opts: Opts\n\n /**\n * An array of parsed immutable {@link Pattern} objects.\n */\n patterns: Pattern[]\n\n /**\n * All options are stored as properties on the `Glob` object.\n *\n * See {@link GlobOptions} for full options descriptions.\n *\n * Note that a previous `Glob` object can be passed as the\n * `GlobOptions` to another `Glob` instantiation to re-use settings\n * and caches with a new pattern.\n *\n * Traversal functions can be called multiple times to run the walk\n * again.\n */\n constructor(pattern: string | string[], opts: Opts) {\n /* c8 ignore start */\n if (!opts) throw new TypeError('glob options required')\n /* c8 ignore stop */\n this.withFileTypes = !!opts.withFileTypes as FileTypes\n this.signal = opts.signal\n this.follow = !!opts.follow\n this.dot = !!opts.dot\n this.dotRelative = !!opts.dotRelative\n this.nodir = !!opts.nodir\n this.mark = !!opts.mark\n if (!opts.cwd) {\n this.cwd = ''\n } else if (opts.cwd instanceof URL || opts.cwd.startsWith('file://')) {\n opts.cwd = fileURLToPath(opts.cwd)\n }\n this.cwd = opts.cwd || ''\n this.root = opts.root\n this.magicalBraces = !!opts.magicalBraces\n this.nobrace = !!opts.nobrace\n this.noext = !!opts.noext\n this.realpath = !!opts.realpath\n this.absolute = opts.absolute\n this.includeChildMatches = opts.includeChildMatches !== false\n\n this.noglobstar = !!opts.noglobstar\n this.matchBase = !!opts.matchBase\n this.maxDepth =\n typeof opts.maxDepth === 'number' ? opts.maxDepth : Infinity\n this.stat = !!opts.stat\n this.ignore = opts.ignore\n\n if (this.withFileTypes && this.absolute !== undefined) {\n throw new Error('cannot set absolute and withFileTypes:true')\n }\n\n if (typeof pattern === 'string') {\n pattern = [pattern]\n }\n\n this.windowsPathsNoEscape =\n !!opts.windowsPathsNoEscape ||\n (opts as { allowWindowsEscape?: boolean }).allowWindowsEscape ===\n false\n\n if (this.windowsPathsNoEscape) {\n pattern = pattern.map(p => p.replace(/\\\\/g, '/'))\n }\n\n if (this.matchBase) {\n if (opts.noglobstar) {\n throw new TypeError('base matching requires globstar')\n }\n pattern = pattern.map(p => (p.includes('/') ? p : `./**/${p}`))\n }\n\n this.pattern = pattern\n\n this.platform = opts.platform || defaultPlatform\n this.opts = { ...opts, platform: this.platform }\n if (opts.scurry) {\n this.scurry = opts.scurry\n if (\n opts.nocase !== undefined &&\n opts.nocase !== opts.scurry.nocase\n ) {\n throw new Error('nocase option contradicts provided scurry option')\n }\n } else {\n const Scurry =\n opts.platform === 'win32' ? PathScurryWin32\n : opts.platform === 'darwin' ? PathScurryDarwin\n : opts.platform ? PathScurryPosix\n : PathScurry\n this.scurry = new Scurry(this.cwd, {\n nocase: opts.nocase,\n fs: opts.fs,\n })\n }\n this.nocase = this.scurry.nocase\n\n // If you do nocase:true on a case-sensitive file system, then\n // we need to use regexps instead of strings for non-magic\n // path portions, because statting `aBc` won't return results\n // for the file `AbC` for example.\n const nocaseMagicOnly =\n this.platform === 'darwin' || this.platform === 'win32'\n\n const mmo: MinimatchOptions = {\n // default nocase based on platform\n ...opts,\n dot: this.dot,\n matchBase: this.matchBase,\n nobrace: this.nobrace,\n nocase: this.nocase,\n nocaseMagicOnly,\n nocomment: true,\n noext: this.noext,\n nonegate: true,\n optimizationLevel: 2,\n platform: this.platform,\n windowsPathsNoEscape: this.windowsPathsNoEscape,\n debug: !!this.opts.debug,\n }\n\n const mms = this.pattern.map(p => new Minimatch(p, mmo))\n const [matchSet, globParts] = mms.reduce(\n (set: [MatchSet, GlobParts], m) => {\n set[0].push(...m.set)\n set[1].push(...m.globParts)\n return set\n },\n [[], []],\n )\n this.patterns = matchSet.map((set, i) => {\n const g = globParts[i]\n /* c8 ignore start */\n if (!g) throw new Error('invalid pattern object')\n /* c8 ignore stop */\n return new Pattern(set, g, 0, this.platform)\n })\n }\n\n /**\n * Returns a Promise that resolves to the results array.\n */\n async walk(): Promise>\n async walk(): Promise<(string | Path)[]> {\n // Walkers always return array of Path objects, so we just have to\n // coerce them into the right shape. It will have already called\n // realpath() if the option was set to do so, so we know that's cached.\n // start out knowing the cwd, at least\n return [\n ...(await new GlobWalker(this.patterns, this.scurry.cwd, {\n ...this.opts,\n maxDepth:\n this.maxDepth !== Infinity ?\n this.maxDepth + this.scurry.cwd.depth()\n : Infinity,\n platform: this.platform,\n nocase: this.nocase,\n includeChildMatches: this.includeChildMatches,\n }).walk()),\n ]\n }\n\n /**\n * synchronous {@link Glob.walk}\n */\n walkSync(): Results\n walkSync(): (string | Path)[] {\n return [\n ...new GlobWalker(this.patterns, this.scurry.cwd, {\n ...this.opts,\n maxDepth:\n this.maxDepth !== Infinity ?\n this.maxDepth + this.scurry.cwd.depth()\n : Infinity,\n platform: this.platform,\n nocase: this.nocase,\n includeChildMatches: this.includeChildMatches,\n }).walkSync(),\n ]\n }\n\n /**\n * Stream results asynchronously.\n */\n stream(): Minipass, Result>\n stream(): Minipass {\n return new GlobStream(this.patterns, this.scurry.cwd, {\n ...this.opts,\n maxDepth:\n this.maxDepth !== Infinity ?\n this.maxDepth + this.scurry.cwd.depth()\n : Infinity,\n platform: this.platform,\n nocase: this.nocase,\n includeChildMatches: this.includeChildMatches,\n }).stream()\n }\n\n /**\n * Stream results synchronously.\n */\n streamSync(): Minipass, Result>\n streamSync(): Minipass {\n return new GlobStream(this.patterns, this.scurry.cwd, {\n ...this.opts,\n maxDepth:\n this.maxDepth !== Infinity ?\n this.maxDepth + this.scurry.cwd.depth()\n : Infinity,\n platform: this.platform,\n nocase: this.nocase,\n includeChildMatches: this.includeChildMatches,\n }).streamSync()\n }\n\n /**\n * Default sync iteration function. Returns a Generator that\n * iterates over the results.\n */\n iterateSync(): Generator, void, void> {\n return this.streamSync()[Symbol.iterator]()\n }\n [Symbol.iterator]() {\n return this.iterateSync()\n }\n\n /**\n * Default async iteration function. Returns an AsyncGenerator that\n * iterates over the results.\n */\n iterate(): AsyncGenerator, void, void> {\n return this.stream()[Symbol.asyncIterator]()\n }\n [Symbol.asyncIterator]() {\n return this.iterate()\n }\n}\n"]} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.d.ts b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.d.ts deleted file mode 100644 index 8aec3bd9725175..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { GlobOptions } from './glob.js'; -/** - * Return true if the patterns provided contain any magic glob characters, - * given the options provided. - * - * Brace expansion is not considered "magic" unless the `magicalBraces` option - * is set, as brace expansion just turns one string into an array of strings. - * So a pattern like `'x{a,b}y'` would return `false`, because `'xay'` and - * `'xby'` both do not contain any magic glob characters, and it's treated the - * same as if you had called it on `['xay', 'xby']`. When `magicalBraces:true` - * is in the options, brace expansion _is_ treated as a pattern having magic. - */ -export declare const hasMagic: (pattern: string | string[], options?: GlobOptions) => boolean; -//# sourceMappingURL=has-magic.d.ts.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.d.ts.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.d.ts.map deleted file mode 100644 index b24dd4ec47e0bb..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"has-magic.d.ts","sourceRoot":"","sources":["../../src/has-magic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAEvC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,YACV,MAAM,GAAG,MAAM,EAAE,YACjB,WAAW,KACnB,OAQF,CAAA"} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.js b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.js deleted file mode 100644 index ba2321ab868d02..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.js +++ /dev/null @@ -1,23 +0,0 @@ -import { Minimatch } from 'minimatch'; -/** - * Return true if the patterns provided contain any magic glob characters, - * given the options provided. - * - * Brace expansion is not considered "magic" unless the `magicalBraces` option - * is set, as brace expansion just turns one string into an array of strings. - * So a pattern like `'x{a,b}y'` would return `false`, because `'xay'` and - * `'xby'` both do not contain any magic glob characters, and it's treated the - * same as if you had called it on `['xay', 'xby']`. When `magicalBraces:true` - * is in the options, brace expansion _is_ treated as a pattern having magic. - */ -export const hasMagic = (pattern, options = {}) => { - if (!Array.isArray(pattern)) { - pattern = [pattern]; - } - for (const p of pattern) { - if (new Minimatch(p, options).hasMagic()) - return true; - } - return false; -}; -//# sourceMappingURL=has-magic.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.js.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.js.map deleted file mode 100644 index a20f5aa2e0fdb5..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/has-magic.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"has-magic.js","sourceRoot":"","sources":["../../src/has-magic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAGrC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,OAA0B,EAC1B,UAAuB,EAAE,EAChB,EAAE;IACX,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,CAAA;IACrB,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,IAAI,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE;YAAE,OAAO,IAAI,CAAA;IACvD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA","sourcesContent":["import { Minimatch } from 'minimatch'\nimport { GlobOptions } from './glob.js'\n\n/**\n * Return true if the patterns provided contain any magic glob characters,\n * given the options provided.\n *\n * Brace expansion is not considered \"magic\" unless the `magicalBraces` option\n * is set, as brace expansion just turns one string into an array of strings.\n * So a pattern like `'x{a,b}y'` would return `false`, because `'xay'` and\n * `'xby'` both do not contain any magic glob characters, and it's treated the\n * same as if you had called it on `['xay', 'xby']`. When `magicalBraces:true`\n * is in the options, brace expansion _is_ treated as a pattern having magic.\n */\nexport const hasMagic = (\n pattern: string | string[],\n options: GlobOptions = {},\n): boolean => {\n if (!Array.isArray(pattern)) {\n pattern = [pattern]\n }\n for (const p of pattern) {\n if (new Minimatch(p, options).hasMagic()) return true\n }\n return false\n}\n"]} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.d.ts b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.d.ts deleted file mode 100644 index 1893b16df877c9..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Minimatch, MinimatchOptions } from 'minimatch'; -import { Path } from 'path-scurry'; -import { GlobWalkerOpts } from './walker.js'; -export interface IgnoreLike { - ignored?: (p: Path) => boolean; - childrenIgnored?: (p: Path) => boolean; - add?: (ignore: string) => void; -} -/** - * Class used to process ignored patterns - */ -export declare class Ignore implements IgnoreLike { - relative: Minimatch[]; - relativeChildren: Minimatch[]; - absolute: Minimatch[]; - absoluteChildren: Minimatch[]; - platform: NodeJS.Platform; - mmopts: MinimatchOptions; - constructor(ignored: string[], { nobrace, nocase, noext, noglobstar, platform, }: GlobWalkerOpts); - add(ign: string): void; - ignored(p: Path): boolean; - childrenIgnored(p: Path): boolean; -} -//# sourceMappingURL=ignore.d.ts.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.d.ts.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.d.ts.map deleted file mode 100644 index 57d6ab6153d770..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ignore.d.ts","sourceRoot":"","sources":["../../src/ignore.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,OAAO,CAAA;IAC9B,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,OAAO,CAAA;IACtC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B;AAWD;;GAEG;AACH,qBAAa,MAAO,YAAW,UAAU;IACvC,QAAQ,EAAE,SAAS,EAAE,CAAA;IACrB,gBAAgB,EAAE,SAAS,EAAE,CAAA;IAC7B,QAAQ,EAAE,SAAS,EAAE,CAAA;IACrB,gBAAgB,EAAE,SAAS,EAAE,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAA;IACzB,MAAM,EAAE,gBAAgB,CAAA;gBAGtB,OAAO,EAAE,MAAM,EAAE,EACjB,EACE,OAAO,EACP,MAAM,EACN,KAAK,EACL,UAAU,EACV,QAA0B,GAC3B,EAAE,cAAc;IAqBnB,GAAG,CAAC,GAAG,EAAE,MAAM;IAyCf,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO;IAczB,eAAe,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO;CAWlC"} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.js b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.js deleted file mode 100644 index 539c4a4fdebc4b..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.js +++ /dev/null @@ -1,115 +0,0 @@ -// give it a pattern, and it'll be able to tell you if -// a given path should be ignored. -// Ignoring a path ignores its children if the pattern ends in /** -// Ignores are always parsed in dot:true mode -import { Minimatch } from 'minimatch'; -import { Pattern } from './pattern.js'; -const defaultPlatform = (typeof process === 'object' && - process && - typeof process.platform === 'string') ? - process.platform - : 'linux'; -/** - * Class used to process ignored patterns - */ -export class Ignore { - relative; - relativeChildren; - absolute; - absoluteChildren; - platform; - mmopts; - constructor(ignored, { nobrace, nocase, noext, noglobstar, platform = defaultPlatform, }) { - this.relative = []; - this.absolute = []; - this.relativeChildren = []; - this.absoluteChildren = []; - this.platform = platform; - this.mmopts = { - dot: true, - nobrace, - nocase, - noext, - noglobstar, - optimizationLevel: 2, - platform, - nocomment: true, - nonegate: true, - }; - for (const ign of ignored) - this.add(ign); - } - add(ign) { - // this is a little weird, but it gives us a clean set of optimized - // minimatch matchers, without getting tripped up if one of them - // ends in /** inside a brace section, and it's only inefficient at - // the start of the walk, not along it. - // It'd be nice if the Pattern class just had a .test() method, but - // handling globstars is a bit of a pita, and that code already lives - // in minimatch anyway. - // Another way would be if maybe Minimatch could take its set/globParts - // as an option, and then we could at least just use Pattern to test - // for absolute-ness. - // Yet another way, Minimatch could take an array of glob strings, and - // a cwd option, and do the right thing. - const mm = new Minimatch(ign, this.mmopts); - for (let i = 0; i < mm.set.length; i++) { - const parsed = mm.set[i]; - const globParts = mm.globParts[i]; - /* c8 ignore start */ - if (!parsed || !globParts) { - throw new Error('invalid pattern object'); - } - // strip off leading ./ portions - // https://github.com/isaacs/node-glob/issues/570 - while (parsed[0] === '.' && globParts[0] === '.') { - parsed.shift(); - globParts.shift(); - } - /* c8 ignore stop */ - const p = new Pattern(parsed, globParts, 0, this.platform); - const m = new Minimatch(p.globString(), this.mmopts); - const children = globParts[globParts.length - 1] === '**'; - const absolute = p.isAbsolute(); - if (absolute) - this.absolute.push(m); - else - this.relative.push(m); - if (children) { - if (absolute) - this.absoluteChildren.push(m); - else - this.relativeChildren.push(m); - } - } - } - ignored(p) { - const fullpath = p.fullpath(); - const fullpaths = `${fullpath}/`; - const relative = p.relative() || '.'; - const relatives = `${relative}/`; - for (const m of this.relative) { - if (m.match(relative) || m.match(relatives)) - return true; - } - for (const m of this.absolute) { - if (m.match(fullpath) || m.match(fullpaths)) - return true; - } - return false; - } - childrenIgnored(p) { - const fullpath = p.fullpath() + '/'; - const relative = (p.relative() || '.') + '/'; - for (const m of this.relativeChildren) { - if (m.match(relative)) - return true; - } - for (const m of this.absoluteChildren) { - if (m.match(fullpath)) - return true; - } - return false; - } -} -//# sourceMappingURL=ignore.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.js.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.js.map deleted file mode 100644 index 2cddba2ecfe9f6..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/ignore.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ignore.js","sourceRoot":"","sources":["../../src/ignore.ts"],"names":[],"mappings":"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","sourcesContent":["// give it a pattern, and it'll be able to tell you if\n// a given path should be ignored.\n// Ignoring a path ignores its children if the pattern ends in /**\n// Ignores are always parsed in dot:true mode\n\nimport { Minimatch, MinimatchOptions } from 'minimatch'\nimport { Path } from 'path-scurry'\nimport { Pattern } from './pattern.js'\nimport { GlobWalkerOpts } from './walker.js'\n\nexport interface IgnoreLike {\n ignored?: (p: Path) => boolean\n childrenIgnored?: (p: Path) => boolean\n add?: (ignore: string) => void\n}\n\nconst defaultPlatform: NodeJS.Platform =\n (\n typeof process === 'object' &&\n process &&\n typeof process.platform === 'string'\n ) ?\n process.platform\n : 'linux'\n\n/**\n * Class used to process ignored patterns\n */\nexport class Ignore implements IgnoreLike {\n relative: Minimatch[]\n relativeChildren: Minimatch[]\n absolute: Minimatch[]\n absoluteChildren: Minimatch[]\n platform: NodeJS.Platform\n mmopts: MinimatchOptions\n\n constructor(\n ignored: string[],\n {\n nobrace,\n nocase,\n noext,\n noglobstar,\n platform = defaultPlatform,\n }: GlobWalkerOpts,\n ) {\n this.relative = []\n this.absolute = []\n this.relativeChildren = []\n this.absoluteChildren = []\n this.platform = platform\n this.mmopts = {\n dot: true,\n nobrace,\n nocase,\n noext,\n noglobstar,\n optimizationLevel: 2,\n platform,\n nocomment: true,\n nonegate: true,\n }\n for (const ign of ignored) this.add(ign)\n }\n\n add(ign: string) {\n // this is a little weird, but it gives us a clean set of optimized\n // minimatch matchers, without getting tripped up if one of them\n // ends in /** inside a brace section, and it's only inefficient at\n // the start of the walk, not along it.\n // It'd be nice if the Pattern class just had a .test() method, but\n // handling globstars is a bit of a pita, and that code already lives\n // in minimatch anyway.\n // Another way would be if maybe Minimatch could take its set/globParts\n // as an option, and then we could at least just use Pattern to test\n // for absolute-ness.\n // Yet another way, Minimatch could take an array of glob strings, and\n // a cwd option, and do the right thing.\n const mm = new Minimatch(ign, this.mmopts)\n for (let i = 0; i < mm.set.length; i++) {\n const parsed = mm.set[i]\n const globParts = mm.globParts[i]\n /* c8 ignore start */\n if (!parsed || !globParts) {\n throw new Error('invalid pattern object')\n }\n // strip off leading ./ portions\n // https://github.com/isaacs/node-glob/issues/570\n while (parsed[0] === '.' && globParts[0] === '.') {\n parsed.shift()\n globParts.shift()\n }\n /* c8 ignore stop */\n const p = new Pattern(parsed, globParts, 0, this.platform)\n const m = new Minimatch(p.globString(), this.mmopts)\n const children = globParts[globParts.length - 1] === '**'\n const absolute = p.isAbsolute()\n if (absolute) this.absolute.push(m)\n else this.relative.push(m)\n if (children) {\n if (absolute) this.absoluteChildren.push(m)\n else this.relativeChildren.push(m)\n }\n }\n }\n\n ignored(p: Path): boolean {\n const fullpath = p.fullpath()\n const fullpaths = `${fullpath}/`\n const relative = p.relative() || '.'\n const relatives = `${relative}/`\n for (const m of this.relative) {\n if (m.match(relative) || m.match(relatives)) return true\n }\n for (const m of this.absolute) {\n if (m.match(fullpath) || m.match(fullpaths)) return true\n }\n return false\n }\n\n childrenIgnored(p: Path): boolean {\n const fullpath = p.fullpath() + '/'\n const relative = (p.relative() || '.') + '/'\n for (const m of this.relativeChildren) {\n if (m.match(relative)) return true\n }\n for (const m of this.absoluteChildren) {\n if (m.match(fullpath)) return true\n }\n return false\n }\n}\n"]} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.d.ts b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.d.ts deleted file mode 100644 index 9c326ddc895b61..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.d.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { Minipass } from 'minipass'; -import { Path } from 'path-scurry'; -import type { GlobOptions, GlobOptionsWithFileTypesFalse, GlobOptionsWithFileTypesTrue, GlobOptionsWithFileTypesUnset } from './glob.js'; -import { Glob } from './glob.js'; -export { escape, unescape } from 'minimatch'; -export type { FSOption, Path, WalkOptions, WalkOptionsWithFileTypesTrue, WalkOptionsWithFileTypesUnset, } from 'path-scurry'; -export { Glob } from './glob.js'; -export type { GlobOptions, GlobOptionsWithFileTypesFalse, GlobOptionsWithFileTypesTrue, GlobOptionsWithFileTypesUnset, } from './glob.js'; -export { hasMagic } from './has-magic.js'; -export { Ignore } from './ignore.js'; -export type { IgnoreLike } from './ignore.js'; -export type { MatchStream } from './walker.js'; -/** - * Syncronous form of {@link globStream}. Will read all the matches as fast as - * you consume them, even all in a single tick if you consume them immediately, - * but will still respond to backpressure if they're not consumed immediately. - */ -export declare function globStreamSync(pattern: string | string[], options: GlobOptionsWithFileTypesTrue): Minipass; -export declare function globStreamSync(pattern: string | string[], options: GlobOptionsWithFileTypesFalse): Minipass; -export declare function globStreamSync(pattern: string | string[], options: GlobOptionsWithFileTypesUnset): Minipass; -export declare function globStreamSync(pattern: string | string[], options: GlobOptions): Minipass | Minipass; -/** - * Return a stream that emits all the strings or `Path` objects and - * then emits `end` when completed. - */ -export declare function globStream(pattern: string | string[], options: GlobOptionsWithFileTypesFalse): Minipass; -export declare function globStream(pattern: string | string[], options: GlobOptionsWithFileTypesTrue): Minipass; -export declare function globStream(pattern: string | string[], options?: GlobOptionsWithFileTypesUnset | undefined): Minipass; -export declare function globStream(pattern: string | string[], options: GlobOptions): Minipass | Minipass; -/** - * Synchronous form of {@link glob} - */ -export declare function globSync(pattern: string | string[], options: GlobOptionsWithFileTypesFalse): string[]; -export declare function globSync(pattern: string | string[], options: GlobOptionsWithFileTypesTrue): Path[]; -export declare function globSync(pattern: string | string[], options?: GlobOptionsWithFileTypesUnset | undefined): string[]; -export declare function globSync(pattern: string | string[], options: GlobOptions): Path[] | string[]; -/** - * Perform an asynchronous glob search for the pattern(s) specified. Returns - * [Path](https://isaacs.github.io/path-scurry/classes/PathBase) objects if the - * {@link withFileTypes} option is set to `true`. See {@link GlobOptions} for - * full option descriptions. - */ -declare function glob_(pattern: string | string[], options?: GlobOptionsWithFileTypesUnset | undefined): Promise; -declare function glob_(pattern: string | string[], options: GlobOptionsWithFileTypesTrue): Promise; -declare function glob_(pattern: string | string[], options: GlobOptionsWithFileTypesFalse): Promise; -declare function glob_(pattern: string | string[], options: GlobOptions): Promise; -/** - * Return a sync iterator for walking glob pattern matches. - */ -export declare function globIterateSync(pattern: string | string[], options?: GlobOptionsWithFileTypesUnset | undefined): Generator; -export declare function globIterateSync(pattern: string | string[], options: GlobOptionsWithFileTypesTrue): Generator; -export declare function globIterateSync(pattern: string | string[], options: GlobOptionsWithFileTypesFalse): Generator; -export declare function globIterateSync(pattern: string | string[], options: GlobOptions): Generator | Generator; -/** - * Return an async iterator for walking glob pattern matches. - */ -export declare function globIterate(pattern: string | string[], options?: GlobOptionsWithFileTypesUnset | undefined): AsyncGenerator; -export declare function globIterate(pattern: string | string[], options: GlobOptionsWithFileTypesTrue): AsyncGenerator; -export declare function globIterate(pattern: string | string[], options: GlobOptionsWithFileTypesFalse): AsyncGenerator; -export declare function globIterate(pattern: string | string[], options: GlobOptions): AsyncGenerator | AsyncGenerator; -export declare const streamSync: typeof globStreamSync; -export declare const stream: typeof globStream & { - sync: typeof globStreamSync; -}; -export declare const iterateSync: typeof globIterateSync; -export declare const iterate: typeof globIterate & { - sync: typeof globIterateSync; -}; -export declare const sync: typeof globSync & { - stream: typeof globStreamSync; - iterate: typeof globIterateSync; -}; -export declare const glob: typeof glob_ & { - glob: typeof glob_; - globSync: typeof globSync; - sync: typeof globSync & { - stream: typeof globStreamSync; - iterate: typeof globIterateSync; - }; - globStream: typeof globStream; - stream: typeof globStream & { - sync: typeof globStreamSync; - }; - globStreamSync: typeof globStreamSync; - streamSync: typeof globStreamSync; - globIterate: typeof globIterate; - iterate: typeof globIterate & { - sync: typeof globIterateSync; - }; - globIterateSync: typeof globIterateSync; - iterateSync: typeof globIterateSync; - Glob: typeof Glob; - hasMagic: (pattern: string | string[], options?: GlobOptions) => boolean; - escape: (s: string, { windowsPathsNoEscape, }?: Pick) => string; - unescape: (s: string, { windowsPathsNoEscape, }?: Pick) => string; -}; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.d.ts.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.d.ts.map deleted file mode 100644 index 5fb32252b63747..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,EACV,WAAW,EACX,6BAA6B,EAC7B,4BAA4B,EAC5B,6BAA6B,EAC9B,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAGhC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC5C,YAAY,EACV,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,YAAY,EACV,WAAW,EACX,6BAA6B,EAC7B,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,4BAA4B,GACpC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AACvB,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,6BAA6B,GACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAC3B,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,6BAA6B,GACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAC3B,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,WAAW,GACnB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAQlD;;;GAGG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,6BAA6B,GACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAC3B,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,4BAA4B,GACpC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AACvB,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,6BAA6B,GAAG,SAAS,GAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAC3B,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,WAAW,GACnB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAQlD;;GAEG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,6BAA6B,GACrC,MAAM,EAAE,CAAA;AACX,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,4BAA4B,GACpC,IAAI,EAAE,CAAA;AACT,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,6BAA6B,GAAG,SAAS,GAClD,MAAM,EAAE,CAAA;AACX,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,WAAW,GACnB,IAAI,EAAE,GAAG,MAAM,EAAE,CAAA;AAQpB;;;;;GAKG;AACH,iBAAe,KAAK,CAClB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,6BAA6B,GAAG,SAAS,GAClD,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AACpB,iBAAe,KAAK,CAClB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;AAClB,iBAAe,KAAK,CAClB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AACpB,iBAAe,KAAK,CAClB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;AAQ7B;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,6BAA6B,GAAG,SAAS,GAClD,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAChC,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,4BAA4B,GACpC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAC9B,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,6BAA6B,GACrC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAChC,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,WAAW,GACnB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAQ9D;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,6BAA6B,GAAG,SAAS,GAClD,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AACrC,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,4BAA4B,GACpC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AACnC,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,6BAA6B,GACrC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AACrC,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,WAAW,GACnB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AASxE,eAAO,MAAM,UAAU,uBAAiB,CAAA;AACxC,eAAO,MAAM,MAAM;;CAAsD,CAAA;AACzE,eAAO,MAAM,WAAW,wBAAkB,CAAA;AAC1C,eAAO,MAAM,OAAO;;CAElB,CAAA;AACF,eAAO,MAAM,IAAI;;;CAGf,CAAA;AAEF,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;CAgBf,CAAA"} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.js b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.js deleted file mode 100644 index e15c1f9c4cb032..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.js +++ /dev/null @@ -1,55 +0,0 @@ -import { escape, unescape } from 'minimatch'; -import { Glob } from './glob.js'; -import { hasMagic } from './has-magic.js'; -export { escape, unescape } from 'minimatch'; -export { Glob } from './glob.js'; -export { hasMagic } from './has-magic.js'; -export { Ignore } from './ignore.js'; -export function globStreamSync(pattern, options = {}) { - return new Glob(pattern, options).streamSync(); -} -export function globStream(pattern, options = {}) { - return new Glob(pattern, options).stream(); -} -export function globSync(pattern, options = {}) { - return new Glob(pattern, options).walkSync(); -} -async function glob_(pattern, options = {}) { - return new Glob(pattern, options).walk(); -} -export function globIterateSync(pattern, options = {}) { - return new Glob(pattern, options).iterateSync(); -} -export function globIterate(pattern, options = {}) { - return new Glob(pattern, options).iterate(); -} -// aliases: glob.sync.stream() glob.stream.sync() glob.sync() etc -export const streamSync = globStreamSync; -export const stream = Object.assign(globStream, { sync: globStreamSync }); -export const iterateSync = globIterateSync; -export const iterate = Object.assign(globIterate, { - sync: globIterateSync, -}); -export const sync = Object.assign(globSync, { - stream: globStreamSync, - iterate: globIterateSync, -}); -export const glob = Object.assign(glob_, { - glob: glob_, - globSync, - sync, - globStream, - stream, - globStreamSync, - streamSync, - globIterate, - iterate, - globIterateSync, - iterateSync, - Glob, - hasMagic, - escape, - unescape, -}); -glob.glob = glob; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.js.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.js.map deleted file mode 100644 index a4f93dd0c1d87d..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAS5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAQ5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAOhC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAyBpC,MAAM,UAAU,cAAc,CAC5B,OAA0B,EAC1B,UAAuB,EAAE;IAEzB,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,UAAU,EAAE,CAAA;AAChD,CAAC;AAsBD,MAAM,UAAU,UAAU,CACxB,OAA0B,EAC1B,UAAuB,EAAE;IAEzB,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;AAC5C,CAAC;AAqBD,MAAM,UAAU,QAAQ,CACtB,OAA0B,EAC1B,UAAuB,EAAE;IAEzB,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAA;AAC9C,CAAC;AAwBD,KAAK,UAAU,KAAK,CAClB,OAA0B,EAC1B,UAAuB,EAAE;IAEzB,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;AAC1C,CAAC;AAqBD,MAAM,UAAU,eAAe,CAC7B,OAA0B,EAC1B,UAAuB,EAAE;IAEzB,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;AACjD,CAAC;AAqBD,MAAM,UAAU,WAAW,CACzB,OAA0B,EAC1B,UAAuB,EAAE;IAEzB,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAA;AAC7C,CAAC;AAED,iEAAiE;AACjE,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAA;AACxC,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAA;AACzE,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAA;AAC1C,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE;IAChD,IAAI,EAAE,eAAe;CACtB,CAAC,CAAA;AACF,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC1C,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,eAAe;CACzB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;IACvC,IAAI,EAAE,KAAK;IACX,QAAQ;IACR,IAAI;IACJ,UAAU;IACV,MAAM;IACN,cAAc;IACd,UAAU;IACV,WAAW;IACX,OAAO;IACP,eAAe;IACf,WAAW;IACX,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,QAAQ;CACT,CAAC,CAAA;AACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA","sourcesContent":["import { escape, unescape } from 'minimatch'\nimport { Minipass } from 'minipass'\nimport { Path } from 'path-scurry'\nimport type {\n GlobOptions,\n GlobOptionsWithFileTypesFalse,\n GlobOptionsWithFileTypesTrue,\n GlobOptionsWithFileTypesUnset,\n} from './glob.js'\nimport { Glob } from './glob.js'\nimport { hasMagic } from './has-magic.js'\n\nexport { escape, unescape } from 'minimatch'\nexport type {\n FSOption,\n Path,\n WalkOptions,\n WalkOptionsWithFileTypesTrue,\n WalkOptionsWithFileTypesUnset,\n} from 'path-scurry'\nexport { Glob } from './glob.js'\nexport type {\n GlobOptions,\n GlobOptionsWithFileTypesFalse,\n GlobOptionsWithFileTypesTrue,\n GlobOptionsWithFileTypesUnset,\n} from './glob.js'\nexport { hasMagic } from './has-magic.js'\nexport { Ignore } from './ignore.js'\nexport type { IgnoreLike } from './ignore.js'\nexport type { MatchStream } from './walker.js'\n\n/**\n * Syncronous form of {@link globStream}. Will read all the matches as fast as\n * you consume them, even all in a single tick if you consume them immediately,\n * but will still respond to backpressure if they're not consumed immediately.\n */\nexport function globStreamSync(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesTrue,\n): Minipass\nexport function globStreamSync(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesFalse,\n): Minipass\nexport function globStreamSync(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesUnset,\n): Minipass\nexport function globStreamSync(\n pattern: string | string[],\n options: GlobOptions,\n): Minipass | Minipass\nexport function globStreamSync(\n pattern: string | string[],\n options: GlobOptions = {},\n) {\n return new Glob(pattern, options).streamSync()\n}\n\n/**\n * Return a stream that emits all the strings or `Path` objects and\n * then emits `end` when completed.\n */\nexport function globStream(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesFalse,\n): Minipass\nexport function globStream(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesTrue,\n): Minipass\nexport function globStream(\n pattern: string | string[],\n options?: GlobOptionsWithFileTypesUnset | undefined,\n): Minipass\nexport function globStream(\n pattern: string | string[],\n options: GlobOptions,\n): Minipass | Minipass\nexport function globStream(\n pattern: string | string[],\n options: GlobOptions = {},\n) {\n return new Glob(pattern, options).stream()\n}\n\n/**\n * Synchronous form of {@link glob}\n */\nexport function globSync(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesFalse,\n): string[]\nexport function globSync(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesTrue,\n): Path[]\nexport function globSync(\n pattern: string | string[],\n options?: GlobOptionsWithFileTypesUnset | undefined,\n): string[]\nexport function globSync(\n pattern: string | string[],\n options: GlobOptions,\n): Path[] | string[]\nexport function globSync(\n pattern: string | string[],\n options: GlobOptions = {},\n) {\n return new Glob(pattern, options).walkSync()\n}\n\n/**\n * Perform an asynchronous glob search for the pattern(s) specified. Returns\n * [Path](https://isaacs.github.io/path-scurry/classes/PathBase) objects if the\n * {@link withFileTypes} option is set to `true`. See {@link GlobOptions} for\n * full option descriptions.\n */\nasync function glob_(\n pattern: string | string[],\n options?: GlobOptionsWithFileTypesUnset | undefined,\n): Promise\nasync function glob_(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesTrue,\n): Promise\nasync function glob_(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesFalse,\n): Promise\nasync function glob_(\n pattern: string | string[],\n options: GlobOptions,\n): Promise\nasync function glob_(\n pattern: string | string[],\n options: GlobOptions = {},\n) {\n return new Glob(pattern, options).walk()\n}\n\n/**\n * Return a sync iterator for walking glob pattern matches.\n */\nexport function globIterateSync(\n pattern: string | string[],\n options?: GlobOptionsWithFileTypesUnset | undefined,\n): Generator\nexport function globIterateSync(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesTrue,\n): Generator\nexport function globIterateSync(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesFalse,\n): Generator\nexport function globIterateSync(\n pattern: string | string[],\n options: GlobOptions,\n): Generator | Generator\nexport function globIterateSync(\n pattern: string | string[],\n options: GlobOptions = {},\n) {\n return new Glob(pattern, options).iterateSync()\n}\n\n/**\n * Return an async iterator for walking glob pattern matches.\n */\nexport function globIterate(\n pattern: string | string[],\n options?: GlobOptionsWithFileTypesUnset | undefined,\n): AsyncGenerator\nexport function globIterate(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesTrue,\n): AsyncGenerator\nexport function globIterate(\n pattern: string | string[],\n options: GlobOptionsWithFileTypesFalse,\n): AsyncGenerator\nexport function globIterate(\n pattern: string | string[],\n options: GlobOptions,\n): AsyncGenerator | AsyncGenerator\nexport function globIterate(\n pattern: string | string[],\n options: GlobOptions = {},\n) {\n return new Glob(pattern, options).iterate()\n}\n\n// aliases: glob.sync.stream() glob.stream.sync() glob.sync() etc\nexport const streamSync = globStreamSync\nexport const stream = Object.assign(globStream, { sync: globStreamSync })\nexport const iterateSync = globIterateSync\nexport const iterate = Object.assign(globIterate, {\n sync: globIterateSync,\n})\nexport const sync = Object.assign(globSync, {\n stream: globStreamSync,\n iterate: globIterateSync,\n})\n\nexport const glob = Object.assign(glob_, {\n glob: glob_,\n globSync,\n sync,\n globStream,\n stream,\n globStreamSync,\n streamSync,\n globIterate,\n iterate,\n globIterateSync,\n iterateSync,\n Glob,\n hasMagic,\n escape,\n unescape,\n})\nglob.glob = glob\n"]} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/package.json b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/package.json deleted file mode 100644 index 3dbc1ca591c055..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.d.ts b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.d.ts deleted file mode 100644 index 9636df3b54df29..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.d.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { GLOBSTAR } from 'minimatch'; -export type MMPattern = string | RegExp | typeof GLOBSTAR; -export type PatternList = [p: MMPattern, ...rest: MMPattern[]]; -export type UNCPatternList = [ - p0: '', - p1: '', - p2: string, - p3: string, - ...rest: MMPattern[] -]; -export type DrivePatternList = [p0: string, ...rest: MMPattern[]]; -export type AbsolutePatternList = [p0: '', ...rest: MMPattern[]]; -export type GlobList = [p: string, ...rest: string[]]; -/** - * An immutable-ish view on an array of glob parts and their parsed - * results - */ -export declare class Pattern { - #private; - readonly length: number; - constructor(patternList: MMPattern[], globList: string[], index: number, platform: NodeJS.Platform); - /** - * The first entry in the parsed list of patterns - */ - pattern(): MMPattern; - /** - * true of if pattern() returns a string - */ - isString(): boolean; - /** - * true of if pattern() returns GLOBSTAR - */ - isGlobstar(): boolean; - /** - * true if pattern() returns a regexp - */ - isRegExp(): boolean; - /** - * The /-joined set of glob parts that make up this pattern - */ - globString(): string; - /** - * true if there are more pattern parts after this one - */ - hasMore(): boolean; - /** - * The rest of the pattern after this part, or null if this is the end - */ - rest(): Pattern | null; - /** - * true if the pattern represents a //unc/path/ on windows - */ - isUNC(): boolean; - /** - * True if the pattern starts with a drive letter on Windows - */ - isDrive(): boolean; - /** - * True if the pattern is rooted on an absolute path - */ - isAbsolute(): boolean; - /** - * consume the root of the pattern, and return it - */ - root(): string; - /** - * Check to see if the current globstar pattern is allowed to follow - * a symbolic link. - */ - checkFollowGlobstar(): boolean; - /** - * Mark that the current globstar pattern is following a symbolic link - */ - markFollowGlobstar(): boolean; -} -//# sourceMappingURL=pattern.d.ts.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.d.ts.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.d.ts.map deleted file mode 100644 index cdf322346317d8..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../../src/pattern.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,QAAQ,CAAA;AAGzD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AAC9D,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,EAAE;IACN,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,GAAG,IAAI,EAAE,SAAS,EAAE;CACrB,CAAA;AACD,MAAM,MAAM,gBAAgB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AACjE,MAAM,MAAM,mBAAmB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AAChE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;AAMrD;;;GAGG;AACH,qBAAa,OAAO;;IAIlB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;gBAUrB,WAAW,EAAE,SAAS,EAAE,EACxB,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;IA6D3B;;OAEG;IACH,OAAO,IAAI,SAAS;IAIpB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAGnB;;OAEG;IACH,UAAU,IAAI,OAAO;IAGrB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,UAAU,IAAI,MAAM;IAUpB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,IAAI,IAAI,OAAO,GAAG,IAAI;IAetB;;OAEG;IACH,KAAK,IAAI,OAAO;IAoBhB;;OAEG;IACH,OAAO,IAAI,OAAO;IAelB;;OAEG;IACH,UAAU,IAAI,OAAO;IAUrB;;OAEG;IACH,IAAI,IAAI,MAAM;IASd;;;OAGG;IACH,mBAAmB,IAAI,OAAO;IAQ9B;;OAEG;IACH,kBAAkB,IAAI,OAAO;CAM9B"} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.js b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.js deleted file mode 100644 index b41defa10c6a3a..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.js +++ /dev/null @@ -1,215 +0,0 @@ -// this is just a very light wrapper around 2 arrays with an offset index -import { GLOBSTAR } from 'minimatch'; -const isPatternList = (pl) => pl.length >= 1; -const isGlobList = (gl) => gl.length >= 1; -/** - * An immutable-ish view on an array of glob parts and their parsed - * results - */ -export class Pattern { - #patternList; - #globList; - #index; - length; - #platform; - #rest; - #globString; - #isDrive; - #isUNC; - #isAbsolute; - #followGlobstar = true; - constructor(patternList, globList, index, platform) { - if (!isPatternList(patternList)) { - throw new TypeError('empty pattern list'); - } - if (!isGlobList(globList)) { - throw new TypeError('empty glob list'); - } - if (globList.length !== patternList.length) { - throw new TypeError('mismatched pattern list and glob list lengths'); - } - this.length = patternList.length; - if (index < 0 || index >= this.length) { - throw new TypeError('index out of range'); - } - this.#patternList = patternList; - this.#globList = globList; - this.#index = index; - this.#platform = platform; - // normalize root entries of absolute patterns on initial creation. - if (this.#index === 0) { - // c: => ['c:/'] - // C:/ => ['C:/'] - // C:/x => ['C:/', 'x'] - // //host/share => ['//host/share/'] - // //host/share/ => ['//host/share/'] - // //host/share/x => ['//host/share/', 'x'] - // /etc => ['/', 'etc'] - // / => ['/'] - if (this.isUNC()) { - // '' / '' / 'host' / 'share' - const [p0, p1, p2, p3, ...prest] = this.#patternList; - const [g0, g1, g2, g3, ...grest] = this.#globList; - if (prest[0] === '') { - // ends in / - prest.shift(); - grest.shift(); - } - const p = [p0, p1, p2, p3, ''].join('/'); - const g = [g0, g1, g2, g3, ''].join('/'); - this.#patternList = [p, ...prest]; - this.#globList = [g, ...grest]; - this.length = this.#patternList.length; - } - else if (this.isDrive() || this.isAbsolute()) { - const [p1, ...prest] = this.#patternList; - const [g1, ...grest] = this.#globList; - if (prest[0] === '') { - // ends in / - prest.shift(); - grest.shift(); - } - const p = p1 + '/'; - const g = g1 + '/'; - this.#patternList = [p, ...prest]; - this.#globList = [g, ...grest]; - this.length = this.#patternList.length; - } - } - } - /** - * The first entry in the parsed list of patterns - */ - pattern() { - return this.#patternList[this.#index]; - } - /** - * true of if pattern() returns a string - */ - isString() { - return typeof this.#patternList[this.#index] === 'string'; - } - /** - * true of if pattern() returns GLOBSTAR - */ - isGlobstar() { - return this.#patternList[this.#index] === GLOBSTAR; - } - /** - * true if pattern() returns a regexp - */ - isRegExp() { - return this.#patternList[this.#index] instanceof RegExp; - } - /** - * The /-joined set of glob parts that make up this pattern - */ - globString() { - return (this.#globString = - this.#globString || - (this.#index === 0 ? - this.isAbsolute() ? - this.#globList[0] + this.#globList.slice(1).join('/') - : this.#globList.join('/') - : this.#globList.slice(this.#index).join('/'))); - } - /** - * true if there are more pattern parts after this one - */ - hasMore() { - return this.length > this.#index + 1; - } - /** - * The rest of the pattern after this part, or null if this is the end - */ - rest() { - if (this.#rest !== undefined) - return this.#rest; - if (!this.hasMore()) - return (this.#rest = null); - this.#rest = new Pattern(this.#patternList, this.#globList, this.#index + 1, this.#platform); - this.#rest.#isAbsolute = this.#isAbsolute; - this.#rest.#isUNC = this.#isUNC; - this.#rest.#isDrive = this.#isDrive; - return this.#rest; - } - /** - * true if the pattern represents a //unc/path/ on windows - */ - isUNC() { - const pl = this.#patternList; - return this.#isUNC !== undefined ? - this.#isUNC - : (this.#isUNC = - this.#platform === 'win32' && - this.#index === 0 && - pl[0] === '' && - pl[1] === '' && - typeof pl[2] === 'string' && - !!pl[2] && - typeof pl[3] === 'string' && - !!pl[3]); - } - // pattern like C:/... - // split = ['C:', ...] - // XXX: would be nice to handle patterns like `c:*` to test the cwd - // in c: for *, but I don't know of a way to even figure out what that - // cwd is without actually chdir'ing into it? - /** - * True if the pattern starts with a drive letter on Windows - */ - isDrive() { - const pl = this.#patternList; - return this.#isDrive !== undefined ? - this.#isDrive - : (this.#isDrive = - this.#platform === 'win32' && - this.#index === 0 && - this.length > 1 && - typeof pl[0] === 'string' && - /^[a-z]:$/i.test(pl[0])); - } - // pattern = '/' or '/...' or '/x/...' - // split = ['', ''] or ['', ...] or ['', 'x', ...] - // Drive and UNC both considered absolute on windows - /** - * True if the pattern is rooted on an absolute path - */ - isAbsolute() { - const pl = this.#patternList; - return this.#isAbsolute !== undefined ? - this.#isAbsolute - : (this.#isAbsolute = - (pl[0] === '' && pl.length > 1) || - this.isDrive() || - this.isUNC()); - } - /** - * consume the root of the pattern, and return it - */ - root() { - const p = this.#patternList[0]; - return (typeof p === 'string' && this.isAbsolute() && this.#index === 0) ? - p - : ''; - } - /** - * Check to see if the current globstar pattern is allowed to follow - * a symbolic link. - */ - checkFollowGlobstar() { - return !(this.#index === 0 || - !this.isGlobstar() || - !this.#followGlobstar); - } - /** - * Mark that the current globstar pattern is following a symbolic link - */ - markFollowGlobstar() { - if (this.#index === 0 || !this.isGlobstar() || !this.#followGlobstar) - return false; - this.#followGlobstar = false; - return true; - } -} -//# sourceMappingURL=pattern.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.js.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.js.map deleted file mode 100644 index 566a306ad1bf40..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/pattern.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../src/pattern.ts"],"names":[],"mappings":"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","sourcesContent":["// this is just a very light wrapper around 2 arrays with an offset index\n\nimport { GLOBSTAR } from 'minimatch'\nexport type MMPattern = string | RegExp | typeof GLOBSTAR\n\n// an array of length >= 1\nexport type PatternList = [p: MMPattern, ...rest: MMPattern[]]\nexport type UNCPatternList = [\n p0: '',\n p1: '',\n p2: string,\n p3: string,\n ...rest: MMPattern[],\n]\nexport type DrivePatternList = [p0: string, ...rest: MMPattern[]]\nexport type AbsolutePatternList = [p0: '', ...rest: MMPattern[]]\nexport type GlobList = [p: string, ...rest: string[]]\n\nconst isPatternList = (pl: MMPattern[]): pl is PatternList =>\n pl.length >= 1\nconst isGlobList = (gl: string[]): gl is GlobList => gl.length >= 1\n\n/**\n * An immutable-ish view on an array of glob parts and their parsed\n * results\n */\nexport class Pattern {\n readonly #patternList: PatternList\n readonly #globList: GlobList\n readonly #index: number\n readonly length: number\n readonly #platform: NodeJS.Platform\n #rest?: Pattern | null\n #globString?: string\n #isDrive?: boolean\n #isUNC?: boolean\n #isAbsolute?: boolean\n #followGlobstar: boolean = true\n\n constructor(\n patternList: MMPattern[],\n globList: string[],\n index: number,\n platform: NodeJS.Platform,\n ) {\n if (!isPatternList(patternList)) {\n throw new TypeError('empty pattern list')\n }\n if (!isGlobList(globList)) {\n throw new TypeError('empty glob list')\n }\n if (globList.length !== patternList.length) {\n throw new TypeError('mismatched pattern list and glob list lengths')\n }\n this.length = patternList.length\n if (index < 0 || index >= this.length) {\n throw new TypeError('index out of range')\n }\n this.#patternList = patternList\n this.#globList = globList\n this.#index = index\n this.#platform = platform\n\n // normalize root entries of absolute patterns on initial creation.\n if (this.#index === 0) {\n // c: => ['c:/']\n // C:/ => ['C:/']\n // C:/x => ['C:/', 'x']\n // //host/share => ['//host/share/']\n // //host/share/ => ['//host/share/']\n // //host/share/x => ['//host/share/', 'x']\n // /etc => ['/', 'etc']\n // / => ['/']\n if (this.isUNC()) {\n // '' / '' / 'host' / 'share'\n const [p0, p1, p2, p3, ...prest] = this.#patternList\n const [g0, g1, g2, g3, ...grest] = this.#globList\n if (prest[0] === '') {\n // ends in /\n prest.shift()\n grest.shift()\n }\n const p = [p0, p1, p2, p3, ''].join('/')\n const g = [g0, g1, g2, g3, ''].join('/')\n this.#patternList = [p, ...prest]\n this.#globList = [g, ...grest]\n this.length = this.#patternList.length\n } else if (this.isDrive() || this.isAbsolute()) {\n const [p1, ...prest] = this.#patternList\n const [g1, ...grest] = this.#globList\n if (prest[0] === '') {\n // ends in /\n prest.shift()\n grest.shift()\n }\n const p = (p1 as string) + '/'\n const g = g1 + '/'\n this.#patternList = [p, ...prest]\n this.#globList = [g, ...grest]\n this.length = this.#patternList.length\n }\n }\n }\n\n /**\n * The first entry in the parsed list of patterns\n */\n pattern(): MMPattern {\n return this.#patternList[this.#index] as MMPattern\n }\n\n /**\n * true of if pattern() returns a string\n */\n isString(): boolean {\n return typeof this.#patternList[this.#index] === 'string'\n }\n /**\n * true of if pattern() returns GLOBSTAR\n */\n isGlobstar(): boolean {\n return this.#patternList[this.#index] === GLOBSTAR\n }\n /**\n * true if pattern() returns a regexp\n */\n isRegExp(): boolean {\n return this.#patternList[this.#index] instanceof RegExp\n }\n\n /**\n * The /-joined set of glob parts that make up this pattern\n */\n globString(): string {\n return (this.#globString =\n this.#globString ||\n (this.#index === 0 ?\n this.isAbsolute() ?\n this.#globList[0] + this.#globList.slice(1).join('/')\n : this.#globList.join('/')\n : this.#globList.slice(this.#index).join('/')))\n }\n\n /**\n * true if there are more pattern parts after this one\n */\n hasMore(): boolean {\n return this.length > this.#index + 1\n }\n\n /**\n * The rest of the pattern after this part, or null if this is the end\n */\n rest(): Pattern | null {\n if (this.#rest !== undefined) return this.#rest\n if (!this.hasMore()) return (this.#rest = null)\n this.#rest = new Pattern(\n this.#patternList,\n this.#globList,\n this.#index + 1,\n this.#platform,\n )\n this.#rest.#isAbsolute = this.#isAbsolute\n this.#rest.#isUNC = this.#isUNC\n this.#rest.#isDrive = this.#isDrive\n return this.#rest\n }\n\n /**\n * true if the pattern represents a //unc/path/ on windows\n */\n isUNC(): boolean {\n const pl = this.#patternList\n return this.#isUNC !== undefined ?\n this.#isUNC\n : (this.#isUNC =\n this.#platform === 'win32' &&\n this.#index === 0 &&\n pl[0] === '' &&\n pl[1] === '' &&\n typeof pl[2] === 'string' &&\n !!pl[2] &&\n typeof pl[3] === 'string' &&\n !!pl[3])\n }\n\n // pattern like C:/...\n // split = ['C:', ...]\n // XXX: would be nice to handle patterns like `c:*` to test the cwd\n // in c: for *, but I don't know of a way to even figure out what that\n // cwd is without actually chdir'ing into it?\n /**\n * True if the pattern starts with a drive letter on Windows\n */\n isDrive(): boolean {\n const pl = this.#patternList\n return this.#isDrive !== undefined ?\n this.#isDrive\n : (this.#isDrive =\n this.#platform === 'win32' &&\n this.#index === 0 &&\n this.length > 1 &&\n typeof pl[0] === 'string' &&\n /^[a-z]:$/i.test(pl[0]))\n }\n\n // pattern = '/' or '/...' or '/x/...'\n // split = ['', ''] or ['', ...] or ['', 'x', ...]\n // Drive and UNC both considered absolute on windows\n /**\n * True if the pattern is rooted on an absolute path\n */\n isAbsolute(): boolean {\n const pl = this.#patternList\n return this.#isAbsolute !== undefined ?\n this.#isAbsolute\n : (this.#isAbsolute =\n (pl[0] === '' && pl.length > 1) ||\n this.isDrive() ||\n this.isUNC())\n }\n\n /**\n * consume the root of the pattern, and return it\n */\n root(): string {\n const p = this.#patternList[0]\n return (\n typeof p === 'string' && this.isAbsolute() && this.#index === 0\n ) ?\n p\n : ''\n }\n\n /**\n * Check to see if the current globstar pattern is allowed to follow\n * a symbolic link.\n */\n checkFollowGlobstar(): boolean {\n return !(\n this.#index === 0 ||\n !this.isGlobstar() ||\n !this.#followGlobstar\n )\n }\n\n /**\n * Mark that the current globstar pattern is following a symbolic link\n */\n markFollowGlobstar(): boolean {\n if (this.#index === 0 || !this.isGlobstar() || !this.#followGlobstar)\n return false\n this.#followGlobstar = false\n return true\n }\n}\n"]} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.d.ts b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.d.ts deleted file mode 100644 index ccedfbf2820f7d..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { MMRegExp } from 'minimatch'; -import { Path } from 'path-scurry'; -import { Pattern } from './pattern.js'; -import { GlobWalkerOpts } from './walker.js'; -/** - * A cache of which patterns have been processed for a given Path - */ -export declare class HasWalkedCache { - store: Map>; - constructor(store?: Map>); - copy(): HasWalkedCache; - hasWalked(target: Path, pattern: Pattern): boolean | undefined; - storeWalked(target: Path, pattern: Pattern): void; -} -/** - * A record of which paths have been matched in a given walk step, - * and whether they only are considered a match if they are a directory, - * and whether their absolute or relative path should be returned. - */ -export declare class MatchRecord { - store: Map; - add(target: Path, absolute: boolean, ifDir: boolean): void; - entries(): [Path, boolean, boolean][]; -} -/** - * A collection of patterns that must be processed in a subsequent step - * for a given path. - */ -export declare class SubWalks { - store: Map; - add(target: Path, pattern: Pattern): void; - get(target: Path): Pattern[]; - entries(): [Path, Pattern[]][]; - keys(): Path[]; -} -/** - * The class that processes patterns for a given path. - * - * Handles child entry filtering, and determining whether a path's - * directory contents must be read. - */ -export declare class Processor { - hasWalkedCache: HasWalkedCache; - matches: MatchRecord; - subwalks: SubWalks; - patterns?: Pattern[]; - follow: boolean; - dot: boolean; - opts: GlobWalkerOpts; - constructor(opts: GlobWalkerOpts, hasWalkedCache?: HasWalkedCache); - processPatterns(target: Path, patterns: Pattern[]): this; - subwalkTargets(): Path[]; - child(): Processor; - filterEntries(parent: Path, entries: Path[]): Processor; - testGlobstar(e: Path, pattern: Pattern, rest: Pattern | null, absolute: boolean): void; - testRegExp(e: Path, p: MMRegExp, rest: Pattern | null, absolute: boolean): void; - testString(e: Path, p: string, rest: Pattern | null, absolute: boolean): void; -} -//# sourceMappingURL=processor.d.ts.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.d.ts.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.d.ts.map deleted file mode 100644 index aa266fee4a0544..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../src/processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAa,OAAO,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C;;GAEG;AACH,qBAAa,cAAc;IACzB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;gBACnB,KAAK,GAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAGvD,IAAI;IAGJ,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;IAGxC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;CAM3C;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAY;IACpC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;IAMnD,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;CAOtC;AAED;;;GAGG;AACH,qBAAa,QAAQ;IACnB,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAY;IACvC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO;IAWlC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,EAAE;IAS5B,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;IAG9B,IAAI,IAAI,IAAI,EAAE;CAGf;AAED;;;;;GAKG;AACH,qBAAa,SAAS;IACpB,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,cAAoB;IAC3B,QAAQ,WAAiB;IACzB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,MAAM,EAAE,OAAO,CAAA;IACf,GAAG,EAAE,OAAO,CAAA;IACZ,IAAI,EAAE,cAAc,CAAA;gBAER,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,cAAc;IAQjE,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;IAmGjD,cAAc,IAAI,IAAI,EAAE;IAIxB,KAAK;IAQL,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,SAAS;IAqBvD,YAAY,CACV,CAAC,EAAE,IAAI,EACP,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,GAAG,IAAI,EACpB,QAAQ,EAAE,OAAO;IA8CnB,UAAU,CACR,CAAC,EAAE,IAAI,EACP,CAAC,EAAE,QAAQ,EACX,IAAI,EAAE,OAAO,GAAG,IAAI,EACpB,QAAQ,EAAE,OAAO;IAUnB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO;CASvE"} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.js b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.js deleted file mode 100644 index f874892ffed0c4..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.js +++ /dev/null @@ -1,294 +0,0 @@ -// synchronous utility for filtering entries and calculating subwalks -import { GLOBSTAR } from 'minimatch'; -/** - * A cache of which patterns have been processed for a given Path - */ -export class HasWalkedCache { - store; - constructor(store = new Map()) { - this.store = store; - } - copy() { - return new HasWalkedCache(new Map(this.store)); - } - hasWalked(target, pattern) { - return this.store.get(target.fullpath())?.has(pattern.globString()); - } - storeWalked(target, pattern) { - const fullpath = target.fullpath(); - const cached = this.store.get(fullpath); - if (cached) - cached.add(pattern.globString()); - else - this.store.set(fullpath, new Set([pattern.globString()])); - } -} -/** - * A record of which paths have been matched in a given walk step, - * and whether they only are considered a match if they are a directory, - * and whether their absolute or relative path should be returned. - */ -export class MatchRecord { - store = new Map(); - add(target, absolute, ifDir) { - const n = (absolute ? 2 : 0) | (ifDir ? 1 : 0); - const current = this.store.get(target); - this.store.set(target, current === undefined ? n : n & current); - } - // match, absolute, ifdir - entries() { - return [...this.store.entries()].map(([path, n]) => [ - path, - !!(n & 2), - !!(n & 1), - ]); - } -} -/** - * A collection of patterns that must be processed in a subsequent step - * for a given path. - */ -export class SubWalks { - store = new Map(); - add(target, pattern) { - if (!target.canReaddir()) { - return; - } - const subs = this.store.get(target); - if (subs) { - if (!subs.find(p => p.globString() === pattern.globString())) { - subs.push(pattern); - } - } - else - this.store.set(target, [pattern]); - } - get(target) { - const subs = this.store.get(target); - /* c8 ignore start */ - if (!subs) { - throw new Error('attempting to walk unknown path'); - } - /* c8 ignore stop */ - return subs; - } - entries() { - return this.keys().map(k => [k, this.store.get(k)]); - } - keys() { - return [...this.store.keys()].filter(t => t.canReaddir()); - } -} -/** - * The class that processes patterns for a given path. - * - * Handles child entry filtering, and determining whether a path's - * directory contents must be read. - */ -export class Processor { - hasWalkedCache; - matches = new MatchRecord(); - subwalks = new SubWalks(); - patterns; - follow; - dot; - opts; - constructor(opts, hasWalkedCache) { - this.opts = opts; - this.follow = !!opts.follow; - this.dot = !!opts.dot; - this.hasWalkedCache = - hasWalkedCache ? hasWalkedCache.copy() : new HasWalkedCache(); - } - processPatterns(target, patterns) { - this.patterns = patterns; - const processingSet = patterns.map(p => [target, p]); - // map of paths to the magic-starting subwalks they need to walk - // first item in patterns is the filter - for (let [t, pattern] of processingSet) { - this.hasWalkedCache.storeWalked(t, pattern); - const root = pattern.root(); - const absolute = pattern.isAbsolute() && this.opts.absolute !== false; - // start absolute patterns at root - if (root) { - t = t.resolve(root === '/' && this.opts.root !== undefined ? - this.opts.root - : root); - const rest = pattern.rest(); - if (!rest) { - this.matches.add(t, true, false); - continue; - } - else { - pattern = rest; - } - } - if (t.isENOENT()) - continue; - let p; - let rest; - let changed = false; - while (typeof (p = pattern.pattern()) === 'string' && - (rest = pattern.rest())) { - const c = t.resolve(p); - t = c; - pattern = rest; - changed = true; - } - p = pattern.pattern(); - rest = pattern.rest(); - if (changed) { - if (this.hasWalkedCache.hasWalked(t, pattern)) - continue; - this.hasWalkedCache.storeWalked(t, pattern); - } - // now we have either a final string for a known entry, - // more strings for an unknown entry, - // or a pattern starting with magic, mounted on t. - if (typeof p === 'string') { - // must not be final entry, otherwise we would have - // concatenated it earlier. - const ifDir = p === '..' || p === '' || p === '.'; - this.matches.add(t.resolve(p), absolute, ifDir); - continue; - } - else if (p === GLOBSTAR) { - // if no rest, match and subwalk pattern - // if rest, process rest and subwalk pattern - // if it's a symlink, but we didn't get here by way of a - // globstar match (meaning it's the first time THIS globstar - // has traversed a symlink), then we follow it. Otherwise, stop. - if (!t.isSymbolicLink() || - this.follow || - pattern.checkFollowGlobstar()) { - this.subwalks.add(t, pattern); - } - const rp = rest?.pattern(); - const rrest = rest?.rest(); - if (!rest || ((rp === '' || rp === '.') && !rrest)) { - // only HAS to be a dir if it ends in **/ or **/. - // but ending in ** will match files as well. - this.matches.add(t, absolute, rp === '' || rp === '.'); - } - else { - if (rp === '..') { - // this would mean you're matching **/.. at the fs root, - // and no thanks, I'm not gonna test that specific case. - /* c8 ignore start */ - const tp = t.parent || t; - /* c8 ignore stop */ - if (!rrest) - this.matches.add(tp, absolute, true); - else if (!this.hasWalkedCache.hasWalked(tp, rrest)) { - this.subwalks.add(tp, rrest); - } - } - } - } - else if (p instanceof RegExp) { - this.subwalks.add(t, pattern); - } - } - return this; - } - subwalkTargets() { - return this.subwalks.keys(); - } - child() { - return new Processor(this.opts, this.hasWalkedCache); - } - // return a new Processor containing the subwalks for each - // child entry, and a set of matches, and - // a hasWalkedCache that's a copy of this one - // then we're going to call - filterEntries(parent, entries) { - const patterns = this.subwalks.get(parent); - // put matches and entry walks into the results processor - const results = this.child(); - for (const e of entries) { - for (const pattern of patterns) { - const absolute = pattern.isAbsolute(); - const p = pattern.pattern(); - const rest = pattern.rest(); - if (p === GLOBSTAR) { - results.testGlobstar(e, pattern, rest, absolute); - } - else if (p instanceof RegExp) { - results.testRegExp(e, p, rest, absolute); - } - else { - results.testString(e, p, rest, absolute); - } - } - } - return results; - } - testGlobstar(e, pattern, rest, absolute) { - if (this.dot || !e.name.startsWith('.')) { - if (!pattern.hasMore()) { - this.matches.add(e, absolute, false); - } - if (e.canReaddir()) { - // if we're in follow mode or it's not a symlink, just keep - // testing the same pattern. If there's more after the globstar, - // then this symlink consumes the globstar. If not, then we can - // follow at most ONE symlink along the way, so we mark it, which - // also checks to ensure that it wasn't already marked. - if (this.follow || !e.isSymbolicLink()) { - this.subwalks.add(e, pattern); - } - else if (e.isSymbolicLink()) { - if (rest && pattern.checkFollowGlobstar()) { - this.subwalks.add(e, rest); - } - else if (pattern.markFollowGlobstar()) { - this.subwalks.add(e, pattern); - } - } - } - } - // if the NEXT thing matches this entry, then also add - // the rest. - if (rest) { - const rp = rest.pattern(); - if (typeof rp === 'string' && - // dots and empty were handled already - rp !== '..' && - rp !== '' && - rp !== '.') { - this.testString(e, rp, rest.rest(), absolute); - } - else if (rp === '..') { - /* c8 ignore start */ - const ep = e.parent || e; - /* c8 ignore stop */ - this.subwalks.add(ep, rest); - } - else if (rp instanceof RegExp) { - this.testRegExp(e, rp, rest.rest(), absolute); - } - } - } - testRegExp(e, p, rest, absolute) { - if (!p.test(e.name)) - return; - if (!rest) { - this.matches.add(e, absolute, false); - } - else { - this.subwalks.add(e, rest); - } - } - testString(e, p, rest, absolute) { - // should never happen? - if (!e.isNamed(p)) - return; - if (!rest) { - this.matches.add(e, absolute, false); - } - else { - this.subwalks.add(e, rest); - } - } -} -//# sourceMappingURL=processor.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.js.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.js.map deleted file mode 100644 index 05a832420b8b2f..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/processor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../src/processor.ts"],"names":[],"mappings":"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","sourcesContent":["// synchronous utility for filtering entries and calculating subwalks\n\nimport { GLOBSTAR, MMRegExp } from 'minimatch'\nimport { Path } from 'path-scurry'\nimport { MMPattern, Pattern } from './pattern.js'\nimport { GlobWalkerOpts } from './walker.js'\n\n/**\n * A cache of which patterns have been processed for a given Path\n */\nexport class HasWalkedCache {\n store: Map>\n constructor(store: Map> = new Map()) {\n this.store = store\n }\n copy() {\n return new HasWalkedCache(new Map(this.store))\n }\n hasWalked(target: Path, pattern: Pattern) {\n return this.store.get(target.fullpath())?.has(pattern.globString())\n }\n storeWalked(target: Path, pattern: Pattern) {\n const fullpath = target.fullpath()\n const cached = this.store.get(fullpath)\n if (cached) cached.add(pattern.globString())\n else this.store.set(fullpath, new Set([pattern.globString()]))\n }\n}\n\n/**\n * A record of which paths have been matched in a given walk step,\n * and whether they only are considered a match if they are a directory,\n * and whether their absolute or relative path should be returned.\n */\nexport class MatchRecord {\n store: Map = new Map()\n add(target: Path, absolute: boolean, ifDir: boolean) {\n const n = (absolute ? 2 : 0) | (ifDir ? 1 : 0)\n const current = this.store.get(target)\n this.store.set(target, current === undefined ? n : n & current)\n }\n // match, absolute, ifdir\n entries(): [Path, boolean, boolean][] {\n return [...this.store.entries()].map(([path, n]) => [\n path,\n !!(n & 2),\n !!(n & 1),\n ])\n }\n}\n\n/**\n * A collection of patterns that must be processed in a subsequent step\n * for a given path.\n */\nexport class SubWalks {\n store: Map = new Map()\n add(target: Path, pattern: Pattern) {\n if (!target.canReaddir()) {\n return\n }\n const subs = this.store.get(target)\n if (subs) {\n if (!subs.find(p => p.globString() === pattern.globString())) {\n subs.push(pattern)\n }\n } else this.store.set(target, [pattern])\n }\n get(target: Path): Pattern[] {\n const subs = this.store.get(target)\n /* c8 ignore start */\n if (!subs) {\n throw new Error('attempting to walk unknown path')\n }\n /* c8 ignore stop */\n return subs\n }\n entries(): [Path, Pattern[]][] {\n return this.keys().map(k => [k, this.store.get(k) as Pattern[]])\n }\n keys(): Path[] {\n return [...this.store.keys()].filter(t => t.canReaddir())\n }\n}\n\n/**\n * The class that processes patterns for a given path.\n *\n * Handles child entry filtering, and determining whether a path's\n * directory contents must be read.\n */\nexport class Processor {\n hasWalkedCache: HasWalkedCache\n matches = new MatchRecord()\n subwalks = new SubWalks()\n patterns?: Pattern[]\n follow: boolean\n dot: boolean\n opts: GlobWalkerOpts\n\n constructor(opts: GlobWalkerOpts, hasWalkedCache?: HasWalkedCache) {\n this.opts = opts\n this.follow = !!opts.follow\n this.dot = !!opts.dot\n this.hasWalkedCache =\n hasWalkedCache ? hasWalkedCache.copy() : new HasWalkedCache()\n }\n\n processPatterns(target: Path, patterns: Pattern[]) {\n this.patterns = patterns\n const processingSet: [Path, Pattern][] = patterns.map(p => [target, p])\n\n // map of paths to the magic-starting subwalks they need to walk\n // first item in patterns is the filter\n\n for (let [t, pattern] of processingSet) {\n this.hasWalkedCache.storeWalked(t, pattern)\n\n const root = pattern.root()\n const absolute = pattern.isAbsolute() && this.opts.absolute !== false\n\n // start absolute patterns at root\n if (root) {\n t = t.resolve(\n root === '/' && this.opts.root !== undefined ?\n this.opts.root\n : root,\n )\n const rest = pattern.rest()\n if (!rest) {\n this.matches.add(t, true, false)\n continue\n } else {\n pattern = rest\n }\n }\n\n if (t.isENOENT()) continue\n\n let p: MMPattern\n let rest: Pattern | null\n let changed = false\n while (\n typeof (p = pattern.pattern()) === 'string' &&\n (rest = pattern.rest())\n ) {\n const c = t.resolve(p)\n t = c\n pattern = rest\n changed = true\n }\n p = pattern.pattern()\n rest = pattern.rest()\n if (changed) {\n if (this.hasWalkedCache.hasWalked(t, pattern)) continue\n this.hasWalkedCache.storeWalked(t, pattern)\n }\n\n // now we have either a final string for a known entry,\n // more strings for an unknown entry,\n // or a pattern starting with magic, mounted on t.\n if (typeof p === 'string') {\n // must not be final entry, otherwise we would have\n // concatenated it earlier.\n const ifDir = p === '..' || p === '' || p === '.'\n this.matches.add(t.resolve(p), absolute, ifDir)\n continue\n } else if (p === GLOBSTAR) {\n // if no rest, match and subwalk pattern\n // if rest, process rest and subwalk pattern\n // if it's a symlink, but we didn't get here by way of a\n // globstar match (meaning it's the first time THIS globstar\n // has traversed a symlink), then we follow it. Otherwise, stop.\n if (\n !t.isSymbolicLink() ||\n this.follow ||\n pattern.checkFollowGlobstar()\n ) {\n this.subwalks.add(t, pattern)\n }\n const rp = rest?.pattern()\n const rrest = rest?.rest()\n if (!rest || ((rp === '' || rp === '.') && !rrest)) {\n // only HAS to be a dir if it ends in **/ or **/.\n // but ending in ** will match files as well.\n this.matches.add(t, absolute, rp === '' || rp === '.')\n } else {\n if (rp === '..') {\n // this would mean you're matching **/.. at the fs root,\n // and no thanks, I'm not gonna test that specific case.\n /* c8 ignore start */\n const tp = t.parent || t\n /* c8 ignore stop */\n if (!rrest) this.matches.add(tp, absolute, true)\n else if (!this.hasWalkedCache.hasWalked(tp, rrest)) {\n this.subwalks.add(tp, rrest)\n }\n }\n }\n } else if (p instanceof RegExp) {\n this.subwalks.add(t, pattern)\n }\n }\n\n return this\n }\n\n subwalkTargets(): Path[] {\n return this.subwalks.keys()\n }\n\n child() {\n return new Processor(this.opts, this.hasWalkedCache)\n }\n\n // return a new Processor containing the subwalks for each\n // child entry, and a set of matches, and\n // a hasWalkedCache that's a copy of this one\n // then we're going to call\n filterEntries(parent: Path, entries: Path[]): Processor {\n const patterns = this.subwalks.get(parent)\n // put matches and entry walks into the results processor\n const results = this.child()\n for (const e of entries) {\n for (const pattern of patterns) {\n const absolute = pattern.isAbsolute()\n const p = pattern.pattern()\n const rest = pattern.rest()\n if (p === GLOBSTAR) {\n results.testGlobstar(e, pattern, rest, absolute)\n } else if (p instanceof RegExp) {\n results.testRegExp(e, p, rest, absolute)\n } else {\n results.testString(e, p, rest, absolute)\n }\n }\n }\n return results\n }\n\n testGlobstar(\n e: Path,\n pattern: Pattern,\n rest: Pattern | null,\n absolute: boolean,\n ) {\n if (this.dot || !e.name.startsWith('.')) {\n if (!pattern.hasMore()) {\n this.matches.add(e, absolute, false)\n }\n if (e.canReaddir()) {\n // if we're in follow mode or it's not a symlink, just keep\n // testing the same pattern. If there's more after the globstar,\n // then this symlink consumes the globstar. If not, then we can\n // follow at most ONE symlink along the way, so we mark it, which\n // also checks to ensure that it wasn't already marked.\n if (this.follow || !e.isSymbolicLink()) {\n this.subwalks.add(e, pattern)\n } else if (e.isSymbolicLink()) {\n if (rest && pattern.checkFollowGlobstar()) {\n this.subwalks.add(e, rest)\n } else if (pattern.markFollowGlobstar()) {\n this.subwalks.add(e, pattern)\n }\n }\n }\n }\n // if the NEXT thing matches this entry, then also add\n // the rest.\n if (rest) {\n const rp = rest.pattern()\n if (\n typeof rp === 'string' &&\n // dots and empty were handled already\n rp !== '..' &&\n rp !== '' &&\n rp !== '.'\n ) {\n this.testString(e, rp, rest.rest(), absolute)\n } else if (rp === '..') {\n /* c8 ignore start */\n const ep = e.parent || e\n /* c8 ignore stop */\n this.subwalks.add(ep, rest)\n } else if (rp instanceof RegExp) {\n this.testRegExp(e, rp, rest.rest(), absolute)\n }\n }\n }\n\n testRegExp(\n e: Path,\n p: MMRegExp,\n rest: Pattern | null,\n absolute: boolean,\n ) {\n if (!p.test(e.name)) return\n if (!rest) {\n this.matches.add(e, absolute, false)\n } else {\n this.subwalks.add(e, rest)\n }\n }\n\n testString(e: Path, p: string, rest: Pattern | null, absolute: boolean) {\n // should never happen?\n if (!e.isNamed(p)) return\n if (!rest) {\n this.matches.add(e, absolute, false)\n } else {\n this.subwalks.add(e, rest)\n }\n }\n}\n"]} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.d.ts b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.d.ts deleted file mode 100644 index 499c8f4933857a..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.d.ts +++ /dev/null @@ -1,97 +0,0 @@ -/** - * Single-use utility classes to provide functionality to the {@link Glob} - * methods. - * - * @module - */ -import { Minipass } from 'minipass'; -import { Path } from 'path-scurry'; -import { IgnoreLike } from './ignore.js'; -import { Pattern } from './pattern.js'; -import { Processor } from './processor.js'; -export interface GlobWalkerOpts { - absolute?: boolean; - allowWindowsEscape?: boolean; - cwd?: string | URL; - dot?: boolean; - dotRelative?: boolean; - follow?: boolean; - ignore?: string | string[] | IgnoreLike; - mark?: boolean; - matchBase?: boolean; - maxDepth?: number; - nobrace?: boolean; - nocase?: boolean; - nodir?: boolean; - noext?: boolean; - noglobstar?: boolean; - platform?: NodeJS.Platform; - posix?: boolean; - realpath?: boolean; - root?: string; - stat?: boolean; - signal?: AbortSignal; - windowsPathsNoEscape?: boolean; - withFileTypes?: boolean; - includeChildMatches?: boolean; -} -export type GWOFileTypesTrue = GlobWalkerOpts & { - withFileTypes: true; -}; -export type GWOFileTypesFalse = GlobWalkerOpts & { - withFileTypes: false; -}; -export type GWOFileTypesUnset = GlobWalkerOpts & { - withFileTypes?: undefined; -}; -export type Result = O extends GWOFileTypesTrue ? Path : O extends GWOFileTypesFalse ? string : O extends GWOFileTypesUnset ? string : Path | string; -export type Matches = O extends GWOFileTypesTrue ? Set : O extends GWOFileTypesFalse ? Set : O extends GWOFileTypesUnset ? Set : Set; -export type MatchStream = Minipass, Result>; -/** - * basic walking utilities that all the glob walker types use - */ -export declare abstract class GlobUtil { - #private; - path: Path; - patterns: Pattern[]; - opts: O; - seen: Set; - paused: boolean; - aborted: boolean; - signal?: AbortSignal; - maxDepth: number; - includeChildMatches: boolean; - constructor(patterns: Pattern[], path: Path, opts: O); - pause(): void; - resume(): void; - onResume(fn: () => any): void; - matchCheck(e: Path, ifDir: boolean): Promise; - matchCheckTest(e: Path | undefined, ifDir: boolean): Path | undefined; - matchCheckSync(e: Path, ifDir: boolean): Path | undefined; - abstract matchEmit(p: Result): void; - abstract matchEmit(p: string | Path): void; - matchFinish(e: Path, absolute: boolean): void; - match(e: Path, absolute: boolean, ifDir: boolean): Promise; - matchSync(e: Path, absolute: boolean, ifDir: boolean): void; - walkCB(target: Path, patterns: Pattern[], cb: () => any): void; - walkCB2(target: Path, patterns: Pattern[], processor: Processor, cb: () => any): any; - walkCB3(target: Path, entries: Path[], processor: Processor, cb: () => any): void; - walkCBSync(target: Path, patterns: Pattern[], cb: () => any): void; - walkCB2Sync(target: Path, patterns: Pattern[], processor: Processor, cb: () => any): any; - walkCB3Sync(target: Path, entries: Path[], processor: Processor, cb: () => any): void; -} -export declare class GlobWalker extends GlobUtil { - matches: Set>; - constructor(patterns: Pattern[], path: Path, opts: O); - matchEmit(e: Result): void; - walk(): Promise>>; - walkSync(): Set>; -} -export declare class GlobStream extends GlobUtil { - results: Minipass, Result>; - constructor(patterns: Pattern[], path: Path, opts: O); - matchEmit(e: Result): void; - stream(): MatchStream; - streamSync(): MatchStream; -} -//# sourceMappingURL=walker.d.ts.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.d.ts.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.d.ts.map deleted file mode 100644 index 769957bd59bb1c..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"walker.d.ts","sourceRoot":"","sources":["../../src/walker.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.js b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.js deleted file mode 100644 index 3d68196c4f175f..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.js +++ /dev/null @@ -1,381 +0,0 @@ -/** - * Single-use utility classes to provide functionality to the {@link Glob} - * methods. - * - * @module - */ -import { Minipass } from 'minipass'; -import { Ignore } from './ignore.js'; -import { Processor } from './processor.js'; -const makeIgnore = (ignore, opts) => typeof ignore === 'string' ? new Ignore([ignore], opts) - : Array.isArray(ignore) ? new Ignore(ignore, opts) - : ignore; -/** - * basic walking utilities that all the glob walker types use - */ -export class GlobUtil { - path; - patterns; - opts; - seen = new Set(); - paused = false; - aborted = false; - #onResume = []; - #ignore; - #sep; - signal; - maxDepth; - includeChildMatches; - constructor(patterns, path, opts) { - this.patterns = patterns; - this.path = path; - this.opts = opts; - this.#sep = !opts.posix && opts.platform === 'win32' ? '\\' : '/'; - this.includeChildMatches = opts.includeChildMatches !== false; - if (opts.ignore || !this.includeChildMatches) { - this.#ignore = makeIgnore(opts.ignore ?? [], opts); - if (!this.includeChildMatches && - typeof this.#ignore.add !== 'function') { - const m = 'cannot ignore child matches, ignore lacks add() method.'; - throw new Error(m); - } - } - // ignore, always set with maxDepth, but it's optional on the - // GlobOptions type - /* c8 ignore start */ - this.maxDepth = opts.maxDepth || Infinity; - /* c8 ignore stop */ - if (opts.signal) { - this.signal = opts.signal; - this.signal.addEventListener('abort', () => { - this.#onResume.length = 0; - }); - } - } - #ignored(path) { - return this.seen.has(path) || !!this.#ignore?.ignored?.(path); - } - #childrenIgnored(path) { - return !!this.#ignore?.childrenIgnored?.(path); - } - // backpressure mechanism - pause() { - this.paused = true; - } - resume() { - /* c8 ignore start */ - if (this.signal?.aborted) - return; - /* c8 ignore stop */ - this.paused = false; - let fn = undefined; - while (!this.paused && (fn = this.#onResume.shift())) { - fn(); - } - } - onResume(fn) { - if (this.signal?.aborted) - return; - /* c8 ignore start */ - if (!this.paused) { - fn(); - } - else { - /* c8 ignore stop */ - this.#onResume.push(fn); - } - } - // do the requisite realpath/stat checking, and return the path - // to add or undefined to filter it out. - async matchCheck(e, ifDir) { - if (ifDir && this.opts.nodir) - return undefined; - let rpc; - if (this.opts.realpath) { - rpc = e.realpathCached() || (await e.realpath()); - if (!rpc) - return undefined; - e = rpc; - } - const needStat = e.isUnknown() || this.opts.stat; - const s = needStat ? await e.lstat() : e; - if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) { - const target = await s.realpath(); - /* c8 ignore start */ - if (target && (target.isUnknown() || this.opts.stat)) { - await target.lstat(); - } - /* c8 ignore stop */ - } - return this.matchCheckTest(s, ifDir); - } - matchCheckTest(e, ifDir) { - return (e && - (this.maxDepth === Infinity || e.depth() <= this.maxDepth) && - (!ifDir || e.canReaddir()) && - (!this.opts.nodir || !e.isDirectory()) && - (!this.opts.nodir || - !this.opts.follow || - !e.isSymbolicLink() || - !e.realpathCached()?.isDirectory()) && - !this.#ignored(e)) ? - e - : undefined; - } - matchCheckSync(e, ifDir) { - if (ifDir && this.opts.nodir) - return undefined; - let rpc; - if (this.opts.realpath) { - rpc = e.realpathCached() || e.realpathSync(); - if (!rpc) - return undefined; - e = rpc; - } - const needStat = e.isUnknown() || this.opts.stat; - const s = needStat ? e.lstatSync() : e; - if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) { - const target = s.realpathSync(); - if (target && (target?.isUnknown() || this.opts.stat)) { - target.lstatSync(); - } - } - return this.matchCheckTest(s, ifDir); - } - matchFinish(e, absolute) { - if (this.#ignored(e)) - return; - // we know we have an ignore if this is false, but TS doesn't - if (!this.includeChildMatches && this.#ignore?.add) { - const ign = `${e.relativePosix()}/**`; - this.#ignore.add(ign); - } - const abs = this.opts.absolute === undefined ? absolute : this.opts.absolute; - this.seen.add(e); - const mark = this.opts.mark && e.isDirectory() ? this.#sep : ''; - // ok, we have what we need! - if (this.opts.withFileTypes) { - this.matchEmit(e); - } - else if (abs) { - const abs = this.opts.posix ? e.fullpathPosix() : e.fullpath(); - this.matchEmit(abs + mark); - } - else { - const rel = this.opts.posix ? e.relativePosix() : e.relative(); - const pre = this.opts.dotRelative && !rel.startsWith('..' + this.#sep) ? - '.' + this.#sep - : ''; - this.matchEmit(!rel ? '.' + mark : pre + rel + mark); - } - } - async match(e, absolute, ifDir) { - const p = await this.matchCheck(e, ifDir); - if (p) - this.matchFinish(p, absolute); - } - matchSync(e, absolute, ifDir) { - const p = this.matchCheckSync(e, ifDir); - if (p) - this.matchFinish(p, absolute); - } - walkCB(target, patterns, cb) { - /* c8 ignore start */ - if (this.signal?.aborted) - cb(); - /* c8 ignore stop */ - this.walkCB2(target, patterns, new Processor(this.opts), cb); - } - walkCB2(target, patterns, processor, cb) { - if (this.#childrenIgnored(target)) - return cb(); - if (this.signal?.aborted) - cb(); - if (this.paused) { - this.onResume(() => this.walkCB2(target, patterns, processor, cb)); - return; - } - processor.processPatterns(target, patterns); - // done processing. all of the above is sync, can be abstracted out. - // subwalks is a map of paths to the entry filters they need - // matches is a map of paths to [absolute, ifDir] tuples. - let tasks = 1; - const next = () => { - if (--tasks === 0) - cb(); - }; - for (const [m, absolute, ifDir] of processor.matches.entries()) { - if (this.#ignored(m)) - continue; - tasks++; - this.match(m, absolute, ifDir).then(() => next()); - } - for (const t of processor.subwalkTargets()) { - if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) { - continue; - } - tasks++; - const childrenCached = t.readdirCached(); - if (t.calledReaddir()) - this.walkCB3(t, childrenCached, processor, next); - else { - t.readdirCB((_, entries) => this.walkCB3(t, entries, processor, next), true); - } - } - next(); - } - walkCB3(target, entries, processor, cb) { - processor = processor.filterEntries(target, entries); - let tasks = 1; - const next = () => { - if (--tasks === 0) - cb(); - }; - for (const [m, absolute, ifDir] of processor.matches.entries()) { - if (this.#ignored(m)) - continue; - tasks++; - this.match(m, absolute, ifDir).then(() => next()); - } - for (const [target, patterns] of processor.subwalks.entries()) { - tasks++; - this.walkCB2(target, patterns, processor.child(), next); - } - next(); - } - walkCBSync(target, patterns, cb) { - /* c8 ignore start */ - if (this.signal?.aborted) - cb(); - /* c8 ignore stop */ - this.walkCB2Sync(target, patterns, new Processor(this.opts), cb); - } - walkCB2Sync(target, patterns, processor, cb) { - if (this.#childrenIgnored(target)) - return cb(); - if (this.signal?.aborted) - cb(); - if (this.paused) { - this.onResume(() => this.walkCB2Sync(target, patterns, processor, cb)); - return; - } - processor.processPatterns(target, patterns); - // done processing. all of the above is sync, can be abstracted out. - // subwalks is a map of paths to the entry filters they need - // matches is a map of paths to [absolute, ifDir] tuples. - let tasks = 1; - const next = () => { - if (--tasks === 0) - cb(); - }; - for (const [m, absolute, ifDir] of processor.matches.entries()) { - if (this.#ignored(m)) - continue; - this.matchSync(m, absolute, ifDir); - } - for (const t of processor.subwalkTargets()) { - if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) { - continue; - } - tasks++; - const children = t.readdirSync(); - this.walkCB3Sync(t, children, processor, next); - } - next(); - } - walkCB3Sync(target, entries, processor, cb) { - processor = processor.filterEntries(target, entries); - let tasks = 1; - const next = () => { - if (--tasks === 0) - cb(); - }; - for (const [m, absolute, ifDir] of processor.matches.entries()) { - if (this.#ignored(m)) - continue; - this.matchSync(m, absolute, ifDir); - } - for (const [target, patterns] of processor.subwalks.entries()) { - tasks++; - this.walkCB2Sync(target, patterns, processor.child(), next); - } - next(); - } -} -export class GlobWalker extends GlobUtil { - matches = new Set(); - constructor(patterns, path, opts) { - super(patterns, path, opts); - } - matchEmit(e) { - this.matches.add(e); - } - async walk() { - if (this.signal?.aborted) - throw this.signal.reason; - if (this.path.isUnknown()) { - await this.path.lstat(); - } - await new Promise((res, rej) => { - this.walkCB(this.path, this.patterns, () => { - if (this.signal?.aborted) { - rej(this.signal.reason); - } - else { - res(this.matches); - } - }); - }); - return this.matches; - } - walkSync() { - if (this.signal?.aborted) - throw this.signal.reason; - if (this.path.isUnknown()) { - this.path.lstatSync(); - } - // nothing for the callback to do, because this never pauses - this.walkCBSync(this.path, this.patterns, () => { - if (this.signal?.aborted) - throw this.signal.reason; - }); - return this.matches; - } -} -export class GlobStream extends GlobUtil { - results; - constructor(patterns, path, opts) { - super(patterns, path, opts); - this.results = new Minipass({ - signal: this.signal, - objectMode: true, - }); - this.results.on('drain', () => this.resume()); - this.results.on('resume', () => this.resume()); - } - matchEmit(e) { - this.results.write(e); - if (!this.results.flowing) - this.pause(); - } - stream() { - const target = this.path; - if (target.isUnknown()) { - target.lstat().then(() => { - this.walkCB(target, this.patterns, () => this.results.end()); - }); - } - else { - this.walkCB(target, this.patterns, () => this.results.end()); - } - return this.results; - } - streamSync() { - if (this.path.isUnknown()) { - this.path.lstatSync(); - } - this.walkCBSync(this.path, this.patterns, () => this.results.end()); - return this.results; - } -} -//# sourceMappingURL=walker.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.js.map b/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.js.map deleted file mode 100644 index daeeda6752713f..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/dist/esm/walker.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"walker.js","sourceRoot":"","sources":["../../src/walker.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Single-use utility classes to provide functionality to the {@link Glob}\n * methods.\n *\n * @module\n */\nimport { Minipass } from 'minipass'\nimport { Path } from 'path-scurry'\nimport { Ignore, IgnoreLike } from './ignore.js'\n\n// XXX can we somehow make it so that it NEVER processes a given path more than\n// once, enough that the match set tracking is no longer needed? that'd speed\n// things up a lot. Or maybe bring back nounique, and skip it in that case?\n\n// a single minimatch set entry with 1 or more parts\nimport { Pattern } from './pattern.js'\nimport { Processor } from './processor.js'\n\nexport interface GlobWalkerOpts {\n absolute?: boolean\n allowWindowsEscape?: boolean\n cwd?: string | URL\n dot?: boolean\n dotRelative?: boolean\n follow?: boolean\n ignore?: string | string[] | IgnoreLike\n mark?: boolean\n matchBase?: boolean\n // Note: maxDepth here means \"maximum actual Path.depth()\",\n // not \"maximum depth beyond cwd\"\n maxDepth?: number\n nobrace?: boolean\n nocase?: boolean\n nodir?: boolean\n noext?: boolean\n noglobstar?: boolean\n platform?: NodeJS.Platform\n posix?: boolean\n realpath?: boolean\n root?: string\n stat?: boolean\n signal?: AbortSignal\n windowsPathsNoEscape?: boolean\n withFileTypes?: boolean\n includeChildMatches?: boolean\n}\n\nexport type GWOFileTypesTrue = GlobWalkerOpts & {\n withFileTypes: true\n}\nexport type GWOFileTypesFalse = GlobWalkerOpts & {\n withFileTypes: false\n}\nexport type GWOFileTypesUnset = GlobWalkerOpts & {\n withFileTypes?: undefined\n}\n\nexport type Result =\n O extends GWOFileTypesTrue ? Path\n : O extends GWOFileTypesFalse ? string\n : O extends GWOFileTypesUnset ? string\n : Path | string\n\nexport type Matches =\n O extends GWOFileTypesTrue ? Set\n : O extends GWOFileTypesFalse ? Set\n : O extends GWOFileTypesUnset ? Set\n : Set\n\nexport type MatchStream = Minipass<\n Result,\n Result\n>\n\nconst makeIgnore = (\n ignore: string | string[] | IgnoreLike,\n opts: GlobWalkerOpts,\n): IgnoreLike =>\n typeof ignore === 'string' ? new Ignore([ignore], opts)\n : Array.isArray(ignore) ? new Ignore(ignore, opts)\n : ignore\n\n/**\n * basic walking utilities that all the glob walker types use\n */\nexport abstract class GlobUtil {\n path: Path\n patterns: Pattern[]\n opts: O\n seen: Set = new Set()\n paused: boolean = false\n aborted: boolean = false\n #onResume: (() => any)[] = []\n #ignore?: IgnoreLike\n #sep: '\\\\' | '/'\n signal?: AbortSignal\n maxDepth: number\n includeChildMatches: boolean\n\n constructor(patterns: Pattern[], path: Path, opts: O)\n constructor(patterns: Pattern[], path: Path, opts: O) {\n this.patterns = patterns\n this.path = path\n this.opts = opts\n this.#sep = !opts.posix && opts.platform === 'win32' ? '\\\\' : '/'\n this.includeChildMatches = opts.includeChildMatches !== false\n if (opts.ignore || !this.includeChildMatches) {\n this.#ignore = makeIgnore(opts.ignore ?? [], opts)\n if (\n !this.includeChildMatches &&\n typeof this.#ignore.add !== 'function'\n ) {\n const m = 'cannot ignore child matches, ignore lacks add() method.'\n throw new Error(m)\n }\n }\n // ignore, always set with maxDepth, but it's optional on the\n // GlobOptions type\n /* c8 ignore start */\n this.maxDepth = opts.maxDepth || Infinity\n /* c8 ignore stop */\n if (opts.signal) {\n this.signal = opts.signal\n this.signal.addEventListener('abort', () => {\n this.#onResume.length = 0\n })\n }\n }\n\n #ignored(path: Path): boolean {\n return this.seen.has(path) || !!this.#ignore?.ignored?.(path)\n }\n #childrenIgnored(path: Path): boolean {\n return !!this.#ignore?.childrenIgnored?.(path)\n }\n\n // backpressure mechanism\n pause() {\n this.paused = true\n }\n resume() {\n /* c8 ignore start */\n if (this.signal?.aborted) return\n /* c8 ignore stop */\n this.paused = false\n let fn: (() => any) | undefined = undefined\n while (!this.paused && (fn = this.#onResume.shift())) {\n fn()\n }\n }\n onResume(fn: () => any) {\n if (this.signal?.aborted) return\n /* c8 ignore start */\n if (!this.paused) {\n fn()\n } else {\n /* c8 ignore stop */\n this.#onResume.push(fn)\n }\n }\n\n // do the requisite realpath/stat checking, and return the path\n // to add or undefined to filter it out.\n async matchCheck(e: Path, ifDir: boolean): Promise {\n if (ifDir && this.opts.nodir) return undefined\n let rpc: Path | undefined\n if (this.opts.realpath) {\n rpc = e.realpathCached() || (await e.realpath())\n if (!rpc) return undefined\n e = rpc\n }\n const needStat = e.isUnknown() || this.opts.stat\n const s = needStat ? await e.lstat() : e\n if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) {\n const target = await s.realpath()\n /* c8 ignore start */\n if (target && (target.isUnknown() || this.opts.stat)) {\n await target.lstat()\n }\n /* c8 ignore stop */\n }\n return this.matchCheckTest(s, ifDir)\n }\n\n matchCheckTest(e: Path | undefined, ifDir: boolean): Path | undefined {\n return (\n e &&\n (this.maxDepth === Infinity || e.depth() <= this.maxDepth) &&\n (!ifDir || e.canReaddir()) &&\n (!this.opts.nodir || !e.isDirectory()) &&\n (!this.opts.nodir ||\n !this.opts.follow ||\n !e.isSymbolicLink() ||\n !e.realpathCached()?.isDirectory()) &&\n !this.#ignored(e)\n ) ?\n e\n : undefined\n }\n\n matchCheckSync(e: Path, ifDir: boolean): Path | undefined {\n if (ifDir && this.opts.nodir) return undefined\n let rpc: Path | undefined\n if (this.opts.realpath) {\n rpc = e.realpathCached() || e.realpathSync()\n if (!rpc) return undefined\n e = rpc\n }\n const needStat = e.isUnknown() || this.opts.stat\n const s = needStat ? e.lstatSync() : e\n if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) {\n const target = s.realpathSync()\n if (target && (target?.isUnknown() || this.opts.stat)) {\n target.lstatSync()\n }\n }\n return this.matchCheckTest(s, ifDir)\n }\n\n abstract matchEmit(p: Result): void\n abstract matchEmit(p: string | Path): void\n\n matchFinish(e: Path, absolute: boolean) {\n if (this.#ignored(e)) return\n // we know we have an ignore if this is false, but TS doesn't\n if (!this.includeChildMatches && this.#ignore?.add) {\n const ign = `${e.relativePosix()}/**`\n this.#ignore.add(ign)\n }\n const abs =\n this.opts.absolute === undefined ? absolute : this.opts.absolute\n this.seen.add(e)\n const mark = this.opts.mark && e.isDirectory() ? this.#sep : ''\n // ok, we have what we need!\n if (this.opts.withFileTypes) {\n this.matchEmit(e)\n } else if (abs) {\n const abs = this.opts.posix ? e.fullpathPosix() : e.fullpath()\n this.matchEmit(abs + mark)\n } else {\n const rel = this.opts.posix ? e.relativePosix() : e.relative()\n const pre =\n this.opts.dotRelative && !rel.startsWith('..' + this.#sep) ?\n '.' + this.#sep\n : ''\n this.matchEmit(!rel ? '.' + mark : pre + rel + mark)\n }\n }\n\n async match(e: Path, absolute: boolean, ifDir: boolean): Promise {\n const p = await this.matchCheck(e, ifDir)\n if (p) this.matchFinish(p, absolute)\n }\n\n matchSync(e: Path, absolute: boolean, ifDir: boolean): void {\n const p = this.matchCheckSync(e, ifDir)\n if (p) this.matchFinish(p, absolute)\n }\n\n walkCB(target: Path, patterns: Pattern[], cb: () => any) {\n /* c8 ignore start */\n if (this.signal?.aborted) cb()\n /* c8 ignore stop */\n this.walkCB2(target, patterns, new Processor(this.opts), cb)\n }\n\n walkCB2(\n target: Path,\n patterns: Pattern[],\n processor: Processor,\n cb: () => any,\n ) {\n if (this.#childrenIgnored(target)) return cb()\n if (this.signal?.aborted) cb()\n if (this.paused) {\n this.onResume(() => this.walkCB2(target, patterns, processor, cb))\n return\n }\n processor.processPatterns(target, patterns)\n\n // done processing. all of the above is sync, can be abstracted out.\n // subwalks is a map of paths to the entry filters they need\n // matches is a map of paths to [absolute, ifDir] tuples.\n let tasks = 1\n const next = () => {\n if (--tasks === 0) cb()\n }\n\n for (const [m, absolute, ifDir] of processor.matches.entries()) {\n if (this.#ignored(m)) continue\n tasks++\n this.match(m, absolute, ifDir).then(() => next())\n }\n\n for (const t of processor.subwalkTargets()) {\n if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) {\n continue\n }\n tasks++\n const childrenCached = t.readdirCached()\n if (t.calledReaddir())\n this.walkCB3(t, childrenCached, processor, next)\n else {\n t.readdirCB(\n (_, entries) => this.walkCB3(t, entries, processor, next),\n true,\n )\n }\n }\n\n next()\n }\n\n walkCB3(\n target: Path,\n entries: Path[],\n processor: Processor,\n cb: () => any,\n ) {\n processor = processor.filterEntries(target, entries)\n\n let tasks = 1\n const next = () => {\n if (--tasks === 0) cb()\n }\n\n for (const [m, absolute, ifDir] of processor.matches.entries()) {\n if (this.#ignored(m)) continue\n tasks++\n this.match(m, absolute, ifDir).then(() => next())\n }\n for (const [target, patterns] of processor.subwalks.entries()) {\n tasks++\n this.walkCB2(target, patterns, processor.child(), next)\n }\n\n next()\n }\n\n walkCBSync(target: Path, patterns: Pattern[], cb: () => any) {\n /* c8 ignore start */\n if (this.signal?.aborted) cb()\n /* c8 ignore stop */\n this.walkCB2Sync(target, patterns, new Processor(this.opts), cb)\n }\n\n walkCB2Sync(\n target: Path,\n patterns: Pattern[],\n processor: Processor,\n cb: () => any,\n ) {\n if (this.#childrenIgnored(target)) return cb()\n if (this.signal?.aborted) cb()\n if (this.paused) {\n this.onResume(() =>\n this.walkCB2Sync(target, patterns, processor, cb),\n )\n return\n }\n processor.processPatterns(target, patterns)\n\n // done processing. all of the above is sync, can be abstracted out.\n // subwalks is a map of paths to the entry filters they need\n // matches is a map of paths to [absolute, ifDir] tuples.\n let tasks = 1\n const next = () => {\n if (--tasks === 0) cb()\n }\n\n for (const [m, absolute, ifDir] of processor.matches.entries()) {\n if (this.#ignored(m)) continue\n this.matchSync(m, absolute, ifDir)\n }\n\n for (const t of processor.subwalkTargets()) {\n if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) {\n continue\n }\n tasks++\n const children = t.readdirSync()\n this.walkCB3Sync(t, children, processor, next)\n }\n\n next()\n }\n\n walkCB3Sync(\n target: Path,\n entries: Path[],\n processor: Processor,\n cb: () => any,\n ) {\n processor = processor.filterEntries(target, entries)\n\n let tasks = 1\n const next = () => {\n if (--tasks === 0) cb()\n }\n\n for (const [m, absolute, ifDir] of processor.matches.entries()) {\n if (this.#ignored(m)) continue\n this.matchSync(m, absolute, ifDir)\n }\n for (const [target, patterns] of processor.subwalks.entries()) {\n tasks++\n this.walkCB2Sync(target, patterns, processor.child(), next)\n }\n\n next()\n }\n}\n\nexport class GlobWalker<\n O extends GlobWalkerOpts = GlobWalkerOpts,\n> extends GlobUtil {\n matches = new Set>()\n\n constructor(patterns: Pattern[], path: Path, opts: O) {\n super(patterns, path, opts)\n }\n\n matchEmit(e: Result): void {\n this.matches.add(e)\n }\n\n async walk(): Promise>> {\n if (this.signal?.aborted) throw this.signal.reason\n if (this.path.isUnknown()) {\n await this.path.lstat()\n }\n await new Promise((res, rej) => {\n this.walkCB(this.path, this.patterns, () => {\n if (this.signal?.aborted) {\n rej(this.signal.reason)\n } else {\n res(this.matches)\n }\n })\n })\n return this.matches\n }\n\n walkSync(): Set> {\n if (this.signal?.aborted) throw this.signal.reason\n if (this.path.isUnknown()) {\n this.path.lstatSync()\n }\n // nothing for the callback to do, because this never pauses\n this.walkCBSync(this.path, this.patterns, () => {\n if (this.signal?.aborted) throw this.signal.reason\n })\n return this.matches\n }\n}\n\nexport class GlobStream<\n O extends GlobWalkerOpts = GlobWalkerOpts,\n> extends GlobUtil {\n results: Minipass, Result>\n\n constructor(patterns: Pattern[], path: Path, opts: O) {\n super(patterns, path, opts)\n this.results = new Minipass, Result>({\n signal: this.signal,\n objectMode: true,\n })\n this.results.on('drain', () => this.resume())\n this.results.on('resume', () => this.resume())\n }\n\n matchEmit(e: Result): void {\n this.results.write(e)\n if (!this.results.flowing) this.pause()\n }\n\n stream(): MatchStream {\n const target = this.path\n if (target.isUnknown()) {\n target.lstat().then(() => {\n this.walkCB(target, this.patterns, () => this.results.end())\n })\n } else {\n this.walkCB(target, this.patterns, () => this.results.end())\n }\n return this.results\n }\n\n streamSync(): MatchStream {\n if (this.path.isUnknown()) {\n this.path.lstatSync()\n }\n this.walkCBSync(this.path, this.patterns, () => this.results.end())\n return this.results\n }\n}\n"]} \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/package.json b/deps/npm/node_modules/node-gyp/node_modules/glob/package.json deleted file mode 100644 index 6d4893b5f327ba..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/package.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "author": "Isaac Z. Schlueter (https://blog.izs.me/)", - "publishConfig": { - "tag": "legacy-v10" - }, - "name": "glob", - "description": "the most correct and second fastest glob implementation in JavaScript", - "version": "10.4.5", - "type": "module", - "tshy": { - "main": true, - "exports": { - "./package.json": "./package.json", - ".": "./src/index.ts" - } - }, - "bin": "./dist/esm/bin.mjs", - "main": "./dist/commonjs/index.js", - "types": "./dist/commonjs/index.d.ts", - "exports": { - "./package.json": "./package.json", - ".": { - "import": { - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - } - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-glob.git" - }, - "files": [ - "dist" - ], - "scripts": { - "preversion": "npm test", - "postversion": "npm publish", - "prepublishOnly": "git push origin --follow-tags", - "prepare": "tshy", - "pretest": "npm run prepare", - "presnap": "npm run prepare", - "test": "tap", - "snap": "tap", - "format": "prettier --write . --log-level warn", - "typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts", - "prepublish": "npm run benchclean", - "profclean": "rm -f v8.log profile.txt", - "test-regen": "npm run profclean && TEST_REGEN=1 node --no-warnings --loader ts-node/esm test/00-setup.ts", - "prebench": "npm run prepare", - "bench": "bash benchmark.sh", - "preprof": "npm run prepare", - "prof": "bash prof.sh", - "benchclean": "node benchclean.cjs" - }, - "prettier": { - "experimentalTernaries": true, - "semi": false, - "printWidth": 75, - "tabWidth": 2, - "useTabs": false, - "singleQuote": true, - "jsxSingleQuote": false, - "bracketSameLine": true, - "arrowParens": "avoid", - "endOfLine": "lf" - }, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "devDependencies": { - "@types/node": "^20.11.30", - "memfs": "^3.4.13", - "mkdirp": "^3.0.1", - "prettier": "^3.2.5", - "rimraf": "^5.0.7", - "sync-content": "^1.0.2", - "tap": "^19.0.0", - "tshy": "^1.14.0", - "typedoc": "^0.25.12" - }, - "tap": { - "before": "test/00-setup.ts" - }, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "module": "./dist/esm/index.js" -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/commonjs/index.js b/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/commonjs/index.js deleted file mode 100644 index f7fc9cb69a2af0..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/commonjs/index.js +++ /dev/null @@ -1,1010 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.jack = exports.Jack = exports.isConfigOption = exports.isConfigType = void 0; -const node_util_1 = require("node:util"); -const parse_args_js_1 = require("./parse-args.js"); -// it's a tiny API, just cast it inline, it's fine -//@ts-ignore -const cliui_1 = __importDefault(require("@isaacs/cliui")); -const node_path_1 = require("node:path"); -const width = Math.min((process && process.stdout && process.stdout.columns) || 80, 80); -// indentation spaces from heading level -const indent = (n) => (n - 1) * 2; -const toEnvKey = (pref, key) => { - return [pref, key.replace(/[^a-zA-Z0-9]+/g, ' ')] - .join(' ') - .trim() - .toUpperCase() - .replace(/ /g, '_'); -}; -const toEnvVal = (value, delim = '\n') => { - const str = typeof value === 'string' ? value - : typeof value === 'boolean' ? - value ? '1' - : '0' - : typeof value === 'number' ? String(value) - : Array.isArray(value) ? - value.map((v) => toEnvVal(v)).join(delim) - : /* c8 ignore start */ undefined; - if (typeof str !== 'string') { - throw new Error(`could not serialize value to environment: ${JSON.stringify(value)}`); - } - /* c8 ignore stop */ - return str; -}; -const fromEnvVal = (env, type, multiple, delim = '\n') => (multiple ? - env ? env.split(delim).map(v => fromEnvVal(v, type, false)) - : [] - : type === 'string' ? env - : type === 'boolean' ? env === '1' - : +env.trim()); -const isConfigType = (t) => typeof t === 'string' && - (t === 'string' || t === 'number' || t === 'boolean'); -exports.isConfigType = isConfigType; -const undefOrType = (v, t) => v === undefined || typeof v === t; -const undefOrTypeArray = (v, t) => v === undefined || (Array.isArray(v) && v.every(x => typeof x === t)); -const isValidOption = (v, vo) => Array.isArray(v) ? v.every(x => isValidOption(x, vo)) : vo.includes(v); -// print the value type, for error message reporting -const valueType = (v) => typeof v === 'string' ? 'string' - : typeof v === 'boolean' ? 'boolean' - : typeof v === 'number' ? 'number' - : Array.isArray(v) ? - joinTypes([...new Set(v.map(v => valueType(v)))]) + '[]' - : `${v.type}${v.multiple ? '[]' : ''}`; -const joinTypes = (types) => types.length === 1 && typeof types[0] === 'string' ? - types[0] - : `(${types.join('|')})`; -const isValidValue = (v, type, multi) => { - if (multi) { - if (!Array.isArray(v)) - return false; - return !v.some((v) => !isValidValue(v, type, false)); - } - if (Array.isArray(v)) - return false; - return typeof v === type; -}; -const isConfigOption = (o, type, multi) => !!o && - typeof o === 'object' && - (0, exports.isConfigType)(o.type) && - o.type === type && - undefOrType(o.short, 'string') && - undefOrType(o.description, 'string') && - undefOrType(o.hint, 'string') && - undefOrType(o.validate, 'function') && - (o.type === 'boolean' ? - o.validOptions === undefined - : undefOrTypeArray(o.validOptions, o.type)) && - (o.default === undefined || isValidValue(o.default, type, multi)) && - !!o.multiple === multi; -exports.isConfigOption = isConfigOption; -function num(o = {}) { - const { default: def, validate: val, validOptions, ...rest } = o; - if (def !== undefined && !isValidValue(def, 'number', false)) { - throw new TypeError('invalid default value', { - cause: { - found: def, - wanted: 'number', - }, - }); - } - if (!undefOrTypeArray(validOptions, 'number')) { - throw new TypeError('invalid validOptions', { - cause: { - found: validOptions, - wanted: 'number[]', - }, - }); - } - const validate = val ? - val - : undefined; - return { - ...rest, - default: def, - validate, - validOptions, - type: 'number', - multiple: false, - }; -} -function numList(o = {}) { - const { default: def, validate: val, validOptions, ...rest } = o; - if (def !== undefined && !isValidValue(def, 'number', true)) { - throw new TypeError('invalid default value', { - cause: { - found: def, - wanted: 'number[]', - }, - }); - } - if (!undefOrTypeArray(validOptions, 'number')) { - throw new TypeError('invalid validOptions', { - cause: { - found: validOptions, - wanted: 'number[]', - }, - }); - } - const validate = val ? - val - : undefined; - return { - ...rest, - default: def, - validate, - validOptions, - type: 'number', - multiple: true, - }; -} -function opt(o = {}) { - const { default: def, validate: val, validOptions, ...rest } = o; - if (def !== undefined && !isValidValue(def, 'string', false)) { - throw new TypeError('invalid default value', { - cause: { - found: def, - wanted: 'string', - }, - }); - } - if (!undefOrTypeArray(validOptions, 'string')) { - throw new TypeError('invalid validOptions', { - cause: { - found: validOptions, - wanted: 'string[]', - }, - }); - } - const validate = val ? - val - : undefined; - return { - ...rest, - default: def, - validate, - validOptions, - type: 'string', - multiple: false, - }; -} -function optList(o = {}) { - const { default: def, validate: val, validOptions, ...rest } = o; - if (def !== undefined && !isValidValue(def, 'string', true)) { - throw new TypeError('invalid default value', { - cause: { - found: def, - wanted: 'string[]', - }, - }); - } - if (!undefOrTypeArray(validOptions, 'string')) { - throw new TypeError('invalid validOptions', { - cause: { - found: validOptions, - wanted: 'string[]', - }, - }); - } - const validate = val ? - val - : undefined; - return { - ...rest, - default: def, - validate, - validOptions, - type: 'string', - multiple: true, - }; -} -function flag(o = {}) { - const { hint, default: def, validate: val, ...rest } = o; - delete rest.validOptions; - if (def !== undefined && !isValidValue(def, 'boolean', false)) { - throw new TypeError('invalid default value'); - } - const validate = val ? - val - : undefined; - if (hint !== undefined) { - throw new TypeError('cannot provide hint for flag'); - } - return { - ...rest, - default: def, - validate, - type: 'boolean', - multiple: false, - }; -} -function flagList(o = {}) { - const { hint, default: def, validate: val, ...rest } = o; - delete rest.validOptions; - if (def !== undefined && !isValidValue(def, 'boolean', true)) { - throw new TypeError('invalid default value'); - } - const validate = val ? - val - : undefined; - if (hint !== undefined) { - throw new TypeError('cannot provide hint for flag list'); - } - return { - ...rest, - default: def, - validate, - type: 'boolean', - multiple: true, - }; -} -const toParseArgsOptionsConfig = (options) => { - const c = {}; - for (const longOption in options) { - const config = options[longOption]; - /* c8 ignore start */ - if (!config) { - throw new Error('config must be an object: ' + longOption); - } - /* c8 ignore start */ - if ((0, exports.isConfigOption)(config, 'number', true)) { - c[longOption] = { - type: 'string', - multiple: true, - default: config.default?.map(c => String(c)), - }; - } - else if ((0, exports.isConfigOption)(config, 'number', false)) { - c[longOption] = { - type: 'string', - multiple: false, - default: config.default === undefined ? - undefined - : String(config.default), - }; - } - else { - const conf = config; - c[longOption] = { - type: conf.type, - multiple: !!conf.multiple, - default: conf.default, - }; - } - const clo = c[longOption]; - if (typeof config.short === 'string') { - clo.short = config.short; - } - if (config.type === 'boolean' && - !longOption.startsWith('no-') && - !options[`no-${longOption}`]) { - c[`no-${longOption}`] = { - type: 'boolean', - multiple: config.multiple, - }; - } - } - return c; -}; -const isHeading = (r) => r.type === 'heading'; -const isDescription = (r) => r.type === 'description'; -/** - * Class returned by the {@link jack} function and all configuration - * definition methods. This is what gets chained together. - */ -class Jack { - #configSet; - #shorts; - #options; - #fields = []; - #env; - #envPrefix; - #allowPositionals; - #usage; - #usageMarkdown; - constructor(options = {}) { - this.#options = options; - this.#allowPositionals = options.allowPositionals !== false; - this.#env = - this.#options.env === undefined ? process.env : this.#options.env; - this.#envPrefix = options.envPrefix; - // We need to fib a little, because it's always the same object, but it - // starts out as having an empty config set. Then each method that adds - // fields returns `this as Jack` - this.#configSet = Object.create(null); - this.#shorts = Object.create(null); - } - /** - * Set the default value (which will still be overridden by env or cli) - * as if from a parsed config file. The optional `source` param, if - * provided, will be included in error messages if a value is invalid or - * unknown. - */ - setConfigValues(values, source = '') { - try { - this.validate(values); - } - catch (er) { - const e = er; - if (source && e && typeof e === 'object') { - if (e.cause && typeof e.cause === 'object') { - Object.assign(e.cause, { path: source }); - } - else { - e.cause = { path: source }; - } - } - throw e; - } - for (const [field, value] of Object.entries(values)) { - const my = this.#configSet[field]; - // already validated, just for TS's benefit - /* c8 ignore start */ - if (!my) { - throw new Error('unexpected field in config set: ' + field, { - cause: { found: field }, - }); - } - /* c8 ignore stop */ - my.default = value; - } - return this; - } - /** - * Parse a string of arguments, and return the resulting - * `{ values, positionals }` object. - * - * If an {@link JackOptions#envPrefix} is set, then it will read default - * values from the environment, and write the resulting values back - * to the environment as well. - * - * Environment values always take precedence over any other value, except - * an explicit CLI setting. - */ - parse(args = process.argv) { - this.loadEnvDefaults(); - const p = this.parseRaw(args); - this.applyDefaults(p); - this.writeEnv(p); - return p; - } - loadEnvDefaults() { - if (this.#envPrefix) { - for (const [field, my] of Object.entries(this.#configSet)) { - const ek = toEnvKey(this.#envPrefix, field); - const env = this.#env[ek]; - if (env !== undefined) { - my.default = fromEnvVal(env, my.type, !!my.multiple, my.delim); - } - } - } - } - applyDefaults(p) { - for (const [field, c] of Object.entries(this.#configSet)) { - if (c.default !== undefined && !(field in p.values)) { - //@ts-ignore - p.values[field] = c.default; - } - } - } - /** - * Only parse the command line arguments passed in. - * Does not strip off the `node script.js` bits, so it must be just the - * arguments you wish to have parsed. - * Does not read from or write to the environment, or set defaults. - */ - parseRaw(args) { - if (args === process.argv) { - args = args.slice(process._eval !== undefined ? 1 : 2); - } - const options = toParseArgsOptionsConfig(this.#configSet); - const result = (0, parse_args_js_1.parseArgs)({ - args, - options, - // always strict, but using our own logic - strict: false, - allowPositionals: this.#allowPositionals, - tokens: true, - }); - const p = { - values: {}, - positionals: [], - }; - for (const token of result.tokens) { - if (token.kind === 'positional') { - p.positionals.push(token.value); - if (this.#options.stopAtPositional || - this.#options.stopAtPositionalTest?.(token.value)) { - p.positionals.push(...args.slice(token.index + 1)); - break; - } - } - else if (token.kind === 'option') { - let value = undefined; - if (token.name.startsWith('no-')) { - const my = this.#configSet[token.name]; - const pname = token.name.substring('no-'.length); - const pos = this.#configSet[pname]; - if (pos && - pos.type === 'boolean' && - (!my || - (my.type === 'boolean' && !!my.multiple === !!pos.multiple))) { - value = false; - token.name = pname; - } - } - const my = this.#configSet[token.name]; - if (!my) { - throw new Error(`Unknown option '${token.rawName}'. ` + - `To specify a positional argument starting with a '-', ` + - `place it at the end of the command after '--', as in ` + - `'-- ${token.rawName}'`, { - cause: { - found: token.rawName + (token.value ? `=${token.value}` : ''), - }, - }); - } - if (value === undefined) { - if (token.value === undefined) { - if (my.type !== 'boolean') { - throw new Error(`No value provided for ${token.rawName}, expected ${my.type}`, { - cause: { - name: token.rawName, - wanted: valueType(my), - }, - }); - } - value = true; - } - else { - if (my.type === 'boolean') { - throw new Error(`Flag ${token.rawName} does not take a value, received '${token.value}'`, { cause: { found: token } }); - } - if (my.type === 'string') { - value = token.value; - } - else { - value = +token.value; - if (value !== value) { - throw new Error(`Invalid value '${token.value}' provided for ` + - `'${token.rawName}' option, expected number`, { - cause: { - name: token.rawName, - found: token.value, - wanted: 'number', - }, - }); - } - } - } - } - if (my.multiple) { - const pv = p.values; - const tn = pv[token.name] ?? []; - pv[token.name] = tn; - tn.push(value); - } - else { - const pv = p.values; - pv[token.name] = value; - } - } - } - for (const [field, value] of Object.entries(p.values)) { - const valid = this.#configSet[field]?.validate; - const validOptions = this.#configSet[field]?.validOptions; - let cause; - if (validOptions && !isValidOption(value, validOptions)) { - cause = { name: field, found: value, validOptions: validOptions }; - } - if (valid && !valid(value)) { - cause = cause || { name: field, found: value }; - } - if (cause) { - throw new Error(`Invalid value provided for --${field}: ${JSON.stringify(value)}`, { cause }); - } - } - return p; - } - /** - * do not set fields as 'no-foo' if 'foo' exists and both are bools - * just set foo. - */ - #noNoFields(f, val, s = f) { - if (!f.startsWith('no-') || typeof val !== 'boolean') - return; - const yes = f.substring('no-'.length); - // recurse so we get the core config key we care about. - this.#noNoFields(yes, val, s); - if (this.#configSet[yes]?.type === 'boolean') { - throw new Error(`do not set '${s}', instead set '${yes}' as desired.`, { cause: { found: s, wanted: yes } }); - } - } - /** - * Validate that any arbitrary object is a valid configuration `values` - * object. Useful when loading config files or other sources. - */ - validate(o) { - if (!o || typeof o !== 'object') { - throw new Error('Invalid config: not an object', { - cause: { found: o }, - }); - } - const opts = o; - for (const field in o) { - const value = opts[field]; - /* c8 ignore next - for TS */ - if (value === undefined) - continue; - this.#noNoFields(field, value); - const config = this.#configSet[field]; - if (!config) { - throw new Error(`Unknown config option: ${field}`, { - cause: { found: field }, - }); - } - if (!isValidValue(value, config.type, !!config.multiple)) { - throw new Error(`Invalid value ${valueType(value)} for ${field}, expected ${valueType(config)}`, { - cause: { - name: field, - found: value, - wanted: valueType(config), - }, - }); - } - let cause; - if (config.validOptions && - !isValidOption(value, config.validOptions)) { - cause = { - name: field, - found: value, - validOptions: config.validOptions, - }; - } - if (config.validate && !config.validate(value)) { - cause = cause || { name: field, found: value }; - } - if (cause) { - throw new Error(`Invalid config value for ${field}: ${value}`, { - cause, - }); - } - } - } - writeEnv(p) { - if (!this.#env || !this.#envPrefix) - return; - for (const [field, value] of Object.entries(p.values)) { - const my = this.#configSet[field]; - this.#env[toEnvKey(this.#envPrefix, field)] = toEnvVal(value, my?.delim); - } - } - /** - * Add a heading to the usage output banner - */ - heading(text, level, { pre = false } = {}) { - if (level === undefined) { - level = this.#fields.some(r => isHeading(r)) ? 2 : 1; - } - this.#fields.push({ type: 'heading', text, level, pre }); - return this; - } - /** - * Add a long-form description to the usage output at this position. - */ - description(text, { pre } = {}) { - this.#fields.push({ type: 'description', text, pre }); - return this; - } - /** - * Add one or more number fields. - */ - num(fields) { - return this.#addFields(fields, num); - } - /** - * Add one or more multiple number fields. - */ - numList(fields) { - return this.#addFields(fields, numList); - } - /** - * Add one or more string option fields. - */ - opt(fields) { - return this.#addFields(fields, opt); - } - /** - * Add one or more multiple string option fields. - */ - optList(fields) { - return this.#addFields(fields, optList); - } - /** - * Add one or more flag fields. - */ - flag(fields) { - return this.#addFields(fields, flag); - } - /** - * Add one or more multiple flag fields. - */ - flagList(fields) { - return this.#addFields(fields, flagList); - } - /** - * Generic field definition method. Similar to flag/flagList/number/etc, - * but you must specify the `type` (and optionally `multiple` and `delim`) - * fields on each one, or Jack won't know how to define them. - */ - addFields(fields) { - const next = this; - for (const [name, field] of Object.entries(fields)) { - this.#validateName(name, field); - next.#fields.push({ - type: 'config', - name, - value: field, - }); - } - Object.assign(next.#configSet, fields); - return next; - } - #addFields(fields, fn) { - const next = this; - Object.assign(next.#configSet, Object.fromEntries(Object.entries(fields).map(([name, field]) => { - this.#validateName(name, field); - const option = fn(field); - next.#fields.push({ - type: 'config', - name, - value: option, - }); - return [name, option]; - }))); - return next; - } - #validateName(name, field) { - if (!/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$/.test(name)) { - throw new TypeError(`Invalid option name: ${name}, ` + - `must be '-' delimited ASCII alphanumeric`); - } - if (this.#configSet[name]) { - throw new TypeError(`Cannot redefine option ${field}`); - } - if (this.#shorts[name]) { - throw new TypeError(`Cannot redefine option ${name}, already ` + - `in use for ${this.#shorts[name]}`); - } - if (field.short) { - if (!/^[a-zA-Z0-9]$/.test(field.short)) { - throw new TypeError(`Invalid ${name} short option: ${field.short}, ` + - 'must be 1 ASCII alphanumeric character'); - } - if (this.#shorts[field.short]) { - throw new TypeError(`Invalid ${name} short option: ${field.short}, ` + - `already in use for ${this.#shorts[field.short]}`); - } - this.#shorts[field.short] = name; - this.#shorts[name] = name; - } - } - /** - * Return the usage banner for the given configuration - */ - usage() { - if (this.#usage) - return this.#usage; - let headingLevel = 1; - const ui = (0, cliui_1.default)({ width }); - const first = this.#fields[0]; - let start = first?.type === 'heading' ? 1 : 0; - if (first?.type === 'heading') { - ui.div({ - padding: [0, 0, 0, 0], - text: normalize(first.text), - }); - } - ui.div({ padding: [0, 0, 0, 0], text: 'Usage:' }); - if (this.#options.usage) { - ui.div({ - text: this.#options.usage, - padding: [0, 0, 0, 2], - }); - } - else { - const cmd = (0, node_path_1.basename)(String(process.argv[1])); - const shortFlags = []; - const shorts = []; - const flags = []; - const opts = []; - for (const [field, config] of Object.entries(this.#configSet)) { - if (config.short) { - if (config.type === 'boolean') - shortFlags.push(config.short); - else - shorts.push([config.short, config.hint || field]); - } - else { - if (config.type === 'boolean') - flags.push(field); - else - opts.push([field, config.hint || field]); - } - } - const sf = shortFlags.length ? ' -' + shortFlags.join('') : ''; - const so = shorts.map(([k, v]) => ` --${k}=<${v}>`).join(''); - const lf = flags.map(k => ` --${k}`).join(''); - const lo = opts.map(([k, v]) => ` --${k}=<${v}>`).join(''); - const usage = `${cmd}${sf}${so}${lf}${lo}`.trim(); - ui.div({ - text: usage, - padding: [0, 0, 0, 2], - }); - } - ui.div({ padding: [0, 0, 0, 0], text: '' }); - const maybeDesc = this.#fields[start]; - if (maybeDesc && isDescription(maybeDesc)) { - const print = normalize(maybeDesc.text, maybeDesc.pre); - start++; - ui.div({ padding: [0, 0, 0, 0], text: print }); - ui.div({ padding: [0, 0, 0, 0], text: '' }); - } - const { rows, maxWidth } = this.#usageRows(start); - // every heading/description after the first gets indented by 2 - // extra spaces. - for (const row of rows) { - if (row.left) { - // If the row is too long, don't wrap it - // Bump the right-hand side down a line to make room - const configIndent = indent(Math.max(headingLevel, 2)); - if (row.left.length > maxWidth - 3) { - ui.div({ text: row.left, padding: [0, 0, 0, configIndent] }); - ui.div({ text: row.text, padding: [0, 0, 0, maxWidth] }); - } - else { - ui.div({ - text: row.left, - padding: [0, 1, 0, configIndent], - width: maxWidth, - }, { padding: [0, 0, 0, 0], text: row.text }); - } - if (row.skipLine) { - ui.div({ padding: [0, 0, 0, 0], text: '' }); - } - } - else { - if (isHeading(row)) { - const { level } = row; - headingLevel = level; - // only h1 and h2 have bottom padding - // h3-h6 do not - const b = level <= 2 ? 1 : 0; - ui.div({ ...row, padding: [0, 0, b, indent(level)] }); - } - else { - ui.div({ ...row, padding: [0, 0, 1, indent(headingLevel + 1)] }); - } - } - } - return (this.#usage = ui.toString()); - } - /** - * Return the usage banner markdown for the given configuration - */ - usageMarkdown() { - if (this.#usageMarkdown) - return this.#usageMarkdown; - const out = []; - let headingLevel = 1; - const first = this.#fields[0]; - let start = first?.type === 'heading' ? 1 : 0; - if (first?.type === 'heading') { - out.push(`# ${normalizeOneLine(first.text)}`); - } - out.push('Usage:'); - if (this.#options.usage) { - out.push(normalizeMarkdown(this.#options.usage, true)); - } - else { - const cmd = (0, node_path_1.basename)(String(process.argv[1])); - const shortFlags = []; - const shorts = []; - const flags = []; - const opts = []; - for (const [field, config] of Object.entries(this.#configSet)) { - if (config.short) { - if (config.type === 'boolean') - shortFlags.push(config.short); - else - shorts.push([config.short, config.hint || field]); - } - else { - if (config.type === 'boolean') - flags.push(field); - else - opts.push([field, config.hint || field]); - } - } - const sf = shortFlags.length ? ' -' + shortFlags.join('') : ''; - const so = shorts.map(([k, v]) => ` --${k}=<${v}>`).join(''); - const lf = flags.map(k => ` --${k}`).join(''); - const lo = opts.map(([k, v]) => ` --${k}=<${v}>`).join(''); - const usage = `${cmd}${sf}${so}${lf}${lo}`.trim(); - out.push(normalizeMarkdown(usage, true)); - } - const maybeDesc = this.#fields[start]; - if (maybeDesc && isDescription(maybeDesc)) { - out.push(normalizeMarkdown(maybeDesc.text, maybeDesc.pre)); - start++; - } - const { rows } = this.#usageRows(start); - // heading level in markdown is number of # ahead of text - for (const row of rows) { - if (row.left) { - out.push('#'.repeat(headingLevel + 1) + - ' ' + - normalizeOneLine(row.left, true)); - if (row.text) - out.push(normalizeMarkdown(row.text)); - } - else if (isHeading(row)) { - const { level } = row; - headingLevel = level; - out.push(`${'#'.repeat(headingLevel)} ${normalizeOneLine(row.text, row.pre)}`); - } - else { - out.push(normalizeMarkdown(row.text, !!row.pre)); - } - } - return (this.#usageMarkdown = out.join('\n\n') + '\n'); - } - #usageRows(start) { - // turn each config type into a row, and figure out the width of the - // left hand indentation for the option descriptions. - let maxMax = Math.max(12, Math.min(26, Math.floor(width / 3))); - let maxWidth = 8; - let prev = undefined; - const rows = []; - for (const field of this.#fields.slice(start)) { - if (field.type !== 'config') { - if (prev?.type === 'config') - prev.skipLine = true; - prev = undefined; - field.text = normalize(field.text, !!field.pre); - rows.push(field); - continue; - } - const { value } = field; - const desc = value.description || ''; - const mult = value.multiple ? 'Can be set multiple times' : ''; - const opts = value.validOptions?.length ? - `Valid options:${value.validOptions.map(v => ` ${JSON.stringify(v)}`)}` - : ''; - const dmDelim = desc.includes('\n') ? '\n\n' : '\n'; - const extra = [opts, mult].join(dmDelim).trim(); - const text = (normalize(desc) + dmDelim + extra).trim(); - const hint = value.hint || - (value.type === 'number' ? 'n' - : value.type === 'string' ? field.name - : undefined); - const short = !value.short ? '' - : value.type === 'boolean' ? `-${value.short} ` - : `-${value.short}<${hint}> `; - const left = value.type === 'boolean' ? - `${short}--${field.name}` - : `${short}--${field.name}=<${hint}>`; - const row = { text, left, type: 'config' }; - if (text.length > width - maxMax) { - row.skipLine = true; - } - if (prev && left.length > maxMax) - prev.skipLine = true; - prev = row; - const len = left.length + 4; - if (len > maxWidth && len < maxMax) { - maxWidth = len; - } - rows.push(row); - } - return { rows, maxWidth }; - } - /** - * Return the configuration options as a plain object - */ - toJSON() { - return Object.fromEntries(Object.entries(this.#configSet).map(([field, def]) => [ - field, - { - type: def.type, - ...(def.multiple ? { multiple: true } : {}), - ...(def.delim ? { delim: def.delim } : {}), - ...(def.short ? { short: def.short } : {}), - ...(def.description ? - { description: normalize(def.description) } - : {}), - ...(def.validate ? { validate: def.validate } : {}), - ...(def.validOptions ? { validOptions: def.validOptions } : {}), - ...(def.default !== undefined ? { default: def.default } : {}), - ...(def.hint ? { hint: def.hint } : {}), - }, - ])); - } - /** - * Custom printer for `util.inspect` - */ - [node_util_1.inspect.custom](_, options) { - return `Jack ${(0, node_util_1.inspect)(this.toJSON(), options)}`; - } -} -exports.Jack = Jack; -// Unwrap and un-indent, so we can wrap description -// strings however makes them look nice in the code. -const normalize = (s, pre = false) => { - if (pre) - // prepend a ZWSP to each line so cliui doesn't strip it. - return s - .split('\n') - .map(l => `\u200b${l}`) - .join('\n'); - return s - .split(/^\s*```\s*$/gm) - .map((s, i) => { - if (i % 2 === 1) { - if (!s.trim()) { - return `\`\`\`\n\`\`\`\n`; - } - // outdent the ``` blocks, but preserve whitespace otherwise. - const split = s.split('\n'); - // throw out the \n at the start and end - split.pop(); - split.shift(); - const si = split.reduce((shortest, l) => { - /* c8 ignore next */ - const ind = l.match(/^\s*/)?.[0] ?? ''; - if (ind.length) - return Math.min(ind.length, shortest); - else - return shortest; - }, Infinity); - /* c8 ignore next */ - const i = isFinite(si) ? si : 0; - return ('\n```\n' + - split.map(s => `\u200b${s.substring(i)}`).join('\n') + - '\n```\n'); - } - return (s - // remove single line breaks, except for lists - .replace(/([^\n])\n[ \t]*([^\n])/g, (_, $1, $2) => !/^[-*]/.test($2) ? `${$1} ${$2}` : `${$1}\n${$2}`) - // normalize mid-line whitespace - .replace(/([^\n])[ \t]+([^\n])/g, '$1 $2') - // two line breaks are enough - .replace(/\n{3,}/g, '\n\n') - // remove any spaces at the start of a line - .replace(/\n[ \t]+/g, '\n') - .trim()); - }) - .join('\n'); -}; -// normalize for markdown printing, remove leading spaces on lines -const normalizeMarkdown = (s, pre = false) => { - const n = normalize(s, pre).replace(/\\/g, '\\\\'); - return pre ? - `\`\`\`\n${n.replace(/\u200b/g, '')}\n\`\`\`` - : n.replace(/\n +/g, '\n').trim(); -}; -const normalizeOneLine = (s, pre = false) => { - const n = normalize(s, pre) - .replace(/[\s\u200b]+/g, ' ') - .trim(); - return pre ? `\`${n}\`` : n; -}; -/** - * Main entry point. Create and return a {@link Jack} object. - */ -const jack = (options = {}) => new Jack(options); -exports.jack = jack; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/commonjs/package.json b/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/commonjs/package.json deleted file mode 100644 index 5bbefffbabee39..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/commonjs/parse-args.js b/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/commonjs/parse-args.js deleted file mode 100644 index fc918a41fe603d..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/commonjs/parse-args.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : 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; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.parseArgs = void 0; -const util = __importStar(require("util")); -const pv = (typeof process === 'object' && - !!process && - typeof process.version === 'string') ? - process.version - : 'v0.0.0'; -const pvs = pv - .replace(/^v/, '') - .split('.') - .map(s => parseInt(s, 10)); -/* c8 ignore start */ -const [major = 0, minor = 0] = pvs; -/* c8 ignore stop */ -let { parseArgs: pa } = util; -/* c8 ignore start */ -if (!pa || - major < 16 || - (major === 18 && minor < 11) || - (major === 16 && minor < 19)) { - /* c8 ignore stop */ - pa = require('@pkgjs/parseargs').parseArgs; -} -exports.parseArgs = pa; -//# sourceMappingURL=parse-args-cjs.cjs.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/esm/index.js b/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/esm/index.js deleted file mode 100644 index 78fdfa8155472a..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/esm/index.js +++ /dev/null @@ -1,1000 +0,0 @@ -import { inspect } from 'node:util'; -import { parseArgs } from './parse-args.js'; -// it's a tiny API, just cast it inline, it's fine -//@ts-ignore -import cliui from '@isaacs/cliui'; -import { basename } from 'node:path'; -const width = Math.min((process && process.stdout && process.stdout.columns) || 80, 80); -// indentation spaces from heading level -const indent = (n) => (n - 1) * 2; -const toEnvKey = (pref, key) => { - return [pref, key.replace(/[^a-zA-Z0-9]+/g, ' ')] - .join(' ') - .trim() - .toUpperCase() - .replace(/ /g, '_'); -}; -const toEnvVal = (value, delim = '\n') => { - const str = typeof value === 'string' ? value - : typeof value === 'boolean' ? - value ? '1' - : '0' - : typeof value === 'number' ? String(value) - : Array.isArray(value) ? - value.map((v) => toEnvVal(v)).join(delim) - : /* c8 ignore start */ undefined; - if (typeof str !== 'string') { - throw new Error(`could not serialize value to environment: ${JSON.stringify(value)}`); - } - /* c8 ignore stop */ - return str; -}; -const fromEnvVal = (env, type, multiple, delim = '\n') => (multiple ? - env ? env.split(delim).map(v => fromEnvVal(v, type, false)) - : [] - : type === 'string' ? env - : type === 'boolean' ? env === '1' - : +env.trim()); -export const isConfigType = (t) => typeof t === 'string' && - (t === 'string' || t === 'number' || t === 'boolean'); -const undefOrType = (v, t) => v === undefined || typeof v === t; -const undefOrTypeArray = (v, t) => v === undefined || (Array.isArray(v) && v.every(x => typeof x === t)); -const isValidOption = (v, vo) => Array.isArray(v) ? v.every(x => isValidOption(x, vo)) : vo.includes(v); -// print the value type, for error message reporting -const valueType = (v) => typeof v === 'string' ? 'string' - : typeof v === 'boolean' ? 'boolean' - : typeof v === 'number' ? 'number' - : Array.isArray(v) ? - joinTypes([...new Set(v.map(v => valueType(v)))]) + '[]' - : `${v.type}${v.multiple ? '[]' : ''}`; -const joinTypes = (types) => types.length === 1 && typeof types[0] === 'string' ? - types[0] - : `(${types.join('|')})`; -const isValidValue = (v, type, multi) => { - if (multi) { - if (!Array.isArray(v)) - return false; - return !v.some((v) => !isValidValue(v, type, false)); - } - if (Array.isArray(v)) - return false; - return typeof v === type; -}; -export const isConfigOption = (o, type, multi) => !!o && - typeof o === 'object' && - isConfigType(o.type) && - o.type === type && - undefOrType(o.short, 'string') && - undefOrType(o.description, 'string') && - undefOrType(o.hint, 'string') && - undefOrType(o.validate, 'function') && - (o.type === 'boolean' ? - o.validOptions === undefined - : undefOrTypeArray(o.validOptions, o.type)) && - (o.default === undefined || isValidValue(o.default, type, multi)) && - !!o.multiple === multi; -function num(o = {}) { - const { default: def, validate: val, validOptions, ...rest } = o; - if (def !== undefined && !isValidValue(def, 'number', false)) { - throw new TypeError('invalid default value', { - cause: { - found: def, - wanted: 'number', - }, - }); - } - if (!undefOrTypeArray(validOptions, 'number')) { - throw new TypeError('invalid validOptions', { - cause: { - found: validOptions, - wanted: 'number[]', - }, - }); - } - const validate = val ? - val - : undefined; - return { - ...rest, - default: def, - validate, - validOptions, - type: 'number', - multiple: false, - }; -} -function numList(o = {}) { - const { default: def, validate: val, validOptions, ...rest } = o; - if (def !== undefined && !isValidValue(def, 'number', true)) { - throw new TypeError('invalid default value', { - cause: { - found: def, - wanted: 'number[]', - }, - }); - } - if (!undefOrTypeArray(validOptions, 'number')) { - throw new TypeError('invalid validOptions', { - cause: { - found: validOptions, - wanted: 'number[]', - }, - }); - } - const validate = val ? - val - : undefined; - return { - ...rest, - default: def, - validate, - validOptions, - type: 'number', - multiple: true, - }; -} -function opt(o = {}) { - const { default: def, validate: val, validOptions, ...rest } = o; - if (def !== undefined && !isValidValue(def, 'string', false)) { - throw new TypeError('invalid default value', { - cause: { - found: def, - wanted: 'string', - }, - }); - } - if (!undefOrTypeArray(validOptions, 'string')) { - throw new TypeError('invalid validOptions', { - cause: { - found: validOptions, - wanted: 'string[]', - }, - }); - } - const validate = val ? - val - : undefined; - return { - ...rest, - default: def, - validate, - validOptions, - type: 'string', - multiple: false, - }; -} -function optList(o = {}) { - const { default: def, validate: val, validOptions, ...rest } = o; - if (def !== undefined && !isValidValue(def, 'string', true)) { - throw new TypeError('invalid default value', { - cause: { - found: def, - wanted: 'string[]', - }, - }); - } - if (!undefOrTypeArray(validOptions, 'string')) { - throw new TypeError('invalid validOptions', { - cause: { - found: validOptions, - wanted: 'string[]', - }, - }); - } - const validate = val ? - val - : undefined; - return { - ...rest, - default: def, - validate, - validOptions, - type: 'string', - multiple: true, - }; -} -function flag(o = {}) { - const { hint, default: def, validate: val, ...rest } = o; - delete rest.validOptions; - if (def !== undefined && !isValidValue(def, 'boolean', false)) { - throw new TypeError('invalid default value'); - } - const validate = val ? - val - : undefined; - if (hint !== undefined) { - throw new TypeError('cannot provide hint for flag'); - } - return { - ...rest, - default: def, - validate, - type: 'boolean', - multiple: false, - }; -} -function flagList(o = {}) { - const { hint, default: def, validate: val, ...rest } = o; - delete rest.validOptions; - if (def !== undefined && !isValidValue(def, 'boolean', true)) { - throw new TypeError('invalid default value'); - } - const validate = val ? - val - : undefined; - if (hint !== undefined) { - throw new TypeError('cannot provide hint for flag list'); - } - return { - ...rest, - default: def, - validate, - type: 'boolean', - multiple: true, - }; -} -const toParseArgsOptionsConfig = (options) => { - const c = {}; - for (const longOption in options) { - const config = options[longOption]; - /* c8 ignore start */ - if (!config) { - throw new Error('config must be an object: ' + longOption); - } - /* c8 ignore start */ - if (isConfigOption(config, 'number', true)) { - c[longOption] = { - type: 'string', - multiple: true, - default: config.default?.map(c => String(c)), - }; - } - else if (isConfigOption(config, 'number', false)) { - c[longOption] = { - type: 'string', - multiple: false, - default: config.default === undefined ? - undefined - : String(config.default), - }; - } - else { - const conf = config; - c[longOption] = { - type: conf.type, - multiple: !!conf.multiple, - default: conf.default, - }; - } - const clo = c[longOption]; - if (typeof config.short === 'string') { - clo.short = config.short; - } - if (config.type === 'boolean' && - !longOption.startsWith('no-') && - !options[`no-${longOption}`]) { - c[`no-${longOption}`] = { - type: 'boolean', - multiple: config.multiple, - }; - } - } - return c; -}; -const isHeading = (r) => r.type === 'heading'; -const isDescription = (r) => r.type === 'description'; -/** - * Class returned by the {@link jack} function and all configuration - * definition methods. This is what gets chained together. - */ -export class Jack { - #configSet; - #shorts; - #options; - #fields = []; - #env; - #envPrefix; - #allowPositionals; - #usage; - #usageMarkdown; - constructor(options = {}) { - this.#options = options; - this.#allowPositionals = options.allowPositionals !== false; - this.#env = - this.#options.env === undefined ? process.env : this.#options.env; - this.#envPrefix = options.envPrefix; - // We need to fib a little, because it's always the same object, but it - // starts out as having an empty config set. Then each method that adds - // fields returns `this as Jack` - this.#configSet = Object.create(null); - this.#shorts = Object.create(null); - } - /** - * Set the default value (which will still be overridden by env or cli) - * as if from a parsed config file. The optional `source` param, if - * provided, will be included in error messages if a value is invalid or - * unknown. - */ - setConfigValues(values, source = '') { - try { - this.validate(values); - } - catch (er) { - const e = er; - if (source && e && typeof e === 'object') { - if (e.cause && typeof e.cause === 'object') { - Object.assign(e.cause, { path: source }); - } - else { - e.cause = { path: source }; - } - } - throw e; - } - for (const [field, value] of Object.entries(values)) { - const my = this.#configSet[field]; - // already validated, just for TS's benefit - /* c8 ignore start */ - if (!my) { - throw new Error('unexpected field in config set: ' + field, { - cause: { found: field }, - }); - } - /* c8 ignore stop */ - my.default = value; - } - return this; - } - /** - * Parse a string of arguments, and return the resulting - * `{ values, positionals }` object. - * - * If an {@link JackOptions#envPrefix} is set, then it will read default - * values from the environment, and write the resulting values back - * to the environment as well. - * - * Environment values always take precedence over any other value, except - * an explicit CLI setting. - */ - parse(args = process.argv) { - this.loadEnvDefaults(); - const p = this.parseRaw(args); - this.applyDefaults(p); - this.writeEnv(p); - return p; - } - loadEnvDefaults() { - if (this.#envPrefix) { - for (const [field, my] of Object.entries(this.#configSet)) { - const ek = toEnvKey(this.#envPrefix, field); - const env = this.#env[ek]; - if (env !== undefined) { - my.default = fromEnvVal(env, my.type, !!my.multiple, my.delim); - } - } - } - } - applyDefaults(p) { - for (const [field, c] of Object.entries(this.#configSet)) { - if (c.default !== undefined && !(field in p.values)) { - //@ts-ignore - p.values[field] = c.default; - } - } - } - /** - * Only parse the command line arguments passed in. - * Does not strip off the `node script.js` bits, so it must be just the - * arguments you wish to have parsed. - * Does not read from or write to the environment, or set defaults. - */ - parseRaw(args) { - if (args === process.argv) { - args = args.slice(process._eval !== undefined ? 1 : 2); - } - const options = toParseArgsOptionsConfig(this.#configSet); - const result = parseArgs({ - args, - options, - // always strict, but using our own logic - strict: false, - allowPositionals: this.#allowPositionals, - tokens: true, - }); - const p = { - values: {}, - positionals: [], - }; - for (const token of result.tokens) { - if (token.kind === 'positional') { - p.positionals.push(token.value); - if (this.#options.stopAtPositional || - this.#options.stopAtPositionalTest?.(token.value)) { - p.positionals.push(...args.slice(token.index + 1)); - break; - } - } - else if (token.kind === 'option') { - let value = undefined; - if (token.name.startsWith('no-')) { - const my = this.#configSet[token.name]; - const pname = token.name.substring('no-'.length); - const pos = this.#configSet[pname]; - if (pos && - pos.type === 'boolean' && - (!my || - (my.type === 'boolean' && !!my.multiple === !!pos.multiple))) { - value = false; - token.name = pname; - } - } - const my = this.#configSet[token.name]; - if (!my) { - throw new Error(`Unknown option '${token.rawName}'. ` + - `To specify a positional argument starting with a '-', ` + - `place it at the end of the command after '--', as in ` + - `'-- ${token.rawName}'`, { - cause: { - found: token.rawName + (token.value ? `=${token.value}` : ''), - }, - }); - } - if (value === undefined) { - if (token.value === undefined) { - if (my.type !== 'boolean') { - throw new Error(`No value provided for ${token.rawName}, expected ${my.type}`, { - cause: { - name: token.rawName, - wanted: valueType(my), - }, - }); - } - value = true; - } - else { - if (my.type === 'boolean') { - throw new Error(`Flag ${token.rawName} does not take a value, received '${token.value}'`, { cause: { found: token } }); - } - if (my.type === 'string') { - value = token.value; - } - else { - value = +token.value; - if (value !== value) { - throw new Error(`Invalid value '${token.value}' provided for ` + - `'${token.rawName}' option, expected number`, { - cause: { - name: token.rawName, - found: token.value, - wanted: 'number', - }, - }); - } - } - } - } - if (my.multiple) { - const pv = p.values; - const tn = pv[token.name] ?? []; - pv[token.name] = tn; - tn.push(value); - } - else { - const pv = p.values; - pv[token.name] = value; - } - } - } - for (const [field, value] of Object.entries(p.values)) { - const valid = this.#configSet[field]?.validate; - const validOptions = this.#configSet[field]?.validOptions; - let cause; - if (validOptions && !isValidOption(value, validOptions)) { - cause = { name: field, found: value, validOptions: validOptions }; - } - if (valid && !valid(value)) { - cause = cause || { name: field, found: value }; - } - if (cause) { - throw new Error(`Invalid value provided for --${field}: ${JSON.stringify(value)}`, { cause }); - } - } - return p; - } - /** - * do not set fields as 'no-foo' if 'foo' exists and both are bools - * just set foo. - */ - #noNoFields(f, val, s = f) { - if (!f.startsWith('no-') || typeof val !== 'boolean') - return; - const yes = f.substring('no-'.length); - // recurse so we get the core config key we care about. - this.#noNoFields(yes, val, s); - if (this.#configSet[yes]?.type === 'boolean') { - throw new Error(`do not set '${s}', instead set '${yes}' as desired.`, { cause: { found: s, wanted: yes } }); - } - } - /** - * Validate that any arbitrary object is a valid configuration `values` - * object. Useful when loading config files or other sources. - */ - validate(o) { - if (!o || typeof o !== 'object') { - throw new Error('Invalid config: not an object', { - cause: { found: o }, - }); - } - const opts = o; - for (const field in o) { - const value = opts[field]; - /* c8 ignore next - for TS */ - if (value === undefined) - continue; - this.#noNoFields(field, value); - const config = this.#configSet[field]; - if (!config) { - throw new Error(`Unknown config option: ${field}`, { - cause: { found: field }, - }); - } - if (!isValidValue(value, config.type, !!config.multiple)) { - throw new Error(`Invalid value ${valueType(value)} for ${field}, expected ${valueType(config)}`, { - cause: { - name: field, - found: value, - wanted: valueType(config), - }, - }); - } - let cause; - if (config.validOptions && - !isValidOption(value, config.validOptions)) { - cause = { - name: field, - found: value, - validOptions: config.validOptions, - }; - } - if (config.validate && !config.validate(value)) { - cause = cause || { name: field, found: value }; - } - if (cause) { - throw new Error(`Invalid config value for ${field}: ${value}`, { - cause, - }); - } - } - } - writeEnv(p) { - if (!this.#env || !this.#envPrefix) - return; - for (const [field, value] of Object.entries(p.values)) { - const my = this.#configSet[field]; - this.#env[toEnvKey(this.#envPrefix, field)] = toEnvVal(value, my?.delim); - } - } - /** - * Add a heading to the usage output banner - */ - heading(text, level, { pre = false } = {}) { - if (level === undefined) { - level = this.#fields.some(r => isHeading(r)) ? 2 : 1; - } - this.#fields.push({ type: 'heading', text, level, pre }); - return this; - } - /** - * Add a long-form description to the usage output at this position. - */ - description(text, { pre } = {}) { - this.#fields.push({ type: 'description', text, pre }); - return this; - } - /** - * Add one or more number fields. - */ - num(fields) { - return this.#addFields(fields, num); - } - /** - * Add one or more multiple number fields. - */ - numList(fields) { - return this.#addFields(fields, numList); - } - /** - * Add one or more string option fields. - */ - opt(fields) { - return this.#addFields(fields, opt); - } - /** - * Add one or more multiple string option fields. - */ - optList(fields) { - return this.#addFields(fields, optList); - } - /** - * Add one or more flag fields. - */ - flag(fields) { - return this.#addFields(fields, flag); - } - /** - * Add one or more multiple flag fields. - */ - flagList(fields) { - return this.#addFields(fields, flagList); - } - /** - * Generic field definition method. Similar to flag/flagList/number/etc, - * but you must specify the `type` (and optionally `multiple` and `delim`) - * fields on each one, or Jack won't know how to define them. - */ - addFields(fields) { - const next = this; - for (const [name, field] of Object.entries(fields)) { - this.#validateName(name, field); - next.#fields.push({ - type: 'config', - name, - value: field, - }); - } - Object.assign(next.#configSet, fields); - return next; - } - #addFields(fields, fn) { - const next = this; - Object.assign(next.#configSet, Object.fromEntries(Object.entries(fields).map(([name, field]) => { - this.#validateName(name, field); - const option = fn(field); - next.#fields.push({ - type: 'config', - name, - value: option, - }); - return [name, option]; - }))); - return next; - } - #validateName(name, field) { - if (!/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$/.test(name)) { - throw new TypeError(`Invalid option name: ${name}, ` + - `must be '-' delimited ASCII alphanumeric`); - } - if (this.#configSet[name]) { - throw new TypeError(`Cannot redefine option ${field}`); - } - if (this.#shorts[name]) { - throw new TypeError(`Cannot redefine option ${name}, already ` + - `in use for ${this.#shorts[name]}`); - } - if (field.short) { - if (!/^[a-zA-Z0-9]$/.test(field.short)) { - throw new TypeError(`Invalid ${name} short option: ${field.short}, ` + - 'must be 1 ASCII alphanumeric character'); - } - if (this.#shorts[field.short]) { - throw new TypeError(`Invalid ${name} short option: ${field.short}, ` + - `already in use for ${this.#shorts[field.short]}`); - } - this.#shorts[field.short] = name; - this.#shorts[name] = name; - } - } - /** - * Return the usage banner for the given configuration - */ - usage() { - if (this.#usage) - return this.#usage; - let headingLevel = 1; - const ui = cliui({ width }); - const first = this.#fields[0]; - let start = first?.type === 'heading' ? 1 : 0; - if (first?.type === 'heading') { - ui.div({ - padding: [0, 0, 0, 0], - text: normalize(first.text), - }); - } - ui.div({ padding: [0, 0, 0, 0], text: 'Usage:' }); - if (this.#options.usage) { - ui.div({ - text: this.#options.usage, - padding: [0, 0, 0, 2], - }); - } - else { - const cmd = basename(String(process.argv[1])); - const shortFlags = []; - const shorts = []; - const flags = []; - const opts = []; - for (const [field, config] of Object.entries(this.#configSet)) { - if (config.short) { - if (config.type === 'boolean') - shortFlags.push(config.short); - else - shorts.push([config.short, config.hint || field]); - } - else { - if (config.type === 'boolean') - flags.push(field); - else - opts.push([field, config.hint || field]); - } - } - const sf = shortFlags.length ? ' -' + shortFlags.join('') : ''; - const so = shorts.map(([k, v]) => ` --${k}=<${v}>`).join(''); - const lf = flags.map(k => ` --${k}`).join(''); - const lo = opts.map(([k, v]) => ` --${k}=<${v}>`).join(''); - const usage = `${cmd}${sf}${so}${lf}${lo}`.trim(); - ui.div({ - text: usage, - padding: [0, 0, 0, 2], - }); - } - ui.div({ padding: [0, 0, 0, 0], text: '' }); - const maybeDesc = this.#fields[start]; - if (maybeDesc && isDescription(maybeDesc)) { - const print = normalize(maybeDesc.text, maybeDesc.pre); - start++; - ui.div({ padding: [0, 0, 0, 0], text: print }); - ui.div({ padding: [0, 0, 0, 0], text: '' }); - } - const { rows, maxWidth } = this.#usageRows(start); - // every heading/description after the first gets indented by 2 - // extra spaces. - for (const row of rows) { - if (row.left) { - // If the row is too long, don't wrap it - // Bump the right-hand side down a line to make room - const configIndent = indent(Math.max(headingLevel, 2)); - if (row.left.length > maxWidth - 3) { - ui.div({ text: row.left, padding: [0, 0, 0, configIndent] }); - ui.div({ text: row.text, padding: [0, 0, 0, maxWidth] }); - } - else { - ui.div({ - text: row.left, - padding: [0, 1, 0, configIndent], - width: maxWidth, - }, { padding: [0, 0, 0, 0], text: row.text }); - } - if (row.skipLine) { - ui.div({ padding: [0, 0, 0, 0], text: '' }); - } - } - else { - if (isHeading(row)) { - const { level } = row; - headingLevel = level; - // only h1 and h2 have bottom padding - // h3-h6 do not - const b = level <= 2 ? 1 : 0; - ui.div({ ...row, padding: [0, 0, b, indent(level)] }); - } - else { - ui.div({ ...row, padding: [0, 0, 1, indent(headingLevel + 1)] }); - } - } - } - return (this.#usage = ui.toString()); - } - /** - * Return the usage banner markdown for the given configuration - */ - usageMarkdown() { - if (this.#usageMarkdown) - return this.#usageMarkdown; - const out = []; - let headingLevel = 1; - const first = this.#fields[0]; - let start = first?.type === 'heading' ? 1 : 0; - if (first?.type === 'heading') { - out.push(`# ${normalizeOneLine(first.text)}`); - } - out.push('Usage:'); - if (this.#options.usage) { - out.push(normalizeMarkdown(this.#options.usage, true)); - } - else { - const cmd = basename(String(process.argv[1])); - const shortFlags = []; - const shorts = []; - const flags = []; - const opts = []; - for (const [field, config] of Object.entries(this.#configSet)) { - if (config.short) { - if (config.type === 'boolean') - shortFlags.push(config.short); - else - shorts.push([config.short, config.hint || field]); - } - else { - if (config.type === 'boolean') - flags.push(field); - else - opts.push([field, config.hint || field]); - } - } - const sf = shortFlags.length ? ' -' + shortFlags.join('') : ''; - const so = shorts.map(([k, v]) => ` --${k}=<${v}>`).join(''); - const lf = flags.map(k => ` --${k}`).join(''); - const lo = opts.map(([k, v]) => ` --${k}=<${v}>`).join(''); - const usage = `${cmd}${sf}${so}${lf}${lo}`.trim(); - out.push(normalizeMarkdown(usage, true)); - } - const maybeDesc = this.#fields[start]; - if (maybeDesc && isDescription(maybeDesc)) { - out.push(normalizeMarkdown(maybeDesc.text, maybeDesc.pre)); - start++; - } - const { rows } = this.#usageRows(start); - // heading level in markdown is number of # ahead of text - for (const row of rows) { - if (row.left) { - out.push('#'.repeat(headingLevel + 1) + - ' ' + - normalizeOneLine(row.left, true)); - if (row.text) - out.push(normalizeMarkdown(row.text)); - } - else if (isHeading(row)) { - const { level } = row; - headingLevel = level; - out.push(`${'#'.repeat(headingLevel)} ${normalizeOneLine(row.text, row.pre)}`); - } - else { - out.push(normalizeMarkdown(row.text, !!row.pre)); - } - } - return (this.#usageMarkdown = out.join('\n\n') + '\n'); - } - #usageRows(start) { - // turn each config type into a row, and figure out the width of the - // left hand indentation for the option descriptions. - let maxMax = Math.max(12, Math.min(26, Math.floor(width / 3))); - let maxWidth = 8; - let prev = undefined; - const rows = []; - for (const field of this.#fields.slice(start)) { - if (field.type !== 'config') { - if (prev?.type === 'config') - prev.skipLine = true; - prev = undefined; - field.text = normalize(field.text, !!field.pre); - rows.push(field); - continue; - } - const { value } = field; - const desc = value.description || ''; - const mult = value.multiple ? 'Can be set multiple times' : ''; - const opts = value.validOptions?.length ? - `Valid options:${value.validOptions.map(v => ` ${JSON.stringify(v)}`)}` - : ''; - const dmDelim = desc.includes('\n') ? '\n\n' : '\n'; - const extra = [opts, mult].join(dmDelim).trim(); - const text = (normalize(desc) + dmDelim + extra).trim(); - const hint = value.hint || - (value.type === 'number' ? 'n' - : value.type === 'string' ? field.name - : undefined); - const short = !value.short ? '' - : value.type === 'boolean' ? `-${value.short} ` - : `-${value.short}<${hint}> `; - const left = value.type === 'boolean' ? - `${short}--${field.name}` - : `${short}--${field.name}=<${hint}>`; - const row = { text, left, type: 'config' }; - if (text.length > width - maxMax) { - row.skipLine = true; - } - if (prev && left.length > maxMax) - prev.skipLine = true; - prev = row; - const len = left.length + 4; - if (len > maxWidth && len < maxMax) { - maxWidth = len; - } - rows.push(row); - } - return { rows, maxWidth }; - } - /** - * Return the configuration options as a plain object - */ - toJSON() { - return Object.fromEntries(Object.entries(this.#configSet).map(([field, def]) => [ - field, - { - type: def.type, - ...(def.multiple ? { multiple: true } : {}), - ...(def.delim ? { delim: def.delim } : {}), - ...(def.short ? { short: def.short } : {}), - ...(def.description ? - { description: normalize(def.description) } - : {}), - ...(def.validate ? { validate: def.validate } : {}), - ...(def.validOptions ? { validOptions: def.validOptions } : {}), - ...(def.default !== undefined ? { default: def.default } : {}), - ...(def.hint ? { hint: def.hint } : {}), - }, - ])); - } - /** - * Custom printer for `util.inspect` - */ - [inspect.custom](_, options) { - return `Jack ${inspect(this.toJSON(), options)}`; - } -} -// Unwrap and un-indent, so we can wrap description -// strings however makes them look nice in the code. -const normalize = (s, pre = false) => { - if (pre) - // prepend a ZWSP to each line so cliui doesn't strip it. - return s - .split('\n') - .map(l => `\u200b${l}`) - .join('\n'); - return s - .split(/^\s*```\s*$/gm) - .map((s, i) => { - if (i % 2 === 1) { - if (!s.trim()) { - return `\`\`\`\n\`\`\`\n`; - } - // outdent the ``` blocks, but preserve whitespace otherwise. - const split = s.split('\n'); - // throw out the \n at the start and end - split.pop(); - split.shift(); - const si = split.reduce((shortest, l) => { - /* c8 ignore next */ - const ind = l.match(/^\s*/)?.[0] ?? ''; - if (ind.length) - return Math.min(ind.length, shortest); - else - return shortest; - }, Infinity); - /* c8 ignore next */ - const i = isFinite(si) ? si : 0; - return ('\n```\n' + - split.map(s => `\u200b${s.substring(i)}`).join('\n') + - '\n```\n'); - } - return (s - // remove single line breaks, except for lists - .replace(/([^\n])\n[ \t]*([^\n])/g, (_, $1, $2) => !/^[-*]/.test($2) ? `${$1} ${$2}` : `${$1}\n${$2}`) - // normalize mid-line whitespace - .replace(/([^\n])[ \t]+([^\n])/g, '$1 $2') - // two line breaks are enough - .replace(/\n{3,}/g, '\n\n') - // remove any spaces at the start of a line - .replace(/\n[ \t]+/g, '\n') - .trim()); - }) - .join('\n'); -}; -// normalize for markdown printing, remove leading spaces on lines -const normalizeMarkdown = (s, pre = false) => { - const n = normalize(s, pre).replace(/\\/g, '\\\\'); - return pre ? - `\`\`\`\n${n.replace(/\u200b/g, '')}\n\`\`\`` - : n.replace(/\n +/g, '\n').trim(); -}; -const normalizeOneLine = (s, pre = false) => { - const n = normalize(s, pre) - .replace(/[\s\u200b]+/g, ' ') - .trim(); - return pre ? `\`${n}\`` : n; -}; -/** - * Main entry point. Create and return a {@link Jack} object. - */ -export const jack = (options = {}) => new Jack(options); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/esm/package.json b/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/esm/package.json deleted file mode 100644 index 3dbc1ca591c055..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/esm/parse-args.js b/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/esm/parse-args.js deleted file mode 100644 index a4be7153de1f17..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/jackspeak/dist/esm/parse-args.js +++ /dev/null @@ -1,26 +0,0 @@ -import * as util from 'util'; -const pv = (typeof process === 'object' && - !!process && - typeof process.version === 'string') ? - process.version - : 'v0.0.0'; -const pvs = pv - .replace(/^v/, '') - .split('.') - .map(s => parseInt(s, 10)); -/* c8 ignore start */ -const [major = 0, minor = 0] = pvs; -/* c8 ignore stop */ -let { parseArgs: pa, } = util; -/* c8 ignore start - version specific */ -if (!pa || - major < 16 || - (major === 18 && minor < 11) || - (major === 16 && minor < 19)) { - // Ignore because we will clobber it for commonjs - //@ts-ignore - pa = (await import('@pkgjs/parseargs')).parseArgs; -} -/* c8 ignore stop */ -export const parseArgs = pa; -//# sourceMappingURL=parse-args.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/jackspeak/package.json b/deps/npm/node_modules/node-gyp/node_modules/jackspeak/package.json deleted file mode 100644 index 51eaabdf354691..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/jackspeak/package.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "name": "jackspeak", - "publishConfig": { - "tag": "v3-legacy" - }, - "version": "3.4.3", - "description": "A very strict and proper argument parser.", - "tshy": { - "main": true, - "exports": { - "./package.json": "./package.json", - ".": "./src/index.js" - } - }, - "main": "./dist/commonjs/index.js", - "types": "./dist/commonjs/index.d.ts", - "type": "module", - "exports": { - "./package.json": "./package.json", - ".": { - "import": { - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - } - }, - "files": [ - "dist" - ], - "scripts": { - "build-examples": "for i in examples/*.js ; do node $i -h > ${i/.js/.txt}; done", - "preversion": "npm test", - "postversion": "npm publish", - "prepublishOnly": "git push origin --follow-tags", - "prepare": "tshy", - "pretest": "npm run prepare", - "presnap": "npm run prepare", - "test": "tap", - "snap": "tap", - "format": "prettier --write . --log-level warn", - "typedoc": "typedoc --tsconfig .tshy/esm.json ./src/*.ts" - }, - "license": "BlueOak-1.0.0", - "prettier": { - "experimentalTernaries": true, - "semi": false, - "printWidth": 75, - "tabWidth": 2, - "useTabs": false, - "singleQuote": true, - "jsxSingleQuote": false, - "bracketSameLine": true, - "arrowParens": "avoid", - "endOfLine": "lf" - }, - "devDependencies": { - "@types/node": "^20.7.0", - "@types/pkgjs__parseargs": "^0.10.1", - "prettier": "^3.2.5", - "tap": "^18.8.0", - "tshy": "^1.14.0", - "typedoc": "^0.25.1", - "typescript": "^5.2.2" - }, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/isaacs/jackspeak.git" - }, - "keywords": [ - "argument", - "parser", - "args", - "option", - "flag", - "cli", - "command", - "line", - "parse", - "parsing" - ], - "author": "Isaac Z. Schlueter ", - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/commonjs/index.js b/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/commonjs/index.js deleted file mode 100644 index 9df0f71fcfb65f..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/commonjs/index.js +++ /dev/null @@ -1,1546 +0,0 @@ -"use strict"; -/** - * @module LRUCache - */ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LRUCache = void 0; -const perf = typeof performance === 'object' && - performance && - typeof performance.now === 'function' - ? performance - : Date; -const warned = new Set(); -/* c8 ignore start */ -const PROCESS = (typeof process === 'object' && !!process ? process : {}); -/* c8 ignore start */ -const emitWarning = (msg, type, code, fn) => { - typeof PROCESS.emitWarning === 'function' - ? PROCESS.emitWarning(msg, type, code, fn) - : console.error(`[${code}] ${type}: ${msg}`); -}; -let AC = globalThis.AbortController; -let AS = globalThis.AbortSignal; -/* c8 ignore start */ -if (typeof AC === 'undefined') { - //@ts-ignore - AS = class AbortSignal { - onabort; - _onabort = []; - reason; - aborted = false; - addEventListener(_, fn) { - this._onabort.push(fn); - } - }; - //@ts-ignore - AC = class AbortController { - constructor() { - warnACPolyfill(); - } - signal = new AS(); - abort(reason) { - if (this.signal.aborted) - return; - //@ts-ignore - this.signal.reason = reason; - //@ts-ignore - this.signal.aborted = true; - //@ts-ignore - for (const fn of this.signal._onabort) { - fn(reason); - } - this.signal.onabort?.(reason); - } - }; - let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1'; - const warnACPolyfill = () => { - if (!printACPolyfillWarning) - return; - printACPolyfillWarning = false; - emitWarning('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', warnACPolyfill); - }; -} -/* c8 ignore stop */ -const shouldWarn = (code) => !warned.has(code); -const TYPE = Symbol('type'); -const isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n); -/* c8 ignore start */ -// This is a little bit ridiculous, tbh. -// The maximum array length is 2^32-1 or thereabouts on most JS impls. -// And well before that point, you're caching the entire world, I mean, -// that's ~32GB of just integers for the next/prev links, plus whatever -// else to hold that many keys and values. Just filling the memory with -// zeroes at init time is brutal when you get that big. -// But why not be complete? -// Maybe in the future, these limits will have expanded. -const getUintArray = (max) => !isPosInt(max) - ? null - : max <= Math.pow(2, 8) - ? Uint8Array - : max <= Math.pow(2, 16) - ? Uint16Array - : max <= Math.pow(2, 32) - ? Uint32Array - : max <= Number.MAX_SAFE_INTEGER - ? ZeroArray - : null; -/* c8 ignore stop */ -class ZeroArray extends Array { - constructor(size) { - super(size); - this.fill(0); - } -} -class Stack { - heap; - length; - // private constructor - static #constructing = false; - static create(max) { - const HeapCls = getUintArray(max); - if (!HeapCls) - return []; - Stack.#constructing = true; - const s = new Stack(max, HeapCls); - Stack.#constructing = false; - return s; - } - constructor(max, HeapCls) { - /* c8 ignore start */ - if (!Stack.#constructing) { - throw new TypeError('instantiate Stack using Stack.create(n)'); - } - /* c8 ignore stop */ - this.heap = new HeapCls(max); - this.length = 0; - } - push(n) { - this.heap[this.length++] = n; - } - pop() { - return this.heap[--this.length]; - } -} -/** - * Default export, the thing you're using this module to get. - * - * The `K` and `V` types define the key and value types, respectively. The - * optional `FC` type defines the type of the `context` object passed to - * `cache.fetch()` and `cache.memo()`. - * - * Keys and values **must not** be `null` or `undefined`. - * - * All properties from the options object (with the exception of `max`, - * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are - * added as normal public members. (The listed options are read-only getters.) - * - * Changing any of these will alter the defaults for subsequent method calls. - */ -class LRUCache { - // options that cannot be changed without disaster - #max; - #maxSize; - #dispose; - #disposeAfter; - #fetchMethod; - #memoMethod; - /** - * {@link LRUCache.OptionsBase.ttl} - */ - ttl; - /** - * {@link LRUCache.OptionsBase.ttlResolution} - */ - ttlResolution; - /** - * {@link LRUCache.OptionsBase.ttlAutopurge} - */ - ttlAutopurge; - /** - * {@link LRUCache.OptionsBase.updateAgeOnGet} - */ - updateAgeOnGet; - /** - * {@link LRUCache.OptionsBase.updateAgeOnHas} - */ - updateAgeOnHas; - /** - * {@link LRUCache.OptionsBase.allowStale} - */ - allowStale; - /** - * {@link LRUCache.OptionsBase.noDisposeOnSet} - */ - noDisposeOnSet; - /** - * {@link LRUCache.OptionsBase.noUpdateTTL} - */ - noUpdateTTL; - /** - * {@link LRUCache.OptionsBase.maxEntrySize} - */ - maxEntrySize; - /** - * {@link LRUCache.OptionsBase.sizeCalculation} - */ - sizeCalculation; - /** - * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection} - */ - noDeleteOnFetchRejection; - /** - * {@link LRUCache.OptionsBase.noDeleteOnStaleGet} - */ - noDeleteOnStaleGet; - /** - * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort} - */ - allowStaleOnFetchAbort; - /** - * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} - */ - allowStaleOnFetchRejection; - /** - * {@link LRUCache.OptionsBase.ignoreFetchAbort} - */ - ignoreFetchAbort; - // computed properties - #size; - #calculatedSize; - #keyMap; - #keyList; - #valList; - #next; - #prev; - #head; - #tail; - #free; - #disposed; - #sizes; - #starts; - #ttls; - #hasDispose; - #hasFetchMethod; - #hasDisposeAfter; - /** - * Do not call this method unless you need to inspect the - * inner workings of the cache. If anything returned by this - * object is modified in any way, strange breakage may occur. - * - * These fields are private for a reason! - * - * @internal - */ - static unsafeExposeInternals(c) { - return { - // properties - starts: c.#starts, - ttls: c.#ttls, - sizes: c.#sizes, - keyMap: c.#keyMap, - keyList: c.#keyList, - valList: c.#valList, - next: c.#next, - prev: c.#prev, - get head() { - return c.#head; - }, - get tail() { - return c.#tail; - }, - free: c.#free, - // methods - isBackgroundFetch: (p) => c.#isBackgroundFetch(p), - backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context), - moveToTail: (index) => c.#moveToTail(index), - indexes: (options) => c.#indexes(options), - rindexes: (options) => c.#rindexes(options), - isStale: (index) => c.#isStale(index), - }; - } - // Protected read-only members - /** - * {@link LRUCache.OptionsBase.max} (read-only) - */ - get max() { - return this.#max; - } - /** - * {@link LRUCache.OptionsBase.maxSize} (read-only) - */ - get maxSize() { - return this.#maxSize; - } - /** - * The total computed size of items in the cache (read-only) - */ - get calculatedSize() { - return this.#calculatedSize; - } - /** - * The number of items stored in the cache (read-only) - */ - get size() { - return this.#size; - } - /** - * {@link LRUCache.OptionsBase.fetchMethod} (read-only) - */ - get fetchMethod() { - return this.#fetchMethod; - } - get memoMethod() { - return this.#memoMethod; - } - /** - * {@link LRUCache.OptionsBase.dispose} (read-only) - */ - get dispose() { - return this.#dispose; - } - /** - * {@link LRUCache.OptionsBase.disposeAfter} (read-only) - */ - get disposeAfter() { - return this.#disposeAfter; - } - constructor(options) { - const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, memoMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options; - if (max !== 0 && !isPosInt(max)) { - throw new TypeError('max option must be a nonnegative integer'); - } - const UintArray = max ? getUintArray(max) : Array; - if (!UintArray) { - throw new Error('invalid max value: ' + max); - } - this.#max = max; - this.#maxSize = maxSize; - this.maxEntrySize = maxEntrySize || this.#maxSize; - this.sizeCalculation = sizeCalculation; - if (this.sizeCalculation) { - if (!this.#maxSize && !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 (memoMethod !== undefined && - typeof memoMethod !== 'function') { - throw new TypeError('memoMethod must be a function if defined'); - } - this.#memoMethod = memoMethod; - if (fetchMethod !== undefined && - typeof fetchMethod !== 'function') { - throw new TypeError('fetchMethod must be a function if specified'); - } - this.#fetchMethod = fetchMethod; - this.#hasFetchMethod = !!fetchMethod; - this.#keyMap = new Map(); - this.#keyList = new Array(max).fill(undefined); - this.#valList = new Array(max).fill(undefined); - this.#next = new UintArray(max); - this.#prev = new UintArray(max); - this.#head = 0; - this.#tail = 0; - this.#free = Stack.create(max); - this.#size = 0; - this.#calculatedSize = 0; - if (typeof dispose === 'function') { - this.#dispose = dispose; - } - if (typeof disposeAfter === 'function') { - this.#disposeAfter = disposeAfter; - this.#disposed = []; - } - else { - this.#disposeAfter = undefined; - this.#disposed = undefined; - } - this.#hasDispose = !!this.#dispose; - this.#hasDisposeAfter = !!this.#disposeAfter; - this.noDisposeOnSet = !!noDisposeOnSet; - this.noUpdateTTL = !!noUpdateTTL; - this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection; - this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection; - this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort; - this.ignoreFetchAbort = !!ignoreFetchAbort; - // NB: maxEntrySize is set to maxSize if it's set - if (this.maxEntrySize !== 0) { - if (this.#maxSize !== 0) { - if (!isPosInt(this.#maxSize)) { - throw new TypeError('maxSize must be a positive integer if specified'); - } - } - if (!isPosInt(this.maxEntrySize)) { - throw new TypeError('maxEntrySize must be a positive integer if specified'); - } - this.#initializeSizeTracking(); - } - this.allowStale = !!allowStale; - this.noDeleteOnStaleGet = !!noDeleteOnStaleGet; - this.updateAgeOnGet = !!updateAgeOnGet; - this.updateAgeOnHas = !!updateAgeOnHas; - this.ttlResolution = - isPosInt(ttlResolution) || ttlResolution === 0 - ? ttlResolution - : 1; - this.ttlAutopurge = !!ttlAutopurge; - this.ttl = ttl || 0; - if (this.ttl) { - if (!isPosInt(this.ttl)) { - throw new TypeError('ttl must be a positive integer if specified'); - } - this.#initializeTTLTracking(); - } - // do not allow completely unbounded caches - if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) { - throw new TypeError('At least one of max, maxSize, or ttl is required'); - } - if (!this.ttlAutopurge && !this.#max && !this.#maxSize) { - const code = 'LRU_CACHE_UNBOUNDED'; - if (shouldWarn(code)) { - warned.add(code); - const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' + - 'result in unbounded memory consumption.'; - emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache); - } - } - } - /** - * Return the number of ms left in the item's TTL. If item is not in cache, - * returns `0`. Returns `Infinity` if item is in cache without a defined TTL. - */ - getRemainingTTL(key) { - return this.#keyMap.has(key) ? Infinity : 0; - } - #initializeTTLTracking() { - const ttls = new ZeroArray(this.#max); - const starts = new ZeroArray(this.#max); - this.#ttls = ttls; - this.#starts = starts; - this.#setItemTTL = (index, ttl, start = perf.now()) => { - starts[index] = ttl !== 0 ? start : 0; - ttls[index] = ttl; - if (ttl !== 0 && this.ttlAutopurge) { - const t = setTimeout(() => { - if (this.#isStale(index)) { - this.#delete(this.#keyList[index], 'expire'); - } - }, ttl + 1); - // unref() not supported on all platforms - /* c8 ignore start */ - if (t.unref) { - t.unref(); - } - /* c8 ignore stop */ - } - }; - this.#updateItemAge = index => { - starts[index] = ttls[index] !== 0 ? perf.now() : 0; - }; - this.#statusTTL = (status, index) => { - if (ttls[index]) { - const ttl = ttls[index]; - const start = starts[index]; - /* c8 ignore next */ - if (!ttl || !start) - return; - status.ttl = ttl; - status.start = start; - status.now = cachedNow || getNow(); - const age = status.now - start; - status.remainingTTL = ttl - age; - } - }; - // debounce calls to perf.now() to 1s so we're not hitting - // that costly call repeatedly. - let cachedNow = 0; - const getNow = () => { - const n = perf.now(); - if (this.ttlResolution > 0) { - cachedNow = n; - const t = setTimeout(() => (cachedNow = 0), this.ttlResolution); - // not available on all platforms - /* c8 ignore start */ - if (t.unref) { - t.unref(); - } - /* c8 ignore stop */ - } - return n; - }; - this.getRemainingTTL = key => { - const index = this.#keyMap.get(key); - if (index === undefined) { - return 0; - } - const ttl = ttls[index]; - const start = starts[index]; - if (!ttl || !start) { - return Infinity; - } - const age = (cachedNow || getNow()) - start; - return ttl - age; - }; - this.#isStale = index => { - const s = starts[index]; - const t = ttls[index]; - return !!t && !!s && (cachedNow || getNow()) - s > t; - }; - } - // conditionally set private methods related to TTL - #updateItemAge = () => { }; - #statusTTL = () => { }; - #setItemTTL = () => { }; - /* c8 ignore stop */ - #isStale = () => false; - #initializeSizeTracking() { - const sizes = new ZeroArray(this.#max); - this.#calculatedSize = 0; - this.#sizes = sizes; - this.#removeItemSize = index => { - this.#calculatedSize -= sizes[index]; - sizes[index] = 0; - }; - this.#requireSize = (k, v, size, sizeCalculation) => { - // provisionally accept background fetches. - // actual value size will be checked when they return. - if (this.#isBackgroundFetch(v)) { - return 0; - } - if (!isPosInt(size)) { - if (sizeCalculation) { - if (typeof sizeCalculation !== 'function') { - throw new TypeError('sizeCalculation must be a function'); - } - size = sizeCalculation(v, k); - if (!isPosInt(size)) { - 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 size; - }; - this.#addItemSize = (index, size, status) => { - sizes[index] = size; - if (this.#maxSize) { - const maxSize = this.#maxSize - sizes[index]; - while (this.#calculatedSize > maxSize) { - this.#evict(true); - } - } - this.#calculatedSize += sizes[index]; - if (status) { - status.entrySize = size; - status.totalCalculatedSize = this.#calculatedSize; - } - }; - } - #removeItemSize = _i => { }; - #addItemSize = (_i, _s, _st) => { }; - #requireSize = (_k, _v, size, sizeCalculation) => { - if (size || sizeCalculation) { - throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache'); - } - return 0; - }; - *#indexes({ allowStale = this.allowStale } = {}) { - if (this.#size) { - for (let i = this.#tail; true;) { - if (!this.#isValidIndex(i)) { - break; - } - if (allowStale || !this.#isStale(i)) { - yield i; - } - if (i === this.#head) { - break; - } - else { - i = this.#prev[i]; - } - } - } - } - *#rindexes({ allowStale = this.allowStale } = {}) { - if (this.#size) { - for (let i = this.#head; true;) { - if (!this.#isValidIndex(i)) { - break; - } - if (allowStale || !this.#isStale(i)) { - yield i; - } - if (i === this.#tail) { - break; - } - else { - i = this.#next[i]; - } - } - } - } - #isValidIndex(index) { - return (index !== undefined && - this.#keyMap.get(this.#keyList[index]) === index); - } - /** - * Return a generator yielding `[key, value]` pairs, - * in order from most recently used to least recently used. - */ - *entries() { - for (const i of this.#indexes()) { - if (this.#valList[i] !== undefined && - this.#keyList[i] !== undefined && - !this.#isBackgroundFetch(this.#valList[i])) { - yield [this.#keyList[i], this.#valList[i]]; - } - } - } - /** - * Inverse order version of {@link LRUCache.entries} - * - * Return a generator yielding `[key, value]` pairs, - * in order from least recently used to most recently used. - */ - *rentries() { - for (const i of this.#rindexes()) { - if (this.#valList[i] !== undefined && - this.#keyList[i] !== undefined && - !this.#isBackgroundFetch(this.#valList[i])) { - yield [this.#keyList[i], this.#valList[i]]; - } - } - } - /** - * Return a generator yielding the keys in the cache, - * in order from most recently used to least recently used. - */ - *keys() { - for (const i of this.#indexes()) { - const k = this.#keyList[i]; - if (k !== undefined && - !this.#isBackgroundFetch(this.#valList[i])) { - yield k; - } - } - } - /** - * Inverse order version of {@link LRUCache.keys} - * - * Return a generator yielding the keys in the cache, - * in order from least recently used to most recently used. - */ - *rkeys() { - for (const i of this.#rindexes()) { - const k = this.#keyList[i]; - if (k !== undefined && - !this.#isBackgroundFetch(this.#valList[i])) { - yield k; - } - } - } - /** - * Return a generator yielding the values in the cache, - * in order from most recently used to least recently used. - */ - *values() { - for (const i of this.#indexes()) { - const v = this.#valList[i]; - if (v !== undefined && - !this.#isBackgroundFetch(this.#valList[i])) { - yield this.#valList[i]; - } - } - } - /** - * Inverse order version of {@link LRUCache.values} - * - * Return a generator yielding the values in the cache, - * in order from least recently used to most recently used. - */ - *rvalues() { - for (const i of this.#rindexes()) { - const v = this.#valList[i]; - if (v !== undefined && - !this.#isBackgroundFetch(this.#valList[i])) { - yield this.#valList[i]; - } - } - } - /** - * Iterating over the cache itself yields the same results as - * {@link LRUCache.entries} - */ - [Symbol.iterator]() { - return this.entries(); - } - /** - * A String value that is used in the creation of the default string - * description of an object. Called by the built-in method - * `Object.prototype.toString`. - */ - [Symbol.toStringTag] = 'LRUCache'; - /** - * Find a value for which the supplied fn method returns a truthy value, - * similar to `Array.find()`. fn is called as `fn(value, key, cache)`. - */ - find(fn, getOptions = {}) { - for (const i of this.#indexes()) { - const v = this.#valList[i]; - const value = this.#isBackgroundFetch(v) - ? v.__staleWhileFetching - : v; - if (value === undefined) - continue; - if (fn(value, this.#keyList[i], this)) { - return this.get(this.#keyList[i], getOptions); - } - } - } - /** - * Call the supplied function on each item in the cache, in order from most - * recently used to least recently used. - * - * `fn` is called as `fn(value, key, cache)`. - * - * If `thisp` is provided, function will be called in the `this`-context of - * the provided object, or the cache if no `thisp` object is provided. - * - * Does not update age or recenty of use, or iterate over stale values. - */ - forEach(fn, thisp = this) { - for (const i of this.#indexes()) { - const v = this.#valList[i]; - const value = this.#isBackgroundFetch(v) - ? v.__staleWhileFetching - : v; - if (value === undefined) - continue; - fn.call(thisp, value, this.#keyList[i], this); - } - } - /** - * The same as {@link LRUCache.forEach} but items are iterated over in - * reverse order. (ie, less recently used items are iterated over first.) - */ - rforEach(fn, thisp = this) { - for (const i of this.#rindexes()) { - const v = this.#valList[i]; - const value = this.#isBackgroundFetch(v) - ? v.__staleWhileFetching - : v; - if (value === undefined) - continue; - fn.call(thisp, value, this.#keyList[i], this); - } - } - /** - * Delete any stale entries. Returns true if anything was removed, - * false otherwise. - */ - purgeStale() { - let deleted = false; - for (const i of this.#rindexes({ allowStale: true })) { - if (this.#isStale(i)) { - this.#delete(this.#keyList[i], 'expire'); - deleted = true; - } - } - return deleted; - } - /** - * Get the extended info about a given entry, to get its value, size, and - * TTL info simultaneously. Returns `undefined` if the key is not present. - * - * Unlike {@link LRUCache#dump}, which is designed to be portable and survive - * serialization, the `start` value is always the current timestamp, and the - * `ttl` is a calculated remaining time to live (negative if expired). - * - * Always returns stale values, if their info is found in the cache, so be - * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl}) - * if relevant. - */ - info(key) { - const i = this.#keyMap.get(key); - if (i === undefined) - return undefined; - const v = this.#valList[i]; - const value = this.#isBackgroundFetch(v) - ? v.__staleWhileFetching - : v; - if (value === undefined) - return undefined; - const entry = { value }; - if (this.#ttls && this.#starts) { - const ttl = this.#ttls[i]; - const start = this.#starts[i]; - if (ttl && start) { - const remain = ttl - (perf.now() - start); - entry.ttl = remain; - entry.start = Date.now(); - } - } - if (this.#sizes) { - entry.size = this.#sizes[i]; - } - return entry; - } - /** - * Return an array of [key, {@link LRUCache.Entry}] tuples which can be - * passed to {@link LRLUCache#load}. - * - * The `start` fields are calculated relative to a portable `Date.now()` - * timestamp, even if `performance.now()` is available. - * - * Stale entries are always included in the `dump`, even if - * {@link LRUCache.OptionsBase.allowStale} is false. - * - * Note: this returns an actual array, not a generator, so it can be more - * easily passed around. - */ - dump() { - const arr = []; - for (const i of this.#indexes({ allowStale: true })) { - const key = this.#keyList[i]; - const v = this.#valList[i]; - const value = this.#isBackgroundFetch(v) - ? v.__staleWhileFetching - : v; - if (value === undefined || key === undefined) - continue; - const entry = { value }; - if (this.#ttls && this.#starts) { - entry.ttl = this.#ttls[i]; - // always dump the start relative to a portable timestamp - // it's ok for this to be a bit slow, it's a rare operation. - const age = perf.now() - this.#starts[i]; - entry.start = Math.floor(Date.now() - age); - } - if (this.#sizes) { - entry.size = this.#sizes[i]; - } - arr.unshift([key, entry]); - } - return arr; - } - /** - * Reset the cache and load in the items in entries in the order listed. - * - * The shape of the resulting cache may be different if the same options are - * not used in both caches. - * - * The `start` fields are assumed to be calculated relative to a portable - * `Date.now()` timestamp, even if `performance.now()` is available. - */ - load(arr) { - this.clear(); - for (const [key, entry] of arr) { - if (entry.start) { - // entry.start is a portable timestamp, but we may be using - // node's performance.now(), so calculate the offset, so that - // we get the intended remaining TTL, no matter how long it's - // been on ice. - // - // it's ok for this to be a bit slow, it's a rare operation. - const age = Date.now() - entry.start; - entry.start = perf.now() - age; - } - this.set(key, entry.value, entry); - } - } - /** - * Add a value to the cache. - * - * Note: if `undefined` is specified as a value, this is an alias for - * {@link LRUCache#delete} - * - * Fields on the {@link LRUCache.SetOptions} options param will override - * their corresponding values in the constructor options for the scope - * of this single `set()` operation. - * - * If `start` is provided, then that will set the effective start - * time for the TTL calculation. Note that this must be a previous - * value of `performance.now()` if supported, or a previous value of - * `Date.now()` if not. - * - * Options object may also include `size`, which will prevent - * calling the `sizeCalculation` function and just use the specified - * number if it is a positive integer, and `noDisposeOnSet` which - * will prevent calling a `dispose` function in the case of - * overwrites. - * - * If the `size` (or return value of `sizeCalculation`) for a given - * entry is greater than `maxEntrySize`, then the item will not be - * added to the cache. - * - * Will update the recency of the entry. - * - * If the value is `undefined`, then this is an alias for - * `cache.delete(key)`. `undefined` is never stored in the cache. - */ - set(k, v, setOptions = {}) { - if (v === undefined) { - this.delete(k); - return this; - } - const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions; - let { noUpdateTTL = this.noUpdateTTL } = setOptions; - const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation); - // if the item doesn't fit, don't do anything - // NB: maxEntrySize set to maxSize by default - if (this.maxEntrySize && size > this.maxEntrySize) { - if (status) { - status.set = 'miss'; - status.maxEntrySizeExceeded = true; - } - // have to delete, in case something is there already. - this.#delete(k, 'set'); - return this; - } - let index = this.#size === 0 ? undefined : this.#keyMap.get(k); - if (index === undefined) { - // addition - index = (this.#size === 0 - ? this.#tail - : this.#free.length !== 0 - ? this.#free.pop() - : this.#size === this.#max - ? this.#evict(false) - : this.#size); - this.#keyList[index] = k; - this.#valList[index] = v; - this.#keyMap.set(k, index); - this.#next[this.#tail] = index; - this.#prev[index] = this.#tail; - this.#tail = index; - this.#size++; - this.#addItemSize(index, size, status); - if (status) - status.set = 'add'; - noUpdateTTL = false; - } - else { - // update - this.#moveToTail(index); - const oldVal = this.#valList[index]; - if (v !== oldVal) { - if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) { - oldVal.__abortController.abort(new Error('replaced')); - const { __staleWhileFetching: s } = oldVal; - if (s !== undefined && !noDisposeOnSet) { - if (this.#hasDispose) { - this.#dispose?.(s, k, 'set'); - } - if (this.#hasDisposeAfter) { - this.#disposed?.push([s, k, 'set']); - } - } - } - else if (!noDisposeOnSet) { - if (this.#hasDispose) { - this.#dispose?.(oldVal, k, 'set'); - } - if (this.#hasDisposeAfter) { - this.#disposed?.push([oldVal, k, 'set']); - } - } - this.#removeItemSize(index); - this.#addItemSize(index, size, status); - this.#valList[index] = v; - if (status) { - status.set = 'replace'; - const oldValue = oldVal && this.#isBackgroundFetch(oldVal) - ? oldVal.__staleWhileFetching - : oldVal; - if (oldValue !== undefined) - status.oldValue = oldValue; - } - } - else if (status) { - status.set = 'update'; - } - } - if (ttl !== 0 && !this.#ttls) { - this.#initializeTTLTracking(); - } - if (this.#ttls) { - if (!noUpdateTTL) { - this.#setItemTTL(index, ttl, start); - } - if (status) - this.#statusTTL(status, index); - } - if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) { - const dt = this.#disposed; - let task; - while ((task = dt?.shift())) { - this.#disposeAfter?.(...task); - } - } - return this; - } - /** - * Evict the least recently used item, returning its value or - * `undefined` if cache is empty. - */ - pop() { - try { - while (this.#size) { - const val = this.#valList[this.#head]; - this.#evict(true); - if (this.#isBackgroundFetch(val)) { - if (val.__staleWhileFetching) { - return val.__staleWhileFetching; - } - } - else if (val !== undefined) { - return val; - } - } - } - finally { - if (this.#hasDisposeAfter && this.#disposed) { - const dt = this.#disposed; - let task; - while ((task = dt?.shift())) { - this.#disposeAfter?.(...task); - } - } - } - } - #evict(free) { - const head = this.#head; - const k = this.#keyList[head]; - const v = this.#valList[head]; - if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) { - v.__abortController.abort(new Error('evicted')); - } - else if (this.#hasDispose || this.#hasDisposeAfter) { - if (this.#hasDispose) { - this.#dispose?.(v, k, 'evict'); - } - if (this.#hasDisposeAfter) { - this.#disposed?.push([v, k, 'evict']); - } - } - this.#removeItemSize(head); - // if we aren't about to use the index, then null these out - if (free) { - this.#keyList[head] = undefined; - this.#valList[head] = undefined; - this.#free.push(head); - } - if (this.#size === 1) { - this.#head = this.#tail = 0; - this.#free.length = 0; - } - else { - this.#head = this.#next[head]; - } - this.#keyMap.delete(k); - this.#size--; - return head; - } - /** - * Check if a key is in the cache, without updating the recency of use. - * Will return false if the item is stale, even though it is technically - * in the cache. - * - * Check if a key is in the cache, without updating the recency of - * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set - * to `true` in either the options or the constructor. - * - * Will return `false` if the item is stale, even though it is technically in - * the cache. The difference can be determined (if it matters) by using a - * `status` argument, and inspecting the `has` field. - * - * Will not update item age unless - * {@link LRUCache.OptionsBase.updateAgeOnHas} is set. - */ - has(k, hasOptions = {}) { - const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions; - const index = this.#keyMap.get(k); - if (index !== undefined) { - const v = this.#valList[index]; - if (this.#isBackgroundFetch(v) && - v.__staleWhileFetching === undefined) { - return false; - } - if (!this.#isStale(index)) { - if (updateAgeOnHas) { - this.#updateItemAge(index); - } - if (status) { - status.has = 'hit'; - this.#statusTTL(status, index); - } - return true; - } - else if (status) { - status.has = 'stale'; - this.#statusTTL(status, index); - } - } - else if (status) { - status.has = 'miss'; - } - return false; - } - /** - * Like {@link LRUCache#get} but doesn't update recency or delete stale - * items. - * - * Returns `undefined` if the item is stale, unless - * {@link LRUCache.OptionsBase.allowStale} is set. - */ - peek(k, peekOptions = {}) { - const { allowStale = this.allowStale } = peekOptions; - const index = this.#keyMap.get(k); - if (index === undefined || - (!allowStale && this.#isStale(index))) { - return; - } - const v = this.#valList[index]; - // either stale and allowed, or forcing a refresh of non-stale value - return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; - } - #backgroundFetch(k, index, options, context) { - const v = index === undefined ? undefined : this.#valList[index]; - if (this.#isBackgroundFetch(v)) { - return v; - } - const ac = new AC(); - const { signal } = options; - // when/if our AC signals, then stop listening to theirs. - signal?.addEventListener('abort', () => ac.abort(signal.reason), { - signal: ac.signal, - }); - const fetchOpts = { - signal: ac.signal, - options, - context, - }; - const cb = (v, updateCache = false) => { - const { aborted } = ac.signal; - const ignoreAbort = options.ignoreFetchAbort && v !== undefined; - if (options.status) { - if (aborted && !updateCache) { - options.status.fetchAborted = true; - options.status.fetchError = ac.signal.reason; - if (ignoreAbort) - options.status.fetchAbortIgnored = true; - } - else { - options.status.fetchResolved = true; - } - } - if (aborted && !ignoreAbort && !updateCache) { - return fetchFail(ac.signal.reason); - } - // either we didn't abort, and are still here, or we did, and ignored - const bf = p; - if (this.#valList[index] === p) { - if (v === undefined) { - if (bf.__staleWhileFetching) { - this.#valList[index] = bf.__staleWhileFetching; - } - else { - this.#delete(k, 'fetch'); - } - } - else { - if (options.status) - options.status.fetchUpdated = true; - this.set(k, v, fetchOpts.options); - } - } - return v; - }; - const eb = (er) => { - if (options.status) { - options.status.fetchRejected = true; - options.status.fetchError = er; - } - return fetchFail(er); - }; - const fetchFail = (er) => { - const { aborted } = ac.signal; - const allowStaleAborted = aborted && options.allowStaleOnFetchAbort; - const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection; - const noDelete = allowStale || options.noDeleteOnFetchRejection; - const bf = p; - if (this.#valList[index] === p) { - // if we allow stale on fetch rejections, then we need to ensure that - // the stale value is not removed from the cache when the fetch fails. - const del = !noDelete || bf.__staleWhileFetching === undefined; - if (del) { - this.#delete(k, 'fetch'); - } - else if (!allowStaleAborted) { - // still replace the *promise* with the stale value, - // since we are done with the promise at this point. - // leave it untouched if we're still waiting for an - // aborted background fetch that hasn't yet returned. - this.#valList[index] = bf.__staleWhileFetching; - } - } - if (allowStale) { - if (options.status && bf.__staleWhileFetching !== undefined) { - options.status.returnedStale = true; - } - return bf.__staleWhileFetching; - } - else if (bf.__returned === bf) { - throw er; - } - }; - const pcall = (res, rej) => { - const fmp = this.#fetchMethod?.(k, v, fetchOpts); - if (fmp && fmp instanceof Promise) { - fmp.then(v => res(v === undefined ? undefined : v), rej); - } - // ignored, we go until we finish, regardless. - // defer check until we are actually aborting, - // so fetchMethod can override. - ac.signal.addEventListener('abort', () => { - if (!options.ignoreFetchAbort || - options.allowStaleOnFetchAbort) { - res(undefined); - // when it eventually resolves, update the cache. - if (options.allowStaleOnFetchAbort) { - res = v => cb(v, true); - } - } - }); - }; - if (options.status) - options.status.fetchDispatched = true; - const p = new Promise(pcall).then(cb, eb); - const bf = Object.assign(p, { - __abortController: ac, - __staleWhileFetching: v, - __returned: undefined, - }); - if (index === undefined) { - // internal, don't expose status. - this.set(k, bf, { ...fetchOpts.options, status: undefined }); - index = this.#keyMap.get(k); - } - else { - this.#valList[index] = bf; - } - return bf; - } - #isBackgroundFetch(p) { - if (!this.#hasFetchMethod) - return false; - const b = p; - return (!!b && - b instanceof Promise && - b.hasOwnProperty('__staleWhileFetching') && - b.__abortController instanceof AC); - } - async fetch(k, fetchOptions = {}) { - const { - // get options - allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, - // set options - ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, - // fetch exclusive options - noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions; - if (!this.#hasFetchMethod) { - if (status) - status.fetch = 'get'; - return this.get(k, { - allowStale, - updateAgeOnGet, - noDeleteOnStaleGet, - status, - }); - } - const options = { - allowStale, - updateAgeOnGet, - noDeleteOnStaleGet, - ttl, - noDisposeOnSet, - size, - sizeCalculation, - noUpdateTTL, - noDeleteOnFetchRejection, - allowStaleOnFetchRejection, - allowStaleOnFetchAbort, - ignoreFetchAbort, - status, - signal, - }; - let index = this.#keyMap.get(k); - if (index === undefined) { - if (status) - status.fetch = 'miss'; - const p = this.#backgroundFetch(k, index, options, context); - return (p.__returned = p); - } - else { - // in cache, maybe already fetching - const v = this.#valList[index]; - if (this.#isBackgroundFetch(v)) { - const stale = allowStale && v.__staleWhileFetching !== undefined; - if (status) { - status.fetch = 'inflight'; - if (stale) - status.returnedStale = true; - } - return stale ? v.__staleWhileFetching : (v.__returned = v); - } - // if we force a refresh, that means do NOT serve the cached value, - // unless we are already in the process of refreshing the cache. - const isStale = this.#isStale(index); - if (!forceRefresh && !isStale) { - if (status) - status.fetch = 'hit'; - this.#moveToTail(index); - if (updateAgeOnGet) { - this.#updateItemAge(index); - } - if (status) - this.#statusTTL(status, index); - return v; - } - // ok, it is stale or a forced refresh, and not already fetching. - // refresh the cache. - const p = this.#backgroundFetch(k, index, options, context); - const hasStale = p.__staleWhileFetching !== undefined; - const staleVal = hasStale && allowStale; - if (status) { - status.fetch = isStale ? 'stale' : 'refresh'; - if (staleVal && isStale) - status.returnedStale = true; - } - return staleVal ? p.__staleWhileFetching : (p.__returned = p); - } - } - async forceFetch(k, fetchOptions = {}) { - const v = await this.fetch(k, fetchOptions); - if (v === undefined) - throw new Error('fetch() returned undefined'); - return v; - } - memo(k, memoOptions = {}) { - const memoMethod = this.#memoMethod; - if (!memoMethod) { - throw new Error('no memoMethod provided to constructor'); - } - const { context, forceRefresh, ...options } = memoOptions; - const v = this.get(k, options); - if (!forceRefresh && v !== undefined) - return v; - const vv = memoMethod(k, v, { - options, - context, - }); - this.set(k, vv, options); - return vv; - } - /** - * Return a value from the cache. Will update the recency of the cache - * entry found. - * - * If the key is not found, get() will return `undefined`. - */ - get(k, getOptions = {}) { - const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions; - const index = this.#keyMap.get(k); - if (index !== undefined) { - const value = this.#valList[index]; - const fetching = this.#isBackgroundFetch(value); - if (status) - this.#statusTTL(status, index); - if (this.#isStale(index)) { - if (status) - status.get = 'stale'; - // delete only if not an in-flight background fetch - if (!fetching) { - if (!noDeleteOnStaleGet) { - this.#delete(k, 'expire'); - } - if (status && allowStale) - status.returnedStale = true; - return allowStale ? value : undefined; - } - else { - if (status && - allowStale && - value.__staleWhileFetching !== undefined) { - status.returnedStale = true; - } - return allowStale ? value.__staleWhileFetching : undefined; - } - } - else { - if (status) - status.get = 'hit'; - // if we're currently fetching it, we don't actually have it yet - // it's not stale, which means this isn't a staleWhileRefetching. - // If it's not stale, and fetching, AND has a __staleWhileFetching - // value, then that means the user fetched with {forceRefresh:true}, - // so it's safe to return that value. - if (fetching) { - return value.__staleWhileFetching; - } - this.#moveToTail(index); - if (updateAgeOnGet) { - this.#updateItemAge(index); - } - return value; - } - } - else if (status) { - status.get = 'miss'; - } - } - #connect(p, n) { - this.#prev[n] = p; - this.#next[p] = n; - } - #moveToTail(index) { - // if tail already, nothing to do - // if head, move head to next[index] - // else - // move next[prev[index]] to next[index] (head has no prev) - // move prev[next[index]] to prev[index] - // prev[index] = tail - // next[tail] = index - // tail = index - if (index !== this.#tail) { - if (index === this.#head) { - this.#head = this.#next[index]; - } - else { - this.#connect(this.#prev[index], this.#next[index]); - } - this.#connect(this.#tail, index); - this.#tail = index; - } - } - /** - * Deletes a key out of the cache. - * - * Returns true if the key was deleted, false otherwise. - */ - delete(k) { - return this.#delete(k, 'delete'); - } - #delete(k, reason) { - let deleted = false; - if (this.#size !== 0) { - const index = this.#keyMap.get(k); - if (index !== undefined) { - deleted = true; - if (this.#size === 1) { - this.#clear(reason); - } - else { - this.#removeItemSize(index); - const v = this.#valList[index]; - if (this.#isBackgroundFetch(v)) { - v.__abortController.abort(new Error('deleted')); - } - else if (this.#hasDispose || this.#hasDisposeAfter) { - if (this.#hasDispose) { - this.#dispose?.(v, k, reason); - } - if (this.#hasDisposeAfter) { - this.#disposed?.push([v, k, reason]); - } - } - this.#keyMap.delete(k); - this.#keyList[index] = undefined; - this.#valList[index] = undefined; - if (index === this.#tail) { - this.#tail = this.#prev[index]; - } - else if (index === this.#head) { - this.#head = this.#next[index]; - } - else { - const pi = this.#prev[index]; - this.#next[pi] = this.#next[index]; - const ni = this.#next[index]; - this.#prev[ni] = this.#prev[index]; - } - this.#size--; - this.#free.push(index); - } - } - } - if (this.#hasDisposeAfter && this.#disposed?.length) { - const dt = this.#disposed; - let task; - while ((task = dt?.shift())) { - this.#disposeAfter?.(...task); - } - } - return deleted; - } - /** - * Clear the cache entirely, throwing away all values. - */ - clear() { - return this.#clear('delete'); - } - #clear(reason) { - for (const index of this.#rindexes({ allowStale: true })) { - const v = this.#valList[index]; - if (this.#isBackgroundFetch(v)) { - v.__abortController.abort(new Error('deleted')); - } - else { - const k = this.#keyList[index]; - if (this.#hasDispose) { - this.#dispose?.(v, k, reason); - } - if (this.#hasDisposeAfter) { - this.#disposed?.push([v, k, reason]); - } - } - } - this.#keyMap.clear(); - this.#valList.fill(undefined); - this.#keyList.fill(undefined); - if (this.#ttls && this.#starts) { - this.#ttls.fill(0); - this.#starts.fill(0); - } - if (this.#sizes) { - this.#sizes.fill(0); - } - this.#head = 0; - this.#tail = 0; - this.#free.length = 0; - this.#calculatedSize = 0; - this.#size = 0; - if (this.#hasDisposeAfter && this.#disposed) { - const dt = this.#disposed; - let task; - while ((task = dt?.shift())) { - this.#disposeAfter?.(...task); - } - } - } -} -exports.LRUCache = LRUCache; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/commonjs/index.min.js b/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/commonjs/index.min.js deleted file mode 100644 index ad643b0badc90f..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/commonjs/index.min.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";var G=(l,t,e)=>{if(!t.has(l))throw TypeError("Cannot "+e)};var j=(l,t,e)=>(G(l,t,"read from private field"),e?e.call(l):t.get(l)),I=(l,t,e)=>{if(t.has(l))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(l):t.set(l,e)},x=(l,t,e,i)=>(G(l,t,"write to private field"),i?i.call(l,e):t.set(l,e),e);Object.defineProperty(exports,"__esModule",{value:!0});exports.LRUCache=void 0;var T=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,P=new Set,U=typeof process=="object"&&process?process:{},H=(l,t,e,i)=>{typeof U.emitWarning=="function"?U.emitWarning(l,t,e,i):console.error(`[${e}] ${t}: ${l}`)},D=globalThis.AbortController,N=globalThis.AbortSignal;if(typeof D>"u"){N=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(i,s){this._onabort.push(s)}},D=class{constructor(){t()}signal=new N;abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=!0;for(let s of this.signal._onabort)s(i);this.signal.onabort?.(i)}}};let l=U.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{l&&(l=!1,H("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 V=l=>!P.has(l),Y=Symbol("type"),A=l=>l&&l===Math.floor(l)&&l>0&&isFinite(l),k=l=>A(l)?l<=Math.pow(2,8)?Uint8Array:l<=Math.pow(2,16)?Uint16Array:l<=Math.pow(2,32)?Uint32Array:l<=Number.MAX_SAFE_INTEGER?E:null:null,E=class extends Array{constructor(t){super(t),this.fill(0)}},v,O=class{heap;length;static create(t){let e=k(t);if(!e)return[];x(O,v,!0);let i=new O(t,e);return x(O,v,!1),i}constructor(t,e){if(!j(O,v))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]}},W=O;v=new WeakMap,I(W,v,!1);var C=class{#g;#f;#p;#w;#R;#W;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#S;#s;#i;#t;#l;#c;#o;#h;#_;#r;#b;#m;#u;#y;#E;#a;static unsafeExposeInternals(t){return{starts:t.#m,ttls:t.#u,sizes:t.#b,keyMap:t.#s,keyList:t.#i,valList:t.#t,next:t.#l,prev:t.#c,get head(){return t.#o},get tail(){return t.#h},free:t.#_,isBackgroundFetch:e=>t.#e(e),backgroundFetch:(e,i,s,n)=>t.#x(e,i,s,n),moveToTail:e=>t.#C(e),indexes:e=>t.#A(e),rindexes:e=>t.#F(e),isStale:e=>t.#d(e)}}get max(){return this.#g}get maxSize(){return this.#f}get calculatedSize(){return this.#S}get size(){return this.#n}get fetchMethod(){return this.#R}get memoMethod(){return this.#W}get dispose(){return this.#p}get disposeAfter(){return this.#w}constructor(t){let{max:e=0,ttl:i,ttlResolution:s=1,ttlAutopurge:n,updateAgeOnGet:h,updateAgeOnHas:o,allowStale:r,dispose:g,disposeAfter:b,noDisposeOnSet:f,noUpdateTTL:u,maxSize:c=0,maxEntrySize:F=0,sizeCalculation:d,fetchMethod:S,memoMethod:a,noDeleteOnFetchRejection:w,noDeleteOnStaleGet:m,allowStaleOnFetchRejection:p,allowStaleOnFetchAbort:_,ignoreFetchAbort:z}=t;if(e!==0&&!A(e))throw new TypeError("max option must be a nonnegative integer");let y=e?k(e):Array;if(!y)throw new Error("invalid max value: "+e);if(this.#g=e,this.#f=c,this.maxEntrySize=F||this.#f,this.sizeCalculation=d,this.sizeCalculation){if(!this.#f&&!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(a!==void 0&&typeof a!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#W=a,S!==void 0&&typeof S!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#R=S,this.#E=!!S,this.#s=new Map,this.#i=new Array(e).fill(void 0),this.#t=new Array(e).fill(void 0),this.#l=new y(e),this.#c=new y(e),this.#o=0,this.#h=0,this.#_=W.create(e),this.#n=0,this.#S=0,typeof g=="function"&&(this.#p=g),typeof b=="function"?(this.#w=b,this.#r=[]):(this.#w=void 0,this.#r=void 0),this.#y=!!this.#p,this.#a=!!this.#w,this.noDisposeOnSet=!!f,this.noUpdateTTL=!!u,this.noDeleteOnFetchRejection=!!w,this.allowStaleOnFetchRejection=!!p,this.allowStaleOnFetchAbort=!!_,this.ignoreFetchAbort=!!z,this.maxEntrySize!==0){if(this.#f!==0&&!A(this.#f))throw new TypeError("maxSize must be a positive integer if specified");if(!A(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#P()}if(this.allowStale=!!r,this.noDeleteOnStaleGet=!!m,this.updateAgeOnGet=!!h,this.updateAgeOnHas=!!o,this.ttlResolution=A(s)||s===0?s:1,this.ttlAutopurge=!!n,this.ttl=i||0,this.ttl){if(!A(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#U()}if(this.#g===0&&this.ttl===0&&this.#f===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#g&&!this.#f){let R="LRU_CACHE_UNBOUNDED";V(R)&&(P.add(R),H("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",R,C))}}getRemainingTTL(t){return this.#s.has(t)?1/0:0}#U(){let t=new E(this.#g),e=new E(this.#g);this.#u=t,this.#m=e,this.#M=(n,h,o=T.now())=>{if(e[n]=h!==0?o:0,t[n]=h,h!==0&&this.ttlAutopurge){let r=setTimeout(()=>{this.#d(n)&&this.#T(this.#i[n],"expire")},h+1);r.unref&&r.unref()}},this.#v=n=>{e[n]=t[n]!==0?T.now():0},this.#O=(n,h)=>{if(t[h]){let o=t[h],r=e[h];if(!o||!r)return;n.ttl=o,n.start=r,n.now=i||s();let g=n.now-r;n.remainingTTL=o-g}};let i=0,s=()=>{let n=T.now();if(this.ttlResolution>0){i=n;let h=setTimeout(()=>i=0,this.ttlResolution);h.unref&&h.unref()}return n};this.getRemainingTTL=n=>{let h=this.#s.get(n);if(h===void 0)return 0;let o=t[h],r=e[h];if(!o||!r)return 1/0;let g=(i||s())-r;return o-g},this.#d=n=>{let h=e[n],o=t[n];return!!o&&!!h&&(i||s())-h>o}}#v=()=>{};#O=()=>{};#M=()=>{};#d=()=>!1;#P(){let t=new E(this.#g);this.#S=0,this.#b=t,this.#z=e=>{this.#S-=t[e],t[e]=0},this.#G=(e,i,s,n)=>{if(this.#e(i))return 0;if(!A(s))if(n){if(typeof n!="function")throw new TypeError("sizeCalculation must be a function");if(s=n(i,e),!A(s))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 s},this.#D=(e,i,s)=>{if(t[e]=i,this.#f){let n=this.#f-t[e];for(;this.#S>n;)this.#L(!0)}this.#S+=t[e],s&&(s.entrySize=i,s.totalCalculatedSize=this.#S)}}#z=t=>{};#D=(t,e,i)=>{};#G=(t,e,i,s)=>{if(i||s)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#A({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#h;!(!this.#j(e)||((t||!this.#d(e))&&(yield e),e===this.#o));)e=this.#c[e]}*#F({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#o;!(!this.#j(e)||((t||!this.#d(e))&&(yield e),e===this.#h));)e=this.#l[e]}#j(t){return t!==void 0&&this.#s.get(this.#i[t])===t}*entries(){for(let t of this.#A())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*rentries(){for(let t of this.#F())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*keys(){for(let t of this.#A()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*rkeys(){for(let t of this.#F()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*values(){for(let t of this.#A())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}*rvalues(){for(let t of this.#F())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(t,e={}){for(let i of this.#A()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;if(n!==void 0&&t(n,this.#i[i],this))return this.get(this.#i[i],e)}}forEach(t,e=this){for(let i of this.#A()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}rforEach(t,e=this){for(let i of this.#F()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}purgeStale(){let t=!1;for(let e of this.#F({allowStale:!0}))this.#d(e)&&(this.#T(this.#i[e],"expire"),t=!0);return t}info(t){let e=this.#s.get(t);if(e===void 0)return;let i=this.#t[e],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let n={value:s};if(this.#u&&this.#m){let h=this.#u[e],o=this.#m[e];if(h&&o){let r=h-(T.now()-o);n.ttl=r,n.start=Date.now()}}return this.#b&&(n.size=this.#b[e]),n}dump(){let t=[];for(let e of this.#A({allowStale:!0})){let i=this.#i[e],s=this.#t[e],n=this.#e(s)?s.__staleWhileFetching:s;if(n===void 0||i===void 0)continue;let h={value:n};if(this.#u&&this.#m){h.ttl=this.#u[e];let o=T.now()-this.#m[e];h.start=Math.floor(Date.now()-o)}this.#b&&(h.size=this.#b[e]),t.unshift([i,h])}return t}load(t){this.clear();for(let[e,i]of t){if(i.start){let s=Date.now()-i.start;i.start=T.now()-s}this.set(e,i.value,i)}}set(t,e,i={}){if(e===void 0)return this.delete(t),this;let{ttl:s=this.ttl,start:n,noDisposeOnSet:h=this.noDisposeOnSet,sizeCalculation:o=this.sizeCalculation,status:r}=i,{noUpdateTTL:g=this.noUpdateTTL}=i,b=this.#G(t,e,i.size||0,o);if(this.maxEntrySize&&b>this.maxEntrySize)return r&&(r.set="miss",r.maxEntrySizeExceeded=!0),this.#T(t,"set"),this;let f=this.#n===0?void 0:this.#s.get(t);if(f===void 0)f=this.#n===0?this.#h:this.#_.length!==0?this.#_.pop():this.#n===this.#g?this.#L(!1):this.#n,this.#i[f]=t,this.#t[f]=e,this.#s.set(t,f),this.#l[this.#h]=f,this.#c[f]=this.#h,this.#h=f,this.#n++,this.#D(f,b,r),r&&(r.set="add"),g=!1;else{this.#C(f);let u=this.#t[f];if(e!==u){if(this.#E&&this.#e(u)){u.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:c}=u;c!==void 0&&!h&&(this.#y&&this.#p?.(c,t,"set"),this.#a&&this.#r?.push([c,t,"set"]))}else h||(this.#y&&this.#p?.(u,t,"set"),this.#a&&this.#r?.push([u,t,"set"]));if(this.#z(f),this.#D(f,b,r),this.#t[f]=e,r){r.set="replace";let c=u&&this.#e(u)?u.__staleWhileFetching:u;c!==void 0&&(r.oldValue=c)}}else r&&(r.set="update")}if(s!==0&&!this.#u&&this.#U(),this.#u&&(g||this.#M(f,s,n),r&&this.#O(r,f)),!h&&this.#a&&this.#r){let u=this.#r,c;for(;c=u?.shift();)this.#w?.(...c)}return this}pop(){try{for(;this.#n;){let t=this.#t[this.#o];if(this.#L(!0),this.#e(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#a&&this.#r){let t=this.#r,e;for(;e=t?.shift();)this.#w?.(...e)}}}#L(t){let e=this.#o,i=this.#i[e],s=this.#t[e];return this.#E&&this.#e(s)?s.__abortController.abort(new Error("evicted")):(this.#y||this.#a)&&(this.#y&&this.#p?.(s,i,"evict"),this.#a&&this.#r?.push([s,i,"evict"])),this.#z(e),t&&(this.#i[e]=void 0,this.#t[e]=void 0,this.#_.push(e)),this.#n===1?(this.#o=this.#h=0,this.#_.length=0):this.#o=this.#l[e],this.#s.delete(i),this.#n--,e}has(t,e={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=e,n=this.#s.get(t);if(n!==void 0){let h=this.#t[n];if(this.#e(h)&&h.__staleWhileFetching===void 0)return!1;if(this.#d(n))s&&(s.has="stale",this.#O(s,n));else return i&&this.#v(n),s&&(s.has="hit",this.#O(s,n)),!0}else s&&(s.has="miss");return!1}peek(t,e={}){let{allowStale:i=this.allowStale}=e,s=this.#s.get(t);if(s===void 0||!i&&this.#d(s))return;let n=this.#t[s];return this.#e(n)?n.__staleWhileFetching:n}#x(t,e,i,s){let n=e===void 0?void 0:this.#t[e];if(this.#e(n))return n;let h=new D,{signal:o}=i;o?.addEventListener("abort",()=>h.abort(o.reason),{signal:h.signal});let r={signal:h.signal,options:i,context:s},g=(d,S=!1)=>{let{aborted:a}=h.signal,w=i.ignoreFetchAbort&&d!==void 0;if(i.status&&(a&&!S?(i.status.fetchAborted=!0,i.status.fetchError=h.signal.reason,w&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),a&&!w&&!S)return f(h.signal.reason);let m=c;return this.#t[e]===c&&(d===void 0?m.__staleWhileFetching?this.#t[e]=m.__staleWhileFetching:this.#T(t,"fetch"):(i.status&&(i.status.fetchUpdated=!0),this.set(t,d,r.options))),d},b=d=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=d),f(d)),f=d=>{let{aborted:S}=h.signal,a=S&&i.allowStaleOnFetchAbort,w=a||i.allowStaleOnFetchRejection,m=w||i.noDeleteOnFetchRejection,p=c;if(this.#t[e]===c&&(!m||p.__staleWhileFetching===void 0?this.#T(t,"fetch"):a||(this.#t[e]=p.__staleWhileFetching)),w)return i.status&&p.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),p.__staleWhileFetching;if(p.__returned===p)throw d},u=(d,S)=>{let a=this.#R?.(t,n,r);a&&a instanceof Promise&&a.then(w=>d(w===void 0?void 0:w),S),h.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(d(void 0),i.allowStaleOnFetchAbort&&(d=w=>g(w,!0)))})};i.status&&(i.status.fetchDispatched=!0);let c=new Promise(u).then(g,b),F=Object.assign(c,{__abortController:h,__staleWhileFetching:n,__returned:void 0});return e===void 0?(this.set(t,F,{...r.options,status:void 0}),e=this.#s.get(t)):this.#t[e]=F,F}#e(t){if(!this.#E)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty("__staleWhileFetching")&&e.__abortController instanceof D}async fetch(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:h=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:r=0,sizeCalculation:g=this.sizeCalculation,noUpdateTTL:b=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:u=this.allowStaleOnFetchRejection,ignoreFetchAbort:c=this.ignoreFetchAbort,allowStaleOnFetchAbort:F=this.allowStaleOnFetchAbort,context:d,forceRefresh:S=!1,status:a,signal:w}=e;if(!this.#E)return a&&(a.fetch="get"),this.get(t,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,status:a});let m={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,ttl:h,noDisposeOnSet:o,size:r,sizeCalculation:g,noUpdateTTL:b,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:F,ignoreFetchAbort:c,status:a,signal:w},p=this.#s.get(t);if(p===void 0){a&&(a.fetch="miss");let _=this.#x(t,p,m,d);return _.__returned=_}else{let _=this.#t[p];if(this.#e(_)){let M=i&&_.__staleWhileFetching!==void 0;return a&&(a.fetch="inflight",M&&(a.returnedStale=!0)),M?_.__staleWhileFetching:_.__returned=_}let z=this.#d(p);if(!S&&!z)return a&&(a.fetch="hit"),this.#C(p),s&&this.#v(p),a&&this.#O(a,p),_;let y=this.#x(t,p,m,d),L=y.__staleWhileFetching!==void 0&&i;return a&&(a.fetch=z?"stale":"refresh",L&&z&&(a.returnedStale=!0)),L?y.__staleWhileFetching:y.__returned=y}}async forceFetch(t,e={}){let i=await this.fetch(t,e);if(i===void 0)throw new Error("fetch() returned undefined");return i}memo(t,e={}){let i=this.#W;if(!i)throw new Error("no memoMethod provided to constructor");let{context:s,forceRefresh:n,...h}=e,o=this.get(t,h);if(!n&&o!==void 0)return o;let r=i(t,o,{options:h,context:s});return this.set(t,r,h),r}get(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:h}=e,o=this.#s.get(t);if(o!==void 0){let r=this.#t[o],g=this.#e(r);return h&&this.#O(h,o),this.#d(o)?(h&&(h.get="stale"),g?(h&&i&&r.__staleWhileFetching!==void 0&&(h.returnedStale=!0),i?r.__staleWhileFetching:void 0):(n||this.#T(t,"expire"),h&&i&&(h.returnedStale=!0),i?r:void 0)):(h&&(h.get="hit"),g?r.__staleWhileFetching:(this.#C(o),s&&this.#v(o),r))}else h&&(h.get="miss")}#I(t,e){this.#c[e]=t,this.#l[t]=e}#C(t){t!==this.#h&&(t===this.#o?this.#o=this.#l[t]:this.#I(this.#c[t],this.#l[t]),this.#I(this.#h,t),this.#h=t)}delete(t){return this.#T(t,"delete")}#T(t,e){let i=!1;if(this.#n!==0){let s=this.#s.get(t);if(s!==void 0)if(i=!0,this.#n===1)this.#N(e);else{this.#z(s);let n=this.#t[s];if(this.#e(n)?n.__abortController.abort(new Error("deleted")):(this.#y||this.#a)&&(this.#y&&this.#p?.(n,t,e),this.#a&&this.#r?.push([n,t,e])),this.#s.delete(t),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#c[s];else if(s===this.#o)this.#o=this.#l[s];else{let h=this.#c[s];this.#l[h]=this.#l[s];let o=this.#l[s];this.#c[o]=this.#c[s]}this.#n--,this.#_.push(s)}}if(this.#a&&this.#r?.length){let s=this.#r,n;for(;n=s?.shift();)this.#w?.(...n)}return i}clear(){return this.#N("delete")}#N(t){for(let e of this.#F({allowStale:!0})){let i=this.#t[e];if(this.#e(i))i.__abortController.abort(new Error("deleted"));else{let s=this.#i[e];this.#y&&this.#p?.(i,s,t),this.#a&&this.#r?.push([i,s,t])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#u&&this.#m&&(this.#u.fill(0),this.#m.fill(0)),this.#b&&this.#b.fill(0),this.#o=0,this.#h=0,this.#_.length=0,this.#S=0,this.#n=0,this.#a&&this.#r){let e=this.#r,i;for(;i=e?.shift();)this.#w?.(...i)}}};exports.LRUCache=C; -//# sourceMappingURL=index.min.js.map diff --git a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/commonjs/package.json b/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/commonjs/package.json deleted file mode 100644 index 5bbefffbabee39..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/commonjs/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/esm/index.js b/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/esm/index.js deleted file mode 100644 index 649304a949228c..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/esm/index.js +++ /dev/null @@ -1,1542 +0,0 @@ -/** - * @module LRUCache - */ -const perf = typeof performance === 'object' && - performance && - typeof performance.now === 'function' - ? performance - : Date; -const warned = new Set(); -/* c8 ignore start */ -const PROCESS = (typeof process === 'object' && !!process ? process : {}); -/* c8 ignore start */ -const emitWarning = (msg, type, code, fn) => { - typeof PROCESS.emitWarning === 'function' - ? PROCESS.emitWarning(msg, type, code, fn) - : console.error(`[${code}] ${type}: ${msg}`); -}; -let AC = globalThis.AbortController; -let AS = globalThis.AbortSignal; -/* c8 ignore start */ -if (typeof AC === 'undefined') { - //@ts-ignore - AS = class AbortSignal { - onabort; - _onabort = []; - reason; - aborted = false; - addEventListener(_, fn) { - this._onabort.push(fn); - } - }; - //@ts-ignore - AC = class AbortController { - constructor() { - warnACPolyfill(); - } - signal = new AS(); - abort(reason) { - if (this.signal.aborted) - return; - //@ts-ignore - this.signal.reason = reason; - //@ts-ignore - this.signal.aborted = true; - //@ts-ignore - for (const fn of this.signal._onabort) { - fn(reason); - } - this.signal.onabort?.(reason); - } - }; - let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1'; - const warnACPolyfill = () => { - if (!printACPolyfillWarning) - return; - printACPolyfillWarning = false; - emitWarning('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', warnACPolyfill); - }; -} -/* c8 ignore stop */ -const shouldWarn = (code) => !warned.has(code); -const TYPE = Symbol('type'); -const isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n); -/* c8 ignore start */ -// This is a little bit ridiculous, tbh. -// The maximum array length is 2^32-1 or thereabouts on most JS impls. -// And well before that point, you're caching the entire world, I mean, -// that's ~32GB of just integers for the next/prev links, plus whatever -// else to hold that many keys and values. Just filling the memory with -// zeroes at init time is brutal when you get that big. -// But why not be complete? -// Maybe in the future, these limits will have expanded. -const getUintArray = (max) => !isPosInt(max) - ? null - : max <= Math.pow(2, 8) - ? Uint8Array - : max <= Math.pow(2, 16) - ? Uint16Array - : max <= Math.pow(2, 32) - ? Uint32Array - : max <= Number.MAX_SAFE_INTEGER - ? ZeroArray - : null; -/* c8 ignore stop */ -class ZeroArray extends Array { - constructor(size) { - super(size); - this.fill(0); - } -} -class Stack { - heap; - length; - // private constructor - static #constructing = false; - static create(max) { - const HeapCls = getUintArray(max); - if (!HeapCls) - return []; - Stack.#constructing = true; - const s = new Stack(max, HeapCls); - Stack.#constructing = false; - return s; - } - constructor(max, HeapCls) { - /* c8 ignore start */ - if (!Stack.#constructing) { - throw new TypeError('instantiate Stack using Stack.create(n)'); - } - /* c8 ignore stop */ - this.heap = new HeapCls(max); - this.length = 0; - } - push(n) { - this.heap[this.length++] = n; - } - pop() { - return this.heap[--this.length]; - } -} -/** - * Default export, the thing you're using this module to get. - * - * The `K` and `V` types define the key and value types, respectively. The - * optional `FC` type defines the type of the `context` object passed to - * `cache.fetch()` and `cache.memo()`. - * - * Keys and values **must not** be `null` or `undefined`. - * - * All properties from the options object (with the exception of `max`, - * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are - * added as normal public members. (The listed options are read-only getters.) - * - * Changing any of these will alter the defaults for subsequent method calls. - */ -export class LRUCache { - // options that cannot be changed without disaster - #max; - #maxSize; - #dispose; - #disposeAfter; - #fetchMethod; - #memoMethod; - /** - * {@link LRUCache.OptionsBase.ttl} - */ - ttl; - /** - * {@link LRUCache.OptionsBase.ttlResolution} - */ - ttlResolution; - /** - * {@link LRUCache.OptionsBase.ttlAutopurge} - */ - ttlAutopurge; - /** - * {@link LRUCache.OptionsBase.updateAgeOnGet} - */ - updateAgeOnGet; - /** - * {@link LRUCache.OptionsBase.updateAgeOnHas} - */ - updateAgeOnHas; - /** - * {@link LRUCache.OptionsBase.allowStale} - */ - allowStale; - /** - * {@link LRUCache.OptionsBase.noDisposeOnSet} - */ - noDisposeOnSet; - /** - * {@link LRUCache.OptionsBase.noUpdateTTL} - */ - noUpdateTTL; - /** - * {@link LRUCache.OptionsBase.maxEntrySize} - */ - maxEntrySize; - /** - * {@link LRUCache.OptionsBase.sizeCalculation} - */ - sizeCalculation; - /** - * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection} - */ - noDeleteOnFetchRejection; - /** - * {@link LRUCache.OptionsBase.noDeleteOnStaleGet} - */ - noDeleteOnStaleGet; - /** - * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort} - */ - allowStaleOnFetchAbort; - /** - * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} - */ - allowStaleOnFetchRejection; - /** - * {@link LRUCache.OptionsBase.ignoreFetchAbort} - */ - ignoreFetchAbort; - // computed properties - #size; - #calculatedSize; - #keyMap; - #keyList; - #valList; - #next; - #prev; - #head; - #tail; - #free; - #disposed; - #sizes; - #starts; - #ttls; - #hasDispose; - #hasFetchMethod; - #hasDisposeAfter; - /** - * Do not call this method unless you need to inspect the - * inner workings of the cache. If anything returned by this - * object is modified in any way, strange breakage may occur. - * - * These fields are private for a reason! - * - * @internal - */ - static unsafeExposeInternals(c) { - return { - // properties - starts: c.#starts, - ttls: c.#ttls, - sizes: c.#sizes, - keyMap: c.#keyMap, - keyList: c.#keyList, - valList: c.#valList, - next: c.#next, - prev: c.#prev, - get head() { - return c.#head; - }, - get tail() { - return c.#tail; - }, - free: c.#free, - // methods - isBackgroundFetch: (p) => c.#isBackgroundFetch(p), - backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context), - moveToTail: (index) => c.#moveToTail(index), - indexes: (options) => c.#indexes(options), - rindexes: (options) => c.#rindexes(options), - isStale: (index) => c.#isStale(index), - }; - } - // Protected read-only members - /** - * {@link LRUCache.OptionsBase.max} (read-only) - */ - get max() { - return this.#max; - } - /** - * {@link LRUCache.OptionsBase.maxSize} (read-only) - */ - get maxSize() { - return this.#maxSize; - } - /** - * The total computed size of items in the cache (read-only) - */ - get calculatedSize() { - return this.#calculatedSize; - } - /** - * The number of items stored in the cache (read-only) - */ - get size() { - return this.#size; - } - /** - * {@link LRUCache.OptionsBase.fetchMethod} (read-only) - */ - get fetchMethod() { - return this.#fetchMethod; - } - get memoMethod() { - return this.#memoMethod; - } - /** - * {@link LRUCache.OptionsBase.dispose} (read-only) - */ - get dispose() { - return this.#dispose; - } - /** - * {@link LRUCache.OptionsBase.disposeAfter} (read-only) - */ - get disposeAfter() { - return this.#disposeAfter; - } - constructor(options) { - const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, memoMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options; - if (max !== 0 && !isPosInt(max)) { - throw new TypeError('max option must be a nonnegative integer'); - } - const UintArray = max ? getUintArray(max) : Array; - if (!UintArray) { - throw new Error('invalid max value: ' + max); - } - this.#max = max; - this.#maxSize = maxSize; - this.maxEntrySize = maxEntrySize || this.#maxSize; - this.sizeCalculation = sizeCalculation; - if (this.sizeCalculation) { - if (!this.#maxSize && !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 (memoMethod !== undefined && - typeof memoMethod !== 'function') { - throw new TypeError('memoMethod must be a function if defined'); - } - this.#memoMethod = memoMethod; - if (fetchMethod !== undefined && - typeof fetchMethod !== 'function') { - throw new TypeError('fetchMethod must be a function if specified'); - } - this.#fetchMethod = fetchMethod; - this.#hasFetchMethod = !!fetchMethod; - this.#keyMap = new Map(); - this.#keyList = new Array(max).fill(undefined); - this.#valList = new Array(max).fill(undefined); - this.#next = new UintArray(max); - this.#prev = new UintArray(max); - this.#head = 0; - this.#tail = 0; - this.#free = Stack.create(max); - this.#size = 0; - this.#calculatedSize = 0; - if (typeof dispose === 'function') { - this.#dispose = dispose; - } - if (typeof disposeAfter === 'function') { - this.#disposeAfter = disposeAfter; - this.#disposed = []; - } - else { - this.#disposeAfter = undefined; - this.#disposed = undefined; - } - this.#hasDispose = !!this.#dispose; - this.#hasDisposeAfter = !!this.#disposeAfter; - this.noDisposeOnSet = !!noDisposeOnSet; - this.noUpdateTTL = !!noUpdateTTL; - this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection; - this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection; - this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort; - this.ignoreFetchAbort = !!ignoreFetchAbort; - // NB: maxEntrySize is set to maxSize if it's set - if (this.maxEntrySize !== 0) { - if (this.#maxSize !== 0) { - if (!isPosInt(this.#maxSize)) { - throw new TypeError('maxSize must be a positive integer if specified'); - } - } - if (!isPosInt(this.maxEntrySize)) { - throw new TypeError('maxEntrySize must be a positive integer if specified'); - } - this.#initializeSizeTracking(); - } - this.allowStale = !!allowStale; - this.noDeleteOnStaleGet = !!noDeleteOnStaleGet; - this.updateAgeOnGet = !!updateAgeOnGet; - this.updateAgeOnHas = !!updateAgeOnHas; - this.ttlResolution = - isPosInt(ttlResolution) || ttlResolution === 0 - ? ttlResolution - : 1; - this.ttlAutopurge = !!ttlAutopurge; - this.ttl = ttl || 0; - if (this.ttl) { - if (!isPosInt(this.ttl)) { - throw new TypeError('ttl must be a positive integer if specified'); - } - this.#initializeTTLTracking(); - } - // do not allow completely unbounded caches - if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) { - throw new TypeError('At least one of max, maxSize, or ttl is required'); - } - if (!this.ttlAutopurge && !this.#max && !this.#maxSize) { - const code = 'LRU_CACHE_UNBOUNDED'; - if (shouldWarn(code)) { - warned.add(code); - const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' + - 'result in unbounded memory consumption.'; - emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache); - } - } - } - /** - * Return the number of ms left in the item's TTL. If item is not in cache, - * returns `0`. Returns `Infinity` if item is in cache without a defined TTL. - */ - getRemainingTTL(key) { - return this.#keyMap.has(key) ? Infinity : 0; - } - #initializeTTLTracking() { - const ttls = new ZeroArray(this.#max); - const starts = new ZeroArray(this.#max); - this.#ttls = ttls; - this.#starts = starts; - this.#setItemTTL = (index, ttl, start = perf.now()) => { - starts[index] = ttl !== 0 ? start : 0; - ttls[index] = ttl; - if (ttl !== 0 && this.ttlAutopurge) { - const t = setTimeout(() => { - if (this.#isStale(index)) { - this.#delete(this.#keyList[index], 'expire'); - } - }, ttl + 1); - // unref() not supported on all platforms - /* c8 ignore start */ - if (t.unref) { - t.unref(); - } - /* c8 ignore stop */ - } - }; - this.#updateItemAge = index => { - starts[index] = ttls[index] !== 0 ? perf.now() : 0; - }; - this.#statusTTL = (status, index) => { - if (ttls[index]) { - const ttl = ttls[index]; - const start = starts[index]; - /* c8 ignore next */ - if (!ttl || !start) - return; - status.ttl = ttl; - status.start = start; - status.now = cachedNow || getNow(); - const age = status.now - start; - status.remainingTTL = ttl - age; - } - }; - // debounce calls to perf.now() to 1s so we're not hitting - // that costly call repeatedly. - let cachedNow = 0; - const getNow = () => { - const n = perf.now(); - if (this.ttlResolution > 0) { - cachedNow = n; - const t = setTimeout(() => (cachedNow = 0), this.ttlResolution); - // not available on all platforms - /* c8 ignore start */ - if (t.unref) { - t.unref(); - } - /* c8 ignore stop */ - } - return n; - }; - this.getRemainingTTL = key => { - const index = this.#keyMap.get(key); - if (index === undefined) { - return 0; - } - const ttl = ttls[index]; - const start = starts[index]; - if (!ttl || !start) { - return Infinity; - } - const age = (cachedNow || getNow()) - start; - return ttl - age; - }; - this.#isStale = index => { - const s = starts[index]; - const t = ttls[index]; - return !!t && !!s && (cachedNow || getNow()) - s > t; - }; - } - // conditionally set private methods related to TTL - #updateItemAge = () => { }; - #statusTTL = () => { }; - #setItemTTL = () => { }; - /* c8 ignore stop */ - #isStale = () => false; - #initializeSizeTracking() { - const sizes = new ZeroArray(this.#max); - this.#calculatedSize = 0; - this.#sizes = sizes; - this.#removeItemSize = index => { - this.#calculatedSize -= sizes[index]; - sizes[index] = 0; - }; - this.#requireSize = (k, v, size, sizeCalculation) => { - // provisionally accept background fetches. - // actual value size will be checked when they return. - if (this.#isBackgroundFetch(v)) { - return 0; - } - if (!isPosInt(size)) { - if (sizeCalculation) { - if (typeof sizeCalculation !== 'function') { - throw new TypeError('sizeCalculation must be a function'); - } - size = sizeCalculation(v, k); - if (!isPosInt(size)) { - 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 size; - }; - this.#addItemSize = (index, size, status) => { - sizes[index] = size; - if (this.#maxSize) { - const maxSize = this.#maxSize - sizes[index]; - while (this.#calculatedSize > maxSize) { - this.#evict(true); - } - } - this.#calculatedSize += sizes[index]; - if (status) { - status.entrySize = size; - status.totalCalculatedSize = this.#calculatedSize; - } - }; - } - #removeItemSize = _i => { }; - #addItemSize = (_i, _s, _st) => { }; - #requireSize = (_k, _v, size, sizeCalculation) => { - if (size || sizeCalculation) { - throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache'); - } - return 0; - }; - *#indexes({ allowStale = this.allowStale } = {}) { - if (this.#size) { - for (let i = this.#tail; true;) { - if (!this.#isValidIndex(i)) { - break; - } - if (allowStale || !this.#isStale(i)) { - yield i; - } - if (i === this.#head) { - break; - } - else { - i = this.#prev[i]; - } - } - } - } - *#rindexes({ allowStale = this.allowStale } = {}) { - if (this.#size) { - for (let i = this.#head; true;) { - if (!this.#isValidIndex(i)) { - break; - } - if (allowStale || !this.#isStale(i)) { - yield i; - } - if (i === this.#tail) { - break; - } - else { - i = this.#next[i]; - } - } - } - } - #isValidIndex(index) { - return (index !== undefined && - this.#keyMap.get(this.#keyList[index]) === index); - } - /** - * Return a generator yielding `[key, value]` pairs, - * in order from most recently used to least recently used. - */ - *entries() { - for (const i of this.#indexes()) { - if (this.#valList[i] !== undefined && - this.#keyList[i] !== undefined && - !this.#isBackgroundFetch(this.#valList[i])) { - yield [this.#keyList[i], this.#valList[i]]; - } - } - } - /** - * Inverse order version of {@link LRUCache.entries} - * - * Return a generator yielding `[key, value]` pairs, - * in order from least recently used to most recently used. - */ - *rentries() { - for (const i of this.#rindexes()) { - if (this.#valList[i] !== undefined && - this.#keyList[i] !== undefined && - !this.#isBackgroundFetch(this.#valList[i])) { - yield [this.#keyList[i], this.#valList[i]]; - } - } - } - /** - * Return a generator yielding the keys in the cache, - * in order from most recently used to least recently used. - */ - *keys() { - for (const i of this.#indexes()) { - const k = this.#keyList[i]; - if (k !== undefined && - !this.#isBackgroundFetch(this.#valList[i])) { - yield k; - } - } - } - /** - * Inverse order version of {@link LRUCache.keys} - * - * Return a generator yielding the keys in the cache, - * in order from least recently used to most recently used. - */ - *rkeys() { - for (const i of this.#rindexes()) { - const k = this.#keyList[i]; - if (k !== undefined && - !this.#isBackgroundFetch(this.#valList[i])) { - yield k; - } - } - } - /** - * Return a generator yielding the values in the cache, - * in order from most recently used to least recently used. - */ - *values() { - for (const i of this.#indexes()) { - const v = this.#valList[i]; - if (v !== undefined && - !this.#isBackgroundFetch(this.#valList[i])) { - yield this.#valList[i]; - } - } - } - /** - * Inverse order version of {@link LRUCache.values} - * - * Return a generator yielding the values in the cache, - * in order from least recently used to most recently used. - */ - *rvalues() { - for (const i of this.#rindexes()) { - const v = this.#valList[i]; - if (v !== undefined && - !this.#isBackgroundFetch(this.#valList[i])) { - yield this.#valList[i]; - } - } - } - /** - * Iterating over the cache itself yields the same results as - * {@link LRUCache.entries} - */ - [Symbol.iterator]() { - return this.entries(); - } - /** - * A String value that is used in the creation of the default string - * description of an object. Called by the built-in method - * `Object.prototype.toString`. - */ - [Symbol.toStringTag] = 'LRUCache'; - /** - * Find a value for which the supplied fn method returns a truthy value, - * similar to `Array.find()`. fn is called as `fn(value, key, cache)`. - */ - find(fn, getOptions = {}) { - for (const i of this.#indexes()) { - const v = this.#valList[i]; - const value = this.#isBackgroundFetch(v) - ? v.__staleWhileFetching - : v; - if (value === undefined) - continue; - if (fn(value, this.#keyList[i], this)) { - return this.get(this.#keyList[i], getOptions); - } - } - } - /** - * Call the supplied function on each item in the cache, in order from most - * recently used to least recently used. - * - * `fn` is called as `fn(value, key, cache)`. - * - * If `thisp` is provided, function will be called in the `this`-context of - * the provided object, or the cache if no `thisp` object is provided. - * - * Does not update age or recenty of use, or iterate over stale values. - */ - forEach(fn, thisp = this) { - for (const i of this.#indexes()) { - const v = this.#valList[i]; - const value = this.#isBackgroundFetch(v) - ? v.__staleWhileFetching - : v; - if (value === undefined) - continue; - fn.call(thisp, value, this.#keyList[i], this); - } - } - /** - * The same as {@link LRUCache.forEach} but items are iterated over in - * reverse order. (ie, less recently used items are iterated over first.) - */ - rforEach(fn, thisp = this) { - for (const i of this.#rindexes()) { - const v = this.#valList[i]; - const value = this.#isBackgroundFetch(v) - ? v.__staleWhileFetching - : v; - if (value === undefined) - continue; - fn.call(thisp, value, this.#keyList[i], this); - } - } - /** - * Delete any stale entries. Returns true if anything was removed, - * false otherwise. - */ - purgeStale() { - let deleted = false; - for (const i of this.#rindexes({ allowStale: true })) { - if (this.#isStale(i)) { - this.#delete(this.#keyList[i], 'expire'); - deleted = true; - } - } - return deleted; - } - /** - * Get the extended info about a given entry, to get its value, size, and - * TTL info simultaneously. Returns `undefined` if the key is not present. - * - * Unlike {@link LRUCache#dump}, which is designed to be portable and survive - * serialization, the `start` value is always the current timestamp, and the - * `ttl` is a calculated remaining time to live (negative if expired). - * - * Always returns stale values, if their info is found in the cache, so be - * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl}) - * if relevant. - */ - info(key) { - const i = this.#keyMap.get(key); - if (i === undefined) - return undefined; - const v = this.#valList[i]; - const value = this.#isBackgroundFetch(v) - ? v.__staleWhileFetching - : v; - if (value === undefined) - return undefined; - const entry = { value }; - if (this.#ttls && this.#starts) { - const ttl = this.#ttls[i]; - const start = this.#starts[i]; - if (ttl && start) { - const remain = ttl - (perf.now() - start); - entry.ttl = remain; - entry.start = Date.now(); - } - } - if (this.#sizes) { - entry.size = this.#sizes[i]; - } - return entry; - } - /** - * Return an array of [key, {@link LRUCache.Entry}] tuples which can be - * passed to {@link LRLUCache#load}. - * - * The `start` fields are calculated relative to a portable `Date.now()` - * timestamp, even if `performance.now()` is available. - * - * Stale entries are always included in the `dump`, even if - * {@link LRUCache.OptionsBase.allowStale} is false. - * - * Note: this returns an actual array, not a generator, so it can be more - * easily passed around. - */ - dump() { - const arr = []; - for (const i of this.#indexes({ allowStale: true })) { - const key = this.#keyList[i]; - const v = this.#valList[i]; - const value = this.#isBackgroundFetch(v) - ? v.__staleWhileFetching - : v; - if (value === undefined || key === undefined) - continue; - const entry = { value }; - if (this.#ttls && this.#starts) { - entry.ttl = this.#ttls[i]; - // always dump the start relative to a portable timestamp - // it's ok for this to be a bit slow, it's a rare operation. - const age = perf.now() - this.#starts[i]; - entry.start = Math.floor(Date.now() - age); - } - if (this.#sizes) { - entry.size = this.#sizes[i]; - } - arr.unshift([key, entry]); - } - return arr; - } - /** - * Reset the cache and load in the items in entries in the order listed. - * - * The shape of the resulting cache may be different if the same options are - * not used in both caches. - * - * The `start` fields are assumed to be calculated relative to a portable - * `Date.now()` timestamp, even if `performance.now()` is available. - */ - load(arr) { - this.clear(); - for (const [key, entry] of arr) { - if (entry.start) { - // entry.start is a portable timestamp, but we may be using - // node's performance.now(), so calculate the offset, so that - // we get the intended remaining TTL, no matter how long it's - // been on ice. - // - // it's ok for this to be a bit slow, it's a rare operation. - const age = Date.now() - entry.start; - entry.start = perf.now() - age; - } - this.set(key, entry.value, entry); - } - } - /** - * Add a value to the cache. - * - * Note: if `undefined` is specified as a value, this is an alias for - * {@link LRUCache#delete} - * - * Fields on the {@link LRUCache.SetOptions} options param will override - * their corresponding values in the constructor options for the scope - * of this single `set()` operation. - * - * If `start` is provided, then that will set the effective start - * time for the TTL calculation. Note that this must be a previous - * value of `performance.now()` if supported, or a previous value of - * `Date.now()` if not. - * - * Options object may also include `size`, which will prevent - * calling the `sizeCalculation` function and just use the specified - * number if it is a positive integer, and `noDisposeOnSet` which - * will prevent calling a `dispose` function in the case of - * overwrites. - * - * If the `size` (or return value of `sizeCalculation`) for a given - * entry is greater than `maxEntrySize`, then the item will not be - * added to the cache. - * - * Will update the recency of the entry. - * - * If the value is `undefined`, then this is an alias for - * `cache.delete(key)`. `undefined` is never stored in the cache. - */ - set(k, v, setOptions = {}) { - if (v === undefined) { - this.delete(k); - return this; - } - const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions; - let { noUpdateTTL = this.noUpdateTTL } = setOptions; - const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation); - // if the item doesn't fit, don't do anything - // NB: maxEntrySize set to maxSize by default - if (this.maxEntrySize && size > this.maxEntrySize) { - if (status) { - status.set = 'miss'; - status.maxEntrySizeExceeded = true; - } - // have to delete, in case something is there already. - this.#delete(k, 'set'); - return this; - } - let index = this.#size === 0 ? undefined : this.#keyMap.get(k); - if (index === undefined) { - // addition - index = (this.#size === 0 - ? this.#tail - : this.#free.length !== 0 - ? this.#free.pop() - : this.#size === this.#max - ? this.#evict(false) - : this.#size); - this.#keyList[index] = k; - this.#valList[index] = v; - this.#keyMap.set(k, index); - this.#next[this.#tail] = index; - this.#prev[index] = this.#tail; - this.#tail = index; - this.#size++; - this.#addItemSize(index, size, status); - if (status) - status.set = 'add'; - noUpdateTTL = false; - } - else { - // update - this.#moveToTail(index); - const oldVal = this.#valList[index]; - if (v !== oldVal) { - if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) { - oldVal.__abortController.abort(new Error('replaced')); - const { __staleWhileFetching: s } = oldVal; - if (s !== undefined && !noDisposeOnSet) { - if (this.#hasDispose) { - this.#dispose?.(s, k, 'set'); - } - if (this.#hasDisposeAfter) { - this.#disposed?.push([s, k, 'set']); - } - } - } - else if (!noDisposeOnSet) { - if (this.#hasDispose) { - this.#dispose?.(oldVal, k, 'set'); - } - if (this.#hasDisposeAfter) { - this.#disposed?.push([oldVal, k, 'set']); - } - } - this.#removeItemSize(index); - this.#addItemSize(index, size, status); - this.#valList[index] = v; - if (status) { - status.set = 'replace'; - const oldValue = oldVal && this.#isBackgroundFetch(oldVal) - ? oldVal.__staleWhileFetching - : oldVal; - if (oldValue !== undefined) - status.oldValue = oldValue; - } - } - else if (status) { - status.set = 'update'; - } - } - if (ttl !== 0 && !this.#ttls) { - this.#initializeTTLTracking(); - } - if (this.#ttls) { - if (!noUpdateTTL) { - this.#setItemTTL(index, ttl, start); - } - if (status) - this.#statusTTL(status, index); - } - if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) { - const dt = this.#disposed; - let task; - while ((task = dt?.shift())) { - this.#disposeAfter?.(...task); - } - } - return this; - } - /** - * Evict the least recently used item, returning its value or - * `undefined` if cache is empty. - */ - pop() { - try { - while (this.#size) { - const val = this.#valList[this.#head]; - this.#evict(true); - if (this.#isBackgroundFetch(val)) { - if (val.__staleWhileFetching) { - return val.__staleWhileFetching; - } - } - else if (val !== undefined) { - return val; - } - } - } - finally { - if (this.#hasDisposeAfter && this.#disposed) { - const dt = this.#disposed; - let task; - while ((task = dt?.shift())) { - this.#disposeAfter?.(...task); - } - } - } - } - #evict(free) { - const head = this.#head; - const k = this.#keyList[head]; - const v = this.#valList[head]; - if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) { - v.__abortController.abort(new Error('evicted')); - } - else if (this.#hasDispose || this.#hasDisposeAfter) { - if (this.#hasDispose) { - this.#dispose?.(v, k, 'evict'); - } - if (this.#hasDisposeAfter) { - this.#disposed?.push([v, k, 'evict']); - } - } - this.#removeItemSize(head); - // if we aren't about to use the index, then null these out - if (free) { - this.#keyList[head] = undefined; - this.#valList[head] = undefined; - this.#free.push(head); - } - if (this.#size === 1) { - this.#head = this.#tail = 0; - this.#free.length = 0; - } - else { - this.#head = this.#next[head]; - } - this.#keyMap.delete(k); - this.#size--; - return head; - } - /** - * Check if a key is in the cache, without updating the recency of use. - * Will return false if the item is stale, even though it is technically - * in the cache. - * - * Check if a key is in the cache, without updating the recency of - * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set - * to `true` in either the options or the constructor. - * - * Will return `false` if the item is stale, even though it is technically in - * the cache. The difference can be determined (if it matters) by using a - * `status` argument, and inspecting the `has` field. - * - * Will not update item age unless - * {@link LRUCache.OptionsBase.updateAgeOnHas} is set. - */ - has(k, hasOptions = {}) { - const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions; - const index = this.#keyMap.get(k); - if (index !== undefined) { - const v = this.#valList[index]; - if (this.#isBackgroundFetch(v) && - v.__staleWhileFetching === undefined) { - return false; - } - if (!this.#isStale(index)) { - if (updateAgeOnHas) { - this.#updateItemAge(index); - } - if (status) { - status.has = 'hit'; - this.#statusTTL(status, index); - } - return true; - } - else if (status) { - status.has = 'stale'; - this.#statusTTL(status, index); - } - } - else if (status) { - status.has = 'miss'; - } - return false; - } - /** - * Like {@link LRUCache#get} but doesn't update recency or delete stale - * items. - * - * Returns `undefined` if the item is stale, unless - * {@link LRUCache.OptionsBase.allowStale} is set. - */ - peek(k, peekOptions = {}) { - const { allowStale = this.allowStale } = peekOptions; - const index = this.#keyMap.get(k); - if (index === undefined || - (!allowStale && this.#isStale(index))) { - return; - } - const v = this.#valList[index]; - // either stale and allowed, or forcing a refresh of non-stale value - return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; - } - #backgroundFetch(k, index, options, context) { - const v = index === undefined ? undefined : this.#valList[index]; - if (this.#isBackgroundFetch(v)) { - return v; - } - const ac = new AC(); - const { signal } = options; - // when/if our AC signals, then stop listening to theirs. - signal?.addEventListener('abort', () => ac.abort(signal.reason), { - signal: ac.signal, - }); - const fetchOpts = { - signal: ac.signal, - options, - context, - }; - const cb = (v, updateCache = false) => { - const { aborted } = ac.signal; - const ignoreAbort = options.ignoreFetchAbort && v !== undefined; - if (options.status) { - if (aborted && !updateCache) { - options.status.fetchAborted = true; - options.status.fetchError = ac.signal.reason; - if (ignoreAbort) - options.status.fetchAbortIgnored = true; - } - else { - options.status.fetchResolved = true; - } - } - if (aborted && !ignoreAbort && !updateCache) { - return fetchFail(ac.signal.reason); - } - // either we didn't abort, and are still here, or we did, and ignored - const bf = p; - if (this.#valList[index] === p) { - if (v === undefined) { - if (bf.__staleWhileFetching) { - this.#valList[index] = bf.__staleWhileFetching; - } - else { - this.#delete(k, 'fetch'); - } - } - else { - if (options.status) - options.status.fetchUpdated = true; - this.set(k, v, fetchOpts.options); - } - } - return v; - }; - const eb = (er) => { - if (options.status) { - options.status.fetchRejected = true; - options.status.fetchError = er; - } - return fetchFail(er); - }; - const fetchFail = (er) => { - const { aborted } = ac.signal; - const allowStaleAborted = aborted && options.allowStaleOnFetchAbort; - const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection; - const noDelete = allowStale || options.noDeleteOnFetchRejection; - const bf = p; - if (this.#valList[index] === p) { - // if we allow stale on fetch rejections, then we need to ensure that - // the stale value is not removed from the cache when the fetch fails. - const del = !noDelete || bf.__staleWhileFetching === undefined; - if (del) { - this.#delete(k, 'fetch'); - } - else if (!allowStaleAborted) { - // still replace the *promise* with the stale value, - // since we are done with the promise at this point. - // leave it untouched if we're still waiting for an - // aborted background fetch that hasn't yet returned. - this.#valList[index] = bf.__staleWhileFetching; - } - } - if (allowStale) { - if (options.status && bf.__staleWhileFetching !== undefined) { - options.status.returnedStale = true; - } - return bf.__staleWhileFetching; - } - else if (bf.__returned === bf) { - throw er; - } - }; - const pcall = (res, rej) => { - const fmp = this.#fetchMethod?.(k, v, fetchOpts); - if (fmp && fmp instanceof Promise) { - fmp.then(v => res(v === undefined ? undefined : v), rej); - } - // ignored, we go until we finish, regardless. - // defer check until we are actually aborting, - // so fetchMethod can override. - ac.signal.addEventListener('abort', () => { - if (!options.ignoreFetchAbort || - options.allowStaleOnFetchAbort) { - res(undefined); - // when it eventually resolves, update the cache. - if (options.allowStaleOnFetchAbort) { - res = v => cb(v, true); - } - } - }); - }; - if (options.status) - options.status.fetchDispatched = true; - const p = new Promise(pcall).then(cb, eb); - const bf = Object.assign(p, { - __abortController: ac, - __staleWhileFetching: v, - __returned: undefined, - }); - if (index === undefined) { - // internal, don't expose status. - this.set(k, bf, { ...fetchOpts.options, status: undefined }); - index = this.#keyMap.get(k); - } - else { - this.#valList[index] = bf; - } - return bf; - } - #isBackgroundFetch(p) { - if (!this.#hasFetchMethod) - return false; - const b = p; - return (!!b && - b instanceof Promise && - b.hasOwnProperty('__staleWhileFetching') && - b.__abortController instanceof AC); - } - async fetch(k, fetchOptions = {}) { - const { - // get options - allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, - // set options - ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, - // fetch exclusive options - noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions; - if (!this.#hasFetchMethod) { - if (status) - status.fetch = 'get'; - return this.get(k, { - allowStale, - updateAgeOnGet, - noDeleteOnStaleGet, - status, - }); - } - const options = { - allowStale, - updateAgeOnGet, - noDeleteOnStaleGet, - ttl, - noDisposeOnSet, - size, - sizeCalculation, - noUpdateTTL, - noDeleteOnFetchRejection, - allowStaleOnFetchRejection, - allowStaleOnFetchAbort, - ignoreFetchAbort, - status, - signal, - }; - let index = this.#keyMap.get(k); - if (index === undefined) { - if (status) - status.fetch = 'miss'; - const p = this.#backgroundFetch(k, index, options, context); - return (p.__returned = p); - } - else { - // in cache, maybe already fetching - const v = this.#valList[index]; - if (this.#isBackgroundFetch(v)) { - const stale = allowStale && v.__staleWhileFetching !== undefined; - if (status) { - status.fetch = 'inflight'; - if (stale) - status.returnedStale = true; - } - return stale ? v.__staleWhileFetching : (v.__returned = v); - } - // if we force a refresh, that means do NOT serve the cached value, - // unless we are already in the process of refreshing the cache. - const isStale = this.#isStale(index); - if (!forceRefresh && !isStale) { - if (status) - status.fetch = 'hit'; - this.#moveToTail(index); - if (updateAgeOnGet) { - this.#updateItemAge(index); - } - if (status) - this.#statusTTL(status, index); - return v; - } - // ok, it is stale or a forced refresh, and not already fetching. - // refresh the cache. - const p = this.#backgroundFetch(k, index, options, context); - const hasStale = p.__staleWhileFetching !== undefined; - const staleVal = hasStale && allowStale; - if (status) { - status.fetch = isStale ? 'stale' : 'refresh'; - if (staleVal && isStale) - status.returnedStale = true; - } - return staleVal ? p.__staleWhileFetching : (p.__returned = p); - } - } - async forceFetch(k, fetchOptions = {}) { - const v = await this.fetch(k, fetchOptions); - if (v === undefined) - throw new Error('fetch() returned undefined'); - return v; - } - memo(k, memoOptions = {}) { - const memoMethod = this.#memoMethod; - if (!memoMethod) { - throw new Error('no memoMethod provided to constructor'); - } - const { context, forceRefresh, ...options } = memoOptions; - const v = this.get(k, options); - if (!forceRefresh && v !== undefined) - return v; - const vv = memoMethod(k, v, { - options, - context, - }); - this.set(k, vv, options); - return vv; - } - /** - * Return a value from the cache. Will update the recency of the cache - * entry found. - * - * If the key is not found, get() will return `undefined`. - */ - get(k, getOptions = {}) { - const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions; - const index = this.#keyMap.get(k); - if (index !== undefined) { - const value = this.#valList[index]; - const fetching = this.#isBackgroundFetch(value); - if (status) - this.#statusTTL(status, index); - if (this.#isStale(index)) { - if (status) - status.get = 'stale'; - // delete only if not an in-flight background fetch - if (!fetching) { - if (!noDeleteOnStaleGet) { - this.#delete(k, 'expire'); - } - if (status && allowStale) - status.returnedStale = true; - return allowStale ? value : undefined; - } - else { - if (status && - allowStale && - value.__staleWhileFetching !== undefined) { - status.returnedStale = true; - } - return allowStale ? value.__staleWhileFetching : undefined; - } - } - else { - if (status) - status.get = 'hit'; - // if we're currently fetching it, we don't actually have it yet - // it's not stale, which means this isn't a staleWhileRefetching. - // If it's not stale, and fetching, AND has a __staleWhileFetching - // value, then that means the user fetched with {forceRefresh:true}, - // so it's safe to return that value. - if (fetching) { - return value.__staleWhileFetching; - } - this.#moveToTail(index); - if (updateAgeOnGet) { - this.#updateItemAge(index); - } - return value; - } - } - else if (status) { - status.get = 'miss'; - } - } - #connect(p, n) { - this.#prev[n] = p; - this.#next[p] = n; - } - #moveToTail(index) { - // if tail already, nothing to do - // if head, move head to next[index] - // else - // move next[prev[index]] to next[index] (head has no prev) - // move prev[next[index]] to prev[index] - // prev[index] = tail - // next[tail] = index - // tail = index - if (index !== this.#tail) { - if (index === this.#head) { - this.#head = this.#next[index]; - } - else { - this.#connect(this.#prev[index], this.#next[index]); - } - this.#connect(this.#tail, index); - this.#tail = index; - } - } - /** - * Deletes a key out of the cache. - * - * Returns true if the key was deleted, false otherwise. - */ - delete(k) { - return this.#delete(k, 'delete'); - } - #delete(k, reason) { - let deleted = false; - if (this.#size !== 0) { - const index = this.#keyMap.get(k); - if (index !== undefined) { - deleted = true; - if (this.#size === 1) { - this.#clear(reason); - } - else { - this.#removeItemSize(index); - const v = this.#valList[index]; - if (this.#isBackgroundFetch(v)) { - v.__abortController.abort(new Error('deleted')); - } - else if (this.#hasDispose || this.#hasDisposeAfter) { - if (this.#hasDispose) { - this.#dispose?.(v, k, reason); - } - if (this.#hasDisposeAfter) { - this.#disposed?.push([v, k, reason]); - } - } - this.#keyMap.delete(k); - this.#keyList[index] = undefined; - this.#valList[index] = undefined; - if (index === this.#tail) { - this.#tail = this.#prev[index]; - } - else if (index === this.#head) { - this.#head = this.#next[index]; - } - else { - const pi = this.#prev[index]; - this.#next[pi] = this.#next[index]; - const ni = this.#next[index]; - this.#prev[ni] = this.#prev[index]; - } - this.#size--; - this.#free.push(index); - } - } - } - if (this.#hasDisposeAfter && this.#disposed?.length) { - const dt = this.#disposed; - let task; - while ((task = dt?.shift())) { - this.#disposeAfter?.(...task); - } - } - return deleted; - } - /** - * Clear the cache entirely, throwing away all values. - */ - clear() { - return this.#clear('delete'); - } - #clear(reason) { - for (const index of this.#rindexes({ allowStale: true })) { - const v = this.#valList[index]; - if (this.#isBackgroundFetch(v)) { - v.__abortController.abort(new Error('deleted')); - } - else { - const k = this.#keyList[index]; - if (this.#hasDispose) { - this.#dispose?.(v, k, reason); - } - if (this.#hasDisposeAfter) { - this.#disposed?.push([v, k, reason]); - } - } - } - this.#keyMap.clear(); - this.#valList.fill(undefined); - this.#keyList.fill(undefined); - if (this.#ttls && this.#starts) { - this.#ttls.fill(0); - this.#starts.fill(0); - } - if (this.#sizes) { - this.#sizes.fill(0); - } - this.#head = 0; - this.#tail = 0; - this.#free.length = 0; - this.#calculatedSize = 0; - this.#size = 0; - if (this.#hasDisposeAfter && this.#disposed) { - const dt = this.#disposed; - let task; - while ((task = dt?.shift())) { - this.#disposeAfter?.(...task); - } - } - } -} -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/esm/index.min.js b/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/esm/index.min.js deleted file mode 100644 index 4571d0254e27d7..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/esm/index.min.js +++ /dev/null @@ -1,2 +0,0 @@ -var G=(l,t,e)=>{if(!t.has(l))throw TypeError("Cannot "+e)};var I=(l,t,e)=>(G(l,t,"read from private field"),e?e.call(l):t.get(l)),j=(l,t,e)=>{if(t.has(l))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(l):t.set(l,e)},x=(l,t,e,i)=>(G(l,t,"write to private field"),i?i.call(l,e):t.set(l,e),e);var T=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,P=new Set,M=typeof process=="object"&&process?process:{},H=(l,t,e,i)=>{typeof M.emitWarning=="function"?M.emitWarning(l,t,e,i):console.error(`[${e}] ${t}: ${l}`)},W=globalThis.AbortController,N=globalThis.AbortSignal;if(typeof W>"u"){N=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(i,s){this._onabort.push(s)}},W=class{constructor(){t()}signal=new N;abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=!0;for(let s of this.signal._onabort)s(i);this.signal.onabort?.(i)}}};let l=M.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{l&&(l=!1,H("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 V=l=>!P.has(l),Y=Symbol("type"),A=l=>l&&l===Math.floor(l)&&l>0&&isFinite(l),k=l=>A(l)?l<=Math.pow(2,8)?Uint8Array:l<=Math.pow(2,16)?Uint16Array:l<=Math.pow(2,32)?Uint32Array:l<=Number.MAX_SAFE_INTEGER?O:null:null,O=class extends Array{constructor(t){super(t),this.fill(0)}},z,E=class{heap;length;static create(t){let e=k(t);if(!e)return[];x(E,z,!0);let i=new E(t,e);return x(E,z,!1),i}constructor(t,e){if(!I(E,z))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]}},R=E;z=new WeakMap,j(R,z,!1);var D=class{#g;#f;#p;#w;#R;#W;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#S;#s;#i;#t;#l;#c;#o;#h;#_;#r;#m;#b;#u;#y;#O;#a;static unsafeExposeInternals(t){return{starts:t.#b,ttls:t.#u,sizes:t.#m,keyMap:t.#s,keyList:t.#i,valList:t.#t,next:t.#l,prev:t.#c,get head(){return t.#o},get tail(){return t.#h},free:t.#_,isBackgroundFetch:e=>t.#e(e),backgroundFetch:(e,i,s,n)=>t.#x(e,i,s,n),moveToTail:e=>t.#C(e),indexes:e=>t.#A(e),rindexes:e=>t.#F(e),isStale:e=>t.#d(e)}}get max(){return this.#g}get maxSize(){return this.#f}get calculatedSize(){return this.#S}get size(){return this.#n}get fetchMethod(){return this.#R}get memoMethod(){return this.#W}get dispose(){return this.#p}get disposeAfter(){return this.#w}constructor(t){let{max:e=0,ttl:i,ttlResolution:s=1,ttlAutopurge:n,updateAgeOnGet:h,updateAgeOnHas:o,allowStale:r,dispose:g,disposeAfter:m,noDisposeOnSet:f,noUpdateTTL:u,maxSize:c=0,maxEntrySize:F=0,sizeCalculation:d,fetchMethod:S,memoMethod:a,noDeleteOnFetchRejection:w,noDeleteOnStaleGet:b,allowStaleOnFetchRejection:p,allowStaleOnFetchAbort:_,ignoreFetchAbort:v}=t;if(e!==0&&!A(e))throw new TypeError("max option must be a nonnegative integer");let y=e?k(e):Array;if(!y)throw new Error("invalid max value: "+e);if(this.#g=e,this.#f=c,this.maxEntrySize=F||this.#f,this.sizeCalculation=d,this.sizeCalculation){if(!this.#f&&!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(a!==void 0&&typeof a!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#W=a,S!==void 0&&typeof S!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#R=S,this.#O=!!S,this.#s=new Map,this.#i=new Array(e).fill(void 0),this.#t=new Array(e).fill(void 0),this.#l=new y(e),this.#c=new y(e),this.#o=0,this.#h=0,this.#_=R.create(e),this.#n=0,this.#S=0,typeof g=="function"&&(this.#p=g),typeof m=="function"?(this.#w=m,this.#r=[]):(this.#w=void 0,this.#r=void 0),this.#y=!!this.#p,this.#a=!!this.#w,this.noDisposeOnSet=!!f,this.noUpdateTTL=!!u,this.noDeleteOnFetchRejection=!!w,this.allowStaleOnFetchRejection=!!p,this.allowStaleOnFetchAbort=!!_,this.ignoreFetchAbort=!!v,this.maxEntrySize!==0){if(this.#f!==0&&!A(this.#f))throw new TypeError("maxSize must be a positive integer if specified");if(!A(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#P()}if(this.allowStale=!!r,this.noDeleteOnStaleGet=!!b,this.updateAgeOnGet=!!h,this.updateAgeOnHas=!!o,this.ttlResolution=A(s)||s===0?s:1,this.ttlAutopurge=!!n,this.ttl=i||0,this.ttl){if(!A(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#M()}if(this.#g===0&&this.ttl===0&&this.#f===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#g&&!this.#f){let C="LRU_CACHE_UNBOUNDED";V(C)&&(P.add(C),H("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",C,D))}}getRemainingTTL(t){return this.#s.has(t)?1/0:0}#M(){let t=new O(this.#g),e=new O(this.#g);this.#u=t,this.#b=e,this.#U=(n,h,o=T.now())=>{if(e[n]=h!==0?o:0,t[n]=h,h!==0&&this.ttlAutopurge){let r=setTimeout(()=>{this.#d(n)&&this.#T(this.#i[n],"expire")},h+1);r.unref&&r.unref()}},this.#z=n=>{e[n]=t[n]!==0?T.now():0},this.#E=(n,h)=>{if(t[h]){let o=t[h],r=e[h];if(!o||!r)return;n.ttl=o,n.start=r,n.now=i||s();let g=n.now-r;n.remainingTTL=o-g}};let i=0,s=()=>{let n=T.now();if(this.ttlResolution>0){i=n;let h=setTimeout(()=>i=0,this.ttlResolution);h.unref&&h.unref()}return n};this.getRemainingTTL=n=>{let h=this.#s.get(n);if(h===void 0)return 0;let o=t[h],r=e[h];if(!o||!r)return 1/0;let g=(i||s())-r;return o-g},this.#d=n=>{let h=e[n],o=t[n];return!!o&&!!h&&(i||s())-h>o}}#z=()=>{};#E=()=>{};#U=()=>{};#d=()=>!1;#P(){let t=new O(this.#g);this.#S=0,this.#m=t,this.#v=e=>{this.#S-=t[e],t[e]=0},this.#G=(e,i,s,n)=>{if(this.#e(i))return 0;if(!A(s))if(n){if(typeof n!="function")throw new TypeError("sizeCalculation must be a function");if(s=n(i,e),!A(s))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 s},this.#D=(e,i,s)=>{if(t[e]=i,this.#f){let n=this.#f-t[e];for(;this.#S>n;)this.#L(!0)}this.#S+=t[e],s&&(s.entrySize=i,s.totalCalculatedSize=this.#S)}}#v=t=>{};#D=(t,e,i)=>{};#G=(t,e,i,s)=>{if(i||s)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#A({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#h;!(!this.#I(e)||((t||!this.#d(e))&&(yield e),e===this.#o));)e=this.#c[e]}*#F({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#o;!(!this.#I(e)||((t||!this.#d(e))&&(yield e),e===this.#h));)e=this.#l[e]}#I(t){return t!==void 0&&this.#s.get(this.#i[t])===t}*entries(){for(let t of this.#A())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*rentries(){for(let t of this.#F())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*keys(){for(let t of this.#A()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*rkeys(){for(let t of this.#F()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*values(){for(let t of this.#A())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}*rvalues(){for(let t of this.#F())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(t,e={}){for(let i of this.#A()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;if(n!==void 0&&t(n,this.#i[i],this))return this.get(this.#i[i],e)}}forEach(t,e=this){for(let i of this.#A()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}rforEach(t,e=this){for(let i of this.#F()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}purgeStale(){let t=!1;for(let e of this.#F({allowStale:!0}))this.#d(e)&&(this.#T(this.#i[e],"expire"),t=!0);return t}info(t){let e=this.#s.get(t);if(e===void 0)return;let i=this.#t[e],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let n={value:s};if(this.#u&&this.#b){let h=this.#u[e],o=this.#b[e];if(h&&o){let r=h-(T.now()-o);n.ttl=r,n.start=Date.now()}}return this.#m&&(n.size=this.#m[e]),n}dump(){let t=[];for(let e of this.#A({allowStale:!0})){let i=this.#i[e],s=this.#t[e],n=this.#e(s)?s.__staleWhileFetching:s;if(n===void 0||i===void 0)continue;let h={value:n};if(this.#u&&this.#b){h.ttl=this.#u[e];let o=T.now()-this.#b[e];h.start=Math.floor(Date.now()-o)}this.#m&&(h.size=this.#m[e]),t.unshift([i,h])}return t}load(t){this.clear();for(let[e,i]of t){if(i.start){let s=Date.now()-i.start;i.start=T.now()-s}this.set(e,i.value,i)}}set(t,e,i={}){if(e===void 0)return this.delete(t),this;let{ttl:s=this.ttl,start:n,noDisposeOnSet:h=this.noDisposeOnSet,sizeCalculation:o=this.sizeCalculation,status:r}=i,{noUpdateTTL:g=this.noUpdateTTL}=i,m=this.#G(t,e,i.size||0,o);if(this.maxEntrySize&&m>this.maxEntrySize)return r&&(r.set="miss",r.maxEntrySizeExceeded=!0),this.#T(t,"set"),this;let f=this.#n===0?void 0:this.#s.get(t);if(f===void 0)f=this.#n===0?this.#h:this.#_.length!==0?this.#_.pop():this.#n===this.#g?this.#L(!1):this.#n,this.#i[f]=t,this.#t[f]=e,this.#s.set(t,f),this.#l[this.#h]=f,this.#c[f]=this.#h,this.#h=f,this.#n++,this.#D(f,m,r),r&&(r.set="add"),g=!1;else{this.#C(f);let u=this.#t[f];if(e!==u){if(this.#O&&this.#e(u)){u.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:c}=u;c!==void 0&&!h&&(this.#y&&this.#p?.(c,t,"set"),this.#a&&this.#r?.push([c,t,"set"]))}else h||(this.#y&&this.#p?.(u,t,"set"),this.#a&&this.#r?.push([u,t,"set"]));if(this.#v(f),this.#D(f,m,r),this.#t[f]=e,r){r.set="replace";let c=u&&this.#e(u)?u.__staleWhileFetching:u;c!==void 0&&(r.oldValue=c)}}else r&&(r.set="update")}if(s!==0&&!this.#u&&this.#M(),this.#u&&(g||this.#U(f,s,n),r&&this.#E(r,f)),!h&&this.#a&&this.#r){let u=this.#r,c;for(;c=u?.shift();)this.#w?.(...c)}return this}pop(){try{for(;this.#n;){let t=this.#t[this.#o];if(this.#L(!0),this.#e(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#a&&this.#r){let t=this.#r,e;for(;e=t?.shift();)this.#w?.(...e)}}}#L(t){let e=this.#o,i=this.#i[e],s=this.#t[e];return this.#O&&this.#e(s)?s.__abortController.abort(new Error("evicted")):(this.#y||this.#a)&&(this.#y&&this.#p?.(s,i,"evict"),this.#a&&this.#r?.push([s,i,"evict"])),this.#v(e),t&&(this.#i[e]=void 0,this.#t[e]=void 0,this.#_.push(e)),this.#n===1?(this.#o=this.#h=0,this.#_.length=0):this.#o=this.#l[e],this.#s.delete(i),this.#n--,e}has(t,e={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=e,n=this.#s.get(t);if(n!==void 0){let h=this.#t[n];if(this.#e(h)&&h.__staleWhileFetching===void 0)return!1;if(this.#d(n))s&&(s.has="stale",this.#E(s,n));else return i&&this.#z(n),s&&(s.has="hit",this.#E(s,n)),!0}else s&&(s.has="miss");return!1}peek(t,e={}){let{allowStale:i=this.allowStale}=e,s=this.#s.get(t);if(s===void 0||!i&&this.#d(s))return;let n=this.#t[s];return this.#e(n)?n.__staleWhileFetching:n}#x(t,e,i,s){let n=e===void 0?void 0:this.#t[e];if(this.#e(n))return n;let h=new W,{signal:o}=i;o?.addEventListener("abort",()=>h.abort(o.reason),{signal:h.signal});let r={signal:h.signal,options:i,context:s},g=(d,S=!1)=>{let{aborted:a}=h.signal,w=i.ignoreFetchAbort&&d!==void 0;if(i.status&&(a&&!S?(i.status.fetchAborted=!0,i.status.fetchError=h.signal.reason,w&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),a&&!w&&!S)return f(h.signal.reason);let b=c;return this.#t[e]===c&&(d===void 0?b.__staleWhileFetching?this.#t[e]=b.__staleWhileFetching:this.#T(t,"fetch"):(i.status&&(i.status.fetchUpdated=!0),this.set(t,d,r.options))),d},m=d=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=d),f(d)),f=d=>{let{aborted:S}=h.signal,a=S&&i.allowStaleOnFetchAbort,w=a||i.allowStaleOnFetchRejection,b=w||i.noDeleteOnFetchRejection,p=c;if(this.#t[e]===c&&(!b||p.__staleWhileFetching===void 0?this.#T(t,"fetch"):a||(this.#t[e]=p.__staleWhileFetching)),w)return i.status&&p.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),p.__staleWhileFetching;if(p.__returned===p)throw d},u=(d,S)=>{let a=this.#R?.(t,n,r);a&&a instanceof Promise&&a.then(w=>d(w===void 0?void 0:w),S),h.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(d(void 0),i.allowStaleOnFetchAbort&&(d=w=>g(w,!0)))})};i.status&&(i.status.fetchDispatched=!0);let c=new Promise(u).then(g,m),F=Object.assign(c,{__abortController:h,__staleWhileFetching:n,__returned:void 0});return e===void 0?(this.set(t,F,{...r.options,status:void 0}),e=this.#s.get(t)):this.#t[e]=F,F}#e(t){if(!this.#O)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty("__staleWhileFetching")&&e.__abortController instanceof W}async fetch(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:h=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:r=0,sizeCalculation:g=this.sizeCalculation,noUpdateTTL:m=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:u=this.allowStaleOnFetchRejection,ignoreFetchAbort:c=this.ignoreFetchAbort,allowStaleOnFetchAbort:F=this.allowStaleOnFetchAbort,context:d,forceRefresh:S=!1,status:a,signal:w}=e;if(!this.#O)return a&&(a.fetch="get"),this.get(t,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,status:a});let b={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,ttl:h,noDisposeOnSet:o,size:r,sizeCalculation:g,noUpdateTTL:m,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:F,ignoreFetchAbort:c,status:a,signal:w},p=this.#s.get(t);if(p===void 0){a&&(a.fetch="miss");let _=this.#x(t,p,b,d);return _.__returned=_}else{let _=this.#t[p];if(this.#e(_)){let U=i&&_.__staleWhileFetching!==void 0;return a&&(a.fetch="inflight",U&&(a.returnedStale=!0)),U?_.__staleWhileFetching:_.__returned=_}let v=this.#d(p);if(!S&&!v)return a&&(a.fetch="hit"),this.#C(p),s&&this.#z(p),a&&this.#E(a,p),_;let y=this.#x(t,p,b,d),L=y.__staleWhileFetching!==void 0&&i;return a&&(a.fetch=v?"stale":"refresh",L&&v&&(a.returnedStale=!0)),L?y.__staleWhileFetching:y.__returned=y}}async forceFetch(t,e={}){let i=await this.fetch(t,e);if(i===void 0)throw new Error("fetch() returned undefined");return i}memo(t,e={}){let i=this.#W;if(!i)throw new Error("no memoMethod provided to constructor");let{context:s,forceRefresh:n,...h}=e,o=this.get(t,h);if(!n&&o!==void 0)return o;let r=i(t,o,{options:h,context:s});return this.set(t,r,h),r}get(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:h}=e,o=this.#s.get(t);if(o!==void 0){let r=this.#t[o],g=this.#e(r);return h&&this.#E(h,o),this.#d(o)?(h&&(h.get="stale"),g?(h&&i&&r.__staleWhileFetching!==void 0&&(h.returnedStale=!0),i?r.__staleWhileFetching:void 0):(n||this.#T(t,"expire"),h&&i&&(h.returnedStale=!0),i?r:void 0)):(h&&(h.get="hit"),g?r.__staleWhileFetching:(this.#C(o),s&&this.#z(o),r))}else h&&(h.get="miss")}#j(t,e){this.#c[e]=t,this.#l[t]=e}#C(t){t!==this.#h&&(t===this.#o?this.#o=this.#l[t]:this.#j(this.#c[t],this.#l[t]),this.#j(this.#h,t),this.#h=t)}delete(t){return this.#T(t,"delete")}#T(t,e){let i=!1;if(this.#n!==0){let s=this.#s.get(t);if(s!==void 0)if(i=!0,this.#n===1)this.#N(e);else{this.#v(s);let n=this.#t[s];if(this.#e(n)?n.__abortController.abort(new Error("deleted")):(this.#y||this.#a)&&(this.#y&&this.#p?.(n,t,e),this.#a&&this.#r?.push([n,t,e])),this.#s.delete(t),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#c[s];else if(s===this.#o)this.#o=this.#l[s];else{let h=this.#c[s];this.#l[h]=this.#l[s];let o=this.#l[s];this.#c[o]=this.#c[s]}this.#n--,this.#_.push(s)}}if(this.#a&&this.#r?.length){let s=this.#r,n;for(;n=s?.shift();)this.#w?.(...n)}return i}clear(){return this.#N("delete")}#N(t){for(let e of this.#F({allowStale:!0})){let i=this.#t[e];if(this.#e(i))i.__abortController.abort(new Error("deleted"));else{let s=this.#i[e];this.#y&&this.#p?.(i,s,t),this.#a&&this.#r?.push([i,s,t])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#u&&this.#b&&(this.#u.fill(0),this.#b.fill(0)),this.#m&&this.#m.fill(0),this.#o=0,this.#h=0,this.#_.length=0,this.#S=0,this.#n=0,this.#a&&this.#r){let e=this.#r,i;for(;i=e?.shift();)this.#w?.(...i)}}};export{D as LRUCache}; -//# sourceMappingURL=index.min.js.map diff --git a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/esm/package.json b/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/esm/package.json deleted file mode 100644 index 3dbc1ca591c055..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/dist/esm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/package.json b/deps/npm/node_modules/node-gyp/node_modules/lru-cache/package.json deleted file mode 100644 index f3cd4c0cc53f7e..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/package.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "name": "lru-cache", - "publishConfig": { - "tag": "legacy-v10" - }, - "description": "A cache object that deletes the least-recently-used items.", - "version": "10.4.3", - "author": "Isaac Z. Schlueter ", - "keywords": [ - "mru", - "lru", - "cache" - ], - "sideEffects": false, - "scripts": { - "build": "npm run prepare", - "prepare": "tshy && bash fixup.sh", - "pretest": "npm run prepare", - "presnap": "npm run prepare", - "test": "tap", - "snap": "tap", - "preversion": "npm test", - "postversion": "npm publish", - "prepublishOnly": "git push origin --follow-tags", - "format": "prettier --write .", - "typedoc": "typedoc --tsconfig ./.tshy/esm.json ./src/*.ts", - "benchmark-results-typedoc": "bash scripts/benchmark-results-typedoc.sh", - "prebenchmark": "npm run prepare", - "benchmark": "make -C benchmark", - "preprofile": "npm run prepare", - "profile": "make -C benchmark profile" - }, - "main": "./dist/commonjs/index.js", - "types": "./dist/commonjs/index.d.ts", - "tshy": { - "exports": { - ".": "./src/index.ts", - "./min": { - "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": { - "type": "git", - "url": "git://github.com/isaacs/node-lru-cache.git" - }, - "devDependencies": { - "@types/node": "^20.2.5", - "@types/tap": "^15.0.6", - "benchmark": "^2.1.4", - "esbuild": "^0.17.11", - "eslint-config-prettier": "^8.5.0", - "marked": "^4.2.12", - "mkdirp": "^2.1.5", - "prettier": "^2.6.2", - "tap": "^20.0.3", - "tshy": "^2.0.0", - "tslib": "^2.4.0", - "typedoc": "^0.25.3", - "typescript": "^5.2.2" - }, - "license": "ISC", - "files": [ - "dist" - ], - "prettier": { - "semi": false, - "printWidth": 70, - "tabWidth": 2, - "useTabs": false, - "singleQuote": true, - "jsxSingleQuote": false, - "bracketSameLine": true, - "arrowParens": "avoid", - "endOfLine": "lf" - }, - "tap": { - "node-arg": [ - "--expose-gc" - ], - "plugin": [ - "@tapjs/clock" - ] - }, - "exports": { - ".": { - "import": { - "types": "./dist/esm/index.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/commonjs/index.d.ts", - "default": "./dist/commonjs/index.js" - } - }, - "./min": { - "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" - } - } - }, - "type": "module", - "module": "./dist/esm/index.js" -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/LICENSE b/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/LICENSE deleted file mode 100644 index 1808eb2844231c..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -ISC License - -Copyright 2017-2022 (c) npm, Inc. - -Permission to use, copy, modify, and/or distribute this software for -any purpose with or without fee is hereby granted, provided that the -above copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE COPYRIGHT HOLDER DISCLAIMS -ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE -OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE -USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/entry.js b/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/entry.js deleted file mode 100644 index bfcfacbcc95e18..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/entry.js +++ /dev/null @@ -1,471 +0,0 @@ -const { Request, Response } = require('minipass-fetch') -const { Minipass } = require('minipass') -const MinipassFlush = require('minipass-flush') -const cacache = require('cacache') -const url = require('url') - -const CachingMinipassPipeline = require('../pipeline.js') -const CachePolicy = require('./policy.js') -const cacheKey = require('./key.js') -const remote = require('../remote.js') - -const hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop) - -// allow list for request headers that will be written to the cache index -// note: we will also store any request headers -// that are named in a response's vary header -const KEEP_REQUEST_HEADERS = [ - 'accept-charset', - 'accept-encoding', - 'accept-language', - 'accept', - 'cache-control', -] - -// allow list for response headers that will be written to the cache index -// note: we must not store the real response's age header, or when we load -// a cache policy based on the metadata it will think the cached response -// is always stale -const KEEP_RESPONSE_HEADERS = [ - 'cache-control', - 'content-encoding', - 'content-language', - 'content-type', - 'date', - 'etag', - 'expires', - 'last-modified', - 'link', - 'location', - 'pragma', - 'vary', -] - -// return an object containing all metadata to be written to the index -const getMetadata = (request, response, options) => { - const metadata = { - time: Date.now(), - url: request.url, - reqHeaders: {}, - resHeaders: {}, - - // options on which we must match the request and vary the response - options: { - compress: options.compress != null ? options.compress : request.compress, - }, - } - - // only save the status if it's not a 200 or 304 - if (response.status !== 200 && response.status !== 304) { - metadata.status = response.status - } - - for (const name of KEEP_REQUEST_HEADERS) { - if (request.headers.has(name)) { - metadata.reqHeaders[name] = request.headers.get(name) - } - } - - // if the request's host header differs from the host in the url - // we need to keep it, otherwise it's just noise and we ignore it - const host = request.headers.get('host') - const parsedUrl = new url.URL(request.url) - if (host && parsedUrl.host !== host) { - metadata.reqHeaders.host = host - } - - // if the response has a vary header, make sure - // we store the relevant request headers too - if (response.headers.has('vary')) { - const vary = response.headers.get('vary') - // a vary of "*" means every header causes a different response. - // in that scenario, we do not include any additional headers - // as the freshness check will always fail anyway and we don't - // want to bloat the cache indexes - if (vary !== '*') { - // copy any other request headers that will vary the response - const varyHeaders = vary.trim().toLowerCase().split(/\s*,\s*/) - for (const name of varyHeaders) { - if (request.headers.has(name)) { - metadata.reqHeaders[name] = request.headers.get(name) - } - } - } - } - - for (const name of KEEP_RESPONSE_HEADERS) { - if (response.headers.has(name)) { - metadata.resHeaders[name] = response.headers.get(name) - } - } - - for (const name of options.cacheAdditionalHeaders) { - if (response.headers.has(name)) { - metadata.resHeaders[name] = response.headers.get(name) - } - } - - return metadata -} - -// symbols used to hide objects that may be lazily evaluated in a getter -const _request = Symbol('request') -const _response = Symbol('response') -const _policy = Symbol('policy') - -class CacheEntry { - constructor ({ entry, request, response, options }) { - if (entry) { - this.key = entry.key - this.entry = entry - // previous versions of this module didn't write an explicit timestamp in - // the metadata, so fall back to the entry's timestamp. we can't use the - // entry timestamp to determine staleness because cacache will update it - // when it verifies its data - this.entry.metadata.time = this.entry.metadata.time || this.entry.time - } else { - this.key = cacheKey(request) - } - - this.options = options - - // these properties are behind getters that lazily evaluate - this[_request] = request - this[_response] = response - this[_policy] = null - } - - // returns a CacheEntry instance that satisfies the given request - // or undefined if no existing entry satisfies - static async find (request, options) { - try { - // compacts the index and returns an array of unique entries - var matches = await cacache.index.compact(options.cachePath, cacheKey(request), (A, B) => { - const entryA = new CacheEntry({ entry: A, options }) - const entryB = new CacheEntry({ entry: B, options }) - return entryA.policy.satisfies(entryB.request) - }, { - validateEntry: (entry) => { - // clean out entries with a buggy content-encoding value - if (entry.metadata && - entry.metadata.resHeaders && - entry.metadata.resHeaders['content-encoding'] === null) { - return false - } - - // if an integrity is null, it needs to have a status specified - if (entry.integrity === null) { - return !!(entry.metadata && entry.metadata.status) - } - - return true - }, - }) - } catch (err) { - // if the compact request fails, ignore the error and return - return - } - - // a cache mode of 'reload' means to behave as though we have no cache - // on the way to the network. return undefined to allow cacheFetch to - // create a brand new request no matter what. - if (options.cache === 'reload') { - return - } - - // find the specific entry that satisfies the request - let match - for (const entry of matches) { - const _entry = new CacheEntry({ - entry, - options, - }) - - if (_entry.policy.satisfies(request)) { - match = _entry - break - } - } - - return match - } - - // if the user made a PUT/POST/PATCH then we invalidate our - // cache for the same url by deleting the index entirely - static async invalidate (request, options) { - const key = cacheKey(request) - try { - await cacache.rm.entry(options.cachePath, key, { removeFully: true }) - } catch (err) { - // ignore errors - } - } - - get request () { - if (!this[_request]) { - this[_request] = new Request(this.entry.metadata.url, { - method: 'GET', - headers: this.entry.metadata.reqHeaders, - ...this.entry.metadata.options, - }) - } - - return this[_request] - } - - get response () { - if (!this[_response]) { - this[_response] = new Response(null, { - url: this.entry.metadata.url, - counter: this.options.counter, - status: this.entry.metadata.status || 200, - headers: { - ...this.entry.metadata.resHeaders, - 'content-length': this.entry.size, - }, - }) - } - - return this[_response] - } - - get policy () { - if (!this[_policy]) { - this[_policy] = new CachePolicy({ - entry: this.entry, - request: this.request, - response: this.response, - options: this.options, - }) - } - - return this[_policy] - } - - // wraps the response in a pipeline that stores the data - // in the cache while the user consumes it - async store (status) { - // if we got a status other than 200, 301, or 308, - // or the CachePolicy forbid storage, append the - // cache status header and return it untouched - if ( - this.request.method !== 'GET' || - ![200, 301, 308].includes(this.response.status) || - !this.policy.storable() - ) { - this.response.headers.set('x-local-cache-status', 'skip') - return this.response - } - - const size = this.response.headers.get('content-length') - const cacheOpts = { - algorithms: this.options.algorithms, - metadata: getMetadata(this.request, this.response, this.options), - size, - integrity: this.options.integrity, - integrityEmitter: this.response.body.hasIntegrityEmitter && this.response.body, - } - - let body = null - // we only set a body if the status is a 200, redirects are - // stored as metadata only - if (this.response.status === 200) { - let cacheWriteResolve, cacheWriteReject - const cacheWritePromise = new Promise((resolve, reject) => { - cacheWriteResolve = resolve - cacheWriteReject = reject - }).catch((err) => { - body.emit('error', err) - }) - - body = new CachingMinipassPipeline({ events: ['integrity', 'size'] }, new MinipassFlush({ - flush () { - return cacheWritePromise - }, - })) - // this is always true since if we aren't reusing the one from the remote fetch, we - // are using the one from cacache - body.hasIntegrityEmitter = true - - const onResume = () => { - const tee = new Minipass() - const cacheStream = cacache.put.stream(this.options.cachePath, this.key, cacheOpts) - // re-emit the integrity and size events on our new response body so they can be reused - cacheStream.on('integrity', i => body.emit('integrity', i)) - cacheStream.on('size', s => body.emit('size', s)) - // stick a flag on here so downstream users will know if they can expect integrity events - tee.pipe(cacheStream) - // TODO if the cache write fails, log a warning but return the response anyway - // eslint-disable-next-line promise/catch-or-return - cacheStream.promise().then(cacheWriteResolve, cacheWriteReject) - body.unshift(tee) - body.unshift(this.response.body) - } - - body.once('resume', onResume) - body.once('end', () => body.removeListener('resume', onResume)) - } else { - await cacache.index.insert(this.options.cachePath, this.key, null, cacheOpts) - } - - // note: we do not set the x-local-cache-hash header because we do not know - // the hash value until after the write to the cache completes, which doesn't - // happen until after the response has been sent and it's too late to write - // the header anyway - this.response.headers.set('x-local-cache', encodeURIComponent(this.options.cachePath)) - this.response.headers.set('x-local-cache-key', encodeURIComponent(this.key)) - this.response.headers.set('x-local-cache-mode', 'stream') - this.response.headers.set('x-local-cache-status', status) - this.response.headers.set('x-local-cache-time', new Date().toISOString()) - const newResponse = new Response(body, { - url: this.response.url, - status: this.response.status, - headers: this.response.headers, - counter: this.options.counter, - }) - return newResponse - } - - // use the cached data to create a response and return it - async respond (method, options, status) { - let response - if (method === 'HEAD' || [301, 308].includes(this.response.status)) { - // if the request is a HEAD, or the response is a redirect, - // then the metadata in the entry already includes everything - // we need to build a response - response = this.response - } else { - // we're responding with a full cached response, so create a body - // that reads from cacache and attach it to a new Response - const body = new Minipass() - const headers = { ...this.policy.responseHeaders() } - - const onResume = () => { - const cacheStream = cacache.get.stream.byDigest( - this.options.cachePath, this.entry.integrity, { memoize: this.options.memoize } - ) - cacheStream.on('error', async (err) => { - cacheStream.pause() - if (err.code === 'EINTEGRITY') { - await cacache.rm.content( - this.options.cachePath, this.entry.integrity, { memoize: this.options.memoize } - ) - } - if (err.code === 'ENOENT' || err.code === 'EINTEGRITY') { - await CacheEntry.invalidate(this.request, this.options) - } - body.emit('error', err) - cacheStream.resume() - }) - // emit the integrity and size events based on our metadata so we're consistent - body.emit('integrity', this.entry.integrity) - body.emit('size', Number(headers['content-length'])) - cacheStream.pipe(body) - } - - body.once('resume', onResume) - body.once('end', () => body.removeListener('resume', onResume)) - response = new Response(body, { - url: this.entry.metadata.url, - counter: options.counter, - status: 200, - headers, - }) - } - - response.headers.set('x-local-cache', encodeURIComponent(this.options.cachePath)) - response.headers.set('x-local-cache-hash', encodeURIComponent(this.entry.integrity)) - response.headers.set('x-local-cache-key', encodeURIComponent(this.key)) - response.headers.set('x-local-cache-mode', 'stream') - response.headers.set('x-local-cache-status', status) - response.headers.set('x-local-cache-time', new Date(this.entry.metadata.time).toUTCString()) - return response - } - - // use the provided request along with this cache entry to - // revalidate the stored response. returns a response, either - // from the cache or from the update - async revalidate (request, options) { - const revalidateRequest = new Request(request, { - headers: this.policy.revalidationHeaders(request), - }) - - try { - // NOTE: be sure to remove the headers property from the - // user supplied options, since we have already defined - // them on the new request object. if they're still in the - // options then those will overwrite the ones from the policy - var response = await remote(revalidateRequest, { - ...options, - headers: undefined, - }) - } catch (err) { - // if the network fetch fails, return the stale - // cached response unless it has a cache-control - // of 'must-revalidate' - if (!this.policy.mustRevalidate) { - return this.respond(request.method, options, 'stale') - } - - throw err - } - - if (this.policy.revalidated(revalidateRequest, response)) { - // we got a 304, write a new index to the cache and respond from cache - const metadata = getMetadata(request, response, options) - // 304 responses do not include headers that are specific to the response data - // since they do not include a body, so we copy values for headers that were - // in the old cache entry to the new one, if the new metadata does not already - // include that header - for (const name of KEEP_RESPONSE_HEADERS) { - if ( - !hasOwnProperty(metadata.resHeaders, name) && - hasOwnProperty(this.entry.metadata.resHeaders, name) - ) { - metadata.resHeaders[name] = this.entry.metadata.resHeaders[name] - } - } - - for (const name of options.cacheAdditionalHeaders) { - const inMeta = hasOwnProperty(metadata.resHeaders, name) - const inEntry = hasOwnProperty(this.entry.metadata.resHeaders, name) - const inPolicy = hasOwnProperty(this.policy.response.headers, name) - - // if the header is in the existing entry, but it is not in the metadata - // then we need to write it to the metadata as this will refresh the on-disk cache - if (!inMeta && inEntry) { - metadata.resHeaders[name] = this.entry.metadata.resHeaders[name] - } - // if the header is in the metadata, but not in the policy, then we need to set - // it in the policy so that it's included in the immediate response. future - // responses will load a new cache entry, so we don't need to change that - if (!inPolicy && inMeta) { - this.policy.response.headers[name] = metadata.resHeaders[name] - } - } - - try { - await cacache.index.insert(options.cachePath, this.key, this.entry.integrity, { - size: this.entry.size, - metadata, - }) - } catch (err) { - // if updating the cache index fails, we ignore it and - // respond anyway - } - return this.respond(request.method, options, 'revalidated') - } - - // if we got a modified response, create a new entry based on it - const newEntry = new CacheEntry({ - request, - response, - options, - }) - - // respond with the new entry while writing it to the cache - return newEntry.store('updated') - } -} - -module.exports = CacheEntry diff --git a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/errors.js b/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/errors.js deleted file mode 100644 index 67a66573bebe66..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/errors.js +++ /dev/null @@ -1,11 +0,0 @@ -class NotCachedError extends Error { - constructor (url) { - /* eslint-disable-next-line max-len */ - super(`request to ${url} failed: cache mode is 'only-if-cached' but no cached response is available.`) - this.code = 'ENOTCACHED' - } -} - -module.exports = { - NotCachedError, -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/index.js b/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/index.js deleted file mode 100644 index 0de49d23fb9336..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/index.js +++ /dev/null @@ -1,49 +0,0 @@ -const { NotCachedError } = require('./errors.js') -const CacheEntry = require('./entry.js') -const remote = require('../remote.js') - -// do whatever is necessary to get a Response and return it -const cacheFetch = async (request, options) => { - // try to find a cached entry that satisfies this request - const entry = await CacheEntry.find(request, options) - if (!entry) { - // no cached result, if the cache mode is 'only-if-cached' that's a failure - if (options.cache === 'only-if-cached') { - throw new NotCachedError(request.url) - } - - // otherwise, we make a request, store it and return it - const response = await remote(request, options) - const newEntry = new CacheEntry({ request, response, options }) - return newEntry.store('miss') - } - - // we have a cached response that satisfies this request, however if the cache - // mode is 'no-cache' then we send the revalidation request no matter what - if (options.cache === 'no-cache') { - return entry.revalidate(request, options) - } - - // if the cached entry is not stale, or if the cache mode is 'force-cache' or - // 'only-if-cached' we can respond with the cached entry. set the status - // based on the result of needsRevalidation and respond - const _needsRevalidation = entry.policy.needsRevalidation(request) - if (options.cache === 'force-cache' || - options.cache === 'only-if-cached' || - !_needsRevalidation) { - return entry.respond(request.method, options, _needsRevalidation ? 'stale' : 'hit') - } - - // if we got here, the cache entry is stale so revalidate it - return entry.revalidate(request, options) -} - -cacheFetch.invalidate = async (request, options) => { - if (!options.cachePath) { - return - } - - return CacheEntry.invalidate(request, options) -} - -module.exports = cacheFetch diff --git a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/key.js b/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/key.js deleted file mode 100644 index f7684d562b7fae..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/key.js +++ /dev/null @@ -1,17 +0,0 @@ -const { URL, format } = require('url') - -// options passed to url.format() when generating a key -const formatOptions = { - auth: false, - fragment: false, - search: true, - unicode: false, -} - -// returns a string to be used as the cache key for the Request -const cacheKey = (request) => { - const parsed = new URL(request.url) - return `make-fetch-happen:request-cache:${format(parsed, formatOptions)}` -} - -module.exports = cacheKey diff --git a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/policy.js b/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/policy.js deleted file mode 100644 index ada3c8600dae92..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/cache/policy.js +++ /dev/null @@ -1,161 +0,0 @@ -const CacheSemantics = require('http-cache-semantics') -const Negotiator = require('negotiator') -const ssri = require('ssri') - -// options passed to http-cache-semantics constructor -const policyOptions = { - shared: false, - ignoreCargoCult: true, -} - -// a fake empty response, used when only testing the -// request for storability -const emptyResponse = { status: 200, headers: {} } - -// returns a plain object representation of the Request -const requestObject = (request) => { - const _obj = { - method: request.method, - url: request.url, - headers: {}, - compress: request.compress, - } - - request.headers.forEach((value, key) => { - _obj.headers[key] = value - }) - - return _obj -} - -// returns a plain object representation of the Response -const responseObject = (response) => { - const _obj = { - status: response.status, - headers: {}, - } - - response.headers.forEach((value, key) => { - _obj.headers[key] = value - }) - - return _obj -} - -class CachePolicy { - constructor ({ entry, request, response, options }) { - this.entry = entry - this.request = requestObject(request) - this.response = responseObject(response) - this.options = options - this.policy = new CacheSemantics(this.request, this.response, policyOptions) - - if (this.entry) { - // if we have an entry, copy the timestamp to the _responseTime - // this is necessary because the CacheSemantics constructor forces - // the value to Date.now() which means a policy created from a - // cache entry is likely to always identify itself as stale - this.policy._responseTime = this.entry.metadata.time - } - } - - // static method to quickly determine if a request alone is storable - static storable (request, options) { - // no cachePath means no caching - if (!options.cachePath) { - return false - } - - // user explicitly asked not to cache - if (options.cache === 'no-store') { - return false - } - - // we only cache GET and HEAD requests - if (!['GET', 'HEAD'].includes(request.method)) { - return false - } - - // otherwise, let http-cache-semantics make the decision - // based on the request's headers - const policy = new CacheSemantics(requestObject(request), emptyResponse, policyOptions) - return policy.storable() - } - - // returns true if the policy satisfies the request - satisfies (request) { - const _req = requestObject(request) - if (this.request.headers.host !== _req.headers.host) { - return false - } - - if (this.request.compress !== _req.compress) { - return false - } - - const negotiatorA = new Negotiator(this.request) - const negotiatorB = new Negotiator(_req) - - if (JSON.stringify(negotiatorA.mediaTypes()) !== JSON.stringify(negotiatorB.mediaTypes())) { - return false - } - - if (JSON.stringify(negotiatorA.languages()) !== JSON.stringify(negotiatorB.languages())) { - return false - } - - if (JSON.stringify(negotiatorA.encodings()) !== JSON.stringify(negotiatorB.encodings())) { - return false - } - - if (this.options.integrity) { - return ssri.parse(this.options.integrity).match(this.entry.integrity) - } - - return true - } - - // returns true if the request and response allow caching - storable () { - return this.policy.storable() - } - - // NOTE: this is a hack to avoid parsing the cache-control - // header ourselves, it returns true if the response's - // cache-control contains must-revalidate - get mustRevalidate () { - return !!this.policy._rescc['must-revalidate'] - } - - // returns true if the cached response requires revalidation - // for the given request - needsRevalidation (request) { - const _req = requestObject(request) - // force method to GET because we only cache GETs - // but can serve a HEAD from a cached GET - _req.method = 'GET' - return !this.policy.satisfiesWithoutRevalidation(_req) - } - - responseHeaders () { - return this.policy.responseHeaders() - } - - // returns a new object containing the appropriate headers - // to send a revalidation request - revalidationHeaders (request) { - const _req = requestObject(request) - return this.policy.revalidationHeaders(_req) - } - - // returns true if the request/response was revalidated - // successfully. returns false if a new response was received - revalidated (request, response) { - const _req = requestObject(request) - const _res = responseObject(response) - const policy = this.policy.revalidatedPolicy(_req, _res) - return !policy.modified - } -} - -module.exports = CachePolicy diff --git a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/fetch.js b/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/fetch.js deleted file mode 100644 index 233ba67e165502..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/fetch.js +++ /dev/null @@ -1,118 +0,0 @@ -'use strict' - -const { FetchError, Request, isRedirect } = require('minipass-fetch') -const url = require('url') - -const CachePolicy = require('./cache/policy.js') -const cache = require('./cache/index.js') -const remote = require('./remote.js') - -// given a Request, a Response and user options -// return true if the response is a redirect that -// can be followed. we throw errors that will result -// in the fetch being rejected if the redirect is -// possible but invalid for some reason -const canFollowRedirect = (request, response, options) => { - if (!isRedirect(response.status)) { - return false - } - - if (options.redirect === 'manual') { - return false - } - - if (options.redirect === 'error') { - throw new FetchError(`redirect mode is set to error: ${request.url}`, - 'no-redirect', { code: 'ENOREDIRECT' }) - } - - if (!response.headers.has('location')) { - throw new FetchError(`redirect location header missing for: ${request.url}`, - 'no-location', { code: 'EINVALIDREDIRECT' }) - } - - if (request.counter >= request.follow) { - throw new FetchError(`maximum redirect reached at: ${request.url}`, - 'max-redirect', { code: 'EMAXREDIRECT' }) - } - - return true -} - -// given a Request, a Response, and the user's options return an object -// with a new Request and a new options object that will be used for -// following the redirect -const getRedirect = (request, response, options) => { - const _opts = { ...options } - const location = response.headers.get('location') - const redirectUrl = new url.URL(location, /^https?:/.test(location) ? undefined : request.url) - // Comment below is used under the following license: - /** - * @license - * Copyright (c) 2010-2012 Mikeal Rogers - * 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. - */ - - // Remove authorization if changing hostnames (but not if just - // changing ports or protocols). This matches the behavior of request: - // https://github.com/request/request/blob/b12a6245/lib/redirect.js#L134-L138 - if (new url.URL(request.url).hostname !== redirectUrl.hostname) { - request.headers.delete('authorization') - request.headers.delete('cookie') - } - - // for POST request with 301/302 response, or any request with 303 response, - // use GET when following redirect - if ( - response.status === 303 || - (request.method === 'POST' && [301, 302].includes(response.status)) - ) { - _opts.method = 'GET' - _opts.body = null - request.headers.delete('content-length') - } - - _opts.headers = {} - request.headers.forEach((value, key) => { - _opts.headers[key] = value - }) - - _opts.counter = ++request.counter - const redirectReq = new Request(url.format(redirectUrl), _opts) - return { - request: redirectReq, - options: _opts, - } -} - -const fetch = async (request, options) => { - const response = CachePolicy.storable(request, options) - ? await cache(request, options) - : await remote(request, options) - - // if the request wasn't a GET or HEAD, and the response - // status is between 200 and 399 inclusive, invalidate the - // request url - if (!['GET', 'HEAD'].includes(request.method) && - response.status >= 200 && - response.status <= 399) { - await cache.invalidate(request, options) - } - - if (!canFollowRedirect(request, response, options)) { - return response - } - - const redirect = getRedirect(request, response, options) - return fetch(redirect.request, redirect.options) -} - -module.exports = fetch diff --git a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/index.js b/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/index.js deleted file mode 100644 index 2f12e8e1b61131..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/index.js +++ /dev/null @@ -1,41 +0,0 @@ -const { FetchError, Headers, Request, Response } = require('minipass-fetch') - -const configureOptions = require('./options.js') -const fetch = require('./fetch.js') - -const makeFetchHappen = (url, opts) => { - const options = configureOptions(opts) - - const request = new Request(url, options) - return fetch(request, options) -} - -makeFetchHappen.defaults = (defaultUrl, defaultOptions = {}, wrappedFetch = makeFetchHappen) => { - if (typeof defaultUrl === 'object') { - defaultOptions = defaultUrl - defaultUrl = null - } - - const defaultedFetch = (url, options = {}) => { - const finalUrl = url || defaultUrl - const finalOptions = { - ...defaultOptions, - ...options, - headers: { - ...defaultOptions.headers, - ...options.headers, - }, - } - return wrappedFetch(finalUrl, finalOptions) - } - - defaultedFetch.defaults = (defaultUrl1, defaultOptions1 = {}) => - makeFetchHappen.defaults(defaultUrl1, defaultOptions1, defaultedFetch) - return defaultedFetch -} - -module.exports = makeFetchHappen -module.exports.FetchError = FetchError -module.exports.Headers = Headers -module.exports.Request = Request -module.exports.Response = Response diff --git a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/options.js b/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/options.js deleted file mode 100644 index db51cc63248176..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/options.js +++ /dev/null @@ -1,59 +0,0 @@ -const dns = require('dns') - -const conditionalHeaders = [ - 'if-modified-since', - 'if-none-match', - 'if-unmodified-since', - 'if-match', - 'if-range', -] - -const configureOptions = (opts) => { - const { strictSSL, ...options } = { ...opts } - options.method = options.method ? options.method.toUpperCase() : 'GET' - - if (strictSSL === undefined || strictSSL === null) { - options.rejectUnauthorized = process.env.NODE_TLS_REJECT_UNAUTHORIZED !== '0' - } else { - options.rejectUnauthorized = strictSSL !== false - } - - if (!options.retry) { - options.retry = { retries: 0 } - } else if (typeof options.retry === 'string') { - const retries = parseInt(options.retry, 10) - if (isFinite(retries)) { - options.retry = { retries } - } else { - options.retry = { retries: 0 } - } - } else if (typeof options.retry === 'number') { - options.retry = { retries: options.retry } - } else { - options.retry = { retries: 0, ...options.retry } - } - - options.dns = { ttl: 5 * 60 * 1000, lookup: dns.lookup, ...options.dns } - - options.cache = options.cache || 'default' - if (options.cache === 'default') { - const hasConditionalHeader = Object.keys(options.headers || {}).some((name) => { - return conditionalHeaders.includes(name.toLowerCase()) - }) - if (hasConditionalHeader) { - options.cache = 'no-store' - } - } - - options.cacheAdditionalHeaders = options.cacheAdditionalHeaders || [] - - // cacheManager is deprecated, but if it's set and - // cachePath is not we should copy it to the new field - if (options.cacheManager && !options.cachePath) { - options.cachePath = options.cacheManager - } - - return options -} - -module.exports = configureOptions diff --git a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/pipeline.js b/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/pipeline.js deleted file mode 100644 index b1d221b2d0ce31..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/pipeline.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict' - -const MinipassPipeline = require('minipass-pipeline') - -class CachingMinipassPipeline extends MinipassPipeline { - #events = [] - #data = new Map() - - constructor (opts, ...streams) { - // CRITICAL: do NOT pass the streams to the call to super(), this will start - // the flow of data and potentially cause the events we need to catch to emit - // before we've finished our own setup. instead we call super() with no args, - // finish our setup, and then push the streams into ourselves to start the - // data flow - super() - this.#events = opts.events - - /* istanbul ignore next - coverage disabled because this is pointless to test here */ - if (streams.length) { - this.push(...streams) - } - } - - on (event, handler) { - if (this.#events.includes(event) && this.#data.has(event)) { - return handler(...this.#data.get(event)) - } - - return super.on(event, handler) - } - - emit (event, ...data) { - if (this.#events.includes(event)) { - this.#data.set(event, data) - } - - return super.emit(event, ...data) - } -} - -module.exports = CachingMinipassPipeline diff --git a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/remote.js b/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/remote.js deleted file mode 100644 index 1d640e5380baaf..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/lib/remote.js +++ /dev/null @@ -1,132 +0,0 @@ -const { Minipass } = require('minipass') -const fetch = require('minipass-fetch') -const promiseRetry = require('promise-retry') -const ssri = require('ssri') -const { log } = require('proc-log') - -const CachingMinipassPipeline = require('./pipeline.js') -const { getAgent } = require('@npmcli/agent') -const pkg = require('../package.json') - -const USER_AGENT = `${pkg.name}/${pkg.version} (+https://npm.im/${pkg.name})` - -const RETRY_ERRORS = [ - 'ECONNRESET', // remote socket closed on us - 'ECONNREFUSED', // remote host refused to open connection - 'EADDRINUSE', // failed to bind to a local port (proxy?) - 'ETIMEDOUT', // someone in the transaction is WAY TOO SLOW - // from @npmcli/agent - 'ECONNECTIONTIMEOUT', - 'EIDLETIMEOUT', - 'ERESPONSETIMEOUT', - 'ETRANSFERTIMEOUT', - // Known codes we do NOT retry on: - // ENOTFOUND (getaddrinfo failure. Either bad hostname, or offline) - // EINVALIDPROXY // invalid protocol from @npmcli/agent - // EINVALIDRESPONSE // invalid status code from @npmcli/agent -] - -const RETRY_TYPES = [ - 'request-timeout', -] - -// make a request directly to the remote source, -// retrying certain classes of errors as well as -// following redirects (through the cache if necessary) -// and verifying response integrity -const remoteFetch = (request, options) => { - // options.signal is intended for the fetch itself, not the agent. Attaching it to the agent will re-use that signal across multiple requests, which prevents any connections beyond the first one. - const agent = getAgent(request.url, { ...options, signal: undefined }) - if (!request.headers.has('connection')) { - request.headers.set('connection', agent ? 'keep-alive' : 'close') - } - - if (!request.headers.has('user-agent')) { - request.headers.set('user-agent', USER_AGENT) - } - - // keep our own options since we're overriding the agent - // and the redirect mode - const _opts = { - ...options, - agent, - redirect: 'manual', - } - - return promiseRetry(async (retryHandler, attemptNum) => { - const req = new fetch.Request(request, _opts) - try { - let res = await fetch(req, _opts) - if (_opts.integrity && res.status === 200) { - // we got a 200 response and the user has specified an expected - // integrity value, so wrap the response in an ssri stream to verify it - const integrityStream = ssri.integrityStream({ - algorithms: _opts.algorithms, - integrity: _opts.integrity, - size: _opts.size, - }) - const pipeline = new CachingMinipassPipeline({ - events: ['integrity', 'size'], - }, res.body, integrityStream) - // we also propagate the integrity and size events out to the pipeline so we can use - // this new response body as an integrityEmitter for cacache - integrityStream.on('integrity', i => pipeline.emit('integrity', i)) - integrityStream.on('size', s => pipeline.emit('size', s)) - res = new fetch.Response(pipeline, res) - // set an explicit flag so we know if our response body will emit integrity and size - res.body.hasIntegrityEmitter = true - } - - res.headers.set('x-fetch-attempts', attemptNum) - - // do not retry POST requests, or requests with a streaming body - // do retry requests with a 408, 420, 429 or 500+ status in the response - const isStream = Minipass.isStream(req.body) - const isRetriable = req.method !== 'POST' && - !isStream && - ([408, 420, 429].includes(res.status) || res.status >= 500) - - if (isRetriable) { - if (typeof options.onRetry === 'function') { - options.onRetry(res) - } - - /* eslint-disable-next-line max-len */ - log.http('fetch', `${req.method} ${req.url} attempt ${attemptNum} failed with ${res.status}`) - return retryHandler(res) - } - - return res - } catch (err) { - const code = (err.code === 'EPROMISERETRY') - ? err.retried.code - : err.code - - // err.retried will be the thing that was thrown from above - // if it's a response, we just got a bad status code and we - // can re-throw to allow the retry - const isRetryError = err.retried instanceof fetch.Response || - (RETRY_ERRORS.includes(code) && RETRY_TYPES.includes(err.type)) - - if (req.method === 'POST' || isRetryError) { - throw err - } - - if (typeof options.onRetry === 'function') { - options.onRetry(err) - } - - log.http('fetch', `${req.method} ${req.url} attempt ${attemptNum} failed with ${err.code}`) - return retryHandler(err) - } - }, options.retry).catch((err) => { - // don't reject for http errors, just return them - if (err.status >= 400 && err.type !== 'system') { - return err - } - - throw err - }) -} - -module.exports = remoteFetch diff --git a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/package.json b/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/package.json deleted file mode 100644 index 054fe841f13b73..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/make-fetch-happen/package.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "name": "make-fetch-happen", - "version": "14.0.3", - "description": "Opinionated, caching, retrying fetch client", - "main": "lib/index.js", - "files": [ - "bin/", - "lib/" - ], - "scripts": { - "test": "tap", - "posttest": "npm run lint", - "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\"", - "lint": "npm run eslint", - "lintfix": "npm run eslint -- --fix", - "postlint": "template-oss-check", - "snap": "tap", - "template-oss-apply": "template-oss-apply --force" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/npm/make-fetch-happen.git" - }, - "keywords": [ - "http", - "request", - "fetch", - "mean girls", - "caching", - "cache", - "subresource integrity" - ], - "author": "GitHub Inc.", - "license": "ISC", - "dependencies": { - "@npmcli/agent": "^3.0.0", - "cacache": "^19.0.1", - "http-cache-semantics": "^4.1.1", - "minipass": "^7.0.2", - "minipass-fetch": "^4.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^1.0.0", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1", - "ssri": "^12.0.0" - }, - "devDependencies": { - "@npmcli/eslint-config": "^5.0.0", - "@npmcli/template-oss": "4.23.4", - "nock": "^13.2.4", - "safe-buffer": "^5.2.1", - "standard-version": "^9.3.2", - "tap": "^16.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - }, - "tap": { - "color": 1, - "files": "test/*.js", - "check-coverage": true, - "timeout": 60, - "nyc-arg": [ - "--exclude", - "tap-snapshots/**" - ] - }, - "templateOSS": { - "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.23.4", - "publish": "true" - } -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js b/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js deleted file mode 100644 index 5fc86bbd0116c9..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.assertValidPattern = void 0; -const MAX_PATTERN_LENGTH = 1024 * 64; -const assertValidPattern = (pattern) => { - if (typeof pattern !== 'string') { - throw new TypeError('invalid pattern'); - } - if (pattern.length > MAX_PATTERN_LENGTH) { - throw new TypeError('pattern is too long'); - } -}; -exports.assertValidPattern = assertValidPattern; -//# sourceMappingURL=assert-valid-pattern.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/ast.js b/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/ast.js deleted file mode 100644 index 9e1f9e765c597e..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/ast.js +++ /dev/null @@ -1,592 +0,0 @@ -"use strict"; -// parse a single path portion -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AST = void 0; -const brace_expressions_js_1 = require("./brace-expressions.js"); -const unescape_js_1 = require("./unescape.js"); -const types = new Set(['!', '?', '+', '*', '@']); -const isExtglobType = (c) => types.has(c); -// Patterns that get prepended to bind to the start of either the -// entire string, or just a single path portion, to prevent dots -// and/or traversal patterns, when needed. -// Exts don't need the ^ or / bit, because the root binds that already. -const startNoTraversal = '(?!(?:^|/)\\.\\.?(?:$|/))'; -const startNoDot = '(?!\\.)'; -// characters that indicate a start of pattern needs the "no dots" bit, -// because a dot *might* be matched. ( is not in the list, because in -// the case of a child extglob, it will handle the prevention itself. -const addPatternStart = new Set(['[', '.']); -// cases where traversal is A-OK, no dot prevention needed -const justDots = new Set(['..', '.']); -const reSpecials = new Set('().*{}+?[]^$\\!'); -const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); -// any single thing other than / -const qmark = '[^/]'; -// * => any number of characters -const star = qmark + '*?'; -// use + when we need to ensure that *something* matches, because the * is -// the only thing in the path portion. -const starNoEmpty = qmark + '+?'; -// remove the \ chars that we added if we end up doing a nonmagic compare -// const deslash = (s: string) => s.replace(/\\(.)/g, '$1') -class AST { - type; - #root; - #hasMagic; - #uflag = false; - #parts = []; - #parent; - #parentIndex; - #negs; - #filledNegs = false; - #options; - #toString; - // set to true if it's an extglob with no children - // (which really means one child of '') - #emptyExt = false; - constructor(type, parent, options = {}) { - this.type = type; - // extglobs are inherently magical - if (type) - this.#hasMagic = true; - this.#parent = parent; - this.#root = this.#parent ? this.#parent.#root : this; - this.#options = this.#root === this ? options : this.#root.#options; - this.#negs = this.#root === this ? [] : this.#root.#negs; - if (type === '!' && !this.#root.#filledNegs) - this.#negs.push(this); - this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0; - } - get hasMagic() { - /* c8 ignore start */ - if (this.#hasMagic !== undefined) - return this.#hasMagic; - /* c8 ignore stop */ - for (const p of this.#parts) { - if (typeof p === 'string') - continue; - if (p.type || p.hasMagic) - return (this.#hasMagic = true); - } - // note: will be undefined until we generate the regexp src and find out - return this.#hasMagic; - } - // reconstructs the pattern - toString() { - if (this.#toString !== undefined) - return this.#toString; - if (!this.type) { - return (this.#toString = this.#parts.map(p => String(p)).join('')); - } - else { - return (this.#toString = - this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')'); - } - } - #fillNegs() { - /* c8 ignore start */ - if (this !== this.#root) - throw new Error('should only call on root'); - if (this.#filledNegs) - return this; - /* c8 ignore stop */ - // call toString() once to fill this out - this.toString(); - this.#filledNegs = true; - let n; - while ((n = this.#negs.pop())) { - if (n.type !== '!') - continue; - // walk up the tree, appending everthing that comes AFTER parentIndex - let p = n; - let pp = p.#parent; - while (pp) { - for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) { - for (const part of n.#parts) { - /* c8 ignore start */ - if (typeof part === 'string') { - throw new Error('string part in extglob AST??'); - } - /* c8 ignore stop */ - part.copyIn(pp.#parts[i]); - } - } - p = pp; - pp = p.#parent; - } - } - return this; - } - push(...parts) { - for (const p of parts) { - if (p === '') - continue; - /* c8 ignore start */ - if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) { - throw new Error('invalid part: ' + p); - } - /* c8 ignore stop */ - this.#parts.push(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([]); - if (this.isEnd() && - (this === this.#root || - (this.#root.#filledNegs && this.#parent?.type === '!'))) { - ret.push({}); - } - return ret; - } - isStart() { - if (this.#root === this) - return true; - // if (this.type) return !!this.#parent?.isStart() - if (!this.#parent?.isStart()) - return false; - if (this.#parentIndex === 0) - return true; - // if everything AHEAD of this is a negation, then it's still the "start" - const p = this.#parent; - for (let i = 0; i < this.#parentIndex; i++) { - const pp = p.#parts[i]; - if (!(pp instanceof AST && pp.type === '!')) { - return false; - } - } - return true; - } - isEnd() { - if (this.#root === this) - return true; - if (this.#parent?.type === '!') - return true; - if (!this.#parent?.isEnd()) - return false; - if (!this.type) - return this.#parent?.isEnd(); - // if not root, it'll always have a parent - /* c8 ignore start */ - const pl = this.#parent ? this.#parent.#parts.length : 0; - /* c8 ignore stop */ - return this.#parentIndex === pl - 1; - } - copyIn(part) { - if (typeof part === 'string') - this.push(part); - else - this.push(part.clone(this)); - } - clone(parent) { - const c = new AST(this.type, parent); - for (const p of this.#parts) { - c.copyIn(p); - } - return c; - } - static #parseAST(str, ast, pos, opt) { - let escaping = false; - let inBrace = false; - let braceStart = -1; - let braceNeg = false; - if (ast.type === null) { - // outside of a extglob, append until we find a start - let i = pos; - let acc = ''; - while (i < str.length) { - const c = str.charAt(i++); - // still accumulate escapes at this point, but we do ignore - // starts that are escaped - if (escaping || c === '\\') { - escaping = !escaping; - acc += c; - continue; - } - if (inBrace) { - if (i === braceStart + 1) { - if (c === '^' || c === '!') { - braceNeg = true; - } - } - else if (c === ']' && !(i === braceStart + 2 && braceNeg)) { - inBrace = false; - } - acc += c; - continue; - } - else if (c === '[') { - inBrace = true; - braceStart = i; - braceNeg = false; - acc += c; - continue; - } - if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') { - ast.push(acc); - acc = ''; - const ext = new AST(c, ast); - i = AST.#parseAST(str, ext, i, opt); - ast.push(ext); - continue; - } - acc += c; - } - ast.push(acc); - return i; - } - // some kind of extglob, pos is at the ( - // find the next | or ) - let i = pos + 1; - let part = new AST(null, ast); - const parts = []; - let acc = ''; - while (i < str.length) { - const c = str.charAt(i++); - // still accumulate escapes at this point, but we do ignore - // starts that are escaped - if (escaping || c === '\\') { - escaping = !escaping; - acc += c; - continue; - } - if (inBrace) { - if (i === braceStart + 1) { - if (c === '^' || c === '!') { - braceNeg = true; - } - } - else if (c === ']' && !(i === braceStart + 2 && braceNeg)) { - inBrace = false; - } - acc += c; - continue; - } - else if (c === '[') { - inBrace = true; - braceStart = i; - braceNeg = false; - acc += c; - continue; - } - if (isExtglobType(c) && str.charAt(i) === '(') { - part.push(acc); - acc = ''; - const ext = new AST(c, part); - part.push(ext); - i = AST.#parseAST(str, ext, i, opt); - continue; - } - if (c === '|') { - part.push(acc); - acc = ''; - parts.push(part); - part = new AST(null, ast); - continue; - } - if (c === ')') { - if (acc === '' && ast.#parts.length === 0) { - ast.#emptyExt = true; - } - part.push(acc); - acc = ''; - ast.push(...parts, part); - return i; - } - acc += c; - } - // unfinished extglob - // if we got here, it was a malformed extglob! not an extglob, but - // maybe something else in there. - ast.type = null; - ast.#hasMagic = undefined; - ast.#parts = [str.substring(pos - 1)]; - return i; - } - static fromGlob(pattern, options = {}) { - const ast = new AST(null, undefined, options); - AST.#parseAST(pattern, ast, 0, options); - return ast; - } - // returns the regular expression if there's magic, or the unescaped - // string if not. - toMMPattern() { - // should only be called on root - /* c8 ignore start */ - if (this !== this.#root) - return this.#root.toMMPattern(); - /* c8 ignore stop */ - const glob = this.toString(); - const [re, body, hasMagic, uflag] = this.toRegExpSource(); - // if we're in nocase mode, and not nocaseMagicOnly, then we do - // still need a regular expression if we have to case-insensitively - // match capital/lowercase characters. - const anyMagic = hasMagic || - this.#hasMagic || - (this.#options.nocase && - !this.#options.nocaseMagicOnly && - glob.toUpperCase() !== glob.toLowerCase()); - if (!anyMagic) { - return body; - } - const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : ''); - return Object.assign(new RegExp(`^${re}$`, flags), { - _src: re, - _glob: glob, - }); - } - get options() { - return this.#options; - } - // returns the string match, the regexp source, whether there's magic - // in the regexp (so a regular expression is required) and whether or - // not the uflag is needed for the regular expression (for posix classes) - // TODO: instead of injecting the start/end at this point, just return - // the BODY of the regexp, along with the start/end portions suitable - // for binding the start/end in either a joined full-path makeRe context - // (where we bind to (^|/), or a standalone matchPart context (where - // we bind to ^, and not /). Otherwise slashes get duped! - // - // In part-matching mode, the start is: - // - if not isStart: nothing - // - if traversal possible, but not allowed: ^(?!\.\.?$) - // - if dots allowed or not possible: ^ - // - if dots possible and not allowed: ^(?!\.) - // end is: - // - if not isEnd(): nothing - // - else: $ - // - // In full-path matching mode, we put the slash at the START of the - // pattern, so start is: - // - if first pattern: same as part-matching mode - // - if not isStart(): nothing - // - if traversal possible, but not allowed: /(?!\.\.?(?:$|/)) - // - if dots allowed or not possible: / - // - if dots possible and not allowed: /(?!\.) - // end is: - // - if last pattern, same as part-matching mode - // - else nothing - // - // Always put the (?:$|/) on negated tails, though, because that has to be - // there to bind the end of the negated pattern portion, and it's easier to - // just stick it in now rather than try to inject it later in the middle of - // the pattern. - // - // We can just always return the same end, and leave it up to the caller - // to know whether it's going to be used joined or in parts. - // And, if the start is adjusted slightly, can do the same there: - // - if not isStart: nothing - // - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$) - // - if dots allowed or not possible: (?:/|^) - // - if dots possible and not allowed: (?:/|^)(?!\.) - // - // But it's better to have a simpler binding without a conditional, for - // performance, so probably better to return both start options. - // - // Then the caller just ignores the end if it's not the first pattern, - // and the start always gets applied. - // - // But that's always going to be $ if it's the ending pattern, or nothing, - // so the caller can just attach $ at the end of the pattern when building. - // - // So the todo is: - // - better detect what kind of start is needed - // - return both flavors of starting pattern - // - attach $ at the end of the pattern when creating the actual RegExp - // - // Ah, but wait, no, that all only applies to the root when the first pattern - // is not an extglob. If the first pattern IS an extglob, then we need all - // that dot prevention biz to live in the extglob portions, because eg - // +(*|.x*) can match .xy but not .yx. - // - // So, return the two flavors if it's #root and the first child is not an - // AST, otherwise leave it to the child AST to handle it, and there, - // use the (?:^|/) style of start binding. - // - // Even simplified further: - // - Since the start for a join is eg /(?!\.) and the start for a part - // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root - // or start or whatever) and prepend ^ or / at the Regexp construction. - toRegExpSource(allowDot) { - const dot = allowDot ?? !!this.#options.dot; - if (this.#root === this) - this.#fillNegs(); - if (!this.type) { - const noEmpty = this.isStart() && this.isEnd(); - const src = this.#parts - .map(p => { - 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; - return re; - }) - .join(''); - let start = ''; - if (this.isStart()) { - if (typeof this.#parts[0] === 'string') { - // this is the string that will match the start of the pattern, - // so we need to protect against dots and such. - // '.' and '..' cannot match unless the pattern is that exactly, - // even if it starts with . or dot:true is set. - const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]); - if (!dotTravAllowed) { - const aps = addPatternStart; - // check if we have a possibility of matching . or .., - // and prevent that. - const needNoTrav = - // dots are allowed, and the pattern starts with [ or . - (dot && aps.has(src.charAt(0))) || - // the pattern starts with \., and then [ or . - (src.startsWith('\\.') && aps.has(src.charAt(2))) || - // the pattern starts with \.\., and then [ or . - (src.startsWith('\\.\\.') && aps.has(src.charAt(4))); - // 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 : ''; - } - } - } - // append the "end of path portion" pattern to negation tails - let end = ''; - if (this.isEnd() && - this.#root.#filledNegs && - this.#parent?.type === '!') { - end = '(?:$|\\/)'; - } - const final = start + src + end; - return [ - final, - (0, unescape_js_1.unescape)(src), - (this.#hasMagic = !!this.#hasMagic), - this.#uflag, - ]; - } - // We need to calculate the body *twice* if it's a repeat pattern - // at the start, once in nodot mode, then again in dot mode, so a - // pattern like *(?) can match 'x.y' - const repeated = this.type === '*' || this.type === '+'; - // some kind of extglob - const start = this.type === '!' ? '(?:(?!(?:' : '(?:'; - let body = this.#partsToRegExp(dot); - if (this.isStart() && this.isEnd() && !body && this.type !== '!') { - // invalid extglob, has to at least be *something* present, if it's - // the entire path portion. - const s = this.toString(); - this.#parts = [s]; - this.type = null; - this.#hasMagic = undefined; - return [s, (0, unescape_js_1.unescape)(this.toString()), false, false]; - } - // XXX abstract out this map method - let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot - ? '' - : this.#partsToRegExp(true); - if (bodyDotAllowed === body) { - bodyDotAllowed = ''; - } - if (bodyDotAllowed) { - body = `(?:${body})(?:${bodyDotAllowed})*?`; - } - // an empty !() is exactly equivalent to a starNoEmpty - let final = ''; - if (this.type === '!' && this.#emptyExt) { - 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 - ? `)?` - : `)${this.type}`; - final = start + body + close; - } - return [ - final, - (0, unescape_js_1.unescape)(body), - (this.#hasMagic = !!this.#hasMagic), - this.#uflag, - ]; - } - #partsToRegExp(dot) { - return this.#parts - .map(p => { - // extglob ASTs should only contain parent ASTs - /* c8 ignore start */ - if (typeof p === 'string') { - throw new Error('string type in extglob ast??'); - } - /* c8 ignore stop */ - // can ignore hasMagic, because extglobs are already always magic - const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot); - this.#uflag = this.#uflag || uflag; - return re; - }) - .filter(p => !(this.isStart() && this.isEnd()) || !!p) - .join('|'); - } - static #parseGlob(glob, hasMagic, noEmpty = false) { - let escaping = false; - let re = ''; - let uflag = false; - for (let i = 0; i < glob.length; i++) { - const c = glob.charAt(i); - if (escaping) { - escaping = false; - re += (reSpecials.has(c) ? '\\' : '') + c; - continue; - } - if (c === '\\') { - if (i === glob.length - 1) { - re += '\\\\'; - } - else { - escaping = true; - } - continue; - } - if (c === '[') { - const [src, needUflag, consumed, magic] = (0, brace_expressions_js_1.parseClass)(glob, i); - if (consumed) { - re += src; - uflag = uflag || needUflag; - i += consumed - 1; - hasMagic = hasMagic || magic; - continue; - } - } - if (c === '*') { - if (noEmpty && glob === '*') - re += starNoEmpty; - else - re += star; - hasMagic = true; - continue; - } - if (c === '?') { - re += qmark; - hasMagic = true; - continue; - } - re += regExpEscape(c); - } - return [re, (0, unescape_js_1.unescape)(glob), !!hasMagic, uflag]; - } -} -exports.AST = AST; -//# sourceMappingURL=ast.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/brace-expressions.js b/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/brace-expressions.js deleted file mode 100644 index 0e13eefc4cfee2..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/brace-expressions.js +++ /dev/null @@ -1,152 +0,0 @@ -"use strict"; -// translate the various posix character classes into unicode properties -// this works across all unicode locales -Object.defineProperty(exports, "__esModule", { value: true }); -exports.parseClass = void 0; -// { : [, /u flag required, negated] -const posixClasses = { - '[:alnum:]': ['\\p{L}\\p{Nl}\\p{Nd}', true], - '[:alpha:]': ['\\p{L}\\p{Nl}', true], - '[:ascii:]': ['\\x' + '00-\\x' + '7f', false], - '[:blank:]': ['\\p{Zs}\\t', true], - '[:cntrl:]': ['\\p{Cc}', true], - '[:digit:]': ['\\p{Nd}', true], - '[:graph:]': ['\\p{Z}\\p{C}', true, true], - '[:lower:]': ['\\p{Ll}', true], - '[:print:]': ['\\p{C}', true], - '[:punct:]': ['\\p{P}', true], - '[:space:]': ['\\p{Z}\\t\\r\\n\\v\\f', true], - '[:upper:]': ['\\p{Lu}', true], - '[:word:]': ['\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}', true], - '[:xdigit:]': ['A-Fa-f0-9', false], -}; -// only need to escape a few things inside of brace expressions -// escapes: [ \ ] - -const braceEscape = (s) => s.replace(/[[\]\\-]/g, '\\$&'); -// escape all regexp magic characters -const regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); -// everything has already been escaped, we just have to join -const rangesToString = (ranges) => ranges.join(''); -// takes a glob string at a posix brace expression, and returns -// an equivalent regular expression source, and boolean indicating -// whether the /u flag needs to be applied, and the number of chars -// consumed to parse the character class. -// This also removes out of order ranges, and returns ($.) if the -// entire class just no good. -const parseClass = (glob, position) => { - const pos = position; - /* c8 ignore start */ - if (glob.charAt(pos) !== '[') { - throw new Error('not in a brace expression'); - } - /* c8 ignore stop */ - const ranges = []; - const negs = []; - let i = pos + 1; - let sawStart = false; - let uflag = false; - let escaping = false; - let negate = false; - let endPos = pos; - let rangeStart = ''; - WHILE: while (i < glob.length) { - const c = glob.charAt(i); - if ((c === '!' || c === '^') && i === pos + 1) { - negate = true; - i++; - continue; - } - if (c === ']' && sawStart && !escaping) { - endPos = i + 1; - break; - } - sawStart = true; - if (c === '\\') { - if (!escaping) { - escaping = true; - i++; - continue; - } - // escaped \ char, fall through and treat like normal char - } - if (c === '[' && !escaping) { - // either a posix class, a collation equivalent, or just a [ - for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) { - if (glob.startsWith(cls, i)) { - // invalid, [a-[] is fine, but not [a-[:alpha]] - if (rangeStart) { - return ['$.', false, glob.length - pos, true]; - } - i += cls.length; - if (neg) - negs.push(unip); - else - ranges.push(unip); - uflag = uflag || u; - continue WHILE; - } - } - } - // now it's just a normal character, effectively - escaping = false; - if (rangeStart) { - // throw this range away if it's not valid, but others - // can still match. - if (c > rangeStart) { - ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c)); - } - else if (c === rangeStart) { - ranges.push(braceEscape(c)); - } - rangeStart = ''; - i++; - continue; - } - // now might be the start of a range. - // can be either c-d or c-] or c] or c] at this point - if (glob.startsWith('-]', i + 1)) { - ranges.push(braceEscape(c + '-')); - i += 2; - continue; - } - if (glob.startsWith('-', i + 1)) { - rangeStart = c; - i += 2; - continue; - } - // not the start of a range, just a single character - ranges.push(braceEscape(c)); - i++; - } - if (endPos < i) { - // didn't see the end of the class, not a valid class, - // but might still be valid as a literal match. - return ['', false, 0, false]; - } - // if we got no ranges and no negates, then we have a range that - // cannot possibly match anything, and that poisons the whole glob - if (!ranges.length && !negs.length) { - return ['$.', false, glob.length - pos, true]; - } - // if we got one positive range, and it's a single character, then that's - // not actually a magic pattern, it's just that one literal character. - // we should not treat that as "magic", we should just return the literal - // character. [_] is a perfectly valid way to escape glob magic chars. - if (negs.length === 0 && - ranges.length === 1 && - /^\\?.$/.test(ranges[0]) && - !negate) { - const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]; - return [regexpEscape(r), false, endPos - pos, false]; - } - const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'; - const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'; - const comb = ranges.length && negs.length - ? '(' + sranges + '|' + snegs + ')' - : ranges.length - ? sranges - : snegs; - return [comb, uflag, endPos - pos, true]; -}; -exports.parseClass = parseClass; -//# sourceMappingURL=brace-expressions.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/escape.js b/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/escape.js deleted file mode 100644 index 02a4f8a8e0a588..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/escape.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.escape = void 0; -/** - * Escape all magic characters in a glob pattern. - * - * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape} - * option is used, then characters are escaped by wrapping in `[]`, because - * a magic character wrapped in a character class can only be satisfied by - * that exact character. In this mode, `\` is _not_ escaped, because it is - * not interpreted as a magic character, but instead as a path separator. - */ -const escape = (s, { windowsPathsNoEscape = false, } = {}) => { - // don't need to escape +@! because we escape the parens - // that make those magic, and escaping ! as [!] isn't valid, - // because [!]] is a valid glob class meaning not ']'. - return windowsPathsNoEscape - ? s.replace(/[?*()[\]]/g, '[$&]') - : s.replace(/[?*()[\]\\]/g, '\\$&'); -}; -exports.escape = escape; -//# sourceMappingURL=escape.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/index.js b/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/index.js deleted file mode 100644 index 64a0f1f833222e..00000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/index.js +++ /dev/null @@ -1,1017 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -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 = __importDefault(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"); -const unescape_js_1 = require("./unescape.js"); -const minimatch = (p, pattern, options = {}) => { - (0, assert_valid_pattern_js_1.assertValidPattern)(pattern); - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - return false; - } - return new Minimatch(pattern, options).match(p); -}; -exports.minimatch = minimatch; -// Optimized checking for the most common glob patterns. -const starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/; -const starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext); -const starDotExtTestDot = (ext) => (f) => f.endsWith(ext); -const starDotExtTestNocase = (ext) => { - ext = ext.toLowerCase(); - return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext); -}; -const starDotExtTestNocaseDot = (ext) => { - ext = ext.toLowerCase(); - return (f) => f.toLowerCase().endsWith(ext); -}; -const starDotStarRE = /^\*+\.\*+$/; -const starDotStarTest = (f) => !f.startsWith('.') && f.includes('.'); -const starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.'); -const dotStarRE = /^\.\*+$/; -const dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.'); -const starRE = /^\*+$/; -const starTest = (f) => f.length !== 0 && !f.startsWith('.'); -const starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..'; -const qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/; -const qmarksTestNocase = ([$0, ext = '']) => { - const noext = qmarksTestNoExt([$0]); - if (!ext) - return noext; - ext = ext.toLowerCase(); - return (f) => noext(f) && f.toLowerCase().endsWith(ext); -}; -const qmarksTestNocaseDot = ([$0, ext = '']) => { - const noext = qmarksTestNoExtDot([$0]); - if (!ext) - return noext; - ext = ext.toLowerCase(); - return (f) => noext(f) && f.toLowerCase().endsWith(ext); -}; -const qmarksTestDot = ([$0, ext = '']) => { - const noext = qmarksTestNoExtDot([$0]); - return !ext ? noext : (f) => noext(f) && f.endsWith(ext); -}; -const qmarksTest = ([$0, ext = '']) => { - const noext = qmarksTestNoExt([$0]); - return !ext ? noext : (f) => noext(f) && f.endsWith(ext); -}; -const qmarksTestNoExt = ([$0]) => { - const len = $0.length; - return (f) => f.length === len && !f.startsWith('.'); -}; -const qmarksTestNoExtDot = ([$0]) => { - const len = $0.length; - return (f) => f.length === len && f !== '.' && f !== '..'; -}; -/* c8 ignore start */ -const defaultPlatform = (typeof process === 'object' && process - ? (typeof process.env === 'object' && - process.env && - process.env.__MINIMATCH_TESTING_PLATFORM__) || - process.platform - : 'posix'); -const path = { - win32: { sep: '\\' }, - posix: { sep: '/' }, -}; -/* c8 ignore stop */ -exports.sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep; -exports.minimatch.sep = exports.sep; -exports.GLOBSTAR = Symbol('globstar **'); -exports.minimatch.GLOBSTAR = exports.GLOBSTAR; -// any single thing other than / -// don't need to escape / when using new RegExp() -const qmark = '[^/]'; -// * => any number of characters -const star = qmark + '*?'; -// ** when dots are allowed. Anything goes, except .. and . -// not (^ or / followed by one or two dots followed by $ or /), -// followed by anything, any number of times. -const twoStarDot = '(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?'; -// not a ^ or / followed by a dot, -// followed by anything, any number of times. -const twoStarNoDot = '(?:(?!(?:\\/|^)\\.).)*?'; -const filter = (pattern, options = {}) => (p) => (0, exports.minimatch)(p, pattern, options); -exports.filter = filter; -exports.minimatch.filter = exports.filter; -const ext = (a, b = {}) => Object.assign({}, a, b); -const defaults = (def) => { - if (!def || typeof def !== 'object' || !Object.keys(def).length) { - return exports.minimatch; - } - const orig = exports.minimatch; - const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options)); - return Object.assign(m, { - Minimatch: class Minimatch extends orig.Minimatch { - constructor(pattern, options = {}) { - super(pattern, ext(def, options)); - } - static defaults(options) { - return orig.defaults(ext(def, options)).Minimatch; - } - }, - AST: class AST extends orig.AST { - /* c8 ignore start */ - constructor(type, parent, options = {}) { - super(type, parent, ext(def, options)); - } - /* c8 ignore stop */ - static fromGlob(pattern, options = {}) { - return orig.AST.fromGlob(pattern, ext(def, options)); - } - }, - unescape: (s, options = {}) => orig.unescape(s, ext(def, options)), - escape: (s, options = {}) => orig.escape(s, ext(def, options)), - filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)), - defaults: (options) => orig.defaults(ext(def, options)), - makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)), - braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)), - match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)), - sep: orig.sep, - GLOBSTAR: exports.GLOBSTAR, - }); -}; -exports.defaults = defaults; -exports.minimatch.defaults = exports.defaults; -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -const braceExpand = (pattern, options = {}) => { - (0, assert_valid_pattern_js_1.assertValidPattern)(pattern); - // Thanks to Yeting Li for - // improving this regexp to avoid a ReDOS vulnerability. - if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { - // shortcut. no need to expand. - return [pattern]; - } - return (0, brace_expansion_1.default)(pattern); -}; -exports.braceExpand = braceExpand; -exports.minimatch.braceExpand = exports.braceExpand; -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe(); -exports.makeRe = makeRe; -exports.minimatch.makeRe = exports.makeRe; -const match = (list, pattern, options = {}) => { - const mm = new Minimatch(pattern, options); - list = list.filter(f => mm.match(f)); - if (mm.options.nonull && !list.length) { - list.push(pattern); - } - return list; -}; -exports.match = match; -exports.minimatch.match = exports.match; -// replace stuff like \* with * -const globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/; -const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); -class Minimatch { - options; - set; - pattern; - windowsPathsNoEscape; - nonegate; - negate; - comment; - empty; - preserveMultipleSlashes; - partial; - globSet; - globParts; - nocase; - isWindows; - platform; - windowsNoMagicRoot; - regexp; - constructor(pattern, options = {}) { - (0, assert_valid_pattern_js_1.assertValidPattern)(pattern); - options = options || {}; - this.options = options; - this.pattern = pattern; - this.platform = options.platform || defaultPlatform; - this.isWindows = this.platform === 'win32'; - this.windowsPathsNoEscape = - !!options.windowsPathsNoEscape || options.allowWindowsEscape === false; - if (this.windowsPathsNoEscape) { - this.pattern = this.pattern.replace(/\\/g, '/'); - } - this.preserveMultipleSlashes = !!options.preserveMultipleSlashes; - this.regexp = null; - this.negate = false; - this.nonegate = !!options.nonegate; - this.comment = false; - this.empty = false; - this.partial = !!options.partial; - this.nocase = !!this.options.nocase; - this.windowsNoMagicRoot = - options.windowsNoMagicRoot !== undefined - ? options.windowsNoMagicRoot - : !!(this.isWindows && this.nocase); - this.globSet = []; - this.globParts = []; - this.set = []; - // make the set of regexps etc. - this.make(); - } - hasMagic() { - if (this.options.magicalBraces && this.set.length > 1) { - return true; - } - for (const pattern of this.set) { - for (const part of pattern) { - if (typeof part !== 'string') - return true; - } - } - return false; - } - debug(..._) { } - make() { - const pattern = this.pattern; - const options = this.options; - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - this.comment = true; - return; - } - if (!pattern) { - this.empty = true; - return; - } - // step 1: figure out negation, etc. - this.parseNegate(); - // step 2: expand braces - this.globSet = [...new Set(this.braceExpand())]; - if (options.debug) { - this.debug = (...args) => console.error(...args); - } - this.debug(this.pattern, this.globSet); - // step 3: now we have a set, so turn each one into a series of - // path-portion matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - // - // First, we preprocess to make the glob pattern sets a bit simpler - // and deduped. There are some perf-killing patterns that can cause - // problems with a glob walk, but we can simplify them down a bit. - const rawGlobParts = this.globSet.map(s => this.slashSplit(s)); - this.globParts = this.preprocess(rawGlobParts); - this.debug(this.pattern, this.globParts); - // glob --> regexps - let set = this.globParts.map((s, _, __) => { - if (this.isWindows && this.windowsNoMagicRoot) { - // check if it's a drive or unc path. - const isUNC = s[0] === '' && - s[1] === '' && - (s[2] === '?' || !globMagic.test(s[2])) && - !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))]; - } - else if (isDrive) { - return [s[0], ...s.slice(1).map(ss => this.parse(ss))]; - } - } - return s.map(ss => this.parse(ss)); - }); - this.debug(this.pattern, set); - // filter out everything that didn't compile properly. - this.set = set.filter(s => s.indexOf(false) === -1); - // do not treat the ? in UNC paths as magic - if (this.isWindows) { - for (let i = 0; i < this.set.length; i++) { - const p = this.set[i]; - if (p[0] === '' && - p[1] === '' && - this.globParts[i][2] === '?' && - typeof p[3] === 'string' && - /^[a-z]:$/i.test(p[3])) { - p[2] = '?'; - } - } - } - this.debug(this.pattern, this.set); - } - // various transforms to equivalent pattern sets that are - // faster to process in a filesystem walk. The goal is to - // eliminate what we can, and push all ** patterns as far - // 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 (this.options.noglobstar) { - for (let i = 0; i < globParts.length; i++) { - for (let j = 0; j < globParts[i].length; j++) { - if (globParts[i][j] === '**') { - globParts[i][j] = '*'; - } - } - } - } - const { optimizationLevel = 1 } = this.options; - if (optimizationLevel >= 2) { - // aggressive optimization for the purpose of fs walking - globParts = this.firstPhasePreProcess(globParts); - globParts = this.secondPhasePreProcess(globParts); - } - else if (optimizationLevel >= 1) { - // just basic optimizations to remove some .. parts - globParts = this.levelOneOptimize(globParts); - } - else { - // just collapse multiple ** portions into one - globParts = this.adjascentGlobstarOptimize(globParts); - } - return globParts; - } - // just get rid of adjascent ** portions - adjascentGlobstarOptimize(globParts) { - return globParts.map(parts => { - let gs = -1; - while (-1 !== (gs = parts.indexOf('**', gs + 1))) { - let i = gs; - while (parts[i + 1] === '**') { - i++; - } - if (i !== gs) { - parts.splice(gs, i - gs); - } - } - return parts; - }); - } - // get rid of adjascent ** and resolve .. portions - levelOneOptimize(globParts) { - return globParts.map(parts => { - parts = parts.reduce((set, part) => { - const prev = set[set.length - 1]; - if (part === '**' && prev === '**') { - return set; - } - if (part === '..') { - if (prev && prev !== '..' && prev !== '.' && prev !== '**') { - set.pop(); - return set; - } - } - set.push(part); - return set; - }, []); - return parts.length === 0 ? [''] : parts; - }); - } - levelTwoFileOptimize(parts) { - if (!Array.isArray(parts)) { - parts = this.slashSplit(parts); - } - let didSomething = false; - do { - didSomething = false; - //
    // -> 
    /
    -            if (!this.preserveMultipleSlashes) {
    -                for (let i = 1; i < parts.length - 1; i++) {
    -                    const p = parts[i];
    -                    // don't squeeze out UNC patterns
    -                    if (i === 1 && p === '' && parts[0] === '')
    -                        continue;
    -                    if (p === '.' || p === '') {
    -                        didSomething = true;
    -                        parts.splice(i, 1);
    -                        i--;
    -                    }
    -                }
    -                if (parts[0] === '.' &&
    -                    parts.length === 2 &&
    -                    (parts[1] === '.' || parts[1] === '')) {
    -                    didSomething = true;
    -                    parts.pop();
    -                }
    -            }
    -            // 
    /

    /../ ->

    /
    -            let dd = 0;
    -            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
    -                const p = parts[dd - 1];
    -                if (p && p !== '.' && p !== '..' && p !== '**') {
    -                    didSomething = true;
    -                    parts.splice(dd - 1, 2);
    -                    dd -= 2;
    -                }
    -            }
    -        } while (didSomething);
    -        return parts.length === 0 ? [''] : parts;
    -    }
    -    // First phase: single-pattern processing
    -    // 
     is 1 or more portions
    -    //  is 1 or more portions
    -    // 

    is any portion other than ., .., '', or ** - // is . or '' - // - // **/.. is *brutal* for filesystem walking performance, because - // it effectively resets the recursive walk each time it occurs, - // and ** cannot be reduced out by a .. pattern part like a regexp - // or most strings (other than .., ., and '') can be. - // - //

    /**/../

    /

    / -> {

    /../

    /

    /,

    /**/

    /

    /} - //

    // -> 
    /
    -    // 
    /

    /../ ->

    /
    -    // **/**/ -> **/
    -    //
    -    // **/*/ -> */**/ <== not valid because ** doesn't follow
    -    // this WOULD be allowed if ** did follow symlinks, or * didn't
    -    firstPhasePreProcess(globParts) {
    -        let didSomething = false;
    -        do {
    -            didSomething = false;
    -            // 
    /**/../

    /

    / -> {

    /../

    /

    /,

    /**/

    /

    /} - for (let parts of globParts) { - let gs = -1; - while (-1 !== (gs = parts.indexOf('**', gs + 1))) { - let gss = gs; - while (parts[gss + 1] === '**') { - //

    /**/**/ -> 
    /**/
    -                        gss++;
    -                    }
    -                    // eg, if gs is 2 and gss is 4, that means we have 3 **
    -                    // parts, and can remove 2 of them.
    -                    if (gss > gs) {
    -                        parts.splice(gs + 1, gss - gs);
    -                    }
    -                    let next = parts[gs + 1];
    -                    const p = parts[gs + 2];
    -                    const p2 = parts[gs + 3];
    -                    if (next !== '..')
    -                        continue;
    -                    if (!p ||
    -                        p === '.' ||
    -                        p === '..' ||
    -                        !p2 ||
    -                        p2 === '.' ||
    -                        p2 === '..') {
    -                        continue;
    -                    }
    -                    didSomething = true;
    -                    // edit parts in place, and push the new one
    -                    parts.splice(gs, 1);
    -                    const other = parts.slice(0);
    -                    other[gs] = '**';
    -                    globParts.push(other);
    -                    gs--;
    -                }
    -                // 
    // -> 
    /
    -                if (!this.preserveMultipleSlashes) {
    -                    for (let i = 1; i < parts.length - 1; i++) {
    -                        const p = parts[i];
    -                        // don't squeeze out UNC patterns
    -                        if (i === 1 && p === '' && parts[0] === '')
    -                            continue;
    -                        if (p === '.' || p === '') {
    -                            didSomething = true;
    -                            parts.splice(i, 1);
    -                            i--;
    -                        }
    -                    }
    -                    if (parts[0] === '.' &&
    -                        parts.length === 2 &&
    -                        (parts[1] === '.' || parts[1] === '')) {
    -                        didSomething = true;
    -                        parts.pop();
    -                    }
    -                }
    -                // 
    /

    /../ ->

    /
    -                let dd = 0;
    -                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
    -                    const p = parts[dd - 1];
    -                    if (p && p !== '.' && p !== '..' && p !== '**') {
    -                        didSomething = true;
    -                        const needDot = dd === 1 && parts[dd + 1] === '**';
    -                        const splin = needDot ? ['.'] : [];
    -                        parts.splice(dd - 1, 2, ...splin);
    -                        if (parts.length === 0)
    -                            parts.push('');
    -                        dd -= 2;
    -                    }
    -                }
    -            }
    -        } while (didSomething);
    -        return globParts;
    -    }
    -    // second phase: multi-pattern dedupes
    -    // {
    /*/,
    /

    /} ->

    /*/
    -    // {
    /,
    /} -> 
    /
    -    // {
    /**/,
    /} -> 
    /**/
    -    //
    -    // {
    /**/,
    /**/

    /} ->

    /**/
    -    // ^-- not valid because ** doens't follow symlinks
    -    secondPhasePreProcess(globParts) {
    -        for (let i = 0; i < globParts.length - 1; i++) {
    -            for (let j = i + 1; j < globParts.length; j++) {
    -                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
    -                if (matched) {
    -                    globParts[i] = [];
    -                    globParts[j] = matched;
    -                    break;
    -                }
    -            }
    -        }
    -        return globParts.filter(gs => gs.length);
    -    }
    -    partsMatch(a, b, emptyGSMatch = false) {
    -        let ai = 0;
    -        let bi = 0;
    -        let result = [];
    -        let which = '';
    -        while (ai < a.length && bi < b.length) {
    -            if (a[ai] === b[bi]) {
    -                result.push(which === 'b' ? b[bi] : a[ai]);
    -                ai++;
    -                bi++;
    -            }
    -            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {
    -                result.push(a[ai]);
    -                ai++;
    -            }
    -            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {
    -                result.push(b[bi]);
    -                bi++;
    -            }
    -            else if (a[ai] === '*' &&
    -                b[bi] &&
    -                (this.options.dot || !b[bi].startsWith('.')) &&
    -                b[bi] !== '**') {
    -                if (which === 'b')
    -                    return false;
    -                which = 'a';
    -                result.push(a[ai]);
    -                ai++;
    -                bi++;
    -            }
    -            else if (b[bi] === '*' &&
    -                a[ai] &&
    -                (this.options.dot || !a[ai].startsWith('.')) &&
    -                a[ai] !== '**') {
    -                if (which === 'a')
    -                    return false;
    -                which = 'b';
    -                result.push(b[bi]);
    -                ai++;
    -                bi++;
    -            }
    -            else {
    -                return false;
    -            }
    -        }
    -        // if we fall out of the loop, it means they two are identical
    -        // as long as their lengths match
    -        return a.length === b.length && result;
    -    }
    -    parseNegate() {
    -        if (this.nonegate)
    -            return;
    -        const pattern = this.pattern;
    -        let negate = false;
    -        let negateOffset = 0;
    -        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {
    -            negate = !negate;
    -            negateOffset++;
    -        }
    -        if (negateOffset)
    -            this.pattern = pattern.slice(negateOffset);
    -        this.negate = negate;
    -    }
    -    // set partial to true to test if, for example,
    -    // "/a/b" matches the start of "/*/b/*/d"
    -    // Partial means, if you run out of file before you run
    -    // out of pattern, then that's fine, as long as all
    -    // the parts match.
    -    matchOne(file, pattern, partial = false) {
    -        const options = this.options;
    -        // UNC paths like //?/X:/... can match X:/... and vice versa
    -        // Drive letters in absolute drive or unc paths are always compared
    -        // case-insensitively.
    -        if (this.isWindows) {
    -            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);
    -            const fileUNC = !fileDrive &&
    -                file[0] === '' &&
    -                file[1] === '' &&
    -                file[2] === '?' &&
    -                /^[a-z]:$/i.test(file[3]);
    -            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);
    -            const patternUNC = !patternDrive &&
    -                pattern[0] === '' &&
    -                pattern[1] === '' &&
    -                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;
    -            if (typeof fdi === 'number' && typeof pdi === 'number') {
    -                const [fd, pd] = [file[fdi], pattern[pdi]];
    -                if (fd.toLowerCase() === pd.toLowerCase()) {
    -                    pattern[pdi] = fd;
    -                    if (pdi > fdi) {
    -                        pattern = pattern.slice(pdi);
    -                    }
    -                    else if (fdi > pdi) {
    -                        file = file.slice(fdi);
    -                    }
    -                }
    -            }
    -        }
    -        // resolve and reduce . and .. portions in the file as well.
    -        // dont' need to do the second phase, because it's only one string[]
    -        const { optimizationLevel = 1 } = this.options;
    -        if (optimizationLevel >= 2) {
    -            file = this.levelTwoFileOptimize(file);
    -        }
    -        this.debug('matchOne', this, { file, pattern });
    -        this.debug('matchOne', file.length, pattern.length);
    -        for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
    -            this.debug('matchOne loop');
    -            var p = pattern[pi];
    -            var f = file[fi];
    -            this.debug(pattern, p, f);
    -            // should be impossible.
    -            // some invalid regexp stuff in the set.
    -            /* c8 ignore start */
    -            if (p === false) {
    -                return false;
    -            }
    -            /* c8 ignore stop */
    -            if (p === exports.GLOBSTAR) {
    -                this.debug('GLOBSTAR', [pattern, p, f]);
    -                // "**"
    -                // a/**/b/**/c would match the following:
    -                // a/b/x/y/z/c
    -                // a/x/y/z/b/c
    -                // a/b/x/b/x/c
    -                // a/b/c
    -                // To do this, take the rest of the pattern after
    -                // the **, and see if it would match the file remainder.
    -                // If so, return success.
    -                // If not, the ** "swallows" a segment, and try again.
    -                // This is recursively awful.
    -                //
    -                // a/**/b/**/c matching a/b/x/y/z/c
    -                // - a matches a
    -                // - doublestar
    -                //   - matchOne(b/x/y/z/c, b/**/c)
    -                //     - b matches b
    -                //     - doublestar
    -                //       - matchOne(x/y/z/c, c) -> no
    -                //       - matchOne(y/z/c, c) -> no
    -                //       - matchOne(z/c, c) -> no
    -                //       - matchOne(c, c) yes, hit
    -                var fr = fi;
    -                var pr = pi + 1;
    -                if (pr === pl) {
    -                    this.debug('** at the end');
    -                    // a ** at the end will just swallow the rest.
    -                    // We have found a match.
    -                    // however, it will not swallow /.x, unless
    -                    // options.dot is set.
    -                    // . and .. are *never* matched by **, for explosively
    -                    // exponential reasons.
    -                    for (; fi < fl; fi++) {
    -                        if (file[fi] === '.' ||
    -                            file[fi] === '..' ||
    -                            (!options.dot && file[fi].charAt(0) === '.'))
    -                            return false;
    -                    }
    -                    return true;
    -                }
    -                // ok, let's see if we can swallow whatever we can.
    -                while (fr < fl) {
    -                    var swallowee = file[fr];
    -                    this.debug('\nglobstar while', file, fr, pattern, pr, swallowee);
    -                    // XXX remove this slice.  Just pass the start index.
    -                    if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
    -                        this.debug('globstar found match!', fr, fl, swallowee);
    -                        // found a match.
    -                        return true;
    -                    }
    -                    else {
    -                        // can't swallow "." or ".." ever.
    -                        // can only swallow ".foo" when explicitly asked.
    -                        if (swallowee === '.' ||
    -                            swallowee === '..' ||
    -                            (!options.dot && swallowee.charAt(0) === '.')) {
    -                            this.debug('dot detected!', file, fr, pattern, pr);
    -                            break;
    -                        }
    -                        // ** swallows a segment, and continue.
    -                        this.debug('globstar swallow a segment, and continue');
    -                        fr++;
    -                    }
    -                }
    -                // no match was found.
    -                // However, in partial mode, we can't say this is necessarily over.
    -                /* c8 ignore start */
    -                if (partial) {
    -                    // ran out of file
    -                    this.debug('\n>>> no match, partial?', file, fr, pattern, pr);
    -                    if (fr === fl) {
    -                        return true;
    -                    }
    -                }
    -                /* c8 ignore stop */
    -                return false;
    -            }
    -            // something other than **
    -            // non-magic patterns just have to match exactly
    -            // patterns with magic have been turned into regexps.
    -            let hit;
    -            if (typeof p === 'string') {
    -                hit = f === p;
    -                this.debug('string match', p, f, hit);
    -            }
    -            else {
    -                hit = p.test(f);
    -                this.debug('pattern match', p, f, hit);
    -            }
    -            if (!hit)
    -                return false;
    -        }
    -        // Note: ending in / means that we'll get a final ""
    -        // at the end of the pattern.  This can only match a
    -        // corresponding "" at the end of the file.
    -        // If the file ends in /, then it can only match a
    -        // a pattern that ends in /, unless the pattern just
    -        // doesn't have any more for it. But, a/b/ should *not*
    -        // match "a/b/*", even though "" matches against the
    -        // [^/]*? pattern, except in partial mode, where it might
    -        // simply not be reached yet.
    -        // However, a/b/ should still satisfy a/*
    -        // now either we fell off the end of the pattern, or we're done.
    -        if (fi === fl && pi === pl) {
    -            // ran out of pattern and filename at the same time.
    -            // an exact hit!
    -            return true;
    -        }
    -        else if (fi === fl) {
    -            // ran out of file, but still had pattern left.
    -            // this is ok if we're doing the match as part of
    -            // a glob fs traversal.
    -            return partial;
    -        }
    -        else if (pi === pl) {
    -            // ran out of pattern, still have file left.
    -            // this is only acceptable if we're on the very last
    -            // empty segment of a file with a trailing slash.
    -            // a/* should match a/b/
    -            return fi === fl - 1 && file[fi] === '';
    -            /* c8 ignore start */
    -        }
    -        else {
    -            // should be unreachable.
    -            throw new Error('wtf?');
    -        }
    -        /* c8 ignore stop */
    -    }
    -    braceExpand() {
    -        return (0, exports.braceExpand)(this.pattern, this.options);
    -    }
    -    parse(pattern) {
    -        (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
    -        const options = this.options;
    -        // shortcuts
    -        if (pattern === '**')
    -            return exports.GLOBSTAR;
    -        if (pattern === '')
    -            return '';
    -        // far and away, the most common glob pattern parts are
    -        // *, *.*, and *.  Add a fast check method for those.
    -        let m;
    -        let fastTest = null;
    -        if ((m = pattern.match(starRE))) {
    -            fastTest = options.dot ? starTestDot : starTest;
    -        }
    -        else if ((m = pattern.match(starDotExtRE))) {
    -            fastTest = (options.nocase
    -                ? options.dot
    -                    ? starDotExtTestNocaseDot
    -                    : starDotExtTestNocase
    -                : options.dot
    -                    ? starDotExtTestDot
    -                    : starDotExtTest)(m[1]);
    -        }
    -        else if ((m = pattern.match(qmarksRE))) {
    -            fastTest = (options.nocase
    -                ? options.dot
    -                    ? qmarksTestNocaseDot
    -                    : qmarksTestNocase
    -                : options.dot
    -                    ? qmarksTestDot
    -                    : qmarksTest)(m);
    -        }
    -        else if ((m = pattern.match(starDotStarRE))) {
    -            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
    -        }
    -        else if ((m = pattern.match(dotStarRE))) {
    -            fastTest = dotStarTest;
    -        }
    -        const re = ast_js_1.AST.fromGlob(pattern, this.options).toMMPattern();
    -        if (fastTest && typeof re === 'object') {
    -            // Avoids overriding in frozen environments
    -            Reflect.defineProperty(re, 'test', { value: fastTest });
    -        }
    -        return re;
    -    }
    -    makeRe() {
    -        if (this.regexp || this.regexp === false)
    -            return this.regexp;
    -        // at this point, this.set is a 2d array of partial
    -        // pattern strings, or "**".
    -        //
    -        // It's better to use .match().  This function shouldn't
    -        // be used, really, but it's pretty convenient sometimes,
    -        // when you just want to work with a regex.
    -        const set = this.set;
    -        if (!set.length) {
    -            this.regexp = false;
    -            return this.regexp;
    -        }
    -        const options = this.options;
    -        const twoStar = options.noglobstar
    -            ? star
    -            : options.dot
    -                ? twoStarDot
    -                : twoStarNoDot;
    -        const flags = new Set(options.nocase ? ['i'] : []);
    -        // regexpify non-globstar patterns
    -        // if ** is only item, then we just do one twoStar
    -        // if ** is first, and there are more, prepend (\/|twoStar\/)? to next
    -        // if ** is last, append (\/twoStar|) to previous
    -        // if ** is in the middle, append (\/|\/twoStar\/) to previous
    -        // then filter out GLOBSTAR symbols
    -        let re = set
    -            .map(pattern => {
    -            const pp = pattern.map(p => {
    -                if (p instanceof RegExp) {
    -                    for (const f of p.flags.split(''))
    -                        flags.add(f);
    -                }
    -                return typeof p === 'string'
    -                    ? regExpEscape(p)
    -                    : p === exports.GLOBSTAR
    -                        ? exports.GLOBSTAR
    -                        : p._src;
    -            });
    -            pp.forEach((p, i) => {
    -                const next = pp[i + 1];
    -                const prev = pp[i - 1];
    -                if (p !== exports.GLOBSTAR || prev === exports.GLOBSTAR) {
    -                    return;
    -                }
    -                if (prev === undefined) {
    -                    if (next !== undefined && next !== exports.GLOBSTAR) {
    -                        pp[i + 1] = '(?:\\/|' + twoStar + '\\/)?' + next;
    -                    }
    -                    else {
    -                        pp[i] = twoStar;
    -                    }
    -                }
    -                else if (next === undefined) {
    -                    pp[i - 1] = prev + '(?:\\/|' + twoStar + ')?';
    -                }
    -                else if (next !== exports.GLOBSTAR) {
    -                    pp[i - 1] = prev + '(?:\\/|\\/' + twoStar + '\\/)' + next;
    -                    pp[i + 1] = exports.GLOBSTAR;
    -                }
    -            });
    -            return pp.filter(p => p !== exports.GLOBSTAR).join('/');
    -        })
    -            .join('|');
    -        // need to wrap in parens if we had more than one thing with |,
    -        // otherwise only the first will be anchored to ^ and the last to $
    -        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];
    -        // must match entire pattern
    -        // ending in a * or ** will make it less strict.
    -        re = '^' + open + re + close + '$';
    -        // can match anything, as long as it's not this.
    -        if (this.negate)
    -            re = '^(?!' + re + ').+$';
    -        try {
    -            this.regexp = new RegExp(re, [...flags].join(''));
    -            /* c8 ignore start */
    -        }
    -        catch (ex) {
    -            // should be impossible
    -            this.regexp = false;
    -        }
    -        /* c8 ignore stop */
    -        return this.regexp;
    -    }
    -    slashSplit(p) {
    -        // if p starts with // on windows, we preserve that
    -        // so that UNC paths aren't broken.  Otherwise, any number of
    -        // / characters are coalesced into one, unless
    -        // preserveMultipleSlashes is set to true.
    -        if (this.preserveMultipleSlashes) {
    -            return p.split('/');
    -        }
    -        else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
    -            // add an extra '' for the one we lose
    -            return ['', ...p.split(/\/+/)];
    -        }
    -        else {
    -            return p.split(/\/+/);
    -        }
    -    }
    -    match(f, partial = this.partial) {
    -        this.debug('match', f, this.pattern);
    -        // short-circuit in the case of busted things.
    -        // comments, etc.
    -        if (this.comment) {
    -            return false;
    -        }
    -        if (this.empty) {
    -            return f === '';
    -        }
    -        if (f === '/' && partial) {
    -            return true;
    -        }
    -        const options = this.options;
    -        // windows: need to use /, not \
    -        if (this.isWindows) {
    -            f = f.split('\\').join('/');
    -        }
    -        // treat the test path as a set of pathparts.
    -        const ff = this.slashSplit(f);
    -        this.debug(this.pattern, 'split', ff);
    -        // just ONE of the pattern sets in this.set needs to match
    -        // in order for it to be valid.  If negating, then just one
    -        // match means that we have failed.
    -        // Either way, return on the first hit.
    -        const set = this.set;
    -        this.debug(this.pattern, 'set', set);
    -        // Find the basename of the path by looking for the last non-empty segment
    -        let filename = ff[ff.length - 1];
    -        if (!filename) {
    -            for (let i = ff.length - 2; !filename && i >= 0; i--) {
    -                filename = ff[i];
    -            }
    -        }
    -        for (let i = 0; i < set.length; i++) {
    -            const pattern = set[i];
    -            let file = ff;
    -            if (options.matchBase && pattern.length === 1) {
    -                file = [filename];
    -            }
    -            const hit = this.matchOne(file, pattern, partial);
    -            if (hit) {
    -                if (options.flipNegate) {
    -                    return true;
    -                }
    -                return !this.negate;
    -            }
    -        }
    -        // didn't get any hits.  this is success if it's a negative
    -        // pattern, failure otherwise.
    -        if (options.flipNegate) {
    -            return false;
    -        }
    -        return this.negate;
    -    }
    -    static defaults(def) {
    -        return exports.minimatch.defaults(def).Minimatch;
    -    }
    -}
    -exports.Minimatch = Minimatch;
    -/* c8 ignore start */
    -var ast_js_2 = require("./ast.js");
    -Object.defineProperty(exports, "AST", { enumerable: true, get: function () { return ast_js_2.AST; } });
    -var escape_js_2 = require("./escape.js");
    -Object.defineProperty(exports, "escape", { enumerable: true, get: function () { return escape_js_2.escape; } });
    -var unescape_js_2 = require("./unescape.js");
    -Object.defineProperty(exports, "unescape", { enumerable: true, get: function () { return unescape_js_2.unescape; } });
    -/* c8 ignore stop */
    -exports.minimatch.AST = ast_js_1.AST;
    -exports.minimatch.Minimatch = Minimatch;
    -exports.minimatch.escape = escape_js_1.escape;
    -exports.minimatch.unescape = unescape_js_1.unescape;
    -//# sourceMappingURL=index.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/package.json b/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/package.json
    deleted file mode 100644
    index 5bbefffbabee39..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/package.json
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -{
    -  "type": "commonjs"
    -}
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/unescape.js b/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/unescape.js
    deleted file mode 100644
    index 47c36bcee5a02a..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/commonjs/unescape.js
    +++ /dev/null
    @@ -1,24 +0,0 @@
    -"use strict";
    -Object.defineProperty(exports, "__esModule", { value: true });
    -exports.unescape = void 0;
    -/**
    - * Un-escape a string that has been escaped with {@link escape}.
    - *
    - * If the {@link windowsPathsNoEscape} option is used, then square-brace
    - * escapes are removed, but not backslash escapes.  For example, it will turn
    - * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`,
    - * becuase `\` is a path separator in `windowsPathsNoEscape` mode.
    - *
    - * When `windowsPathsNoEscape` is not set, then both brace escapes and
    - * backslash escapes are removed.
    - *
    - * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped
    - * or unescaped.
    - */
    -const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {
    -    return windowsPathsNoEscape
    -        ? s.replace(/\[([^\/\\])\]/g, '$1')
    -        : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2').replace(/\\([^\/])/g, '$1');
    -};
    -exports.unescape = unescape;
    -//# sourceMappingURL=unescape.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/assert-valid-pattern.js b/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/assert-valid-pattern.js
    deleted file mode 100644
    index 7b534fc30200bb..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/assert-valid-pattern.js
    +++ /dev/null
    @@ -1,10 +0,0 @@
    -const MAX_PATTERN_LENGTH = 1024 * 64;
    -export const assertValidPattern = (pattern) => {
    -    if (typeof pattern !== 'string') {
    -        throw new TypeError('invalid pattern');
    -    }
    -    if (pattern.length > MAX_PATTERN_LENGTH) {
    -        throw new TypeError('pattern is too long');
    -    }
    -};
    -//# sourceMappingURL=assert-valid-pattern.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/ast.js b/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/ast.js
    deleted file mode 100644
    index 02c6bda68427fc..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/ast.js
    +++ /dev/null
    @@ -1,588 +0,0 @@
    -// parse a single path portion
    -import { parseClass } from './brace-expressions.js';
    -import { unescape } from './unescape.js';
    -const types = new Set(['!', '?', '+', '*', '@']);
    -const isExtglobType = (c) => types.has(c);
    -// Patterns that get prepended to bind to the start of either the
    -// entire string, or just a single path portion, to prevent dots
    -// and/or traversal patterns, when needed.
    -// Exts don't need the ^ or / bit, because the root binds that already.
    -const startNoTraversal = '(?!(?:^|/)\\.\\.?(?:$|/))';
    -const startNoDot = '(?!\\.)';
    -// characters that indicate a start of pattern needs the "no dots" bit,
    -// because a dot *might* be matched. ( is not in the list, because in
    -// the case of a child extglob, it will handle the prevention itself.
    -const addPatternStart = new Set(['[', '.']);
    -// cases where traversal is A-OK, no dot prevention needed
    -const justDots = new Set(['..', '.']);
    -const reSpecials = new Set('().*{}+?[]^$\\!');
    -const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
    -// any single thing other than /
    -const qmark = '[^/]';
    -// * => any number of characters
    -const star = qmark + '*?';
    -// use + when we need to ensure that *something* matches, because the * is
    -// the only thing in the path portion.
    -const starNoEmpty = qmark + '+?';
    -// remove the \ chars that we added if we end up doing a nonmagic compare
    -// const deslash = (s: string) => s.replace(/\\(.)/g, '$1')
    -export class AST {
    -    type;
    -    #root;
    -    #hasMagic;
    -    #uflag = false;
    -    #parts = [];
    -    #parent;
    -    #parentIndex;
    -    #negs;
    -    #filledNegs = false;
    -    #options;
    -    #toString;
    -    // set to true if it's an extglob with no children
    -    // (which really means one child of '')
    -    #emptyExt = false;
    -    constructor(type, parent, options = {}) {
    -        this.type = type;
    -        // extglobs are inherently magical
    -        if (type)
    -            this.#hasMagic = true;
    -        this.#parent = parent;
    -        this.#root = this.#parent ? this.#parent.#root : this;
    -        this.#options = this.#root === this ? options : this.#root.#options;
    -        this.#negs = this.#root === this ? [] : this.#root.#negs;
    -        if (type === '!' && !this.#root.#filledNegs)
    -            this.#negs.push(this);
    -        this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;
    -    }
    -    get hasMagic() {
    -        /* c8 ignore start */
    -        if (this.#hasMagic !== undefined)
    -            return this.#hasMagic;
    -        /* c8 ignore stop */
    -        for (const p of this.#parts) {
    -            if (typeof p === 'string')
    -                continue;
    -            if (p.type || p.hasMagic)
    -                return (this.#hasMagic = true);
    -        }
    -        // note: will be undefined until we generate the regexp src and find out
    -        return this.#hasMagic;
    -    }
    -    // reconstructs the pattern
    -    toString() {
    -        if (this.#toString !== undefined)
    -            return this.#toString;
    -        if (!this.type) {
    -            return (this.#toString = this.#parts.map(p => String(p)).join(''));
    -        }
    -        else {
    -            return (this.#toString =
    -                this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');
    -        }
    -    }
    -    #fillNegs() {
    -        /* c8 ignore start */
    -        if (this !== this.#root)
    -            throw new Error('should only call on root');
    -        if (this.#filledNegs)
    -            return this;
    -        /* c8 ignore stop */
    -        // call toString() once to fill this out
    -        this.toString();
    -        this.#filledNegs = true;
    -        let n;
    -        while ((n = this.#negs.pop())) {
    -            if (n.type !== '!')
    -                continue;
    -            // walk up the tree, appending everthing that comes AFTER parentIndex
    -            let p = n;
    -            let pp = p.#parent;
    -            while (pp) {
    -                for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {
    -                    for (const part of n.#parts) {
    -                        /* c8 ignore start */
    -                        if (typeof part === 'string') {
    -                            throw new Error('string part in extglob AST??');
    -                        }
    -                        /* c8 ignore stop */
    -                        part.copyIn(pp.#parts[i]);
    -                    }
    -                }
    -                p = pp;
    -                pp = p.#parent;
    -            }
    -        }
    -        return this;
    -    }
    -    push(...parts) {
    -        for (const p of parts) {
    -            if (p === '')
    -                continue;
    -            /* c8 ignore start */
    -            if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {
    -                throw new Error('invalid part: ' + p);
    -            }
    -            /* c8 ignore stop */
    -            this.#parts.push(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([]);
    -        if (this.isEnd() &&
    -            (this === this.#root ||
    -                (this.#root.#filledNegs && this.#parent?.type === '!'))) {
    -            ret.push({});
    -        }
    -        return ret;
    -    }
    -    isStart() {
    -        if (this.#root === this)
    -            return true;
    -        // if (this.type) return !!this.#parent?.isStart()
    -        if (!this.#parent?.isStart())
    -            return false;
    -        if (this.#parentIndex === 0)
    -            return true;
    -        // if everything AHEAD of this is a negation, then it's still the "start"
    -        const p = this.#parent;
    -        for (let i = 0; i < this.#parentIndex; i++) {
    -            const pp = p.#parts[i];
    -            if (!(pp instanceof AST && pp.type === '!')) {
    -                return false;
    -            }
    -        }
    -        return true;
    -    }
    -    isEnd() {
    -        if (this.#root === this)
    -            return true;
    -        if (this.#parent?.type === '!')
    -            return true;
    -        if (!this.#parent?.isEnd())
    -            return false;
    -        if (!this.type)
    -            return this.#parent?.isEnd();
    -        // if not root, it'll always have a parent
    -        /* c8 ignore start */
    -        const pl = this.#parent ? this.#parent.#parts.length : 0;
    -        /* c8 ignore stop */
    -        return this.#parentIndex === pl - 1;
    -    }
    -    copyIn(part) {
    -        if (typeof part === 'string')
    -            this.push(part);
    -        else
    -            this.push(part.clone(this));
    -    }
    -    clone(parent) {
    -        const c = new AST(this.type, parent);
    -        for (const p of this.#parts) {
    -            c.copyIn(p);
    -        }
    -        return c;
    -    }
    -    static #parseAST(str, ast, pos, opt) {
    -        let escaping = false;
    -        let inBrace = false;
    -        let braceStart = -1;
    -        let braceNeg = false;
    -        if (ast.type === null) {
    -            // outside of a extglob, append until we find a start
    -            let i = pos;
    -            let acc = '';
    -            while (i < str.length) {
    -                const c = str.charAt(i++);
    -                // still accumulate escapes at this point, but we do ignore
    -                // starts that are escaped
    -                if (escaping || c === '\\') {
    -                    escaping = !escaping;
    -                    acc += c;
    -                    continue;
    -                }
    -                if (inBrace) {
    -                    if (i === braceStart + 1) {
    -                        if (c === '^' || c === '!') {
    -                            braceNeg = true;
    -                        }
    -                    }
    -                    else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {
    -                        inBrace = false;
    -                    }
    -                    acc += c;
    -                    continue;
    -                }
    -                else if (c === '[') {
    -                    inBrace = true;
    -                    braceStart = i;
    -                    braceNeg = false;
    -                    acc += c;
    -                    continue;
    -                }
    -                if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {
    -                    ast.push(acc);
    -                    acc = '';
    -                    const ext = new AST(c, ast);
    -                    i = AST.#parseAST(str, ext, i, opt);
    -                    ast.push(ext);
    -                    continue;
    -                }
    -                acc += c;
    -            }
    -            ast.push(acc);
    -            return i;
    -        }
    -        // some kind of extglob, pos is at the (
    -        // find the next | or )
    -        let i = pos + 1;
    -        let part = new AST(null, ast);
    -        const parts = [];
    -        let acc = '';
    -        while (i < str.length) {
    -            const c = str.charAt(i++);
    -            // still accumulate escapes at this point, but we do ignore
    -            // starts that are escaped
    -            if (escaping || c === '\\') {
    -                escaping = !escaping;
    -                acc += c;
    -                continue;
    -            }
    -            if (inBrace) {
    -                if (i === braceStart + 1) {
    -                    if (c === '^' || c === '!') {
    -                        braceNeg = true;
    -                    }
    -                }
    -                else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {
    -                    inBrace = false;
    -                }
    -                acc += c;
    -                continue;
    -            }
    -            else if (c === '[') {
    -                inBrace = true;
    -                braceStart = i;
    -                braceNeg = false;
    -                acc += c;
    -                continue;
    -            }
    -            if (isExtglobType(c) && str.charAt(i) === '(') {
    -                part.push(acc);
    -                acc = '';
    -                const ext = new AST(c, part);
    -                part.push(ext);
    -                i = AST.#parseAST(str, ext, i, opt);
    -                continue;
    -            }
    -            if (c === '|') {
    -                part.push(acc);
    -                acc = '';
    -                parts.push(part);
    -                part = new AST(null, ast);
    -                continue;
    -            }
    -            if (c === ')') {
    -                if (acc === '' && ast.#parts.length === 0) {
    -                    ast.#emptyExt = true;
    -                }
    -                part.push(acc);
    -                acc = '';
    -                ast.push(...parts, part);
    -                return i;
    -            }
    -            acc += c;
    -        }
    -        // unfinished extglob
    -        // if we got here, it was a malformed extglob! not an extglob, but
    -        // maybe something else in there.
    -        ast.type = null;
    -        ast.#hasMagic = undefined;
    -        ast.#parts = [str.substring(pos - 1)];
    -        return i;
    -    }
    -    static fromGlob(pattern, options = {}) {
    -        const ast = new AST(null, undefined, options);
    -        AST.#parseAST(pattern, ast, 0, options);
    -        return ast;
    -    }
    -    // returns the regular expression if there's magic, or the unescaped
    -    // string if not.
    -    toMMPattern() {
    -        // should only be called on root
    -        /* c8 ignore start */
    -        if (this !== this.#root)
    -            return this.#root.toMMPattern();
    -        /* c8 ignore stop */
    -        const glob = this.toString();
    -        const [re, body, hasMagic, uflag] = this.toRegExpSource();
    -        // if we're in nocase mode, and not nocaseMagicOnly, then we do
    -        // still need a regular expression if we have to case-insensitively
    -        // match capital/lowercase characters.
    -        const anyMagic = hasMagic ||
    -            this.#hasMagic ||
    -            (this.#options.nocase &&
    -                !this.#options.nocaseMagicOnly &&
    -                glob.toUpperCase() !== glob.toLowerCase());
    -        if (!anyMagic) {
    -            return body;
    -        }
    -        const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');
    -        return Object.assign(new RegExp(`^${re}$`, flags), {
    -            _src: re,
    -            _glob: glob,
    -        });
    -    }
    -    get options() {
    -        return this.#options;
    -    }
    -    // returns the string match, the regexp source, whether there's magic
    -    // in the regexp (so a regular expression is required) and whether or
    -    // not the uflag is needed for the regular expression (for posix classes)
    -    // TODO: instead of injecting the start/end at this point, just return
    -    // the BODY of the regexp, along with the start/end portions suitable
    -    // for binding the start/end in either a joined full-path makeRe context
    -    // (where we bind to (^|/), or a standalone matchPart context (where
    -    // we bind to ^, and not /).  Otherwise slashes get duped!
    -    //
    -    // In part-matching mode, the start is:
    -    // - if not isStart: nothing
    -    // - if traversal possible, but not allowed: ^(?!\.\.?$)
    -    // - if dots allowed or not possible: ^
    -    // - if dots possible and not allowed: ^(?!\.)
    -    // end is:
    -    // - if not isEnd(): nothing
    -    // - else: $
    -    //
    -    // In full-path matching mode, we put the slash at the START of the
    -    // pattern, so start is:
    -    // - if first pattern: same as part-matching mode
    -    // - if not isStart(): nothing
    -    // - if traversal possible, but not allowed: /(?!\.\.?(?:$|/))
    -    // - if dots allowed or not possible: /
    -    // - if dots possible and not allowed: /(?!\.)
    -    // end is:
    -    // - if last pattern, same as part-matching mode
    -    // - else nothing
    -    //
    -    // Always put the (?:$|/) on negated tails, though, because that has to be
    -    // there to bind the end of the negated pattern portion, and it's easier to
    -    // just stick it in now rather than try to inject it later in the middle of
    -    // the pattern.
    -    //
    -    // We can just always return the same end, and leave it up to the caller
    -    // to know whether it's going to be used joined or in parts.
    -    // And, if the start is adjusted slightly, can do the same there:
    -    // - if not isStart: nothing
    -    // - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$)
    -    // - if dots allowed or not possible: (?:/|^)
    -    // - if dots possible and not allowed: (?:/|^)(?!\.)
    -    //
    -    // But it's better to have a simpler binding without a conditional, for
    -    // performance, so probably better to return both start options.
    -    //
    -    // Then the caller just ignores the end if it's not the first pattern,
    -    // and the start always gets applied.
    -    //
    -    // But that's always going to be $ if it's the ending pattern, or nothing,
    -    // so the caller can just attach $ at the end of the pattern when building.
    -    //
    -    // So the todo is:
    -    // - better detect what kind of start is needed
    -    // - return both flavors of starting pattern
    -    // - attach $ at the end of the pattern when creating the actual RegExp
    -    //
    -    // Ah, but wait, no, that all only applies to the root when the first pattern
    -    // is not an extglob. If the first pattern IS an extglob, then we need all
    -    // that dot prevention biz to live in the extglob portions, because eg
    -    // +(*|.x*) can match .xy but not .yx.
    -    //
    -    // So, return the two flavors if it's #root and the first child is not an
    -    // AST, otherwise leave it to the child AST to handle it, and there,
    -    // use the (?:^|/) style of start binding.
    -    //
    -    // Even simplified further:
    -    // - Since the start for a join is eg /(?!\.) and the start for a part
    -    // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root
    -    // or start or whatever) and prepend ^ or / at the Regexp construction.
    -    toRegExpSource(allowDot) {
    -        const dot = allowDot ?? !!this.#options.dot;
    -        if (this.#root === this)
    -            this.#fillNegs();
    -        if (!this.type) {
    -            const noEmpty = this.isStart() && this.isEnd();
    -            const src = this.#parts
    -                .map(p => {
    -                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;
    -                return re;
    -            })
    -                .join('');
    -            let start = '';
    -            if (this.isStart()) {
    -                if (typeof this.#parts[0] === 'string') {
    -                    // this is the string that will match the start of the pattern,
    -                    // so we need to protect against dots and such.
    -                    // '.' and '..' cannot match unless the pattern is that exactly,
    -                    // even if it starts with . or dot:true is set.
    -                    const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);
    -                    if (!dotTravAllowed) {
    -                        const aps = addPatternStart;
    -                        // check if we have a possibility of matching . or ..,
    -                        // and prevent that.
    -                        const needNoTrav =
    -                        // dots are allowed, and the pattern starts with [ or .
    -                        (dot && aps.has(src.charAt(0))) ||
    -                            // the pattern starts with \., and then [ or .
    -                            (src.startsWith('\\.') && aps.has(src.charAt(2))) ||
    -                            // the pattern starts with \.\., and then [ or .
    -                            (src.startsWith('\\.\\.') && aps.has(src.charAt(4)));
    -                        // 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 : '';
    -                    }
    -                }
    -            }
    -            // append the "end of path portion" pattern to negation tails
    -            let end = '';
    -            if (this.isEnd() &&
    -                this.#root.#filledNegs &&
    -                this.#parent?.type === '!') {
    -                end = '(?:$|\\/)';
    -            }
    -            const final = start + src + end;
    -            return [
    -                final,
    -                unescape(src),
    -                (this.#hasMagic = !!this.#hasMagic),
    -                this.#uflag,
    -            ];
    -        }
    -        // We need to calculate the body *twice* if it's a repeat pattern
    -        // at the start, once in nodot mode, then again in dot mode, so a
    -        // pattern like *(?) can match 'x.y'
    -        const repeated = this.type === '*' || this.type === '+';
    -        // some kind of extglob
    -        const start = this.type === '!' ? '(?:(?!(?:' : '(?:';
    -        let body = this.#partsToRegExp(dot);
    -        if (this.isStart() && this.isEnd() && !body && this.type !== '!') {
    -            // invalid extglob, has to at least be *something* present, if it's
    -            // the entire path portion.
    -            const s = this.toString();
    -            this.#parts = [s];
    -            this.type = null;
    -            this.#hasMagic = undefined;
    -            return [s, unescape(this.toString()), false, false];
    -        }
    -        // XXX abstract out this map method
    -        let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot
    -            ? ''
    -            : this.#partsToRegExp(true);
    -        if (bodyDotAllowed === body) {
    -            bodyDotAllowed = '';
    -        }
    -        if (bodyDotAllowed) {
    -            body = `(?:${body})(?:${bodyDotAllowed})*?`;
    -        }
    -        // an empty !() is exactly equivalent to a starNoEmpty
    -        let final = '';
    -        if (this.type === '!' && this.#emptyExt) {
    -            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
    -                                ? `)?`
    -                                : `)${this.type}`;
    -            final = start + body + close;
    -        }
    -        return [
    -            final,
    -            unescape(body),
    -            (this.#hasMagic = !!this.#hasMagic),
    -            this.#uflag,
    -        ];
    -    }
    -    #partsToRegExp(dot) {
    -        return this.#parts
    -            .map(p => {
    -            // extglob ASTs should only contain parent ASTs
    -            /* c8 ignore start */
    -            if (typeof p === 'string') {
    -                throw new Error('string type in extglob ast??');
    -            }
    -            /* c8 ignore stop */
    -            // can ignore hasMagic, because extglobs are already always magic
    -            const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);
    -            this.#uflag = this.#uflag || uflag;
    -            return re;
    -        })
    -            .filter(p => !(this.isStart() && this.isEnd()) || !!p)
    -            .join('|');
    -    }
    -    static #parseGlob(glob, hasMagic, noEmpty = false) {
    -        let escaping = false;
    -        let re = '';
    -        let uflag = false;
    -        for (let i = 0; i < glob.length; i++) {
    -            const c = glob.charAt(i);
    -            if (escaping) {
    -                escaping = false;
    -                re += (reSpecials.has(c) ? '\\' : '') + c;
    -                continue;
    -            }
    -            if (c === '\\') {
    -                if (i === glob.length - 1) {
    -                    re += '\\\\';
    -                }
    -                else {
    -                    escaping = true;
    -                }
    -                continue;
    -            }
    -            if (c === '[') {
    -                const [src, needUflag, consumed, magic] = parseClass(glob, i);
    -                if (consumed) {
    -                    re += src;
    -                    uflag = uflag || needUflag;
    -                    i += consumed - 1;
    -                    hasMagic = hasMagic || magic;
    -                    continue;
    -                }
    -            }
    -            if (c === '*') {
    -                if (noEmpty && glob === '*')
    -                    re += starNoEmpty;
    -                else
    -                    re += star;
    -                hasMagic = true;
    -                continue;
    -            }
    -            if (c === '?') {
    -                re += qmark;
    -                hasMagic = true;
    -                continue;
    -            }
    -            re += regExpEscape(c);
    -        }
    -        return [re, unescape(glob), !!hasMagic, uflag];
    -    }
    -}
    -//# sourceMappingURL=ast.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/brace-expressions.js b/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/brace-expressions.js
    deleted file mode 100644
    index c629d6ae816e27..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/brace-expressions.js
    +++ /dev/null
    @@ -1,148 +0,0 @@
    -// translate the various posix character classes into unicode properties
    -// this works across all unicode locales
    -// { : [, /u flag required, negated]
    -const posixClasses = {
    -    '[:alnum:]': ['\\p{L}\\p{Nl}\\p{Nd}', true],
    -    '[:alpha:]': ['\\p{L}\\p{Nl}', true],
    -    '[:ascii:]': ['\\x' + '00-\\x' + '7f', false],
    -    '[:blank:]': ['\\p{Zs}\\t', true],
    -    '[:cntrl:]': ['\\p{Cc}', true],
    -    '[:digit:]': ['\\p{Nd}', true],
    -    '[:graph:]': ['\\p{Z}\\p{C}', true, true],
    -    '[:lower:]': ['\\p{Ll}', true],
    -    '[:print:]': ['\\p{C}', true],
    -    '[:punct:]': ['\\p{P}', true],
    -    '[:space:]': ['\\p{Z}\\t\\r\\n\\v\\f', true],
    -    '[:upper:]': ['\\p{Lu}', true],
    -    '[:word:]': ['\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}', true],
    -    '[:xdigit:]': ['A-Fa-f0-9', false],
    -};
    -// only need to escape a few things inside of brace expressions
    -// escapes: [ \ ] -
    -const braceEscape = (s) => s.replace(/[[\]\\-]/g, '\\$&');
    -// escape all regexp magic characters
    -const regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
    -// everything has already been escaped, we just have to join
    -const rangesToString = (ranges) => ranges.join('');
    -// takes a glob string at a posix brace expression, and returns
    -// an equivalent regular expression source, and boolean indicating
    -// whether the /u flag needs to be applied, and the number of chars
    -// consumed to parse the character class.
    -// This also removes out of order ranges, and returns ($.) if the
    -// entire class just no good.
    -export const parseClass = (glob, position) => {
    -    const pos = position;
    -    /* c8 ignore start */
    -    if (glob.charAt(pos) !== '[') {
    -        throw new Error('not in a brace expression');
    -    }
    -    /* c8 ignore stop */
    -    const ranges = [];
    -    const negs = [];
    -    let i = pos + 1;
    -    let sawStart = false;
    -    let uflag = false;
    -    let escaping = false;
    -    let negate = false;
    -    let endPos = pos;
    -    let rangeStart = '';
    -    WHILE: while (i < glob.length) {
    -        const c = glob.charAt(i);
    -        if ((c === '!' || c === '^') && i === pos + 1) {
    -            negate = true;
    -            i++;
    -            continue;
    -        }
    -        if (c === ']' && sawStart && !escaping) {
    -            endPos = i + 1;
    -            break;
    -        }
    -        sawStart = true;
    -        if (c === '\\') {
    -            if (!escaping) {
    -                escaping = true;
    -                i++;
    -                continue;
    -            }
    -            // escaped \ char, fall through and treat like normal char
    -        }
    -        if (c === '[' && !escaping) {
    -            // either a posix class, a collation equivalent, or just a [
    -            for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {
    -                if (glob.startsWith(cls, i)) {
    -                    // invalid, [a-[] is fine, but not [a-[:alpha]]
    -                    if (rangeStart) {
    -                        return ['$.', false, glob.length - pos, true];
    -                    }
    -                    i += cls.length;
    -                    if (neg)
    -                        negs.push(unip);
    -                    else
    -                        ranges.push(unip);
    -                    uflag = uflag || u;
    -                    continue WHILE;
    -                }
    -            }
    -        }
    -        // now it's just a normal character, effectively
    -        escaping = false;
    -        if (rangeStart) {
    -            // throw this range away if it's not valid, but others
    -            // can still match.
    -            if (c > rangeStart) {
    -                ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));
    -            }
    -            else if (c === rangeStart) {
    -                ranges.push(braceEscape(c));
    -            }
    -            rangeStart = '';
    -            i++;
    -            continue;
    -        }
    -        // now might be the start of a range.
    -        // can be either c-d or c-] or c] or c] at this point
    -        if (glob.startsWith('-]', i + 1)) {
    -            ranges.push(braceEscape(c + '-'));
    -            i += 2;
    -            continue;
    -        }
    -        if (glob.startsWith('-', i + 1)) {
    -            rangeStart = c;
    -            i += 2;
    -            continue;
    -        }
    -        // not the start of a range, just a single character
    -        ranges.push(braceEscape(c));
    -        i++;
    -    }
    -    if (endPos < i) {
    -        // didn't see the end of the class, not a valid class,
    -        // but might still be valid as a literal match.
    -        return ['', false, 0, false];
    -    }
    -    // if we got no ranges and no negates, then we have a range that
    -    // cannot possibly match anything, and that poisons the whole glob
    -    if (!ranges.length && !negs.length) {
    -        return ['$.', false, glob.length - pos, true];
    -    }
    -    // if we got one positive range, and it's a single character, then that's
    -    // not actually a magic pattern, it's just that one literal character.
    -    // we should not treat that as "magic", we should just return the literal
    -    // character. [_] is a perfectly valid way to escape glob magic chars.
    -    if (negs.length === 0 &&
    -        ranges.length === 1 &&
    -        /^\\?.$/.test(ranges[0]) &&
    -        !negate) {
    -        const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];
    -        return [regexpEscape(r), false, endPos - pos, false];
    -    }
    -    const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';
    -    const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';
    -    const comb = ranges.length && negs.length
    -        ? '(' + sranges + '|' + snegs + ')'
    -        : ranges.length
    -            ? sranges
    -            : snegs;
    -    return [comb, uflag, endPos - pos, true];
    -};
    -//# sourceMappingURL=brace-expressions.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/escape.js b/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/escape.js
    deleted file mode 100644
    index 16f7c8c7bdc646..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/escape.js
    +++ /dev/null
    @@ -1,18 +0,0 @@
    -/**
    - * Escape all magic characters in a glob pattern.
    - *
    - * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}
    - * option is used, then characters are escaped by wrapping in `[]`, because
    - * a magic character wrapped in a character class can only be satisfied by
    - * that exact character.  In this mode, `\` is _not_ escaped, because it is
    - * not interpreted as a magic character, but instead as a path separator.
    - */
    -export const escape = (s, { windowsPathsNoEscape = false, } = {}) => {
    -    // don't need to escape +@! because we escape the parens
    -    // that make those magic, and escaping ! as [!] isn't valid,
    -    // because [!]] is a valid glob class meaning not ']'.
    -    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/node-gyp/node_modules/minimatch/dist/esm/index.js b/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/index.js
    deleted file mode 100644
    index 84b577b0472cb6..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/index.js
    +++ /dev/null
    @@ -1,1001 +0,0 @@
    -import expand from 'brace-expansion';
    -import { assertValidPattern } from './assert-valid-pattern.js';
    -import { AST } from './ast.js';
    -import { escape } from './escape.js';
    -import { unescape } from './unescape.js';
    -export const minimatch = (p, pattern, options = {}) => {
    -    assertValidPattern(pattern);
    -    // shortcut: comments match nothing.
    -    if (!options.nocomment && pattern.charAt(0) === '#') {
    -        return false;
    -    }
    -    return new Minimatch(pattern, options).match(p);
    -};
    -// Optimized checking for the most common glob patterns.
    -const starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/;
    -const starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);
    -const starDotExtTestDot = (ext) => (f) => f.endsWith(ext);
    -const starDotExtTestNocase = (ext) => {
    -    ext = ext.toLowerCase();
    -    return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);
    -};
    -const starDotExtTestNocaseDot = (ext) => {
    -    ext = ext.toLowerCase();
    -    return (f) => f.toLowerCase().endsWith(ext);
    -};
    -const starDotStarRE = /^\*+\.\*+$/;
    -const starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');
    -const starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');
    -const dotStarRE = /^\.\*+$/;
    -const dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');
    -const starRE = /^\*+$/;
    -const starTest = (f) => f.length !== 0 && !f.startsWith('.');
    -const starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';
    -const qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/;
    -const qmarksTestNocase = ([$0, ext = '']) => {
    -    const noext = qmarksTestNoExt([$0]);
    -    if (!ext)
    -        return noext;
    -    ext = ext.toLowerCase();
    -    return (f) => noext(f) && f.toLowerCase().endsWith(ext);
    -};
    -const qmarksTestNocaseDot = ([$0, ext = '']) => {
    -    const noext = qmarksTestNoExtDot([$0]);
    -    if (!ext)
    -        return noext;
    -    ext = ext.toLowerCase();
    -    return (f) => noext(f) && f.toLowerCase().endsWith(ext);
    -};
    -const qmarksTestDot = ([$0, ext = '']) => {
    -    const noext = qmarksTestNoExtDot([$0]);
    -    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);
    -};
    -const qmarksTest = ([$0, ext = '']) => {
    -    const noext = qmarksTestNoExt([$0]);
    -    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);
    -};
    -const qmarksTestNoExt = ([$0]) => {
    -    const len = $0.length;
    -    return (f) => f.length === len && !f.startsWith('.');
    -};
    -const qmarksTestNoExtDot = ([$0]) => {
    -    const len = $0.length;
    -    return (f) => f.length === len && f !== '.' && f !== '..';
    -};
    -/* c8 ignore start */
    -const defaultPlatform = (typeof process === 'object' && process
    -    ? (typeof process.env === 'object' &&
    -        process.env &&
    -        process.env.__MINIMATCH_TESTING_PLATFORM__) ||
    -        process.platform
    -    : 'posix');
    -const path = {
    -    win32: { sep: '\\' },
    -    posix: { sep: '/' },
    -};
    -/* c8 ignore stop */
    -export const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;
    -minimatch.sep = sep;
    -export const GLOBSTAR = Symbol('globstar **');
    -minimatch.GLOBSTAR = GLOBSTAR;
    -// any single thing other than /
    -// don't need to escape / when using new RegExp()
    -const qmark = '[^/]';
    -// * => any number of characters
    -const star = qmark + '*?';
    -// ** when dots are allowed.  Anything goes, except .. and .
    -// not (^ or / followed by one or two dots followed by $ or /),
    -// followed by anything, any number of times.
    -const twoStarDot = '(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?';
    -// not a ^ or / followed by a dot,
    -// followed by anything, any number of times.
    -const twoStarNoDot = '(?:(?!(?:\\/|^)\\.).)*?';
    -export const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);
    -minimatch.filter = filter;
    -const ext = (a, b = {}) => Object.assign({}, a, b);
    -export const defaults = (def) => {
    -    if (!def || typeof def !== 'object' || !Object.keys(def).length) {
    -        return minimatch;
    -    }
    -    const orig = minimatch;
    -    const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));
    -    return Object.assign(m, {
    -        Minimatch: class Minimatch extends orig.Minimatch {
    -            constructor(pattern, options = {}) {
    -                super(pattern, ext(def, options));
    -            }
    -            static defaults(options) {
    -                return orig.defaults(ext(def, options)).Minimatch;
    -            }
    -        },
    -        AST: class AST extends orig.AST {
    -            /* c8 ignore start */
    -            constructor(type, parent, options = {}) {
    -                super(type, parent, ext(def, options));
    -            }
    -            /* c8 ignore stop */
    -            static fromGlob(pattern, options = {}) {
    -                return orig.AST.fromGlob(pattern, ext(def, options));
    -            }
    -        },
    -        unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),
    -        escape: (s, options = {}) => orig.escape(s, ext(def, options)),
    -        filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),
    -        defaults: (options) => orig.defaults(ext(def, options)),
    -        makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),
    -        braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),
    -        match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),
    -        sep: orig.sep,
    -        GLOBSTAR: GLOBSTAR,
    -    });
    -};
    -minimatch.defaults = defaults;
    -// Brace expansion:
    -// a{b,c}d -> abd acd
    -// a{b,}c -> abc ac
    -// a{0..3}d -> a0d a1d a2d a3d
    -// a{b,c{d,e}f}g -> abg acdfg acefg
    -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
    -//
    -// Invalid sets are not expanded.
    -// a{2..}b -> a{2..}b
    -// a{b}c -> a{b}c
    -export const braceExpand = (pattern, options = {}) => {
    -    assertValidPattern(pattern);
    -    // Thanks to Yeting Li  for
    -    // improving this regexp to avoid a ReDOS vulnerability.
    -    if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) {
    -        // shortcut. no need to expand.
    -        return [pattern];
    -    }
    -    return expand(pattern);
    -};
    -minimatch.braceExpand = braceExpand;
    -// parse a component of the expanded set.
    -// At this point, no pattern may contain "/" in it
    -// so we're going to return a 2d array, where each entry is the full
    -// pattern, split on '/', and then turned into a regular expression.
    -// A regexp is made at the end which joins each array with an
    -// escaped /, and another full one which joins each regexp with |.
    -//
    -// Following the lead of Bash 4.1, note that "**" only has special meaning
    -// when it is the *only* thing in a path portion.  Otherwise, any series
    -// of * is equivalent to a single *.  Globstar behavior is enabled by
    -// default, and can be disabled by setting options.noglobstar.
    -export const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();
    -minimatch.makeRe = makeRe;
    -export const match = (list, pattern, options = {}) => {
    -    const mm = new Minimatch(pattern, options);
    -    list = list.filter(f => mm.match(f));
    -    if (mm.options.nonull && !list.length) {
    -        list.push(pattern);
    -    }
    -    return list;
    -};
    -minimatch.match = match;
    -// replace stuff like \* with *
    -const globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/;
    -const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
    -export class Minimatch {
    -    options;
    -    set;
    -    pattern;
    -    windowsPathsNoEscape;
    -    nonegate;
    -    negate;
    -    comment;
    -    empty;
    -    preserveMultipleSlashes;
    -    partial;
    -    globSet;
    -    globParts;
    -    nocase;
    -    isWindows;
    -    platform;
    -    windowsNoMagicRoot;
    -    regexp;
    -    constructor(pattern, options = {}) {
    -        assertValidPattern(pattern);
    -        options = options || {};
    -        this.options = options;
    -        this.pattern = pattern;
    -        this.platform = options.platform || defaultPlatform;
    -        this.isWindows = this.platform === 'win32';
    -        this.windowsPathsNoEscape =
    -            !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;
    -        if (this.windowsPathsNoEscape) {
    -            this.pattern = this.pattern.replace(/\\/g, '/');
    -        }
    -        this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;
    -        this.regexp = null;
    -        this.negate = false;
    -        this.nonegate = !!options.nonegate;
    -        this.comment = false;
    -        this.empty = false;
    -        this.partial = !!options.partial;
    -        this.nocase = !!this.options.nocase;
    -        this.windowsNoMagicRoot =
    -            options.windowsNoMagicRoot !== undefined
    -                ? options.windowsNoMagicRoot
    -                : !!(this.isWindows && this.nocase);
    -        this.globSet = [];
    -        this.globParts = [];
    -        this.set = [];
    -        // make the set of regexps etc.
    -        this.make();
    -    }
    -    hasMagic() {
    -        if (this.options.magicalBraces && this.set.length > 1) {
    -            return true;
    -        }
    -        for (const pattern of this.set) {
    -            for (const part of pattern) {
    -                if (typeof part !== 'string')
    -                    return true;
    -            }
    -        }
    -        return false;
    -    }
    -    debug(..._) { }
    -    make() {
    -        const pattern = this.pattern;
    -        const options = this.options;
    -        // empty patterns and comments match nothing.
    -        if (!options.nocomment && pattern.charAt(0) === '#') {
    -            this.comment = true;
    -            return;
    -        }
    -        if (!pattern) {
    -            this.empty = true;
    -            return;
    -        }
    -        // step 1: figure out negation, etc.
    -        this.parseNegate();
    -        // step 2: expand braces
    -        this.globSet = [...new Set(this.braceExpand())];
    -        if (options.debug) {
    -            this.debug = (...args) => console.error(...args);
    -        }
    -        this.debug(this.pattern, this.globSet);
    -        // step 3: now we have a set, so turn each one into a series of
    -        // path-portion matching patterns.
    -        // These will be regexps, except in the case of "**", which is
    -        // set to the GLOBSTAR object for globstar behavior,
    -        // and will not contain any / characters
    -        //
    -        // First, we preprocess to make the glob pattern sets a bit simpler
    -        // and deduped.  There are some perf-killing patterns that can cause
    -        // problems with a glob walk, but we can simplify them down a bit.
    -        const rawGlobParts = this.globSet.map(s => this.slashSplit(s));
    -        this.globParts = this.preprocess(rawGlobParts);
    -        this.debug(this.pattern, this.globParts);
    -        // glob --> regexps
    -        let set = this.globParts.map((s, _, __) => {
    -            if (this.isWindows && this.windowsNoMagicRoot) {
    -                // check if it's a drive or unc path.
    -                const isUNC = s[0] === '' &&
    -                    s[1] === '' &&
    -                    (s[2] === '?' || !globMagic.test(s[2])) &&
    -                    !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))];
    -                }
    -                else if (isDrive) {
    -                    return [s[0], ...s.slice(1).map(ss => this.parse(ss))];
    -                }
    -            }
    -            return s.map(ss => this.parse(ss));
    -        });
    -        this.debug(this.pattern, set);
    -        // filter out everything that didn't compile properly.
    -        this.set = set.filter(s => s.indexOf(false) === -1);
    -        // do not treat the ? in UNC paths as magic
    -        if (this.isWindows) {
    -            for (let i = 0; i < this.set.length; i++) {
    -                const p = this.set[i];
    -                if (p[0] === '' &&
    -                    p[1] === '' &&
    -                    this.globParts[i][2] === '?' &&
    -                    typeof p[3] === 'string' &&
    -                    /^[a-z]:$/i.test(p[3])) {
    -                    p[2] = '?';
    -                }
    -            }
    -        }
    -        this.debug(this.pattern, this.set);
    -    }
    -    // various transforms to equivalent pattern sets that are
    -    // faster to process in a filesystem walk.  The goal is to
    -    // eliminate what we can, and push all ** patterns as far
    -    // 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 (this.options.noglobstar) {
    -            for (let i = 0; i < globParts.length; i++) {
    -                for (let j = 0; j < globParts[i].length; j++) {
    -                    if (globParts[i][j] === '**') {
    -                        globParts[i][j] = '*';
    -                    }
    -                }
    -            }
    -        }
    -        const { optimizationLevel = 1 } = this.options;
    -        if (optimizationLevel >= 2) {
    -            // aggressive optimization for the purpose of fs walking
    -            globParts = this.firstPhasePreProcess(globParts);
    -            globParts = this.secondPhasePreProcess(globParts);
    -        }
    -        else if (optimizationLevel >= 1) {
    -            // just basic optimizations to remove some .. parts
    -            globParts = this.levelOneOptimize(globParts);
    -        }
    -        else {
    -            // just collapse multiple ** portions into one
    -            globParts = this.adjascentGlobstarOptimize(globParts);
    -        }
    -        return globParts;
    -    }
    -    // just get rid of adjascent ** portions
    -    adjascentGlobstarOptimize(globParts) {
    -        return globParts.map(parts => {
    -            let gs = -1;
    -            while (-1 !== (gs = parts.indexOf('**', gs + 1))) {
    -                let i = gs;
    -                while (parts[i + 1] === '**') {
    -                    i++;
    -                }
    -                if (i !== gs) {
    -                    parts.splice(gs, i - gs);
    -                }
    -            }
    -            return parts;
    -        });
    -    }
    -    // get rid of adjascent ** and resolve .. portions
    -    levelOneOptimize(globParts) {
    -        return globParts.map(parts => {
    -            parts = parts.reduce((set, part) => {
    -                const prev = set[set.length - 1];
    -                if (part === '**' && prev === '**') {
    -                    return set;
    -                }
    -                if (part === '..') {
    -                    if (prev && prev !== '..' && prev !== '.' && prev !== '**') {
    -                        set.pop();
    -                        return set;
    -                    }
    -                }
    -                set.push(part);
    -                return set;
    -            }, []);
    -            return parts.length === 0 ? [''] : parts;
    -        });
    -    }
    -    levelTwoFileOptimize(parts) {
    -        if (!Array.isArray(parts)) {
    -            parts = this.slashSplit(parts);
    -        }
    -        let didSomething = false;
    -        do {
    -            didSomething = false;
    -            // 
    // -> 
    /
    -            if (!this.preserveMultipleSlashes) {
    -                for (let i = 1; i < parts.length - 1; i++) {
    -                    const p = parts[i];
    -                    // don't squeeze out UNC patterns
    -                    if (i === 1 && p === '' && parts[0] === '')
    -                        continue;
    -                    if (p === '.' || p === '') {
    -                        didSomething = true;
    -                        parts.splice(i, 1);
    -                        i--;
    -                    }
    -                }
    -                if (parts[0] === '.' &&
    -                    parts.length === 2 &&
    -                    (parts[1] === '.' || parts[1] === '')) {
    -                    didSomething = true;
    -                    parts.pop();
    -                }
    -            }
    -            // 
    /

    /../ ->

    /
    -            let dd = 0;
    -            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
    -                const p = parts[dd - 1];
    -                if (p && p !== '.' && p !== '..' && p !== '**') {
    -                    didSomething = true;
    -                    parts.splice(dd - 1, 2);
    -                    dd -= 2;
    -                }
    -            }
    -        } while (didSomething);
    -        return parts.length === 0 ? [''] : parts;
    -    }
    -    // First phase: single-pattern processing
    -    // 
     is 1 or more portions
    -    //  is 1 or more portions
    -    // 

    is any portion other than ., .., '', or ** - // is . or '' - // - // **/.. is *brutal* for filesystem walking performance, because - // it effectively resets the recursive walk each time it occurs, - // and ** cannot be reduced out by a .. pattern part like a regexp - // or most strings (other than .., ., and '') can be. - // - //

    /**/../

    /

    / -> {

    /../

    /

    /,

    /**/

    /

    /} - //

    // -> 
    /
    -    // 
    /

    /../ ->

    /
    -    // **/**/ -> **/
    -    //
    -    // **/*/ -> */**/ <== not valid because ** doesn't follow
    -    // this WOULD be allowed if ** did follow symlinks, or * didn't
    -    firstPhasePreProcess(globParts) {
    -        let didSomething = false;
    -        do {
    -            didSomething = false;
    -            // 
    /**/../

    /

    / -> {

    /../

    /

    /,

    /**/

    /

    /} - for (let parts of globParts) { - let gs = -1; - while (-1 !== (gs = parts.indexOf('**', gs + 1))) { - let gss = gs; - while (parts[gss + 1] === '**') { - //

    /**/**/ -> 
    /**/
    -                        gss++;
    -                    }
    -                    // eg, if gs is 2 and gss is 4, that means we have 3 **
    -                    // parts, and can remove 2 of them.
    -                    if (gss > gs) {
    -                        parts.splice(gs + 1, gss - gs);
    -                    }
    -                    let next = parts[gs + 1];
    -                    const p = parts[gs + 2];
    -                    const p2 = parts[gs + 3];
    -                    if (next !== '..')
    -                        continue;
    -                    if (!p ||
    -                        p === '.' ||
    -                        p === '..' ||
    -                        !p2 ||
    -                        p2 === '.' ||
    -                        p2 === '..') {
    -                        continue;
    -                    }
    -                    didSomething = true;
    -                    // edit parts in place, and push the new one
    -                    parts.splice(gs, 1);
    -                    const other = parts.slice(0);
    -                    other[gs] = '**';
    -                    globParts.push(other);
    -                    gs--;
    -                }
    -                // 
    // -> 
    /
    -                if (!this.preserveMultipleSlashes) {
    -                    for (let i = 1; i < parts.length - 1; i++) {
    -                        const p = parts[i];
    -                        // don't squeeze out UNC patterns
    -                        if (i === 1 && p === '' && parts[0] === '')
    -                            continue;
    -                        if (p === '.' || p === '') {
    -                            didSomething = true;
    -                            parts.splice(i, 1);
    -                            i--;
    -                        }
    -                    }
    -                    if (parts[0] === '.' &&
    -                        parts.length === 2 &&
    -                        (parts[1] === '.' || parts[1] === '')) {
    -                        didSomething = true;
    -                        parts.pop();
    -                    }
    -                }
    -                // 
    /

    /../ ->

    /
    -                let dd = 0;
    -                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
    -                    const p = parts[dd - 1];
    -                    if (p && p !== '.' && p !== '..' && p !== '**') {
    -                        didSomething = true;
    -                        const needDot = dd === 1 && parts[dd + 1] === '**';
    -                        const splin = needDot ? ['.'] : [];
    -                        parts.splice(dd - 1, 2, ...splin);
    -                        if (parts.length === 0)
    -                            parts.push('');
    -                        dd -= 2;
    -                    }
    -                }
    -            }
    -        } while (didSomething);
    -        return globParts;
    -    }
    -    // second phase: multi-pattern dedupes
    -    // {
    /*/,
    /

    /} ->

    /*/
    -    // {
    /,
    /} -> 
    /
    -    // {
    /**/,
    /} -> 
    /**/
    -    //
    -    // {
    /**/,
    /**/

    /} ->

    /**/
    -    // ^-- not valid because ** doens't follow symlinks
    -    secondPhasePreProcess(globParts) {
    -        for (let i = 0; i < globParts.length - 1; i++) {
    -            for (let j = i + 1; j < globParts.length; j++) {
    -                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
    -                if (matched) {
    -                    globParts[i] = [];
    -                    globParts[j] = matched;
    -                    break;
    -                }
    -            }
    -        }
    -        return globParts.filter(gs => gs.length);
    -    }
    -    partsMatch(a, b, emptyGSMatch = false) {
    -        let ai = 0;
    -        let bi = 0;
    -        let result = [];
    -        let which = '';
    -        while (ai < a.length && bi < b.length) {
    -            if (a[ai] === b[bi]) {
    -                result.push(which === 'b' ? b[bi] : a[ai]);
    -                ai++;
    -                bi++;
    -            }
    -            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {
    -                result.push(a[ai]);
    -                ai++;
    -            }
    -            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {
    -                result.push(b[bi]);
    -                bi++;
    -            }
    -            else if (a[ai] === '*' &&
    -                b[bi] &&
    -                (this.options.dot || !b[bi].startsWith('.')) &&
    -                b[bi] !== '**') {
    -                if (which === 'b')
    -                    return false;
    -                which = 'a';
    -                result.push(a[ai]);
    -                ai++;
    -                bi++;
    -            }
    -            else if (b[bi] === '*' &&
    -                a[ai] &&
    -                (this.options.dot || !a[ai].startsWith('.')) &&
    -                a[ai] !== '**') {
    -                if (which === 'a')
    -                    return false;
    -                which = 'b';
    -                result.push(b[bi]);
    -                ai++;
    -                bi++;
    -            }
    -            else {
    -                return false;
    -            }
    -        }
    -        // if we fall out of the loop, it means they two are identical
    -        // as long as their lengths match
    -        return a.length === b.length && result;
    -    }
    -    parseNegate() {
    -        if (this.nonegate)
    -            return;
    -        const pattern = this.pattern;
    -        let negate = false;
    -        let negateOffset = 0;
    -        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {
    -            negate = !negate;
    -            negateOffset++;
    -        }
    -        if (negateOffset)
    -            this.pattern = pattern.slice(negateOffset);
    -        this.negate = negate;
    -    }
    -    // set partial to true to test if, for example,
    -    // "/a/b" matches the start of "/*/b/*/d"
    -    // Partial means, if you run out of file before you run
    -    // out of pattern, then that's fine, as long as all
    -    // the parts match.
    -    matchOne(file, pattern, partial = false) {
    -        const options = this.options;
    -        // UNC paths like //?/X:/... can match X:/... and vice versa
    -        // Drive letters in absolute drive or unc paths are always compared
    -        // case-insensitively.
    -        if (this.isWindows) {
    -            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);
    -            const fileUNC = !fileDrive &&
    -                file[0] === '' &&
    -                file[1] === '' &&
    -                file[2] === '?' &&
    -                /^[a-z]:$/i.test(file[3]);
    -            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);
    -            const patternUNC = !patternDrive &&
    -                pattern[0] === '' &&
    -                pattern[1] === '' &&
    -                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;
    -            if (typeof fdi === 'number' && typeof pdi === 'number') {
    -                const [fd, pd] = [file[fdi], pattern[pdi]];
    -                if (fd.toLowerCase() === pd.toLowerCase()) {
    -                    pattern[pdi] = fd;
    -                    if (pdi > fdi) {
    -                        pattern = pattern.slice(pdi);
    -                    }
    -                    else if (fdi > pdi) {
    -                        file = file.slice(fdi);
    -                    }
    -                }
    -            }
    -        }
    -        // resolve and reduce . and .. portions in the file as well.
    -        // dont' need to do the second phase, because it's only one string[]
    -        const { optimizationLevel = 1 } = this.options;
    -        if (optimizationLevel >= 2) {
    -            file = this.levelTwoFileOptimize(file);
    -        }
    -        this.debug('matchOne', this, { file, pattern });
    -        this.debug('matchOne', file.length, pattern.length);
    -        for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
    -            this.debug('matchOne loop');
    -            var p = pattern[pi];
    -            var f = file[fi];
    -            this.debug(pattern, p, f);
    -            // should be impossible.
    -            // some invalid regexp stuff in the set.
    -            /* c8 ignore start */
    -            if (p === false) {
    -                return false;
    -            }
    -            /* c8 ignore stop */
    -            if (p === GLOBSTAR) {
    -                this.debug('GLOBSTAR', [pattern, p, f]);
    -                // "**"
    -                // a/**/b/**/c would match the following:
    -                // a/b/x/y/z/c
    -                // a/x/y/z/b/c
    -                // a/b/x/b/x/c
    -                // a/b/c
    -                // To do this, take the rest of the pattern after
    -                // the **, and see if it would match the file remainder.
    -                // If so, return success.
    -                // If not, the ** "swallows" a segment, and try again.
    -                // This is recursively awful.
    -                //
    -                // a/**/b/**/c matching a/b/x/y/z/c
    -                // - a matches a
    -                // - doublestar
    -                //   - matchOne(b/x/y/z/c, b/**/c)
    -                //     - b matches b
    -                //     - doublestar
    -                //       - matchOne(x/y/z/c, c) -> no
    -                //       - matchOne(y/z/c, c) -> no
    -                //       - matchOne(z/c, c) -> no
    -                //       - matchOne(c, c) yes, hit
    -                var fr = fi;
    -                var pr = pi + 1;
    -                if (pr === pl) {
    -                    this.debug('** at the end');
    -                    // a ** at the end will just swallow the rest.
    -                    // We have found a match.
    -                    // however, it will not swallow /.x, unless
    -                    // options.dot is set.
    -                    // . and .. are *never* matched by **, for explosively
    -                    // exponential reasons.
    -                    for (; fi < fl; fi++) {
    -                        if (file[fi] === '.' ||
    -                            file[fi] === '..' ||
    -                            (!options.dot && file[fi].charAt(0) === '.'))
    -                            return false;
    -                    }
    -                    return true;
    -                }
    -                // ok, let's see if we can swallow whatever we can.
    -                while (fr < fl) {
    -                    var swallowee = file[fr];
    -                    this.debug('\nglobstar while', file, fr, pattern, pr, swallowee);
    -                    // XXX remove this slice.  Just pass the start index.
    -                    if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
    -                        this.debug('globstar found match!', fr, fl, swallowee);
    -                        // found a match.
    -                        return true;
    -                    }
    -                    else {
    -                        // can't swallow "." or ".." ever.
    -                        // can only swallow ".foo" when explicitly asked.
    -                        if (swallowee === '.' ||
    -                            swallowee === '..' ||
    -                            (!options.dot && swallowee.charAt(0) === '.')) {
    -                            this.debug('dot detected!', file, fr, pattern, pr);
    -                            break;
    -                        }
    -                        // ** swallows a segment, and continue.
    -                        this.debug('globstar swallow a segment, and continue');
    -                        fr++;
    -                    }
    -                }
    -                // no match was found.
    -                // However, in partial mode, we can't say this is necessarily over.
    -                /* c8 ignore start */
    -                if (partial) {
    -                    // ran out of file
    -                    this.debug('\n>>> no match, partial?', file, fr, pattern, pr);
    -                    if (fr === fl) {
    -                        return true;
    -                    }
    -                }
    -                /* c8 ignore stop */
    -                return false;
    -            }
    -            // something other than **
    -            // non-magic patterns just have to match exactly
    -            // patterns with magic have been turned into regexps.
    -            let hit;
    -            if (typeof p === 'string') {
    -                hit = f === p;
    -                this.debug('string match', p, f, hit);
    -            }
    -            else {
    -                hit = p.test(f);
    -                this.debug('pattern match', p, f, hit);
    -            }
    -            if (!hit)
    -                return false;
    -        }
    -        // Note: ending in / means that we'll get a final ""
    -        // at the end of the pattern.  This can only match a
    -        // corresponding "" at the end of the file.
    -        // If the file ends in /, then it can only match a
    -        // a pattern that ends in /, unless the pattern just
    -        // doesn't have any more for it. But, a/b/ should *not*
    -        // match "a/b/*", even though "" matches against the
    -        // [^/]*? pattern, except in partial mode, where it might
    -        // simply not be reached yet.
    -        // However, a/b/ should still satisfy a/*
    -        // now either we fell off the end of the pattern, or we're done.
    -        if (fi === fl && pi === pl) {
    -            // ran out of pattern and filename at the same time.
    -            // an exact hit!
    -            return true;
    -        }
    -        else if (fi === fl) {
    -            // ran out of file, but still had pattern left.
    -            // this is ok if we're doing the match as part of
    -            // a glob fs traversal.
    -            return partial;
    -        }
    -        else if (pi === pl) {
    -            // ran out of pattern, still have file left.
    -            // this is only acceptable if we're on the very last
    -            // empty segment of a file with a trailing slash.
    -            // a/* should match a/b/
    -            return fi === fl - 1 && file[fi] === '';
    -            /* c8 ignore start */
    -        }
    -        else {
    -            // should be unreachable.
    -            throw new Error('wtf?');
    -        }
    -        /* c8 ignore stop */
    -    }
    -    braceExpand() {
    -        return braceExpand(this.pattern, this.options);
    -    }
    -    parse(pattern) {
    -        assertValidPattern(pattern);
    -        const options = this.options;
    -        // shortcuts
    -        if (pattern === '**')
    -            return GLOBSTAR;
    -        if (pattern === '')
    -            return '';
    -        // far and away, the most common glob pattern parts are
    -        // *, *.*, and *.  Add a fast check method for those.
    -        let m;
    -        let fastTest = null;
    -        if ((m = pattern.match(starRE))) {
    -            fastTest = options.dot ? starTestDot : starTest;
    -        }
    -        else if ((m = pattern.match(starDotExtRE))) {
    -            fastTest = (options.nocase
    -                ? options.dot
    -                    ? starDotExtTestNocaseDot
    -                    : starDotExtTestNocase
    -                : options.dot
    -                    ? starDotExtTestDot
    -                    : starDotExtTest)(m[1]);
    -        }
    -        else if ((m = pattern.match(qmarksRE))) {
    -            fastTest = (options.nocase
    -                ? options.dot
    -                    ? qmarksTestNocaseDot
    -                    : qmarksTestNocase
    -                : options.dot
    -                    ? qmarksTestDot
    -                    : qmarksTest)(m);
    -        }
    -        else if ((m = pattern.match(starDotStarRE))) {
    -            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
    -        }
    -        else if ((m = pattern.match(dotStarRE))) {
    -            fastTest = dotStarTest;
    -        }
    -        const re = AST.fromGlob(pattern, this.options).toMMPattern();
    -        if (fastTest && typeof re === 'object') {
    -            // Avoids overriding in frozen environments
    -            Reflect.defineProperty(re, 'test', { value: fastTest });
    -        }
    -        return re;
    -    }
    -    makeRe() {
    -        if (this.regexp || this.regexp === false)
    -            return this.regexp;
    -        // at this point, this.set is a 2d array of partial
    -        // pattern strings, or "**".
    -        //
    -        // It's better to use .match().  This function shouldn't
    -        // be used, really, but it's pretty convenient sometimes,
    -        // when you just want to work with a regex.
    -        const set = this.set;
    -        if (!set.length) {
    -            this.regexp = false;
    -            return this.regexp;
    -        }
    -        const options = this.options;
    -        const twoStar = options.noglobstar
    -            ? star
    -            : options.dot
    -                ? twoStarDot
    -                : twoStarNoDot;
    -        const flags = new Set(options.nocase ? ['i'] : []);
    -        // regexpify non-globstar patterns
    -        // if ** is only item, then we just do one twoStar
    -        // if ** is first, and there are more, prepend (\/|twoStar\/)? to next
    -        // if ** is last, append (\/twoStar|) to previous
    -        // if ** is in the middle, append (\/|\/twoStar\/) to previous
    -        // then filter out GLOBSTAR symbols
    -        let re = set
    -            .map(pattern => {
    -            const pp = pattern.map(p => {
    -                if (p instanceof RegExp) {
    -                    for (const f of p.flags.split(''))
    -                        flags.add(f);
    -                }
    -                return typeof p === 'string'
    -                    ? regExpEscape(p)
    -                    : p === GLOBSTAR
    -                        ? GLOBSTAR
    -                        : p._src;
    -            });
    -            pp.forEach((p, i) => {
    -                const next = pp[i + 1];
    -                const prev = pp[i - 1];
    -                if (p !== GLOBSTAR || prev === GLOBSTAR) {
    -                    return;
    -                }
    -                if (prev === undefined) {
    -                    if (next !== undefined && next !== GLOBSTAR) {
    -                        pp[i + 1] = '(?:\\/|' + twoStar + '\\/)?' + next;
    -                    }
    -                    else {
    -                        pp[i] = twoStar;
    -                    }
    -                }
    -                else if (next === undefined) {
    -                    pp[i - 1] = prev + '(?:\\/|' + twoStar + ')?';
    -                }
    -                else if (next !== GLOBSTAR) {
    -                    pp[i - 1] = prev + '(?:\\/|\\/' + twoStar + '\\/)' + next;
    -                    pp[i + 1] = GLOBSTAR;
    -                }
    -            });
    -            return pp.filter(p => p !== GLOBSTAR).join('/');
    -        })
    -            .join('|');
    -        // need to wrap in parens if we had more than one thing with |,
    -        // otherwise only the first will be anchored to ^ and the last to $
    -        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];
    -        // must match entire pattern
    -        // ending in a * or ** will make it less strict.
    -        re = '^' + open + re + close + '$';
    -        // can match anything, as long as it's not this.
    -        if (this.negate)
    -            re = '^(?!' + re + ').+$';
    -        try {
    -            this.regexp = new RegExp(re, [...flags].join(''));
    -            /* c8 ignore start */
    -        }
    -        catch (ex) {
    -            // should be impossible
    -            this.regexp = false;
    -        }
    -        /* c8 ignore stop */
    -        return this.regexp;
    -    }
    -    slashSplit(p) {
    -        // if p starts with // on windows, we preserve that
    -        // so that UNC paths aren't broken.  Otherwise, any number of
    -        // / characters are coalesced into one, unless
    -        // preserveMultipleSlashes is set to true.
    -        if (this.preserveMultipleSlashes) {
    -            return p.split('/');
    -        }
    -        else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
    -            // add an extra '' for the one we lose
    -            return ['', ...p.split(/\/+/)];
    -        }
    -        else {
    -            return p.split(/\/+/);
    -        }
    -    }
    -    match(f, partial = this.partial) {
    -        this.debug('match', f, this.pattern);
    -        // short-circuit in the case of busted things.
    -        // comments, etc.
    -        if (this.comment) {
    -            return false;
    -        }
    -        if (this.empty) {
    -            return f === '';
    -        }
    -        if (f === '/' && partial) {
    -            return true;
    -        }
    -        const options = this.options;
    -        // windows: need to use /, not \
    -        if (this.isWindows) {
    -            f = f.split('\\').join('/');
    -        }
    -        // treat the test path as a set of pathparts.
    -        const ff = this.slashSplit(f);
    -        this.debug(this.pattern, 'split', ff);
    -        // just ONE of the pattern sets in this.set needs to match
    -        // in order for it to be valid.  If negating, then just one
    -        // match means that we have failed.
    -        // Either way, return on the first hit.
    -        const set = this.set;
    -        this.debug(this.pattern, 'set', set);
    -        // Find the basename of the path by looking for the last non-empty segment
    -        let filename = ff[ff.length - 1];
    -        if (!filename) {
    -            for (let i = ff.length - 2; !filename && i >= 0; i--) {
    -                filename = ff[i];
    -            }
    -        }
    -        for (let i = 0; i < set.length; i++) {
    -            const pattern = set[i];
    -            let file = ff;
    -            if (options.matchBase && pattern.length === 1) {
    -                file = [filename];
    -            }
    -            const hit = this.matchOne(file, pattern, partial);
    -            if (hit) {
    -                if (options.flipNegate) {
    -                    return true;
    -                }
    -                return !this.negate;
    -            }
    -        }
    -        // didn't get any hits.  this is success if it's a negative
    -        // pattern, failure otherwise.
    -        if (options.flipNegate) {
    -            return false;
    -        }
    -        return this.negate;
    -    }
    -    static defaults(def) {
    -        return minimatch.defaults(def).Minimatch;
    -    }
    -}
    -/* c8 ignore start */
    -export { AST } from './ast.js';
    -export { escape } from './escape.js';
    -export { unescape } from './unescape.js';
    -/* c8 ignore stop */
    -minimatch.AST = AST;
    -minimatch.Minimatch = Minimatch;
    -minimatch.escape = escape;
    -minimatch.unescape = unescape;
    -//# sourceMappingURL=index.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/package.json b/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/package.json
    deleted file mode 100644
    index 3dbc1ca591c055..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/package.json
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -{
    -  "type": "module"
    -}
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/unescape.js b/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/unescape.js
    deleted file mode 100644
    index 0faf9a2b7306f7..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/dist/esm/unescape.js
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -/**
    - * Un-escape a string that has been escaped with {@link escape}.
    - *
    - * If the {@link windowsPathsNoEscape} option is used, then square-brace
    - * escapes are removed, but not backslash escapes.  For example, it will turn
    - * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`,
    - * becuase `\` is a path separator in `windowsPathsNoEscape` mode.
    - *
    - * When `windowsPathsNoEscape` is not set, then both brace escapes and
    - * backslash escapes are removed.
    - *
    - * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped
    - * or unescaped.
    - */
    -export const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {
    -    return windowsPathsNoEscape
    -        ? s.replace(/\[([^\/\\])\]/g, '$1')
    -        : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2').replace(/\\([^\/])/g, '$1');
    -};
    -//# sourceMappingURL=unescape.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/minimatch/package.json b/deps/npm/node_modules/node-gyp/node_modules/minimatch/package.json
    deleted file mode 100644
    index 01fc48ecfd6a9f..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/package.json
    +++ /dev/null
    @@ -1,82 +0,0 @@
    -{
    -  "author": "Isaac Z. Schlueter  (http://blog.izs.me)",
    -  "name": "minimatch",
    -  "description": "a glob matcher in javascript",
    -  "version": "9.0.5",
    -  "repository": {
    -    "type": "git",
    -    "url": "git://github.com/isaacs/minimatch.git"
    -  },
    -  "main": "./dist/commonjs/index.js",
    -  "types": "./dist/commonjs/index.d.ts",
    -  "exports": {
    -    "./package.json": "./package.json",
    -    ".": {
    -      "import": {
    -        "types": "./dist/esm/index.d.ts",
    -        "default": "./dist/esm/index.js"
    -      },
    -      "require": {
    -        "types": "./dist/commonjs/index.d.ts",
    -        "default": "./dist/commonjs/index.js"
    -      }
    -    }
    -  },
    -  "files": [
    -    "dist"
    -  ],
    -  "scripts": {
    -    "preversion": "npm test",
    -    "postversion": "npm publish",
    -    "prepublishOnly": "git push origin --follow-tags",
    -    "prepare": "tshy",
    -    "pretest": "npm run prepare",
    -    "presnap": "npm run prepare",
    -    "test": "tap",
    -    "snap": "tap",
    -    "format": "prettier --write . --loglevel warn",
    -    "benchmark": "node benchmark/index.js",
    -    "typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts"
    -  },
    -  "prettier": {
    -    "semi": false,
    -    "printWidth": 80,
    -    "tabWidth": 2,
    -    "useTabs": false,
    -    "singleQuote": true,
    -    "jsxSingleQuote": false,
    -    "bracketSameLine": true,
    -    "arrowParens": "avoid",
    -    "endOfLine": "lf"
    -  },
    -  "engines": {
    -    "node": ">=16 || 14 >=14.17"
    -  },
    -  "dependencies": {
    -    "brace-expansion": "^2.0.1"
    -  },
    -  "devDependencies": {
    -    "@types/brace-expansion": "^1.1.0",
    -    "@types/node": "^18.15.11",
    -    "@types/tap": "^15.0.8",
    -    "eslint-config-prettier": "^8.6.0",
    -    "mkdirp": "1",
    -    "prettier": "^2.8.2",
    -    "tap": "^18.7.2",
    -    "ts-node": "^10.9.1",
    -    "tshy": "^1.12.0",
    -    "typedoc": "^0.23.21",
    -    "typescript": "^4.9.3"
    -  },
    -  "funding": {
    -    "url": "https://github.com/sponsors/isaacs"
    -  },
    -  "license": "ISC",
    -  "tshy": {
    -    "exports": {
    -      "./package.json": "./package.json",
    -      ".": "./src/index.ts"
    -    }
    -  },
    -  "type": "module"
    -}
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/commonjs/index.js b/deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/commonjs/index.js
    deleted file mode 100644
    index 555de62f04c90e..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/commonjs/index.js
    +++ /dev/null
    @@ -1,2014 +0,0 @@
    -"use strict";
    -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    -    if (k2 === undefined) k2 = k;
    -    var desc = Object.getOwnPropertyDescriptor(m, k);
    -    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
    -      desc = { enumerable: true, get: function() { return m[k]; } };
    -    }
    -    Object.defineProperty(o, k2, desc);
    -}) : (function(o, m, k, k2) {
    -    if (k2 === undefined) k2 = k;
    -    o[k2] = m[k];
    -}));
    -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    -    Object.defineProperty(o, "default", { enumerable: true, value: v });
    -}) : 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;
    -};
    -Object.defineProperty(exports, "__esModule", { value: true });
    -exports.PathScurry = exports.Path = exports.PathScurryDarwin = exports.PathScurryPosix = exports.PathScurryWin32 = exports.PathScurryBase = exports.PathPosix = exports.PathWin32 = exports.PathBase = exports.ChildrenCache = exports.ResolveCache = void 0;
    -const lru_cache_1 = require("lru-cache");
    -const node_path_1 = require("node:path");
    -const node_url_1 = require("node:url");
    -const fs_1 = require("fs");
    -const actualFS = __importStar(require("node:fs"));
    -const realpathSync = fs_1.realpathSync.native;
    -// TODO: test perf of fs/promises realpath vs realpathCB,
    -// since the promises one uses realpath.native
    -const promises_1 = require("node:fs/promises");
    -const minipass_1 = require("minipass");
    -const defaultFS = {
    -    lstatSync: fs_1.lstatSync,
    -    readdir: fs_1.readdir,
    -    readdirSync: fs_1.readdirSync,
    -    readlinkSync: fs_1.readlinkSync,
    -    realpathSync,
    -    promises: {
    -        lstat: promises_1.lstat,
    -        readdir: promises_1.readdir,
    -        readlink: promises_1.readlink,
    -        realpath: promises_1.realpath,
    -    },
    -};
    -// if they just gave us require('fs') then use our default
    -const fsFromOption = (fsOption) => !fsOption || fsOption === defaultFS || fsOption === actualFS ?
    -    defaultFS
    -    : {
    -        ...defaultFS,
    -        ...fsOption,
    -        promises: {
    -            ...defaultFS.promises,
    -            ...(fsOption.promises || {}),
    -        },
    -    };
    -// turn something like //?/c:/ into c:\
    -const uncDriveRegexp = /^\\\\\?\\([a-z]:)\\?$/i;
    -const uncToDrive = (rootPath) => rootPath.replace(/\//g, '\\').replace(uncDriveRegexp, '$1\\');
    -// windows paths are separated by either / or \
    -const eitherSep = /[\\\/]/;
    -const UNKNOWN = 0; // may not even exist, for all we know
    -const IFIFO = 0b0001;
    -const IFCHR = 0b0010;
    -const IFDIR = 0b0100;
    -const IFBLK = 0b0110;
    -const IFREG = 0b1000;
    -const IFLNK = 0b1010;
    -const IFSOCK = 0b1100;
    -const IFMT = 0b1111;
    -// mask to unset low 4 bits
    -const IFMT_UNKNOWN = ~IFMT;
    -// set after successfully calling readdir() and getting entries.
    -const READDIR_CALLED = 0b0000_0001_0000;
    -// set after a successful lstat()
    -const LSTAT_CALLED = 0b0000_0010_0000;
    -// set if an entry (or one of its parents) is definitely not a dir
    -const ENOTDIR = 0b0000_0100_0000;
    -// set if an entry (or one of its parents) does not exist
    -// (can also be set on lstat errors like EACCES or ENAMETOOLONG)
    -const ENOENT = 0b0000_1000_0000;
    -// cannot have child entries -- also verify &IFMT is either IFDIR or IFLNK
    -// set if we fail to readlink
    -const ENOREADLINK = 0b0001_0000_0000;
    -// set if we know realpath() will fail
    -const ENOREALPATH = 0b0010_0000_0000;
    -const ENOCHILD = ENOTDIR | ENOENT | ENOREALPATH;
    -const TYPEMASK = 0b0011_1111_1111;
    -const entToType = (s) => s.isFile() ? IFREG
    -    : s.isDirectory() ? IFDIR
    -        : s.isSymbolicLink() ? IFLNK
    -            : s.isCharacterDevice() ? IFCHR
    -                : s.isBlockDevice() ? IFBLK
    -                    : s.isSocket() ? IFSOCK
    -                        : s.isFIFO() ? IFIFO
    -                            : UNKNOWN;
    -// normalize unicode path names
    -const normalizeCache = new Map();
    -const normalize = (s) => {
    -    const c = normalizeCache.get(s);
    -    if (c)
    -        return c;
    -    const n = s.normalize('NFKD');
    -    normalizeCache.set(s, n);
    -    return n;
    -};
    -const normalizeNocaseCache = new Map();
    -const normalizeNocase = (s) => {
    -    const c = normalizeNocaseCache.get(s);
    -    if (c)
    -        return c;
    -    const n = normalize(s.toLowerCase());
    -    normalizeNocaseCache.set(s, n);
    -    return n;
    -};
    -/**
    - * An LRUCache for storing resolved path strings or Path objects.
    - * @internal
    - */
    -class ResolveCache extends lru_cache_1.LRUCache {
    -    constructor() {
    -        super({ max: 256 });
    -    }
    -}
    -exports.ResolveCache = ResolveCache;
    -// In order to prevent blowing out the js heap by allocating hundreds of
    -// thousands of Path entries when walking extremely large trees, the "children"
    -// in this tree are represented by storing an array of Path entries in an
    -// LRUCache, indexed by the parent.  At any time, Path.children() may return an
    -// empty array, indicating that it doesn't know about any of its children, and
    -// thus has to rebuild that cache.  This is fine, it just means that we don't
    -// benefit as much from having the cached entries, but huge directory walks
    -// don't blow out the stack, and smaller ones are still as fast as possible.
    -//
    -//It does impose some complexity when building up the readdir data, because we
    -//need to pass a reference to the children array that we started with.
    -/**
    - * an LRUCache for storing child entries.
    - * @internal
    - */
    -class ChildrenCache extends lru_cache_1.LRUCache {
    -    constructor(maxSize = 16 * 1024) {
    -        super({
    -            maxSize,
    -            // parent + children
    -            sizeCalculation: a => a.length + 1,
    -        });
    -    }
    -}
    -exports.ChildrenCache = ChildrenCache;
    -const setAsCwd = Symbol('PathScurry setAsCwd');
    -/**
    - * Path objects are sort of like a super-powered
    - * {@link https://nodejs.org/docs/latest/api/fs.html#class-fsdirent fs.Dirent}
    - *
    - * Each one represents a single filesystem entry on disk, which may or may not
    - * exist. It includes methods for reading various types of information via
    - * lstat, readlink, and readdir, and caches all information to the greatest
    - * degree possible.
    - *
    - * Note that fs operations that would normally throw will instead return an
    - * "empty" value. This is in order to prevent excessive overhead from error
    - * stack traces.
    - */
    -class PathBase {
    -    /**
    -     * the basename of this path
    -     *
    -     * **Important**: *always* test the path name against any test string
    -     * usingthe {@link isNamed} method, and not by directly comparing this
    -     * string. Otherwise, unicode path strings that the system sees as identical
    -     * will not be properly treated as the same path, leading to incorrect
    -     * behavior and possible security issues.
    -     */
    -    name;
    -    /**
    -     * the Path entry corresponding to the path root.
    -     *
    -     * @internal
    -     */
    -    root;
    -    /**
    -     * All roots found within the current PathScurry family
    -     *
    -     * @internal
    -     */
    -    roots;
    -    /**
    -     * a reference to the parent path, or undefined in the case of root entries
    -     *
    -     * @internal
    -     */
    -    parent;
    -    /**
    -     * boolean indicating whether paths are compared case-insensitively
    -     * @internal
    -     */
    -    nocase;
    -    /**
    -     * boolean indicating that this path is the current working directory
    -     * of the PathScurry collection that contains it.
    -     */
    -    isCWD = false;
    -    // potential default fs override
    -    #fs;
    -    // Stats fields
    -    #dev;
    -    get dev() {
    -        return this.#dev;
    -    }
    -    #mode;
    -    get mode() {
    -        return this.#mode;
    -    }
    -    #nlink;
    -    get nlink() {
    -        return this.#nlink;
    -    }
    -    #uid;
    -    get uid() {
    -        return this.#uid;
    -    }
    -    #gid;
    -    get gid() {
    -        return this.#gid;
    -    }
    -    #rdev;
    -    get rdev() {
    -        return this.#rdev;
    -    }
    -    #blksize;
    -    get blksize() {
    -        return this.#blksize;
    -    }
    -    #ino;
    -    get ino() {
    -        return this.#ino;
    -    }
    -    #size;
    -    get size() {
    -        return this.#size;
    -    }
    -    #blocks;
    -    get blocks() {
    -        return this.#blocks;
    -    }
    -    #atimeMs;
    -    get atimeMs() {
    -        return this.#atimeMs;
    -    }
    -    #mtimeMs;
    -    get mtimeMs() {
    -        return this.#mtimeMs;
    -    }
    -    #ctimeMs;
    -    get ctimeMs() {
    -        return this.#ctimeMs;
    -    }
    -    #birthtimeMs;
    -    get birthtimeMs() {
    -        return this.#birthtimeMs;
    -    }
    -    #atime;
    -    get atime() {
    -        return this.#atime;
    -    }
    -    #mtime;
    -    get mtime() {
    -        return this.#mtime;
    -    }
    -    #ctime;
    -    get ctime() {
    -        return this.#ctime;
    -    }
    -    #birthtime;
    -    get birthtime() {
    -        return this.#birthtime;
    -    }
    -    #matchName;
    -    #depth;
    -    #fullpath;
    -    #fullpathPosix;
    -    #relative;
    -    #relativePosix;
    -    #type;
    -    #children;
    -    #linkTarget;
    -    #realpath;
    -    /**
    -     * This property is for compatibility with the Dirent class as of
    -     * Node v20, where Dirent['parentPath'] refers to the path of the
    -     * directory that was passed to readdir. For root entries, it's the path
    -     * to the entry itself.
    -     */
    -    get parentPath() {
    -        return (this.parent || this).fullpath();
    -    }
    -    /**
    -     * Deprecated alias for Dirent['parentPath'] Somewhat counterintuitively,
    -     * this property refers to the *parent* path, not the path object itself.
    -     */
    -    get path() {
    -        return this.parentPath;
    -    }
    -    /**
    -     * Do not create new Path objects directly.  They should always be accessed
    -     * via the PathScurry class or other methods on the Path class.
    -     *
    -     * @internal
    -     */
    -    constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
    -        this.name = name;
    -        this.#matchName = nocase ? normalizeNocase(name) : normalize(name);
    -        this.#type = type & TYPEMASK;
    -        this.nocase = nocase;
    -        this.roots = roots;
    -        this.root = root || this;
    -        this.#children = children;
    -        this.#fullpath = opts.fullpath;
    -        this.#relative = opts.relative;
    -        this.#relativePosix = opts.relativePosix;
    -        this.parent = opts.parent;
    -        if (this.parent) {
    -            this.#fs = this.parent.#fs;
    -        }
    -        else {
    -            this.#fs = fsFromOption(opts.fs);
    -        }
    -    }
    -    /**
    -     * Returns the depth of the Path object from its root.
    -     *
    -     * For example, a path at `/foo/bar` would have a depth of 2.
    -     */
    -    depth() {
    -        if (this.#depth !== undefined)
    -            return this.#depth;
    -        if (!this.parent)
    -            return (this.#depth = 0);
    -        return (this.#depth = this.parent.depth() + 1);
    -    }
    -    /**
    -     * @internal
    -     */
    -    childrenCache() {
    -        return this.#children;
    -    }
    -    /**
    -     * Get the Path object referenced by the string path, resolved from this Path
    -     */
    -    resolve(path) {
    -        if (!path) {
    -            return this;
    -        }
    -        const rootPath = this.getRootString(path);
    -        const dir = path.substring(rootPath.length);
    -        const dirParts = dir.split(this.splitSep);
    -        const result = rootPath ?
    -            this.getRoot(rootPath).#resolveParts(dirParts)
    -            : this.#resolveParts(dirParts);
    -        return result;
    -    }
    -    #resolveParts(dirParts) {
    -        let p = this;
    -        for (const part of dirParts) {
    -            p = p.child(part);
    -        }
    -        return p;
    -    }
    -    /**
    -     * Returns the cached children Path objects, if still available.  If they
    -     * have fallen out of the cache, then returns an empty array, and resets the
    -     * READDIR_CALLED bit, so that future calls to readdir() will require an fs
    -     * lookup.
    -     *
    -     * @internal
    -     */
    -    children() {
    -        const cached = this.#children.get(this);
    -        if (cached) {
    -            return cached;
    -        }
    -        const children = Object.assign([], { provisional: 0 });
    -        this.#children.set(this, children);
    -        this.#type &= ~READDIR_CALLED;
    -        return children;
    -    }
    -    /**
    -     * Resolves a path portion and returns or creates the child Path.
    -     *
    -     * Returns `this` if pathPart is `''` or `'.'`, or `parent` if pathPart is
    -     * `'..'`.
    -     *
    -     * This should not be called directly.  If `pathPart` contains any path
    -     * separators, it will lead to unsafe undefined behavior.
    -     *
    -     * Use `Path.resolve()` instead.
    -     *
    -     * @internal
    -     */
    -    child(pathPart, opts) {
    -        if (pathPart === '' || pathPart === '.') {
    -            return this;
    -        }
    -        if (pathPart === '..') {
    -            return this.parent || this;
    -        }
    -        // find the child
    -        const children = this.children();
    -        const name = this.nocase ? normalizeNocase(pathPart) : normalize(pathPart);
    -        for (const p of children) {
    -            if (p.#matchName === name) {
    -                return p;
    -            }
    -        }
    -        // didn't find it, create provisional child, since it might not
    -        // actually exist.  If we know the parent isn't a dir, then
    -        // in fact it CAN'T exist.
    -        const s = this.parent ? this.sep : '';
    -        const fullpath = this.#fullpath ? this.#fullpath + s + pathPart : undefined;
    -        const pchild = this.newChild(pathPart, UNKNOWN, {
    -            ...opts,
    -            parent: this,
    -            fullpath,
    -        });
    -        if (!this.canReaddir()) {
    -            pchild.#type |= ENOENT;
    -        }
    -        // don't have to update provisional, because if we have real children,
    -        // then provisional is set to children.length, otherwise a lower number
    -        children.push(pchild);
    -        return pchild;
    -    }
    -    /**
    -     * The relative path from the cwd. If it does not share an ancestor with
    -     * the cwd, then this ends up being equivalent to the fullpath()
    -     */
    -    relative() {
    -        if (this.isCWD)
    -            return '';
    -        if (this.#relative !== undefined) {
    -            return this.#relative;
    -        }
    -        const name = this.name;
    -        const p = this.parent;
    -        if (!p) {
    -            return (this.#relative = this.name);
    -        }
    -        const pv = p.relative();
    -        return pv + (!pv || !p.parent ? '' : this.sep) + name;
    -    }
    -    /**
    -     * The relative path from the cwd, using / as the path separator.
    -     * If it does not share an ancestor with
    -     * the cwd, then this ends up being equivalent to the fullpathPosix()
    -     * On posix systems, this is identical to relative().
    -     */
    -    relativePosix() {
    -        if (this.sep === '/')
    -            return this.relative();
    -        if (this.isCWD)
    -            return '';
    -        if (this.#relativePosix !== undefined)
    -            return this.#relativePosix;
    -        const name = this.name;
    -        const p = this.parent;
    -        if (!p) {
    -            return (this.#relativePosix = this.fullpathPosix());
    -        }
    -        const pv = p.relativePosix();
    -        return pv + (!pv || !p.parent ? '' : '/') + name;
    -    }
    -    /**
    -     * The fully resolved path string for this Path entry
    -     */
    -    fullpath() {
    -        if (this.#fullpath !== undefined) {
    -            return this.#fullpath;
    -        }
    -        const name = this.name;
    -        const p = this.parent;
    -        if (!p) {
    -            return (this.#fullpath = this.name);
    -        }
    -        const pv = p.fullpath();
    -        const fp = pv + (!p.parent ? '' : this.sep) + name;
    -        return (this.#fullpath = fp);
    -    }
    -    /**
    -     * On platforms other than windows, this is identical to fullpath.
    -     *
    -     * On windows, this is overridden to return the forward-slash form of the
    -     * full UNC path.
    -     */
    -    fullpathPosix() {
    -        if (this.#fullpathPosix !== undefined)
    -            return this.#fullpathPosix;
    -        if (this.sep === '/')
    -            return (this.#fullpathPosix = this.fullpath());
    -        if (!this.parent) {
    -            const p = this.fullpath().replace(/\\/g, '/');
    -            if (/^[a-z]:\//i.test(p)) {
    -                return (this.#fullpathPosix = `//?/${p}`);
    -            }
    -            else {
    -                return (this.#fullpathPosix = p);
    -            }
    -        }
    -        const p = this.parent;
    -        const pfpp = p.fullpathPosix();
    -        const fpp = pfpp + (!pfpp || !p.parent ? '' : '/') + this.name;
    -        return (this.#fullpathPosix = fpp);
    -    }
    -    /**
    -     * Is the Path of an unknown type?
    -     *
    -     * Note that we might know *something* about it if there has been a previous
    -     * filesystem operation, for example that it does not exist, or is not a
    -     * link, or whether it has child entries.
    -     */
    -    isUnknown() {
    -        return (this.#type & IFMT) === UNKNOWN;
    -    }
    -    isType(type) {
    -        return this[`is${type}`]();
    -    }
    -    getType() {
    -        return (this.isUnknown() ? 'Unknown'
    -            : this.isDirectory() ? 'Directory'
    -                : this.isFile() ? 'File'
    -                    : this.isSymbolicLink() ? 'SymbolicLink'
    -                        : this.isFIFO() ? 'FIFO'
    -                            : this.isCharacterDevice() ? 'CharacterDevice'
    -                                : this.isBlockDevice() ? 'BlockDevice'
    -                                    : /* c8 ignore start */ this.isSocket() ? 'Socket'
    -                                        : 'Unknown');
    -        /* c8 ignore stop */
    -    }
    -    /**
    -     * Is the Path a regular file?
    -     */
    -    isFile() {
    -        return (this.#type & IFMT) === IFREG;
    -    }
    -    /**
    -     * Is the Path a directory?
    -     */
    -    isDirectory() {
    -        return (this.#type & IFMT) === IFDIR;
    -    }
    -    /**
    -     * Is the path a character device?
    -     */
    -    isCharacterDevice() {
    -        return (this.#type & IFMT) === IFCHR;
    -    }
    -    /**
    -     * Is the path a block device?
    -     */
    -    isBlockDevice() {
    -        return (this.#type & IFMT) === IFBLK;
    -    }
    -    /**
    -     * Is the path a FIFO pipe?
    -     */
    -    isFIFO() {
    -        return (this.#type & IFMT) === IFIFO;
    -    }
    -    /**
    -     * Is the path a socket?
    -     */
    -    isSocket() {
    -        return (this.#type & IFMT) === IFSOCK;
    -    }
    -    /**
    -     * Is the path a symbolic link?
    -     */
    -    isSymbolicLink() {
    -        return (this.#type & IFLNK) === IFLNK;
    -    }
    -    /**
    -     * Return the entry if it has been subject of a successful lstat, or
    -     * undefined otherwise.
    -     *
    -     * Does not read the filesystem, so an undefined result *could* simply
    -     * mean that we haven't called lstat on it.
    -     */
    -    lstatCached() {
    -        return this.#type & LSTAT_CALLED ? this : undefined;
    -    }
    -    /**
    -     * Return the cached link target if the entry has been the subject of a
    -     * successful readlink, or undefined otherwise.
    -     *
    -     * Does not read the filesystem, so an undefined result *could* just mean we
    -     * don't have any cached data. Only use it if you are very sure that a
    -     * readlink() has been called at some point.
    -     */
    -    readlinkCached() {
    -        return this.#linkTarget;
    -    }
    -    /**
    -     * Returns the cached realpath target if the entry has been the subject
    -     * of a successful realpath, or undefined otherwise.
    -     *
    -     * Does not read the filesystem, so an undefined result *could* just mean we
    -     * don't have any cached data. Only use it if you are very sure that a
    -     * realpath() has been called at some point.
    -     */
    -    realpathCached() {
    -        return this.#realpath;
    -    }
    -    /**
    -     * Returns the cached child Path entries array if the entry has been the
    -     * subject of a successful readdir(), or [] otherwise.
    -     *
    -     * Does not read the filesystem, so an empty array *could* just mean we
    -     * don't have any cached data. Only use it if you are very sure that a
    -     * readdir() has been called recently enough to still be valid.
    -     */
    -    readdirCached() {
    -        const children = this.children();
    -        return children.slice(0, children.provisional);
    -    }
    -    /**
    -     * Return true if it's worth trying to readlink.  Ie, we don't (yet) have
    -     * any indication that readlink will definitely fail.
    -     *
    -     * Returns false if the path is known to not be a symlink, if a previous
    -     * readlink failed, or if the entry does not exist.
    -     */
    -    canReadlink() {
    -        if (this.#linkTarget)
    -            return true;
    -        if (!this.parent)
    -            return false;
    -        // cases where it cannot possibly succeed
    -        const ifmt = this.#type & IFMT;
    -        return !((ifmt !== UNKNOWN && ifmt !== IFLNK) ||
    -            this.#type & ENOREADLINK ||
    -            this.#type & ENOENT);
    -    }
    -    /**
    -     * Return true if readdir has previously been successfully called on this
    -     * path, indicating that cachedReaddir() is likely valid.
    -     */
    -    calledReaddir() {
    -        return !!(this.#type & READDIR_CALLED);
    -    }
    -    /**
    -     * Returns true if the path is known to not exist. That is, a previous lstat
    -     * or readdir failed to verify its existence when that would have been
    -     * expected, or a parent entry was marked either enoent or enotdir.
    -     */
    -    isENOENT() {
    -        return !!(this.#type & ENOENT);
    -    }
    -    /**
    -     * Return true if the path is a match for the given path name.  This handles
    -     * case sensitivity and unicode normalization.
    -     *
    -     * Note: even on case-sensitive systems, it is **not** safe to test the
    -     * equality of the `.name` property to determine whether a given pathname
    -     * matches, due to unicode normalization mismatches.
    -     *
    -     * Always use this method instead of testing the `path.name` property
    -     * directly.
    -     */
    -    isNamed(n) {
    -        return !this.nocase ?
    -            this.#matchName === normalize(n)
    -            : this.#matchName === normalizeNocase(n);
    -    }
    -    /**
    -     * Return the Path object corresponding to the target of a symbolic link.
    -     *
    -     * If the Path is not a symbolic link, or if the readlink call fails for any
    -     * reason, `undefined` is returned.
    -     *
    -     * Result is cached, and thus may be outdated if the filesystem is mutated.
    -     */
    -    async readlink() {
    -        const target = this.#linkTarget;
    -        if (target) {
    -            return target;
    -        }
    -        if (!this.canReadlink()) {
    -            return undefined;
    -        }
    -        /* c8 ignore start */
    -        // already covered by the canReadlink test, here for ts grumples
    -        if (!this.parent) {
    -            return undefined;
    -        }
    -        /* c8 ignore stop */
    -        try {
    -            const read = await this.#fs.promises.readlink(this.fullpath());
    -            const linkTarget = (await this.parent.realpath())?.resolve(read);
    -            if (linkTarget) {
    -                return (this.#linkTarget = linkTarget);
    -            }
    -        }
    -        catch (er) {
    -            this.#readlinkFail(er.code);
    -            return undefined;
    -        }
    -    }
    -    /**
    -     * Synchronous {@link PathBase.readlink}
    -     */
    -    readlinkSync() {
    -        const target = this.#linkTarget;
    -        if (target) {
    -            return target;
    -        }
    -        if (!this.canReadlink()) {
    -            return undefined;
    -        }
    -        /* c8 ignore start */
    -        // already covered by the canReadlink test, here for ts grumples
    -        if (!this.parent) {
    -            return undefined;
    -        }
    -        /* c8 ignore stop */
    -        try {
    -            const read = this.#fs.readlinkSync(this.fullpath());
    -            const linkTarget = this.parent.realpathSync()?.resolve(read);
    -            if (linkTarget) {
    -                return (this.#linkTarget = linkTarget);
    -            }
    -        }
    -        catch (er) {
    -            this.#readlinkFail(er.code);
    -            return undefined;
    -        }
    -    }
    -    #readdirSuccess(children) {
    -        // succeeded, mark readdir called bit
    -        this.#type |= READDIR_CALLED;
    -        // mark all remaining provisional children as ENOENT
    -        for (let p = children.provisional; p < children.length; p++) {
    -            const c = children[p];
    -            if (c)
    -                c.#markENOENT();
    -        }
    -    }
    -    #markENOENT() {
    -        // mark as UNKNOWN and ENOENT
    -        if (this.#type & ENOENT)
    -            return;
    -        this.#type = (this.#type | ENOENT) & IFMT_UNKNOWN;
    -        this.#markChildrenENOENT();
    -    }
    -    #markChildrenENOENT() {
    -        // all children are provisional and do not exist
    -        const children = this.children();
    -        children.provisional = 0;
    -        for (const p of children) {
    -            p.#markENOENT();
    -        }
    -    }
    -    #markENOREALPATH() {
    -        this.#type |= ENOREALPATH;
    -        this.#markENOTDIR();
    -    }
    -    // save the information when we know the entry is not a dir
    -    #markENOTDIR() {
    -        // entry is not a directory, so any children can't exist.
    -        // this *should* be impossible, since any children created
    -        // after it's been marked ENOTDIR should be marked ENOENT,
    -        // so it won't even get to this point.
    -        /* c8 ignore start */
    -        if (this.#type & ENOTDIR)
    -            return;
    -        /* c8 ignore stop */
    -        let t = this.#type;
    -        // this could happen if we stat a dir, then delete it,
    -        // then try to read it or one of its children.
    -        if ((t & IFMT) === IFDIR)
    -            t &= IFMT_UNKNOWN;
    -        this.#type = t | ENOTDIR;
    -        this.#markChildrenENOENT();
    -    }
    -    #readdirFail(code = '') {
    -        // markENOTDIR and markENOENT also set provisional=0
    -        if (code === 'ENOTDIR' || code === 'EPERM') {
    -            this.#markENOTDIR();
    -        }
    -        else if (code === 'ENOENT') {
    -            this.#markENOENT();
    -        }
    -        else {
    -            this.children().provisional = 0;
    -        }
    -    }
    -    #lstatFail(code = '') {
    -        // Windows just raises ENOENT in this case, disable for win CI
    -        /* c8 ignore start */
    -        if (code === 'ENOTDIR') {
    -            // already know it has a parent by this point
    -            const p = this.parent;
    -            p.#markENOTDIR();
    -        }
    -        else if (code === 'ENOENT') {
    -            /* c8 ignore stop */
    -            this.#markENOENT();
    -        }
    -    }
    -    #readlinkFail(code = '') {
    -        let ter = this.#type;
    -        ter |= ENOREADLINK;
    -        if (code === 'ENOENT')
    -            ter |= ENOENT;
    -        // windows gets a weird error when you try to readlink a file
    -        if (code === 'EINVAL' || code === 'UNKNOWN') {
    -            // exists, but not a symlink, we don't know WHAT it is, so remove
    -            // all IFMT bits.
    -            ter &= IFMT_UNKNOWN;
    -        }
    -        this.#type = ter;
    -        // windows just gets ENOENT in this case.  We do cover the case,
    -        // just disabled because it's impossible on Windows CI
    -        /* c8 ignore start */
    -        if (code === 'ENOTDIR' && this.parent) {
    -            this.parent.#markENOTDIR();
    -        }
    -        /* c8 ignore stop */
    -    }
    -    #readdirAddChild(e, c) {
    -        return (this.#readdirMaybePromoteChild(e, c) ||
    -            this.#readdirAddNewChild(e, c));
    -    }
    -    #readdirAddNewChild(e, c) {
    -        // alloc new entry at head, so it's never provisional
    -        const type = entToType(e);
    -        const child = this.newChild(e.name, type, { parent: this });
    -        const ifmt = child.#type & IFMT;
    -        if (ifmt !== IFDIR && ifmt !== IFLNK && ifmt !== UNKNOWN) {
    -            child.#type |= ENOTDIR;
    -        }
    -        c.unshift(child);
    -        c.provisional++;
    -        return child;
    -    }
    -    #readdirMaybePromoteChild(e, c) {
    -        for (let p = c.provisional; p < c.length; p++) {
    -            const pchild = c[p];
    -            const name = this.nocase ? normalizeNocase(e.name) : normalize(e.name);
    -            if (name !== pchild.#matchName) {
    -                continue;
    -            }
    -            return this.#readdirPromoteChild(e, pchild, p, c);
    -        }
    -    }
    -    #readdirPromoteChild(e, p, index, c) {
    -        const v = p.name;
    -        // retain any other flags, but set ifmt from dirent
    -        p.#type = (p.#type & IFMT_UNKNOWN) | entToType(e);
    -        // case sensitivity fixing when we learn the true name.
    -        if (v !== e.name)
    -            p.name = e.name;
    -        // just advance provisional index (potentially off the list),
    -        // otherwise we have to splice/pop it out and re-insert at head
    -        if (index !== c.provisional) {
    -            if (index === c.length - 1)
    -                c.pop();
    -            else
    -                c.splice(index, 1);
    -            c.unshift(p);
    -        }
    -        c.provisional++;
    -        return p;
    -    }
    -    /**
    -     * Call lstat() on this Path, and update all known information that can be
    -     * determined.
    -     *
    -     * Note that unlike `fs.lstat()`, the returned value does not contain some
    -     * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
    -     * information is required, you will need to call `fs.lstat` yourself.
    -     *
    -     * If the Path refers to a nonexistent file, or if the lstat call fails for
    -     * any reason, `undefined` is returned.  Otherwise the updated Path object is
    -     * returned.
    -     *
    -     * Results are cached, and thus may be out of date if the filesystem is
    -     * mutated.
    -     */
    -    async lstat() {
    -        if ((this.#type & ENOENT) === 0) {
    -            try {
    -                this.#applyStat(await this.#fs.promises.lstat(this.fullpath()));
    -                return this;
    -            }
    -            catch (er) {
    -                this.#lstatFail(er.code);
    -            }
    -        }
    -    }
    -    /**
    -     * synchronous {@link PathBase.lstat}
    -     */
    -    lstatSync() {
    -        if ((this.#type & ENOENT) === 0) {
    -            try {
    -                this.#applyStat(this.#fs.lstatSync(this.fullpath()));
    -                return this;
    -            }
    -            catch (er) {
    -                this.#lstatFail(er.code);
    -            }
    -        }
    -    }
    -    #applyStat(st) {
    -        const { atime, atimeMs, birthtime, birthtimeMs, blksize, blocks, ctime, ctimeMs, dev, gid, ino, mode, mtime, mtimeMs, nlink, rdev, size, uid, } = st;
    -        this.#atime = atime;
    -        this.#atimeMs = atimeMs;
    -        this.#birthtime = birthtime;
    -        this.#birthtimeMs = birthtimeMs;
    -        this.#blksize = blksize;
    -        this.#blocks = blocks;
    -        this.#ctime = ctime;
    -        this.#ctimeMs = ctimeMs;
    -        this.#dev = dev;
    -        this.#gid = gid;
    -        this.#ino = ino;
    -        this.#mode = mode;
    -        this.#mtime = mtime;
    -        this.#mtimeMs = mtimeMs;
    -        this.#nlink = nlink;
    -        this.#rdev = rdev;
    -        this.#size = size;
    -        this.#uid = uid;
    -        const ifmt = entToType(st);
    -        // retain any other flags, but set the ifmt
    -        this.#type = (this.#type & IFMT_UNKNOWN) | ifmt | LSTAT_CALLED;
    -        if (ifmt !== UNKNOWN && ifmt !== IFDIR && ifmt !== IFLNK) {
    -            this.#type |= ENOTDIR;
    -        }
    -    }
    -    #onReaddirCB = [];
    -    #readdirCBInFlight = false;
    -    #callOnReaddirCB(children) {
    -        this.#readdirCBInFlight = false;
    -        const cbs = this.#onReaddirCB.slice();
    -        this.#onReaddirCB.length = 0;
    -        cbs.forEach(cb => cb(null, children));
    -    }
    -    /**
    -     * Standard node-style callback interface to get list of directory entries.
    -     *
    -     * If the Path cannot or does not contain any children, then an empty array
    -     * is returned.
    -     *
    -     * Results are cached, and thus may be out of date if the filesystem is
    -     * mutated.
    -     *
    -     * @param cb The callback called with (er, entries).  Note that the `er`
    -     * param is somewhat extraneous, as all readdir() errors are handled and
    -     * simply result in an empty set of entries being returned.
    -     * @param allowZalgo Boolean indicating that immediately known results should
    -     * *not* be deferred with `queueMicrotask`. Defaults to `false`. Release
    -     * zalgo at your peril, the dark pony lord is devious and unforgiving.
    -     */
    -    readdirCB(cb, allowZalgo = false) {
    -        if (!this.canReaddir()) {
    -            if (allowZalgo)
    -                cb(null, []);
    -            else
    -                queueMicrotask(() => cb(null, []));
    -            return;
    -        }
    -        const children = this.children();
    -        if (this.calledReaddir()) {
    -            const c = children.slice(0, children.provisional);
    -            if (allowZalgo)
    -                cb(null, c);
    -            else
    -                queueMicrotask(() => cb(null, c));
    -            return;
    -        }
    -        // don't have to worry about zalgo at this point.
    -        this.#onReaddirCB.push(cb);
    -        if (this.#readdirCBInFlight) {
    -            return;
    -        }
    -        this.#readdirCBInFlight = true;
    -        // else read the directory, fill up children
    -        // de-provisionalize any provisional children.
    -        const fullpath = this.fullpath();
    -        this.#fs.readdir(fullpath, { withFileTypes: true }, (er, entries) => {
    -            if (er) {
    -                this.#readdirFail(er.code);
    -                children.provisional = 0;
    -            }
    -            else {
    -                // if we didn't get an error, we always get entries.
    -                //@ts-ignore
    -                for (const e of entries) {
    -                    this.#readdirAddChild(e, children);
    -                }
    -                this.#readdirSuccess(children);
    -            }
    -            this.#callOnReaddirCB(children.slice(0, children.provisional));
    -            return;
    -        });
    -    }
    -    #asyncReaddirInFlight;
    -    /**
    -     * Return an array of known child entries.
    -     *
    -     * If the Path cannot or does not contain any children, then an empty array
    -     * is returned.
    -     *
    -     * Results are cached, and thus may be out of date if the filesystem is
    -     * mutated.
    -     */
    -    async readdir() {
    -        if (!this.canReaddir()) {
    -            return [];
    -        }
    -        const children = this.children();
    -        if (this.calledReaddir()) {
    -            return children.slice(0, children.provisional);
    -        }
    -        // else read the directory, fill up children
    -        // de-provisionalize any provisional children.
    -        const fullpath = this.fullpath();
    -        if (this.#asyncReaddirInFlight) {
    -            await this.#asyncReaddirInFlight;
    -        }
    -        else {
    -            /* c8 ignore start */
    -            let resolve = () => { };
    -            /* c8 ignore stop */
    -            this.#asyncReaddirInFlight = new Promise(res => (resolve = res));
    -            try {
    -                for (const e of await this.#fs.promises.readdir(fullpath, {
    -                    withFileTypes: true,
    -                })) {
    -                    this.#readdirAddChild(e, children);
    -                }
    -                this.#readdirSuccess(children);
    -            }
    -            catch (er) {
    -                this.#readdirFail(er.code);
    -                children.provisional = 0;
    -            }
    -            this.#asyncReaddirInFlight = undefined;
    -            resolve();
    -        }
    -        return children.slice(0, children.provisional);
    -    }
    -    /**
    -     * synchronous {@link PathBase.readdir}
    -     */
    -    readdirSync() {
    -        if (!this.canReaddir()) {
    -            return [];
    -        }
    -        const children = this.children();
    -        if (this.calledReaddir()) {
    -            return children.slice(0, children.provisional);
    -        }
    -        // else read the directory, fill up children
    -        // de-provisionalize any provisional children.
    -        const fullpath = this.fullpath();
    -        try {
    -            for (const e of this.#fs.readdirSync(fullpath, {
    -                withFileTypes: true,
    -            })) {
    -                this.#readdirAddChild(e, children);
    -            }
    -            this.#readdirSuccess(children);
    -        }
    -        catch (er) {
    -            this.#readdirFail(er.code);
    -            children.provisional = 0;
    -        }
    -        return children.slice(0, children.provisional);
    -    }
    -    canReaddir() {
    -        if (this.#type & ENOCHILD)
    -            return false;
    -        const ifmt = IFMT & this.#type;
    -        // we always set ENOTDIR when setting IFMT, so should be impossible
    -        /* c8 ignore start */
    -        if (!(ifmt === UNKNOWN || ifmt === IFDIR || ifmt === IFLNK)) {
    -            return false;
    -        }
    -        /* c8 ignore stop */
    -        return true;
    -    }
    -    shouldWalk(dirs, walkFilter) {
    -        return ((this.#type & IFDIR) === IFDIR &&
    -            !(this.#type & ENOCHILD) &&
    -            !dirs.has(this) &&
    -            (!walkFilter || walkFilter(this)));
    -    }
    -    /**
    -     * Return the Path object corresponding to path as resolved
    -     * by realpath(3).
    -     *
    -     * If the realpath call fails for any reason, `undefined` is returned.
    -     *
    -     * Result is cached, and thus may be outdated if the filesystem is mutated.
    -     * On success, returns a Path object.
    -     */
    -    async realpath() {
    -        if (this.#realpath)
    -            return this.#realpath;
    -        if ((ENOREALPATH | ENOREADLINK | ENOENT) & this.#type)
    -            return undefined;
    -        try {
    -            const rp = await this.#fs.promises.realpath(this.fullpath());
    -            return (this.#realpath = this.resolve(rp));
    -        }
    -        catch (_) {
    -            this.#markENOREALPATH();
    -        }
    -    }
    -    /**
    -     * Synchronous {@link realpath}
    -     */
    -    realpathSync() {
    -        if (this.#realpath)
    -            return this.#realpath;
    -        if ((ENOREALPATH | ENOREADLINK | ENOENT) & this.#type)
    -            return undefined;
    -        try {
    -            const rp = this.#fs.realpathSync(this.fullpath());
    -            return (this.#realpath = this.resolve(rp));
    -        }
    -        catch (_) {
    -            this.#markENOREALPATH();
    -        }
    -    }
    -    /**
    -     * Internal method to mark this Path object as the scurry cwd,
    -     * called by {@link PathScurry#chdir}
    -     *
    -     * @internal
    -     */
    -    [setAsCwd](oldCwd) {
    -        if (oldCwd === this)
    -            return;
    -        oldCwd.isCWD = false;
    -        this.isCWD = true;
    -        const changed = new Set([]);
    -        let rp = [];
    -        let p = this;
    -        while (p && p.parent) {
    -            changed.add(p);
    -            p.#relative = rp.join(this.sep);
    -            p.#relativePosix = rp.join('/');
    -            p = p.parent;
    -            rp.push('..');
    -        }
    -        // now un-memoize parents of old cwd
    -        p = oldCwd;
    -        while (p && p.parent && !changed.has(p)) {
    -            p.#relative = undefined;
    -            p.#relativePosix = undefined;
    -            p = p.parent;
    -        }
    -    }
    -}
    -exports.PathBase = PathBase;
    -/**
    - * Path class used on win32 systems
    - *
    - * Uses `'\\'` as the path separator for returned paths, either `'\\'` or `'/'`
    - * as the path separator for parsing paths.
    - */
    -class PathWin32 extends PathBase {
    -    /**
    -     * Separator for generating path strings.
    -     */
    -    sep = '\\';
    -    /**
    -     * Separator for parsing path strings.
    -     */
    -    splitSep = eitherSep;
    -    /**
    -     * Do not create new Path objects directly.  They should always be accessed
    -     * via the PathScurry class or other methods on the Path class.
    -     *
    -     * @internal
    -     */
    -    constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
    -        super(name, type, root, roots, nocase, children, opts);
    -    }
    -    /**
    -     * @internal
    -     */
    -    newChild(name, type = UNKNOWN, opts = {}) {
    -        return new PathWin32(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);
    -    }
    -    /**
    -     * @internal
    -     */
    -    getRootString(path) {
    -        return node_path_1.win32.parse(path).root;
    -    }
    -    /**
    -     * @internal
    -     */
    -    getRoot(rootPath) {
    -        rootPath = uncToDrive(rootPath.toUpperCase());
    -        if (rootPath === this.root.name) {
    -            return this.root;
    -        }
    -        // ok, not that one, check if it matches another we know about
    -        for (const [compare, root] of Object.entries(this.roots)) {
    -            if (this.sameRoot(rootPath, compare)) {
    -                return (this.roots[rootPath] = root);
    -            }
    -        }
    -        // otherwise, have to create a new one.
    -        return (this.roots[rootPath] = new PathScurryWin32(rootPath, this).root);
    -    }
    -    /**
    -     * @internal
    -     */
    -    sameRoot(rootPath, compare = this.root.name) {
    -        // windows can (rarely) have case-sensitive filesystem, but
    -        // UNC and drive letters are always case-insensitive, and canonically
    -        // represented uppercase.
    -        rootPath = rootPath
    -            .toUpperCase()
    -            .replace(/\//g, '\\')
    -            .replace(uncDriveRegexp, '$1\\');
    -        return rootPath === compare;
    -    }
    -}
    -exports.PathWin32 = PathWin32;
    -/**
    - * Path class used on all posix systems.
    - *
    - * Uses `'/'` as the path separator.
    - */
    -class PathPosix extends PathBase {
    -    /**
    -     * separator for parsing path strings
    -     */
    -    splitSep = '/';
    -    /**
    -     * separator for generating path strings
    -     */
    -    sep = '/';
    -    /**
    -     * Do not create new Path objects directly.  They should always be accessed
    -     * via the PathScurry class or other methods on the Path class.
    -     *
    -     * @internal
    -     */
    -    constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
    -        super(name, type, root, roots, nocase, children, opts);
    -    }
    -    /**
    -     * @internal
    -     */
    -    getRootString(path) {
    -        return path.startsWith('/') ? '/' : '';
    -    }
    -    /**
    -     * @internal
    -     */
    -    getRoot(_rootPath) {
    -        return this.root;
    -    }
    -    /**
    -     * @internal
    -     */
    -    newChild(name, type = UNKNOWN, opts = {}) {
    -        return new PathPosix(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);
    -    }
    -}
    -exports.PathPosix = PathPosix;
    -/**
    - * The base class for all PathScurry classes, providing the interface for path
    - * resolution and filesystem operations.
    - *
    - * Typically, you should *not* instantiate this class directly, but rather one
    - * of the platform-specific classes, or the exported {@link PathScurry} which
    - * defaults to the current platform.
    - */
    -class PathScurryBase {
    -    /**
    -     * The root Path entry for the current working directory of this Scurry
    -     */
    -    root;
    -    /**
    -     * The string path for the root of this Scurry's current working directory
    -     */
    -    rootPath;
    -    /**
    -     * A collection of all roots encountered, referenced by rootPath
    -     */
    -    roots;
    -    /**
    -     * The Path entry corresponding to this PathScurry's current working directory.
    -     */
    -    cwd;
    -    #resolveCache;
    -    #resolvePosixCache;
    -    #children;
    -    /**
    -     * Perform path comparisons case-insensitively.
    -     *
    -     * Defaults true on Darwin and Windows systems, false elsewhere.
    -     */
    -    nocase;
    -    #fs;
    -    /**
    -     * This class should not be instantiated directly.
    -     *
    -     * Use PathScurryWin32, PathScurryDarwin, PathScurryPosix, or PathScurry
    -     *
    -     * @internal
    -     */
    -    constructor(cwd = process.cwd(), pathImpl, sep, { nocase, childrenCacheSize = 16 * 1024, fs = defaultFS, } = {}) {
    -        this.#fs = fsFromOption(fs);
    -        if (cwd instanceof URL || cwd.startsWith('file://')) {
    -            cwd = (0, node_url_1.fileURLToPath)(cwd);
    -        }
    -        // resolve and split root, and then add to the store.
    -        // this is the only time we call path.resolve()
    -        const cwdPath = pathImpl.resolve(cwd);
    -        this.roots = Object.create(null);
    -        this.rootPath = this.parseRootPath(cwdPath);
    -        this.#resolveCache = new ResolveCache();
    -        this.#resolvePosixCache = new ResolveCache();
    -        this.#children = new ChildrenCache(childrenCacheSize);
    -        const split = cwdPath.substring(this.rootPath.length).split(sep);
    -        // resolve('/') leaves '', splits to [''], we don't want that.
    -        if (split.length === 1 && !split[0]) {
    -            split.pop();
    -        }
    -        /* c8 ignore start */
    -        if (nocase === undefined) {
    -            throw new TypeError('must provide nocase setting to PathScurryBase ctor');
    -        }
    -        /* c8 ignore stop */
    -        this.nocase = nocase;
    -        this.root = this.newRoot(this.#fs);
    -        this.roots[this.rootPath] = this.root;
    -        let prev = this.root;
    -        let len = split.length - 1;
    -        const joinSep = pathImpl.sep;
    -        let abs = this.rootPath;
    -        let sawFirst = false;
    -        for (const part of split) {
    -            const l = len--;
    -            prev = prev.child(part, {
    -                relative: new Array(l).fill('..').join(joinSep),
    -                relativePosix: new Array(l).fill('..').join('/'),
    -                fullpath: (abs += (sawFirst ? '' : joinSep) + part),
    -            });
    -            sawFirst = true;
    -        }
    -        this.cwd = prev;
    -    }
    -    /**
    -     * Get the depth of a provided path, string, or the cwd
    -     */
    -    depth(path = this.cwd) {
    -        if (typeof path === 'string') {
    -            path = this.cwd.resolve(path);
    -        }
    -        return path.depth();
    -    }
    -    /**
    -     * Return the cache of child entries.  Exposed so subclasses can create
    -     * child Path objects in a platform-specific way.
    -     *
    -     * @internal
    -     */
    -    childrenCache() {
    -        return this.#children;
    -    }
    -    /**
    -     * Resolve one or more path strings to a resolved string
    -     *
    -     * Same interface as require('path').resolve.
    -     *
    -     * Much faster than path.resolve() when called multiple times for the same
    -     * path, because the resolved Path objects are cached.  Much slower
    -     * otherwise.
    -     */
    -    resolve(...paths) {
    -        // first figure out the minimum number of paths we have to test
    -        // we always start at cwd, but any absolutes will bump the start
    -        let r = '';
    -        for (let i = paths.length - 1; i >= 0; i--) {
    -            const p = paths[i];
    -            if (!p || p === '.')
    -                continue;
    -            r = r ? `${p}/${r}` : p;
    -            if (this.isAbsolute(p)) {
    -                break;
    -            }
    -        }
    -        const cached = this.#resolveCache.get(r);
    -        if (cached !== undefined) {
    -            return cached;
    -        }
    -        const result = this.cwd.resolve(r).fullpath();
    -        this.#resolveCache.set(r, result);
    -        return result;
    -    }
    -    /**
    -     * Resolve one or more path strings to a resolved string, returning
    -     * the posix path.  Identical to .resolve() on posix systems, but on
    -     * windows will return a forward-slash separated UNC path.
    -     *
    -     * Same interface as require('path').resolve.
    -     *
    -     * Much faster than path.resolve() when called multiple times for the same
    -     * path, because the resolved Path objects are cached.  Much slower
    -     * otherwise.
    -     */
    -    resolvePosix(...paths) {
    -        // first figure out the minimum number of paths we have to test
    -        // we always start at cwd, but any absolutes will bump the start
    -        let r = '';
    -        for (let i = paths.length - 1; i >= 0; i--) {
    -            const p = paths[i];
    -            if (!p || p === '.')
    -                continue;
    -            r = r ? `${p}/${r}` : p;
    -            if (this.isAbsolute(p)) {
    -                break;
    -            }
    -        }
    -        const cached = this.#resolvePosixCache.get(r);
    -        if (cached !== undefined) {
    -            return cached;
    -        }
    -        const result = this.cwd.resolve(r).fullpathPosix();
    -        this.#resolvePosixCache.set(r, result);
    -        return result;
    -    }
    -    /**
    -     * find the relative path from the cwd to the supplied path string or entry
    -     */
    -    relative(entry = this.cwd) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        return entry.relative();
    -    }
    -    /**
    -     * find the relative path from the cwd to the supplied path string or
    -     * entry, using / as the path delimiter, even on Windows.
    -     */
    -    relativePosix(entry = this.cwd) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        return entry.relativePosix();
    -    }
    -    /**
    -     * Return the basename for the provided string or Path object
    -     */
    -    basename(entry = this.cwd) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        return entry.name;
    -    }
    -    /**
    -     * Return the dirname for the provided string or Path object
    -     */
    -    dirname(entry = this.cwd) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        return (entry.parent || entry).fullpath();
    -    }
    -    async readdir(entry = this.cwd, opts = {
    -        withFileTypes: true,
    -    }) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            opts = entry;
    -            entry = this.cwd;
    -        }
    -        const { withFileTypes } = opts;
    -        if (!entry.canReaddir()) {
    -            return [];
    -        }
    -        else {
    -            const p = await entry.readdir();
    -            return withFileTypes ? p : p.map(e => e.name);
    -        }
    -    }
    -    readdirSync(entry = this.cwd, opts = {
    -        withFileTypes: true,
    -    }) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            opts = entry;
    -            entry = this.cwd;
    -        }
    -        const { withFileTypes = true } = opts;
    -        if (!entry.canReaddir()) {
    -            return [];
    -        }
    -        else if (withFileTypes) {
    -            return entry.readdirSync();
    -        }
    -        else {
    -            return entry.readdirSync().map(e => e.name);
    -        }
    -    }
    -    /**
    -     * Call lstat() on the string or Path object, and update all known
    -     * information that can be determined.
    -     *
    -     * Note that unlike `fs.lstat()`, the returned value does not contain some
    -     * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
    -     * information is required, you will need to call `fs.lstat` yourself.
    -     *
    -     * If the Path refers to a nonexistent file, or if the lstat call fails for
    -     * any reason, `undefined` is returned.  Otherwise the updated Path object is
    -     * returned.
    -     *
    -     * Results are cached, and thus may be out of date if the filesystem is
    -     * mutated.
    -     */
    -    async lstat(entry = this.cwd) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        return entry.lstat();
    -    }
    -    /**
    -     * synchronous {@link PathScurryBase.lstat}
    -     */
    -    lstatSync(entry = this.cwd) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        return entry.lstatSync();
    -    }
    -    async readlink(entry = this.cwd, { withFileTypes } = {
    -        withFileTypes: false,
    -    }) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            withFileTypes = entry.withFileTypes;
    -            entry = this.cwd;
    -        }
    -        const e = await entry.readlink();
    -        return withFileTypes ? e : e?.fullpath();
    -    }
    -    readlinkSync(entry = this.cwd, { withFileTypes } = {
    -        withFileTypes: false,
    -    }) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            withFileTypes = entry.withFileTypes;
    -            entry = this.cwd;
    -        }
    -        const e = entry.readlinkSync();
    -        return withFileTypes ? e : e?.fullpath();
    -    }
    -    async realpath(entry = this.cwd, { withFileTypes } = {
    -        withFileTypes: false,
    -    }) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            withFileTypes = entry.withFileTypes;
    -            entry = this.cwd;
    -        }
    -        const e = await entry.realpath();
    -        return withFileTypes ? e : e?.fullpath();
    -    }
    -    realpathSync(entry = this.cwd, { withFileTypes } = {
    -        withFileTypes: false,
    -    }) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            withFileTypes = entry.withFileTypes;
    -            entry = this.cwd;
    -        }
    -        const e = entry.realpathSync();
    -        return withFileTypes ? e : e?.fullpath();
    -    }
    -    async walk(entry = this.cwd, opts = {}) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            opts = entry;
    -            entry = this.cwd;
    -        }
    -        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    -        const results = [];
    -        if (!filter || filter(entry)) {
    -            results.push(withFileTypes ? entry : entry.fullpath());
    -        }
    -        const dirs = new Set();
    -        const walk = (dir, cb) => {
    -            dirs.add(dir);
    -            dir.readdirCB((er, entries) => {
    -                /* c8 ignore start */
    -                if (er) {
    -                    return cb(er);
    -                }
    -                /* c8 ignore stop */
    -                let len = entries.length;
    -                if (!len)
    -                    return cb();
    -                const next = () => {
    -                    if (--len === 0) {
    -                        cb();
    -                    }
    -                };
    -                for (const e of entries) {
    -                    if (!filter || filter(e)) {
    -                        results.push(withFileTypes ? e : e.fullpath());
    -                    }
    -                    if (follow && e.isSymbolicLink()) {
    -                        e.realpath()
    -                            .then(r => (r?.isUnknown() ? r.lstat() : r))
    -                            .then(r => r?.shouldWalk(dirs, walkFilter) ? walk(r, next) : next());
    -                    }
    -                    else {
    -                        if (e.shouldWalk(dirs, walkFilter)) {
    -                            walk(e, next);
    -                        }
    -                        else {
    -                            next();
    -                        }
    -                    }
    -                }
    -            }, true); // zalgooooooo
    -        };
    -        const start = entry;
    -        return new Promise((res, rej) => {
    -            walk(start, er => {
    -                /* c8 ignore start */
    -                if (er)
    -                    return rej(er);
    -                /* c8 ignore stop */
    -                res(results);
    -            });
    -        });
    -    }
    -    walkSync(entry = this.cwd, opts = {}) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            opts = entry;
    -            entry = this.cwd;
    -        }
    -        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    -        const results = [];
    -        if (!filter || filter(entry)) {
    -            results.push(withFileTypes ? entry : entry.fullpath());
    -        }
    -        const dirs = new Set([entry]);
    -        for (const dir of dirs) {
    -            const entries = dir.readdirSync();
    -            for (const e of entries) {
    -                if (!filter || filter(e)) {
    -                    results.push(withFileTypes ? e : e.fullpath());
    -                }
    -                let r = e;
    -                if (e.isSymbolicLink()) {
    -                    if (!(follow && (r = e.realpathSync())))
    -                        continue;
    -                    if (r.isUnknown())
    -                        r.lstatSync();
    -                }
    -                if (r.shouldWalk(dirs, walkFilter)) {
    -                    dirs.add(r);
    -                }
    -            }
    -        }
    -        return results;
    -    }
    -    /**
    -     * Support for `for await`
    -     *
    -     * Alias for {@link PathScurryBase.iterate}
    -     *
    -     * Note: As of Node 19, this is very slow, compared to other methods of
    -     * walking.  Consider using {@link PathScurryBase.stream} if memory overhead
    -     * and backpressure are concerns, or {@link PathScurryBase.walk} if not.
    -     */
    -    [Symbol.asyncIterator]() {
    -        return this.iterate();
    -    }
    -    iterate(entry = this.cwd, options = {}) {
    -        // iterating async over the stream is significantly more performant,
    -        // especially in the warm-cache scenario, because it buffers up directory
    -        // entries in the background instead of waiting for a yield for each one.
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            options = entry;
    -            entry = this.cwd;
    -        }
    -        return this.stream(entry, options)[Symbol.asyncIterator]();
    -    }
    -    /**
    -     * Iterating over a PathScurry performs a synchronous walk.
    -     *
    -     * Alias for {@link PathScurryBase.iterateSync}
    -     */
    -    [Symbol.iterator]() {
    -        return this.iterateSync();
    -    }
    -    *iterateSync(entry = this.cwd, opts = {}) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            opts = entry;
    -            entry = this.cwd;
    -        }
    -        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    -        if (!filter || filter(entry)) {
    -            yield withFileTypes ? entry : entry.fullpath();
    -        }
    -        const dirs = new Set([entry]);
    -        for (const dir of dirs) {
    -            const entries = dir.readdirSync();
    -            for (const e of entries) {
    -                if (!filter || filter(e)) {
    -                    yield withFileTypes ? e : e.fullpath();
    -                }
    -                let r = e;
    -                if (e.isSymbolicLink()) {
    -                    if (!(follow && (r = e.realpathSync())))
    -                        continue;
    -                    if (r.isUnknown())
    -                        r.lstatSync();
    -                }
    -                if (r.shouldWalk(dirs, walkFilter)) {
    -                    dirs.add(r);
    -                }
    -            }
    -        }
    -    }
    -    stream(entry = this.cwd, opts = {}) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            opts = entry;
    -            entry = this.cwd;
    -        }
    -        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    -        const results = new minipass_1.Minipass({ objectMode: true });
    -        if (!filter || filter(entry)) {
    -            results.write(withFileTypes ? entry : entry.fullpath());
    -        }
    -        const dirs = new Set();
    -        const queue = [entry];
    -        let processing = 0;
    -        const process = () => {
    -            let paused = false;
    -            while (!paused) {
    -                const dir = queue.shift();
    -                if (!dir) {
    -                    if (processing === 0)
    -                        results.end();
    -                    return;
    -                }
    -                processing++;
    -                dirs.add(dir);
    -                const onReaddir = (er, entries, didRealpaths = false) => {
    -                    /* c8 ignore start */
    -                    if (er)
    -                        return results.emit('error', er);
    -                    /* c8 ignore stop */
    -                    if (follow && !didRealpaths) {
    -                        const promises = [];
    -                        for (const e of entries) {
    -                            if (e.isSymbolicLink()) {
    -                                promises.push(e
    -                                    .realpath()
    -                                    .then((r) => r?.isUnknown() ? r.lstat() : r));
    -                            }
    -                        }
    -                        if (promises.length) {
    -                            Promise.all(promises).then(() => onReaddir(null, entries, true));
    -                            return;
    -                        }
    -                    }
    -                    for (const e of entries) {
    -                        if (e && (!filter || filter(e))) {
    -                            if (!results.write(withFileTypes ? e : e.fullpath())) {
    -                                paused = true;
    -                            }
    -                        }
    -                    }
    -                    processing--;
    -                    for (const e of entries) {
    -                        const r = e.realpathCached() || e;
    -                        if (r.shouldWalk(dirs, walkFilter)) {
    -                            queue.push(r);
    -                        }
    -                    }
    -                    if (paused && !results.flowing) {
    -                        results.once('drain', process);
    -                    }
    -                    else if (!sync) {
    -                        process();
    -                    }
    -                };
    -                // zalgo containment
    -                let sync = true;
    -                dir.readdirCB(onReaddir, true);
    -                sync = false;
    -            }
    -        };
    -        process();
    -        return results;
    -    }
    -    streamSync(entry = this.cwd, opts = {}) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            opts = entry;
    -            entry = this.cwd;
    -        }
    -        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    -        const results = new minipass_1.Minipass({ objectMode: true });
    -        const dirs = new Set();
    -        if (!filter || filter(entry)) {
    -            results.write(withFileTypes ? entry : entry.fullpath());
    -        }
    -        const queue = [entry];
    -        let processing = 0;
    -        const process = () => {
    -            let paused = false;
    -            while (!paused) {
    -                const dir = queue.shift();
    -                if (!dir) {
    -                    if (processing === 0)
    -                        results.end();
    -                    return;
    -                }
    -                processing++;
    -                dirs.add(dir);
    -                const entries = dir.readdirSync();
    -                for (const e of entries) {
    -                    if (!filter || filter(e)) {
    -                        if (!results.write(withFileTypes ? e : e.fullpath())) {
    -                            paused = true;
    -                        }
    -                    }
    -                }
    -                processing--;
    -                for (const e of entries) {
    -                    let r = e;
    -                    if (e.isSymbolicLink()) {
    -                        if (!(follow && (r = e.realpathSync())))
    -                            continue;
    -                        if (r.isUnknown())
    -                            r.lstatSync();
    -                    }
    -                    if (r.shouldWalk(dirs, walkFilter)) {
    -                        queue.push(r);
    -                    }
    -                }
    -            }
    -            if (paused && !results.flowing)
    -                results.once('drain', process);
    -        };
    -        process();
    -        return results;
    -    }
    -    chdir(path = this.cwd) {
    -        const oldCwd = this.cwd;
    -        this.cwd = typeof path === 'string' ? this.cwd.resolve(path) : path;
    -        this.cwd[setAsCwd](oldCwd);
    -    }
    -}
    -exports.PathScurryBase = PathScurryBase;
    -/**
    - * Windows implementation of {@link PathScurryBase}
    - *
    - * Defaults to case insensitve, uses `'\\'` to generate path strings.  Uses
    - * {@link PathWin32} for Path objects.
    - */
    -class PathScurryWin32 extends PathScurryBase {
    -    /**
    -     * separator for generating path strings
    -     */
    -    sep = '\\';
    -    constructor(cwd = process.cwd(), opts = {}) {
    -        const { nocase = true } = opts;
    -        super(cwd, node_path_1.win32, '\\', { ...opts, nocase });
    -        this.nocase = nocase;
    -        for (let p = this.cwd; p; p = p.parent) {
    -            p.nocase = this.nocase;
    -        }
    -    }
    -    /**
    -     * @internal
    -     */
    -    parseRootPath(dir) {
    -        // if the path starts with a single separator, it's not a UNC, and we'll
    -        // just get separator as the root, and driveFromUNC will return \
    -        // In that case, mount \ on the root from the cwd.
    -        return node_path_1.win32.parse(dir).root.toUpperCase();
    -    }
    -    /**
    -     * @internal
    -     */
    -    newRoot(fs) {
    -        return new PathWin32(this.rootPath, IFDIR, undefined, this.roots, this.nocase, this.childrenCache(), { fs });
    -    }
    -    /**
    -     * Return true if the provided path string is an absolute path
    -     */
    -    isAbsolute(p) {
    -        return (p.startsWith('/') || p.startsWith('\\') || /^[a-z]:(\/|\\)/i.test(p));
    -    }
    -}
    -exports.PathScurryWin32 = PathScurryWin32;
    -/**
    - * {@link PathScurryBase} implementation for all posix systems other than Darwin.
    - *
    - * Defaults to case-sensitive matching, uses `'/'` to generate path strings.
    - *
    - * Uses {@link PathPosix} for Path objects.
    - */
    -class PathScurryPosix extends PathScurryBase {
    -    /**
    -     * separator for generating path strings
    -     */
    -    sep = '/';
    -    constructor(cwd = process.cwd(), opts = {}) {
    -        const { nocase = false } = opts;
    -        super(cwd, node_path_1.posix, '/', { ...opts, nocase });
    -        this.nocase = nocase;
    -    }
    -    /**
    -     * @internal
    -     */
    -    parseRootPath(_dir) {
    -        return '/';
    -    }
    -    /**
    -     * @internal
    -     */
    -    newRoot(fs) {
    -        return new PathPosix(this.rootPath, IFDIR, undefined, this.roots, this.nocase, this.childrenCache(), { fs });
    -    }
    -    /**
    -     * Return true if the provided path string is an absolute path
    -     */
    -    isAbsolute(p) {
    -        return p.startsWith('/');
    -    }
    -}
    -exports.PathScurryPosix = PathScurryPosix;
    -/**
    - * {@link PathScurryBase} implementation for Darwin (macOS) systems.
    - *
    - * Defaults to case-insensitive matching, uses `'/'` for generating path
    - * strings.
    - *
    - * Uses {@link PathPosix} for Path objects.
    - */
    -class PathScurryDarwin extends PathScurryPosix {
    -    constructor(cwd = process.cwd(), opts = {}) {
    -        const { nocase = true } = opts;
    -        super(cwd, { ...opts, nocase });
    -    }
    -}
    -exports.PathScurryDarwin = PathScurryDarwin;
    -/**
    - * Default {@link PathBase} implementation for the current platform.
    - *
    - * {@link PathWin32} on Windows systems, {@link PathPosix} on all others.
    - */
    -exports.Path = process.platform === 'win32' ? PathWin32 : PathPosix;
    -/**
    - * Default {@link PathScurryBase} implementation for the current platform.
    - *
    - * {@link PathScurryWin32} on Windows systems, {@link PathScurryDarwin} on
    - * Darwin (macOS) systems, {@link PathScurryPosix} on all others.
    - */
    -exports.PathScurry = process.platform === 'win32' ? PathScurryWin32
    -    : process.platform === 'darwin' ? PathScurryDarwin
    -        : PathScurryPosix;
    -//# sourceMappingURL=index.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/commonjs/package.json b/deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/commonjs/package.json
    deleted file mode 100644
    index 5bbefffbabee39..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/commonjs/package.json
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -{
    -  "type": "commonjs"
    -}
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/esm/index.js b/deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/esm/index.js
    deleted file mode 100644
    index 3b11b819faece5..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/esm/index.js
    +++ /dev/null
    @@ -1,1979 +0,0 @@
    -import { LRUCache } from 'lru-cache';
    -import { posix, win32 } from 'node:path';
    -import { fileURLToPath } from 'node:url';
    -import { lstatSync, readdir as readdirCB, readdirSync, readlinkSync, realpathSync as rps, } from 'fs';
    -import * as actualFS from 'node:fs';
    -const realpathSync = rps.native;
    -// TODO: test perf of fs/promises realpath vs realpathCB,
    -// since the promises one uses realpath.native
    -import { lstat, readdir, readlink, realpath } from 'node:fs/promises';
    -import { Minipass } from 'minipass';
    -const defaultFS = {
    -    lstatSync,
    -    readdir: readdirCB,
    -    readdirSync,
    -    readlinkSync,
    -    realpathSync,
    -    promises: {
    -        lstat,
    -        readdir,
    -        readlink,
    -        realpath,
    -    },
    -};
    -// if they just gave us require('fs') then use our default
    -const fsFromOption = (fsOption) => !fsOption || fsOption === defaultFS || fsOption === actualFS ?
    -    defaultFS
    -    : {
    -        ...defaultFS,
    -        ...fsOption,
    -        promises: {
    -            ...defaultFS.promises,
    -            ...(fsOption.promises || {}),
    -        },
    -    };
    -// turn something like //?/c:/ into c:\
    -const uncDriveRegexp = /^\\\\\?\\([a-z]:)\\?$/i;
    -const uncToDrive = (rootPath) => rootPath.replace(/\//g, '\\').replace(uncDriveRegexp, '$1\\');
    -// windows paths are separated by either / or \
    -const eitherSep = /[\\\/]/;
    -const UNKNOWN = 0; // may not even exist, for all we know
    -const IFIFO = 0b0001;
    -const IFCHR = 0b0010;
    -const IFDIR = 0b0100;
    -const IFBLK = 0b0110;
    -const IFREG = 0b1000;
    -const IFLNK = 0b1010;
    -const IFSOCK = 0b1100;
    -const IFMT = 0b1111;
    -// mask to unset low 4 bits
    -const IFMT_UNKNOWN = ~IFMT;
    -// set after successfully calling readdir() and getting entries.
    -const READDIR_CALLED = 0b0000_0001_0000;
    -// set after a successful lstat()
    -const LSTAT_CALLED = 0b0000_0010_0000;
    -// set if an entry (or one of its parents) is definitely not a dir
    -const ENOTDIR = 0b0000_0100_0000;
    -// set if an entry (or one of its parents) does not exist
    -// (can also be set on lstat errors like EACCES or ENAMETOOLONG)
    -const ENOENT = 0b0000_1000_0000;
    -// cannot have child entries -- also verify &IFMT is either IFDIR or IFLNK
    -// set if we fail to readlink
    -const ENOREADLINK = 0b0001_0000_0000;
    -// set if we know realpath() will fail
    -const ENOREALPATH = 0b0010_0000_0000;
    -const ENOCHILD = ENOTDIR | ENOENT | ENOREALPATH;
    -const TYPEMASK = 0b0011_1111_1111;
    -const entToType = (s) => s.isFile() ? IFREG
    -    : s.isDirectory() ? IFDIR
    -        : s.isSymbolicLink() ? IFLNK
    -            : s.isCharacterDevice() ? IFCHR
    -                : s.isBlockDevice() ? IFBLK
    -                    : s.isSocket() ? IFSOCK
    -                        : s.isFIFO() ? IFIFO
    -                            : UNKNOWN;
    -// normalize unicode path names
    -const normalizeCache = new Map();
    -const normalize = (s) => {
    -    const c = normalizeCache.get(s);
    -    if (c)
    -        return c;
    -    const n = s.normalize('NFKD');
    -    normalizeCache.set(s, n);
    -    return n;
    -};
    -const normalizeNocaseCache = new Map();
    -const normalizeNocase = (s) => {
    -    const c = normalizeNocaseCache.get(s);
    -    if (c)
    -        return c;
    -    const n = normalize(s.toLowerCase());
    -    normalizeNocaseCache.set(s, n);
    -    return n;
    -};
    -/**
    - * An LRUCache for storing resolved path strings or Path objects.
    - * @internal
    - */
    -export class ResolveCache extends LRUCache {
    -    constructor() {
    -        super({ max: 256 });
    -    }
    -}
    -// In order to prevent blowing out the js heap by allocating hundreds of
    -// thousands of Path entries when walking extremely large trees, the "children"
    -// in this tree are represented by storing an array of Path entries in an
    -// LRUCache, indexed by the parent.  At any time, Path.children() may return an
    -// empty array, indicating that it doesn't know about any of its children, and
    -// thus has to rebuild that cache.  This is fine, it just means that we don't
    -// benefit as much from having the cached entries, but huge directory walks
    -// don't blow out the stack, and smaller ones are still as fast as possible.
    -//
    -//It does impose some complexity when building up the readdir data, because we
    -//need to pass a reference to the children array that we started with.
    -/**
    - * an LRUCache for storing child entries.
    - * @internal
    - */
    -export class ChildrenCache extends LRUCache {
    -    constructor(maxSize = 16 * 1024) {
    -        super({
    -            maxSize,
    -            // parent + children
    -            sizeCalculation: a => a.length + 1,
    -        });
    -    }
    -}
    -const setAsCwd = Symbol('PathScurry setAsCwd');
    -/**
    - * Path objects are sort of like a super-powered
    - * {@link https://nodejs.org/docs/latest/api/fs.html#class-fsdirent fs.Dirent}
    - *
    - * Each one represents a single filesystem entry on disk, which may or may not
    - * exist. It includes methods for reading various types of information via
    - * lstat, readlink, and readdir, and caches all information to the greatest
    - * degree possible.
    - *
    - * Note that fs operations that would normally throw will instead return an
    - * "empty" value. This is in order to prevent excessive overhead from error
    - * stack traces.
    - */
    -export class PathBase {
    -    /**
    -     * the basename of this path
    -     *
    -     * **Important**: *always* test the path name against any test string
    -     * usingthe {@link isNamed} method, and not by directly comparing this
    -     * string. Otherwise, unicode path strings that the system sees as identical
    -     * will not be properly treated as the same path, leading to incorrect
    -     * behavior and possible security issues.
    -     */
    -    name;
    -    /**
    -     * the Path entry corresponding to the path root.
    -     *
    -     * @internal
    -     */
    -    root;
    -    /**
    -     * All roots found within the current PathScurry family
    -     *
    -     * @internal
    -     */
    -    roots;
    -    /**
    -     * a reference to the parent path, or undefined in the case of root entries
    -     *
    -     * @internal
    -     */
    -    parent;
    -    /**
    -     * boolean indicating whether paths are compared case-insensitively
    -     * @internal
    -     */
    -    nocase;
    -    /**
    -     * boolean indicating that this path is the current working directory
    -     * of the PathScurry collection that contains it.
    -     */
    -    isCWD = false;
    -    // potential default fs override
    -    #fs;
    -    // Stats fields
    -    #dev;
    -    get dev() {
    -        return this.#dev;
    -    }
    -    #mode;
    -    get mode() {
    -        return this.#mode;
    -    }
    -    #nlink;
    -    get nlink() {
    -        return this.#nlink;
    -    }
    -    #uid;
    -    get uid() {
    -        return this.#uid;
    -    }
    -    #gid;
    -    get gid() {
    -        return this.#gid;
    -    }
    -    #rdev;
    -    get rdev() {
    -        return this.#rdev;
    -    }
    -    #blksize;
    -    get blksize() {
    -        return this.#blksize;
    -    }
    -    #ino;
    -    get ino() {
    -        return this.#ino;
    -    }
    -    #size;
    -    get size() {
    -        return this.#size;
    -    }
    -    #blocks;
    -    get blocks() {
    -        return this.#blocks;
    -    }
    -    #atimeMs;
    -    get atimeMs() {
    -        return this.#atimeMs;
    -    }
    -    #mtimeMs;
    -    get mtimeMs() {
    -        return this.#mtimeMs;
    -    }
    -    #ctimeMs;
    -    get ctimeMs() {
    -        return this.#ctimeMs;
    -    }
    -    #birthtimeMs;
    -    get birthtimeMs() {
    -        return this.#birthtimeMs;
    -    }
    -    #atime;
    -    get atime() {
    -        return this.#atime;
    -    }
    -    #mtime;
    -    get mtime() {
    -        return this.#mtime;
    -    }
    -    #ctime;
    -    get ctime() {
    -        return this.#ctime;
    -    }
    -    #birthtime;
    -    get birthtime() {
    -        return this.#birthtime;
    -    }
    -    #matchName;
    -    #depth;
    -    #fullpath;
    -    #fullpathPosix;
    -    #relative;
    -    #relativePosix;
    -    #type;
    -    #children;
    -    #linkTarget;
    -    #realpath;
    -    /**
    -     * This property is for compatibility with the Dirent class as of
    -     * Node v20, where Dirent['parentPath'] refers to the path of the
    -     * directory that was passed to readdir. For root entries, it's the path
    -     * to the entry itself.
    -     */
    -    get parentPath() {
    -        return (this.parent || this).fullpath();
    -    }
    -    /**
    -     * Deprecated alias for Dirent['parentPath'] Somewhat counterintuitively,
    -     * this property refers to the *parent* path, not the path object itself.
    -     */
    -    get path() {
    -        return this.parentPath;
    -    }
    -    /**
    -     * Do not create new Path objects directly.  They should always be accessed
    -     * via the PathScurry class or other methods on the Path class.
    -     *
    -     * @internal
    -     */
    -    constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
    -        this.name = name;
    -        this.#matchName = nocase ? normalizeNocase(name) : normalize(name);
    -        this.#type = type & TYPEMASK;
    -        this.nocase = nocase;
    -        this.roots = roots;
    -        this.root = root || this;
    -        this.#children = children;
    -        this.#fullpath = opts.fullpath;
    -        this.#relative = opts.relative;
    -        this.#relativePosix = opts.relativePosix;
    -        this.parent = opts.parent;
    -        if (this.parent) {
    -            this.#fs = this.parent.#fs;
    -        }
    -        else {
    -            this.#fs = fsFromOption(opts.fs);
    -        }
    -    }
    -    /**
    -     * Returns the depth of the Path object from its root.
    -     *
    -     * For example, a path at `/foo/bar` would have a depth of 2.
    -     */
    -    depth() {
    -        if (this.#depth !== undefined)
    -            return this.#depth;
    -        if (!this.parent)
    -            return (this.#depth = 0);
    -        return (this.#depth = this.parent.depth() + 1);
    -    }
    -    /**
    -     * @internal
    -     */
    -    childrenCache() {
    -        return this.#children;
    -    }
    -    /**
    -     * Get the Path object referenced by the string path, resolved from this Path
    -     */
    -    resolve(path) {
    -        if (!path) {
    -            return this;
    -        }
    -        const rootPath = this.getRootString(path);
    -        const dir = path.substring(rootPath.length);
    -        const dirParts = dir.split(this.splitSep);
    -        const result = rootPath ?
    -            this.getRoot(rootPath).#resolveParts(dirParts)
    -            : this.#resolveParts(dirParts);
    -        return result;
    -    }
    -    #resolveParts(dirParts) {
    -        let p = this;
    -        for (const part of dirParts) {
    -            p = p.child(part);
    -        }
    -        return p;
    -    }
    -    /**
    -     * Returns the cached children Path objects, if still available.  If they
    -     * have fallen out of the cache, then returns an empty array, and resets the
    -     * READDIR_CALLED bit, so that future calls to readdir() will require an fs
    -     * lookup.
    -     *
    -     * @internal
    -     */
    -    children() {
    -        const cached = this.#children.get(this);
    -        if (cached) {
    -            return cached;
    -        }
    -        const children = Object.assign([], { provisional: 0 });
    -        this.#children.set(this, children);
    -        this.#type &= ~READDIR_CALLED;
    -        return children;
    -    }
    -    /**
    -     * Resolves a path portion and returns or creates the child Path.
    -     *
    -     * Returns `this` if pathPart is `''` or `'.'`, or `parent` if pathPart is
    -     * `'..'`.
    -     *
    -     * This should not be called directly.  If `pathPart` contains any path
    -     * separators, it will lead to unsafe undefined behavior.
    -     *
    -     * Use `Path.resolve()` instead.
    -     *
    -     * @internal
    -     */
    -    child(pathPart, opts) {
    -        if (pathPart === '' || pathPart === '.') {
    -            return this;
    -        }
    -        if (pathPart === '..') {
    -            return this.parent || this;
    -        }
    -        // find the child
    -        const children = this.children();
    -        const name = this.nocase ? normalizeNocase(pathPart) : normalize(pathPart);
    -        for (const p of children) {
    -            if (p.#matchName === name) {
    -                return p;
    -            }
    -        }
    -        // didn't find it, create provisional child, since it might not
    -        // actually exist.  If we know the parent isn't a dir, then
    -        // in fact it CAN'T exist.
    -        const s = this.parent ? this.sep : '';
    -        const fullpath = this.#fullpath ? this.#fullpath + s + pathPart : undefined;
    -        const pchild = this.newChild(pathPart, UNKNOWN, {
    -            ...opts,
    -            parent: this,
    -            fullpath,
    -        });
    -        if (!this.canReaddir()) {
    -            pchild.#type |= ENOENT;
    -        }
    -        // don't have to update provisional, because if we have real children,
    -        // then provisional is set to children.length, otherwise a lower number
    -        children.push(pchild);
    -        return pchild;
    -    }
    -    /**
    -     * The relative path from the cwd. If it does not share an ancestor with
    -     * the cwd, then this ends up being equivalent to the fullpath()
    -     */
    -    relative() {
    -        if (this.isCWD)
    -            return '';
    -        if (this.#relative !== undefined) {
    -            return this.#relative;
    -        }
    -        const name = this.name;
    -        const p = this.parent;
    -        if (!p) {
    -            return (this.#relative = this.name);
    -        }
    -        const pv = p.relative();
    -        return pv + (!pv || !p.parent ? '' : this.sep) + name;
    -    }
    -    /**
    -     * The relative path from the cwd, using / as the path separator.
    -     * If it does not share an ancestor with
    -     * the cwd, then this ends up being equivalent to the fullpathPosix()
    -     * On posix systems, this is identical to relative().
    -     */
    -    relativePosix() {
    -        if (this.sep === '/')
    -            return this.relative();
    -        if (this.isCWD)
    -            return '';
    -        if (this.#relativePosix !== undefined)
    -            return this.#relativePosix;
    -        const name = this.name;
    -        const p = this.parent;
    -        if (!p) {
    -            return (this.#relativePosix = this.fullpathPosix());
    -        }
    -        const pv = p.relativePosix();
    -        return pv + (!pv || !p.parent ? '' : '/') + name;
    -    }
    -    /**
    -     * The fully resolved path string for this Path entry
    -     */
    -    fullpath() {
    -        if (this.#fullpath !== undefined) {
    -            return this.#fullpath;
    -        }
    -        const name = this.name;
    -        const p = this.parent;
    -        if (!p) {
    -            return (this.#fullpath = this.name);
    -        }
    -        const pv = p.fullpath();
    -        const fp = pv + (!p.parent ? '' : this.sep) + name;
    -        return (this.#fullpath = fp);
    -    }
    -    /**
    -     * On platforms other than windows, this is identical to fullpath.
    -     *
    -     * On windows, this is overridden to return the forward-slash form of the
    -     * full UNC path.
    -     */
    -    fullpathPosix() {
    -        if (this.#fullpathPosix !== undefined)
    -            return this.#fullpathPosix;
    -        if (this.sep === '/')
    -            return (this.#fullpathPosix = this.fullpath());
    -        if (!this.parent) {
    -            const p = this.fullpath().replace(/\\/g, '/');
    -            if (/^[a-z]:\//i.test(p)) {
    -                return (this.#fullpathPosix = `//?/${p}`);
    -            }
    -            else {
    -                return (this.#fullpathPosix = p);
    -            }
    -        }
    -        const p = this.parent;
    -        const pfpp = p.fullpathPosix();
    -        const fpp = pfpp + (!pfpp || !p.parent ? '' : '/') + this.name;
    -        return (this.#fullpathPosix = fpp);
    -    }
    -    /**
    -     * Is the Path of an unknown type?
    -     *
    -     * Note that we might know *something* about it if there has been a previous
    -     * filesystem operation, for example that it does not exist, or is not a
    -     * link, or whether it has child entries.
    -     */
    -    isUnknown() {
    -        return (this.#type & IFMT) === UNKNOWN;
    -    }
    -    isType(type) {
    -        return this[`is${type}`]();
    -    }
    -    getType() {
    -        return (this.isUnknown() ? 'Unknown'
    -            : this.isDirectory() ? 'Directory'
    -                : this.isFile() ? 'File'
    -                    : this.isSymbolicLink() ? 'SymbolicLink'
    -                        : this.isFIFO() ? 'FIFO'
    -                            : this.isCharacterDevice() ? 'CharacterDevice'
    -                                : this.isBlockDevice() ? 'BlockDevice'
    -                                    : /* c8 ignore start */ this.isSocket() ? 'Socket'
    -                                        : 'Unknown');
    -        /* c8 ignore stop */
    -    }
    -    /**
    -     * Is the Path a regular file?
    -     */
    -    isFile() {
    -        return (this.#type & IFMT) === IFREG;
    -    }
    -    /**
    -     * Is the Path a directory?
    -     */
    -    isDirectory() {
    -        return (this.#type & IFMT) === IFDIR;
    -    }
    -    /**
    -     * Is the path a character device?
    -     */
    -    isCharacterDevice() {
    -        return (this.#type & IFMT) === IFCHR;
    -    }
    -    /**
    -     * Is the path a block device?
    -     */
    -    isBlockDevice() {
    -        return (this.#type & IFMT) === IFBLK;
    -    }
    -    /**
    -     * Is the path a FIFO pipe?
    -     */
    -    isFIFO() {
    -        return (this.#type & IFMT) === IFIFO;
    -    }
    -    /**
    -     * Is the path a socket?
    -     */
    -    isSocket() {
    -        return (this.#type & IFMT) === IFSOCK;
    -    }
    -    /**
    -     * Is the path a symbolic link?
    -     */
    -    isSymbolicLink() {
    -        return (this.#type & IFLNK) === IFLNK;
    -    }
    -    /**
    -     * Return the entry if it has been subject of a successful lstat, or
    -     * undefined otherwise.
    -     *
    -     * Does not read the filesystem, so an undefined result *could* simply
    -     * mean that we haven't called lstat on it.
    -     */
    -    lstatCached() {
    -        return this.#type & LSTAT_CALLED ? this : undefined;
    -    }
    -    /**
    -     * Return the cached link target if the entry has been the subject of a
    -     * successful readlink, or undefined otherwise.
    -     *
    -     * Does not read the filesystem, so an undefined result *could* just mean we
    -     * don't have any cached data. Only use it if you are very sure that a
    -     * readlink() has been called at some point.
    -     */
    -    readlinkCached() {
    -        return this.#linkTarget;
    -    }
    -    /**
    -     * Returns the cached realpath target if the entry has been the subject
    -     * of a successful realpath, or undefined otherwise.
    -     *
    -     * Does not read the filesystem, so an undefined result *could* just mean we
    -     * don't have any cached data. Only use it if you are very sure that a
    -     * realpath() has been called at some point.
    -     */
    -    realpathCached() {
    -        return this.#realpath;
    -    }
    -    /**
    -     * Returns the cached child Path entries array if the entry has been the
    -     * subject of a successful readdir(), or [] otherwise.
    -     *
    -     * Does not read the filesystem, so an empty array *could* just mean we
    -     * don't have any cached data. Only use it if you are very sure that a
    -     * readdir() has been called recently enough to still be valid.
    -     */
    -    readdirCached() {
    -        const children = this.children();
    -        return children.slice(0, children.provisional);
    -    }
    -    /**
    -     * Return true if it's worth trying to readlink.  Ie, we don't (yet) have
    -     * any indication that readlink will definitely fail.
    -     *
    -     * Returns false if the path is known to not be a symlink, if a previous
    -     * readlink failed, or if the entry does not exist.
    -     */
    -    canReadlink() {
    -        if (this.#linkTarget)
    -            return true;
    -        if (!this.parent)
    -            return false;
    -        // cases where it cannot possibly succeed
    -        const ifmt = this.#type & IFMT;
    -        return !((ifmt !== UNKNOWN && ifmt !== IFLNK) ||
    -            this.#type & ENOREADLINK ||
    -            this.#type & ENOENT);
    -    }
    -    /**
    -     * Return true if readdir has previously been successfully called on this
    -     * path, indicating that cachedReaddir() is likely valid.
    -     */
    -    calledReaddir() {
    -        return !!(this.#type & READDIR_CALLED);
    -    }
    -    /**
    -     * Returns true if the path is known to not exist. That is, a previous lstat
    -     * or readdir failed to verify its existence when that would have been
    -     * expected, or a parent entry was marked either enoent or enotdir.
    -     */
    -    isENOENT() {
    -        return !!(this.#type & ENOENT);
    -    }
    -    /**
    -     * Return true if the path is a match for the given path name.  This handles
    -     * case sensitivity and unicode normalization.
    -     *
    -     * Note: even on case-sensitive systems, it is **not** safe to test the
    -     * equality of the `.name` property to determine whether a given pathname
    -     * matches, due to unicode normalization mismatches.
    -     *
    -     * Always use this method instead of testing the `path.name` property
    -     * directly.
    -     */
    -    isNamed(n) {
    -        return !this.nocase ?
    -            this.#matchName === normalize(n)
    -            : this.#matchName === normalizeNocase(n);
    -    }
    -    /**
    -     * Return the Path object corresponding to the target of a symbolic link.
    -     *
    -     * If the Path is not a symbolic link, or if the readlink call fails for any
    -     * reason, `undefined` is returned.
    -     *
    -     * Result is cached, and thus may be outdated if the filesystem is mutated.
    -     */
    -    async readlink() {
    -        const target = this.#linkTarget;
    -        if (target) {
    -            return target;
    -        }
    -        if (!this.canReadlink()) {
    -            return undefined;
    -        }
    -        /* c8 ignore start */
    -        // already covered by the canReadlink test, here for ts grumples
    -        if (!this.parent) {
    -            return undefined;
    -        }
    -        /* c8 ignore stop */
    -        try {
    -            const read = await this.#fs.promises.readlink(this.fullpath());
    -            const linkTarget = (await this.parent.realpath())?.resolve(read);
    -            if (linkTarget) {
    -                return (this.#linkTarget = linkTarget);
    -            }
    -        }
    -        catch (er) {
    -            this.#readlinkFail(er.code);
    -            return undefined;
    -        }
    -    }
    -    /**
    -     * Synchronous {@link PathBase.readlink}
    -     */
    -    readlinkSync() {
    -        const target = this.#linkTarget;
    -        if (target) {
    -            return target;
    -        }
    -        if (!this.canReadlink()) {
    -            return undefined;
    -        }
    -        /* c8 ignore start */
    -        // already covered by the canReadlink test, here for ts grumples
    -        if (!this.parent) {
    -            return undefined;
    -        }
    -        /* c8 ignore stop */
    -        try {
    -            const read = this.#fs.readlinkSync(this.fullpath());
    -            const linkTarget = this.parent.realpathSync()?.resolve(read);
    -            if (linkTarget) {
    -                return (this.#linkTarget = linkTarget);
    -            }
    -        }
    -        catch (er) {
    -            this.#readlinkFail(er.code);
    -            return undefined;
    -        }
    -    }
    -    #readdirSuccess(children) {
    -        // succeeded, mark readdir called bit
    -        this.#type |= READDIR_CALLED;
    -        // mark all remaining provisional children as ENOENT
    -        for (let p = children.provisional; p < children.length; p++) {
    -            const c = children[p];
    -            if (c)
    -                c.#markENOENT();
    -        }
    -    }
    -    #markENOENT() {
    -        // mark as UNKNOWN and ENOENT
    -        if (this.#type & ENOENT)
    -            return;
    -        this.#type = (this.#type | ENOENT) & IFMT_UNKNOWN;
    -        this.#markChildrenENOENT();
    -    }
    -    #markChildrenENOENT() {
    -        // all children are provisional and do not exist
    -        const children = this.children();
    -        children.provisional = 0;
    -        for (const p of children) {
    -            p.#markENOENT();
    -        }
    -    }
    -    #markENOREALPATH() {
    -        this.#type |= ENOREALPATH;
    -        this.#markENOTDIR();
    -    }
    -    // save the information when we know the entry is not a dir
    -    #markENOTDIR() {
    -        // entry is not a directory, so any children can't exist.
    -        // this *should* be impossible, since any children created
    -        // after it's been marked ENOTDIR should be marked ENOENT,
    -        // so it won't even get to this point.
    -        /* c8 ignore start */
    -        if (this.#type & ENOTDIR)
    -            return;
    -        /* c8 ignore stop */
    -        let t = this.#type;
    -        // this could happen if we stat a dir, then delete it,
    -        // then try to read it or one of its children.
    -        if ((t & IFMT) === IFDIR)
    -            t &= IFMT_UNKNOWN;
    -        this.#type = t | ENOTDIR;
    -        this.#markChildrenENOENT();
    -    }
    -    #readdirFail(code = '') {
    -        // markENOTDIR and markENOENT also set provisional=0
    -        if (code === 'ENOTDIR' || code === 'EPERM') {
    -            this.#markENOTDIR();
    -        }
    -        else if (code === 'ENOENT') {
    -            this.#markENOENT();
    -        }
    -        else {
    -            this.children().provisional = 0;
    -        }
    -    }
    -    #lstatFail(code = '') {
    -        // Windows just raises ENOENT in this case, disable for win CI
    -        /* c8 ignore start */
    -        if (code === 'ENOTDIR') {
    -            // already know it has a parent by this point
    -            const p = this.parent;
    -            p.#markENOTDIR();
    -        }
    -        else if (code === 'ENOENT') {
    -            /* c8 ignore stop */
    -            this.#markENOENT();
    -        }
    -    }
    -    #readlinkFail(code = '') {
    -        let ter = this.#type;
    -        ter |= ENOREADLINK;
    -        if (code === 'ENOENT')
    -            ter |= ENOENT;
    -        // windows gets a weird error when you try to readlink a file
    -        if (code === 'EINVAL' || code === 'UNKNOWN') {
    -            // exists, but not a symlink, we don't know WHAT it is, so remove
    -            // all IFMT bits.
    -            ter &= IFMT_UNKNOWN;
    -        }
    -        this.#type = ter;
    -        // windows just gets ENOENT in this case.  We do cover the case,
    -        // just disabled because it's impossible on Windows CI
    -        /* c8 ignore start */
    -        if (code === 'ENOTDIR' && this.parent) {
    -            this.parent.#markENOTDIR();
    -        }
    -        /* c8 ignore stop */
    -    }
    -    #readdirAddChild(e, c) {
    -        return (this.#readdirMaybePromoteChild(e, c) ||
    -            this.#readdirAddNewChild(e, c));
    -    }
    -    #readdirAddNewChild(e, c) {
    -        // alloc new entry at head, so it's never provisional
    -        const type = entToType(e);
    -        const child = this.newChild(e.name, type, { parent: this });
    -        const ifmt = child.#type & IFMT;
    -        if (ifmt !== IFDIR && ifmt !== IFLNK && ifmt !== UNKNOWN) {
    -            child.#type |= ENOTDIR;
    -        }
    -        c.unshift(child);
    -        c.provisional++;
    -        return child;
    -    }
    -    #readdirMaybePromoteChild(e, c) {
    -        for (let p = c.provisional; p < c.length; p++) {
    -            const pchild = c[p];
    -            const name = this.nocase ? normalizeNocase(e.name) : normalize(e.name);
    -            if (name !== pchild.#matchName) {
    -                continue;
    -            }
    -            return this.#readdirPromoteChild(e, pchild, p, c);
    -        }
    -    }
    -    #readdirPromoteChild(e, p, index, c) {
    -        const v = p.name;
    -        // retain any other flags, but set ifmt from dirent
    -        p.#type = (p.#type & IFMT_UNKNOWN) | entToType(e);
    -        // case sensitivity fixing when we learn the true name.
    -        if (v !== e.name)
    -            p.name = e.name;
    -        // just advance provisional index (potentially off the list),
    -        // otherwise we have to splice/pop it out and re-insert at head
    -        if (index !== c.provisional) {
    -            if (index === c.length - 1)
    -                c.pop();
    -            else
    -                c.splice(index, 1);
    -            c.unshift(p);
    -        }
    -        c.provisional++;
    -        return p;
    -    }
    -    /**
    -     * Call lstat() on this Path, and update all known information that can be
    -     * determined.
    -     *
    -     * Note that unlike `fs.lstat()`, the returned value does not contain some
    -     * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
    -     * information is required, you will need to call `fs.lstat` yourself.
    -     *
    -     * If the Path refers to a nonexistent file, or if the lstat call fails for
    -     * any reason, `undefined` is returned.  Otherwise the updated Path object is
    -     * returned.
    -     *
    -     * Results are cached, and thus may be out of date if the filesystem is
    -     * mutated.
    -     */
    -    async lstat() {
    -        if ((this.#type & ENOENT) === 0) {
    -            try {
    -                this.#applyStat(await this.#fs.promises.lstat(this.fullpath()));
    -                return this;
    -            }
    -            catch (er) {
    -                this.#lstatFail(er.code);
    -            }
    -        }
    -    }
    -    /**
    -     * synchronous {@link PathBase.lstat}
    -     */
    -    lstatSync() {
    -        if ((this.#type & ENOENT) === 0) {
    -            try {
    -                this.#applyStat(this.#fs.lstatSync(this.fullpath()));
    -                return this;
    -            }
    -            catch (er) {
    -                this.#lstatFail(er.code);
    -            }
    -        }
    -    }
    -    #applyStat(st) {
    -        const { atime, atimeMs, birthtime, birthtimeMs, blksize, blocks, ctime, ctimeMs, dev, gid, ino, mode, mtime, mtimeMs, nlink, rdev, size, uid, } = st;
    -        this.#atime = atime;
    -        this.#atimeMs = atimeMs;
    -        this.#birthtime = birthtime;
    -        this.#birthtimeMs = birthtimeMs;
    -        this.#blksize = blksize;
    -        this.#blocks = blocks;
    -        this.#ctime = ctime;
    -        this.#ctimeMs = ctimeMs;
    -        this.#dev = dev;
    -        this.#gid = gid;
    -        this.#ino = ino;
    -        this.#mode = mode;
    -        this.#mtime = mtime;
    -        this.#mtimeMs = mtimeMs;
    -        this.#nlink = nlink;
    -        this.#rdev = rdev;
    -        this.#size = size;
    -        this.#uid = uid;
    -        const ifmt = entToType(st);
    -        // retain any other flags, but set the ifmt
    -        this.#type = (this.#type & IFMT_UNKNOWN) | ifmt | LSTAT_CALLED;
    -        if (ifmt !== UNKNOWN && ifmt !== IFDIR && ifmt !== IFLNK) {
    -            this.#type |= ENOTDIR;
    -        }
    -    }
    -    #onReaddirCB = [];
    -    #readdirCBInFlight = false;
    -    #callOnReaddirCB(children) {
    -        this.#readdirCBInFlight = false;
    -        const cbs = this.#onReaddirCB.slice();
    -        this.#onReaddirCB.length = 0;
    -        cbs.forEach(cb => cb(null, children));
    -    }
    -    /**
    -     * Standard node-style callback interface to get list of directory entries.
    -     *
    -     * If the Path cannot or does not contain any children, then an empty array
    -     * is returned.
    -     *
    -     * Results are cached, and thus may be out of date if the filesystem is
    -     * mutated.
    -     *
    -     * @param cb The callback called with (er, entries).  Note that the `er`
    -     * param is somewhat extraneous, as all readdir() errors are handled and
    -     * simply result in an empty set of entries being returned.
    -     * @param allowZalgo Boolean indicating that immediately known results should
    -     * *not* be deferred with `queueMicrotask`. Defaults to `false`. Release
    -     * zalgo at your peril, the dark pony lord is devious and unforgiving.
    -     */
    -    readdirCB(cb, allowZalgo = false) {
    -        if (!this.canReaddir()) {
    -            if (allowZalgo)
    -                cb(null, []);
    -            else
    -                queueMicrotask(() => cb(null, []));
    -            return;
    -        }
    -        const children = this.children();
    -        if (this.calledReaddir()) {
    -            const c = children.slice(0, children.provisional);
    -            if (allowZalgo)
    -                cb(null, c);
    -            else
    -                queueMicrotask(() => cb(null, c));
    -            return;
    -        }
    -        // don't have to worry about zalgo at this point.
    -        this.#onReaddirCB.push(cb);
    -        if (this.#readdirCBInFlight) {
    -            return;
    -        }
    -        this.#readdirCBInFlight = true;
    -        // else read the directory, fill up children
    -        // de-provisionalize any provisional children.
    -        const fullpath = this.fullpath();
    -        this.#fs.readdir(fullpath, { withFileTypes: true }, (er, entries) => {
    -            if (er) {
    -                this.#readdirFail(er.code);
    -                children.provisional = 0;
    -            }
    -            else {
    -                // if we didn't get an error, we always get entries.
    -                //@ts-ignore
    -                for (const e of entries) {
    -                    this.#readdirAddChild(e, children);
    -                }
    -                this.#readdirSuccess(children);
    -            }
    -            this.#callOnReaddirCB(children.slice(0, children.provisional));
    -            return;
    -        });
    -    }
    -    #asyncReaddirInFlight;
    -    /**
    -     * Return an array of known child entries.
    -     *
    -     * If the Path cannot or does not contain any children, then an empty array
    -     * is returned.
    -     *
    -     * Results are cached, and thus may be out of date if the filesystem is
    -     * mutated.
    -     */
    -    async readdir() {
    -        if (!this.canReaddir()) {
    -            return [];
    -        }
    -        const children = this.children();
    -        if (this.calledReaddir()) {
    -            return children.slice(0, children.provisional);
    -        }
    -        // else read the directory, fill up children
    -        // de-provisionalize any provisional children.
    -        const fullpath = this.fullpath();
    -        if (this.#asyncReaddirInFlight) {
    -            await this.#asyncReaddirInFlight;
    -        }
    -        else {
    -            /* c8 ignore start */
    -            let resolve = () => { };
    -            /* c8 ignore stop */
    -            this.#asyncReaddirInFlight = new Promise(res => (resolve = res));
    -            try {
    -                for (const e of await this.#fs.promises.readdir(fullpath, {
    -                    withFileTypes: true,
    -                })) {
    -                    this.#readdirAddChild(e, children);
    -                }
    -                this.#readdirSuccess(children);
    -            }
    -            catch (er) {
    -                this.#readdirFail(er.code);
    -                children.provisional = 0;
    -            }
    -            this.#asyncReaddirInFlight = undefined;
    -            resolve();
    -        }
    -        return children.slice(0, children.provisional);
    -    }
    -    /**
    -     * synchronous {@link PathBase.readdir}
    -     */
    -    readdirSync() {
    -        if (!this.canReaddir()) {
    -            return [];
    -        }
    -        const children = this.children();
    -        if (this.calledReaddir()) {
    -            return children.slice(0, children.provisional);
    -        }
    -        // else read the directory, fill up children
    -        // de-provisionalize any provisional children.
    -        const fullpath = this.fullpath();
    -        try {
    -            for (const e of this.#fs.readdirSync(fullpath, {
    -                withFileTypes: true,
    -            })) {
    -                this.#readdirAddChild(e, children);
    -            }
    -            this.#readdirSuccess(children);
    -        }
    -        catch (er) {
    -            this.#readdirFail(er.code);
    -            children.provisional = 0;
    -        }
    -        return children.slice(0, children.provisional);
    -    }
    -    canReaddir() {
    -        if (this.#type & ENOCHILD)
    -            return false;
    -        const ifmt = IFMT & this.#type;
    -        // we always set ENOTDIR when setting IFMT, so should be impossible
    -        /* c8 ignore start */
    -        if (!(ifmt === UNKNOWN || ifmt === IFDIR || ifmt === IFLNK)) {
    -            return false;
    -        }
    -        /* c8 ignore stop */
    -        return true;
    -    }
    -    shouldWalk(dirs, walkFilter) {
    -        return ((this.#type & IFDIR) === IFDIR &&
    -            !(this.#type & ENOCHILD) &&
    -            !dirs.has(this) &&
    -            (!walkFilter || walkFilter(this)));
    -    }
    -    /**
    -     * Return the Path object corresponding to path as resolved
    -     * by realpath(3).
    -     *
    -     * If the realpath call fails for any reason, `undefined` is returned.
    -     *
    -     * Result is cached, and thus may be outdated if the filesystem is mutated.
    -     * On success, returns a Path object.
    -     */
    -    async realpath() {
    -        if (this.#realpath)
    -            return this.#realpath;
    -        if ((ENOREALPATH | ENOREADLINK | ENOENT) & this.#type)
    -            return undefined;
    -        try {
    -            const rp = await this.#fs.promises.realpath(this.fullpath());
    -            return (this.#realpath = this.resolve(rp));
    -        }
    -        catch (_) {
    -            this.#markENOREALPATH();
    -        }
    -    }
    -    /**
    -     * Synchronous {@link realpath}
    -     */
    -    realpathSync() {
    -        if (this.#realpath)
    -            return this.#realpath;
    -        if ((ENOREALPATH | ENOREADLINK | ENOENT) & this.#type)
    -            return undefined;
    -        try {
    -            const rp = this.#fs.realpathSync(this.fullpath());
    -            return (this.#realpath = this.resolve(rp));
    -        }
    -        catch (_) {
    -            this.#markENOREALPATH();
    -        }
    -    }
    -    /**
    -     * Internal method to mark this Path object as the scurry cwd,
    -     * called by {@link PathScurry#chdir}
    -     *
    -     * @internal
    -     */
    -    [setAsCwd](oldCwd) {
    -        if (oldCwd === this)
    -            return;
    -        oldCwd.isCWD = false;
    -        this.isCWD = true;
    -        const changed = new Set([]);
    -        let rp = [];
    -        let p = this;
    -        while (p && p.parent) {
    -            changed.add(p);
    -            p.#relative = rp.join(this.sep);
    -            p.#relativePosix = rp.join('/');
    -            p = p.parent;
    -            rp.push('..');
    -        }
    -        // now un-memoize parents of old cwd
    -        p = oldCwd;
    -        while (p && p.parent && !changed.has(p)) {
    -            p.#relative = undefined;
    -            p.#relativePosix = undefined;
    -            p = p.parent;
    -        }
    -    }
    -}
    -/**
    - * Path class used on win32 systems
    - *
    - * Uses `'\\'` as the path separator for returned paths, either `'\\'` or `'/'`
    - * as the path separator for parsing paths.
    - */
    -export class PathWin32 extends PathBase {
    -    /**
    -     * Separator for generating path strings.
    -     */
    -    sep = '\\';
    -    /**
    -     * Separator for parsing path strings.
    -     */
    -    splitSep = eitherSep;
    -    /**
    -     * Do not create new Path objects directly.  They should always be accessed
    -     * via the PathScurry class or other methods on the Path class.
    -     *
    -     * @internal
    -     */
    -    constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
    -        super(name, type, root, roots, nocase, children, opts);
    -    }
    -    /**
    -     * @internal
    -     */
    -    newChild(name, type = UNKNOWN, opts = {}) {
    -        return new PathWin32(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);
    -    }
    -    /**
    -     * @internal
    -     */
    -    getRootString(path) {
    -        return win32.parse(path).root;
    -    }
    -    /**
    -     * @internal
    -     */
    -    getRoot(rootPath) {
    -        rootPath = uncToDrive(rootPath.toUpperCase());
    -        if (rootPath === this.root.name) {
    -            return this.root;
    -        }
    -        // ok, not that one, check if it matches another we know about
    -        for (const [compare, root] of Object.entries(this.roots)) {
    -            if (this.sameRoot(rootPath, compare)) {
    -                return (this.roots[rootPath] = root);
    -            }
    -        }
    -        // otherwise, have to create a new one.
    -        return (this.roots[rootPath] = new PathScurryWin32(rootPath, this).root);
    -    }
    -    /**
    -     * @internal
    -     */
    -    sameRoot(rootPath, compare = this.root.name) {
    -        // windows can (rarely) have case-sensitive filesystem, but
    -        // UNC and drive letters are always case-insensitive, and canonically
    -        // represented uppercase.
    -        rootPath = rootPath
    -            .toUpperCase()
    -            .replace(/\//g, '\\')
    -            .replace(uncDriveRegexp, '$1\\');
    -        return rootPath === compare;
    -    }
    -}
    -/**
    - * Path class used on all posix systems.
    - *
    - * Uses `'/'` as the path separator.
    - */
    -export class PathPosix extends PathBase {
    -    /**
    -     * separator for parsing path strings
    -     */
    -    splitSep = '/';
    -    /**
    -     * separator for generating path strings
    -     */
    -    sep = '/';
    -    /**
    -     * Do not create new Path objects directly.  They should always be accessed
    -     * via the PathScurry class or other methods on the Path class.
    -     *
    -     * @internal
    -     */
    -    constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
    -        super(name, type, root, roots, nocase, children, opts);
    -    }
    -    /**
    -     * @internal
    -     */
    -    getRootString(path) {
    -        return path.startsWith('/') ? '/' : '';
    -    }
    -    /**
    -     * @internal
    -     */
    -    getRoot(_rootPath) {
    -        return this.root;
    -    }
    -    /**
    -     * @internal
    -     */
    -    newChild(name, type = UNKNOWN, opts = {}) {
    -        return new PathPosix(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);
    -    }
    -}
    -/**
    - * The base class for all PathScurry classes, providing the interface for path
    - * resolution and filesystem operations.
    - *
    - * Typically, you should *not* instantiate this class directly, but rather one
    - * of the platform-specific classes, or the exported {@link PathScurry} which
    - * defaults to the current platform.
    - */
    -export class PathScurryBase {
    -    /**
    -     * The root Path entry for the current working directory of this Scurry
    -     */
    -    root;
    -    /**
    -     * The string path for the root of this Scurry's current working directory
    -     */
    -    rootPath;
    -    /**
    -     * A collection of all roots encountered, referenced by rootPath
    -     */
    -    roots;
    -    /**
    -     * The Path entry corresponding to this PathScurry's current working directory.
    -     */
    -    cwd;
    -    #resolveCache;
    -    #resolvePosixCache;
    -    #children;
    -    /**
    -     * Perform path comparisons case-insensitively.
    -     *
    -     * Defaults true on Darwin and Windows systems, false elsewhere.
    -     */
    -    nocase;
    -    #fs;
    -    /**
    -     * This class should not be instantiated directly.
    -     *
    -     * Use PathScurryWin32, PathScurryDarwin, PathScurryPosix, or PathScurry
    -     *
    -     * @internal
    -     */
    -    constructor(cwd = process.cwd(), pathImpl, sep, { nocase, childrenCacheSize = 16 * 1024, fs = defaultFS, } = {}) {
    -        this.#fs = fsFromOption(fs);
    -        if (cwd instanceof URL || cwd.startsWith('file://')) {
    -            cwd = fileURLToPath(cwd);
    -        }
    -        // resolve and split root, and then add to the store.
    -        // this is the only time we call path.resolve()
    -        const cwdPath = pathImpl.resolve(cwd);
    -        this.roots = Object.create(null);
    -        this.rootPath = this.parseRootPath(cwdPath);
    -        this.#resolveCache = new ResolveCache();
    -        this.#resolvePosixCache = new ResolveCache();
    -        this.#children = new ChildrenCache(childrenCacheSize);
    -        const split = cwdPath.substring(this.rootPath.length).split(sep);
    -        // resolve('/') leaves '', splits to [''], we don't want that.
    -        if (split.length === 1 && !split[0]) {
    -            split.pop();
    -        }
    -        /* c8 ignore start */
    -        if (nocase === undefined) {
    -            throw new TypeError('must provide nocase setting to PathScurryBase ctor');
    -        }
    -        /* c8 ignore stop */
    -        this.nocase = nocase;
    -        this.root = this.newRoot(this.#fs);
    -        this.roots[this.rootPath] = this.root;
    -        let prev = this.root;
    -        let len = split.length - 1;
    -        const joinSep = pathImpl.sep;
    -        let abs = this.rootPath;
    -        let sawFirst = false;
    -        for (const part of split) {
    -            const l = len--;
    -            prev = prev.child(part, {
    -                relative: new Array(l).fill('..').join(joinSep),
    -                relativePosix: new Array(l).fill('..').join('/'),
    -                fullpath: (abs += (sawFirst ? '' : joinSep) + part),
    -            });
    -            sawFirst = true;
    -        }
    -        this.cwd = prev;
    -    }
    -    /**
    -     * Get the depth of a provided path, string, or the cwd
    -     */
    -    depth(path = this.cwd) {
    -        if (typeof path === 'string') {
    -            path = this.cwd.resolve(path);
    -        }
    -        return path.depth();
    -    }
    -    /**
    -     * Return the cache of child entries.  Exposed so subclasses can create
    -     * child Path objects in a platform-specific way.
    -     *
    -     * @internal
    -     */
    -    childrenCache() {
    -        return this.#children;
    -    }
    -    /**
    -     * Resolve one or more path strings to a resolved string
    -     *
    -     * Same interface as require('path').resolve.
    -     *
    -     * Much faster than path.resolve() when called multiple times for the same
    -     * path, because the resolved Path objects are cached.  Much slower
    -     * otherwise.
    -     */
    -    resolve(...paths) {
    -        // first figure out the minimum number of paths we have to test
    -        // we always start at cwd, but any absolutes will bump the start
    -        let r = '';
    -        for (let i = paths.length - 1; i >= 0; i--) {
    -            const p = paths[i];
    -            if (!p || p === '.')
    -                continue;
    -            r = r ? `${p}/${r}` : p;
    -            if (this.isAbsolute(p)) {
    -                break;
    -            }
    -        }
    -        const cached = this.#resolveCache.get(r);
    -        if (cached !== undefined) {
    -            return cached;
    -        }
    -        const result = this.cwd.resolve(r).fullpath();
    -        this.#resolveCache.set(r, result);
    -        return result;
    -    }
    -    /**
    -     * Resolve one or more path strings to a resolved string, returning
    -     * the posix path.  Identical to .resolve() on posix systems, but on
    -     * windows will return a forward-slash separated UNC path.
    -     *
    -     * Same interface as require('path').resolve.
    -     *
    -     * Much faster than path.resolve() when called multiple times for the same
    -     * path, because the resolved Path objects are cached.  Much slower
    -     * otherwise.
    -     */
    -    resolvePosix(...paths) {
    -        // first figure out the minimum number of paths we have to test
    -        // we always start at cwd, but any absolutes will bump the start
    -        let r = '';
    -        for (let i = paths.length - 1; i >= 0; i--) {
    -            const p = paths[i];
    -            if (!p || p === '.')
    -                continue;
    -            r = r ? `${p}/${r}` : p;
    -            if (this.isAbsolute(p)) {
    -                break;
    -            }
    -        }
    -        const cached = this.#resolvePosixCache.get(r);
    -        if (cached !== undefined) {
    -            return cached;
    -        }
    -        const result = this.cwd.resolve(r).fullpathPosix();
    -        this.#resolvePosixCache.set(r, result);
    -        return result;
    -    }
    -    /**
    -     * find the relative path from the cwd to the supplied path string or entry
    -     */
    -    relative(entry = this.cwd) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        return entry.relative();
    -    }
    -    /**
    -     * find the relative path from the cwd to the supplied path string or
    -     * entry, using / as the path delimiter, even on Windows.
    -     */
    -    relativePosix(entry = this.cwd) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        return entry.relativePosix();
    -    }
    -    /**
    -     * Return the basename for the provided string or Path object
    -     */
    -    basename(entry = this.cwd) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        return entry.name;
    -    }
    -    /**
    -     * Return the dirname for the provided string or Path object
    -     */
    -    dirname(entry = this.cwd) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        return (entry.parent || entry).fullpath();
    -    }
    -    async readdir(entry = this.cwd, opts = {
    -        withFileTypes: true,
    -    }) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            opts = entry;
    -            entry = this.cwd;
    -        }
    -        const { withFileTypes } = opts;
    -        if (!entry.canReaddir()) {
    -            return [];
    -        }
    -        else {
    -            const p = await entry.readdir();
    -            return withFileTypes ? p : p.map(e => e.name);
    -        }
    -    }
    -    readdirSync(entry = this.cwd, opts = {
    -        withFileTypes: true,
    -    }) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            opts = entry;
    -            entry = this.cwd;
    -        }
    -        const { withFileTypes = true } = opts;
    -        if (!entry.canReaddir()) {
    -            return [];
    -        }
    -        else if (withFileTypes) {
    -            return entry.readdirSync();
    -        }
    -        else {
    -            return entry.readdirSync().map(e => e.name);
    -        }
    -    }
    -    /**
    -     * Call lstat() on the string or Path object, and update all known
    -     * information that can be determined.
    -     *
    -     * Note that unlike `fs.lstat()`, the returned value does not contain some
    -     * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
    -     * information is required, you will need to call `fs.lstat` yourself.
    -     *
    -     * If the Path refers to a nonexistent file, or if the lstat call fails for
    -     * any reason, `undefined` is returned.  Otherwise the updated Path object is
    -     * returned.
    -     *
    -     * Results are cached, and thus may be out of date if the filesystem is
    -     * mutated.
    -     */
    -    async lstat(entry = this.cwd) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        return entry.lstat();
    -    }
    -    /**
    -     * synchronous {@link PathScurryBase.lstat}
    -     */
    -    lstatSync(entry = this.cwd) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        return entry.lstatSync();
    -    }
    -    async readlink(entry = this.cwd, { withFileTypes } = {
    -        withFileTypes: false,
    -    }) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            withFileTypes = entry.withFileTypes;
    -            entry = this.cwd;
    -        }
    -        const e = await entry.readlink();
    -        return withFileTypes ? e : e?.fullpath();
    -    }
    -    readlinkSync(entry = this.cwd, { withFileTypes } = {
    -        withFileTypes: false,
    -    }) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            withFileTypes = entry.withFileTypes;
    -            entry = this.cwd;
    -        }
    -        const e = entry.readlinkSync();
    -        return withFileTypes ? e : e?.fullpath();
    -    }
    -    async realpath(entry = this.cwd, { withFileTypes } = {
    -        withFileTypes: false,
    -    }) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            withFileTypes = entry.withFileTypes;
    -            entry = this.cwd;
    -        }
    -        const e = await entry.realpath();
    -        return withFileTypes ? e : e?.fullpath();
    -    }
    -    realpathSync(entry = this.cwd, { withFileTypes } = {
    -        withFileTypes: false,
    -    }) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            withFileTypes = entry.withFileTypes;
    -            entry = this.cwd;
    -        }
    -        const e = entry.realpathSync();
    -        return withFileTypes ? e : e?.fullpath();
    -    }
    -    async walk(entry = this.cwd, opts = {}) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            opts = entry;
    -            entry = this.cwd;
    -        }
    -        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    -        const results = [];
    -        if (!filter || filter(entry)) {
    -            results.push(withFileTypes ? entry : entry.fullpath());
    -        }
    -        const dirs = new Set();
    -        const walk = (dir, cb) => {
    -            dirs.add(dir);
    -            dir.readdirCB((er, entries) => {
    -                /* c8 ignore start */
    -                if (er) {
    -                    return cb(er);
    -                }
    -                /* c8 ignore stop */
    -                let len = entries.length;
    -                if (!len)
    -                    return cb();
    -                const next = () => {
    -                    if (--len === 0) {
    -                        cb();
    -                    }
    -                };
    -                for (const e of entries) {
    -                    if (!filter || filter(e)) {
    -                        results.push(withFileTypes ? e : e.fullpath());
    -                    }
    -                    if (follow && e.isSymbolicLink()) {
    -                        e.realpath()
    -                            .then(r => (r?.isUnknown() ? r.lstat() : r))
    -                            .then(r => r?.shouldWalk(dirs, walkFilter) ? walk(r, next) : next());
    -                    }
    -                    else {
    -                        if (e.shouldWalk(dirs, walkFilter)) {
    -                            walk(e, next);
    -                        }
    -                        else {
    -                            next();
    -                        }
    -                    }
    -                }
    -            }, true); // zalgooooooo
    -        };
    -        const start = entry;
    -        return new Promise((res, rej) => {
    -            walk(start, er => {
    -                /* c8 ignore start */
    -                if (er)
    -                    return rej(er);
    -                /* c8 ignore stop */
    -                res(results);
    -            });
    -        });
    -    }
    -    walkSync(entry = this.cwd, opts = {}) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            opts = entry;
    -            entry = this.cwd;
    -        }
    -        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    -        const results = [];
    -        if (!filter || filter(entry)) {
    -            results.push(withFileTypes ? entry : entry.fullpath());
    -        }
    -        const dirs = new Set([entry]);
    -        for (const dir of dirs) {
    -            const entries = dir.readdirSync();
    -            for (const e of entries) {
    -                if (!filter || filter(e)) {
    -                    results.push(withFileTypes ? e : e.fullpath());
    -                }
    -                let r = e;
    -                if (e.isSymbolicLink()) {
    -                    if (!(follow && (r = e.realpathSync())))
    -                        continue;
    -                    if (r.isUnknown())
    -                        r.lstatSync();
    -                }
    -                if (r.shouldWalk(dirs, walkFilter)) {
    -                    dirs.add(r);
    -                }
    -            }
    -        }
    -        return results;
    -    }
    -    /**
    -     * Support for `for await`
    -     *
    -     * Alias for {@link PathScurryBase.iterate}
    -     *
    -     * Note: As of Node 19, this is very slow, compared to other methods of
    -     * walking.  Consider using {@link PathScurryBase.stream} if memory overhead
    -     * and backpressure are concerns, or {@link PathScurryBase.walk} if not.
    -     */
    -    [Symbol.asyncIterator]() {
    -        return this.iterate();
    -    }
    -    iterate(entry = this.cwd, options = {}) {
    -        // iterating async over the stream is significantly more performant,
    -        // especially in the warm-cache scenario, because it buffers up directory
    -        // entries in the background instead of waiting for a yield for each one.
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            options = entry;
    -            entry = this.cwd;
    -        }
    -        return this.stream(entry, options)[Symbol.asyncIterator]();
    -    }
    -    /**
    -     * Iterating over a PathScurry performs a synchronous walk.
    -     *
    -     * Alias for {@link PathScurryBase.iterateSync}
    -     */
    -    [Symbol.iterator]() {
    -        return this.iterateSync();
    -    }
    -    *iterateSync(entry = this.cwd, opts = {}) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            opts = entry;
    -            entry = this.cwd;
    -        }
    -        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    -        if (!filter || filter(entry)) {
    -            yield withFileTypes ? entry : entry.fullpath();
    -        }
    -        const dirs = new Set([entry]);
    -        for (const dir of dirs) {
    -            const entries = dir.readdirSync();
    -            for (const e of entries) {
    -                if (!filter || filter(e)) {
    -                    yield withFileTypes ? e : e.fullpath();
    -                }
    -                let r = e;
    -                if (e.isSymbolicLink()) {
    -                    if (!(follow && (r = e.realpathSync())))
    -                        continue;
    -                    if (r.isUnknown())
    -                        r.lstatSync();
    -                }
    -                if (r.shouldWalk(dirs, walkFilter)) {
    -                    dirs.add(r);
    -                }
    -            }
    -        }
    -    }
    -    stream(entry = this.cwd, opts = {}) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            opts = entry;
    -            entry = this.cwd;
    -        }
    -        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    -        const results = new Minipass({ objectMode: true });
    -        if (!filter || filter(entry)) {
    -            results.write(withFileTypes ? entry : entry.fullpath());
    -        }
    -        const dirs = new Set();
    -        const queue = [entry];
    -        let processing = 0;
    -        const process = () => {
    -            let paused = false;
    -            while (!paused) {
    -                const dir = queue.shift();
    -                if (!dir) {
    -                    if (processing === 0)
    -                        results.end();
    -                    return;
    -                }
    -                processing++;
    -                dirs.add(dir);
    -                const onReaddir = (er, entries, didRealpaths = false) => {
    -                    /* c8 ignore start */
    -                    if (er)
    -                        return results.emit('error', er);
    -                    /* c8 ignore stop */
    -                    if (follow && !didRealpaths) {
    -                        const promises = [];
    -                        for (const e of entries) {
    -                            if (e.isSymbolicLink()) {
    -                                promises.push(e
    -                                    .realpath()
    -                                    .then((r) => r?.isUnknown() ? r.lstat() : r));
    -                            }
    -                        }
    -                        if (promises.length) {
    -                            Promise.all(promises).then(() => onReaddir(null, entries, true));
    -                            return;
    -                        }
    -                    }
    -                    for (const e of entries) {
    -                        if (e && (!filter || filter(e))) {
    -                            if (!results.write(withFileTypes ? e : e.fullpath())) {
    -                                paused = true;
    -                            }
    -                        }
    -                    }
    -                    processing--;
    -                    for (const e of entries) {
    -                        const r = e.realpathCached() || e;
    -                        if (r.shouldWalk(dirs, walkFilter)) {
    -                            queue.push(r);
    -                        }
    -                    }
    -                    if (paused && !results.flowing) {
    -                        results.once('drain', process);
    -                    }
    -                    else if (!sync) {
    -                        process();
    -                    }
    -                };
    -                // zalgo containment
    -                let sync = true;
    -                dir.readdirCB(onReaddir, true);
    -                sync = false;
    -            }
    -        };
    -        process();
    -        return results;
    -    }
    -    streamSync(entry = this.cwd, opts = {}) {
    -        if (typeof entry === 'string') {
    -            entry = this.cwd.resolve(entry);
    -        }
    -        else if (!(entry instanceof PathBase)) {
    -            opts = entry;
    -            entry = this.cwd;
    -        }
    -        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    -        const results = new Minipass({ objectMode: true });
    -        const dirs = new Set();
    -        if (!filter || filter(entry)) {
    -            results.write(withFileTypes ? entry : entry.fullpath());
    -        }
    -        const queue = [entry];
    -        let processing = 0;
    -        const process = () => {
    -            let paused = false;
    -            while (!paused) {
    -                const dir = queue.shift();
    -                if (!dir) {
    -                    if (processing === 0)
    -                        results.end();
    -                    return;
    -                }
    -                processing++;
    -                dirs.add(dir);
    -                const entries = dir.readdirSync();
    -                for (const e of entries) {
    -                    if (!filter || filter(e)) {
    -                        if (!results.write(withFileTypes ? e : e.fullpath())) {
    -                            paused = true;
    -                        }
    -                    }
    -                }
    -                processing--;
    -                for (const e of entries) {
    -                    let r = e;
    -                    if (e.isSymbolicLink()) {
    -                        if (!(follow && (r = e.realpathSync())))
    -                            continue;
    -                        if (r.isUnknown())
    -                            r.lstatSync();
    -                    }
    -                    if (r.shouldWalk(dirs, walkFilter)) {
    -                        queue.push(r);
    -                    }
    -                }
    -            }
    -            if (paused && !results.flowing)
    -                results.once('drain', process);
    -        };
    -        process();
    -        return results;
    -    }
    -    chdir(path = this.cwd) {
    -        const oldCwd = this.cwd;
    -        this.cwd = typeof path === 'string' ? this.cwd.resolve(path) : path;
    -        this.cwd[setAsCwd](oldCwd);
    -    }
    -}
    -/**
    - * Windows implementation of {@link PathScurryBase}
    - *
    - * Defaults to case insensitve, uses `'\\'` to generate path strings.  Uses
    - * {@link PathWin32} for Path objects.
    - */
    -export class PathScurryWin32 extends PathScurryBase {
    -    /**
    -     * separator for generating path strings
    -     */
    -    sep = '\\';
    -    constructor(cwd = process.cwd(), opts = {}) {
    -        const { nocase = true } = opts;
    -        super(cwd, win32, '\\', { ...opts, nocase });
    -        this.nocase = nocase;
    -        for (let p = this.cwd; p; p = p.parent) {
    -            p.nocase = this.nocase;
    -        }
    -    }
    -    /**
    -     * @internal
    -     */
    -    parseRootPath(dir) {
    -        // if the path starts with a single separator, it's not a UNC, and we'll
    -        // just get separator as the root, and driveFromUNC will return \
    -        // In that case, mount \ on the root from the cwd.
    -        return win32.parse(dir).root.toUpperCase();
    -    }
    -    /**
    -     * @internal
    -     */
    -    newRoot(fs) {
    -        return new PathWin32(this.rootPath, IFDIR, undefined, this.roots, this.nocase, this.childrenCache(), { fs });
    -    }
    -    /**
    -     * Return true if the provided path string is an absolute path
    -     */
    -    isAbsolute(p) {
    -        return (p.startsWith('/') || p.startsWith('\\') || /^[a-z]:(\/|\\)/i.test(p));
    -    }
    -}
    -/**
    - * {@link PathScurryBase} implementation for all posix systems other than Darwin.
    - *
    - * Defaults to case-sensitive matching, uses `'/'` to generate path strings.
    - *
    - * Uses {@link PathPosix} for Path objects.
    - */
    -export class PathScurryPosix extends PathScurryBase {
    -    /**
    -     * separator for generating path strings
    -     */
    -    sep = '/';
    -    constructor(cwd = process.cwd(), opts = {}) {
    -        const { nocase = false } = opts;
    -        super(cwd, posix, '/', { ...opts, nocase });
    -        this.nocase = nocase;
    -    }
    -    /**
    -     * @internal
    -     */
    -    parseRootPath(_dir) {
    -        return '/';
    -    }
    -    /**
    -     * @internal
    -     */
    -    newRoot(fs) {
    -        return new PathPosix(this.rootPath, IFDIR, undefined, this.roots, this.nocase, this.childrenCache(), { fs });
    -    }
    -    /**
    -     * Return true if the provided path string is an absolute path
    -     */
    -    isAbsolute(p) {
    -        return p.startsWith('/');
    -    }
    -}
    -/**
    - * {@link PathScurryBase} implementation for Darwin (macOS) systems.
    - *
    - * Defaults to case-insensitive matching, uses `'/'` for generating path
    - * strings.
    - *
    - * Uses {@link PathPosix} for Path objects.
    - */
    -export class PathScurryDarwin extends PathScurryPosix {
    -    constructor(cwd = process.cwd(), opts = {}) {
    -        const { nocase = true } = opts;
    -        super(cwd, { ...opts, nocase });
    -    }
    -}
    -/**
    - * Default {@link PathBase} implementation for the current platform.
    - *
    - * {@link PathWin32} on Windows systems, {@link PathPosix} on all others.
    - */
    -export const Path = process.platform === 'win32' ? PathWin32 : PathPosix;
    -/**
    - * Default {@link PathScurryBase} implementation for the current platform.
    - *
    - * {@link PathScurryWin32} on Windows systems, {@link PathScurryDarwin} on
    - * Darwin (macOS) systems, {@link PathScurryPosix} on all others.
    - */
    -export const PathScurry = process.platform === 'win32' ? PathScurryWin32
    -    : process.platform === 'darwin' ? PathScurryDarwin
    -        : PathScurryPosix;
    -//# sourceMappingURL=index.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/esm/package.json b/deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/esm/package.json
    deleted file mode 100644
    index 3dbc1ca591c055..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/path-scurry/dist/esm/package.json
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -{
    -  "type": "module"
    -}
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-scurry/package.json b/deps/npm/node_modules/node-gyp/node_modules/path-scurry/package.json
    deleted file mode 100644
    index e1766157894c8d..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/path-scurry/package.json
    +++ /dev/null
    @@ -1,89 +0,0 @@
    -{
    -  "name": "path-scurry",
    -  "version": "1.11.1",
    -  "description": "walk paths fast and efficiently",
    -  "author": "Isaac Z. Schlueter  (https://blog.izs.me)",
    -  "main": "./dist/commonjs/index.js",
    -  "type": "module",
    -  "exports": {
    -    "./package.json": "./package.json",
    -    ".": {
    -      "import": {
    -        "types": "./dist/esm/index.d.ts",
    -        "default": "./dist/esm/index.js"
    -      },
    -      "require": {
    -        "types": "./dist/commonjs/index.d.ts",
    -        "default": "./dist/commonjs/index.js"
    -      }
    -    }
    -  },
    -  "files": [
    -    "dist"
    -  ],
    -  "license": "BlueOak-1.0.0",
    -  "scripts": {
    -    "preversion": "npm test",
    -    "postversion": "npm publish",
    -    "prepublishOnly": "git push origin --follow-tags",
    -    "prepare": "tshy",
    -    "pretest": "npm run prepare",
    -    "presnap": "npm run prepare",
    -    "test": "tap",
    -    "snap": "tap",
    -    "format": "prettier --write . --loglevel warn",
    -    "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": "^1.2.8",
    -    "@types/node": "^20.12.11",
    -    "c8": "^7.12.0",
    -    "eslint-config-prettier": "^8.6.0",
    -    "mkdirp": "^3.0.0",
    -    "prettier": "^3.2.5",
    -    "rimraf": "^5.0.1",
    -    "tap": "^18.7.2",
    -    "ts-node": "^10.9.2",
    -    "tshy": "^1.14.0",
    -    "typedoc": "^0.25.12",
    -    "typescript": "^5.4.3"
    -  },
    -  "tap": {
    -    "typecheck": true
    -  },
    -  "engines": {
    -    "node": ">=16 || 14 >=14.18"
    -  },
    -  "funding": {
    -    "url": "https://github.com/sponsors/isaacs"
    -  },
    -  "repository": {
    -    "type": "git",
    -    "url": "git+https://github.com/isaacs/path-scurry"
    -  },
    -  "dependencies": {
    -    "lru-cache": "^10.2.0",
    -    "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
    -  },
    -  "tshy": {
    -    "selfLink": false,
    -    "exports": {
    -      "./package.json": "./package.json",
    -      ".": "./src/index.ts"
    -    }
    -  },
    -  "types": "./dist/commonjs/index.d.ts"
    -}
    diff --git a/deps/npm/node_modules/node-gyp/package.json b/deps/npm/node_modules/node-gyp/package.json
    index 018391bd38c470..ae606878441335 100644
    --- a/deps/npm/node_modules/node-gyp/package.json
    +++ b/deps/npm/node_modules/node-gyp/package.json
    @@ -11,7 +11,7 @@
         "bindings",
         "gyp"
       ],
    -  "version": "11.4.2",
    +  "version": "12.1.0",
       "installVersion": 11,
       "author": "Nathan Rajlich  (http://tootallnate.net)",
       "repository": {
    @@ -25,28 +25,28 @@
         "env-paths": "^2.2.0",
         "exponential-backoff": "^3.1.1",
         "graceful-fs": "^4.2.6",
    -    "make-fetch-happen": "^14.0.3",
    -    "nopt": "^8.0.0",
    -    "proc-log": "^5.0.0",
    +    "make-fetch-happen": "^15.0.0",
    +    "nopt": "^9.0.0",
    +    "proc-log": "^6.0.0",
         "semver": "^7.3.5",
    -    "tar": "^7.4.3",
    +    "tar": "^7.5.2",
         "tinyglobby": "^0.2.12",
    -    "which": "^5.0.0"
    +    "which": "^6.0.0"
       },
       "engines": {
    -    "node": "^18.17.0 || >=20.5.0"
    +    "node": "^20.17.0 || >=22.9.0"
       },
       "devDependencies": {
         "bindings": "^1.5.0",
    -    "cross-env": "^7.0.3",
    -    "eslint": "^9.16.0",
    -    "mocha": "^11.0.1",
    -    "nan": "^2.14.2",
    -    "neostandard": "^0.11.9",
    +    "cross-env": "^10.1.0",
    +    "eslint": "^9.39.1",
    +    "mocha": "^11.7.5",
    +    "nan": "^2.23.1",
    +    "neostandard": "^0.12.2",
         "require-inject": "^1.4.4"
       },
       "scripts": {
         "lint": "eslint \"*/*.js\" \"test/**/*.js\" \".github/**/*.js\"",
    -    "test": "cross-env NODE_GYP_NULL_LOGGER=true mocha --timeout 15000 test/test-download.js test/test-*"
    +    "test": "cross-env NODE_GYP_NULL_LOGGER=true mocha --timeout 30000 test/test-download.js test/test-*"
       }
     }
    diff --git a/deps/npm/node_modules/nopt/package.json b/deps/npm/node_modules/nopt/package.json
    index 0732ada73c1d00..bb91642931009a 100644
    --- a/deps/npm/node_modules/nopt/package.json
    +++ b/deps/npm/node_modules/nopt/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "nopt",
    -  "version": "8.1.0",
    +  "version": "9.0.0",
       "description": "Option parsing for Node, supporting types, shorthands, etc. Used by npm.",
       "author": "GitHub Inc.",
       "main": "lib/nopt.js",
    @@ -23,11 +23,11 @@
       },
       "license": "ISC",
       "dependencies": {
    -    "abbrev": "^3.0.0"
    +    "abbrev": "^4.0.0"
       },
       "devDependencies": {
         "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.23.6",
    +    "@npmcli/template-oss": "4.27.1",
         "tap": "^16.3.0"
       },
       "tap": {
    @@ -41,12 +41,12 @@
         "lib/"
       ],
       "engines": {
    -    "node": "^18.17.0 || >=20.5.0"
    +    "node": "^20.17.0 || >=22.9.0"
       },
       "templateOSS": {
         "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
         "windowsCI": false,
    -    "version": "4.23.6",
    +    "version": "4.27.1",
         "publish": true
       }
     }
    diff --git a/deps/npm/node_modules/npm-bundled/package.json b/deps/npm/node_modules/npm-bundled/package.json
    index c5daf35dbaa841..1fa4bdc72c593f 100644
    --- a/deps/npm/node_modules/npm-bundled/package.json
    +++ b/deps/npm/node_modules/npm-bundled/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "npm-bundled",
    -  "version": "4.0.0",
    +  "version": "5.0.0",
       "description": "list things in node_modules that are bundledDependencies, or transitive dependencies thereof",
       "main": "lib/index.js",
       "repository": {
    @@ -11,7 +11,7 @@
       "license": "ISC",
       "devDependencies": {
         "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.23.3",
    +    "@npmcli/template-oss": "4.27.1",
         "mutate-fs": "^2.1.1",
         "tap": "^16.3.0"
       },
    @@ -30,14 +30,14 @@
         "lib/"
       ],
       "dependencies": {
    -    "npm-normalize-package-bin": "^4.0.0"
    +    "npm-normalize-package-bin": "^5.0.0"
       },
       "engines": {
    -    "node": "^18.17.0 || >=20.5.0"
    +    "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.23.3",
    +    "version": "4.27.1",
         "publish": true
       },
       "tap": {
    diff --git a/deps/npm/node_modules/npm-install-checks/package.json b/deps/npm/node_modules/npm-install-checks/package.json
    index 28a23354bdbfea..aae100c2d4f3c3 100644
    --- a/deps/npm/node_modules/npm-install-checks/package.json
    +++ b/deps/npm/node_modules/npm-install-checks/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "npm-install-checks",
    -  "version": "7.1.2",
    +  "version": "8.0.0",
       "description": "Check the engines and platform fields in package.json",
       "main": "lib/index.js",
       "dependencies": {
    @@ -8,7 +8,7 @@
       },
       "devDependencies": {
         "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.25.0",
    +    "@npmcli/template-oss": "4.27.1",
         "tap": "^16.0.1"
       },
       "scripts": {
    @@ -35,12 +35,12 @@
         "lib/"
       ],
       "engines": {
    -    "node": "^18.17.0 || >=20.5.0"
    +    "node": "^20.17.0 || >=22.9.0"
       },
       "author": "GitHub Inc.",
       "templateOSS": {
         "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    -    "version": "4.25.0",
    +    "version": "4.27.1",
         "publish": "true"
       },
       "tap": {
    diff --git a/deps/npm/node_modules/npm-normalize-package-bin/package.json b/deps/npm/node_modules/npm-normalize-package-bin/package.json
    index a1aeef0e1e7512..55dc65ad5ee92f 100644
    --- a/deps/npm/node_modules/npm-normalize-package-bin/package.json
    +++ b/deps/npm/node_modules/npm-normalize-package-bin/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "npm-normalize-package-bin",
    -  "version": "4.0.0",
    +  "version": "5.0.0",
       "description": "Turn any flavor of allowable package.json bin into a normalized object",
       "main": "lib/index.js",
       "repository": {
    @@ -21,7 +21,7 @@
       },
       "devDependencies": {
         "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.23.3",
    +    "@npmcli/template-oss": "4.27.1",
         "tap": "^16.3.0"
       },
       "files": [
    @@ -29,11 +29,11 @@
         "lib/"
       ],
       "engines": {
    -    "node": "^18.17.0 || >=20.5.0"
    +    "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.23.3",
    +    "version": "4.27.1",
         "publish": "true"
       },
       "tap": {
    diff --git a/deps/npm/node_modules/npm-package-arg/lib/npa.js b/deps/npm/node_modules/npm-package-arg/lib/npa.js
    index 50121b99efbe36..a25c0a5368941f 100644
    --- a/deps/npm/node_modules/npm-package-arg/lib/npa.js
    +++ b/deps/npm/node_modules/npm-package-arg/lib/npa.js
    @@ -66,8 +66,6 @@ function isFileSpec (spec) {
       if (isWindows) {
         return isWindowsFile.test(spec)
       }
    -  // We never hit this in windows tests, obviously
    -  /* istanbul ignore next */
       return isPosixFile.test(spec)
     }
     
    diff --git a/deps/npm/node_modules/npm-package-arg/package.json b/deps/npm/node_modules/npm-package-arg/package.json
    index 2d8f91deaeed2b..2e2d027f05582a 100644
    --- a/deps/npm/node_modules/npm-package-arg/package.json
    +++ b/deps/npm/node_modules/npm-package-arg/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "npm-package-arg",
    -  "version": "13.0.1",
    +  "version": "13.0.2",
       "description": "Parse the things that can be arguments to `npm install`",
       "main": "./lib/npa.js",
       "directories": {
    @@ -12,13 +12,13 @@
       ],
       "dependencies": {
         "hosted-git-info": "^9.0.0",
    -    "proc-log": "^5.0.0",
    +    "proc-log": "^6.0.0",
         "semver": "^7.3.5",
    -    "validate-npm-package-name": "^6.0.0"
    +    "validate-npm-package-name": "^7.0.0"
       },
       "devDependencies": {
    -    "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.23.5",
    +    "@npmcli/eslint-config": "^6.0.0",
    +    "@npmcli/template-oss": "4.28.0",
         "tap": "^16.0.1"
       },
       "scripts": {
    @@ -47,7 +47,6 @@
         "node": "^20.17.0 || >=22.9.0"
       },
       "tap": {
    -    "branches": 97,
         "nyc-arg": [
           "--exclude",
           "tap-snapshots/**"
    @@ -55,7 +54,7 @@
       },
       "templateOSS": {
         "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    -    "version": "4.23.5",
    +    "version": "4.28.0",
         "publish": true
       }
     }
    diff --git a/deps/npm/node_modules/npm-packlist/package.json b/deps/npm/node_modules/npm-packlist/package.json
    index 1ca942a536dbd7..30cddb4df2e37a 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.2",
    +  "version": "10.0.3",
       "description": "Get a list of the files to add from a folder into an npm package",
       "directories": {
         "test": "test"
    @@ -8,7 +8,7 @@
       "main": "lib/index.js",
       "dependencies": {
         "ignore-walk": "^8.0.0",
    -    "proc-log": "^5.0.0"
    +    "proc-log": "^6.0.0"
       },
       "author": "GitHub Inc.",
       "license": "ISC",
    @@ -19,7 +19,7 @@
       "devDependencies": {
         "@npmcli/arborist": "^9.0.0",
         "@npmcli/eslint-config": "^5.0.1",
    -    "@npmcli/template-oss": "4.25.1",
    +    "@npmcli/template-oss": "4.27.1",
         "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.25.1",
    +    "version": "4.27.1",
         "publish": true
       }
     }
    diff --git a/deps/npm/node_modules/npm-pick-manifest/package.json b/deps/npm/node_modules/npm-pick-manifest/package.json
    index f1ca18ed321081..5cfafcfb70885f 100644
    --- a/deps/npm/node_modules/npm-pick-manifest/package.json
    +++ b/deps/npm/node_modules/npm-pick-manifest/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "npm-pick-manifest",
    -  "version": "11.0.1",
    +  "version": "11.0.3",
       "description": "Resolves a matching manifest from a package metadata document according to standard npm semver resolution rules.",
       "main": "./lib",
       "files": [
    @@ -30,14 +30,14 @@
       "author": "GitHub Inc.",
       "license": "ISC",
       "dependencies": {
    -    "npm-install-checks": "^7.1.0",
    -    "npm-normalize-package-bin": "^4.0.0",
    +    "npm-install-checks": "^8.0.0",
    +    "npm-normalize-package-bin": "^5.0.0",
         "npm-package-arg": "^13.0.0",
         "semver": "^7.3.5"
       },
       "devDependencies": {
    -    "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.25.0",
    +    "@npmcli/eslint-config": "^6.0.0",
    +    "@npmcli/template-oss": "4.27.1",
         "tap": "^16.0.1"
       },
       "tap": {
    @@ -52,7 +52,7 @@
       },
       "templateOSS": {
         "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    -    "version": "4.25.0",
    +    "version": "4.27.1",
         "publish": true
       }
     }
    diff --git a/deps/npm/node_modules/npm-profile/package.json b/deps/npm/node_modules/npm-profile/package.json
    index fb4ce118c9cf27..0f97cc1efa1934 100644
    --- a/deps/npm/node_modules/npm-profile/package.json
    +++ b/deps/npm/node_modules/npm-profile/package.json
    @@ -1,13 +1,13 @@
     {
       "name": "npm-profile",
    -  "version": "12.0.0",
    +  "version": "12.0.1",
       "description": "Library for updating an npmjs.com profile",
       "keywords": [],
       "author": "GitHub Inc.",
       "license": "ISC",
       "dependencies": {
         "npm-registry-fetch": "^19.0.0",
    -    "proc-log": "^5.0.0"
    +    "proc-log": "^6.0.0"
       },
       "main": "./lib/index.js",
       "repository": {
    @@ -20,7 +20,7 @@
       ],
       "devDependencies": {
         "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.25.0",
    +    "@npmcli/template-oss": "4.27.1",
         "nock": "^13.5.6",
         "tap": "^16.0.1"
       },
    @@ -46,7 +46,7 @@
       },
       "templateOSS": {
         "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    -    "version": "4.25.0",
    +    "version": "4.27.1",
         "publish": true
       }
     }
    diff --git a/deps/npm/node_modules/npm-registry-fetch/lib/index.js b/deps/npm/node_modules/npm-registry-fetch/lib/index.js
    index 898c8125bfe0e1..91d450f245f05b 100644
    --- a/deps/npm/node_modules/npm-registry-fetch/lib/index.js
    +++ b/deps/npm/node_modules/npm-registry-fetch/lib/index.js
    @@ -130,6 +130,7 @@ function regFetch (uri, /* istanbul ignore next */ opts_ = {}) {
           },
           strictSSL: opts.strictSSL,
           timeout: opts.timeout || 30 * 1000,
    +      signal: opts.signal,
         }).then(res => checkResponse({
           method,
           uri,
    diff --git a/deps/npm/node_modules/npm-registry-fetch/package.json b/deps/npm/node_modules/npm-registry-fetch/package.json
    index a8e954cdf3c145..6f43ed70367962 100644
    --- a/deps/npm/node_modules/npm-registry-fetch/package.json
    +++ b/deps/npm/node_modules/npm-registry-fetch/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "npm-registry-fetch",
    -  "version": "19.0.0",
    +  "version": "19.1.1",
       "description": "Fetch-based http client for use with npm registry APIs",
       "main": "lib",
       "files": [
    @@ -31,22 +31,22 @@
       "author": "GitHub Inc.",
       "license": "ISC",
       "dependencies": {
    -    "@npmcli/redact": "^3.0.0",
    +    "@npmcli/redact": "^4.0.0",
         "jsonparse": "^1.3.1",
         "make-fetch-happen": "^15.0.0",
         "minipass": "^7.0.2",
    -    "minipass-fetch": "^4.0.0",
    +    "minipass-fetch": "^5.0.0",
         "minizlib": "^3.0.1",
         "npm-package-arg": "^13.0.0",
    -    "proc-log": "^5.0.0"
    +    "proc-log": "^6.0.0"
       },
       "devDependencies": {
    -    "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.25.0",
    +    "@npmcli/eslint-config": "^6.0.0",
    +    "@npmcli/template-oss": "4.28.0",
         "cacache": "^20.0.0",
         "nock": "^13.2.4",
         "require-inject": "^1.4.4",
    -    "ssri": "^12.0.0",
    +    "ssri": "^13.0.0",
         "tap": "^16.0.1"
       },
       "tap": {
    @@ -62,7 +62,7 @@
       },
       "templateOSS": {
         "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    -    "version": "4.25.0",
    +    "version": "4.28.0",
         "publish": "true"
       }
     }
    diff --git a/deps/npm/node_modules/pacote/package.json b/deps/npm/node_modules/pacote/package.json
    index 3cc141a1047965..1837cd09ffc9ab 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.0.3",
    +  "version": "21.0.4",
       "description": "JavaScript package downloader",
       "author": "GitHub Inc.",
       "bin": {
    @@ -27,8 +27,8 @@
       },
       "devDependencies": {
         "@npmcli/arborist": "^9.0.2",
    -    "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.23.4",
    +    "@npmcli/eslint-config": "^6.0.0",
    +    "@npmcli/template-oss": "4.28.0",
         "hosted-git-info": "^9.0.0",
         "mutate-fs": "^2.1.1",
         "nock": "^13.2.4",
    @@ -47,9 +47,9 @@
       ],
       "dependencies": {
         "@npmcli/git": "^7.0.0",
    -    "@npmcli/installed-package-contents": "^3.0.0",
    +    "@npmcli/installed-package-contents": "^4.0.0",
         "@npmcli/package-json": "^7.0.0",
    -    "@npmcli/promise-spawn": "^8.0.0",
    +    "@npmcli/promise-spawn": "^9.0.0",
         "@npmcli/run-script": "^10.0.0",
         "cacache": "^20.0.0",
         "fs-minipass": "^3.0.0",
    @@ -58,10 +58,10 @@
         "npm-packlist": "^10.0.1",
         "npm-pick-manifest": "^11.0.1",
         "npm-registry-fetch": "^19.0.0",
    -    "proc-log": "^5.0.0",
    +    "proc-log": "^6.0.0",
         "promise-retry": "^2.0.1",
         "sigstore": "^4.0.0",
    -    "ssri": "^12.0.0",
    +    "ssri": "^13.0.0",
         "tar": "^7.4.3"
       },
       "engines": {
    @@ -73,7 +73,7 @@
       },
       "templateOSS": {
         "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    -    "version": "4.23.4",
    +    "version": "4.28.0",
         "windowsCI": false,
         "publish": "true"
       }
    diff --git a/deps/npm/node_modules/parse-conflict-json/package.json b/deps/npm/node_modules/parse-conflict-json/package.json
    index 824ca8ed2bd145..1d4bc1021695a3 100644
    --- a/deps/npm/node_modules/parse-conflict-json/package.json
    +++ b/deps/npm/node_modules/parse-conflict-json/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "parse-conflict-json",
    -  "version": "4.0.0",
    +  "version": "5.0.1",
       "description": "Parse a JSON string that has git merge conflicts, resolving if possible",
       "author": "GitHub Inc.",
       "license": "ISC",
    @@ -24,11 +24,11 @@
       },
       "devDependencies": {
         "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.23.3",
    +    "@npmcli/template-oss": "4.27.1",
         "tap": "^16.0.1"
       },
       "dependencies": {
    -    "json-parse-even-better-errors": "^4.0.0",
    +    "json-parse-even-better-errors": "^5.0.0",
         "just-diff": "^6.0.0",
         "just-diff-apply": "^5.2.0"
       },
    @@ -41,11 +41,11 @@
         "lib/"
       ],
       "engines": {
    -    "node": "^18.17.0 || >=20.5.0"
    +    "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.23.3",
    +    "version": "4.27.1",
         "publish": true
       }
     }
    diff --git a/deps/npm/node_modules/proc-log/package.json b/deps/npm/node_modules/proc-log/package.json
    index 957209d3954e53..afa07dfd9b30d5 100644
    --- a/deps/npm/node_modules/proc-log/package.json
    +++ b/deps/npm/node_modules/proc-log/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "proc-log",
    -  "version": "5.0.0",
    +  "version": "6.0.0",
       "files": [
         "bin/",
         "lib/"
    @@ -26,15 +26,15 @@
       },
       "devDependencies": {
         "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.23.3",
    +    "@npmcli/template-oss": "4.27.1",
         "tap": "^16.0.1"
       },
       "engines": {
    -    "node": "^18.17.0 || >=20.5.0"
    +    "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.23.3",
    +    "version": "4.27.1",
         "publish": true
       },
       "tap": {
    diff --git a/deps/npm/node_modules/read-cmd-shim/package.json b/deps/npm/node_modules/read-cmd-shim/package.json
    index 3b16802df3ce21..d3ebc40e311bb7 100644
    --- a/deps/npm/node_modules/read-cmd-shim/package.json
    +++ b/deps/npm/node_modules/read-cmd-shim/package.json
    @@ -1,11 +1,11 @@
     {
       "name": "read-cmd-shim",
    -  "version": "5.0.0",
    +  "version": "6.0.0",
       "description": "Figure out what a cmd-shim is pointing at. This acts as the equivalent of fs.readlink.",
       "main": "lib/index.js",
       "devDependencies": {
         "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.23.3",
    +    "@npmcli/template-oss": "4.27.1",
         "cmd-shim": "^7.0.0",
         "tap": "^16.0.1"
       },
    @@ -38,11 +38,11 @@
       ],
       "author": "GitHub Inc.",
       "engines": {
    -    "node": "^18.17.0 || >=20.5.0"
    +    "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.23.3",
    +    "version": "4.27.1",
         "publish": true
       }
     }
    diff --git a/deps/npm/node_modules/ssri/lib/index.js b/deps/npm/node_modules/ssri/lib/index.js
    index 7d749ed480fb98..9acc4322612483 100644
    --- a/deps/npm/node_modules/ssri/lib/index.js
    +++ b/deps/npm/node_modules/ssri/lib/index.js
    @@ -9,7 +9,7 @@ const DEFAULT_ALGORITHMS = ['sha512']
     // 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 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]+$/
     
    diff --git a/deps/npm/node_modules/ssri/package.json b/deps/npm/node_modules/ssri/package.json
    index 83306cd044ec3c..8781bdf5f80c01 100644
    --- a/deps/npm/node_modules/ssri/package.json
    +++ b/deps/npm/node_modules/ssri/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "ssri",
    -  "version": "12.0.0",
    +  "version": "13.0.0",
       "description": "Standard Subresource Integrity library -- parses, serializes, generates, and verifies integrity metadata according to the SRI spec.",
       "main": "lib/index.js",
       "files": [
    @@ -52,15 +52,15 @@
       },
       "devDependencies": {
         "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.23.3",
    +    "@npmcli/template-oss": "4.27.1",
         "tap": "^16.0.1"
       },
       "engines": {
    -    "node": "^18.17.0 || >=20.5.0"
    +    "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.23.3",
    +    "version": "4.27.1",
         "publish": "true"
       }
     }
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-scurry/LICENSE.md b/deps/npm/node_modules/tar/LICENSE.md
    similarity index 100%
    rename from deps/npm/node_modules/node-gyp/node_modules/path-scurry/LICENSE.md
    rename to deps/npm/node_modules/tar/LICENSE.md
    diff --git a/deps/npm/node_modules/tar/dist/commonjs/header.js b/deps/npm/node_modules/tar/dist/commonjs/header.js
    index b3a48037b849ab..09d8a3dfa80daf 100644
    --- a/deps/npm/node_modules/tar/dist/commonjs/header.js
    +++ b/deps/npm/node_modules/tar/dist/commonjs/header.js
    @@ -68,12 +68,13 @@ class Header {
             if (!buf || !(buf.length >= off + 512)) {
                 throw new Error('need 512 bytes for header');
             }
    -        this.path = decString(buf, off, 100);
    -        this.mode = decNumber(buf, off + 100, 8);
    -        this.uid = decNumber(buf, off + 108, 8);
    -        this.gid = decNumber(buf, off + 116, 8);
    -        this.size = decNumber(buf, off + 124, 12);
    -        this.mtime = decDate(buf, off + 136, 12);
    +        this.path = ex?.path ?? decString(buf, off, 100);
    +        this.mode = ex?.mode ?? gex?.mode ?? decNumber(buf, off + 100, 8);
    +        this.uid = ex?.uid ?? gex?.uid ?? decNumber(buf, off + 108, 8);
    +        this.gid = ex?.gid ?? gex?.gid ?? decNumber(buf, off + 116, 8);
    +        this.size = ex?.size ?? gex?.size ?? decNumber(buf, off + 124, 12);
    +        this.mtime =
    +            ex?.mtime ?? gex?.mtime ?? decDate(buf, off + 136, 12);
             this.cksum = decNumber(buf, off + 148, 12);
             // if we have extended or global extended headers, apply them now
             // See https://github.com/npm/node-tar/pull/187
    @@ -101,11 +102,15 @@ class Header {
             this.linkpath = decString(buf, off + 157, 100);
             if (buf.subarray(off + 257, off + 265).toString() ===
                 'ustar\u000000') {
    -            this.uname = decString(buf, off + 265, 32);
    -            this.gname = decString(buf, off + 297, 32);
                 /* c8 ignore start */
    -            this.devmaj = decNumber(buf, off + 329, 8) ?? 0;
    -            this.devmin = decNumber(buf, off + 337, 8) ?? 0;
    +            this.uname =
    +                ex?.uname ?? gex?.uname ?? decString(buf, off + 265, 32);
    +            this.gname =
    +                ex?.gname ?? gex?.gname ?? decString(buf, off + 297, 32);
    +            this.devmaj =
    +                ex?.devmaj ?? gex?.devmaj ?? decNumber(buf, off + 329, 8) ?? 0;
    +            this.devmin =
    +                ex?.devmin ?? gex?.devmin ?? decNumber(buf, off + 337, 8) ?? 0;
                 /* c8 ignore stop */
                 if (buf[off + 475] !== 0) {
                     // definitely a prefix, definitely >130 chars.
    @@ -117,8 +122,12 @@ class Header {
                     if (prefix) {
                         this.path = prefix + '/' + this.path;
                     }
    -                this.atime = decDate(buf, off + 476, 12);
    -                this.ctime = decDate(buf, off + 488, 12);
    +                /* c8 ignore start */
    +                this.atime =
    +                    ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12);
    +                this.ctime =
    +                    ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12);
    +                /* c8 ignore stop */
                 }
             }
             let sum = 8 * 0x20;
    diff --git a/deps/npm/node_modules/tar/dist/commonjs/list.js b/deps/npm/node_modules/tar/dist/commonjs/list.js
    index 3bc56453f5ed6c..5efad803a4cf5a 100644
    --- a/deps/npm/node_modules/tar/dist/commonjs/list.js
    +++ b/deps/npm/node_modules/tar/dist/commonjs/list.js
    @@ -82,14 +82,16 @@ const listFileSync = (opt) => {
             const readSize = opt.maxReadSize || 16 * 1024 * 1024;
             if (stat.size < readSize) {
                 const buf = Buffer.allocUnsafe(stat.size);
    -            node_fs_1.default.readSync(fd, buf, 0, stat.size, 0);
    -            p.end(buf);
    +            const read = node_fs_1.default.readSync(fd, buf, 0, stat.size, 0);
    +            p.end(read === buf.byteLength ? buf : buf.subarray(0, read));
             }
             else {
                 let pos = 0;
                 const buf = Buffer.allocUnsafe(readSize);
                 while (pos < stat.size) {
                     const bytesRead = node_fs_1.default.readSync(fd, buf, 0, readSize, pos);
    +                if (bytesRead === 0)
    +                    break;
                     pos += bytesRead;
                     p.write(buf.subarray(0, bytesRead));
                 }
    diff --git a/deps/npm/node_modules/tar/dist/commonjs/pack.js b/deps/npm/node_modules/tar/dist/commonjs/pack.js
    index 07e921ca959bf5..237f368e5d2256 100644
    --- a/deps/npm/node_modules/tar/dist/commonjs/pack.js
    +++ b/deps/npm/node_modules/tar/dist/commonjs/pack.js
    @@ -135,7 +135,10 @@ class Pack extends minipass_1.Minipass {
             }
             this.portable = !!opt.portable;
             if (opt.gzip || opt.brotli || opt.zstd) {
    -            if ((opt.gzip ? 1 : 0) + (opt.brotli ? 1 : 0) + (opt.zstd ? 1 : 0) > 1) {
    +            if ((opt.gzip ? 1 : 0) +
    +                (opt.brotli ? 1 : 0) +
    +                (opt.zstd ? 1 : 0) >
    +                1) {
                     throw new TypeError('gzip, brotli, zstd are mutually exclusive');
                 }
                 if (opt.gzip) {
    diff --git a/deps/npm/node_modules/tar/dist/commonjs/parse.js b/deps/npm/node_modules/tar/dist/commonjs/parse.js
    index 372a917fc0e912..ef88ab35095270 100644
    --- a/deps/npm/node_modules/tar/dist/commonjs/parse.js
    +++ b/deps/npm/node_modules/tar/dist/commonjs/parse.js
    @@ -449,10 +449,8 @@ class Parser extends events_1.EventEmitter {
                     const ended = this[ENDED];
                     this[ENDED] = false;
                     this[UNZIP] =
    -                    this[UNZIP] === undefined ?
    -                        new minizlib_1.Unzip({})
    -                        : isZstd ?
    -                            new minizlib_1.ZstdDecompress({})
    +                    this[UNZIP] === undefined ? new minizlib_1.Unzip({})
    +                        : isZstd ? new minizlib_1.ZstdDecompress({})
                                 : new minizlib_1.BrotliDecompress({});
                     this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk));
                     this[UNZIP].on('error', er => this.abort(er));
    diff --git a/deps/npm/node_modules/tar/dist/esm/header.js b/deps/npm/node_modules/tar/dist/esm/header.js
    index e15192b14b16e1..66db54527d838a 100644
    --- a/deps/npm/node_modules/tar/dist/esm/header.js
    +++ b/deps/npm/node_modules/tar/dist/esm/header.js
    @@ -42,12 +42,13 @@ export class Header {
             if (!buf || !(buf.length >= off + 512)) {
                 throw new Error('need 512 bytes for header');
             }
    -        this.path = decString(buf, off, 100);
    -        this.mode = decNumber(buf, off + 100, 8);
    -        this.uid = decNumber(buf, off + 108, 8);
    -        this.gid = decNumber(buf, off + 116, 8);
    -        this.size = decNumber(buf, off + 124, 12);
    -        this.mtime = decDate(buf, off + 136, 12);
    +        this.path = ex?.path ?? decString(buf, off, 100);
    +        this.mode = ex?.mode ?? gex?.mode ?? decNumber(buf, off + 100, 8);
    +        this.uid = ex?.uid ?? gex?.uid ?? decNumber(buf, off + 108, 8);
    +        this.gid = ex?.gid ?? gex?.gid ?? decNumber(buf, off + 116, 8);
    +        this.size = ex?.size ?? gex?.size ?? decNumber(buf, off + 124, 12);
    +        this.mtime =
    +            ex?.mtime ?? gex?.mtime ?? decDate(buf, off + 136, 12);
             this.cksum = decNumber(buf, off + 148, 12);
             // if we have extended or global extended headers, apply them now
             // See https://github.com/npm/node-tar/pull/187
    @@ -75,11 +76,15 @@ export class Header {
             this.linkpath = decString(buf, off + 157, 100);
             if (buf.subarray(off + 257, off + 265).toString() ===
                 'ustar\u000000') {
    -            this.uname = decString(buf, off + 265, 32);
    -            this.gname = decString(buf, off + 297, 32);
                 /* c8 ignore start */
    -            this.devmaj = decNumber(buf, off + 329, 8) ?? 0;
    -            this.devmin = decNumber(buf, off + 337, 8) ?? 0;
    +            this.uname =
    +                ex?.uname ?? gex?.uname ?? decString(buf, off + 265, 32);
    +            this.gname =
    +                ex?.gname ?? gex?.gname ?? decString(buf, off + 297, 32);
    +            this.devmaj =
    +                ex?.devmaj ?? gex?.devmaj ?? decNumber(buf, off + 329, 8) ?? 0;
    +            this.devmin =
    +                ex?.devmin ?? gex?.devmin ?? decNumber(buf, off + 337, 8) ?? 0;
                 /* c8 ignore stop */
                 if (buf[off + 475] !== 0) {
                     // definitely a prefix, definitely >130 chars.
    @@ -91,8 +96,12 @@ export class Header {
                     if (prefix) {
                         this.path = prefix + '/' + this.path;
                     }
    -                this.atime = decDate(buf, off + 476, 12);
    -                this.ctime = decDate(buf, off + 488, 12);
    +                /* c8 ignore start */
    +                this.atime =
    +                    ex?.atime ?? gex?.atime ?? decDate(buf, off + 476, 12);
    +                this.ctime =
    +                    ex?.ctime ?? gex?.ctime ?? decDate(buf, off + 488, 12);
    +                /* c8 ignore stop */
                 }
             }
             let sum = 8 * 0x20;
    diff --git a/deps/npm/node_modules/tar/dist/esm/list.js b/deps/npm/node_modules/tar/dist/esm/list.js
    index 489ece51b9fa30..a63a8841769a33 100644
    --- a/deps/npm/node_modules/tar/dist/esm/list.js
    +++ b/deps/npm/node_modules/tar/dist/esm/list.js
    @@ -52,14 +52,16 @@ const listFileSync = (opt) => {
             const readSize = opt.maxReadSize || 16 * 1024 * 1024;
             if (stat.size < readSize) {
                 const buf = Buffer.allocUnsafe(stat.size);
    -            fs.readSync(fd, buf, 0, stat.size, 0);
    -            p.end(buf);
    +            const read = fs.readSync(fd, buf, 0, stat.size, 0);
    +            p.end(read === buf.byteLength ? buf : buf.subarray(0, read));
             }
             else {
                 let pos = 0;
                 const buf = Buffer.allocUnsafe(readSize);
                 while (pos < stat.size) {
                     const bytesRead = fs.readSync(fd, buf, 0, readSize, pos);
    +                if (bytesRead === 0)
    +                    break;
                     pos += bytesRead;
                     p.write(buf.subarray(0, bytesRead));
                 }
    diff --git a/deps/npm/node_modules/tar/dist/esm/pack.js b/deps/npm/node_modules/tar/dist/esm/pack.js
    index 14661783455d5a..36dc28f8077d44 100644
    --- a/deps/npm/node_modules/tar/dist/esm/pack.js
    +++ b/deps/npm/node_modules/tar/dist/esm/pack.js
    @@ -105,7 +105,10 @@ export class Pack extends Minipass {
             }
             this.portable = !!opt.portable;
             if (opt.gzip || opt.brotli || opt.zstd) {
    -            if ((opt.gzip ? 1 : 0) + (opt.brotli ? 1 : 0) + (opt.zstd ? 1 : 0) > 1) {
    +            if ((opt.gzip ? 1 : 0) +
    +                (opt.brotli ? 1 : 0) +
    +                (opt.zstd ? 1 : 0) >
    +                1) {
                     throw new TypeError('gzip, brotli, zstd are mutually exclusive');
                 }
                 if (opt.gzip) {
    diff --git a/deps/npm/node_modules/tar/dist/esm/parse.js b/deps/npm/node_modules/tar/dist/esm/parse.js
    index a4e94433b09045..da52cd852731b9 100644
    --- a/deps/npm/node_modules/tar/dist/esm/parse.js
    +++ b/deps/npm/node_modules/tar/dist/esm/parse.js
    @@ -446,10 +446,8 @@ export class Parser extends EE {
                     const ended = this[ENDED];
                     this[ENDED] = false;
                     this[UNZIP] =
    -                    this[UNZIP] === undefined ?
    -                        new Unzip({})
    -                        : isZstd ?
    -                            new ZstdDecompress({})
    +                    this[UNZIP] === undefined ? new Unzip({})
    +                        : isZstd ? new ZstdDecompress({})
                                 : new BrotliDecompress({});
                     this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk));
                     this[UNZIP].on('error', er => this.abort(er));
    diff --git a/deps/npm/node_modules/tar/package.json b/deps/npm/node_modules/tar/package.json
    index be0f1e8fd8000f..27368e26b25531 100644
    --- a/deps/npm/node_modules/tar/package.json
    +++ b/deps/npm/node_modules/tar/package.json
    @@ -2,7 +2,7 @@
       "author": "Isaac Z. Schlueter",
       "name": "tar",
       "description": "tar for node",
    -  "version": "7.5.1",
    +  "version": "7.5.2",
       "repository": {
         "type": "git",
         "url": "https://github.com/isaacs/node-tar.git"
    @@ -40,7 +40,7 @@
         "tshy": "^1.13.1",
         "typedoc": "^0.25.13"
       },
    -  "license": "ISC",
    +  "license": "BlueOak-1.0.0",
       "engines": {
         "node": ">=18"
       },
    diff --git a/deps/npm/node_modules/validate-npm-package-name/package.json b/deps/npm/node_modules/validate-npm-package-name/package.json
    index e5162f847fe538..87204aaf663982 100644
    --- a/deps/npm/node_modules/validate-npm-package-name/package.json
    +++ b/deps/npm/node_modules/validate-npm-package-name/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "validate-npm-package-name",
    -  "version": "6.0.2",
    +  "version": "7.0.0",
       "description": "Give me a string and I'll tell you if it's a valid npm package name",
       "main": "lib/",
       "directories": {
    @@ -8,7 +8,7 @@
       },
       "devDependencies": {
         "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.25.0",
    +    "@npmcli/template-oss": "4.27.1",
         "tap": "^16.0.1"
       },
       "scripts": {
    @@ -45,11 +45,11 @@
         "lib/"
       ],
       "engines": {
    -    "node": "^18.17.0 || >=20.5.0"
    +    "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.0",
    +    "version": "4.27.1",
         "publish": true
       },
       "tap": {
    diff --git a/deps/npm/node_modules/which/package.json b/deps/npm/node_modules/which/package.json
    index 94184233c61c4c..915dc4bd27c3a1 100644
    --- a/deps/npm/node_modules/which/package.json
    +++ b/deps/npm/node_modules/which/package.json
    @@ -2,7 +2,7 @@
       "author": "GitHub Inc.",
       "name": "which",
       "description": "Like which(1) unix command. Find the first instance of an executable in the PATH.",
    -  "version": "5.0.0",
    +  "version": "6.0.0",
       "repository": {
         "type": "git",
         "url": "git+https://github.com/npm/node-which.git"
    @@ -17,7 +17,7 @@
       },
       "devDependencies": {
         "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.23.3",
    +    "@npmcli/template-oss": "4.27.1",
         "tap": "^16.3.0"
       },
       "scripts": {
    @@ -42,11 +42,11 @@
         ]
       },
       "engines": {
    -    "node": "^18.17.0 || >=20.5.0"
    +    "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.23.3",
    +    "version": "4.27.1",
         "publish": "true"
       }
     }
    diff --git a/deps/npm/node_modules/write-file-atomic/package.json b/deps/npm/node_modules/write-file-atomic/package.json
    index 1e88b5b889ec95..c72d839f0e6611 100644
    --- a/deps/npm/node_modules/write-file-atomic/package.json
    +++ b/deps/npm/node_modules/write-file-atomic/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "write-file-atomic",
    -  "version": "6.0.0",
    +  "version": "7.0.0",
       "description": "Write files in an atomic fashion w/configurable ownership",
       "main": "./lib/index.js",
       "scripts": {
    @@ -33,7 +33,7 @@
       },
       "devDependencies": {
         "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.23.3",
    +    "@npmcli/template-oss": "4.27.1",
         "tap": "^16.0.1"
       },
       "files": [
    @@ -41,12 +41,12 @@
         "lib/"
       ],
       "engines": {
    -    "node": "^18.17.0 || >=20.5.0"
    +    "node": "^20.17.0 || >=22.9.0"
       },
       "templateOSS": {
         "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
         "windowsCI": false,
    -    "version": "4.23.3",
    +    "version": "4.27.1",
         "publish": "true"
       },
       "tap": {
    diff --git a/deps/npm/package.json b/deps/npm/package.json
    index ba3441726b01cb..5f0d88f4582ad1 100644
    --- a/deps/npm/package.json
    +++ b/deps/npm/package.json
    @@ -1,5 +1,5 @@
     {
    -  "version": "11.6.2",
    +  "version": "11.6.3",
       "name": "npm",
       "description": "a package manager for JavaScript",
       "workspaces": [
    @@ -52,18 +52,19 @@
       },
       "dependencies": {
         "@isaacs/string-locale-compare": "^1.1.0",
    -    "@npmcli/arborist": "^9.1.6",
    -    "@npmcli/config": "^10.4.2",
    +    "@npmcli/arborist": "^9.1.7",
    +    "@npmcli/config": "^10.4.3",
         "@npmcli/fs": "^4.0.0",
    -    "@npmcli/map-workspaces": "^5.0.0",
    -    "@npmcli/package-json": "^7.0.1",
    -    "@npmcli/promise-spawn": "^8.0.3",
    -    "@npmcli/redact": "^3.2.2",
    -    "@npmcli/run-script": "^10.0.0",
    +    "@npmcli/map-workspaces": "^5.0.1",
    +    "@npmcli/metavuln-calculator": "^9.0.3",
    +    "@npmcli/package-json": "^7.0.2",
    +    "@npmcli/promise-spawn": "^9.0.1",
    +    "@npmcli/redact": "^4.0.0",
    +    "@npmcli/run-script": "^10.0.3",
         "@sigstore/tuf": "^4.0.0",
    -    "abbrev": "^3.0.1",
    +    "abbrev": "^4.0.0",
         "archy": "~1.0.0",
    -    "cacache": "^20.0.1",
    +    "cacache": "^20.0.2",
         "chalk": "^5.6.2",
         "ci-info": "^4.3.1",
         "cli-columns": "^4.0.0",
    @@ -72,50 +73,50 @@
         "glob": "^11.0.3",
         "graceful-fs": "^4.2.11",
         "hosted-git-info": "^9.0.2",
    -    "ini": "^5.0.0",
    -    "init-package-json": "^8.2.2",
    +    "ini": "^6.0.0",
    +    "init-package-json": "^8.2.3",
         "is-cidr": "^6.0.1",
    -    "json-parse-even-better-errors": "^4.0.0",
    +    "json-parse-even-better-errors": "^5.0.0",
         "libnpmaccess": "^10.0.3",
    -    "libnpmdiff": "^8.0.9",
    -    "libnpmexec": "^10.1.8",
    -    "libnpmfund": "^7.0.9",
    +    "libnpmdiff": "^8.0.10",
    +    "libnpmexec": "^10.1.9",
    +    "libnpmfund": "^7.0.10",
         "libnpmorg": "^8.0.1",
    -    "libnpmpack": "^9.0.9",
    -    "libnpmpublish": "^11.1.2",
    +    "libnpmpack": "^9.0.10",
    +    "libnpmpublish": "^11.1.3",
         "libnpmsearch": "^9.0.1",
         "libnpmteam": "^8.0.2",
    -    "libnpmversion": "^8.0.2",
    -    "make-fetch-happen": "^15.0.2",
    -    "minimatch": "^10.0.3",
    +    "libnpmversion": "^8.0.3",
    +    "make-fetch-happen": "^15.0.3",
    +    "minimatch": "^10.1.1",
         "minipass": "^7.1.1",
         "minipass-pipeline": "^1.2.4",
         "ms": "^2.1.2",
    -    "node-gyp": "^11.4.2",
    -    "nopt": "^8.1.0",
    +    "node-gyp": "^12.1.0",
    +    "nopt": "^9.0.0",
         "npm-audit-report": "^6.0.0",
    -    "npm-install-checks": "^7.1.2",
    -    "npm-package-arg": "^13.0.1",
    -    "npm-pick-manifest": "^11.0.1",
    -    "npm-profile": "^12.0.0",
    -    "npm-registry-fetch": "^19.0.0",
    +    "npm-install-checks": "^8.0.0",
    +    "npm-package-arg": "^13.0.2",
    +    "npm-pick-manifest": "^11.0.3",
    +    "npm-profile": "^12.0.1",
    +    "npm-registry-fetch": "^19.1.1",
         "npm-user-validate": "^3.0.0",
         "p-map": "^7.0.3",
    -    "pacote": "^21.0.3",
    -    "parse-conflict-json": "^4.0.0",
    -    "proc-log": "^5.0.0",
    +    "pacote": "^21.0.4",
    +    "parse-conflict-json": "^5.0.1",
    +    "proc-log": "^6.0.0",
         "qrcode-terminal": "^0.12.0",
         "read": "^4.1.0",
         "semver": "^7.7.3",
         "spdx-expression-parse": "^4.0.0",
    -    "ssri": "^12.0.0",
    +    "ssri": "^13.0.0",
         "supports-color": "^10.2.2",
    -    "tar": "^7.5.1",
    +    "tar": "^7.5.2",
         "text-table": "~0.2.0",
         "tiny-relative-date": "^2.0.2",
         "treeverse": "^3.0.0",
    -    "validate-npm-package-name": "^6.0.2",
    -    "which": "^5.0.0"
    +    "validate-npm-package-name": "^7.0.0",
    +    "which": "^6.0.0"
       },
       "bundleDependencies": [
         "@isaacs/string-locale-compare",
    @@ -123,6 +124,7 @@
         "@npmcli/config",
         "@npmcli/fs",
         "@npmcli/map-workspaces",
    +    "@npmcli/metavuln-calculator",
         "@npmcli/package-json",
         "@npmcli/promise-spawn",
         "@npmcli/redact",
    @@ -187,7 +189,7 @@
       "devDependencies": {
         "@npmcli/docs": "^1.0.0",
         "@npmcli/eslint-config": "^5.1.0",
    -    "@npmcli/git": "^7.0.0",
    +    "@npmcli/git": "^7.0.1",
         "@npmcli/mock-globals": "^1.0.0",
         "@npmcli/mock-registry": "^1.0.0",
         "@npmcli/template-oss": "4.25.1",
    @@ -198,7 +200,7 @@
         "cli-table3": "^0.6.4",
         "diff": "^8.0.2",
         "nock": "^13.4.0",
    -    "npm-packlist": "^10.0.2",
    +    "npm-packlist": "^10.0.3",
         "remark": "^15.0.1",
         "remark-gfm": "^4.0.1",
         "remark-github": "^12.0.0",
    diff --git a/deps/npm/tap-snapshots/test/lib/commands/config.js.test.cjs b/deps/npm/tap-snapshots/test/lib/commands/config.js.test.cjs
    index bc0f406166a9fe..ca6bf25c81fb01 100644
    --- a/deps/npm/tap-snapshots/test/lib/commands/config.js.test.cjs
    +++ b/deps/npm/tap-snapshots/test/lib/commands/config.js.test.cjs
    @@ -23,6 +23,7 @@ exports[`test/lib/commands/config.js TAP config list --json > output matches sna
       "before": null,
       "bin-links": true,
       "browser": null,
    +  "bypass-2fa": false,
       "ca": null,
       "cache-max": null,
       "cache-min": 0,
    @@ -48,6 +49,7 @@ exports[`test/lib/commands/config.js TAP config list --json > output matches sna
       "engine-strict": false,
       "expect-result-count": null,
       "expect-results": null,
    +  "expires": null,
       "fetch-retries": 2,
       "fetch-retry-factor": 10,
       "fetch-retry-maxtimeout": 60000,
    @@ -97,6 +99,7 @@ exports[`test/lib/commands/config.js TAP config list --json > output matches sna
       "logs-dir": null,
       "logs-max": 10,
       "long": false,
    +  "name": null,
       "maxsockets": 15,
       "message": "%s",
       "node-gyp": "{CWD}/node_modules/node-gyp/bin/node-gyp.js",
    @@ -108,6 +111,7 @@ exports[`test/lib/commands/config.js TAP config list --json > output matches sna
       "omit": [],
       "omit-lockfile-registry-resolved": false,
       "only": null,
    +  "orgs": null,
       "optional": null,
       "os": null,
       "otp": null,
    @@ -115,6 +119,7 @@ exports[`test/lib/commands/config.js TAP config list --json > output matches sna
       "package-lock": true,
       "package-lock-only": false,
       "pack-destination": ".",
    +  "packages": [],
       "parseable": false,
       "prefer-dedupe": false,
       "prefer-offline": false,
    @@ -141,6 +146,11 @@ exports[`test/lib/commands/config.js TAP config list --json > output matches sna
       "sbom-format": null,
       "sbom-type": "library",
       "scope": "",
    +  "scopes": null,
    +  "packages-all": false,
    +  "packages-and-scopes-permission": null,
    +  "orgs-permission": null,
    +  "token-description": null,
       "script-shell": null,
       "searchexclude": "",
       "searchlimit": 20,
    @@ -187,6 +197,7 @@ auth-type = "web"
     before = null
     bin-links = true
     browser = null
    +bypass-2fa = false
     ca = null
     ; cache = "{CACHE}" ; overridden by cli
     cache-max = null
    @@ -214,6 +225,7 @@ editor = "{EDITOR}"
     engine-strict = false
     expect-result-count = null
     expect-results = null
    +expires = null
     fetch-retries = 2
     fetch-retry-factor = 10
     fetch-retry-maxtimeout = 60000
    @@ -266,6 +278,7 @@ logs-max = 10
     ; long = false ; overridden by cli
     maxsockets = 15
     message = "%s"
    +name = null
     node-gyp = "{CWD}/node_modules/node-gyp/bin/node-gyp.js"
     node-options = null
     noproxy = [""]
    @@ -275,13 +288,19 @@ omit = []
     omit-lockfile-registry-resolved = false
     only = null
     optional = null
    +orgs = null
    +orgs-permission = null
     os = null
     otp = null
     pack-destination = "."
     package = []
     package-lock = true
     package-lock-only = false
    +packages = []
    +packages-all = false
    +packages-and-scopes-permission = null
     parseable = false
    +password = (protected)
     prefer-dedupe = false
     prefer-offline = false
     prefer-online = false
    @@ -307,6 +326,7 @@ save-prod = false
     sbom-format = null
     sbom-type = "library"
     scope = ""
    +scopes = null
     script-shell = null
     searchexclude = ""
     searchlimit = 20
    @@ -321,6 +341,7 @@ strict-ssl = true
     tag = "latest"
     tag-version-prefix = "v"
     timing = false
    +token-description = null
     umask = 0
     unicode = false
     update-notifier = true
    diff --git a/deps/npm/tap-snapshots/test/lib/commands/ls.js.test.cjs b/deps/npm/tap-snapshots/test/lib/commands/ls.js.test.cjs
    index 175d85f9c07eec..7381a4d2f2f0bb 100644
    --- a/deps/npm/tap-snapshots/test/lib/commands/ls.js.test.cjs
    +++ b/deps/npm/tap-snapshots/test/lib/commands/ls.js.test.cjs
    @@ -9,7 +9,9 @@ exports[`test/lib/commands/ls.js TAP ignore missing optional deps --json > ls --
     Array [
       "invalid: optional-wrong@3.2.1 {CWD}/prefix/node_modules/optional-wrong",
       "missing: peer-missing@1, required by test-npm-ls-ignore-missing-optional@1.2.3",
    +  "extraneous: peer-optional-ok@1.2.3 {CWD}/prefix/node_modules/peer-optional-ok",
       "invalid: peer-optional-wrong@3.2.1 {CWD}/prefix/node_modules/peer-optional-wrong",
    +  "extraneous: peer-optional-wrong@3.2.1 {CWD}/prefix/node_modules/peer-optional-wrong",
       "invalid: peer-wrong@3.2.1 {CWD}/prefix/node_modules/peer-wrong",
       "missing: prod-missing@1, required by test-npm-ls-ignore-missing-optional@1.2.3",
       "invalid: prod-wrong@3.2.1 {CWD}/prefix/node_modules/prod-wrong",
    @@ -36,8 +38,8 @@ test-npm-ls-ignore-missing-optional@1.2.3 {CWD}/prefix
     +-- UNMET DEPENDENCY peer-missing@1
     +-- peer-ok@1.2.3
     +-- UNMET OPTIONAL DEPENDENCY peer-optional-missing@1
    -+-- peer-optional-ok@1.2.3
    -+-- peer-optional-wrong@3.2.1 invalid: "1" from the root project
    ++-- peer-optional-ok@1.2.3 extraneous
    ++-- peer-optional-wrong@3.2.1 invalid: "1" from the root project extraneous
     +-- peer-wrong@3.2.1 invalid: "1" from the root project
     +-- UNMET DEPENDENCY prod-missing@1
     +-- prod-ok@1.2.3
    diff --git a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs
    index 5aa26c15fe95e3..61f87de74e4015 100644
    --- a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs
    +++ b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs
    @@ -302,6 +302,17 @@ Set to \`true\` to use default system URL opener.
     
     
     
    +#### \`bypass-2fa\`
    +
    +* Default: false
    +* Type: Boolean
    +
    +When creating a Granular Access Token with \`npm token create\`, setting this
    +to true will allow the token to bypass two-factor authentication. This is
    +useful for automation and CI/CD workflows.
    +
    +
    +
     #### \`ca\`
     
     * Default: null
    @@ -556,6 +567,17 @@ true (expect some results) or false (expect no results).
     
     This config cannot be used with: \`expect-result-count\`
     
    +#### \`expires\`
    +
    +* Default: null
    +* Type: null or Number
    +
    +When creating a Granular Access Token with \`npm token create\`, this sets the
    +expiration in days. If not specified, the server will determine the default
    +expiration.
    +
    +
    +
     #### \`fetch-retries\`
     
     * Default: 2
    @@ -1081,6 +1103,16 @@ Any "%s" in the message will be replaced with the version number.
     
     
     
    +#### \`name\`
    +
    +* Default: null
    +* Type: null or String
    +
    +When creating a Granular Access Token with \`npm token create\`, this sets the
    +name/description for the token.
    +
    +
    +
     #### \`node-gyp\`
     
     * Default: The path to the node-gyp bin that ships with npm
    @@ -1158,6 +1190,28 @@ time.
     
     
     
    +#### \`orgs\`
    +
    +* Default: null
    +* Type: null or String (can be set multiple times)
    +
    +When creating a Granular Access Token with \`npm token create\`, this limits
    +the token access to specific organizations. Provide a comma-separated list
    +of organization names.
    +
    +
    +
    +#### \`orgs-permission\`
    +
    +* Default: null
    +* Type: null, "read-only", "read-write", or "no-access"
    +
    +When creating a Granular Access Token with \`npm token create\`, sets the
    +permission level for organizations. Options are "read-only", "read-write",
    +or "no-access".
    +
    +
    +
     #### \`os\`
     
     * Default: null
    @@ -1225,6 +1279,38 @@ For \`list\` this means the output will be based on the tree described by the
     
     
     
    +#### \`packages\`
    +
    +* Default:
    +* Type: null or String (can be set multiple times)
    +
    +When creating a Granular Access Token with \`npm token create\`, this limits
    +the token access to specific packages. Provide a comma-separated list of
    +package names.
    +
    +
    +
    +#### \`packages-all\`
    +
    +* Default: false
    +* Type: Boolean
    +
    +When creating a Granular Access Token with \`npm token create\`, grants the
    +token access to all packages instead of limiting to specific packages.
    +
    +
    +
    +#### \`packages-and-scopes-permission\`
    +
    +* Default: null
    +* Type: null, "read-only", "read-write", or "no-access"
    +
    +When creating a Granular Access Token with \`npm token create\`, sets the
    +permission level for packages and scopes. Options are "read-only",
    +"read-write", or "no-access".
    +
    +
    +
     #### \`parseable\`
     
     * Default: false
    @@ -1235,6 +1321,16 @@ Output parseable results from commands that write to standard output. For
     
     
     
    +#### \`password\`
    +
    +* Default: null
    +* Type: null or String
    +
    +Password for authentication. Can be provided via command line when creating
    +tokens, though it's generally safer to be prompted for it.
    +
    +
    +
     #### \`prefer-dedupe\`
     
     * Default: false
    @@ -1520,6 +1616,17 @@ npm init --scope=@foo --yes
     
     
     
    +#### \`scopes\`
    +
    +* Default: null
    +* Type: null or String (can be set multiple times)
    +
    +When creating a Granular Access Token with \`npm token create\`, this limits
    +the token access to specific scopes. Provide a comma-separated list of scope
    +names (with or without @ prefix).
    +
    +
    +
     #### \`script-shell\`
     
     * Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
    @@ -1687,6 +1794,15 @@ while still writing the timing file, use \`--silent\`.
     
     
     
    +#### \`token-description\`
    +
    +* Default: null
    +* Type: null or String
    +
    +Description text for the token when using \`npm token create\`.
    +
    +
    +
     #### \`umask\`
     
     * Default: 0
    @@ -2103,6 +2219,7 @@ Array [
       "before",
       "bin-links",
       "browser",
    +  "bypass-2fa",
       "ca",
       "cache",
       "cache-max",
    @@ -2130,6 +2247,7 @@ Array [
       "engine-strict",
       "expect-result-count",
       "expect-results",
    +  "expires",
       "fetch-retries",
       "fetch-retry-factor",
       "fetch-retry-maxtimeout",
    @@ -2180,6 +2298,7 @@ Array [
       "logs-dir",
       "logs-max",
       "long",
    +  "name",
       "maxsockets",
       "message",
       "node-gyp",
    @@ -2189,6 +2308,7 @@ Array [
       "omit",
       "omit-lockfile-registry-resolved",
       "only",
    +  "orgs",
       "optional",
       "os",
       "otp",
    @@ -2196,6 +2316,7 @@ Array [
       "package-lock",
       "package-lock-only",
       "pack-destination",
    +  "packages",
       "parseable",
       "prefer-dedupe",
       "prefer-offline",
    @@ -2222,6 +2343,12 @@ Array [
       "sbom-format",
       "sbom-type",
       "scope",
    +  "scopes",
    +  "packages-all",
    +  "packages-and-scopes-permission",
    +  "orgs-permission",
    +  "password",
    +  "token-description",
       "script-shell",
       "searchexclude",
       "searchlimit",
    @@ -2266,6 +2393,7 @@ Array [
       "before",
       "bin-links",
       "browser",
    +  "bypass-2fa",
       "ca",
       "cache",
       "cache-max",
    @@ -2291,6 +2419,7 @@ Array [
       "dry-run",
       "editor",
       "engine-strict",
    +  "expires",
       "fetch-retries",
       "fetch-retry-factor",
       "fetch-retry-maxtimeout",
    @@ -2324,6 +2453,7 @@ Array [
       "location",
       "lockfile-version",
       "loglevel",
    +  "name",
       "maxsockets",
       "message",
       "node-gyp",
    @@ -2332,6 +2462,7 @@ Array [
       "omit",
       "omit-lockfile-registry-resolved",
       "only",
    +  "orgs",
       "optional",
       "os",
       "otp",
    @@ -2339,6 +2470,7 @@ Array [
       "package-lock",
       "package-lock-only",
       "pack-destination",
    +  "packages",
       "parseable",
       "prefer-dedupe",
       "prefer-offline",
    @@ -2364,6 +2496,12 @@ Array [
       "sbom-format",
       "sbom-type",
       "scope",
    +  "scopes",
    +  "packages-all",
    +  "packages-and-scopes-permission",
    +  "orgs-permission",
    +  "password",
    +  "token-description",
       "script-shell",
       "searchexclude",
       "searchlimit",
    @@ -2433,6 +2571,7 @@ Object {
       "before": null,
       "binLinks": true,
       "browser": null,
    +  "bypass-2fa": false,
       "ca": null,
       "cache": "{CWD}/cache/_cacache",
       "call": "",
    @@ -2454,6 +2593,7 @@ Object {
       "dryRun": false,
       "editor": "{EDITOR}",
       "engineStrict": false,
    +  "expires": null,
       "force": false,
       "foregroundScripts": false,
       "formatPackageLock": true,
    @@ -2481,6 +2621,7 @@ Object {
       "logColor": false,
       "maxSockets": 15,
       "message": "%s",
    +  "name": null,
       "nodeBin": "{NODE}",
       "nodeGyp": "{CWD}/node_modules/node-gyp/bin/node-gyp.js",
       "nodeVersion": "2.2.2",
    @@ -2492,13 +2633,19 @@ Object {
       "offline": false,
       "omit": Array [],
       "omitLockfileRegistryResolved": false,
    +  "orgs": null,
    +  "orgsPermission": null,
       "os": null,
       "otp": null,
       "package": Array [],
       "packageLock": true,
       "packageLockOnly": false,
    +  "packages": Array [],
    +  "packagesAll": false,
    +  "packagesAndScopesPermission": null,
       "packDestination": ".",
       "parseable": false,
    +  "password": null,
       "preferDedupe": false,
       "preferOffline": false,
       "preferOnline": false,
    @@ -2524,6 +2671,7 @@ Object {
       "sbomFormat": null,
       "sbomType": "library",
       "scope": "",
    +  "scopes": null,
       "scriptShell": undefined,
       "search": Object {
         "description": true,
    @@ -2540,6 +2688,7 @@ Object {
       "strictSSL": true,
       "tagVersionPrefix": "v",
       "timeout": 300000,
    +  "tokenDescription": null,
       "tufCache": "{CWD}/cache/_tuf",
       "umask": 0,
       "unicode": false,
    @@ -4308,26 +4457,43 @@ Manage your authentication tokens
     Usage:
     npm token list
     npm token revoke 
    -npm token create [--read-only] [--cidr=list]
    +npm token create --name= [--token-description=] [--packages=] [--packages-all] [--scopes=] [--orgs=] [--packages-and-scopes-permission=] [--orgs-permission=] [--expires=] [--cidr=] [--bypass-2fa] [--password=]
     
     Options:
    -[--read-only] [--cidr  [--cidr  ...]] [--registry ]
    -[--otp ]
    +[--name ] [--token-description ] [--expires ]
    +[--packages  [--packages  ...]] [--packages-all]
    +[--scopes <@scope1,@scope2> [--scopes <@scope1,@scope2> ...]]
    +[--orgs  [--orgs  ...]]
    +[--packages-and-scopes-permission ]
    +[--orgs-permission ]
    +[--cidr  [--cidr  ...]] [--bypass-2fa] [--password ]
    +[--registry ] [--otp ] [--read-only]
     
     Run "npm help token" for more info
     
     \`\`\`bash
     npm token list
     npm token revoke 
    -npm token create [--read-only] [--cidr=list]
    +npm token create --name= [--token-description=] [--packages=] [--packages-all] [--scopes=] [--orgs=] [--packages-and-scopes-permission=] [--orgs-permission=] [--expires=] [--cidr=] [--bypass-2fa] [--password=]
     \`\`\`
     
     Note: This command is unaware of workspaces.
     
    -#### \`read-only\`
    +#### \`name\`
    +#### \`token-description\`
    +#### \`expires\`
    +#### \`packages\`
    +#### \`packages-all\`
    +#### \`scopes\`
    +#### \`orgs\`
    +#### \`packages-and-scopes-permission\`
    +#### \`orgs-permission\`
     #### \`cidr\`
    +#### \`bypass-2fa\`
    +#### \`password\`
     #### \`registry\`
     #### \`otp\`
    +#### \`read-only\`
     `
     
     exports[`test/lib/docs.js TAP usage undeprecate > must match snapshot 1`] = `
    @@ -4486,8 +4652,10 @@ npm version [ | major | minor | patch | premajor | preminor | prepat
     Options:
     [--allow-same-version] [--no-commit-hooks] [--no-git-tag-version] [--json]
     [--preid prerelease-id] [--sign-git-tag]
    +[-S|--save|--no-save|--save-prod|--save-dev|--save-optional|--save-peer|--save-bundle]
     [-w|--workspace  [-w|--workspace  ...]]
     [--workspaces] [--no-workspaces-update] [--include-workspace-root]
    +[--ignore-scripts]
     
     alias: verison
     
    @@ -4505,10 +4673,12 @@ alias: verison
     #### \`json\`
     #### \`preid\`
     #### \`sign-git-tag\`
    +#### \`save\`
     #### \`workspace\`
     #### \`workspaces\`
     #### \`workspaces-update\`
     #### \`include-workspace-root\`
    +#### \`ignore-scripts\`
     `
     
     exports[`test/lib/docs.js TAP usage view > must match snapshot 1`] = `
    diff --git a/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs b/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs
    index 22c4ba598a86be..b98388c269c7e6 100644
    --- a/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs
    +++ b/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs
    @@ -222,7 +222,7 @@ Object {
           String(
             Not compatible with your version of node/npm: some@package
             Required: undefined
    -        Actual:   {"npm":"123.456.789-npm","node":"123.456.789-node"}
    +        Actual:   {"node":"123.456.789-node","npm":"123.456.789-npm"}
           ),
         ],
       ],
    @@ -1202,7 +1202,7 @@ Object {
           String(
             Not compatible with your version of node/npm: some@package
             Required: undefined
    -        Actual:   {"npm":"123.456.789-npm","node":"123.456.789-node"}
    +        Actual:   {"node":"123.456.789-node","npm":"123.456.789-npm"}
           ),
         ],
       ],
    diff --git a/deps/npm/test/lib/commands/token.js b/deps/npm/test/lib/commands/token.js
    index f60a938b5b34b3..76ffc4f7da80eb 100644
    --- a/deps/npm/test/lib/commands/token.js
    +++ b/deps/npm/test/lib/commands/token.js
    @@ -1,11 +1,8 @@
     const t = require('tap')
     const { load: loadMockNpm } = require('../../fixtures/mock-npm.js')
     const MockRegistry = require('@npmcli/mock-registry')
    -const mockGlobals = require('@npmcli/mock-globals')
    -const stream = require('node:stream')
     
     const authToken = 'abcd1234'
    -const password = 'this is not really a password'
     
     const auth = {
       '//registry.npmjs.org/:_authToken': authToken,
    @@ -113,7 +110,7 @@ t.test('token list parseable output', async t => {
       ])
     })
     
    -t.test('token revoke', async t => {
    +t.test('token revoke single', async t => {
       const { npm, joinedOutput } = await loadMockNpm(t, {
         config: { ...auth },
       })
    @@ -124,13 +121,13 @@ t.test('token revoke', async t => {
       })
     
       registry.getTokens(tokens)
    -  registry.nock.delete(`/-/npm/v1/tokens/token/${tokens[0].key}`).reply(200)
    +  registry.revokeToken(tokens[0].key)
       await npm.exec('token', ['rm', tokens[0].key.slice(0, 8)])
     
       t.equal(joinedOutput(), 'Removed 1 token')
     })
     
    -t.test('token revoke multiple tokens', async t => {
    +t.test('token revoke multiple', async t => {
       const { npm, joinedOutput } = await loadMockNpm(t, {
         config: { ...auth },
       })
    @@ -141,8 +138,8 @@ t.test('token revoke multiple tokens', async t => {
       })
     
       registry.getTokens(tokens)
    -  registry.nock.delete(`/-/npm/v1/tokens/token/${tokens[0].key}`).reply(200)
    -  registry.nock.delete(`/-/npm/v1/tokens/token/${tokens[1].key}`).reply(200)
    +  registry.revokeToken(tokens[0].key)
    +  registry.revokeToken(tokens[1].key)
       await npm.exec('token', ['rm', tokens[0].key.slice(0, 8), tokens[1].key.slice(0, 8)])
     
       t.equal(joinedOutput(), 'Removed 2 tokens')
    @@ -162,7 +159,7 @@ t.test('token revoke json output', async t => {
       })
     
       registry.getTokens(tokens)
    -  registry.nock.delete(`/-/npm/v1/tokens/token/${tokens[0].key}`).reply(200)
    +  registry.revokeToken(tokens[0].key)
       await npm.exec('token', ['rm', tokens[0].key.slice(0, 8)])
     
       const parsed = JSON.parse(joinedOutput())
    @@ -183,7 +180,7 @@ t.test('token revoke parseable output', async t => {
       })
     
       registry.getTokens(tokens)
    -  registry.nock.delete(`/-/npm/v1/tokens/token/${tokens[0].key}`).reply(200)
    +  registry.revokeToken(tokens[0].key)
       await npm.exec('token', ['rm', tokens[0].key.slice(0, 8)])
       t.equal(joinedOutput(), tokens[0].key, 'logs the token as a string')
     })
    @@ -198,7 +195,7 @@ t.test('token revoke by token', async t => {
         authorization: authToken,
       })
       registry.getTokens(tokens)
    -  registry.nock.delete(`/-/npm/v1/tokens/token/${tokens[0].token}`).reply(200)
    +  registry.revokeToken(tokens[0].token)
       await npm.exec('token', ['rm', tokens[0].token])
       t.equal(joinedOutput(), 'Removed 1 token')
     })
    @@ -243,39 +240,48 @@ t.test('token revoke unknown token', async t => {
       )
     })
     
    -t.test('token create', async t => {
    -  const cidr = ['10.0.0.0/8', '192.168.1.0/24']
    +t.test('token create defaults', async t => {
       const { npm, outputs } = await loadMockNpm(t, {
         config: {
           ...auth,
    -      cidr,
    +      name: 'test-token',
    +      password: 'test-password',
         },
       })
    +
       const registry = new MockRegistry({
         tap: t,
         registry: npm.config.get('registry'),
         authorization: authToken,
       })
    -  const stdin = new stream.PassThrough()
    -  stdin.write(`${password}\n`)
    -  mockGlobals(t, {
    -    'process.stdin': stdin,
    -    'process.stdout': new stream.PassThrough(), // to quiet readline
    -  }, { replace: true })
    -  registry.createToken({ password, cidr })
    +
    +  registry.createToken({
    +    name: 'test-token',
    +    password: 'test-password',
    +  }, {
    +    access: 'publish',
    +  })
    +
       await npm.exec('token', ['create'])
    -  t.strictSame(outputs, [
    -    '',
    -    'Created publish token n3wt0k3n',
    -    'with IP whitelist: 10.0.0.0/8,192.168.1.0/24',
    -  ])
    +  t.match(outputs, ['Created publish token n3wt0k3n'])
     })
     
    -t.test('token create read only', async t => {
    +t.test('token create extra token attributes', async t => {
       const { npm, outputs } = await loadMockNpm(t, {
         config: {
           ...auth,
    -      'read-only': true,
    +      'bypass-2fa': true,
    +      cidr: ['10.0.0.0/8', '192.168.1.0/24'],
    +      expires: 1000,
    +      name: 'extras-token',
    +      orgs: ['@npmcli'],
    +      'orgs-permission': 'read-write',
    +      packages: ['@npmcli/test-package'],
    +      'packages-and-scopes-permission': 'read-only',
    +      'packages-all': true,
    +      password: 'test-password',
    +      scopes: ['@npmcli'],
    +      'token-description': 'test token',
         },
       })
       const registry = new MockRegistry({
    @@ -283,76 +289,159 @@ t.test('token create read only', async t => {
         registry: npm.config.get('registry'),
         authorization: authToken,
       })
    -  const stdin = new stream.PassThrough()
    -  stdin.write(`${password}\n`)
    -  mockGlobals(t, {
    -    'process.stdin': stdin,
    -    'process.stdout': new stream.PassThrough(), // to quiet readline
    -  }, { replace: true })
    -  registry.createToken({ readonly: true, password })
    +
    +  const expires = new Date()
    +  registry.createToken({
    +    bypass_2fa: true,
    +    cidr_whitelist: ['10.0.0.0/8', '192.168.1.0/24'],
    +    description: 'test token',
    +    expires: 1000,
    +    name: 'extras-token',
    +    orgs_permission: 'read-write',
    +    orgs: ['@npmcli'],
    +    packages_all: true,
    +    packages_and_scopes_permission: 'read-only',
    +    packages: ['@npmcli/test-package'],
    +    password: 'test-password',
    +    scopes: ['@npmcli'],
    +  }, {
    +    cidr_whitelist: ['10.0.0.0/8', '192.168.1.0/24'],
    +    expires,
    +  })
    +
       await npm.exec('token', ['create'])
    -  t.strictSame(outputs, [
    -    '',
    +  t.match(outputs, [
         'Created read only token n3wt0k3n',
    +    'with IP whitelist: 10.0.0.0/8,192.168.1.0/24',
    +    `expires: ${expires.toISOString()}`,
       ])
     })
     
    +t.test('token create access.read-only', async t => {
    +  const { npm, outputs } = await loadMockNpm(t, {
    +    config: {
    +      ...auth,
    +      name: 'test-token',
    +      password: 'test-password',
    +    },
    +  })
    +
    +  const registry = new MockRegistry({
    +    tap: t,
    +    registry: npm.config.get('registry'),
    +    authorization: authToken,
    +  })
    +
    +  registry.createToken({
    +    name: 'test-token',
    +    password: 'test-password',
    +  }, {
    +    access: 'read-only',
    +  })
    +
    +  await npm.exec('token', ['create'])
    +  t.match(outputs, ['Created read only token n3wt0k3n'])
    +})
    +
    +t.test('token create readonly', async t => {
    +  const { npm, outputs } = await loadMockNpm(t, {
    +    config: {
    +      ...auth,
    +      name: 'test-token',
    +      password: 'test-password',
    +    },
    +  }, {
    +    readonly: true,
    +  })
    +
    +  const registry = new MockRegistry({
    +    tap: t,
    +    registry: npm.config.get('registry'),
    +    authorization: authToken,
    +  })
    +
    +  registry.createToken({
    +    name: 'test-token',
    +    password: 'test-password',
    +  }, {
    +    access: 'read-only',
    +  })
    +
    +  await npm.exec('token', ['create'])
    +  t.match(outputs, ['Created read only token n3wt0k3n'])
    +})
    +
     t.test('token create json output', async t => {
    -  const cidr = ['10.0.0.0/8', '192.168.1.0/24']
       const { npm, joinedOutput } = await loadMockNpm(t, {
         config: {
           ...auth,
           json: true,
    -      cidr,
    +      name: 'test-token',
    +      password: 'test-password',
         },
       })
    +
       const registry = new MockRegistry({
         tap: t,
         registry: npm.config.get('registry'),
         authorization: authToken,
       })
    -  const stdin = new stream.PassThrough()
    -  stdin.write(`${password}\n`)
    -  mockGlobals(t, {
    -    'process.stdin': stdin,
    -    'process.stdout': new stream.PassThrough(), // to quiet readline
    -  }, { replace: true })
    -  registry.createToken({ password, cidr })
    +
    +  const created = new Date()
    +  registry.createToken({
    +    name: 'test-token',
    +    password: 'test-password',
    +  }, {
    +    created,
    +    other: 'attr',
    +  })
    +
       await npm.exec('token', ['create'])
    -  const parsed = JSON.parse(joinedOutput())
    -  t.match(
    -    parsed,
    -    { token: 'n3wt0k3n', readonly: false, cidr_whitelist: cidr }
    -  )
    -  t.ok(parsed.created, 'also returns created')
    +  t.match(JSON.parse(joinedOutput()), {
    +    access: 'read-only',
    +    created: created.toISOString(),
    +    id: '0xdeadbeef',
    +    name: 'test-token',
    +    other: 'attr',
    +    password: 'test-password',
    +    token: 'n3wt0k3n',
    +  })
     })
     
     t.test('token create parseable output', async t => {
    -  const cidr = ['10.0.0.0/8', '192.168.1.0/24']
       const { npm, outputs } = await loadMockNpm(t, {
         config: {
           ...auth,
           parseable: true,
    -      cidr,
    +      name: 'test-token',
    +      password: 'test-password',
         },
       })
    +
       const registry = new MockRegistry({
         tap: t,
         registry: npm.config.get('registry'),
         authorization: authToken,
       })
    -  const stdin = new stream.PassThrough()
    -  stdin.write(`${password}\n`)
    -  mockGlobals(t, {
    -    'process.stdin': stdin,
    -    'process.stdout': new stream.PassThrough(), // to quiet readline
    -  }, { replace: true })
    -  registry.createToken({ password, cidr })
    +
    +  const created = new Date()
    +  registry.createToken({
    +    name: 'test-token',
    +    password: 'test-password',
    +  }, {
    +    access: 'publish',
    +    created,
    +  })
    +
       await npm.exec('token', ['create'])
    -  t.equal(outputs[1], 'token\tn3wt0k3n')
    -  t.ok(outputs[2].startsWith('created\t'))
    -  t.equal(outputs[3], 'readonly\tfalse')
    -  t.equal(outputs[4], 'cidr_whitelist\t10.0.0.0/8,192.168.1.0/24')
    +  t.match(outputs, [
    +    'id\t0xdeadbeef',
    +    'token\tn3wt0k3n',
    +    `created\t${created.toISOString()}`,
    +    'access\tpublish',
    +    'name\ttest-token',
    +    'password\ttest-password',
    +  ])
     })
     
     t.test('token create ipv6 cidr', async t => {
    @@ -360,12 +449,14 @@ t.test('token create ipv6 cidr', async t => {
         config: {
           ...auth,
           cidr: '::1/128',
    +      name: 'ipv6-test',
    +      access: 'read-only',
         },
       })
    -  await t.rejects(npm.exec('token', ['create'], {
    +  await t.rejects(npm.exec('token', ['create']), {
         code: 'EINVALIDCIDR',
         message: /CIDR whitelist can only contain IPv4 addresses, ::1\/128 is IPv6/,
    -  }))
    +  })
     })
     
     t.test('token create invalid cidr', async t => {
    @@ -373,10 +464,12 @@ t.test('token create invalid cidr', async t => {
         config: {
           ...auth,
           cidr: 'apple/cider',
    +      name: 'invalid-cidr-test',
    +      access: 'read-only',
         },
       })
    -  await t.rejects(npm.exec('token', ['create'], {
    +  await t.rejects(npm.exec('token', ['create']), {
         code: 'EINVALIDCIDR',
         message: 'CIDR whitelist contains invalid CIDR entry: apple/cider',
    -  }))
    +  })
     })
    diff --git a/deps/npm/test/lib/utils/tar.js b/deps/npm/test/lib/utils/tar.js
    index a0a37a3356eea2..78668a78ea7ee6 100644
    --- a/deps/npm/test/lib/utils/tar.js
    +++ b/deps/npm/test/lib/utils/tar.js
    @@ -1,3 +1,4 @@
    +const path = require('node:path')
     const t = require('tap')
     const tar = require('tar')
     const pack = require('libnpmpack')
    @@ -163,13 +164,14 @@ t.test('should getContents of a tarball with a node_modules directory included',
         },
       })
     
    +  const fileName = path.join(testDir, 'npm-example-v1.tgz')
       await tar.c({
         gzip: true,
    -    file: 'npm-example-v1.tgz',
    +    file: fileName,
         C: testDir,
       }, ['package'])
     
    -  const tarball = await readFile(`npm-example-v1.tgz`)
    +  const tarball = await readFile(fileName)
     
       const tarballContents = await getContents({
         name: 'my-cool-pkg',
    diff --git a/deps/npm/node_modules/tar/LICENSE b/deps/npm/workspaces/arborist/node_modules/nopt/LICENSE
    similarity index 100%
    rename from deps/npm/node_modules/tar/LICENSE
    rename to deps/npm/workspaces/arborist/node_modules/nopt/LICENSE
    diff --git a/deps/npm/workspaces/arborist/node_modules/nopt/README.md b/deps/npm/workspaces/arborist/node_modules/nopt/README.md
    new file mode 100644
    index 00000000000000..19ef097bb2c220
    --- /dev/null
    +++ b/deps/npm/workspaces/arborist/node_modules/nopt/README.md
    @@ -0,0 +1,214 @@
    +If you want to write an option parser, and have it be good, there are
    +two ways to do it.  The Right Way, and the Wrong Way.
    +
    +The Wrong Way is to sit down and write an option parser.  We've all done
    +that.
    +
    +The Right Way is to write some complex configurable program with so many
    +options that you hit the limit of your frustration just trying to
    +manage them all, and defer it with duct-tape solutions until you see
    +exactly to the core of the problem, and finally snap and write an
    +awesome option parser.
    +
    +If you want to write an option parser, don't write an option parser.
    +Write a package manager, or a source control system, or a service
    +restarter, or an operating system.  You probably won't end up with a
    +good one of those, but if you don't give up, and you are relentless and
    +diligent enough in your procrastination, you may just end up with a very
    +nice option parser.
    +
    +## USAGE
    +
    +```javascript
    +// my-program.js
    +var nopt = require("nopt")
    +  , Stream = require("stream").Stream
    +  , path = require("path")
    +  , knownOpts = { "foo" : [String, null]
    +                , "bar" : [Stream, Number]
    +                , "baz" : path
    +                , "bloo" : [ "big", "medium", "small" ]
    +                , "flag" : Boolean
    +                , "pick" : Boolean
    +                , "many1" : [String, Array]
    +                , "many2" : [path, Array]
    +                }
    +  , shortHands = { "foofoo" : ["--foo", "Mr. Foo"]
    +                 , "b7" : ["--bar", "7"]
    +                 , "m" : ["--bloo", "medium"]
    +                 , "p" : ["--pick"]
    +                 , "f" : ["--flag"]
    +                 }
    +             // everything is optional.
    +             // knownOpts and shorthands default to {}
    +             // arg list defaults to process.argv
    +             // slice defaults to 2
    +  , parsed = nopt(knownOpts, shortHands, process.argv, 2)
    +console.log(parsed)
    +```
    +
    +This would give you support for any of the following:
    +
    +```console
    +$ node my-program.js --foo "blerp" --no-flag
    +{ "foo" : "blerp", "flag" : false }
    +
    +$ node my-program.js ---bar 7 --foo "Mr. Hand" --flag
    +{ bar: 7, foo: "Mr. Hand", flag: true }
    +
    +$ node my-program.js --foo "blerp" -f -----p
    +{ foo: "blerp", flag: true, pick: true }
    +
    +$ node my-program.js -fp --foofoo
    +{ foo: "Mr. Foo", flag: true, pick: true }
    +
    +$ node my-program.js --foofoo -- -fp  # -- stops the flag parsing.
    +{ foo: "Mr. Foo", argv: { remain: ["-fp"] } }
    +
    +$ node my-program.js --blatzk -fp # unknown opts are ok.
    +{ blatzk: true, flag: true, pick: true }
    +
    +$ node my-program.js --blatzk=1000 -fp # but you need to use = if they have a value
    +{ blatzk: 1000, flag: true, pick: true }
    +
    +$ node my-program.js --no-blatzk -fp # unless they start with "no-"
    +{ blatzk: false, flag: true, pick: true }
    +
    +$ node my-program.js --baz b/a/z # known paths are resolved.
    +{ baz: "/Users/isaacs/b/a/z" }
    +
    +# if Array is one of the types, then it can take many
    +# values, and will always be an array.  The other types provided
    +# specify what types are allowed in the list.
    +
    +$ node my-program.js --many1 5 --many1 null --many1 foo
    +{ many1: ["5", "null", "foo"] }
    +
    +$ node my-program.js --many2 foo --many2 bar
    +{ many2: ["/path/to/foo", "path/to/bar"] }
    +```
    +
    +Read the tests at the bottom of `lib/nopt.js` for more examples of
    +what this puppy can do.
    +
    +## Types
    +
    +The following types are supported, and defined on `nopt.typeDefs`
    +
    +* String: A normal string.  No parsing is done.
    +* path: A file system path.  Gets resolved against cwd if not absolute.
    +* url: A url.  If it doesn't parse, it isn't accepted.
    +* Number: Must be numeric.
    +* Date: Must parse as a date. If it does, and `Date` is one of the options,
    +  then it will return a Date object, not a string.
    +* Boolean: Must be either `true` or `false`.  If an option is a boolean,
    +  then it does not need a value, and its presence will imply `true` as
    +  the value.  To negate boolean flags, do `--no-whatever` or `--whatever
    +  false`
    +* NaN: Means that the option is strictly not allowed.  Any value will
    +  fail.
    +* Stream: An object matching the "Stream" class in node.  Valuable
    +  for use when validating programmatically.  (npm uses this to let you
    +  supply any WriteStream on the `outfd` and `logfd` config options.)
    +* Array: If `Array` is specified as one of the types, then the value
    +  will be parsed as a list of options.  This means that multiple values
    +  can be specified, and that the value will always be an array.
    +
    +If a type is an array of values not on this list, then those are
    +considered valid values.  For instance, in the example above, the
    +`--bloo` option can only be one of `"big"`, `"medium"`, or `"small"`,
    +and any other value will be rejected.
    +
    +When parsing unknown fields, `"true"`, `"false"`, and `"null"` will be
    +interpreted as their JavaScript equivalents.
    +
    +You can also mix types and values, or multiple types, in a list.  For
    +instance `{ blah: [Number, null] }` would allow a value to be set to
    +either a Number or null.  When types are ordered, this implies a
    +preference, and the first type that can be used to properly interpret
    +the value will be used.
    +
    +To define a new type, add it to `nopt.typeDefs`.  Each item in that
    +hash is an object with a `type` member and a `validate` method.  The
    +`type` member is an object that matches what goes in the type list.  The
    +`validate` method is a function that gets called with `validate(data,
    +key, val)`.  Validate methods should assign `data[key]` to the valid
    +value of `val` if it can be handled properly, or return boolean
    +`false` if it cannot.
    +
    +You can also call `nopt.clean(data, types, typeDefs)` to clean up a
    +config object and remove its invalid properties.
    +
    +## Error Handling
    +
    +By default nopt logs debug messages if `DEBUG_NOPT` or `NOPT_DEBUG` are set in the environment.
    +
    +You can assign the following methods to `nopt` for a more granular notification of invalid, unknown, and expanding options:
    +
    +`nopt.invalidHandler(key, value, type, data)` - Called when a value is invalid for its option.
    +`nopt.unknownHandler(key, next)` - Called when an option is found that has no configuration.  In certain situations the next option on the command line will be parsed on its own instead of as part of the unknown option. In this case `next` will contain that option.
    +`nopt.abbrevHandler(short, long)` - Called when an option is automatically translated via abbreviations.
    +
    +You can also set any of these to `false` to disable the debugging messages that they generate.
    +
    +## Abbreviations
    +
    +Yes, they are supported.  If you define options like this:
    +
    +```javascript
    +{ "foolhardyelephants" : Boolean
    +, "pileofmonkeys" : Boolean }
    +```
    +
    +Then this will work:
    +
    +```bash
    +node program.js --foolhar --pil
    +node program.js --no-f --pileofmon
    +# etc.
    +```
    +
    +## Shorthands
    +
    +Shorthands are a hash of shorter option names to a snippet of args that
    +they expand to.
    +
    +If multiple one-character shorthands are all combined, and the
    +combination does not unambiguously match any other option or shorthand,
    +then they will be broken up into their constituent parts.  For example:
    +
    +```json
    +{ "s" : ["--loglevel", "silent"]
    +, "g" : "--global"
    +, "f" : "--force"
    +, "p" : "--parseable"
    +, "l" : "--long"
    +}
    +```
    +
    +```bash
    +npm ls -sgflp
    +# just like doing this:
    +npm ls --loglevel silent --global --force --long --parseable
    +```
    +
    +## The Rest of the args
    +
    +The config object returned by nopt is given a special member called
    +`argv`, which is an object with the following fields:
    +
    +* `remain`: The remaining args after all the parsing has occurred.
    +* `original`: The args as they originally appeared.
    +* `cooked`: The args after flags and shorthands are expanded.
    +
    +## Slicing
    +
    +Node programs are called with more or less the exact argv as it appears
    +in C land, after the v8 and node-specific options have been plucked off.
    +As such, `argv[0]` is always `node` and `argv[1]` is always the
    +JavaScript program being run.
    +
    +That's usually not very useful to you.  So they're sliced off by
    +default.  If you want them, then you can pass in `0` as the last
    +argument, or any other number that you'd like to slice off the start of
    +the list.
    diff --git a/deps/npm/workspaces/arborist/node_modules/nopt/bin/nopt.js b/deps/npm/workspaces/arborist/node_modules/nopt/bin/nopt.js
    new file mode 100755
    index 00000000000000..6ed2082064b5ea
    --- /dev/null
    +++ b/deps/npm/workspaces/arborist/node_modules/nopt/bin/nopt.js
    @@ -0,0 +1,29 @@
    +#!/usr/bin/env node
    +const nopt = require('../lib/nopt')
    +const path = require('path')
    +console.log('parsed', nopt({
    +  num: Number,
    +  bool: Boolean,
    +  help: Boolean,
    +  list: Array,
    +  'num-list': [Number, Array],
    +  'str-list': [String, Array],
    +  'bool-list': [Boolean, Array],
    +  str: String,
    +  clear: Boolean,
    +  config: Boolean,
    +  length: Number,
    +  file: path,
    +}, {
    +  s: ['--str', 'astring'],
    +  b: ['--bool'],
    +  nb: ['--no-bool'],
    +  tft: ['--bool-list', '--no-bool-list', '--bool-list', 'true'],
    +  '?': ['--help'],
    +  h: ['--help'],
    +  H: ['--help'],
    +  n: ['--num', '125'],
    +  c: ['--config'],
    +  l: ['--length'],
    +  f: ['--file'],
    +}, process.argv, 2))
    diff --git a/deps/npm/workspaces/arborist/node_modules/nopt/lib/debug.js b/deps/npm/workspaces/arborist/node_modules/nopt/lib/debug.js
    new file mode 100644
    index 00000000000000..544ab382ca85c0
    --- /dev/null
    +++ b/deps/npm/workspaces/arborist/node_modules/nopt/lib/debug.js
    @@ -0,0 +1,5 @@
    +/* istanbul ignore next */
    +module.exports = process.env.DEBUG_NOPT || process.env.NOPT_DEBUG
    +  // eslint-disable-next-line no-console
    +  ? (...a) => console.error(...a)
    +  : () => {}
    diff --git a/deps/npm/workspaces/arborist/node_modules/nopt/lib/nopt-lib.js b/deps/npm/workspaces/arborist/node_modules/nopt/lib/nopt-lib.js
    new file mode 100644
    index 00000000000000..441c9cc30377af
    --- /dev/null
    +++ b/deps/npm/workspaces/arborist/node_modules/nopt/lib/nopt-lib.js
    @@ -0,0 +1,514 @@
    +const abbrev = require('abbrev')
    +const debug = require('./debug')
    +const defaultTypeDefs = require('./type-defs')
    +
    +const hasOwn = (o, k) => Object.prototype.hasOwnProperty.call(o, k)
    +
    +const getType = (k, { types, dynamicTypes }) => {
    +  let hasType = hasOwn(types, k)
    +  let type = types[k]
    +  if (!hasType && typeof dynamicTypes === 'function') {
    +    const matchedType = dynamicTypes(k)
    +    if (matchedType !== undefined) {
    +      type = matchedType
    +      hasType = true
    +    }
    +  }
    +  return [hasType, type]
    +}
    +
    +const isTypeDef = (type, def) => def && type === def
    +const hasTypeDef = (type, def) => def && type.indexOf(def) !== -1
    +const doesNotHaveTypeDef = (type, def) => def && !hasTypeDef(type, def)
    +
    +function nopt (args, {
    +  types,
    +  shorthands,
    +  typeDefs,
    +  invalidHandler, // opt is configured but its value does not validate against given type
    +  unknownHandler, // opt is not configured
    +  abbrevHandler, // opt is being expanded via abbrev
    +  typeDefault,
    +  dynamicTypes,
    +} = {}) {
    +  debug(types, shorthands, args, typeDefs)
    +
    +  const data = {}
    +  const argv = {
    +    remain: [],
    +    cooked: args,
    +    original: args.slice(0),
    +  }
    +
    +  parse(args, data, argv.remain, {
    +    typeDefs, types, dynamicTypes, shorthands, unknownHandler, abbrevHandler,
    +  })
    +
    +  // now data is full
    +  clean(data, { types, dynamicTypes, typeDefs, invalidHandler, typeDefault })
    +  data.argv = argv
    +
    +  Object.defineProperty(data.argv, 'toString', {
    +    value: function () {
    +      return this.original.map(JSON.stringify).join(' ')
    +    },
    +    enumerable: false,
    +  })
    +
    +  return data
    +}
    +
    +function clean (data, {
    +  types = {},
    +  typeDefs = {},
    +  dynamicTypes,
    +  invalidHandler,
    +  typeDefault,
    +} = {}) {
    +  const StringType = typeDefs.String?.type
    +  const NumberType = typeDefs.Number?.type
    +  const ArrayType = typeDefs.Array?.type
    +  const BooleanType = typeDefs.Boolean?.type
    +  const DateType = typeDefs.Date?.type
    +
    +  const hasTypeDefault = typeof typeDefault !== 'undefined'
    +  if (!hasTypeDefault) {
    +    typeDefault = [false, true, null]
    +    if (StringType) {
    +      typeDefault.push(StringType)
    +    }
    +    if (ArrayType) {
    +      typeDefault.push(ArrayType)
    +    }
    +  }
    +
    +  const remove = {}
    +
    +  Object.keys(data).forEach((k) => {
    +    if (k === 'argv') {
    +      return
    +    }
    +    let val = data[k]
    +    debug('val=%j', val)
    +    const isArray = Array.isArray(val)
    +    let [hasType, rawType] = getType(k, { types, dynamicTypes })
    +    let type = rawType
    +    if (!isArray) {
    +      val = [val]
    +    }
    +    if (!type) {
    +      type = typeDefault
    +    }
    +    if (isTypeDef(type, ArrayType)) {
    +      type = typeDefault.concat(ArrayType)
    +    }
    +    if (!Array.isArray(type)) {
    +      type = [type]
    +    }
    +
    +    debug('val=%j', val)
    +    debug('types=', type)
    +    val = val.map((v) => {
    +      // if it's an unknown value, then parse false/true/null/numbers/dates
    +      if (typeof v === 'string') {
    +        debug('string %j', v)
    +        v = v.trim()
    +        if ((v === 'null' && ~type.indexOf(null))
    +            || (v === 'true' &&
    +               (~type.indexOf(true) || hasTypeDef(type, BooleanType)))
    +            || (v === 'false' &&
    +               (~type.indexOf(false) || hasTypeDef(type, BooleanType)))) {
    +          v = JSON.parse(v)
    +          debug('jsonable %j', v)
    +        } else if (hasTypeDef(type, NumberType) && !isNaN(v)) {
    +          debug('convert to number', v)
    +          v = +v
    +        } else if (hasTypeDef(type, DateType) && !isNaN(Date.parse(v))) {
    +          debug('convert to date', v)
    +          v = new Date(v)
    +        }
    +      }
    +
    +      if (!hasType) {
    +        if (!hasTypeDefault) {
    +          return v
    +        }
    +        // if the default type has been passed in then we want to validate the
    +        // unknown data key instead of bailing out earlier. we also set the raw
    +        // type which is passed to the invalid handler so that it can be
    +        // determined if during validation if it is unknown vs invalid
    +        rawType = typeDefault
    +      }
    +
    +      // allow `--no-blah` to set 'blah' to null if null is allowed
    +      if (v === false && ~type.indexOf(null) &&
    +          !(~type.indexOf(false) || hasTypeDef(type, BooleanType))) {
    +        v = null
    +      }
    +
    +      const d = {}
    +      d[k] = v
    +      debug('prevalidated val', d, v, rawType)
    +      if (!validate(d, k, v, rawType, { typeDefs })) {
    +        if (invalidHandler) {
    +          invalidHandler(k, v, rawType, data)
    +        } else if (invalidHandler !== false) {
    +          debug('invalid: ' + k + '=' + v, rawType)
    +        }
    +        return remove
    +      }
    +      debug('validated v', d, v, rawType)
    +      return d[k]
    +    }).filter((v) => v !== remove)
    +
    +    // if we allow Array specifically, then an empty array is how we
    +    // express 'no value here', not null.  Allow it.
    +    if (!val.length && doesNotHaveTypeDef(type, ArrayType)) {
    +      debug('VAL HAS NO LENGTH, DELETE IT', val, k, type.indexOf(ArrayType))
    +      delete data[k]
    +    } else if (isArray) {
    +      debug(isArray, data[k], val)
    +      data[k] = val
    +    } else {
    +      data[k] = val[0]
    +    }
    +
    +    debug('k=%s val=%j', k, val, data[k])
    +  })
    +}
    +
    +function validate (data, k, val, type, { typeDefs } = {}) {
    +  const ArrayType = typeDefs?.Array?.type
    +  // arrays are lists of types.
    +  if (Array.isArray(type)) {
    +    for (let i = 0, l = type.length; i < l; i++) {
    +      if (isTypeDef(type[i], ArrayType)) {
    +        continue
    +      }
    +      if (validate(data, k, val, type[i], { typeDefs })) {
    +        return true
    +      }
    +    }
    +    delete data[k]
    +    return false
    +  }
    +
    +  // an array of anything?
    +  if (isTypeDef(type, ArrayType)) {
    +    return true
    +  }
    +
    +  // Original comment:
    +  // NaN is poisonous.  Means that something is not allowed.
    +  // New comment: Changing this to an isNaN check breaks a lot of tests.
    +  // Something is being assumed here that is not actually what happens in
    +  // practice.  Fixing it is outside the scope of getting linting to pass in
    +  // this repo. Leaving as-is for now.
    +  /* eslint-disable-next-line no-self-compare */
    +  if (type !== type) {
    +    debug('Poison NaN', k, val, type)
    +    delete data[k]
    +    return false
    +  }
    +
    +  // explicit list of values
    +  if (val === type) {
    +    debug('Explicitly allowed %j', val)
    +    data[k] = val
    +    return true
    +  }
    +
    +  // now go through the list of typeDefs, validate against each one.
    +  let ok = false
    +  const types = Object.keys(typeDefs)
    +  for (let i = 0, l = types.length; i < l; i++) {
    +    debug('test type %j %j %j', k, val, types[i])
    +    const t = typeDefs[types[i]]
    +    if (t && (
    +      (type && type.name && t.type && t.type.name) ?
    +        (type.name === t.type.name) :
    +        (type === t.type)
    +    )) {
    +      const d = {}
    +      ok = t.validate(d, k, val) !== false
    +      val = d[k]
    +      if (ok) {
    +        data[k] = val
    +        break
    +      }
    +    }
    +  }
    +  debug('OK? %j (%j %j %j)', ok, k, val, types[types.length - 1])
    +
    +  if (!ok) {
    +    delete data[k]
    +  }
    +  return ok
    +}
    +
    +function parse (args, data, remain, {
    +  types = {},
    +  typeDefs = {},
    +  shorthands = {},
    +  dynamicTypes,
    +  unknownHandler,
    +  abbrevHandler,
    +} = {}) {
    +  const StringType = typeDefs.String?.type
    +  const NumberType = typeDefs.Number?.type
    +  const ArrayType = typeDefs.Array?.type
    +  const BooleanType = typeDefs.Boolean?.type
    +
    +  debug('parse', args, data, remain)
    +
    +  const abbrevs = abbrev(Object.keys(types))
    +  debug('abbrevs=%j', abbrevs)
    +  const shortAbbr = abbrev(Object.keys(shorthands))
    +
    +  for (let i = 0; i < args.length; i++) {
    +    let arg = args[i]
    +    debug('arg', arg)
    +
    +    if (arg.match(/^-{2,}$/)) {
    +      // done with keys.
    +      // the rest are args.
    +      remain.push.apply(remain, args.slice(i + 1))
    +      args[i] = '--'
    +      break
    +    }
    +    let hadEq = false
    +    if (arg.charAt(0) === '-' && arg.length > 1) {
    +      const at = arg.indexOf('=')
    +      if (at > -1) {
    +        hadEq = true
    +        const v = arg.slice(at + 1)
    +        arg = arg.slice(0, at)
    +        args.splice(i, 1, arg, v)
    +      }
    +
    +      // see if it's a shorthand
    +      // if so, splice and back up to re-parse it.
    +      const shRes = resolveShort(arg, shortAbbr, abbrevs, { shorthands, abbrevHandler })
    +      debug('arg=%j shRes=%j', arg, shRes)
    +      if (shRes) {
    +        args.splice.apply(args, [i, 1].concat(shRes))
    +        if (arg !== shRes[0]) {
    +          i--
    +          continue
    +        }
    +      }
    +      arg = arg.replace(/^-+/, '')
    +      let no = null
    +      while (arg.toLowerCase().indexOf('no-') === 0) {
    +        no = !no
    +        arg = arg.slice(3)
    +      }
    +
    +      // abbrev includes the original full string in its abbrev list
    +      if (abbrevs[arg] && abbrevs[arg] !== arg) {
    +        if (abbrevHandler) {
    +          abbrevHandler(arg, abbrevs[arg])
    +        } else if (abbrevHandler !== false) {
    +          debug(`abbrev: ${arg} -> ${abbrevs[arg]}`)
    +        }
    +        arg = abbrevs[arg]
    +      }
    +
    +      let [hasType, argType] = getType(arg, { types, dynamicTypes })
    +      let isTypeArray = Array.isArray(argType)
    +      if (isTypeArray && argType.length === 1) {
    +        isTypeArray = false
    +        argType = argType[0]
    +      }
    +
    +      let isArray = isTypeDef(argType, ArrayType) ||
    +        isTypeArray && hasTypeDef(argType, ArrayType)
    +
    +      // allow unknown things to be arrays if specified multiple times.
    +      if (!hasType && hasOwn(data, arg)) {
    +        if (!Array.isArray(data[arg])) {
    +          data[arg] = [data[arg]]
    +        }
    +        isArray = true
    +      }
    +
    +      let val
    +      let la = args[i + 1]
    +
    +      const isBool = typeof no === 'boolean' ||
    +        isTypeDef(argType, BooleanType) ||
    +        isTypeArray && hasTypeDef(argType, BooleanType) ||
    +        (typeof argType === 'undefined' && !hadEq) ||
    +        (la === 'false' &&
    +         (argType === null ||
    +          isTypeArray && ~argType.indexOf(null)))
    +
    +      if (typeof argType === 'undefined') {
    +        // la is going to unexpectedly be parsed outside the context of this arg
    +        const hangingLa = !hadEq && la && !la?.startsWith('-') && !['true', 'false'].includes(la)
    +        if (unknownHandler) {
    +          if (hangingLa) {
    +            unknownHandler(arg, la)
    +          } else {
    +            unknownHandler(arg)
    +          }
    +        } else if (unknownHandler !== false) {
    +          debug(`unknown: ${arg}`)
    +          if (hangingLa) {
    +            debug(`unknown: ${la} parsed as normal opt`)
    +          }
    +        }
    +      }
    +
    +      if (isBool) {
    +        // just set and move along
    +        val = !no
    +        // however, also support --bool true or --bool false
    +        if (la === 'true' || la === 'false') {
    +          val = JSON.parse(la)
    +          la = null
    +          if (no) {
    +            val = !val
    +          }
    +          i++
    +        }
    +
    +        // also support "foo":[Boolean, "bar"] and "--foo bar"
    +        if (isTypeArray && la) {
    +          if (~argType.indexOf(la)) {
    +            // an explicit type
    +            val = la
    +            i++
    +          } else if (la === 'null' && ~argType.indexOf(null)) {
    +            // null allowed
    +            val = null
    +            i++
    +          } else if (!la.match(/^-{2,}[^-]/) &&
    +                      !isNaN(la) &&
    +                      hasTypeDef(argType, NumberType)) {
    +            // number
    +            val = +la
    +            i++
    +          } else if (!la.match(/^-[^-]/) && hasTypeDef(argType, StringType)) {
    +            // string
    +            val = la
    +            i++
    +          }
    +        }
    +
    +        if (isArray) {
    +          (data[arg] = data[arg] || []).push(val)
    +        } else {
    +          data[arg] = val
    +        }
    +
    +        continue
    +      }
    +
    +      if (isTypeDef(argType, StringType)) {
    +        if (la === undefined) {
    +          la = ''
    +        } else if (la.match(/^-{1,2}[^-]+/)) {
    +          la = ''
    +          i--
    +        }
    +      }
    +
    +      if (la && la.match(/^-{2,}$/)) {
    +        la = undefined
    +        i--
    +      }
    +
    +      val = la === undefined ? true : la
    +      if (isArray) {
    +        (data[arg] = data[arg] || []).push(val)
    +      } else {
    +        data[arg] = val
    +      }
    +
    +      i++
    +      continue
    +    }
    +    remain.push(arg)
    +  }
    +}
    +
    +const SINGLES = Symbol('singles')
    +const singleCharacters = (arg, shorthands) => {
    +  let singles = shorthands[SINGLES]
    +  if (!singles) {
    +    singles = Object.keys(shorthands).filter((s) => s.length === 1).reduce((l, r) => {
    +      l[r] = true
    +      return l
    +    }, {})
    +    shorthands[SINGLES] = singles
    +    debug('shorthand singles', singles)
    +  }
    +  const chrs = arg.split('').filter((c) => singles[c])
    +  return chrs.join('') === arg ? chrs : null
    +}
    +
    +function resolveShort (arg, ...rest) {
    +  const { abbrevHandler, types = {}, shorthands = {} } = rest.length ? rest.pop() : {}
    +  const shortAbbr = rest[0] ?? abbrev(Object.keys(shorthands))
    +  const abbrevs = rest[1] ?? abbrev(Object.keys(types))
    +
    +  // handle single-char shorthands glommed together, like
    +  // npm ls -glp, but only if there is one dash, and only if
    +  // all of the chars are single-char shorthands, and it's
    +  // not a match to some other abbrev.
    +  arg = arg.replace(/^-+/, '')
    +
    +  // if it's an exact known option, then don't go any further
    +  if (abbrevs[arg] === arg) {
    +    return null
    +  }
    +
    +  // if it's an exact known shortopt, same deal
    +  if (shorthands[arg]) {
    +    // make it an array, if it's a list of words
    +    if (shorthands[arg] && !Array.isArray(shorthands[arg])) {
    +      shorthands[arg] = shorthands[arg].split(/\s+/)
    +    }
    +
    +    return shorthands[arg]
    +  }
    +
    +  // first check to see if this arg is a set of single-char shorthands
    +  const chrs = singleCharacters(arg, shorthands)
    +  if (chrs) {
    +    return chrs.map((c) => shorthands[c]).reduce((l, r) => l.concat(r), [])
    +  }
    +
    +  // if it's an arg abbrev, and not a literal shorthand, then prefer the arg
    +  if (abbrevs[arg] && !shorthands[arg]) {
    +    return null
    +  }
    +
    +  // if it's an abbr for a shorthand, then use that
    +  // exact match has already happened so we don't need to account for that here
    +  if (shortAbbr[arg]) {
    +    if (abbrevHandler) {
    +      abbrevHandler(arg, shortAbbr[arg])
    +    } else if (abbrevHandler !== false) {
    +      debug(`abbrev: ${arg} -> ${shortAbbr[arg]}`)
    +    }
    +    arg = shortAbbr[arg]
    +  }
    +
    +  // make it an array, if it's a list of words
    +  if (shorthands[arg] && !Array.isArray(shorthands[arg])) {
    +    shorthands[arg] = shorthands[arg].split(/\s+/)
    +  }
    +
    +  return shorthands[arg]
    +}
    +
    +module.exports = {
    +  nopt,
    +  clean,
    +  parse,
    +  validate,
    +  resolveShort,
    +  typeDefs: defaultTypeDefs,
    +}
    diff --git a/deps/npm/workspaces/arborist/node_modules/nopt/lib/nopt.js b/deps/npm/workspaces/arborist/node_modules/nopt/lib/nopt.js
    new file mode 100644
    index 00000000000000..9a24342b374aa0
    --- /dev/null
    +++ b/deps/npm/workspaces/arborist/node_modules/nopt/lib/nopt.js
    @@ -0,0 +1,34 @@
    +const lib = require('./nopt-lib')
    +const defaultTypeDefs = require('./type-defs')
    +
    +// This is the version of nopt's API that requires setting typeDefs and invalidHandler
    +// on the required `nopt` object since it is a singleton. To not do a breaking change
    +// an API that requires all options be passed in is located in `nopt-lib.js` and
    +// exported here as lib.
    +// TODO(breaking): make API only work in non-singleton mode
    +
    +module.exports = exports = nopt
    +exports.clean = clean
    +exports.typeDefs = defaultTypeDefs
    +exports.lib = lib
    +
    +function nopt (types, shorthands, args = process.argv, slice = 2) {
    +  return lib.nopt(args.slice(slice), {
    +    types: types || {},
    +    shorthands: shorthands || {},
    +    typeDefs: exports.typeDefs,
    +    invalidHandler: exports.invalidHandler,
    +    unknownHandler: exports.unknownHandler,
    +    abbrevHandler: exports.abbrevHandler,
    +  })
    +}
    +
    +function clean (data, types, typeDefs = exports.typeDefs) {
    +  return lib.clean(data, {
    +    types: types || {},
    +    typeDefs,
    +    invalidHandler: exports.invalidHandler,
    +    unknownHandler: exports.unknownHandler,
    +    abbrevHandler: exports.abbrevHandler,
    +  })
    +}
    diff --git a/deps/npm/workspaces/arborist/node_modules/nopt/lib/type-defs.js b/deps/npm/workspaces/arborist/node_modules/nopt/lib/type-defs.js
    new file mode 100644
    index 00000000000000..608352ee248cc4
    --- /dev/null
    +++ b/deps/npm/workspaces/arborist/node_modules/nopt/lib/type-defs.js
    @@ -0,0 +1,91 @@
    +const url = require('url')
    +const path = require('path')
    +const Stream = require('stream').Stream
    +const os = require('os')
    +const debug = require('./debug')
    +
    +function validateString (data, k, val) {
    +  data[k] = String(val)
    +}
    +
    +function validatePath (data, k, val) {
    +  if (val === true) {
    +    return false
    +  }
    +  if (val === null) {
    +    return true
    +  }
    +
    +  val = String(val)
    +
    +  const isWin = process.platform === 'win32'
    +  const homePattern = isWin ? /^~(\/|\\)/ : /^~\//
    +  const home = os.homedir()
    +
    +  if (home && val.match(homePattern)) {
    +    data[k] = path.resolve(home, val.slice(2))
    +  } else {
    +    data[k] = path.resolve(val)
    +  }
    +  return true
    +}
    +
    +function validateNumber (data, k, val) {
    +  debug('validate Number %j %j %j', k, val, isNaN(val))
    +  if (isNaN(val)) {
    +    return false
    +  }
    +  data[k] = +val
    +}
    +
    +function validateDate (data, k, val) {
    +  const s = Date.parse(val)
    +  debug('validate Date %j %j %j', k, val, s)
    +  if (isNaN(s)) {
    +    return false
    +  }
    +  data[k] = new Date(val)
    +}
    +
    +function validateBoolean (data, k, val) {
    +  if (typeof val === 'string') {
    +    if (!isNaN(val)) {
    +      val = !!(+val)
    +    } else if (val === 'null' || val === 'false') {
    +      val = false
    +    } else {
    +      val = true
    +    }
    +  } else {
    +    val = !!val
    +  }
    +  data[k] = val
    +}
    +
    +function validateUrl (data, k, val) {
    +  // Changing this would be a breaking change in the npm cli
    +  /* eslint-disable-next-line node/no-deprecated-api */
    +  val = url.parse(String(val))
    +  if (!val.host) {
    +    return false
    +  }
    +  data[k] = val.href
    +}
    +
    +function validateStream (data, k, val) {
    +  if (!(val instanceof Stream)) {
    +    return false
    +  }
    +  data[k] = val
    +}
    +
    +module.exports = {
    +  String: { type: String, validate: validateString },
    +  Boolean: { type: Boolean, validate: validateBoolean },
    +  url: { type: url, validate: validateUrl },
    +  Number: { type: Number, validate: validateNumber },
    +  path: { type: path, validate: validatePath },
    +  Stream: { type: Stream, validate: validateStream },
    +  Date: { type: Date, validate: validateDate },
    +  Array: { type: Array },
    +}
    diff --git a/deps/npm/workspaces/arborist/node_modules/nopt/node_modules/abbrev/LICENSE b/deps/npm/workspaces/arborist/node_modules/nopt/node_modules/abbrev/LICENSE
    new file mode 100644
    index 00000000000000..9bcfa9d7d8d26e
    --- /dev/null
    +++ b/deps/npm/workspaces/arborist/node_modules/nopt/node_modules/abbrev/LICENSE
    @@ -0,0 +1,46 @@
    +This software is dual-licensed under the ISC and MIT licenses.
    +You may use this software under EITHER of the following licenses.
    +
    +----------
    +
    +The ISC License
    +
    +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
    +copyright notice and this permission notice appear in all copies.
    +
    +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
    +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
    +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
    +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
    +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
    +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
    +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    +
    +----------
    +
    +Copyright Isaac Z. Schlueter and Contributors
    +All rights reserved.
    +
    +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/workspaces/arborist/node_modules/nopt/node_modules/abbrev/README.md b/deps/npm/workspaces/arborist/node_modules/nopt/node_modules/abbrev/README.md
    new file mode 100644
    index 00000000000000..c6cdd7ea8417c7
    --- /dev/null
    +++ b/deps/npm/workspaces/arborist/node_modules/nopt/node_modules/abbrev/README.md
    @@ -0,0 +1,23 @@
    +# abbrev-js
    +
    +Just like [ruby's Abbrev](http://apidock.com/ruby/Abbrev).
    +
    +Usage:
    +
    +    var abbrev = require("abbrev");
    +    abbrev("foo", "fool", "folding", "flop");
    +
    +    // returns:
    +    { fl: 'flop'
    +    , flo: 'flop'
    +    , flop: 'flop'
    +    , fol: 'folding'
    +    , fold: 'folding'
    +    , foldi: 'folding'
    +    , foldin: 'folding'
    +    , folding: 'folding'
    +    , foo: 'foo'
    +    , fool: 'fool'
    +    }
    +
    +This is handy for command-line scripts, or other cases where you want to be able to accept shorthands.
    diff --git a/deps/npm/workspaces/arborist/node_modules/nopt/node_modules/abbrev/lib/index.js b/deps/npm/workspaces/arborist/node_modules/nopt/node_modules/abbrev/lib/index.js
    new file mode 100644
    index 00000000000000..f7bee0c6fc7ada
    --- /dev/null
    +++ b/deps/npm/workspaces/arborist/node_modules/nopt/node_modules/abbrev/lib/index.js
    @@ -0,0 +1,53 @@
    +module.exports = abbrev
    +
    +function abbrev (...args) {
    +  let list = args
    +  if (args.length === 1 && (Array.isArray(args[0]) || typeof args[0] === 'string')) {
    +    list = [].concat(args[0])
    +  }
    +
    +  for (let i = 0, l = list.length; i < l; i++) {
    +    list[i] = typeof list[i] === 'string' ? list[i] : String(list[i])
    +  }
    +
    +  // sort them lexicographically, so that they're next to their nearest kin
    +  list = list.sort(lexSort)
    +
    +  // walk through each, seeing how much it has in common with the next and previous
    +  const abbrevs = {}
    +  let prev = ''
    +  for (let ii = 0, ll = list.length; ii < ll; ii++) {
    +    const current = list[ii]
    +    const next = list[ii + 1] || ''
    +    let nextMatches = true
    +    let prevMatches = true
    +    if (current === next) {
    +      continue
    +    }
    +    let j = 0
    +    const cl = current.length
    +    for (; j < cl; j++) {
    +      const curChar = current.charAt(j)
    +      nextMatches = nextMatches && curChar === next.charAt(j)
    +      prevMatches = prevMatches && curChar === prev.charAt(j)
    +      if (!nextMatches && !prevMatches) {
    +        j++
    +        break
    +      }
    +    }
    +    prev = current
    +    if (j === cl) {
    +      abbrevs[current] = current
    +      continue
    +    }
    +    for (let a = current.slice(0, j); j <= cl; j++) {
    +      abbrevs[a] = current
    +      a += current.charAt(j)
    +    }
    +  }
    +  return abbrevs
    +}
    +
    +function lexSort (a, b) {
    +  return a === b ? 0 : a > b ? 1 : -1
    +}
    diff --git a/deps/npm/workspaces/arborist/node_modules/nopt/node_modules/abbrev/package.json b/deps/npm/workspaces/arborist/node_modules/nopt/node_modules/abbrev/package.json
    new file mode 100644
    index 00000000000000..077d4bccd0e69e
    --- /dev/null
    +++ b/deps/npm/workspaces/arborist/node_modules/nopt/node_modules/abbrev/package.json
    @@ -0,0 +1,45 @@
    +{
    +  "name": "abbrev",
    +  "version": "3.0.1",
    +  "description": "Like ruby's abbrev module, but in js",
    +  "author": "GitHub Inc.",
    +  "main": "lib/index.js",
    +  "scripts": {
    +    "test": "tap",
    +    "lint": "npm run eslint",
    +    "postlint": "template-oss-check",
    +    "template-oss-apply": "template-oss-apply --force",
    +    "lintfix": "npm run eslint -- --fix",
    +    "snap": "tap",
    +    "posttest": "npm run lint",
    +    "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""
    +  },
    +  "repository": {
    +    "type": "git",
    +    "url": "git+https://github.com/npm/abbrev-js.git"
    +  },
    +  "license": "ISC",
    +  "devDependencies": {
    +    "@npmcli/eslint-config": "^5.0.0",
    +    "@npmcli/template-oss": "4.24.3",
    +    "tap": "^16.3.0"
    +  },
    +  "tap": {
    +    "nyc-arg": [
    +      "--exclude",
    +      "tap-snapshots/**"
    +    ]
    +  },
    +  "files": [
    +    "bin/",
    +    "lib/"
    +  ],
    +  "engines": {
    +    "node": "^18.17.0 || >=20.5.0"
    +  },
    +  "templateOSS": {
    +    "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    +    "version": "4.24.3",
    +    "publish": true
    +  }
    +}
    diff --git a/deps/npm/workspaces/arborist/node_modules/nopt/package.json b/deps/npm/workspaces/arborist/node_modules/nopt/package.json
    new file mode 100644
    index 00000000000000..0732ada73c1d00
    --- /dev/null
    +++ b/deps/npm/workspaces/arborist/node_modules/nopt/package.json
    @@ -0,0 +1,52 @@
    +{
    +  "name": "nopt",
    +  "version": "8.1.0",
    +  "description": "Option parsing for Node, supporting types, shorthands, etc. Used by npm.",
    +  "author": "GitHub Inc.",
    +  "main": "lib/nopt.js",
    +  "scripts": {
    +    "test": "tap",
    +    "lint": "npm run eslint",
    +    "postlint": "template-oss-check",
    +    "template-oss-apply": "template-oss-apply --force",
    +    "lintfix": "npm run eslint -- --fix",
    +    "snap": "tap",
    +    "posttest": "npm run lint",
    +    "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""
    +  },
    +  "repository": {
    +    "type": "git",
    +    "url": "git+https://github.com/npm/nopt.git"
    +  },
    +  "bin": {
    +    "nopt": "bin/nopt.js"
    +  },
    +  "license": "ISC",
    +  "dependencies": {
    +    "abbrev": "^3.0.0"
    +  },
    +  "devDependencies": {
    +    "@npmcli/eslint-config": "^5.0.0",
    +    "@npmcli/template-oss": "4.23.6",
    +    "tap": "^16.3.0"
    +  },
    +  "tap": {
    +    "nyc-arg": [
    +      "--exclude",
    +      "tap-snapshots/**"
    +    ]
    +  },
    +  "files": [
    +    "bin/",
    +    "lib/"
    +  ],
    +  "engines": {
    +    "node": "^18.17.0 || >=20.5.0"
    +  },
    +  "templateOSS": {
    +    "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    +    "windowsCI": false,
    +    "version": "4.23.6",
    +    "publish": true
    +  }
    +}
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/LICENSE b/deps/npm/workspaces/config/node_modules/nopt/LICENSE
    similarity index 92%
    rename from deps/npm/node_modules/node-gyp/node_modules/glob/LICENSE
    rename to deps/npm/workspaces/config/node_modules/nopt/LICENSE
    index ec7df93329abf3..19129e315fe593 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/glob/LICENSE
    +++ b/deps/npm/workspaces/config/node_modules/nopt/LICENSE
    @@ -1,6 +1,6 @@
     The ISC License
     
    -Copyright (c) 2009-2023 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/workspaces/config/node_modules/nopt/README.md b/deps/npm/workspaces/config/node_modules/nopt/README.md
    new file mode 100644
    index 00000000000000..19ef097bb2c220
    --- /dev/null
    +++ b/deps/npm/workspaces/config/node_modules/nopt/README.md
    @@ -0,0 +1,214 @@
    +If you want to write an option parser, and have it be good, there are
    +two ways to do it.  The Right Way, and the Wrong Way.
    +
    +The Wrong Way is to sit down and write an option parser.  We've all done
    +that.
    +
    +The Right Way is to write some complex configurable program with so many
    +options that you hit the limit of your frustration just trying to
    +manage them all, and defer it with duct-tape solutions until you see
    +exactly to the core of the problem, and finally snap and write an
    +awesome option parser.
    +
    +If you want to write an option parser, don't write an option parser.
    +Write a package manager, or a source control system, or a service
    +restarter, or an operating system.  You probably won't end up with a
    +good one of those, but if you don't give up, and you are relentless and
    +diligent enough in your procrastination, you may just end up with a very
    +nice option parser.
    +
    +## USAGE
    +
    +```javascript
    +// my-program.js
    +var nopt = require("nopt")
    +  , Stream = require("stream").Stream
    +  , path = require("path")
    +  , knownOpts = { "foo" : [String, null]
    +                , "bar" : [Stream, Number]
    +                , "baz" : path
    +                , "bloo" : [ "big", "medium", "small" ]
    +                , "flag" : Boolean
    +                , "pick" : Boolean
    +                , "many1" : [String, Array]
    +                , "many2" : [path, Array]
    +                }
    +  , shortHands = { "foofoo" : ["--foo", "Mr. Foo"]
    +                 , "b7" : ["--bar", "7"]
    +                 , "m" : ["--bloo", "medium"]
    +                 , "p" : ["--pick"]
    +                 , "f" : ["--flag"]
    +                 }
    +             // everything is optional.
    +             // knownOpts and shorthands default to {}
    +             // arg list defaults to process.argv
    +             // slice defaults to 2
    +  , parsed = nopt(knownOpts, shortHands, process.argv, 2)
    +console.log(parsed)
    +```
    +
    +This would give you support for any of the following:
    +
    +```console
    +$ node my-program.js --foo "blerp" --no-flag
    +{ "foo" : "blerp", "flag" : false }
    +
    +$ node my-program.js ---bar 7 --foo "Mr. Hand" --flag
    +{ bar: 7, foo: "Mr. Hand", flag: true }
    +
    +$ node my-program.js --foo "blerp" -f -----p
    +{ foo: "blerp", flag: true, pick: true }
    +
    +$ node my-program.js -fp --foofoo
    +{ foo: "Mr. Foo", flag: true, pick: true }
    +
    +$ node my-program.js --foofoo -- -fp  # -- stops the flag parsing.
    +{ foo: "Mr. Foo", argv: { remain: ["-fp"] } }
    +
    +$ node my-program.js --blatzk -fp # unknown opts are ok.
    +{ blatzk: true, flag: true, pick: true }
    +
    +$ node my-program.js --blatzk=1000 -fp # but you need to use = if they have a value
    +{ blatzk: 1000, flag: true, pick: true }
    +
    +$ node my-program.js --no-blatzk -fp # unless they start with "no-"
    +{ blatzk: false, flag: true, pick: true }
    +
    +$ node my-program.js --baz b/a/z # known paths are resolved.
    +{ baz: "/Users/isaacs/b/a/z" }
    +
    +# if Array is one of the types, then it can take many
    +# values, and will always be an array.  The other types provided
    +# specify what types are allowed in the list.
    +
    +$ node my-program.js --many1 5 --many1 null --many1 foo
    +{ many1: ["5", "null", "foo"] }
    +
    +$ node my-program.js --many2 foo --many2 bar
    +{ many2: ["/path/to/foo", "path/to/bar"] }
    +```
    +
    +Read the tests at the bottom of `lib/nopt.js` for more examples of
    +what this puppy can do.
    +
    +## Types
    +
    +The following types are supported, and defined on `nopt.typeDefs`
    +
    +* String: A normal string.  No parsing is done.
    +* path: A file system path.  Gets resolved against cwd if not absolute.
    +* url: A url.  If it doesn't parse, it isn't accepted.
    +* Number: Must be numeric.
    +* Date: Must parse as a date. If it does, and `Date` is one of the options,
    +  then it will return a Date object, not a string.
    +* Boolean: Must be either `true` or `false`.  If an option is a boolean,
    +  then it does not need a value, and its presence will imply `true` as
    +  the value.  To negate boolean flags, do `--no-whatever` or `--whatever
    +  false`
    +* NaN: Means that the option is strictly not allowed.  Any value will
    +  fail.
    +* Stream: An object matching the "Stream" class in node.  Valuable
    +  for use when validating programmatically.  (npm uses this to let you
    +  supply any WriteStream on the `outfd` and `logfd` config options.)
    +* Array: If `Array` is specified as one of the types, then the value
    +  will be parsed as a list of options.  This means that multiple values
    +  can be specified, and that the value will always be an array.
    +
    +If a type is an array of values not on this list, then those are
    +considered valid values.  For instance, in the example above, the
    +`--bloo` option can only be one of `"big"`, `"medium"`, or `"small"`,
    +and any other value will be rejected.
    +
    +When parsing unknown fields, `"true"`, `"false"`, and `"null"` will be
    +interpreted as their JavaScript equivalents.
    +
    +You can also mix types and values, or multiple types, in a list.  For
    +instance `{ blah: [Number, null] }` would allow a value to be set to
    +either a Number or null.  When types are ordered, this implies a
    +preference, and the first type that can be used to properly interpret
    +the value will be used.
    +
    +To define a new type, add it to `nopt.typeDefs`.  Each item in that
    +hash is an object with a `type` member and a `validate` method.  The
    +`type` member is an object that matches what goes in the type list.  The
    +`validate` method is a function that gets called with `validate(data,
    +key, val)`.  Validate methods should assign `data[key]` to the valid
    +value of `val` if it can be handled properly, or return boolean
    +`false` if it cannot.
    +
    +You can also call `nopt.clean(data, types, typeDefs)` to clean up a
    +config object and remove its invalid properties.
    +
    +## Error Handling
    +
    +By default nopt logs debug messages if `DEBUG_NOPT` or `NOPT_DEBUG` are set in the environment.
    +
    +You can assign the following methods to `nopt` for a more granular notification of invalid, unknown, and expanding options:
    +
    +`nopt.invalidHandler(key, value, type, data)` - Called when a value is invalid for its option.
    +`nopt.unknownHandler(key, next)` - Called when an option is found that has no configuration.  In certain situations the next option on the command line will be parsed on its own instead of as part of the unknown option. In this case `next` will contain that option.
    +`nopt.abbrevHandler(short, long)` - Called when an option is automatically translated via abbreviations.
    +
    +You can also set any of these to `false` to disable the debugging messages that they generate.
    +
    +## Abbreviations
    +
    +Yes, they are supported.  If you define options like this:
    +
    +```javascript
    +{ "foolhardyelephants" : Boolean
    +, "pileofmonkeys" : Boolean }
    +```
    +
    +Then this will work:
    +
    +```bash
    +node program.js --foolhar --pil
    +node program.js --no-f --pileofmon
    +# etc.
    +```
    +
    +## Shorthands
    +
    +Shorthands are a hash of shorter option names to a snippet of args that
    +they expand to.
    +
    +If multiple one-character shorthands are all combined, and the
    +combination does not unambiguously match any other option or shorthand,
    +then they will be broken up into their constituent parts.  For example:
    +
    +```json
    +{ "s" : ["--loglevel", "silent"]
    +, "g" : "--global"
    +, "f" : "--force"
    +, "p" : "--parseable"
    +, "l" : "--long"
    +}
    +```
    +
    +```bash
    +npm ls -sgflp
    +# just like doing this:
    +npm ls --loglevel silent --global --force --long --parseable
    +```
    +
    +## The Rest of the args
    +
    +The config object returned by nopt is given a special member called
    +`argv`, which is an object with the following fields:
    +
    +* `remain`: The remaining args after all the parsing has occurred.
    +* `original`: The args as they originally appeared.
    +* `cooked`: The args after flags and shorthands are expanded.
    +
    +## Slicing
    +
    +Node programs are called with more or less the exact argv as it appears
    +in C land, after the v8 and node-specific options have been plucked off.
    +As such, `argv[0]` is always `node` and `argv[1]` is always the
    +JavaScript program being run.
    +
    +That's usually not very useful to you.  So they're sliced off by
    +default.  If you want them, then you can pass in `0` as the last
    +argument, or any other number that you'd like to slice off the start of
    +the list.
    diff --git a/deps/npm/workspaces/config/node_modules/nopt/bin/nopt.js b/deps/npm/workspaces/config/node_modules/nopt/bin/nopt.js
    new file mode 100755
    index 00000000000000..6ed2082064b5ea
    --- /dev/null
    +++ b/deps/npm/workspaces/config/node_modules/nopt/bin/nopt.js
    @@ -0,0 +1,29 @@
    +#!/usr/bin/env node
    +const nopt = require('../lib/nopt')
    +const path = require('path')
    +console.log('parsed', nopt({
    +  num: Number,
    +  bool: Boolean,
    +  help: Boolean,
    +  list: Array,
    +  'num-list': [Number, Array],
    +  'str-list': [String, Array],
    +  'bool-list': [Boolean, Array],
    +  str: String,
    +  clear: Boolean,
    +  config: Boolean,
    +  length: Number,
    +  file: path,
    +}, {
    +  s: ['--str', 'astring'],
    +  b: ['--bool'],
    +  nb: ['--no-bool'],
    +  tft: ['--bool-list', '--no-bool-list', '--bool-list', 'true'],
    +  '?': ['--help'],
    +  h: ['--help'],
    +  H: ['--help'],
    +  n: ['--num', '125'],
    +  c: ['--config'],
    +  l: ['--length'],
    +  f: ['--file'],
    +}, process.argv, 2))
    diff --git a/deps/npm/workspaces/config/node_modules/nopt/lib/debug.js b/deps/npm/workspaces/config/node_modules/nopt/lib/debug.js
    new file mode 100644
    index 00000000000000..544ab382ca85c0
    --- /dev/null
    +++ b/deps/npm/workspaces/config/node_modules/nopt/lib/debug.js
    @@ -0,0 +1,5 @@
    +/* istanbul ignore next */
    +module.exports = process.env.DEBUG_NOPT || process.env.NOPT_DEBUG
    +  // eslint-disable-next-line no-console
    +  ? (...a) => console.error(...a)
    +  : () => {}
    diff --git a/deps/npm/workspaces/config/node_modules/nopt/lib/nopt-lib.js b/deps/npm/workspaces/config/node_modules/nopt/lib/nopt-lib.js
    new file mode 100644
    index 00000000000000..441c9cc30377af
    --- /dev/null
    +++ b/deps/npm/workspaces/config/node_modules/nopt/lib/nopt-lib.js
    @@ -0,0 +1,514 @@
    +const abbrev = require('abbrev')
    +const debug = require('./debug')
    +const defaultTypeDefs = require('./type-defs')
    +
    +const hasOwn = (o, k) => Object.prototype.hasOwnProperty.call(o, k)
    +
    +const getType = (k, { types, dynamicTypes }) => {
    +  let hasType = hasOwn(types, k)
    +  let type = types[k]
    +  if (!hasType && typeof dynamicTypes === 'function') {
    +    const matchedType = dynamicTypes(k)
    +    if (matchedType !== undefined) {
    +      type = matchedType
    +      hasType = true
    +    }
    +  }
    +  return [hasType, type]
    +}
    +
    +const isTypeDef = (type, def) => def && type === def
    +const hasTypeDef = (type, def) => def && type.indexOf(def) !== -1
    +const doesNotHaveTypeDef = (type, def) => def && !hasTypeDef(type, def)
    +
    +function nopt (args, {
    +  types,
    +  shorthands,
    +  typeDefs,
    +  invalidHandler, // opt is configured but its value does not validate against given type
    +  unknownHandler, // opt is not configured
    +  abbrevHandler, // opt is being expanded via abbrev
    +  typeDefault,
    +  dynamicTypes,
    +} = {}) {
    +  debug(types, shorthands, args, typeDefs)
    +
    +  const data = {}
    +  const argv = {
    +    remain: [],
    +    cooked: args,
    +    original: args.slice(0),
    +  }
    +
    +  parse(args, data, argv.remain, {
    +    typeDefs, types, dynamicTypes, shorthands, unknownHandler, abbrevHandler,
    +  })
    +
    +  // now data is full
    +  clean(data, { types, dynamicTypes, typeDefs, invalidHandler, typeDefault })
    +  data.argv = argv
    +
    +  Object.defineProperty(data.argv, 'toString', {
    +    value: function () {
    +      return this.original.map(JSON.stringify).join(' ')
    +    },
    +    enumerable: false,
    +  })
    +
    +  return data
    +}
    +
    +function clean (data, {
    +  types = {},
    +  typeDefs = {},
    +  dynamicTypes,
    +  invalidHandler,
    +  typeDefault,
    +} = {}) {
    +  const StringType = typeDefs.String?.type
    +  const NumberType = typeDefs.Number?.type
    +  const ArrayType = typeDefs.Array?.type
    +  const BooleanType = typeDefs.Boolean?.type
    +  const DateType = typeDefs.Date?.type
    +
    +  const hasTypeDefault = typeof typeDefault !== 'undefined'
    +  if (!hasTypeDefault) {
    +    typeDefault = [false, true, null]
    +    if (StringType) {
    +      typeDefault.push(StringType)
    +    }
    +    if (ArrayType) {
    +      typeDefault.push(ArrayType)
    +    }
    +  }
    +
    +  const remove = {}
    +
    +  Object.keys(data).forEach((k) => {
    +    if (k === 'argv') {
    +      return
    +    }
    +    let val = data[k]
    +    debug('val=%j', val)
    +    const isArray = Array.isArray(val)
    +    let [hasType, rawType] = getType(k, { types, dynamicTypes })
    +    let type = rawType
    +    if (!isArray) {
    +      val = [val]
    +    }
    +    if (!type) {
    +      type = typeDefault
    +    }
    +    if (isTypeDef(type, ArrayType)) {
    +      type = typeDefault.concat(ArrayType)
    +    }
    +    if (!Array.isArray(type)) {
    +      type = [type]
    +    }
    +
    +    debug('val=%j', val)
    +    debug('types=', type)
    +    val = val.map((v) => {
    +      // if it's an unknown value, then parse false/true/null/numbers/dates
    +      if (typeof v === 'string') {
    +        debug('string %j', v)
    +        v = v.trim()
    +        if ((v === 'null' && ~type.indexOf(null))
    +            || (v === 'true' &&
    +               (~type.indexOf(true) || hasTypeDef(type, BooleanType)))
    +            || (v === 'false' &&
    +               (~type.indexOf(false) || hasTypeDef(type, BooleanType)))) {
    +          v = JSON.parse(v)
    +          debug('jsonable %j', v)
    +        } else if (hasTypeDef(type, NumberType) && !isNaN(v)) {
    +          debug('convert to number', v)
    +          v = +v
    +        } else if (hasTypeDef(type, DateType) && !isNaN(Date.parse(v))) {
    +          debug('convert to date', v)
    +          v = new Date(v)
    +        }
    +      }
    +
    +      if (!hasType) {
    +        if (!hasTypeDefault) {
    +          return v
    +        }
    +        // if the default type has been passed in then we want to validate the
    +        // unknown data key instead of bailing out earlier. we also set the raw
    +        // type which is passed to the invalid handler so that it can be
    +        // determined if during validation if it is unknown vs invalid
    +        rawType = typeDefault
    +      }
    +
    +      // allow `--no-blah` to set 'blah' to null if null is allowed
    +      if (v === false && ~type.indexOf(null) &&
    +          !(~type.indexOf(false) || hasTypeDef(type, BooleanType))) {
    +        v = null
    +      }
    +
    +      const d = {}
    +      d[k] = v
    +      debug('prevalidated val', d, v, rawType)
    +      if (!validate(d, k, v, rawType, { typeDefs })) {
    +        if (invalidHandler) {
    +          invalidHandler(k, v, rawType, data)
    +        } else if (invalidHandler !== false) {
    +          debug('invalid: ' + k + '=' + v, rawType)
    +        }
    +        return remove
    +      }
    +      debug('validated v', d, v, rawType)
    +      return d[k]
    +    }).filter((v) => v !== remove)
    +
    +    // if we allow Array specifically, then an empty array is how we
    +    // express 'no value here', not null.  Allow it.
    +    if (!val.length && doesNotHaveTypeDef(type, ArrayType)) {
    +      debug('VAL HAS NO LENGTH, DELETE IT', val, k, type.indexOf(ArrayType))
    +      delete data[k]
    +    } else if (isArray) {
    +      debug(isArray, data[k], val)
    +      data[k] = val
    +    } else {
    +      data[k] = val[0]
    +    }
    +
    +    debug('k=%s val=%j', k, val, data[k])
    +  })
    +}
    +
    +function validate (data, k, val, type, { typeDefs } = {}) {
    +  const ArrayType = typeDefs?.Array?.type
    +  // arrays are lists of types.
    +  if (Array.isArray(type)) {
    +    for (let i = 0, l = type.length; i < l; i++) {
    +      if (isTypeDef(type[i], ArrayType)) {
    +        continue
    +      }
    +      if (validate(data, k, val, type[i], { typeDefs })) {
    +        return true
    +      }
    +    }
    +    delete data[k]
    +    return false
    +  }
    +
    +  // an array of anything?
    +  if (isTypeDef(type, ArrayType)) {
    +    return true
    +  }
    +
    +  // Original comment:
    +  // NaN is poisonous.  Means that something is not allowed.
    +  // New comment: Changing this to an isNaN check breaks a lot of tests.
    +  // Something is being assumed here that is not actually what happens in
    +  // practice.  Fixing it is outside the scope of getting linting to pass in
    +  // this repo. Leaving as-is for now.
    +  /* eslint-disable-next-line no-self-compare */
    +  if (type !== type) {
    +    debug('Poison NaN', k, val, type)
    +    delete data[k]
    +    return false
    +  }
    +
    +  // explicit list of values
    +  if (val === type) {
    +    debug('Explicitly allowed %j', val)
    +    data[k] = val
    +    return true
    +  }
    +
    +  // now go through the list of typeDefs, validate against each one.
    +  let ok = false
    +  const types = Object.keys(typeDefs)
    +  for (let i = 0, l = types.length; i < l; i++) {
    +    debug('test type %j %j %j', k, val, types[i])
    +    const t = typeDefs[types[i]]
    +    if (t && (
    +      (type && type.name && t.type && t.type.name) ?
    +        (type.name === t.type.name) :
    +        (type === t.type)
    +    )) {
    +      const d = {}
    +      ok = t.validate(d, k, val) !== false
    +      val = d[k]
    +      if (ok) {
    +        data[k] = val
    +        break
    +      }
    +    }
    +  }
    +  debug('OK? %j (%j %j %j)', ok, k, val, types[types.length - 1])
    +
    +  if (!ok) {
    +    delete data[k]
    +  }
    +  return ok
    +}
    +
    +function parse (args, data, remain, {
    +  types = {},
    +  typeDefs = {},
    +  shorthands = {},
    +  dynamicTypes,
    +  unknownHandler,
    +  abbrevHandler,
    +} = {}) {
    +  const StringType = typeDefs.String?.type
    +  const NumberType = typeDefs.Number?.type
    +  const ArrayType = typeDefs.Array?.type
    +  const BooleanType = typeDefs.Boolean?.type
    +
    +  debug('parse', args, data, remain)
    +
    +  const abbrevs = abbrev(Object.keys(types))
    +  debug('abbrevs=%j', abbrevs)
    +  const shortAbbr = abbrev(Object.keys(shorthands))
    +
    +  for (let i = 0; i < args.length; i++) {
    +    let arg = args[i]
    +    debug('arg', arg)
    +
    +    if (arg.match(/^-{2,}$/)) {
    +      // done with keys.
    +      // the rest are args.
    +      remain.push.apply(remain, args.slice(i + 1))
    +      args[i] = '--'
    +      break
    +    }
    +    let hadEq = false
    +    if (arg.charAt(0) === '-' && arg.length > 1) {
    +      const at = arg.indexOf('=')
    +      if (at > -1) {
    +        hadEq = true
    +        const v = arg.slice(at + 1)
    +        arg = arg.slice(0, at)
    +        args.splice(i, 1, arg, v)
    +      }
    +
    +      // see if it's a shorthand
    +      // if so, splice and back up to re-parse it.
    +      const shRes = resolveShort(arg, shortAbbr, abbrevs, { shorthands, abbrevHandler })
    +      debug('arg=%j shRes=%j', arg, shRes)
    +      if (shRes) {
    +        args.splice.apply(args, [i, 1].concat(shRes))
    +        if (arg !== shRes[0]) {
    +          i--
    +          continue
    +        }
    +      }
    +      arg = arg.replace(/^-+/, '')
    +      let no = null
    +      while (arg.toLowerCase().indexOf('no-') === 0) {
    +        no = !no
    +        arg = arg.slice(3)
    +      }
    +
    +      // abbrev includes the original full string in its abbrev list
    +      if (abbrevs[arg] && abbrevs[arg] !== arg) {
    +        if (abbrevHandler) {
    +          abbrevHandler(arg, abbrevs[arg])
    +        } else if (abbrevHandler !== false) {
    +          debug(`abbrev: ${arg} -> ${abbrevs[arg]}`)
    +        }
    +        arg = abbrevs[arg]
    +      }
    +
    +      let [hasType, argType] = getType(arg, { types, dynamicTypes })
    +      let isTypeArray = Array.isArray(argType)
    +      if (isTypeArray && argType.length === 1) {
    +        isTypeArray = false
    +        argType = argType[0]
    +      }
    +
    +      let isArray = isTypeDef(argType, ArrayType) ||
    +        isTypeArray && hasTypeDef(argType, ArrayType)
    +
    +      // allow unknown things to be arrays if specified multiple times.
    +      if (!hasType && hasOwn(data, arg)) {
    +        if (!Array.isArray(data[arg])) {
    +          data[arg] = [data[arg]]
    +        }
    +        isArray = true
    +      }
    +
    +      let val
    +      let la = args[i + 1]
    +
    +      const isBool = typeof no === 'boolean' ||
    +        isTypeDef(argType, BooleanType) ||
    +        isTypeArray && hasTypeDef(argType, BooleanType) ||
    +        (typeof argType === 'undefined' && !hadEq) ||
    +        (la === 'false' &&
    +         (argType === null ||
    +          isTypeArray && ~argType.indexOf(null)))
    +
    +      if (typeof argType === 'undefined') {
    +        // la is going to unexpectedly be parsed outside the context of this arg
    +        const hangingLa = !hadEq && la && !la?.startsWith('-') && !['true', 'false'].includes(la)
    +        if (unknownHandler) {
    +          if (hangingLa) {
    +            unknownHandler(arg, la)
    +          } else {
    +            unknownHandler(arg)
    +          }
    +        } else if (unknownHandler !== false) {
    +          debug(`unknown: ${arg}`)
    +          if (hangingLa) {
    +            debug(`unknown: ${la} parsed as normal opt`)
    +          }
    +        }
    +      }
    +
    +      if (isBool) {
    +        // just set and move along
    +        val = !no
    +        // however, also support --bool true or --bool false
    +        if (la === 'true' || la === 'false') {
    +          val = JSON.parse(la)
    +          la = null
    +          if (no) {
    +            val = !val
    +          }
    +          i++
    +        }
    +
    +        // also support "foo":[Boolean, "bar"] and "--foo bar"
    +        if (isTypeArray && la) {
    +          if (~argType.indexOf(la)) {
    +            // an explicit type
    +            val = la
    +            i++
    +          } else if (la === 'null' && ~argType.indexOf(null)) {
    +            // null allowed
    +            val = null
    +            i++
    +          } else if (!la.match(/^-{2,}[^-]/) &&
    +                      !isNaN(la) &&
    +                      hasTypeDef(argType, NumberType)) {
    +            // number
    +            val = +la
    +            i++
    +          } else if (!la.match(/^-[^-]/) && hasTypeDef(argType, StringType)) {
    +            // string
    +            val = la
    +            i++
    +          }
    +        }
    +
    +        if (isArray) {
    +          (data[arg] = data[arg] || []).push(val)
    +        } else {
    +          data[arg] = val
    +        }
    +
    +        continue
    +      }
    +
    +      if (isTypeDef(argType, StringType)) {
    +        if (la === undefined) {
    +          la = ''
    +        } else if (la.match(/^-{1,2}[^-]+/)) {
    +          la = ''
    +          i--
    +        }
    +      }
    +
    +      if (la && la.match(/^-{2,}$/)) {
    +        la = undefined
    +        i--
    +      }
    +
    +      val = la === undefined ? true : la
    +      if (isArray) {
    +        (data[arg] = data[arg] || []).push(val)
    +      } else {
    +        data[arg] = val
    +      }
    +
    +      i++
    +      continue
    +    }
    +    remain.push(arg)
    +  }
    +}
    +
    +const SINGLES = Symbol('singles')
    +const singleCharacters = (arg, shorthands) => {
    +  let singles = shorthands[SINGLES]
    +  if (!singles) {
    +    singles = Object.keys(shorthands).filter((s) => s.length === 1).reduce((l, r) => {
    +      l[r] = true
    +      return l
    +    }, {})
    +    shorthands[SINGLES] = singles
    +    debug('shorthand singles', singles)
    +  }
    +  const chrs = arg.split('').filter((c) => singles[c])
    +  return chrs.join('') === arg ? chrs : null
    +}
    +
    +function resolveShort (arg, ...rest) {
    +  const { abbrevHandler, types = {}, shorthands = {} } = rest.length ? rest.pop() : {}
    +  const shortAbbr = rest[0] ?? abbrev(Object.keys(shorthands))
    +  const abbrevs = rest[1] ?? abbrev(Object.keys(types))
    +
    +  // handle single-char shorthands glommed together, like
    +  // npm ls -glp, but only if there is one dash, and only if
    +  // all of the chars are single-char shorthands, and it's
    +  // not a match to some other abbrev.
    +  arg = arg.replace(/^-+/, '')
    +
    +  // if it's an exact known option, then don't go any further
    +  if (abbrevs[arg] === arg) {
    +    return null
    +  }
    +
    +  // if it's an exact known shortopt, same deal
    +  if (shorthands[arg]) {
    +    // make it an array, if it's a list of words
    +    if (shorthands[arg] && !Array.isArray(shorthands[arg])) {
    +      shorthands[arg] = shorthands[arg].split(/\s+/)
    +    }
    +
    +    return shorthands[arg]
    +  }
    +
    +  // first check to see if this arg is a set of single-char shorthands
    +  const chrs = singleCharacters(arg, shorthands)
    +  if (chrs) {
    +    return chrs.map((c) => shorthands[c]).reduce((l, r) => l.concat(r), [])
    +  }
    +
    +  // if it's an arg abbrev, and not a literal shorthand, then prefer the arg
    +  if (abbrevs[arg] && !shorthands[arg]) {
    +    return null
    +  }
    +
    +  // if it's an abbr for a shorthand, then use that
    +  // exact match has already happened so we don't need to account for that here
    +  if (shortAbbr[arg]) {
    +    if (abbrevHandler) {
    +      abbrevHandler(arg, shortAbbr[arg])
    +    } else if (abbrevHandler !== false) {
    +      debug(`abbrev: ${arg} -> ${shortAbbr[arg]}`)
    +    }
    +    arg = shortAbbr[arg]
    +  }
    +
    +  // make it an array, if it's a list of words
    +  if (shorthands[arg] && !Array.isArray(shorthands[arg])) {
    +    shorthands[arg] = shorthands[arg].split(/\s+/)
    +  }
    +
    +  return shorthands[arg]
    +}
    +
    +module.exports = {
    +  nopt,
    +  clean,
    +  parse,
    +  validate,
    +  resolveShort,
    +  typeDefs: defaultTypeDefs,
    +}
    diff --git a/deps/npm/workspaces/config/node_modules/nopt/lib/nopt.js b/deps/npm/workspaces/config/node_modules/nopt/lib/nopt.js
    new file mode 100644
    index 00000000000000..9a24342b374aa0
    --- /dev/null
    +++ b/deps/npm/workspaces/config/node_modules/nopt/lib/nopt.js
    @@ -0,0 +1,34 @@
    +const lib = require('./nopt-lib')
    +const defaultTypeDefs = require('./type-defs')
    +
    +// This is the version of nopt's API that requires setting typeDefs and invalidHandler
    +// on the required `nopt` object since it is a singleton. To not do a breaking change
    +// an API that requires all options be passed in is located in `nopt-lib.js` and
    +// exported here as lib.
    +// TODO(breaking): make API only work in non-singleton mode
    +
    +module.exports = exports = nopt
    +exports.clean = clean
    +exports.typeDefs = defaultTypeDefs
    +exports.lib = lib
    +
    +function nopt (types, shorthands, args = process.argv, slice = 2) {
    +  return lib.nopt(args.slice(slice), {
    +    types: types || {},
    +    shorthands: shorthands || {},
    +    typeDefs: exports.typeDefs,
    +    invalidHandler: exports.invalidHandler,
    +    unknownHandler: exports.unknownHandler,
    +    abbrevHandler: exports.abbrevHandler,
    +  })
    +}
    +
    +function clean (data, types, typeDefs = exports.typeDefs) {
    +  return lib.clean(data, {
    +    types: types || {},
    +    typeDefs,
    +    invalidHandler: exports.invalidHandler,
    +    unknownHandler: exports.unknownHandler,
    +    abbrevHandler: exports.abbrevHandler,
    +  })
    +}
    diff --git a/deps/npm/workspaces/config/node_modules/nopt/lib/type-defs.js b/deps/npm/workspaces/config/node_modules/nopt/lib/type-defs.js
    new file mode 100644
    index 00000000000000..608352ee248cc4
    --- /dev/null
    +++ b/deps/npm/workspaces/config/node_modules/nopt/lib/type-defs.js
    @@ -0,0 +1,91 @@
    +const url = require('url')
    +const path = require('path')
    +const Stream = require('stream').Stream
    +const os = require('os')
    +const debug = require('./debug')
    +
    +function validateString (data, k, val) {
    +  data[k] = String(val)
    +}
    +
    +function validatePath (data, k, val) {
    +  if (val === true) {
    +    return false
    +  }
    +  if (val === null) {
    +    return true
    +  }
    +
    +  val = String(val)
    +
    +  const isWin = process.platform === 'win32'
    +  const homePattern = isWin ? /^~(\/|\\)/ : /^~\//
    +  const home = os.homedir()
    +
    +  if (home && val.match(homePattern)) {
    +    data[k] = path.resolve(home, val.slice(2))
    +  } else {
    +    data[k] = path.resolve(val)
    +  }
    +  return true
    +}
    +
    +function validateNumber (data, k, val) {
    +  debug('validate Number %j %j %j', k, val, isNaN(val))
    +  if (isNaN(val)) {
    +    return false
    +  }
    +  data[k] = +val
    +}
    +
    +function validateDate (data, k, val) {
    +  const s = Date.parse(val)
    +  debug('validate Date %j %j %j', k, val, s)
    +  if (isNaN(s)) {
    +    return false
    +  }
    +  data[k] = new Date(val)
    +}
    +
    +function validateBoolean (data, k, val) {
    +  if (typeof val === 'string') {
    +    if (!isNaN(val)) {
    +      val = !!(+val)
    +    } else if (val === 'null' || val === 'false') {
    +      val = false
    +    } else {
    +      val = true
    +    }
    +  } else {
    +    val = !!val
    +  }
    +  data[k] = val
    +}
    +
    +function validateUrl (data, k, val) {
    +  // Changing this would be a breaking change in the npm cli
    +  /* eslint-disable-next-line node/no-deprecated-api */
    +  val = url.parse(String(val))
    +  if (!val.host) {
    +    return false
    +  }
    +  data[k] = val.href
    +}
    +
    +function validateStream (data, k, val) {
    +  if (!(val instanceof Stream)) {
    +    return false
    +  }
    +  data[k] = val
    +}
    +
    +module.exports = {
    +  String: { type: String, validate: validateString },
    +  Boolean: { type: Boolean, validate: validateBoolean },
    +  url: { type: url, validate: validateUrl },
    +  Number: { type: Number, validate: validateNumber },
    +  path: { type: path, validate: validatePath },
    +  Stream: { type: Stream, validate: validateStream },
    +  Date: { type: Date, validate: validateDate },
    +  Array: { type: Array },
    +}
    diff --git a/deps/npm/workspaces/config/node_modules/nopt/node_modules/abbrev/LICENSE b/deps/npm/workspaces/config/node_modules/nopt/node_modules/abbrev/LICENSE
    new file mode 100644
    index 00000000000000..9bcfa9d7d8d26e
    --- /dev/null
    +++ b/deps/npm/workspaces/config/node_modules/nopt/node_modules/abbrev/LICENSE
    @@ -0,0 +1,46 @@
    +This software is dual-licensed under the ISC and MIT licenses.
    +You may use this software under EITHER of the following licenses.
    +
    +----------
    +
    +The ISC License
    +
    +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
    +copyright notice and this permission notice appear in all copies.
    +
    +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
    +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
    +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
    +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
    +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
    +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
    +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    +
    +----------
    +
    +Copyright Isaac Z. Schlueter and Contributors
    +All rights reserved.
    +
    +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/workspaces/config/node_modules/nopt/node_modules/abbrev/README.md b/deps/npm/workspaces/config/node_modules/nopt/node_modules/abbrev/README.md
    new file mode 100644
    index 00000000000000..c6cdd7ea8417c7
    --- /dev/null
    +++ b/deps/npm/workspaces/config/node_modules/nopt/node_modules/abbrev/README.md
    @@ -0,0 +1,23 @@
    +# abbrev-js
    +
    +Just like [ruby's Abbrev](http://apidock.com/ruby/Abbrev).
    +
    +Usage:
    +
    +    var abbrev = require("abbrev");
    +    abbrev("foo", "fool", "folding", "flop");
    +
    +    // returns:
    +    { fl: 'flop'
    +    , flo: 'flop'
    +    , flop: 'flop'
    +    , fol: 'folding'
    +    , fold: 'folding'
    +    , foldi: 'folding'
    +    , foldin: 'folding'
    +    , folding: 'folding'
    +    , foo: 'foo'
    +    , fool: 'fool'
    +    }
    +
    +This is handy for command-line scripts, or other cases where you want to be able to accept shorthands.
    diff --git a/deps/npm/workspaces/config/node_modules/nopt/node_modules/abbrev/lib/index.js b/deps/npm/workspaces/config/node_modules/nopt/node_modules/abbrev/lib/index.js
    new file mode 100644
    index 00000000000000..f7bee0c6fc7ada
    --- /dev/null
    +++ b/deps/npm/workspaces/config/node_modules/nopt/node_modules/abbrev/lib/index.js
    @@ -0,0 +1,53 @@
    +module.exports = abbrev
    +
    +function abbrev (...args) {
    +  let list = args
    +  if (args.length === 1 && (Array.isArray(args[0]) || typeof args[0] === 'string')) {
    +    list = [].concat(args[0])
    +  }
    +
    +  for (let i = 0, l = list.length; i < l; i++) {
    +    list[i] = typeof list[i] === 'string' ? list[i] : String(list[i])
    +  }
    +
    +  // sort them lexicographically, so that they're next to their nearest kin
    +  list = list.sort(lexSort)
    +
    +  // walk through each, seeing how much it has in common with the next and previous
    +  const abbrevs = {}
    +  let prev = ''
    +  for (let ii = 0, ll = list.length; ii < ll; ii++) {
    +    const current = list[ii]
    +    const next = list[ii + 1] || ''
    +    let nextMatches = true
    +    let prevMatches = true
    +    if (current === next) {
    +      continue
    +    }
    +    let j = 0
    +    const cl = current.length
    +    for (; j < cl; j++) {
    +      const curChar = current.charAt(j)
    +      nextMatches = nextMatches && curChar === next.charAt(j)
    +      prevMatches = prevMatches && curChar === prev.charAt(j)
    +      if (!nextMatches && !prevMatches) {
    +        j++
    +        break
    +      }
    +    }
    +    prev = current
    +    if (j === cl) {
    +      abbrevs[current] = current
    +      continue
    +    }
    +    for (let a = current.slice(0, j); j <= cl; j++) {
    +      abbrevs[a] = current
    +      a += current.charAt(j)
    +    }
    +  }
    +  return abbrevs
    +}
    +
    +function lexSort (a, b) {
    +  return a === b ? 0 : a > b ? 1 : -1
    +}
    diff --git a/deps/npm/workspaces/config/node_modules/nopt/node_modules/abbrev/package.json b/deps/npm/workspaces/config/node_modules/nopt/node_modules/abbrev/package.json
    new file mode 100644
    index 00000000000000..077d4bccd0e69e
    --- /dev/null
    +++ b/deps/npm/workspaces/config/node_modules/nopt/node_modules/abbrev/package.json
    @@ -0,0 +1,45 @@
    +{
    +  "name": "abbrev",
    +  "version": "3.0.1",
    +  "description": "Like ruby's abbrev module, but in js",
    +  "author": "GitHub Inc.",
    +  "main": "lib/index.js",
    +  "scripts": {
    +    "test": "tap",
    +    "lint": "npm run eslint",
    +    "postlint": "template-oss-check",
    +    "template-oss-apply": "template-oss-apply --force",
    +    "lintfix": "npm run eslint -- --fix",
    +    "snap": "tap",
    +    "posttest": "npm run lint",
    +    "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""
    +  },
    +  "repository": {
    +    "type": "git",
    +    "url": "git+https://github.com/npm/abbrev-js.git"
    +  },
    +  "license": "ISC",
    +  "devDependencies": {
    +    "@npmcli/eslint-config": "^5.0.0",
    +    "@npmcli/template-oss": "4.24.3",
    +    "tap": "^16.3.0"
    +  },
    +  "tap": {
    +    "nyc-arg": [
    +      "--exclude",
    +      "tap-snapshots/**"
    +    ]
    +  },
    +  "files": [
    +    "bin/",
    +    "lib/"
    +  ],
    +  "engines": {
    +    "node": "^18.17.0 || >=20.5.0"
    +  },
    +  "templateOSS": {
    +    "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    +    "version": "4.24.3",
    +    "publish": true
    +  }
    +}
    diff --git a/deps/npm/workspaces/config/node_modules/nopt/package.json b/deps/npm/workspaces/config/node_modules/nopt/package.json
    new file mode 100644
    index 00000000000000..0732ada73c1d00
    --- /dev/null
    +++ b/deps/npm/workspaces/config/node_modules/nopt/package.json
    @@ -0,0 +1,52 @@
    +{
    +  "name": "nopt",
    +  "version": "8.1.0",
    +  "description": "Option parsing for Node, supporting types, shorthands, etc. Used by npm.",
    +  "author": "GitHub Inc.",
    +  "main": "lib/nopt.js",
    +  "scripts": {
    +    "test": "tap",
    +    "lint": "npm run eslint",
    +    "postlint": "template-oss-check",
    +    "template-oss-apply": "template-oss-apply --force",
    +    "lintfix": "npm run eslint -- --fix",
    +    "snap": "tap",
    +    "posttest": "npm run lint",
    +    "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""
    +  },
    +  "repository": {
    +    "type": "git",
    +    "url": "git+https://github.com/npm/nopt.git"
    +  },
    +  "bin": {
    +    "nopt": "bin/nopt.js"
    +  },
    +  "license": "ISC",
    +  "dependencies": {
    +    "abbrev": "^3.0.0"
    +  },
    +  "devDependencies": {
    +    "@npmcli/eslint-config": "^5.0.0",
    +    "@npmcli/template-oss": "4.23.6",
    +    "tap": "^16.3.0"
    +  },
    +  "tap": {
    +    "nyc-arg": [
    +      "--exclude",
    +      "tap-snapshots/**"
    +    ]
    +  },
    +  "files": [
    +    "bin/",
    +    "lib/"
    +  ],
    +  "engines": {
    +    "node": "^18.17.0 || >=20.5.0"
    +  },
    +  "templateOSS": {
    +    "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    +    "windowsCI": false,
    +    "version": "4.23.6",
    +    "publish": true
    +  }
    +}
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/LICENSE b/deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/LICENSE
    similarity index 92%
    rename from deps/npm/node_modules/node-gyp/node_modules/lru-cache/LICENSE
    rename to deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/LICENSE
    index f785757cd63f86..19cec97b184683 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/lru-cache/LICENSE
    +++ b/deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/LICENSE
    @@ -1,6 +1,6 @@
     The ISC License
     
    -Copyright (c) 2010-2023 Isaac Z. Schlueter and Contributors
    +Copyright (c) npm, Inc.
     
     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/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/README.md b/deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/README.md
    new file mode 100644
    index 00000000000000..edd23bd26d64c8
    --- /dev/null
    +++ b/deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/README.md
    @@ -0,0 +1,109 @@
    +# @npmcli/installed-package-contents
    +
    +Get the list of files installed in a package in node_modules, including
    +bundled dependencies.
    +
    +This is useful if you want to remove a package node from the tree _without_
    +removing its child nodes, for example to extract a new version of the
    +dependency into place safely.
    +
    +It's sort of the reflection of [npm-packlist](http://npm.im/npm-packlist),
    +but for listing out the _installed_ files rather than the files that _will_
    +be installed.  This is of course a much simpler operation, because we don't
    +have to handle ignore files or package.json `files` lists.
    +
    +## USAGE
    +
    +```js
    +// programmatic usage
    +const pkgContents = require('@npmcli/installed-package-contents')
    +
    +pkgContents({ path: 'node_modules/foo', depth: 1 }).then(files => {
    +  // files is an array of items that need to be passed to
    +  // rimraf or moved out of the way to make the folder empty
    +  // if foo bundled dependencies, those will be included.
    +  // It will not traverse into child directories, because we set
    +  // depth:1 in the options.
    +  // If the folder doesn't exist, this returns an empty array.
    +})
    +
    +pkgContents({ path: 'node_modules/foo', depth: Infinity }).then(files => {
    +  // setting depth:Infinity tells it to keep walking forever
    +  // until it hits something that isn't a directory, so we'll
    +  // just get the list of all files, but not their containing
    +  // directories.
    +})
    +```
    +
    +As a CLI:
    +
    +```bash
    +$ installed-package-contents node_modules/bundle-some -d1
    +node_modules/.bin/some
    +node_modules/bundle-some/package.json
    +node_modules/bundle-some/node_modules/@scope/baz
    +node_modules/bundle-some/node_modules/.bin/foo
    +node_modules/bundle-some/node_modules/foo
    +```
    +
    +CLI options:
    +
    +```
    +Usage:
    +  installed-package-contents  [-d --depth=]
    +
    +Lists the files installed for a package specified by .
    +
    +Options:
    +  -d --depth=   Provide a numeric value ("Infinity" is allowed)
    +                      to specify how deep in the file tree to traverse.
    +                      Default=1
    +  -h --help           Show this usage information
    +```
    +
    +## OPTIONS
    +
    +* `depth` Number, default `1`.  How deep to traverse through folders to get
    +    contents.  Typically you'd want to set this to either `1` (to get the
    +    surface files and folders) or `Infinity` (to get all files), but any
    +    other positive number is supported as well.  If set to `0` or a
    +    negative number, returns the path provided and (if it is a package) its
    +    set of linked bins.
    +* `path` Required.  Path to the package in `node_modules` where traversal
    +    should begin.
    +
    +## RETURN VALUE
    +
    +A Promise that resolves to an array of fully-resolved files and folders
    +matching the criteria.  This includes all bundled dependencies in
    +`node_modules`, and any linked executables in `node_modules/.bin` that the
    +package caused to be installed.
    +
    +An empty or missing package folder will return an empty array.  Empty
    +directories _within_ package contents are listed, even if the `depth`
    +argument would cause them to be traversed into.
    +
    +## CAVEAT
    +
    +If using this module to generate a list of files that should be recursively
    +removed to clear away the package, note that this will leave empty
    +directories behind in certain cases:
    +
    +- If all child packages are bundled dependencies, then the
    +    `node_modules` folder will remain.
    +- If all child packages within a given scope were bundled dependencies,
    +    then the `node_modules/@scope` folder will remain.
    +- If all linked bin scripts were removed, then an empty `node_modules/.bin`
    +    folder will remain.
    +
    +In the interest of speed and algorithmic complexity, this module does _not_
    +do a subsequent readdir to see if it would remove all directory entries,
    +though it would be easier to look at if it returned `node_modules` or
    +`.bin` in that case rather than the contents.  However, if the intent is to
    +pass these arguments to `rimraf`, it hardly makes sense to do _two_
    +`readdir` calls just so that we can have the luxury of having to make a
    +third.
    +
    +Since the primary use case is to delete a package's contents so that they
    +can be re-filled with a new version of that package, this caveat does not
    +pose a problem.  Empty directories are already ignored by both npm and git.
    diff --git a/deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/bin/index.js b/deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/bin/index.js
    new file mode 100755
    index 00000000000000..7b83b23bf168c0
    --- /dev/null
    +++ b/deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/bin/index.js
    @@ -0,0 +1,44 @@
    +#! /usr/bin/env node
    +
    +const { relative } = require('path')
    +const pkgContents = require('../')
    +
    +const usage = `Usage:
    +  installed-package-contents  [-d --depth=]
    +
    +Lists the files installed for a package specified by .
    +
    +Options:
    +  -d --depth=   Provide a numeric value ("Infinity" is allowed)
    +                      to specify how deep in the file tree to traverse.
    +                      Default=1
    +  -h --help           Show this usage information`
    +
    +const options = {}
    +
    +process.argv.slice(2).forEach(arg => {
    +  let match
    +  if ((match = arg.match(/^(?:--depth=|-d)([0-9]+|Infinity)/))) {
    +    options.depth = +match[1]
    +  } else if (arg === '-h' || arg === '--help') {
    +    console.log(usage)
    +    process.exit(0)
    +  } else {
    +    options.path = arg
    +  }
    +})
    +
    +if (!options.path) {
    +  console.error('ERROR: no path provided')
    +  console.error(usage)
    +  process.exit(1)
    +}
    +
    +const cwd = process.cwd()
    +
    +pkgContents(options)
    +  .then(list => list.sort().forEach(p => console.log(relative(cwd, p))))
    +  .catch(/* istanbul ignore next - pretty unusual */ er => {
    +    console.error(er)
    +    process.exit(1)
    +  })
    diff --git a/deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/lib/index.js b/deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/lib/index.js
    new file mode 100644
    index 00000000000000..ab1486cd01d003
    --- /dev/null
    +++ b/deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/lib/index.js
    @@ -0,0 +1,181 @@
    +// to GET CONTENTS for folder at PATH (which may be a PACKAGE):
    +// - if PACKAGE, read path/package.json
    +//   - if bins in ../node_modules/.bin, add those to result
    +// - if depth >= maxDepth, add PATH to result, and finish
    +// - readdir(PATH, with file types)
    +// - add all FILEs in PATH to result
    +// - if PARENT:
    +//   - if depth < maxDepth, add GET CONTENTS of all DIRs in PATH
    +//   - else, add all DIRs in PATH
    +// - if no parent
    +//   - if no bundled deps,
    +//     - if depth < maxDepth, add GET CONTENTS of DIRs in path except
    +//       node_modules
    +//     - else, add all DIRs in path other than node_modules
    +//   - if has bundled deps,
    +//     - get list of bundled deps
    +//     - add GET CONTENTS of bundled deps, PACKAGE=true, depth + 1
    +
    +const bundled = require('npm-bundled')
    +const { readFile, readdir, stat } = require('fs/promises')
    +const { resolve, basename, dirname } = require('path')
    +const normalizePackageBin = require('npm-normalize-package-bin')
    +
    +const readPackage = ({ path, packageJsonCache }) => packageJsonCache.has(path)
    +  ? Promise.resolve(packageJsonCache.get(path))
    +  : readFile(path).then(json => {
    +    const pkg = normalizePackageBin(JSON.parse(json))
    +    packageJsonCache.set(path, pkg)
    +    return pkg
    +  }).catch(() => null)
    +
    +// just normalize bundle deps and bin, that's all we care about here.
    +const normalized = Symbol('package data has been normalized')
    +const rpj = ({ path, packageJsonCache }) => readPackage({ path, packageJsonCache })
    +  .then(pkg => {
    +    if (!pkg || pkg[normalized]) {
    +      return pkg
    +    }
    +    if (pkg.bundledDependencies && !pkg.bundleDependencies) {
    +      pkg.bundleDependencies = pkg.bundledDependencies
    +      delete pkg.bundledDependencies
    +    }
    +    const bd = pkg.bundleDependencies
    +    if (bd === true) {
    +      pkg.bundleDependencies = [
    +        ...Object.keys(pkg.dependencies || {}),
    +        ...Object.keys(pkg.optionalDependencies || {}),
    +      ]
    +    }
    +    if (typeof bd === 'object' && !Array.isArray(bd)) {
    +      pkg.bundleDependencies = Object.keys(bd)
    +    }
    +    pkg[normalized] = true
    +    return pkg
    +  })
    +
    +const pkgContents = async ({
    +  path,
    +  depth = 1,
    +  currentDepth = 0,
    +  pkg = null,
    +  result = null,
    +  packageJsonCache = null,
    +}) => {
    +  if (!result) {
    +    result = new Set()
    +  }
    +
    +  if (!packageJsonCache) {
    +    packageJsonCache = new Map()
    +  }
    +
    +  if (pkg === true) {
    +    return rpj({ path: path + '/package.json', packageJsonCache })
    +      .then(p => pkgContents({
    +        path,
    +        depth,
    +        currentDepth,
    +        pkg: p,
    +        result,
    +        packageJsonCache,
    +      }))
    +  }
    +
    +  if (pkg) {
    +    // add all bins to result if they exist
    +    if (pkg.bin) {
    +      const dir = dirname(path)
    +      const scope = basename(dir)
    +      const nm = /^@.+/.test(scope) ? dirname(dir) : dir
    +
    +      const binFiles = []
    +      Object.keys(pkg.bin).forEach(b => {
    +        const base = resolve(nm, '.bin', b)
    +        binFiles.push(base, base + '.cmd', base + '.ps1')
    +      })
    +
    +      const bins = await Promise.all(
    +        binFiles.map(b => stat(b).then(() => b).catch(() => null))
    +      )
    +      bins.filter(b => b).forEach(b => result.add(b))
    +    }
    +  }
    +
    +  if (currentDepth >= depth) {
    +    result.add(path)
    +    return result
    +  }
    +
    +  // we'll need bundle list later, so get that now in parallel
    +  const [dirEntries, bundleDeps] = await Promise.all([
    +    readdir(path, { withFileTypes: true }),
    +    currentDepth === 0 && pkg && pkg.bundleDependencies
    +      ? bundled({ path, packageJsonCache }) : null,
    +  ]).catch(() => [])
    +
    +  // not a thing, probably a missing folder
    +  if (!dirEntries) {
    +    return result
    +  }
    +
    +  // empty folder, just add the folder itself to the result
    +  if (!dirEntries.length && !bundleDeps && currentDepth !== 0) {
    +    result.add(path)
    +    return result
    +  }
    +
    +  const recursePromises = []
    +
    +  for (const entry of dirEntries) {
    +    const p = resolve(path, entry.name)
    +    if (entry.isDirectory() === false) {
    +      result.add(p)
    +      continue
    +    }
    +
    +    if (currentDepth !== 0 || entry.name !== 'node_modules') {
    +      if (currentDepth < depth - 1) {
    +        recursePromises.push(pkgContents({
    +          path: p,
    +          packageJsonCache,
    +          depth,
    +          currentDepth: currentDepth + 1,
    +          result,
    +        }))
    +      } else {
    +        result.add(p)
    +      }
    +      continue
    +    }
    +  }
    +
    +  if (bundleDeps) {
    +    // bundle deps are all folders
    +    // we always recurse to get pkg bins, but if currentDepth is too high,
    +    // it'll return early before walking their contents.
    +    recursePromises.push(...bundleDeps.map(dep => {
    +      const p = resolve(path, 'node_modules', dep)
    +      return pkgContents({
    +        path: p,
    +        packageJsonCache,
    +        pkg: true,
    +        depth,
    +        currentDepth: currentDepth + 1,
    +        result,
    +      })
    +    }))
    +  }
    +
    +  if (recursePromises.length) {
    +    await Promise.all(recursePromises)
    +  }
    +
    +  return result
    +}
    +
    +module.exports = ({ path, ...opts }) => pkgContents({
    +  path: resolve(path),
    +  ...opts,
    +  pkg: true,
    +}).then(results => [...results])
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/package.json b/deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/package.json
    similarity index 58%
    rename from deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/package.json
    rename to deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/package.json
    index 4d648fb5dfe052..d5b68a737daf49 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/@npmcli/agent/package.json
    +++ b/deps/npm/workspaces/libnpmdiff/node_modules/@npmcli/installed-package-contents/package.json
    @@ -1,25 +1,36 @@
     {
    -  "name": "@npmcli/agent",
    +  "name": "@npmcli/installed-package-contents",
       "version": "3.0.0",
    -  "description": "the http/https agent used by the npm cli",
    +  "description": "Get the list of files installed in a package in node_modules, including bundled dependencies",
    +  "author": "GitHub Inc.",
       "main": "lib/index.js",
    +  "bin": {
    +    "installed-package-contents": "bin/index.js"
    +  },
    +  "license": "ISC",
       "scripts": {
    -    "gencerts": "bash scripts/create-cert.sh",
         "test": "tap",
    +    "snap": "tap",
         "lint": "npm run eslint",
         "postlint": "template-oss-check",
         "template-oss-apply": "template-oss-apply --force",
         "lintfix": "npm run eslint -- --fix",
    -    "snap": "tap",
         "posttest": "npm run lint",
         "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""
       },
    -  "author": "GitHub Inc.",
    -  "license": "ISC",
    -  "bugs": {
    -    "url": "https://github.com/npm/agent/issues"
    +  "devDependencies": {
    +    "@npmcli/eslint-config": "^5.0.0",
    +    "@npmcli/template-oss": "4.23.3",
    +    "tap": "^16.3.0"
    +  },
    +  "dependencies": {
    +    "npm-bundled": "^4.0.0",
    +    "npm-normalize-package-bin": "^4.0.0"
    +  },
    +  "repository": {
    +    "type": "git",
    +    "url": "git+https://github.com/npm/installed-package-contents.git"
       },
    -  "homepage": "https://github.com/npm/agent#readme",
       "files": [
         "bin/",
         "lib/"
    @@ -29,27 +40,8 @@
       },
       "templateOSS": {
         "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    -    "version": "4.23.1",
    -    "publish": "true"
    -  },
    -  "dependencies": {
    -    "agent-base": "^7.1.0",
    -    "http-proxy-agent": "^7.0.0",
    -    "https-proxy-agent": "^7.0.1",
    -    "lru-cache": "^10.0.1",
    -    "socks-proxy-agent": "^8.0.3"
    -  },
    -  "devDependencies": {
    -    "@npmcli/eslint-config": "^5.0.0",
    -    "@npmcli/template-oss": "4.23.1",
    -    "minipass-fetch": "^3.0.3",
    -    "nock": "^13.2.7",
    -    "socksv5": "^0.0.6",
    -    "tap": "^16.3.0"
    -  },
    -  "repository": {
    -    "type": "git",
    -    "url": "git+https://github.com/npm/agent.git"
    +    "version": "4.23.3",
    +    "publish": true
       },
       "tap": {
         "nyc-arg": [
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/minimatch/LICENSE b/deps/npm/workspaces/libnpmdiff/node_modules/npm-bundled/LICENSE
    similarity index 92%
    rename from deps/npm/node_modules/node-gyp/node_modules/minimatch/LICENSE
    rename to deps/npm/workspaces/libnpmdiff/node_modules/npm-bundled/LICENSE
    index 1493534e60dce4..20a47625409237 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/minimatch/LICENSE
    +++ b/deps/npm/workspaces/libnpmdiff/node_modules/npm-bundled/LICENSE
    @@ -1,6 +1,6 @@
     The ISC License
     
    -Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors
    +Copyright (c) npm, Inc. 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/workspaces/libnpmdiff/node_modules/npm-bundled/README.md b/deps/npm/workspaces/libnpmdiff/node_modules/npm-bundled/README.md
    new file mode 100644
    index 00000000000000..df2d8845be1479
    --- /dev/null
    +++ b/deps/npm/workspaces/libnpmdiff/node_modules/npm-bundled/README.md
    @@ -0,0 +1,48 @@
    +# npm-bundled
    +
    +Run this in a node package, and it'll tell you which things in
    +node_modules are bundledDependencies, or transitive dependencies of
    +bundled dependencies.
    +
    +[![Build Status](https://img.shields.io/github/actions/workflow/status/npm/npm-bundled/ci.yml?branch=main)](https://github.com/npm/npm-bundled)
    +
    +## USAGE
    +
    +To get the list of deps at the top level that are bundled (or
    +transitive deps of a bundled dep) run this:
    +
    +```js
    +const bundled = require('npm-bundled')
    +
    +// async version
    +bundled({ path: '/path/to/pkg/defaults/to/cwd'}, (er, list) => {
    +  // er means it had an error, which is _hella_ weird
    +  // list is a list of package names, like `fooblz` or `@corp/blerg`
    +  // the might not all be deps of the top level, because transitives
    +})
    +
    +// async promise version
    +bundled({ path: '/path/to/pkg/defaults/to/cwd'}).then(list => {
    +  // so promisey!
    +  // actually the callback version returns a promise, too, it just
    +  // attaches the supplied callback to the promise
    +})
    +
    +// sync version, throws if there's an error
    +const list = bundled.sync({ path: '/path/to/pkg/defaults/to/cwd'})
    +```
    +
    +That's basically all you need to know.  If you care to dig into it,
    +you can also use the `bundled.Walker` and `bundled.WalkerSync`
    +classes to get fancy.
    +
    +This library does not write anything to the filesystem, but it _may_
    +have undefined behavior if the structure of `node_modules` changes
    +while it's reading deps.
    +
    +All symlinks are followed.  This means that it can lead to surprising
    +results if a symlinked bundled dependency has a missing dependency
    +that is satisfied at the top level.  Since package creation resolves
    +symlinks as well, this is an edge case where package creation and
    +development environment are not going to be aligned, and is best
    +avoided.
    diff --git a/deps/npm/workspaces/libnpmdiff/node_modules/npm-bundled/lib/index.js b/deps/npm/workspaces/libnpmdiff/node_modules/npm-bundled/lib/index.js
    new file mode 100644
    index 00000000000000..f5ee0bb3ea7653
    --- /dev/null
    +++ b/deps/npm/workspaces/libnpmdiff/node_modules/npm-bundled/lib/index.js
    @@ -0,0 +1,254 @@
    +'use strict'
    +
    +// walk the tree of deps starting from the top level list of bundled deps
    +// Any deps at the top level that are depended on by a bundled dep that
    +// does not have that dep in its own node_modules folder are considered
    +// bundled deps as well.  This list of names can be passed to npm-packlist
    +// as the "bundled" argument.  Additionally, packageJsonCache is shared so
    +// packlist doesn't have to re-read files already consumed in this pass
    +
    +const fs = require('fs')
    +const path = require('path')
    +const EE = require('events').EventEmitter
    +// we don't care about the package bins, but we share a pj cache
    +// with other modules that DO care about it, so keep it nice.
    +const normalizePackageBin = require('npm-normalize-package-bin')
    +
    +class BundleWalker extends EE {
    +  constructor (opt) {
    +    opt = opt || {}
    +    super(opt)
    +    this.path = path.resolve(opt.path || process.cwd())
    +
    +    this.parent = opt.parent || null
    +    if (this.parent) {
    +      this.result = this.parent.result
    +      // only collect results in node_modules folders at the top level
    +      // since the node_modules in a bundled dep is included always
    +      if (!this.parent.parent) {
    +        const base = path.basename(this.path)
    +        const scope = path.basename(path.dirname(this.path))
    +        this.result.add(/^@/.test(scope) ? scope + '/' + base : base)
    +      }
    +      this.root = this.parent.root
    +      this.packageJsonCache = this.parent.packageJsonCache
    +    } else {
    +      this.result = new Set()
    +      this.root = this.path
    +      this.packageJsonCache = opt.packageJsonCache || new Map()
    +    }
    +
    +    this.seen = new Set()
    +    this.didDone = false
    +    this.children = 0
    +    this.node_modules = []
    +    this.package = null
    +    this.bundle = null
    +  }
    +
    +  addListener (ev, fn) {
    +    return this.on(ev, fn)
    +  }
    +
    +  on (ev, fn) {
    +    const ret = super.on(ev, fn)
    +    if (ev === 'done' && this.didDone) {
    +      this.emit('done', this.result)
    +    }
    +    return ret
    +  }
    +
    +  done () {
    +    if (!this.didDone) {
    +      this.didDone = true
    +      if (!this.parent) {
    +        const res = Array.from(this.result)
    +        this.result = res
    +        this.emit('done', res)
    +      } else {
    +        this.emit('done')
    +      }
    +    }
    +  }
    +
    +  start () {
    +    const pj = path.resolve(this.path, 'package.json')
    +    if (this.packageJsonCache.has(pj)) {
    +      this.onPackage(this.packageJsonCache.get(pj))
    +    } else {
    +      this.readPackageJson(pj)
    +    }
    +    return this
    +  }
    +
    +  readPackageJson (pj) {
    +    fs.readFile(pj, (er, data) =>
    +      er ? this.done() : this.onPackageJson(pj, data))
    +  }
    +
    +  onPackageJson (pj, data) {
    +    try {
    +      this.package = normalizePackageBin(JSON.parse(data + ''))
    +    } catch (er) {
    +      return this.done()
    +    }
    +    this.packageJsonCache.set(pj, this.package)
    +    this.onPackage(this.package)
    +  }
    +
    +  allDepsBundled (pkg) {
    +    return Object.keys(pkg.dependencies || {}).concat(
    +      Object.keys(pkg.optionalDependencies || {}))
    +  }
    +
    +  onPackage (pkg) {
    +    // all deps are bundled if we got here as a child.
    +    // otherwise, only bundle bundledDeps
    +    // Get a unique-ified array with a short-lived Set
    +    const bdRaw = this.parent ? this.allDepsBundled(pkg)
    +      : pkg.bundleDependencies || pkg.bundledDependencies || []
    +
    +    const bd = Array.from(new Set(
    +      Array.isArray(bdRaw) ? bdRaw
    +      : bdRaw === true ? this.allDepsBundled(pkg)
    +      : Object.keys(bdRaw)))
    +
    +    if (!bd.length) {
    +      return this.done()
    +    }
    +
    +    this.bundle = bd
    +    this.readModules()
    +  }
    +
    +  readModules () {
    +    readdirNodeModules(this.path + '/node_modules', (er, nm) =>
    +      er ? this.onReaddir([]) : this.onReaddir(nm))
    +  }
    +
    +  onReaddir (nm) {
    +    // keep track of what we have, in case children need it
    +    this.node_modules = nm
    +
    +    this.bundle.forEach(dep => this.childDep(dep))
    +    if (this.children === 0) {
    +      this.done()
    +    }
    +  }
    +
    +  childDep (dep) {
    +    if (this.node_modules.indexOf(dep) !== -1) {
    +      if (!this.seen.has(dep)) {
    +        this.seen.add(dep)
    +        this.child(dep)
    +      }
    +    } else if (this.parent) {
    +      this.parent.childDep(dep)
    +    }
    +  }
    +
    +  child (dep) {
    +    const p = this.path + '/node_modules/' + dep
    +    this.children += 1
    +    const child = new BundleWalker({
    +      path: p,
    +      parent: this,
    +    })
    +    child.on('done', () => {
    +      if (--this.children === 0) {
    +        this.done()
    +      }
    +    })
    +    child.start()
    +  }
    +}
    +
    +class BundleWalkerSync extends BundleWalker {
    +  start () {
    +    super.start()
    +    this.done()
    +    return this
    +  }
    +
    +  readPackageJson (pj) {
    +    try {
    +      this.onPackageJson(pj, fs.readFileSync(pj))
    +    } catch {
    +      // empty catch
    +    }
    +    return this
    +  }
    +
    +  readModules () {
    +    try {
    +      this.onReaddir(readdirNodeModulesSync(this.path + '/node_modules'))
    +    } catch {
    +      this.onReaddir([])
    +    }
    +  }
    +
    +  child (dep) {
    +    new BundleWalkerSync({
    +      path: this.path + '/node_modules/' + dep,
    +      parent: this,
    +    }).start()
    +  }
    +}
    +
    +const readdirNodeModules = (nm, cb) => {
    +  fs.readdir(nm, (er, set) => {
    +    if (er) {
    +      cb(er)
    +    } else {
    +      const scopes = set.filter(f => /^@/.test(f))
    +      if (!scopes.length) {
    +        cb(null, set)
    +      } else {
    +        const unscoped = set.filter(f => !/^@/.test(f))
    +        let count = scopes.length
    +        scopes.forEach(scope => {
    +          fs.readdir(nm + '/' + scope, (readdirEr, pkgs) => {
    +            if (readdirEr || !pkgs.length) {
    +              unscoped.push(scope)
    +            } else {
    +              unscoped.push.apply(unscoped, pkgs.map(p => scope + '/' + p))
    +            }
    +            if (--count === 0) {
    +              cb(null, unscoped)
    +            }
    +          })
    +        })
    +      }
    +    }
    +  })
    +}
    +
    +const readdirNodeModulesSync = nm => {
    +  const set = fs.readdirSync(nm)
    +  const unscoped = set.filter(f => !/^@/.test(f))
    +  const scopes = set.filter(f => /^@/.test(f)).map(scope => {
    +    try {
    +      const pkgs = fs.readdirSync(nm + '/' + scope)
    +      return pkgs.length ? pkgs.map(p => scope + '/' + p) : [scope]
    +    } catch (er) {
    +      return [scope]
    +    }
    +  }).reduce((a, b) => a.concat(b), [])
    +  return unscoped.concat(scopes)
    +}
    +
    +const walk = (options, callback) => {
    +  const p = new Promise((resolve, reject) => {
    +    new BundleWalker(options).on('done', resolve).on('error', reject).start()
    +  })
    +  return callback ? p.then(res => callback(null, res), callback) : p
    +}
    +
    +const walkSync = options => {
    +  return new BundleWalkerSync(options).start().result
    +}
    +
    +module.exports = walk
    +walk.sync = walkSync
    +walk.BundleWalker = BundleWalker
    +walk.BundleWalkerSync = BundleWalkerSync
    diff --git a/deps/npm/workspaces/libnpmdiff/node_modules/npm-bundled/package.json b/deps/npm/workspaces/libnpmdiff/node_modules/npm-bundled/package.json
    new file mode 100644
    index 00000000000000..c5daf35dbaa841
    --- /dev/null
    +++ b/deps/npm/workspaces/libnpmdiff/node_modules/npm-bundled/package.json
    @@ -0,0 +1,49 @@
    +{
    +  "name": "npm-bundled",
    +  "version": "4.0.0",
    +  "description": "list things in node_modules that are bundledDependencies, or transitive dependencies thereof",
    +  "main": "lib/index.js",
    +  "repository": {
    +    "type": "git",
    +    "url": "git+https://github.com/npm/npm-bundled.git"
    +  },
    +  "author": "GitHub Inc.",
    +  "license": "ISC",
    +  "devDependencies": {
    +    "@npmcli/eslint-config": "^5.0.0",
    +    "@npmcli/template-oss": "4.23.3",
    +    "mutate-fs": "^2.1.1",
    +    "tap": "^16.3.0"
    +  },
    +  "scripts": {
    +    "test": "tap",
    +    "lint": "npm run eslint",
    +    "postlint": "template-oss-check",
    +    "template-oss-apply": "template-oss-apply --force",
    +    "lintfix": "npm run eslint -- --fix",
    +    "snap": "tap",
    +    "posttest": "npm run lint",
    +    "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""
    +  },
    +  "files": [
    +    "bin/",
    +    "lib/"
    +  ],
    +  "dependencies": {
    +    "npm-normalize-package-bin": "^4.0.0"
    +  },
    +  "engines": {
    +    "node": "^18.17.0 || >=20.5.0"
    +  },
    +  "templateOSS": {
    +    "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    +    "version": "4.23.3",
    +    "publish": true
    +  },
    +  "tap": {
    +    "nyc-arg": [
    +      "--exclude",
    +      "tap-snapshots/**"
    +    ]
    +  }
    +}
    diff --git a/deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/LICENSE b/deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/LICENSE
    new file mode 100644
    index 00000000000000..19cec97b184683
    --- /dev/null
    +++ b/deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/LICENSE
    @@ -0,0 +1,15 @@
    +The ISC License
    +
    +Copyright (c) npm, Inc.
    +
    +Permission to use, copy, modify, and/or distribute this software for any
    +purpose with or without fee is hereby granted, provided that the above
    +copyright notice and this permission notice appear in all copies.
    +
    +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
    +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
    +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
    +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
    +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
    +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
    +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    diff --git a/deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/README.md b/deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/README.md
    new file mode 100644
    index 00000000000000..65ba316a0d97ee
    --- /dev/null
    +++ b/deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/README.md
    @@ -0,0 +1,14 @@
    +# npm-normalize-package-bin
    +
    +Turn any flavor of allowable package.json bin into a normalized object.
    +
    +## API
    +
    +```js
    +const normalize = require('npm-normalize-package-bin')
    +const pkg = {name: 'foo', bin: 'bar'}
    +console.log(normalize(pkg)) // {name:'foo', bin:{foo: 'bar'}}
    +```
    +
    +Also strips out weird dots and slashes to prevent accidental and/or
    +malicious bad behavior when the package is installed.
    diff --git a/deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/lib/index.js b/deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/lib/index.js
    new file mode 100644
    index 00000000000000..3cb8478cf6e2f3
    --- /dev/null
    +++ b/deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/lib/index.js
    @@ -0,0 +1,64 @@
    +// pass in a manifest with a 'bin' field here, and it'll turn it
    +// into a properly santized bin object
    +const { join, basename } = require('path')
    +
    +const normalize = pkg =>
    +  !pkg.bin ? removeBin(pkg)
    +  : typeof pkg.bin === 'string' ? normalizeString(pkg)
    +  : Array.isArray(pkg.bin) ? normalizeArray(pkg)
    +  : typeof pkg.bin === 'object' ? normalizeObject(pkg)
    +  : removeBin(pkg)
    +
    +const normalizeString = pkg => {
    +  if (!pkg.name) {
    +    return removeBin(pkg)
    +  }
    +  pkg.bin = { [pkg.name]: pkg.bin }
    +  return normalizeObject(pkg)
    +}
    +
    +const normalizeArray = pkg => {
    +  pkg.bin = pkg.bin.reduce((acc, k) => {
    +    acc[basename(k)] = k
    +    return acc
    +  }, {})
    +  return normalizeObject(pkg)
    +}
    +
    +const removeBin = pkg => {
    +  delete pkg.bin
    +  return pkg
    +}
    +
    +const normalizeObject = pkg => {
    +  const orig = pkg.bin
    +  const clean = {}
    +  let hasBins = false
    +  Object.keys(orig).forEach(binKey => {
    +    const base = join('/', basename(binKey.replace(/\\|:/g, '/'))).slice(1)
    +
    +    if (typeof orig[binKey] !== 'string' || !base) {
    +      return
    +    }
    +
    +    const binTarget = join('/', orig[binKey].replace(/\\/g, '/'))
    +      .replace(/\\/g, '/').slice(1)
    +
    +    if (!binTarget) {
    +      return
    +    }
    +
    +    clean[base] = binTarget
    +    hasBins = true
    +  })
    +
    +  if (hasBins) {
    +    pkg.bin = clean
    +  } else {
    +    delete pkg.bin
    +  }
    +
    +  return pkg
    +}
    +
    +module.exports = normalize
    diff --git a/deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/package.json b/deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/package.json
    new file mode 100644
    index 00000000000000..a1aeef0e1e7512
    --- /dev/null
    +++ b/deps/npm/workspaces/libnpmdiff/node_modules/npm-normalize-package-bin/package.json
    @@ -0,0 +1,45 @@
    +{
    +  "name": "npm-normalize-package-bin",
    +  "version": "4.0.0",
    +  "description": "Turn any flavor of allowable package.json bin into a normalized object",
    +  "main": "lib/index.js",
    +  "repository": {
    +    "type": "git",
    +    "url": "git+https://github.com/npm/npm-normalize-package-bin.git"
    +  },
    +  "author": "GitHub Inc.",
    +  "license": "ISC",
    +  "scripts": {
    +    "test": "tap",
    +    "snap": "tap",
    +    "lint": "npm run eslint",
    +    "postlint": "template-oss-check",
    +    "template-oss-apply": "template-oss-apply --force",
    +    "lintfix": "npm run eslint -- --fix",
    +    "posttest": "npm run lint",
    +    "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""
    +  },
    +  "devDependencies": {
    +    "@npmcli/eslint-config": "^5.0.0",
    +    "@npmcli/template-oss": "4.23.3",
    +    "tap": "^16.3.0"
    +  },
    +  "files": [
    +    "bin/",
    +    "lib/"
    +  ],
    +  "engines": {
    +    "node": "^18.17.0 || >=20.5.0"
    +  },
    +  "templateOSS": {
    +    "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    +    "version": "4.23.3",
    +    "publish": "true"
    +  },
    +  "tap": {
    +    "nyc-arg": [
    +      "--exclude",
    +      "tap-snapshots/**"
    +    ]
    +  }
    +}