From 4160c07c43cc82e99c2d9e7bd2d4a80571ac0069 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 6 Jul 2024 14:07:41 +0000
Subject: [PATCH 1/2] chore(deps): bump the production group across 1 directory
 with 2 updates

Bumps the production group with 2 updates in the / directory: [command-line-args](https://github.com/75lb/command-line-args) and [tar](https://github.com/isaacs/node-tar).


Updates `command-line-args` from 5.2.1 to 6.0.0
- [Release notes](https://github.com/75lb/command-line-args/releases)
- [Commits](https://github.com/75lb/command-line-args/compare/v5.2.1...v6.0.0)

Updates `tar` from 7.2.0 to 7.4.0
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.2.0...v7.4.0)

---
updated-dependencies:
- dependency-name: command-line-args
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: production
- dependency-name: tar
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production
...

Signed-off-by: dependabot[bot] <support@github.com>
---
 package-lock.json | 92 +++++++++++++++++++++++------------------------
 package.json      |  4 +--
 2 files changed, 48 insertions(+), 48 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 15be89f..d025810 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,9 +10,9 @@
       "license": "MIT",
       "dependencies": {
         "@types/semver": "^7.5.2",
-        "command-line-args": "5.2.1",
+        "command-line-args": "6.0.0",
         "semver": "7.6.2",
-        "tar": "7.2.0",
+        "tar": "7.4.0",
         "validate-npm-package-name": "^5.0.1"
       },
       "bin": {
@@ -2000,11 +2000,11 @@
       "dev": true
     },
     "node_modules/array-back": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
-      "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
+      "version": "6.2.2",
+      "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz",
+      "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==",
       "engines": {
-        "node": ">=6"
+        "node": ">=12.17"
       }
     },
     "node_modules/array-union": {
@@ -2271,17 +2271,17 @@
       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
     },
     "node_modules/command-line-args": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz",
-      "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-6.0.0.tgz",
+      "integrity": "sha512-zDdHxHzlCp/gA1gy0VtPK3YL0Aob3ijJdwZ7H3HSl55hh8EziLtRlyj/od8EGRJfX8IjussC/mQkScl2Ms5Suw==",
       "dependencies": {
-        "array-back": "^3.1.0",
-        "find-replace": "^3.0.0",
+        "array-back": "^6.2.2",
+        "find-replace": "^5.0.1",
         "lodash.camelcase": "^4.3.0",
-        "typical": "^4.0.0"
+        "typical": "^7.1.1"
       },
       "engines": {
-        "node": ">=4.0.0"
+        "node": ">=12.20"
       }
     },
     "node_modules/comment-parser": {
@@ -3225,14 +3225,14 @@
       }
     },
     "node_modules/find-replace": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
-      "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==",
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-5.0.1.tgz",
+      "integrity": "sha512-o5/Y8HrCNRuFF5rdNTkX8Vhv6kTFTV0t1zIoigwlCdbkA9qaapRzxvWPND2VvlFa9LBI05Q1i8ml/saMqkOJUQ==",
       "dependencies": {
-        "array-back": "^3.0.1"
+        "array-back": "^6.2.2"
       },
       "engines": {
-        "node": ">=4.0.0"
+        "node": ">=14"
       }
     },
     "node_modules/find-up": {
@@ -5605,13 +5605,13 @@
       }
     },
     "node_modules/tar": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-7.2.0.tgz",
-      "integrity": "sha512-hctwP0Nb4AB60bj8WQgRYaMOuJYRAPMGiQUAotms5igN8ppfQM+IvjQ5HcKu1MaZh2Wy2KWVTe563Yj8dfc14w==",
+      "version": "7.4.0",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.0.tgz",
+      "integrity": "sha512-XQs0S8fuAkQWuqhDeCdMlJXDX80D7EOVLDPVFkna9yQfzS+PHKgfxcei0jf6/+QAWcjqrnC8uM3fSAnrQl+XYg==",
       "dependencies": {
         "@isaacs/fs-minipass": "^4.0.0",
         "chownr": "^3.0.0",
-        "minipass": "^7.1.0",
+        "minipass": "^7.1.2",
         "minizlib": "^3.0.1",
         "mkdirp": "^3.0.1",
         "yallist": "^5.0.0"
@@ -5768,11 +5768,11 @@
       }
     },
     "node_modules/typical": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
-      "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==",
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz",
+      "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==",
       "engines": {
-        "node": ">=8"
+        "node": ">=12.17"
       }
     },
     "node_modules/ufo": {
@@ -7828,9 +7828,9 @@
       "dev": true
     },
     "array-back": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
-      "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q=="
+      "version": "6.2.2",
+      "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz",
+      "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw=="
     },
     "array-union": {
       "version": "2.1.0",
@@ -8003,14 +8003,14 @@
       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
     },
     "command-line-args": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz",
-      "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-6.0.0.tgz",
+      "integrity": "sha512-zDdHxHzlCp/gA1gy0VtPK3YL0Aob3ijJdwZ7H3HSl55hh8EziLtRlyj/od8EGRJfX8IjussC/mQkScl2Ms5Suw==",
       "requires": {
-        "array-back": "^3.1.0",
-        "find-replace": "^3.0.0",
+        "array-back": "^6.2.2",
+        "find-replace": "^5.0.1",
         "lodash.camelcase": "^4.3.0",
-        "typical": "^4.0.0"
+        "typical": "^7.1.1"
       }
     },
     "comment-parser": {
@@ -8704,11 +8704,11 @@
       }
     },
     "find-replace": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
-      "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==",
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-5.0.1.tgz",
+      "integrity": "sha512-o5/Y8HrCNRuFF5rdNTkX8Vhv6kTFTV0t1zIoigwlCdbkA9qaapRzxvWPND2VvlFa9LBI05Q1i8ml/saMqkOJUQ==",
       "requires": {
-        "array-back": "^3.0.1"
+        "array-back": "^6.2.2"
       }
     },
     "find-up": {
@@ -10325,13 +10325,13 @@
       "dev": true
     },
     "tar": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-7.2.0.tgz",
-      "integrity": "sha512-hctwP0Nb4AB60bj8WQgRYaMOuJYRAPMGiQUAotms5igN8ppfQM+IvjQ5HcKu1MaZh2Wy2KWVTe563Yj8dfc14w==",
+      "version": "7.4.0",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.0.tgz",
+      "integrity": "sha512-XQs0S8fuAkQWuqhDeCdMlJXDX80D7EOVLDPVFkna9yQfzS+PHKgfxcei0jf6/+QAWcjqrnC8uM3fSAnrQl+XYg==",
       "requires": {
         "@isaacs/fs-minipass": "^4.0.0",
         "chownr": "^3.0.0",
-        "minipass": "^7.1.0",
+        "minipass": "^7.1.2",
         "minizlib": "^3.0.1",
         "mkdirp": "^3.0.1",
         "yallist": "^5.0.0"
@@ -10440,9 +10440,9 @@
       "dev": true
     },
     "typical": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
-      "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw=="
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz",
+      "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA=="
     },
     "ufo": {
       "version": "1.3.2",
diff --git a/package.json b/package.json
index 5d7f4cc..c76c28b 100644
--- a/package.json
+++ b/package.json
@@ -79,9 +79,9 @@
   },
   "dependencies": {
     "@types/semver": "^7.5.2",
-    "command-line-args": "5.2.1",
+    "command-line-args": "6.0.0",
     "semver": "7.6.2",
-    "tar": "7.2.0",
+    "tar": "7.4.0",
     "validate-npm-package-name": "^5.0.1"
   }
 }

From 24cc98d66e489b2dc9aec012b9e53912b44a181f Mon Sep 17 00:00:00 2001
From: Michael Cousins <michael@cousins.io>
Date: Sat, 6 Jul 2024 10:29:04 -0400
Subject: [PATCH 2/2] fixup: build

---
 dist/main.js         | 21 +++++++++++----------
 dist/main.js.map     |  4 ++--
 package-lock.json    | 28 ++++++++++++++--------------
 src/read-manifest.ts |  4 ++--
 4 files changed, 29 insertions(+), 28 deletions(-)

diff --git a/dist/main.js b/dist/main.js
index cc6d18b..7a4f01f 100644
--- a/dist/main.js
+++ b/dist/main.js
@@ -4184,7 +4184,8 @@ var argmap = /* @__PURE__ */ new Map([
   ["no-mtime", "noMtime"],
   ["p", "preserveOwner"],
   ["L", "follow"],
-  ["h", "follow"]
+  ["h", "follow"],
+  ["onentry", "onReadEntry"]
 ]);
 var isSyncFile = (o) => !!o.sync && !!o.file;
 var isAsyncFile = (o) => !o.sync && !!o.file;
@@ -5663,8 +5664,8 @@ var Parser = class extends import_events2.EventEmitter {
     if (typeof opt.onwarn === "function") {
       this.on("warn", opt.onwarn);
     }
-    if (typeof opt.onentry === "function") {
-      this.on("entry", opt.onentry);
+    if (typeof opt.onReadEntry === "function") {
+      this.on("entry", opt.onReadEntry);
     }
   }
   warn(code2, message, data = {}) {
@@ -6063,10 +6064,10 @@ var stripTrailingSlashes = (str) => {
 };
 
 // node_modules/tar/dist/esm/list.js
-var onentryFunction = (opt) => {
-  const onentry = opt.onentry;
-  opt.onentry = onentry ? (e) => {
-    onentry(e);
+var onReadEntryFunction = (opt) => {
+  const onReadEntry = opt.onReadEntry;
+  opt.onReadEntry = onReadEntry ? (e) => {
+    onReadEntry(e);
     e.resume();
   } : (e) => e.resume();
 };
@@ -6146,7 +6147,7 @@ var list = makeCommand(listFileSync, listFile, (opt) => new Parser(opt), (opt) =
   if (files == null ? void 0 : files.length)
     filesFilter(opt, files);
   if (!opt.noResume)
-    onentryFunction(opt);
+    onReadEntryFunction(opt);
 });
 
 // src/read-manifest.ts
@@ -6178,13 +6179,13 @@ var readPackageJson = async (...pathSegments) => {
 };
 var readTarballPackageJson = async (file) => {
   const data = [];
-  const onentry = (entry) => {
+  const onReadEntry = (entry) => {
     if (entry.path === "package/package.json") {
       entry.on("data", (chunk) => data.push(chunk));
     }
   };
   try {
-    await list({ file, onentry });
+    await list({ file, onReadEntry });
     if (data.length === 0) {
       throw new Error("package.json not found inside archive");
     }
diff --git a/dist/main.js.map b/dist/main.js.map
index 7137196..01e72d3 100644
--- a/dist/main.js.map
+++ b/dist/main.js.map
@@ -1,7 +1,7 @@
 {
   "version": 3,
   "sources": ["../node_modules/validate-npm-package-name/lib/index.js", "../node_modules/semver/internal/debug.js", "../node_modules/semver/internal/constants.js", "../node_modules/semver/internal/re.js", "../node_modules/semver/internal/parse-options.js", "../node_modules/semver/internal/identifiers.js", "../node_modules/semver/classes/semver.js", "../node_modules/semver/functions/parse.js", "../node_modules/semver/functions/valid.js", "../node_modules/semver/functions/diff.js", "../node_modules/semver/functions/compare.js", "../node_modules/semver/functions/gt.js", "../node_modules/@actions/core/src/utils.ts", "../node_modules/@actions/core/src/command.ts", "../node_modules/@actions/core/node_modules/uuid/dist/esm-node/rng.js", "../node_modules/@actions/core/node_modules/uuid/dist/esm-node/regex.js", "../node_modules/@actions/core/node_modules/uuid/dist/esm-node/validate.js", "../node_modules/@actions/core/node_modules/uuid/dist/esm-node/stringify.js", "../node_modules/@actions/core/node_modules/uuid/dist/esm-node/v1.js", "../node_modules/@actions/core/node_modules/uuid/dist/esm-node/parse.js", "../node_modules/@actions/core/node_modules/uuid/dist/esm-node/v35.js", "../node_modules/@actions/core/node_modules/uuid/dist/esm-node/md5.js", "../node_modules/@actions/core/node_modules/uuid/dist/esm-node/v3.js", "../node_modules/@actions/core/node_modules/uuid/dist/esm-node/v4.js", "../node_modules/@actions/core/node_modules/uuid/dist/esm-node/sha1.js", "../node_modules/@actions/core/node_modules/uuid/dist/esm-node/v5.js", "../node_modules/@actions/core/node_modules/uuid/dist/esm-node/nil.js", "../node_modules/@actions/core/node_modules/uuid/dist/esm-node/version.js", "../node_modules/@actions/core/node_modules/uuid/dist/esm-node/index.js", "../node_modules/@actions/core/src/file-command.ts", "../node_modules/@actions/http-client/src/proxy.ts", "../node_modules/tunnel/lib/tunnel.js", "../node_modules/tunnel/index.js", "../node_modules/@actions/http-client/src/index.ts", "../node_modules/@actions/http-client/src/auth.ts", "../node_modules/@actions/core/src/oidc-utils.ts", "../node_modules/@actions/core/src/summary.ts", "../node_modules/@actions/core/src/path-utils.ts", "../node_modules/@actions/core/src/core.ts", "../src/action/main.ts", "../src/options.ts", "../src/results.ts", "../src/errors.ts", "../src/read-manifest.ts", "../node_modules/@isaacs/fs-minipass/src/index.ts", "../node_modules/minipass/src/index.ts", "../node_modules/tar/src/list.ts", "../node_modules/tar/src/options.ts", "../node_modules/tar/src/make-command.ts", "../node_modules/tar/src/parse.ts", "../node_modules/minizlib/src/index.ts", "../node_modules/minizlib/src/constants.ts", "../node_modules/yallist/src/index.ts", "../node_modules/tar/src/header.ts", "../node_modules/tar/src/large-numbers.ts", "../node_modules/tar/src/types.ts", "../node_modules/tar/src/pax.ts", "../node_modules/tar/src/normalize-windows-path.ts", "../node_modules/tar/src/read-entry.ts", "../node_modules/tar/src/warn-method.ts", "../node_modules/tar/src/strip-trailing-slashes.ts", "../src/normalize-options.ts", "../src/npm/call-npm-cli.ts", "../src/npm/use-npm-environment.ts", "../src/compare-and-publish/compare-versions.ts", "../src/compare-and-publish/get-arguments.ts", "../src/compare-and-publish/compare-and-publish.ts", "../src/format-publish-result.ts", "../src/npm-publish.ts", "../src/action/core.ts"],
-  "sourcesContent": ["'use strict'\nconst { builtinModules: builtins } = require('module')\n\nvar scopedPackagePattern = new RegExp('^(?:@([^/]+?)[/])?([^/]+?)$')\nvar blacklist = [\n  'node_modules',\n  'favicon.ico',\n]\n\nfunction validate (name) {\n  var warnings = []\n  var errors = []\n\n  if (name === null) {\n    errors.push('name cannot be null')\n    return done(warnings, errors)\n  }\n\n  if (name === undefined) {\n    errors.push('name cannot be undefined')\n    return done(warnings, errors)\n  }\n\n  if (typeof name !== 'string') {\n    errors.push('name must be a string')\n    return done(warnings, errors)\n  }\n\n  if (!name.length) {\n    errors.push('name length must be greater than zero')\n  }\n\n  if (name.match(/^\\./)) {\n    errors.push('name cannot start with a period')\n  }\n\n  if (name.match(/^_/)) {\n    errors.push('name cannot start with an underscore')\n  }\n\n  if (name.trim() !== name) {\n    errors.push('name cannot contain leading or trailing spaces')\n  }\n\n  // No funny business\n  blacklist.forEach(function (blacklistedName) {\n    if (name.toLowerCase() === blacklistedName) {\n      errors.push(blacklistedName + ' is a blacklisted name')\n    }\n  })\n\n  // Generate warnings for stuff that used to be allowed\n\n  // core module names like http, events, util, etc\n  if (builtins.includes(name.toLowerCase())) {\n    warnings.push(name + ' is a core module name')\n  }\n\n  if (name.length > 214) {\n    warnings.push('name can no longer contain more than 214 characters')\n  }\n\n  // mIxeD CaSe nAMEs\n  if (name.toLowerCase() !== name) {\n    warnings.push('name can no longer contain capital letters')\n  }\n\n  if (/[~'!()*]/.test(name.split('/').slice(-1)[0])) {\n    warnings.push('name can no longer contain special characters (\"~\\'!()*\")')\n  }\n\n  if (encodeURIComponent(name) !== name) {\n    // Maybe it's a scoped package name, like @user/package\n    var nameMatch = name.match(scopedPackagePattern)\n    if (nameMatch) {\n      var user = nameMatch[1]\n      var pkg = nameMatch[2]\n      if (encodeURIComponent(user) === user && encodeURIComponent(pkg) === pkg) {\n        return done(warnings, errors)\n      }\n    }\n\n    errors.push('name can only contain URL-friendly characters')\n  }\n\n  return done(warnings, errors)\n}\n\nvar done = function (warnings, errors) {\n  var result = {\n    validForNewPackages: errors.length === 0 && warnings.length === 0,\n    validForOldPackages: errors.length === 0,\n    warnings: warnings,\n    errors: errors,\n  }\n  if (!result.warnings.length) {\n    delete result.warnings\n  }\n  if (!result.errors.length) {\n    delete result.errors\n  }\n  return result\n}\n\nmodule.exports = validate\n", "const debug = (\n  typeof process === 'object' &&\n  process.env &&\n  process.env.NODE_DEBUG &&\n  /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n  : () => {}\n\nmodule.exports = debug\n", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n  'major',\n  'premajor',\n  'minor',\n  'preminor',\n  'patch',\n  'prepatch',\n  'prerelease',\n]\n\nmodule.exports = {\n  MAX_LENGTH,\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_SAFE_INTEGER,\n  RELEASE_TYPES,\n  SEMVER_SPEC_VERSION,\n  FLAG_INCLUDE_PRERELEASE: 0b001,\n  FLAG_LOOSE: 0b010,\n}\n", "const {\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n  ['\\\\s', 1],\n  ['\\\\d', MAX_LENGTH],\n  [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n  for (const [token, max] of safeRegexReplacements) {\n    value = value\n      .split(`${token}*`).join(`${token}{0,${max}}`)\n      .split(`${token}+`).join(`${token}{1,${max}}`)\n  }\n  return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n  const safe = makeSafeRegex(value)\n  const index = R++\n  debug(name, index, value)\n  t[name] = index\n  src[index] = value\n  re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n  safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups.  The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:${src[t.PRERELEASE]})?${\n                     src[t.BUILD]}?` +\n                   `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:${src[t.PRERELEASELOOSE]})?${\n                          src[t.BUILD]}?` +\n                        `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n              '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n              `(?:${src[t.PRERELEASE]})?` +\n              `(?:${src[t.BUILD]})?` +\n              `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s+-\\\\s+` +\n                   `(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s+-\\\\s+` +\n                        `(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n  if (!options) {\n    return emptyOpts\n  }\n\n  if (typeof options !== 'object') {\n    return looseOption\n  }\n\n  return options\n}\nmodule.exports = parseOptions\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n  const anum = numeric.test(a)\n  const bnum = numeric.test(b)\n\n  if (anum && bnum) {\n    a = +a\n    b = +b\n  }\n\n  return a === b ? 0\n    : (anum && !bnum) ? -1\n    : (bnum && !anum) ? 1\n    : a < b ? -1\n    : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n  compareIdentifiers,\n  rcompareIdentifiers,\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n  constructor (version, options) {\n    options = parseOptions(options)\n\n    if (version instanceof SemVer) {\n      if (version.loose === !!options.loose &&\n          version.includePrerelease === !!options.includePrerelease) {\n        return version\n      } else {\n        version = version.version\n      }\n    } else if (typeof version !== 'string') {\n      throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n    }\n\n    if (version.length > MAX_LENGTH) {\n      throw new TypeError(\n        `version is longer than ${MAX_LENGTH} characters`\n      )\n    }\n\n    debug('SemVer', version, options)\n    this.options = options\n    this.loose = !!options.loose\n    // this isn't actually relevant for versions, but keep it so that we\n    // don't run into trouble passing this.options around.\n    this.includePrerelease = !!options.includePrerelease\n\n    const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n    if (!m) {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    this.raw = version\n\n    // these are actually numbers\n    this.major = +m[1]\n    this.minor = +m[2]\n    this.patch = +m[3]\n\n    if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n      throw new TypeError('Invalid major version')\n    }\n\n    if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n      throw new TypeError('Invalid minor version')\n    }\n\n    if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n      throw new TypeError('Invalid patch version')\n    }\n\n    // numberify any prerelease numeric ids\n    if (!m[4]) {\n      this.prerelease = []\n    } else {\n      this.prerelease = m[4].split('.').map((id) => {\n        if (/^[0-9]+$/.test(id)) {\n          const num = +id\n          if (num >= 0 && num < MAX_SAFE_INTEGER) {\n            return num\n          }\n        }\n        return id\n      })\n    }\n\n    this.build = m[5] ? m[5].split('.') : []\n    this.format()\n  }\n\n  format () {\n    this.version = `${this.major}.${this.minor}.${this.patch}`\n    if (this.prerelease.length) {\n      this.version += `-${this.prerelease.join('.')}`\n    }\n    return this.version\n  }\n\n  toString () {\n    return this.version\n  }\n\n  compare (other) {\n    debug('SemVer.compare', this.version, this.options, other)\n    if (!(other instanceof SemVer)) {\n      if (typeof other === 'string' && other === this.version) {\n        return 0\n      }\n      other = new SemVer(other, this.options)\n    }\n\n    if (other.version === this.version) {\n      return 0\n    }\n\n    return this.compareMain(other) || this.comparePre(other)\n  }\n\n  compareMain (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    return (\n      compareIdentifiers(this.major, other.major) ||\n      compareIdentifiers(this.minor, other.minor) ||\n      compareIdentifiers(this.patch, other.patch)\n    )\n  }\n\n  comparePre (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    // NOT having a prerelease is > having one\n    if (this.prerelease.length && !other.prerelease.length) {\n      return -1\n    } else if (!this.prerelease.length && other.prerelease.length) {\n      return 1\n    } else if (!this.prerelease.length && !other.prerelease.length) {\n      return 0\n    }\n\n    let i = 0\n    do {\n      const a = this.prerelease[i]\n      const b = other.prerelease[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  compareBuild (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    let i = 0\n    do {\n      const a = this.build[i]\n      const b = other.build[i]\n      debug('build compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  // preminor will bump the version up to the next minor release, and immediately\n  // down to pre-release. premajor and prepatch work the same way.\n  inc (release, identifier, identifierBase) {\n    switch (release) {\n      case 'premajor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor = 0\n        this.major++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'preminor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'prepatch':\n        // If this is already a prerelease, it will bump to the next version\n        // drop any prereleases that might already exist, since they are not\n        // relevant at this point.\n        this.prerelease.length = 0\n        this.inc('patch', identifier, identifierBase)\n        this.inc('pre', identifier, identifierBase)\n        break\n      // If the input is a non-prerelease version, this acts the same as\n      // prepatch.\n      case 'prerelease':\n        if (this.prerelease.length === 0) {\n          this.inc('patch', identifier, identifierBase)\n        }\n        this.inc('pre', identifier, identifierBase)\n        break\n\n      case 'major':\n        // If this is a pre-major version, bump up to the same major version.\n        // Otherwise increment major.\n        // 1.0.0-5 bumps to 1.0.0\n        // 1.1.0 bumps to 2.0.0\n        if (\n          this.minor !== 0 ||\n          this.patch !== 0 ||\n          this.prerelease.length === 0\n        ) {\n          this.major++\n        }\n        this.minor = 0\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'minor':\n        // If this is a pre-minor version, bump up to the same minor version.\n        // Otherwise increment minor.\n        // 1.2.0-5 bumps to 1.2.0\n        // 1.2.1 bumps to 1.3.0\n        if (this.patch !== 0 || this.prerelease.length === 0) {\n          this.minor++\n        }\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'patch':\n        // If this is not a pre-release version, it will increment the patch.\n        // If it is a pre-release it will bump up to the same patch version.\n        // 1.2.0-5 patches to 1.2.0\n        // 1.2.0 patches to 1.2.1\n        if (this.prerelease.length === 0) {\n          this.patch++\n        }\n        this.prerelease = []\n        break\n      // This probably shouldn't be used publicly.\n      // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n      case 'pre': {\n        const base = Number(identifierBase) ? 1 : 0\n\n        if (!identifier && identifierBase === false) {\n          throw new Error('invalid increment argument: identifier is empty')\n        }\n\n        if (this.prerelease.length === 0) {\n          this.prerelease = [base]\n        } else {\n          let i = this.prerelease.length\n          while (--i >= 0) {\n            if (typeof this.prerelease[i] === 'number') {\n              this.prerelease[i]++\n              i = -2\n            }\n          }\n          if (i === -1) {\n            // didn't increment anything\n            if (identifier === this.prerelease.join('.') && identifierBase === false) {\n              throw new Error('invalid increment argument: identifier already exists')\n            }\n            this.prerelease.push(base)\n          }\n        }\n        if (identifier) {\n          // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n          // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n          let prerelease = [identifier, base]\n          if (identifierBase === false) {\n            prerelease = [identifier]\n          }\n          if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n            if (isNaN(this.prerelease[1])) {\n              this.prerelease = prerelease\n            }\n          } else {\n            this.prerelease = prerelease\n          }\n        }\n        break\n      }\n      default:\n        throw new Error(`invalid increment argument: ${release}`)\n    }\n    this.raw = this.format()\n    if (this.build.length) {\n      this.raw += `+${this.build.join('.')}`\n    }\n    return this\n  }\n}\n\nmodule.exports = SemVer\n", "const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n  if (version instanceof SemVer) {\n    return version\n  }\n  try {\n    return new SemVer(version, options)\n  } catch (er) {\n    if (!throwErrors) {\n      return null\n    }\n    throw er\n  }\n}\n\nmodule.exports = parse\n", "const parse = require('./parse')\nconst valid = (version, options) => {\n  const v = parse(version, options)\n  return v ? v.version : null\n}\nmodule.exports = valid\n", "const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n  const v1 = parse(version1, null, true)\n  const v2 = parse(version2, null, true)\n  const comparison = v1.compare(v2)\n\n  if (comparison === 0) {\n    return null\n  }\n\n  const v1Higher = comparison > 0\n  const highVersion = v1Higher ? v1 : v2\n  const lowVersion = v1Higher ? v2 : v1\n  const highHasPre = !!highVersion.prerelease.length\n  const lowHasPre = !!lowVersion.prerelease.length\n\n  if (lowHasPre && !highHasPre) {\n    // Going from prerelease -> no prerelease requires some special casing\n\n    // If the low version has only a major, then it will always be a major\n    // Some examples:\n    // 1.0.0-1 -> 1.0.0\n    // 1.0.0-1 -> 1.1.1\n    // 1.0.0-1 -> 2.0.0\n    if (!lowVersion.patch && !lowVersion.minor) {\n      return 'major'\n    }\n\n    // Otherwise it can be determined by checking the high version\n\n    if (highVersion.patch) {\n      // anything higher than a patch bump would result in the wrong version\n      return 'patch'\n    }\n\n    if (highVersion.minor) {\n      // anything higher than a minor bump would result in the wrong version\n      return 'minor'\n    }\n\n    // bumping major/minor/patch all have same result\n    return 'major'\n  }\n\n  // add the `pre` prefix if we are going to a prerelease version\n  const prefix = highHasPre ? 'pre' : ''\n\n  if (v1.major !== v2.major) {\n    return prefix + 'major'\n  }\n\n  if (v1.minor !== v2.minor) {\n    return prefix + 'minor'\n  }\n\n  if (v1.patch !== v2.patch) {\n    return prefix + 'patch'\n  }\n\n  // high and low are preleases\n  return 'prerelease'\n}\n\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n  new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", null, null, "import crypto from 'crypto';\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n  if (poolPtr > rnds8Pool.length - 16) {\n    crypto.randomFillSync(rnds8Pool);\n    poolPtr = 0;\n  }\n\n  return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}", "export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;", "import REGEX from './regex.js';\n\nfunction validate(uuid) {\n  return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;", "import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;", "import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n  let i = buf && offset || 0;\n  const b = buf || new Array(16);\n  options = options || {};\n  let node = options.node || _nodeId;\n  let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n  // specified.  We do this lazily to minimize issues related to insufficient\n  // system entropy.  See #189\n\n  if (node == null || clockseq == null) {\n    const seedBytes = options.random || (options.rng || rng)();\n\n    if (node == null) {\n      // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n      node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n    }\n\n    if (clockseq == null) {\n      // Per 4.2.2, randomize (14 bit) clockseq\n      clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n    }\n  } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n  // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so\n  // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n  // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n  let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n  // cycle to simulate higher resolution clock\n\n  let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n  const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n  if (dt < 0 && options.clockseq === undefined) {\n    clockseq = clockseq + 1 & 0x3fff;\n  } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n  // time interval\n\n\n  if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n    nsecs = 0;\n  } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n  if (nsecs >= 10000) {\n    throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n  }\n\n  _lastMSecs = msecs;\n  _lastNSecs = nsecs;\n  _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n  msecs += 12219292800000; // `time_low`\n\n  const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n  b[i++] = tl >>> 24 & 0xff;\n  b[i++] = tl >>> 16 & 0xff;\n  b[i++] = tl >>> 8 & 0xff;\n  b[i++] = tl & 0xff; // `time_mid`\n\n  const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n  b[i++] = tmh >>> 8 & 0xff;\n  b[i++] = tmh & 0xff; // `time_high_and_version`\n\n  b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n  b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n  b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n  b[i++] = clockseq & 0xff; // `node`\n\n  for (let n = 0; n < 6; ++n) {\n    b[i + n] = node[n];\n  }\n\n  return buf || stringify(b);\n}\n\nexport default v1;", "import validate from './validate.js';\n\nfunction parse(uuid) {\n  if (!validate(uuid)) {\n    throw TypeError('Invalid UUID');\n  }\n\n  let v;\n  const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n  arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n  arr[1] = v >>> 16 & 0xff;\n  arr[2] = v >>> 8 & 0xff;\n  arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n  arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n  arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n  arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n  arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n  arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n  arr[9] = v & 0xff; // Parse ........-....-....-....-############\n  // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n  arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n  arr[11] = v / 0x100000000 & 0xff;\n  arr[12] = v >>> 24 & 0xff;\n  arr[13] = v >>> 16 & 0xff;\n  arr[14] = v >>> 8 & 0xff;\n  arr[15] = v & 0xff;\n  return arr;\n}\n\nexport default parse;", "import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n  str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n  const bytes = [];\n\n  for (let i = 0; i < str.length; ++i) {\n    bytes.push(str.charCodeAt(i));\n  }\n\n  return bytes;\n}\n\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n  function generateUUID(value, namespace, buf, offset) {\n    if (typeof value === 'string') {\n      value = stringToBytes(value);\n    }\n\n    if (typeof namespace === 'string') {\n      namespace = parse(namespace);\n    }\n\n    if (namespace.length !== 16) {\n      throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n    } // Compute hash of namespace and value, Per 4.3\n    // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n    // hashfunc([...namespace, ... value])`\n\n\n    let bytes = new Uint8Array(16 + value.length);\n    bytes.set(namespace);\n    bytes.set(value, namespace.length);\n    bytes = hashfunc(bytes);\n    bytes[6] = bytes[6] & 0x0f | version;\n    bytes[8] = bytes[8] & 0x3f | 0x80;\n\n    if (buf) {\n      offset = offset || 0;\n\n      for (let i = 0; i < 16; ++i) {\n        buf[offset + i] = bytes[i];\n      }\n\n      return buf;\n    }\n\n    return stringify(bytes);\n  } // Function#name is not settable on some platforms (#270)\n\n\n  try {\n    generateUUID.name = name; // eslint-disable-next-line no-empty\n  } catch (err) {} // For CommonJS default export support\n\n\n  generateUUID.DNS = DNS;\n  generateUUID.URL = URL;\n  return generateUUID;\n}", "import crypto from 'crypto';\n\nfunction md5(bytes) {\n  if (Array.isArray(bytes)) {\n    bytes = Buffer.from(bytes);\n  } else if (typeof bytes === 'string') {\n    bytes = Buffer.from(bytes, 'utf8');\n  }\n\n  return crypto.createHash('md5').update(bytes).digest();\n}\n\nexport default md5;", "import v35 from './v35.js';\nimport md5 from './md5.js';\nconst v3 = v35('v3', 0x30, md5);\nexport default v3;", "import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  options = options || {};\n  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return stringify(rnds);\n}\n\nexport default v4;", "import crypto from 'crypto';\n\nfunction sha1(bytes) {\n  if (Array.isArray(bytes)) {\n    bytes = Buffer.from(bytes);\n  } else if (typeof bytes === 'string') {\n    bytes = Buffer.from(bytes, 'utf8');\n  }\n\n  return crypto.createHash('sha1').update(bytes).digest();\n}\n\nexport default sha1;", "import v35 from './v35.js';\nimport sha1 from './sha1.js';\nconst v5 = v35('v5', 0x50, sha1);\nexport default v5;", "export default '00000000-0000-0000-0000-000000000000';", "import validate from './validate.js';\n\nfunction version(uuid) {\n  if (!validate(uuid)) {\n    throw TypeError('Invalid UUID');\n  }\n\n  return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;", "export { default as v1 } from './v1.js';\nexport { default as v3 } from './v3.js';\nexport { default as v4 } from './v4.js';\nexport { default as v5 } from './v5.js';\nexport { default as NIL } from './nil.js';\nexport { default as version } from './version.js';\nexport { default as validate } from './validate.js';\nexport { default as stringify } from './stringify.js';\nexport { default as parse } from './parse.js';", null, null, "'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n  var agent = new TunnelingAgent(options);\n  agent.request = http.request;\n  return agent;\n}\n\nfunction httpsOverHttp(options) {\n  var agent = new TunnelingAgent(options);\n  agent.request = http.request;\n  agent.createSocket = createSecureSocket;\n  agent.defaultPort = 443;\n  return agent;\n}\n\nfunction httpOverHttps(options) {\n  var agent = new TunnelingAgent(options);\n  agent.request = https.request;\n  return agent;\n}\n\nfunction httpsOverHttps(options) {\n  var agent = new TunnelingAgent(options);\n  agent.request = https.request;\n  agent.createSocket = createSecureSocket;\n  agent.defaultPort = 443;\n  return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n  var self = this;\n  self.options = options || {};\n  self.proxyOptions = self.options.proxy || {};\n  self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n  self.requests = [];\n  self.sockets = [];\n\n  self.on('free', function onFree(socket, host, port, localAddress) {\n    var options = toOptions(host, port, localAddress);\n    for (var i = 0, len = self.requests.length; i < len; ++i) {\n      var pending = self.requests[i];\n      if (pending.host === options.host && pending.port === options.port) {\n        // Detect the request to connect same origin server,\n        // reuse the connection.\n        self.requests.splice(i, 1);\n        pending.request.onSocket(socket);\n        return;\n      }\n    }\n    socket.destroy();\n    self.removeSocket(socket);\n  });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n  var self = this;\n  var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n  if (self.sockets.length >= this.maxSockets) {\n    // We are over limit so we'll add it to the queue.\n    self.requests.push(options);\n    return;\n  }\n\n  // If we are under maxSockets create a new one.\n  self.createSocket(options, function(socket) {\n    socket.on('free', onFree);\n    socket.on('close', onCloseOrRemove);\n    socket.on('agentRemove', onCloseOrRemove);\n    req.onSocket(socket);\n\n    function onFree() {\n      self.emit('free', socket, options);\n    }\n\n    function onCloseOrRemove(err) {\n      self.removeSocket(socket);\n      socket.removeListener('free', onFree);\n      socket.removeListener('close', onCloseOrRemove);\n      socket.removeListener('agentRemove', onCloseOrRemove);\n    }\n  });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n  var self = this;\n  var placeholder = {};\n  self.sockets.push(placeholder);\n\n  var connectOptions = mergeOptions({}, self.proxyOptions, {\n    method: 'CONNECT',\n    path: options.host + ':' + options.port,\n    agent: false,\n    headers: {\n      host: options.host + ':' + options.port\n    }\n  });\n  if (options.localAddress) {\n    connectOptions.localAddress = options.localAddress;\n  }\n  if (connectOptions.proxyAuth) {\n    connectOptions.headers = connectOptions.headers || {};\n    connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n        new Buffer(connectOptions.proxyAuth).toString('base64');\n  }\n\n  debug('making CONNECT request');\n  var connectReq = self.request(connectOptions);\n  connectReq.useChunkedEncodingByDefault = false; // for v0.6\n  connectReq.once('response', onResponse); // for v0.6\n  connectReq.once('upgrade', onUpgrade);   // for v0.6\n  connectReq.once('connect', onConnect);   // for v0.7 or later\n  connectReq.once('error', onError);\n  connectReq.end();\n\n  function onResponse(res) {\n    // Very hacky. This is necessary to avoid http-parser leaks.\n    res.upgrade = true;\n  }\n\n  function onUpgrade(res, socket, head) {\n    // Hacky.\n    process.nextTick(function() {\n      onConnect(res, socket, head);\n    });\n  }\n\n  function onConnect(res, socket, head) {\n    connectReq.removeAllListeners();\n    socket.removeAllListeners();\n\n    if (res.statusCode !== 200) {\n      debug('tunneling socket could not be established, statusCode=%d',\n        res.statusCode);\n      socket.destroy();\n      var error = new Error('tunneling socket could not be established, ' +\n        'statusCode=' + res.statusCode);\n      error.code = 'ECONNRESET';\n      options.request.emit('error', error);\n      self.removeSocket(placeholder);\n      return;\n    }\n    if (head.length > 0) {\n      debug('got illegal response body from proxy');\n      socket.destroy();\n      var error = new Error('got illegal response body from proxy');\n      error.code = 'ECONNRESET';\n      options.request.emit('error', error);\n      self.removeSocket(placeholder);\n      return;\n    }\n    debug('tunneling connection has established');\n    self.sockets[self.sockets.indexOf(placeholder)] = socket;\n    return cb(socket);\n  }\n\n  function onError(cause) {\n    connectReq.removeAllListeners();\n\n    debug('tunneling socket could not be established, cause=%s\\n',\n          cause.message, cause.stack);\n    var error = new Error('tunneling socket could not be established, ' +\n                          'cause=' + cause.message);\n    error.code = 'ECONNRESET';\n    options.request.emit('error', error);\n    self.removeSocket(placeholder);\n  }\n};\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n  var pos = this.sockets.indexOf(socket)\n  if (pos === -1) {\n    return;\n  }\n  this.sockets.splice(pos, 1);\n\n  var pending = this.requests.shift();\n  if (pending) {\n    // If we have pending requests and a socket gets closed a new one\n    // needs to be created to take over in the pool for the one that closed.\n    this.createSocket(pending, function(socket) {\n      pending.request.onSocket(socket);\n    });\n  }\n};\n\nfunction createSecureSocket(options, cb) {\n  var self = this;\n  TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n    var hostHeader = options.request.getHeader('host');\n    var tlsOptions = mergeOptions({}, self.options, {\n      socket: socket,\n      servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n    });\n\n    // 0 is dummy port for v0.6\n    var secureSocket = tls.connect(0, tlsOptions);\n    self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n    cb(secureSocket);\n  });\n}\n\n\nfunction toOptions(host, port, localAddress) {\n  if (typeof host === 'string') { // since v0.10\n    return {\n      host: host,\n      port: port,\n      localAddress: localAddress\n    };\n  }\n  return host; // for v0.11 or later\n}\n\nfunction mergeOptions(target) {\n  for (var i = 1, len = arguments.length; i < len; ++i) {\n    var overrides = arguments[i];\n    if (typeof overrides === 'object') {\n      var keys = Object.keys(overrides);\n      for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n        var k = keys[j];\n        if (overrides[k] !== undefined) {\n          target[k] = overrides[k];\n        }\n      }\n    }\n  }\n  return target;\n}\n\n\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n  debug = function() {\n    var args = Array.prototype.slice.call(arguments);\n    if (typeof args[0] === 'string') {\n      args[0] = 'TUNNEL: ' + args[0];\n    } else {\n      args.unshift('TUNNEL:');\n    }\n    console.error.apply(console, args);\n  }\n} else {\n  debug = function() {};\n}\nexports.debug = debug; // for test\n", "module.exports = require('./lib/tunnel');\n", null, null, null, null, null, null, "/** Action entry point */\nimport { npmPublish } from \"../index.js\";\nimport * as core from \"./core.js\";\n\n/** Run the action. */\nasync function run(): Promise<void> {\n  const results = await npmPublish({\n    token: core.getRequiredSecretInput(\"token\"),\n    registry: core.getInput(\"registry\"),\n    package: core.getInput(\"package\"),\n    tag: core.getInput(\"tag\"),\n    access: core.getInput(\"access\"),\n    provenance: core.getBooleanInput(\"provenance\"),\n    strategy: core.getInput(\"strategy\"),\n    ignoreScripts: core.getBooleanInput(\"ignore-scripts\"),\n    dryRun: core.getBooleanInput(\"dry-run\"),\n    logger: core.logger,\n    temporaryDirectory: process.env[\"RUNNER_TEMP\"],\n  });\n\n  core.setOutput(\"id\", results.id, \"\");\n  core.setOutput(\"name\", results.name);\n  core.setOutput(\"version\", results.version);\n  core.setOutput(\"type\", results.type, \"\");\n  core.setOutput(\"old-version\", results.oldVersion, \"\");\n  core.setOutput(\"registry\", results.registry.href);\n  core.setOutput(\"tag\", results.tag);\n  core.setOutput(\"access\", results.access, \"default\");\n  core.setOutput(\"strategy\", results.strategy);\n  core.setOutput(\"dry-run\", results.dryRun);\n}\n\n/** Main action entry point. */\nexport async function main(): Promise<void> {\n  try {\n    await run();\n  } catch (error) {\n    core.setFailed(error);\n  }\n}\n", "/** The possible access levels for an NPM package */\nexport type Access = typeof ACCESS_PUBLIC | typeof ACCESS_RESTRICTED;\nexport const ACCESS_PUBLIC = \"public\";\nexport const ACCESS_RESTRICTED = \"restricted\";\n\n/**\n * Version check strategy.\n *\n * - `upgrade`: the package will only be published if its version is higher than\n *   the existing version on the configured tag.\n * - `all`: the package will be published if its version is not yet published,\n *   even if its lower that the existing tag.\n */\nexport type Strategy = typeof STRATEGY_UPGRADE | typeof STRATEGY_ALL;\nexport const STRATEGY_UPGRADE = \"upgrade\";\nexport const STRATEGY_ALL = \"all\";\n\n/** An interface that can be used to log messages. */\nexport interface Logger {\n  error: (message: string | Error) => void;\n  info?: undefined | ((message: string) => void);\n  debug?: undefined | ((message: string) => void);\n}\n\n/** Options that determine how/whether the package is published. */\nexport interface Options {\n  /** The NPM access token to use when publishing. */\n  token: string;\n\n  /**\n   * The absolute or relative path of your package.\n   *\n   * Defaults to the package in the current working directory.\n   */\n  package?: string | undefined;\n\n  /**\n   * The NPM registry URL to use.\n   *\n   * Defaults to \"https://registry.npmjs.org/\".\n   *\n   * Can be set by the package.json's `publishConfig` field.\n   */\n  registry?: string | URL | undefined;\n\n  /**\n   * The tag to publish to.\n   *\n   * Defaults to \"latest\".\n   *\n   * Can be set by the package.json's `publishConfig` field.\n   */\n  tag?: string | undefined;\n\n  /**\n   * Package access.\n   *\n   * Determines whether the published package should be publicly visible, or\n   * restricted to members of your NPM organization. This only applies to scoped\n   * packages.\n   *\n   * Defaults to \"restricted\" for scoped packages, unless that package has been\n   * previously published as `public`.\n   *\n   * Can be set by the package.json's `publishConfig` field.\n   */\n  access?: Access | undefined;\n\n  /**\n   * Generate provenance statements.\n   *\n   * Publish must be run from a supported CI provider to succeed. When run from\n   * GitHub Actions, requires `id-token: write` permission.\n   *\n   * Defaults to `false`.\n   *\n   * Can be set by the package.json's `publishConfig` field.\n   */\n  provenance?: boolean | undefined;\n\n  /**\n   * Version check strategy.\n   *\n   * - `always` (default): the package will be published if its version is simply\n   *   not yet published.\n   * - `upgrade`: the package will only be published if its version is higher than\n   *   the existing version on the configured tag.\n   */\n  strategy?: Strategy | undefined;\n\n  /**\n   * Ignore lifecycle scripts.\n   *\n   * If `true` (default), `--ignore-scripts` will be passed to `npm`. If you\n   * rely on publish lifecycle scripts - i.e. `prepublishOnly`, `prepack`,\n   * `prepare`, `postpack`, `publish`, `postpublish` - you should set this to\n   * `false` or rework your build and publish workflow.\n   */\n  ignoreScripts?: boolean | undefined;\n\n  /**\n   * Pretend to publish, but don't actually upload to the registry.\n   *\n   * Defaults to `false`.\n   */\n  dryRun?: boolean | undefined;\n\n  /** Optional logger. */\n  logger?: Logger | undefined;\n\n  /**\n   * Temporary directory.\n   *\n   * Defaults to os.tmpdir()\n   */\n  temporaryDirectory?: string | undefined;\n}\n", "import type { Access, Strategy } from \"./options.js\";\nimport type { ReleaseType as SemverReleaseType } from \"semver\";\n\n/** Release type */\nexport type ReleaseType = SemverReleaseType | typeof INITIAL | typeof DIFFERENT;\n\nexport const INITIAL = \"initial\";\nexport const DIFFERENT = \"different\";\n\n/** Results of the publish */\nexport interface Results {\n  /**\n   * The identifier of the published package, if published. Format is\n   * `${packageName}@${version}`\n   */\n  id: string | undefined;\n\n  /** The name of the NPM package that was published */\n  name: string;\n\n  /** The version that was published */\n  version: string;\n\n  /** The type of version change that occurred, if any. */\n  type: ReleaseType | undefined;\n\n  /** The version number that was previously published to NPM, if any. */\n  oldVersion: string | undefined;\n\n  /** The registry where the package was published */\n  registry: URL;\n\n  /** The tag that the package was published to. */\n  tag: string;\n\n  /**\n   * Indicates whether the published package is publicly visible or restricted\n   * to members of your NPM organization.\n   *\n   * If package is scoped, undefined means npm's scoped package defaults. If a\n   * scoped package has previously been published as public, the default is\n   * public. Otherwise, it is restricted.\n   */\n  access: Access | undefined;\n\n  /** Version check strategy used. */\n  strategy: Strategy;\n\n  /** Whether this was a dry run (not published to NPM) */\n  dryRun: boolean;\n}\n", "import os from \"node:os\";\n\nimport {\n  ACCESS_PUBLIC,\n  ACCESS_RESTRICTED,\n  STRATEGY_ALL,\n  STRATEGY_UPGRADE,\n} from \"./options.js\";\n\nexport class InvalidPackageError extends TypeError {\n  public constructor(value: unknown) {\n    super(\n      `Package must be a directory, package.json, or .tgz file, got \"${String(\n        value\n      )}\"`\n    );\n    this.name = \"PackageJsonReadError\";\n  }\n}\n\nexport class PackageJsonReadError extends Error {\n  public constructor(manifestPath: string, originalError: unknown) {\n    const message = [\n      `Could not read package.json at ${manifestPath}`,\n      originalError instanceof Error ? originalError.message : \"\",\n    ]\n      .filter(Boolean)\n      .join(os.EOL);\n\n    super(message);\n    this.name = \"PackageJsonReadError\";\n  }\n}\n\nexport class PackageTarballReadError extends Error {\n  public constructor(tarballPath: string, originalError: unknown) {\n    const message = [\n      `Could not read package.json from ${tarballPath}`,\n      originalError instanceof Error ? originalError.message : \"\",\n    ]\n      .filter(Boolean)\n      .join(os.EOL);\n\n    super(message);\n    this.name = \"PackageTarballReadError\";\n  }\n}\n\nexport class PackageJsonParseError extends SyntaxError {\n  public constructor(packageSpec: string, originalError: unknown) {\n    const message = [\n      `Invalid JSON, could not parse package.json for ${packageSpec}`,\n      originalError instanceof Error ? originalError.message : \"\",\n    ]\n      .filter(Boolean)\n      .join(os.EOL);\n\n    super(message);\n    this.name = \"PackageJsonParseError\";\n  }\n}\n\nexport class InvalidPackageNameError extends TypeError {\n  public constructor(value: unknown) {\n    super(`Package name is not valid, got \"${String(value)}\"`);\n    this.name = \"InvalidPackageNameError\";\n  }\n}\n\nexport class InvalidPackageVersionError extends TypeError {\n  public constructor(value: unknown) {\n    super(\n      `Package version must be a valid semantic version, got \"${String(value)}\"`\n    );\n    this.name = \"InvalidPackageVersionError\";\n  }\n}\n\nexport class InvalidPackagePublishConfigError extends TypeError {\n  public constructor(value: unknown) {\n    super(`Publish config must be an object, got \"${String(value)}\"`);\n    this.name = \"InvalidPackagePublishConfigError\";\n  }\n}\n\nexport class InvalidRegistryUrlError extends TypeError {\n  public constructor(value: unknown) {\n    super(`Registry URL invalid, got \"${String(value)}\"`);\n    this.name = \"InvalidRegistryUrlError\";\n  }\n}\n\nexport class InvalidTokenError extends TypeError {\n  public constructor() {\n    super(\"Token must be a non-empty string.\");\n    this.name = \"InvalidTokenError\";\n  }\n}\n\nexport class InvalidTagError extends TypeError {\n  public constructor(value: unknown) {\n    super(`Tag must be a non-empty string, got \"${String(value)}\".`);\n    this.name = \"InvalidTagError\";\n  }\n}\n\nexport class InvalidAccessError extends TypeError {\n  public constructor(value: unknown) {\n    super(\n      `Access must be \"${ACCESS_PUBLIC}\" or \"${ACCESS_RESTRICTED}\", got \"${String(\n        value\n      )}\".`\n    );\n    this.name = \"InvalidAccessError\";\n  }\n}\n\nexport class InvalidStrategyError extends TypeError {\n  public constructor(value: unknown) {\n    super(\n      `Strategy must be \"${STRATEGY_UPGRADE}\" or \"${STRATEGY_ALL}\", got \"${String(\n        value\n      )}\".`\n    );\n    this.name = \"InvalidStrategyError\";\n  }\n}\n\nexport class NpmCallError extends Error {\n  public constructor(command: string, exitCode: number, stderr: string) {\n    super(\n      [\n        `Call to \"npm ${command}\" exited with non-zero exit code ${exitCode}`,\n        stderr,\n      ].join(os.EOL)\n    );\n    this.name = \"NpmCallError\";\n  }\n}\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport validatePackageName from \"validate-npm-package-name\";\nimport semverValid from \"semver/functions/valid\";\nimport { list as tarList } from \"tar/list\";\nimport type { ReadEntry } from \"tar\";\nimport * as errors from \"./errors.js\";\n\n/** A package manifest (package.json) and associated details. */\nexport interface PackageManifest {\n  packageSpec: string;\n  name: string;\n  version: string;\n  scope: string | undefined;\n  publishConfig: PackagePublishConfig | undefined;\n}\n\n/** Any publish configuration defined in package.json. */\nexport interface PackagePublishConfig {\n  tag?: string;\n  access?: string;\n  registry?: string;\n  provenance?: boolean;\n}\n\nconst SCOPE_RE = /^(@.+)\\/.+$/u;\n\nconst MANIFEST_BASENAME = \"package.json\";\nconst TARBALL_EXTNAME = \".tgz\";\n\nconst isManifest = (file: unknown): file is string => {\n  return typeof file === \"string\" && path.basename(file) === MANIFEST_BASENAME;\n};\n\nconst isDirectory = (file: unknown): file is string => {\n  return typeof file === \"string\" && path.extname(file) === \"\";\n};\n\nconst isTarball = (file: unknown): file is string => {\n  return typeof file === \"string\" && path.extname(file) === TARBALL_EXTNAME;\n};\n\nconst normalizeVersion = (version: unknown): string | undefined => {\n  return semverValid(version as string) ?? undefined;\n};\n\nconst validateName = (name: unknown): name is string => {\n  return validatePackageName(name as string).validForNewPackages;\n};\n\nconst readPackageJson = async (...pathSegments: string[]): Promise<string> => {\n  const file = path.resolve(...pathSegments);\n\n  try {\n    return await fs.readFile(file, \"utf8\");\n  } catch (error) {\n    throw new errors.PackageJsonReadError(file, error);\n  }\n};\n\nconst readTarballPackageJson = async (file: string): Promise<string> => {\n  const data: Buffer[] = [];\n  const onentry = (entry: ReadEntry) => {\n    if (entry.path === \"package/package.json\") {\n      entry.on(\"data\", (chunk) => data.push(chunk));\n    }\n  };\n\n  try {\n    await tarList({ file, onentry });\n\n    if (data.length === 0) {\n      throw new Error(\"package.json not found inside archive\");\n    }\n  } catch (error) {\n    throw new errors.PackageTarballReadError(file, error);\n  }\n\n  return Buffer.concat(data).toString();\n};\n\n/**\n * Reads the package manifest (package.json) and returns its parsed contents.\n *\n * @param packagePath The path to the package being published.\n * @returns The parsed package metadata.\n */\nexport async function readManifest(\n  packagePath: unknown\n): Promise<PackageManifest> {\n  let packageSpec: string | undefined;\n  let manifestContents: string;\n\n  if (!packagePath) {\n    packageSpec = \"\";\n    manifestContents = await readPackageJson(MANIFEST_BASENAME);\n  } else if (isManifest(packagePath)) {\n    packageSpec = path.resolve(path.dirname(packagePath));\n    manifestContents = await readPackageJson(packagePath);\n  } else if (isDirectory(packagePath)) {\n    packageSpec = path.resolve(packagePath);\n    manifestContents = await readPackageJson(packagePath, MANIFEST_BASENAME);\n  } else if (isTarball(packagePath)) {\n    packageSpec = path.resolve(packagePath);\n    manifestContents = await readTarballPackageJson(packageSpec);\n  } else {\n    throw new errors.InvalidPackageError(packagePath);\n  }\n\n  let manifestJson: Record<string, unknown>;\n  let name: unknown;\n  let version: unknown;\n  let publishConfig: unknown;\n\n  try {\n    manifestJson = JSON.parse(manifestContents) as Record<string, unknown>;\n    name = manifestJson[\"name\"];\n    version = normalizeVersion(manifestJson[\"version\"]);\n    publishConfig = manifestJson[\"publishConfig\"] ?? {};\n  } catch (error) {\n    throw new errors.PackageJsonParseError(packageSpec, error);\n  }\n\n  if (!validateName(name)) {\n    throw new errors.InvalidPackageNameError(name);\n  }\n\n  if (typeof version !== \"string\") {\n    throw new errors.InvalidPackageVersionError(manifestJson[\"version\"]);\n  }\n\n  if (\n    typeof publishConfig !== \"object\" ||\n    Array.isArray(publishConfig) ||\n    !publishConfig\n  ) {\n    throw new errors.InvalidPackagePublishConfigError(publishConfig);\n  }\n\n  return {\n    packageSpec,\n    name,\n    version,\n    publishConfig,\n    scope: SCOPE_RE.exec(name)?.[1],\n  };\n}\n", "import EE from 'events'\nimport fs from 'fs'\nimport { Minipass } from 'minipass'\n\nconst writev = fs.writev\n\nconst _autoClose = Symbol('_autoClose')\nconst _close = Symbol('_close')\nconst _ended = Symbol('_ended')\nconst _fd = Symbol('_fd')\nconst _finished = Symbol('_finished')\nconst _flags = Symbol('_flags')\nconst _flush = Symbol('_flush')\nconst _handleChunk = Symbol('_handleChunk')\nconst _makeBuf = Symbol('_makeBuf')\nconst _mode = Symbol('_mode')\nconst _needDrain = Symbol('_needDrain')\nconst _onerror = Symbol('_onerror')\nconst _onopen = Symbol('_onopen')\nconst _onread = Symbol('_onread')\nconst _onwrite = Symbol('_onwrite')\nconst _open = Symbol('_open')\nconst _path = Symbol('_path')\nconst _pos = Symbol('_pos')\nconst _queue = Symbol('_queue')\nconst _read = Symbol('_read')\nconst _readSize = Symbol('_readSize')\nconst _reading = Symbol('_reading')\nconst _remain = Symbol('_remain')\nconst _size = Symbol('_size')\nconst _write = Symbol('_write')\nconst _writing = Symbol('_writing')\nconst _defaultFlag = Symbol('_defaultFlag')\nconst _errored = Symbol('_errored')\n\nexport type ReadStreamOptions =\n  Minipass.Options<Minipass.ContiguousData> & {\n    fd?: number\n    readSize?: number\n    size?: number\n    autoClose?: boolean\n  }\n\nexport type ReadStreamEvents = Minipass.Events<Minipass.ContiguousData> & {\n  open: [fd: number]\n}\n\nexport class ReadStream extends Minipass<\n  Minipass.ContiguousData,\n  Buffer,\n  ReadStreamEvents\n> {\n  [_errored]: boolean = false;\n  [_fd]?: number;\n  [_path]: string;\n  [_readSize]: number;\n  [_reading]: boolean = false;\n  [_size]: number;\n  [_remain]: number;\n  [_autoClose]: boolean\n\n  constructor(path: string, opt: ReadStreamOptions) {\n    opt = opt || {}\n    super(opt)\n\n    this.readable = true\n    this.writable = false\n\n    if (typeof path !== 'string') {\n      throw new TypeError('path must be a string')\n    }\n\n    this[_errored] = false\n    this[_fd] = typeof opt.fd === 'number' ? opt.fd : undefined\n    this[_path] = path\n    this[_readSize] = opt.readSize || 16 * 1024 * 1024\n    this[_reading] = false\n    this[_size] = typeof opt.size === 'number' ? opt.size : Infinity\n    this[_remain] = this[_size]\n    this[_autoClose] =\n      typeof opt.autoClose === 'boolean' ? opt.autoClose : true\n\n    if (typeof this[_fd] === 'number') {\n      this[_read]()\n    } else {\n      this[_open]()\n    }\n  }\n\n  get fd() {\n    return this[_fd]\n  }\n\n  get path() {\n    return this[_path]\n  }\n\n  //@ts-ignore\n  write() {\n    throw new TypeError('this is a readable stream')\n  }\n\n  //@ts-ignore\n  end() {\n    throw new TypeError('this is a readable stream')\n  }\n\n  [_open]() {\n    fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))\n  }\n\n  [_onopen](er?: NodeJS.ErrnoException | null, fd?: number) {\n    if (er) {\n      this[_onerror](er)\n    } else {\n      this[_fd] = fd\n      this.emit('open', fd as number)\n      this[_read]()\n    }\n  }\n\n  [_makeBuf]() {\n    return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))\n  }\n\n  [_read]() {\n    if (!this[_reading]) {\n      this[_reading] = true\n      const buf = this[_makeBuf]()\n      /* c8 ignore start */\n      if (buf.length === 0) {\n        return process.nextTick(() => this[_onread](null, 0, buf))\n      }\n      /* c8 ignore stop */\n      fs.read(this[_fd] as number, buf, 0, buf.length, null, (er, br, b) =>\n        this[_onread](er, br, b),\n      )\n    }\n  }\n\n  [_onread](er?: NodeJS.ErrnoException | null, br?: number, buf?: Buffer) {\n    this[_reading] = false\n    if (er) {\n      this[_onerror](er)\n    } else if (this[_handleChunk](br as number, buf as Buffer)) {\n      this[_read]()\n    }\n  }\n\n  [_close]() {\n    if (this[_autoClose] && typeof this[_fd] === 'number') {\n      const fd = this[_fd]\n      this[_fd] = undefined\n      fs.close(fd, er =>\n        er ? this.emit('error', er) : this.emit('close'),\n      )\n    }\n  }\n\n  [_onerror](er: NodeJS.ErrnoException) {\n    this[_reading] = true\n    this[_close]()\n    this.emit('error', er)\n  }\n\n  [_handleChunk](br: number, buf: Buffer) {\n    let ret = false\n    // no effect if infinite\n    this[_remain] -= br\n    if (br > 0) {\n      ret = super.write(br < buf.length ? buf.subarray(0, br) : buf)\n    }\n\n    if (br === 0 || this[_remain] <= 0) {\n      ret = false\n      this[_close]()\n      super.end()\n    }\n\n    return ret\n  }\n\n  emit<Event extends keyof ReadStreamEvents>(\n    ev: Event,\n    ...args: ReadStreamEvents[Event]\n  ): boolean {\n    switch (ev) {\n      case 'prefinish':\n      case 'finish':\n        return false\n\n      case 'drain':\n        if (typeof this[_fd] === 'number') {\n          this[_read]()\n        }\n        return false\n\n      case 'error':\n        if (this[_errored]) {\n          return false\n        }\n        this[_errored] = true\n        return super.emit(ev, ...args)\n\n      default:\n        return super.emit(ev, ...args)\n    }\n  }\n}\n\nexport class ReadStreamSync extends ReadStream {\n  [_open]() {\n    let threw = true\n    try {\n      this[_onopen](null, fs.openSync(this[_path], 'r'))\n      threw = false\n    } finally {\n      if (threw) {\n        this[_close]()\n      }\n    }\n  }\n\n  [_read]() {\n    let threw = true\n    try {\n      if (!this[_reading]) {\n        this[_reading] = true\n        do {\n          const buf = this[_makeBuf]()\n          /* c8 ignore start */\n          const br =\n            buf.length === 0\n              ? 0\n              : fs.readSync(this[_fd] as number, buf, 0, buf.length, null)\n          /* c8 ignore stop */\n          if (!this[_handleChunk](br, buf)) {\n            break\n          }\n        } while (true)\n        this[_reading] = false\n      }\n      threw = false\n    } finally {\n      if (threw) {\n        this[_close]()\n      }\n    }\n  }\n\n  [_close]() {\n    if (this[_autoClose] && typeof this[_fd] === 'number') {\n      const fd = this[_fd]\n      this[_fd] = undefined\n      fs.closeSync(fd)\n      this.emit('close')\n    }\n  }\n}\n\nexport type WriteStreamOptions = {\n  fd?: number\n  autoClose?: boolean\n  mode?: number\n  captureRejections?: boolean\n  start?: number\n  flags?: string\n}\n\nexport class WriteStream extends EE {\n  readable: false = false\n  writable: boolean = true;\n  [_errored]: boolean = false;\n  [_writing]: boolean = false;\n  [_ended]: boolean = false;\n  [_queue]: Buffer[] = [];\n  [_needDrain]: boolean = false;\n  [_path]: string;\n  [_mode]: number;\n  [_autoClose]: boolean;\n  [_fd]?: number;\n  [_defaultFlag]: boolean;\n  [_flags]: string;\n  [_finished]: boolean = false;\n  [_pos]?: number\n\n  constructor(path: string, opt: WriteStreamOptions) {\n    opt = opt || {}\n    super(opt)\n    this[_path] = path\n    this[_fd] = typeof opt.fd === 'number' ? opt.fd : undefined\n    this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n    this[_pos] = typeof opt.start === 'number' ? opt.start : undefined\n    this[_autoClose] =\n      typeof opt.autoClose === 'boolean' ? opt.autoClose : true\n\n    // truncating makes no sense when writing into the middle\n    const defaultFlag = this[_pos] !== undefined ? 'r+' : 'w'\n    this[_defaultFlag] = opt.flags === undefined\n    this[_flags] = opt.flags === undefined ? defaultFlag : opt.flags\n\n    if (this[_fd] === undefined) {\n      this[_open]()\n    }\n  }\n\n  emit(ev: string, ...args: any[]) {\n    if (ev === 'error') {\n      if (this[_errored]) {\n        return false\n      }\n      this[_errored] = true\n    }\n    return super.emit(ev, ...args)\n  }\n\n  get fd() {\n    return this[_fd]\n  }\n\n  get path() {\n    return this[_path]\n  }\n\n  [_onerror](er: NodeJS.ErrnoException) {\n    this[_close]()\n    this[_writing] = true\n    this.emit('error', er)\n  }\n\n  [_open]() {\n    fs.open(this[_path], this[_flags], this[_mode], (er, fd) =>\n      this[_onopen](er, fd),\n    )\n  }\n\n  [_onopen](er?: null | NodeJS.ErrnoException, fd?: number) {\n    if (\n      this[_defaultFlag] &&\n      this[_flags] === 'r+' &&\n      er &&\n      er.code === 'ENOENT'\n    ) {\n      this[_flags] = 'w'\n      this[_open]()\n    } else if (er) {\n      this[_onerror](er)\n    } else {\n      this[_fd] = fd\n      this.emit('open', fd)\n      if (!this[_writing]) {\n        this[_flush]()\n      }\n    }\n  }\n\n  end(buf: string, enc?: BufferEncoding): this\n  end(buf?: Buffer, enc?: undefined): this\n  end(buf?: Buffer | string, enc?: BufferEncoding): this {\n    if (buf) {\n      //@ts-ignore\n      this.write(buf, enc)\n    }\n\n    this[_ended] = true\n\n    // synthetic after-write logic, where drain/finish live\n    if (\n      !this[_writing] &&\n      !this[_queue].length &&\n      typeof this[_fd] === 'number'\n    ) {\n      this[_onwrite](null, 0)\n    }\n    return this\n  }\n\n  write(buf: string, enc?: BufferEncoding): boolean\n  write(buf: Buffer, enc?: undefined): boolean\n  write(buf: Buffer | string, enc?: BufferEncoding): boolean {\n    if (typeof buf === 'string') {\n      buf = Buffer.from(buf, enc)\n    }\n\n    if (this[_ended]) {\n      this.emit('error', new Error('write() after end()'))\n      return false\n    }\n\n    if (this[_fd] === undefined || this[_writing] || this[_queue].length) {\n      this[_queue].push(buf)\n      this[_needDrain] = true\n      return false\n    }\n\n    this[_writing] = true\n    this[_write](buf)\n    return true\n  }\n\n  [_write](buf: Buffer) {\n    fs.write(\n      this[_fd] as number,\n      buf,\n      0,\n      buf.length,\n      this[_pos],\n      (er, bw) => this[_onwrite](er, bw),\n    )\n  }\n\n  [_onwrite](er?: null | NodeJS.ErrnoException, bw?: number) {\n    if (er) {\n      this[_onerror](er)\n    } else {\n      if (this[_pos] !== undefined && typeof bw === 'number') {\n        this[_pos] += bw\n      }\n      if (this[_queue].length) {\n        this[_flush]()\n      } else {\n        this[_writing] = false\n\n        if (this[_ended] && !this[_finished]) {\n          this[_finished] = true\n          this[_close]()\n          this.emit('finish')\n        } else if (this[_needDrain]) {\n          this[_needDrain] = false\n          this.emit('drain')\n        }\n      }\n    }\n  }\n\n  [_flush]() {\n    if (this[_queue].length === 0) {\n      if (this[_ended]) {\n        this[_onwrite](null, 0)\n      }\n    } else if (this[_queue].length === 1) {\n      this[_write](this[_queue].pop() as Buffer)\n    } else {\n      const iovec = this[_queue]\n      this[_queue] = []\n      writev(this[_fd] as number, iovec, this[_pos] as number, (er, bw) =>\n        this[_onwrite](er, bw),\n      )\n    }\n  }\n\n  [_close]() {\n    if (this[_autoClose] && typeof this[_fd] === 'number') {\n      const fd = this[_fd]\n      this[_fd] = undefined\n      fs.close(fd, er =>\n        er ? this.emit('error', er) : this.emit('close'),\n      )\n    }\n  }\n}\n\nexport class WriteStreamSync extends WriteStream {\n  [_open](): void {\n    let fd\n    // only wrap in a try{} block if we know we'll retry, to avoid\n    // the rethrow obscuring the error's source frame in most cases.\n    if (this[_defaultFlag] && this[_flags] === 'r+') {\n      try {\n        fd = fs.openSync(this[_path], this[_flags], this[_mode])\n      } catch (er) {\n        if ((er as NodeJS.ErrnoException)?.code === 'ENOENT') {\n          this[_flags] = 'w'\n          return this[_open]()\n        } else {\n          throw er\n        }\n      }\n    } else {\n      fd = fs.openSync(this[_path], this[_flags], this[_mode])\n    }\n\n    this[_onopen](null, fd)\n  }\n\n  [_close]() {\n    if (this[_autoClose] && typeof this[_fd] === 'number') {\n      const fd = this[_fd]\n      this[_fd] = undefined\n      fs.closeSync(fd)\n      this.emit('close')\n    }\n  }\n\n  [_write](buf: Buffer) {\n    // throw the original, but try to close if it fails\n    let threw = true\n    try {\n      this[_onwrite](\n        null,\n        fs.writeSync(this[_fd] as number, buf, 0, buf.length, this[_pos]),\n      )\n      threw = false\n    } finally {\n      if (threw) {\n        try {\n          this[_close]()\n        } catch {\n          // ok error\n        }\n      }\n    }\n  }\n}\n", "const proc =\n  typeof process === 'object' && process\n    ? process\n    : {\n        stdout: null,\n        stderr: null,\n      }\nimport { EventEmitter } from 'node:events'\nimport Stream from 'node:stream'\nimport { StringDecoder } from 'node:string_decoder'\n\n/**\n * Same as StringDecoder, but exposing the `lastNeed` flag on the type\n */\ntype SD = StringDecoder & { lastNeed: boolean }\n\nexport type { SD, Pipe, PipeProxyErrors }\n\n/**\n * Return true if the argument is a Minipass stream, Node stream, or something\n * else that Minipass can interact with.\n */\nexport const isStream = (\n  s: any\n): s is Minipass.Readable | Minipass.Writable =>\n  !!s &&\n  typeof s === 'object' &&\n  (s instanceof Minipass ||\n    s instanceof Stream ||\n    isReadable(s) ||\n    isWritable(s))\n\n/**\n * Return true if the argument is a valid {@link Minipass.Readable}\n */\nexport const isReadable = (s: any): s is Minipass.Readable =>\n  !!s &&\n  typeof s === 'object' &&\n  s instanceof EventEmitter &&\n  typeof (s as Minipass.Readable).pipe === 'function' &&\n  // node core Writable streams have a pipe() method, but it throws\n  (s as Minipass.Readable).pipe !== Stream.Writable.prototype.pipe\n\n/**\n * Return true if the argument is a valid {@link Minipass.Writable}\n */\nexport const isWritable = (s: any): s is Minipass.Readable =>\n  !!s &&\n  typeof s === 'object' &&\n  s instanceof EventEmitter &&\n  typeof (s as Minipass.Writable).write === 'function' &&\n  typeof (s as Minipass.Writable).end === 'function'\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFER = Symbol('buffer')\nconst PIPES = Symbol('pipes')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\n// internal event when stream is destroyed\nconst DESTROYED = Symbol('destroyed')\n// internal event when stream has an error\nconst ERROR = Symbol('error')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\nconst ABORT = Symbol('abort')\nconst ABORTED = Symbol('aborted')\nconst SIGNAL = Symbol('signal')\nconst DATALISTENERS = Symbol('dataListeners')\nconst DISCARDED = Symbol('discarded')\n\nconst defer = (fn: (...a: any[]) => any) => Promise.resolve().then(fn)\nconst nodefer = (fn: (...a: any[]) => any) => fn()\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\ntype EndishEvent = 'end' | 'finish' | 'prefinish'\nconst isEndish = (ev: any): ev is EndishEvent =>\n  ev === 'end' || ev === 'finish' || ev === 'prefinish'\n\nconst isArrayBufferLike = (b: any): b is ArrayBufferLike =>\n  b instanceof ArrayBuffer ||\n  (!!b &&\n    typeof b === 'object' &&\n    b.constructor &&\n    b.constructor.name === 'ArrayBuffer' &&\n    b.byteLength >= 0)\n\nconst isArrayBufferView = (b: any): b is ArrayBufferView =>\n  !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\n/**\n * Options that may be passed to stream.pipe()\n */\nexport interface PipeOptions {\n  /**\n   * end the destination stream when the source stream ends\n   */\n  end?: boolean\n  /**\n   * proxy errors from the source stream to the destination stream\n   */\n  proxyErrors?: boolean\n}\n\n/**\n * Internal class representing a pipe to a destination stream.\n *\n * @internal\n */\nclass Pipe<T extends unknown> {\n  src: Minipass<T>\n  dest: Minipass<any, T>\n  opts: PipeOptions\n  ondrain: () => any\n  constructor(\n    src: Minipass<T>,\n    dest: Minipass.Writable,\n    opts: PipeOptions\n  ) {\n    this.src = src\n    this.dest = dest as Minipass<any, T>\n    this.opts = opts\n    this.ondrain = () => src[RESUME]()\n    this.dest.on('drain', this.ondrain)\n  }\n  unpipe() {\n    this.dest.removeListener('drain', this.ondrain)\n  }\n  // only here for the prototype\n  /* c8 ignore start */\n  proxyErrors(_er: any) {}\n  /* c8 ignore stop */\n  end() {\n    this.unpipe()\n    if (this.opts.end) this.dest.end()\n  }\n}\n\n/**\n * Internal class representing a pipe to a destination stream where\n * errors are proxied.\n *\n * @internal\n */\nclass PipeProxyErrors<T> extends Pipe<T> {\n  unpipe() {\n    this.src.removeListener('error', this.proxyErrors)\n    super.unpipe()\n  }\n  constructor(\n    src: Minipass<T>,\n    dest: Minipass.Writable,\n    opts: PipeOptions\n  ) {\n    super(src, dest, opts)\n    this.proxyErrors = er => dest.emit('error', er)\n    src.on('error', this.proxyErrors)\n  }\n}\n\nexport namespace Minipass {\n  /**\n   * Encoding used to create a stream that outputs strings rather than\n   * Buffer objects.\n   */\n  export type Encoding = BufferEncoding | 'buffer' | null\n\n  /**\n   * Any stream that Minipass can pipe into\n   */\n  export type Writable =\n    | Minipass<any, any, any>\n    | NodeJS.WriteStream\n    | (NodeJS.WriteStream & { fd: number })\n    | (EventEmitter & {\n        end(): any\n        write(chunk: any, ...args: any[]): any\n      })\n\n  /**\n   * Any stream that can be read from\n   */\n  export type Readable =\n    | Minipass<any, any, any>\n    | NodeJS.ReadStream\n    | (NodeJS.ReadStream & { fd: number })\n    | (EventEmitter & {\n        pause(): any\n        resume(): any\n        pipe(...destArgs: any[]): any\n      })\n\n  /**\n   * Utility type that can be iterated sync or async\n   */\n  export type DualIterable<T> = Iterable<T> & AsyncIterable<T>\n\n  type EventArguments = Record<string | symbol, unknown[]>\n\n  /**\n   * The listing of events that a Minipass class can emit.\n   * Extend this when extending the Minipass class, and pass as\n   * the third template argument.  The key is the name of the event,\n   * and the value is the argument list.\n   *\n   * Any undeclared events will still be allowed, but the handler will get\n   * arguments as `unknown[]`.\n   */\n  export interface Events<RType extends any = Buffer>\n    extends EventArguments {\n    readable: []\n    data: [chunk: RType]\n    error: [er: unknown]\n    abort: [reason: unknown]\n    drain: []\n    resume: []\n    end: []\n    finish: []\n    prefinish: []\n    close: []\n    [DESTROYED]: [er?: unknown]\n    [ERROR]: [er: unknown]\n  }\n\n  /**\n   * String or buffer-like data that can be joined and sliced\n   */\n  export type ContiguousData =\n    | Buffer\n    | ArrayBufferLike\n    | ArrayBufferView\n    | string\n  export type BufferOrString = Buffer | string\n\n  /**\n   * Options passed to the Minipass constructor.\n   */\n  export type SharedOptions = {\n    /**\n     * Defer all data emission and other events until the end of the\n     * current tick, similar to Node core streams\n     */\n    async?: boolean\n    /**\n     * A signal which will abort the stream\n     */\n    signal?: AbortSignal\n    /**\n     * Output string encoding. Set to `null` or `'buffer'` (or omit) to\n     * emit Buffer objects rather than strings.\n     *\n     * Conflicts with `objectMode`\n     */\n    encoding?: BufferEncoding | null | 'buffer'\n    /**\n     * Output data exactly as it was written, supporting non-buffer/string\n     * data (such as arbitrary objects, falsey values, etc.)\n     *\n     * Conflicts with `encoding`\n     */\n    objectMode?: boolean\n  }\n\n  /**\n   * Options for a string encoded output\n   */\n  export type EncodingOptions = SharedOptions & {\n    encoding: BufferEncoding\n    objectMode?: false\n  }\n\n  /**\n   * Options for contiguous data buffer output\n   */\n  export type BufferOptions = SharedOptions & {\n    encoding?: null | 'buffer'\n    objectMode?: false\n  }\n\n  /**\n   * Options for objectMode arbitrary output\n   */\n  export type ObjectModeOptions = SharedOptions & {\n    objectMode: true\n    encoding?: null\n  }\n\n  /**\n   * Utility type to determine allowed options based on read type\n   */\n  export type Options<T> =\n    | ObjectModeOptions\n    | (T extends string\n        ? EncodingOptions\n        : T extends Buffer\n        ? BufferOptions\n        : SharedOptions)\n}\n\nconst isObjectModeOptions = (\n  o: Minipass.SharedOptions\n): o is Minipass.ObjectModeOptions => !!o.objectMode\n\nconst isEncodingOptions = (\n  o: Minipass.SharedOptions\n): o is Minipass.EncodingOptions =>\n  !o.objectMode && !!o.encoding && o.encoding !== 'buffer'\n\n/**\n * Main export, the Minipass class\n *\n * `RType` is the type of data emitted, defaults to Buffer\n *\n * `WType` is the type of data to be written, if RType is buffer or string,\n * then any {@link Minipass.ContiguousData} is allowed.\n *\n * `Events` is the set of event handler signatures that this object\n * will emit, see {@link Minipass.Events}\n */\nexport class Minipass<\n    RType extends unknown = Buffer,\n    WType extends unknown = RType extends Minipass.BufferOrString\n      ? Minipass.ContiguousData\n      : RType,\n    Events extends Minipass.Events<RType> = Minipass.Events<RType>\n  >\n  extends EventEmitter\n  implements Minipass.DualIterable<RType>\n{\n  [FLOWING]: boolean = false;\n  [PAUSED]: boolean = false;\n  [PIPES]: Pipe<RType>[] = [];\n  [BUFFER]: RType[] = [];\n  [OBJECTMODE]: boolean;\n  [ENCODING]: BufferEncoding | null;\n  [ASYNC]: boolean;\n  [DECODER]: SD | null;\n  [EOF]: boolean = false;\n  [EMITTED_END]: boolean = false;\n  [EMITTING_END]: boolean = false;\n  [CLOSED]: boolean = false;\n  [EMITTED_ERROR]: unknown = null;\n  [BUFFERLENGTH]: number = 0;\n  [DESTROYED]: boolean = false;\n  [SIGNAL]?: AbortSignal;\n  [ABORTED]: boolean = false;\n  [DATALISTENERS]: number = 0;\n  [DISCARDED]: boolean = false\n\n  /**\n   * true if the stream can be written\n   */\n  writable: boolean = true\n  /**\n   * true if the stream can be read\n   */\n  readable: boolean = true\n\n  /**\n   * If `RType` is Buffer, then options do not need to be provided.\n   * Otherwise, an options object must be provided to specify either\n   * {@link Minipass.SharedOptions.objectMode} or\n   * {@link Minipass.SharedOptions.encoding}, as appropriate.\n   */\n  constructor(\n    ...args:\n      | [Minipass.ObjectModeOptions]\n      | (RType extends Buffer\n          ? [] | [Minipass.Options<RType>]\n          : [Minipass.Options<RType>])\n  ) {\n    const options: Minipass.Options<RType> = (args[0] ||\n      {}) as Minipass.Options<RType>\n    super()\n    if (options.objectMode && typeof options.encoding === 'string') {\n      throw new TypeError(\n        'Encoding and objectMode may not be used together'\n      )\n    }\n    if (isObjectModeOptions(options)) {\n      this[OBJECTMODE] = true\n      this[ENCODING] = null\n    } else if (isEncodingOptions(options)) {\n      this[ENCODING] = options.encoding\n      this[OBJECTMODE] = false\n    } else {\n      this[OBJECTMODE] = false\n      this[ENCODING] = null\n    }\n    this[ASYNC] = !!options.async\n    this[DECODER] = this[ENCODING]\n      ? (new StringDecoder(this[ENCODING]) as SD)\n      : null\n\n    //@ts-ignore - private option for debugging and testing\n    if (options && options.debugExposeBuffer === true) {\n      Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] })\n    }\n    //@ts-ignore - private option for debugging and testing\n    if (options && options.debugExposePipes === true) {\n      Object.defineProperty(this, 'pipes', { get: () => this[PIPES] })\n    }\n\n    const { signal } = options\n    if (signal) {\n      this[SIGNAL] = signal\n      if (signal.aborted) {\n        this[ABORT]()\n      } else {\n        signal.addEventListener('abort', () => this[ABORT]())\n      }\n    }\n  }\n\n  /**\n   * The amount of data stored in the buffer waiting to be read.\n   *\n   * For Buffer strings, this will be the total byte length.\n   * For string encoding streams, this will be the string character length,\n   * according to JavaScript's `string.length` logic.\n   * For objectMode streams, this is a count of the items waiting to be\n   * emitted.\n   */\n  get bufferLength() {\n    return this[BUFFERLENGTH]\n  }\n\n  /**\n   * The `BufferEncoding` currently in use, or `null`\n   */\n  get encoding() {\n    return this[ENCODING]\n  }\n\n  /**\n   * @deprecated - This is a read only property\n   */\n  set encoding(_enc) {\n    throw new Error('Encoding must be set at instantiation time')\n  }\n\n  /**\n   * @deprecated - Encoding may only be set at instantiation time\n   */\n  setEncoding(_enc: Minipass.Encoding) {\n    throw new Error('Encoding must be set at instantiation time')\n  }\n\n  /**\n   * True if this is an objectMode stream\n   */\n  get objectMode() {\n    return this[OBJECTMODE]\n  }\n\n  /**\n   * @deprecated - This is a read-only property\n   */\n  set objectMode(_om) {\n    throw new Error('objectMode must be set at instantiation time')\n  }\n\n  /**\n   * true if this is an async stream\n   */\n  get ['async'](): boolean {\n    return this[ASYNC]\n  }\n  /**\n   * Set to true to make this stream async.\n   *\n   * Once set, it cannot be unset, as this would potentially cause incorrect\n   * behavior.  Ie, a sync stream can be made async, but an async stream\n   * cannot be safely made sync.\n   */\n  set ['async'](a: boolean) {\n    this[ASYNC] = this[ASYNC] || !!a\n  }\n\n  // drop everything and get out of the flow completely\n  [ABORT]() {\n    this[ABORTED] = true\n    this.emit('abort', this[SIGNAL]?.reason)\n    this.destroy(this[SIGNAL]?.reason)\n  }\n\n  /**\n   * True if the stream has been aborted.\n   */\n  get aborted() {\n    return this[ABORTED]\n  }\n  /**\n   * No-op setter. Stream aborted status is set via the AbortSignal provided\n   * in the constructor options.\n   */\n  set aborted(_) {}\n\n  /**\n   * Write data into the stream\n   *\n   * If the chunk written is a string, and encoding is not specified, then\n   * `utf8` will be assumed. If the stream encoding matches the encoding of\n   * a written string, and the state of the string decoder allows it, then\n   * the string will be passed through to either the output or the internal\n   * buffer without any processing. Otherwise, it will be turned into a\n   * Buffer object for processing into the desired encoding.\n   *\n   * If provided, `cb` function is called immediately before return for\n   * sync streams, or on next tick for async streams, because for this\n   * base class, a chunk is considered \"processed\" once it is accepted\n   * and either emitted or buffered. That is, the callback does not indicate\n   * that the chunk has been eventually emitted, though of course child\n   * classes can override this function to do whatever processing is required\n   * and call `super.write(...)` only once processing is completed.\n   */\n  write(chunk: WType, cb?: () => void): boolean\n  write(\n    chunk: WType,\n    encoding?: Minipass.Encoding,\n    cb?: () => void\n  ): boolean\n  write(\n    chunk: WType,\n    encoding?: Minipass.Encoding | (() => void),\n    cb?: () => void\n  ): boolean {\n    if (this[ABORTED]) return false\n    if (this[EOF]) throw new Error('write after end')\n\n    if (this[DESTROYED]) {\n      this.emit(\n        'error',\n        Object.assign(\n          new Error('Cannot call write after a stream was destroyed'),\n          { code: 'ERR_STREAM_DESTROYED' }\n        )\n      )\n      return true\n    }\n\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = 'utf8'\n    }\n\n    if (!encoding) encoding = 'utf8'\n\n    const fn = this[ASYNC] ? defer : nodefer\n\n    // convert array buffers and typed array views into buffers\n    // at some point in the future, we may want to do the opposite!\n    // leave strings and buffers as-is\n    // anything is only allowed if in object mode, so throw\n    if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n      if (isArrayBufferView(chunk)) {\n        //@ts-ignore - sinful unsafe type changing\n        chunk = Buffer.from(\n          chunk.buffer,\n          chunk.byteOffset,\n          chunk.byteLength\n        )\n      } else if (isArrayBufferLike(chunk)) {\n        //@ts-ignore - sinful unsafe type changing\n        chunk = Buffer.from(chunk)\n      } else if (typeof chunk !== 'string') {\n        throw new Error(\n          'Non-contiguous data written to non-objectMode stream'\n        )\n      }\n    }\n\n    // handle object mode up front, since it's simpler\n    // this yields better performance, fewer checks later.\n    if (this[OBJECTMODE]) {\n      // maybe impossible?\n      /* c8 ignore start */\n      if (this[FLOWING] && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n      /* c8 ignore stop */\n\n      if (this[FLOWING]) this.emit('data', chunk as unknown as RType)\n      else this[BUFFERPUSH](chunk as unknown as RType)\n\n      if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n      if (cb) fn(cb)\n\n      return this[FLOWING]\n    }\n\n    // at this point the chunk is a buffer or string\n    // don't buffer it up or send it to the decoder\n    if (!(chunk as Minipass.BufferOrString).length) {\n      if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n      if (cb) fn(cb)\n      return this[FLOWING]\n    }\n\n    // fast-path writing strings of same encoding to a stream with\n    // an empty buffer, skipping the buffer/decoder dance\n    if (\n      typeof chunk === 'string' &&\n      // unless it is a string already ready for us to use\n      !(encoding === this[ENCODING] && !this[DECODER]?.lastNeed)\n    ) {\n      //@ts-ignore - sinful unsafe type change\n      chunk = Buffer.from(chunk, encoding)\n    }\n\n    if (Buffer.isBuffer(chunk) && this[ENCODING]) {\n      //@ts-ignore - sinful unsafe type change\n      chunk = this[DECODER].write(chunk)\n    }\n\n    // Note: flushing CAN potentially switch us into not-flowing mode\n    if (this[FLOWING] && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n\n    if (this[FLOWING]) this.emit('data', chunk as unknown as RType)\n    else this[BUFFERPUSH](chunk as unknown as RType)\n\n    if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n    if (cb) fn(cb)\n\n    return this[FLOWING]\n  }\n\n  /**\n   * Low-level explicit read method.\n   *\n   * In objectMode, the argument is ignored, and one item is returned if\n   * available.\n   *\n   * `n` is the number of bytes (or in the case of encoding streams,\n   * characters) to consume. If `n` is not provided, then the entire buffer\n   * is returned, or `null` is returned if no data is available.\n   *\n   * If `n` is greater that the amount of data in the internal buffer,\n   * then `null` is returned.\n   */\n  read(n?: number | null): RType | null {\n    if (this[DESTROYED]) return null\n    this[DISCARDED] = false\n\n    if (\n      this[BUFFERLENGTH] === 0 ||\n      n === 0 ||\n      (n && n > this[BUFFERLENGTH])\n    ) {\n      this[MAYBE_EMIT_END]()\n      return null\n    }\n\n    if (this[OBJECTMODE]) n = null\n\n    if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {\n      // not object mode, so if we have an encoding, then RType is string\n      // otherwise, must be Buffer\n      this[BUFFER] = [\n        (this[ENCODING]\n          ? this[BUFFER].join('')\n          : Buffer.concat(\n              this[BUFFER] as Buffer[],\n              this[BUFFERLENGTH]\n            )) as RType,\n      ]\n    }\n\n    const ret = this[READ](n || null, this[BUFFER][0] as RType)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [READ](n: number | null, chunk: RType) {\n    if (this[OBJECTMODE]) this[BUFFERSHIFT]()\n    else {\n      const c = chunk as Minipass.BufferOrString\n      if (n === c.length || n === null) this[BUFFERSHIFT]()\n      else if (typeof c === 'string') {\n        this[BUFFER][0] = c.slice(n) as RType\n        chunk = c.slice(0, n) as RType\n        this[BUFFERLENGTH] -= n\n      } else {\n        this[BUFFER][0] = c.subarray(n) as RType\n        chunk = c.subarray(0, n) as RType\n        this[BUFFERLENGTH] -= n\n      }\n    }\n\n    this.emit('data', chunk)\n\n    if (!this[BUFFER].length && !this[EOF]) this.emit('drain')\n\n    return chunk\n  }\n\n  /**\n   * End the stream, optionally providing a final write.\n   *\n   * See {@link Minipass#write} for argument descriptions\n   */\n  end(cb?: () => void): this\n  end(chunk: WType, cb?: () => void): this\n  end(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): this\n  end(\n    chunk?: WType | (() => void),\n    encoding?: Minipass.Encoding | (() => void),\n    cb?: () => void\n  ): this {\n    if (typeof chunk === 'function') {\n      cb = chunk as () => void\n      chunk = undefined\n    }\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = 'utf8'\n    }\n    if (chunk !== undefined) this.write(chunk, encoding)\n    if (cb) this.once('end', cb)\n    this[EOF] = true\n    this.writable = false\n\n    // if we haven't written anything, then go ahead and emit,\n    // even if we're not reading.\n    // we'll re-emit if a new 'end' listener is added anyway.\n    // This makes MP more suitable to write-only use cases.\n    if (this[FLOWING] || !this[PAUSED]) this[MAYBE_EMIT_END]()\n    return this\n  }\n\n  // don't let the internal resume be overwritten\n  [RESUME]() {\n    if (this[DESTROYED]) return\n\n    if (!this[DATALISTENERS] && !this[PIPES].length) {\n      this[DISCARDED] = true\n    }\n    this[PAUSED] = false\n    this[FLOWING] = true\n    this.emit('resume')\n    if (this[BUFFER].length) this[FLUSH]()\n    else if (this[EOF]) this[MAYBE_EMIT_END]()\n    else this.emit('drain')\n  }\n\n  /**\n   * Resume the stream if it is currently in a paused state\n   *\n   * If called when there are no pipe destinations or `data` event listeners,\n   * this will place the stream in a \"discarded\" state, where all data will\n   * be thrown away. The discarded state is removed if a pipe destination or\n   * data handler is added, if pause() is called, or if any synchronous or\n   * asynchronous iteration is started.\n   */\n  resume() {\n    return this[RESUME]()\n  }\n\n  /**\n   * Pause the stream\n   */\n  pause() {\n    this[FLOWING] = false\n    this[PAUSED] = true\n    this[DISCARDED] = false\n  }\n\n  /**\n   * true if the stream has been forcibly destroyed\n   */\n  get destroyed() {\n    return this[DESTROYED]\n  }\n\n  /**\n   * true if the stream is currently in a flowing state, meaning that\n   * any writes will be immediately emitted.\n   */\n  get flowing() {\n    return this[FLOWING]\n  }\n\n  /**\n   * true if the stream is currently in a paused state\n   */\n  get paused() {\n    return this[PAUSED]\n  }\n\n  [BUFFERPUSH](chunk: RType) {\n    if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1\n    else this[BUFFERLENGTH] += (chunk as Minipass.BufferOrString).length\n    this[BUFFER].push(chunk)\n  }\n\n  [BUFFERSHIFT](): RType {\n    if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1\n    else\n      this[BUFFERLENGTH] -= (\n        this[BUFFER][0] as Minipass.BufferOrString\n      ).length\n    return this[BUFFER].shift() as RType\n  }\n\n  [FLUSH](noDrain: boolean = false) {\n    do {} while (\n      this[FLUSHCHUNK](this[BUFFERSHIFT]()) &&\n      this[BUFFER].length\n    )\n\n    if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain')\n  }\n\n  [FLUSHCHUNK](chunk: RType) {\n    this.emit('data', chunk)\n    return this[FLOWING]\n  }\n\n  /**\n   * Pipe all data emitted by this stream into the destination provided.\n   *\n   * Triggers the flow of data.\n   */\n  pipe<W extends Minipass.Writable>(dest: W, opts?: PipeOptions): W {\n    if (this[DESTROYED]) return dest\n    this[DISCARDED] = false\n\n    const ended = this[EMITTED_END]\n    opts = opts || {}\n    if (dest === proc.stdout || dest === proc.stderr) opts.end = false\n    else opts.end = opts.end !== false\n    opts.proxyErrors = !!opts.proxyErrors\n\n    // piping an ended stream ends immediately\n    if (ended) {\n      if (opts.end) dest.end()\n    } else {\n      // \"as\" here just ignores the WType, which pipes don't care about,\n      // since they're only consuming from us, and writing to the dest\n      this[PIPES].push(\n        !opts.proxyErrors\n          ? new Pipe<RType>(this as Minipass<RType>, dest, opts)\n          : new PipeProxyErrors<RType>(this as Minipass<RType>, dest, opts)\n      )\n      if (this[ASYNC]) defer(() => this[RESUME]())\n      else this[RESUME]()\n    }\n\n    return dest\n  }\n\n  /**\n   * Fully unhook a piped destination stream.\n   *\n   * If the destination stream was the only consumer of this stream (ie,\n   * there are no other piped destinations or `'data'` event listeners)\n   * then the flow of data will stop until there is another consumer or\n   * {@link Minipass#resume} is explicitly called.\n   */\n  unpipe<W extends Minipass.Writable>(dest: W) {\n    const p = this[PIPES].find(p => p.dest === dest)\n    if (p) {\n      if (this[PIPES].length === 1) {\n        if (this[FLOWING] && this[DATALISTENERS] === 0) {\n          this[FLOWING] = false\n        }\n        this[PIPES] = []\n      } else this[PIPES].splice(this[PIPES].indexOf(p), 1)\n      p.unpipe()\n    }\n  }\n\n  /**\n   * Alias for {@link Minipass#on}\n   */\n  addListener<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ): this {\n    return this.on(ev, handler)\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.on`, with the following\n   * behavior differences to prevent data loss and unnecessary hangs:\n   *\n   * - Adding a 'data' event handler will trigger the flow of data\n   *\n   * - Adding a 'readable' event handler when there is data waiting to be read\n   *   will cause 'readable' to be emitted immediately.\n   *\n   * - Adding an 'endish' event handler ('end', 'finish', etc.) which has\n   *   already passed will cause the event to be emitted immediately and all\n   *   handlers removed.\n   *\n   * - Adding an 'error' event handler after an error has been emitted will\n   *   cause the event to be re-emitted immediately with the error previously\n   *   raised.\n   */\n  on<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ): this {\n    const ret = super.on(\n      ev as string | symbol,\n      handler as (...a: any[]) => any\n    )\n    if (ev === 'data') {\n      this[DISCARDED] = false\n      this[DATALISTENERS]++\n      if (!this[PIPES].length && !this[FLOWING]) {\n        this[RESUME]()\n      }\n    } else if (ev === 'readable' && this[BUFFERLENGTH] !== 0) {\n      super.emit('readable')\n    } else if (isEndish(ev) && this[EMITTED_END]) {\n      super.emit(ev)\n      this.removeAllListeners(ev)\n    } else if (ev === 'error' && this[EMITTED_ERROR]) {\n      const h = handler as (...a: Events['error']) => any\n      if (this[ASYNC]) defer(() => h.call(this, this[EMITTED_ERROR]))\n      else h.call(this, this[EMITTED_ERROR])\n    }\n    return ret\n  }\n\n  /**\n   * Alias for {@link Minipass#off}\n   */\n  removeListener<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ) {\n    return this.off(ev, handler)\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.off`\n   *\n   * If a 'data' event handler is removed, and it was the last consumer\n   * (ie, there are no pipe destinations or other 'data' event listeners),\n   * then the flow of data will stop until there is another consumer or\n   * {@link Minipass#resume} is explicitly called.\n   */\n  off<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ) {\n    const ret = super.off(\n      ev as string | symbol,\n      handler as (...a: any[]) => any\n    )\n    // if we previously had listeners, and now we don't, and we don't\n    // have any pipes, then stop the flow, unless it's been explicitly\n    // put in a discarded flowing state via stream.resume().\n    if (ev === 'data') {\n      this[DATALISTENERS] = this.listeners('data').length\n      if (\n        this[DATALISTENERS] === 0 &&\n        !this[DISCARDED] &&\n        !this[PIPES].length\n      ) {\n        this[FLOWING] = false\n      }\n    }\n    return ret\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.removeAllListeners`\n   *\n   * If all 'data' event handlers are removed, and they were the last consumer\n   * (ie, there are no pipe destinations), then the flow of data will stop\n   * until there is another consumer or {@link Minipass#resume} is explicitly\n   * called.\n   */\n  removeAllListeners<Event extends keyof Events>(ev?: Event) {\n    const ret = super.removeAllListeners(ev as string | symbol | undefined)\n    if (ev === 'data' || ev === undefined) {\n      this[DATALISTENERS] = 0\n      if (!this[DISCARDED] && !this[PIPES].length) {\n        this[FLOWING] = false\n      }\n    }\n    return ret\n  }\n\n  /**\n   * true if the 'end' event has been emitted\n   */\n  get emittedEnd() {\n    return this[EMITTED_END]\n  }\n\n  [MAYBE_EMIT_END]() {\n    if (\n      !this[EMITTING_END] &&\n      !this[EMITTED_END] &&\n      !this[DESTROYED] &&\n      this[BUFFER].length === 0 &&\n      this[EOF]\n    ) {\n      this[EMITTING_END] = true\n      this.emit('end')\n      this.emit('prefinish')\n      this.emit('finish')\n      if (this[CLOSED]) this.emit('close')\n      this[EMITTING_END] = false\n    }\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.emit`, with the following\n   * behavior differences to prevent data loss and unnecessary hangs:\n   *\n   * If the stream has been destroyed, and the event is something other\n   * than 'close' or 'error', then `false` is returned and no handlers\n   * are called.\n   *\n   * If the event is 'end', and has already been emitted, then the event\n   * is ignored. If the stream is in a paused or non-flowing state, then\n   * the event will be deferred until data flow resumes. If the stream is\n   * async, then handlers will be called on the next tick rather than\n   * immediately.\n   *\n   * If the event is 'close', and 'end' has not yet been emitted, then\n   * the event will be deferred until after 'end' is emitted.\n   *\n   * If the event is 'error', and an AbortSignal was provided for the stream,\n   * and there are no listeners, then the event is ignored, matching the\n   * behavior of node core streams in the presense of an AbortSignal.\n   *\n   * If the event is 'finish' or 'prefinish', then all listeners will be\n   * removed after emitting the event, to prevent double-firing.\n   */\n  emit<Event extends keyof Events>(\n    ev: Event,\n    ...args: Events[Event]\n  ): boolean {\n    const data = args[0]\n    // error and close are only events allowed after calling destroy()\n    if (\n      ev !== 'error' &&\n      ev !== 'close' &&\n      ev !== DESTROYED &&\n      this[DESTROYED]\n    ) {\n      return false\n    } else if (ev === 'data') {\n      return !this[OBJECTMODE] && !data\n        ? false\n        : this[ASYNC]\n        ? (defer(() => this[EMITDATA](data as RType)), true)\n        : this[EMITDATA](data as RType)\n    } else if (ev === 'end') {\n      return this[EMITEND]()\n    } else if (ev === 'close') {\n      this[CLOSED] = true\n      // don't emit close before 'end' and 'finish'\n      if (!this[EMITTED_END] && !this[DESTROYED]) return false\n      const ret = super.emit('close')\n      this.removeAllListeners('close')\n      return ret\n    } else if (ev === 'error') {\n      this[EMITTED_ERROR] = data\n      super.emit(ERROR, data)\n      const ret =\n        !this[SIGNAL] || this.listeners('error').length\n          ? super.emit('error', data)\n          : false\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'resume') {\n      const ret = super.emit('resume')\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'finish' || ev === 'prefinish') {\n      const ret = super.emit(ev)\n      this.removeAllListeners(ev)\n      return ret\n    }\n\n    // Some other unknown event\n    const ret = super.emit(ev as string, ...args)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITDATA](data: RType) {\n    for (const p of this[PIPES]) {\n      if (p.dest.write(data as RType) === false) this.pause()\n    }\n    const ret = this[DISCARDED] ? false : super.emit('data', data)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITEND]() {\n    if (this[EMITTED_END]) return false\n\n    this[EMITTED_END] = true\n    this.readable = false\n    return this[ASYNC]\n      ? (defer(() => this[EMITEND2]()), true)\n      : this[EMITEND2]()\n  }\n\n  [EMITEND2]() {\n    if (this[DECODER]) {\n      const data = this[DECODER].end()\n      if (data) {\n        for (const p of this[PIPES]) {\n          p.dest.write(data as RType)\n        }\n        if (!this[DISCARDED]) super.emit('data', data)\n      }\n    }\n\n    for (const p of this[PIPES]) {\n      p.end()\n    }\n    const ret = super.emit('end')\n    this.removeAllListeners('end')\n    return ret\n  }\n\n  /**\n   * Return a Promise that resolves to an array of all emitted data once\n   * the stream ends.\n   */\n  async collect(): Promise<RType[] & { dataLength: number }> {\n    const buf: RType[] & { dataLength: number } = Object.assign([], {\n      dataLength: 0,\n    })\n    if (!this[OBJECTMODE]) buf.dataLength = 0\n    // set the promise first, in case an error is raised\n    // by triggering the flow here.\n    const p = this.promise()\n    this.on('data', c => {\n      buf.push(c)\n      if (!this[OBJECTMODE])\n        buf.dataLength += (c as Minipass.BufferOrString).length\n    })\n    await p\n    return buf\n  }\n\n  /**\n   * Return a Promise that resolves to the concatenation of all emitted data\n   * once the stream ends.\n   *\n   * Not allowed on objectMode streams.\n   */\n  async concat(): Promise<RType> {\n    if (this[OBJECTMODE]) {\n      throw new Error('cannot concat in objectMode')\n    }\n    const buf = await this.collect()\n    return (\n      this[ENCODING]\n        ? buf.join('')\n        : Buffer.concat(buf as Buffer[], buf.dataLength)\n    ) as RType\n  }\n\n  /**\n   * Return a void Promise that resolves once the stream ends.\n   */\n  async promise(): Promise<void> {\n    return new Promise<void>((resolve, reject) => {\n      this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n      this.on('error', er => reject(er))\n      this.on('end', () => resolve())\n    })\n  }\n\n  /**\n   * Asynchronous `for await of` iteration.\n   *\n   * This will continue emitting all chunks until the stream terminates.\n   */\n  [Symbol.asyncIterator](): AsyncGenerator<RType, void, void> {\n    // set this up front, in case the consumer doesn't call next()\n    // right away.\n    this[DISCARDED] = false\n    let stopped = false\n    const stop = async (): Promise<IteratorReturnResult<void>> => {\n      this.pause()\n      stopped = true\n      return { value: undefined, done: true }\n    }\n    const next = (): Promise<IteratorResult<RType, void>> => {\n      if (stopped) return stop()\n      const res = this.read()\n      if (res !== null) return Promise.resolve({ done: false, value: res })\n\n      if (this[EOF]) return stop()\n\n      let resolve!: (res: IteratorResult<RType>) => void\n      let reject!: (er: unknown) => void\n      const onerr = (er: unknown) => {\n        this.off('data', ondata)\n        this.off('end', onend)\n        this.off(DESTROYED, ondestroy)\n        stop()\n        reject(er)\n      }\n      const ondata = (value: RType) => {\n        this.off('error', onerr)\n        this.off('end', onend)\n        this.off(DESTROYED, ondestroy)\n        this.pause()\n        resolve({ value, done: !!this[EOF] })\n      }\n      const onend = () => {\n        this.off('error', onerr)\n        this.off('data', ondata)\n        this.off(DESTROYED, ondestroy)\n        stop()\n        resolve({ done: true, value: undefined })\n      }\n      const ondestroy = () => onerr(new Error('stream destroyed'))\n      return new Promise<IteratorResult<RType>>((res, rej) => {\n        reject = rej\n        resolve = res\n        this.once(DESTROYED, ondestroy)\n        this.once('error', onerr)\n        this.once('end', onend)\n        this.once('data', ondata)\n      })\n    }\n\n    return {\n      next,\n      throw: stop,\n      return: stop,\n      [Symbol.asyncIterator]() {\n        return this\n      },\n    }\n  }\n\n  /**\n   * Synchronous `for of` iteration.\n   *\n   * The iteration will terminate when the internal buffer runs out, even\n   * if the stream has not yet terminated.\n   */\n  [Symbol.iterator](): Generator<RType, void, void> {\n    // set this up front, in case the consumer doesn't call next()\n    // right away.\n    this[DISCARDED] = false\n    let stopped = false\n    const stop = (): IteratorReturnResult<void> => {\n      this.pause()\n      this.off(ERROR, stop)\n      this.off(DESTROYED, stop)\n      this.off('end', stop)\n      stopped = true\n      return { done: true, value: undefined }\n    }\n\n    const next = (): IteratorResult<RType, void> => {\n      if (stopped) return stop()\n      const value = this.read()\n      return value === null ? stop() : { done: false, value }\n    }\n\n    this.once('end', stop)\n    this.once(ERROR, stop)\n    this.once(DESTROYED, stop)\n\n    return {\n      next,\n      throw: stop,\n      return: stop,\n      [Symbol.iterator]() {\n        return this\n      },\n    }\n  }\n\n  /**\n   * Destroy a stream, preventing it from being used for any further purpose.\n   *\n   * If the stream has a `close()` method, then it will be called on\n   * destruction.\n   *\n   * After destruction, any attempt to write data, read data, or emit most\n   * events will be ignored.\n   *\n   * If an error argument is provided, then it will be emitted in an\n   * 'error' event.\n   */\n  destroy(er?: unknown) {\n    if (this[DESTROYED]) {\n      if (er) this.emit('error', er)\n      else this.emit(DESTROYED)\n      return this\n    }\n\n    this[DESTROYED] = true\n    this[DISCARDED] = true\n\n    // throw away all buffered data, it's never coming out\n    this[BUFFER].length = 0\n    this[BUFFERLENGTH] = 0\n\n    const wc = this as Minipass<RType, WType, Events> & {\n      close?: () => void\n    }\n    if (typeof wc.close === 'function' && !this[CLOSED]) wc.close()\n\n    if (er) this.emit('error', er)\n    // if no error to emit, still reject pending promises\n    else this.emit(DESTROYED)\n\n    return this\n  }\n\n  /**\n   * Alias for {@link isStream}\n   *\n   * Former export location, maintained for backwards compatibility.\n   *\n   * @deprecated\n   */\n  static get isStream() {\n    return isStream\n  }\n}\n", "// tar -t\nimport * as fsm from '@isaacs/fs-minipass'\nimport fs from 'node:fs'\nimport { dirname, parse } from 'path'\nimport { makeCommand } from './make-command.js'\nimport {\n  TarOptions,\n  TarOptionsFile,\n  TarOptionsSyncFile,\n} from './options.js'\nimport { Parser } from './parse.js'\nimport { stripTrailingSlashes } from './strip-trailing-slashes.js'\n\nconst onentryFunction = (opt: TarOptions) => {\n  const onentry = opt.onentry\n  opt.onentry =\n    onentry ?\n      e => {\n        onentry(e)\n        e.resume()\n      }\n    : e => e.resume()\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nexport const filesFilter = (opt: TarOptions, files: string[]) => {\n  const map = new Map<string, boolean>(\n    files.map(f => [stripTrailingSlashes(f), true]),\n  )\n  const filter = opt.filter\n\n  const mapHas = (file: string, r: string = ''): boolean => {\n    const root = r || parse(file).root || '.'\n    let ret: boolean\n    if (file === root) ret = false\n    else {\n      const m = map.get(file)\n      if (m !== undefined) {\n        ret = m\n      } else {\n        ret = mapHas(dirname(file), root)\n      }\n    }\n\n    map.set(file, ret)\n    return ret\n  }\n\n  opt.filter =\n    filter ?\n      (file, entry) =>\n        filter(file, entry) && mapHas(stripTrailingSlashes(file))\n    : file => mapHas(stripTrailingSlashes(file))\n}\n\nconst listFileSync = (opt: TarOptionsSyncFile) => {\n  const p = new Parser(opt)\n  const file = opt.file\n  let fd\n  try {\n    const stat = fs.statSync(file)\n    const readSize = opt.maxReadSize || 16 * 1024 * 1024\n    if (stat.size < readSize) {\n      p.end(fs.readFileSync(file))\n    } else {\n      let pos = 0\n      const buf = Buffer.allocUnsafe(readSize)\n      fd = fs.openSync(file, 'r')\n      while (pos < stat.size) {\n        const bytesRead = fs.readSync(fd, buf, 0, readSize, pos)\n        pos += bytesRead\n        p.write(buf.subarray(0, bytesRead))\n      }\n      p.end()\n    }\n  } finally {\n    if (typeof fd === 'number') {\n      try {\n        fs.closeSync(fd)\n        /* c8 ignore next */\n      } catch (er) {}\n    }\n  }\n}\n\nconst listFile = (\n  opt: TarOptionsFile,\n  _files: string[],\n): Promise<void> => {\n  const parse = new Parser(opt)\n  const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n  const file = opt.file\n  const p = new Promise<void>((resolve, reject) => {\n    parse.on('error', reject)\n    parse.on('end', resolve)\n\n    fs.stat(file, (er, stat) => {\n      if (er) {\n        reject(er)\n      } else {\n        const stream = new fsm.ReadStream(file, {\n          readSize: readSize,\n          size: stat.size,\n        })\n        stream.on('error', reject)\n        stream.pipe(parse)\n      }\n    })\n  })\n  return p\n}\n\nexport const list = makeCommand(\n  listFileSync,\n  listFile,\n  opt => new Parser(opt) as Parser & { sync: true },\n  opt => new Parser(opt),\n  (opt, files) => {\n    if (files?.length) filesFilter(opt, files)\n    if (!opt.noResume) onentryFunction(opt)\n  },\n)\n", "// turn tar(1) style args like `C` into the more verbose things like `cwd`\n\nimport { type GzipOptions, type ZlibOptions } from 'minizlib'\nimport { type Stats } from 'node:fs'\nimport { type ReadEntry } from './read-entry.js'\nimport { type WarnData } from './warn-method.js'\n\nconst argmap = new Map<keyof TarOptionsWithAliases, keyof TarOptions>(\n  [\n    ['C', 'cwd'],\n    ['f', 'file'],\n    ['z', 'gzip'],\n    ['P', 'preservePaths'],\n    ['U', 'unlink'],\n    ['strip-components', 'strip'],\n    ['stripComponents', 'strip'],\n    ['keep-newer', 'newer'],\n    ['keepNewer', 'newer'],\n    ['keep-newer-files', 'newer'],\n    ['keepNewerFiles', 'newer'],\n    ['k', 'keep'],\n    ['keep-existing', 'keep'],\n    ['keepExisting', 'keep'],\n    ['m', 'noMtime'],\n    ['no-mtime', 'noMtime'],\n    ['p', 'preserveOwner'],\n    ['L', 'follow'],\n    ['h', 'follow'],\n  ],\n)\n\n/**\n * The options that can be provided to tar commands.\n *\n * Note that some of these are only relevant for certain commands, since\n * they are specific to reading or writing.\n *\n * Aliases are provided in the {@link TarOptionsWithAliases} type.\n */\nexport interface TarOptions {\n  //////////////////////////\n  // shared options\n\n  /**\n   * Perform all I/O operations synchronously. If the stream is ended\n   * immediately, then it will be processed entirely synchronously.\n   */\n  sync?: boolean\n\n  /**\n   * The tar file to be read and/or written. When this is set, a stream\n   * is not returned. Asynchronous commands will return a promise indicating\n   * when the operation is completed, and synchronous commands will return\n   * immediately.\n   */\n  file?: string\n\n  /**\n   * Treat warnings as crash-worthy errors. Defaults false.\n   */\n  strict?: boolean\n\n  /**\n   * The effective current working directory for this tar command\n   */\n  cwd?: string\n\n  /**\n   * When creating a tar archive, this can be used to compress it as well.\n   * Set to `true` to use the default gzip options, or customize them as\n   * needed.\n   *\n   * When reading, if this is unset, then the compression status will be\n   * inferred from the archive data. This is generally best, unless you are\n   * sure of the compression settings in use to create the archive, and want to\n   * fail if the archive doesn't match expectations.\n   */\n  gzip?: boolean | GzipOptions\n\n  /**\n   * When creating archives, preserve absolute and `..` paths in the archive,\n   * rather than sanitizing them under the cwd.\n   *\n   * When extracting, allow absolute paths, paths containing `..`, and\n   * extracting through symbolic links. By default, the root `/` is stripped\n   * from absolute paths (eg, turning `/x/y/z` into `x/y/z`), paths containing\n   * `..` are not extracted, and any file whose location would be modified by a\n   * symbolic link is not extracted.\n   *\n   * **WARNING** This is almost always unsafe, and must NEVER be used on\n   * archives from untrusted sources, such as user input, and every entry must\n   * be validated to ensure it is safe to write. Even if the input is not\n   * malicious, mistakes can cause a lot of damage!\n   */\n  preservePaths?: boolean\n\n  /**\n   * When extracting, do not set the `mtime` value for extracted entries to\n   * match the `mtime` in the archive.\n   *\n   * When creating archives, do not store the `mtime` value in the entry. Note\n   * that this prevents properly using other mtime-based features (such as\n   * `tar.update` or the `newer` option) with the resulting archive.\n   */\n  noMtime?: boolean\n\n  /**\n   * Set to `true` or an object with settings for `zlib.BrotliCompress()` to\n   * create a brotli-compressed archive\n   *\n   * When extracting, this will cause the archive to be treated as a\n   * brotli-compressed file if set to `true` or a ZlibOptions object.\n   *\n   * If set `false`, then brotli options will not be used.\n   *\n   * If both this and the `gzip` option are left `undefined`, then tar will\n   * attempt to infer the brotli compression status, but can only do so based\n   * on the filename. If the filename ends in `.tbr` or `.tar.br`, and the\n   * first 512 bytes are not a valid tar header, then brotli decompression\n   * will be attempted.\n   */\n  brotli?: boolean | ZlibOptions\n\n  /**\n   * A function that is called with `(path, stat)` when creating an archive, or\n   * `(path, entry)` when extracting. Return true to process the file/entry, or\n   * false to exclude it.\n   */\n  filter?: (path: string, entry: Stats | ReadEntry) => boolean\n\n  /**\n   * A function that gets called for any warning encountered.\n   *\n   * Note: if `strict` is set, then the warning will throw, and this method\n   * will not be called.\n   */\n  onwarn?: (code: string, message: string, data: WarnData) => any\n\n  //////////////////////////\n  // extraction options\n\n  /**\n   * When extracting, unlink files before creating them. Without this option,\n   * tar overwrites existing files, which preserves existing hardlinks. With\n   * this option, existing hardlinks will be broken, as will any symlink that\n   * would affect the location of an extracted file.\n   */\n  unlink?: boolean\n\n  /**\n   * When extracting, strip the specified number of path portions from the\n   * entry path. For example, with `{strip: 2}`, the entry `a/b/c/d` would be\n   * extracted to `{cwd}/c/d`.\n   *\n   * Any entry whose entire path is stripped will be excluded.\n   */\n  strip?: number\n\n  /**\n   * When extracting, keep the existing file on disk if it's newer than the\n   * file in the archive.\n   */\n  newer?: boolean\n\n  /**\n   * When extracting, do not overwrite existing files at all.\n   */\n  keep?: boolean\n\n  /**\n   * When extracting, set the `uid` and `gid` of extracted entries to the `uid`\n   * and `gid` fields in the archive. Defaults to true when run as root, and\n   * false otherwise.\n   *\n   * If false, then files and directories will be set with the owner and group\n   * of the user running the process. This is similar to `-p` in `tar(1)`, but\n   * ACLs and other system-specific data is never unpacked in this\n   * implementation, and modes are set by default already.\n   */\n  preserveOwner?: boolean\n\n  /**\n   * The maximum depth of subfolders to extract into. This defaults to 1024.\n   * Anything deeper than the limit will raise a warning and skip the entry.\n   * Set to `Infinity` to remove the limitation.\n   */\n  maxDepth?: number\n\n  /**\n   * When extracting, force all created files and directories, and all\n   * implicitly created directories, to be owned by the specified user id,\n   * regardless of the `uid` field in the archive.\n   *\n   * Cannot be used along with `preserveOwner`. Requires also setting the `gid`\n   * option.\n   */\n  uid?: number\n\n  /**\n   * When extracting, force all created files and directories, and all\n   * implicitly created directories, to be owned by the specified group id,\n   * regardless of the `gid` field in the archive.\n   *\n   * Cannot be used along with `preserveOwner`. Requires also setting the `uid`\n   * option.\n   */\n  gid?: number\n\n  /**\n   * When extracting, provide a function that takes an `entry` object, and\n   * returns a stream, or any falsey value. If a stream is provided, then that\n   * stream's data will be written instead of the contents of the archive\n   * entry. If a falsey value is provided, then the entry is written to disk as\n   * normal.\n   *\n   * To exclude items from extraction, use the `filter` option.\n   *\n   * Note that using an asynchronous stream type with the `transform` option\n   * will cause undefined behavior in synchronous extractions.\n   * [MiniPass](http://npm.im/minipass)-based streams are designed for this use\n   * case.\n   */\n  transform?: (entry: ReadEntry) => any\n\n  /**\n   * Call `chmod()` to ensure that extracted files match the entry's mode\n   * field. Without this field set, all mode fields in archive entries are a\n   * best effort attempt only.\n   *\n   * Setting this necessitates a call to the deprecated `process.umask()`\n   * method to determine the default umask value, unless a `processUmask`\n   * config is provided as well.\n   *\n   * If not set, tar will attempt to create file system entries with whatever\n   * mode is provided, and let the implicit process `umask` apply normally, but\n   * if a file already exists to be written to, then its existing mode will not\n   * be modified.\n   *\n   * When setting `chmod: true`, it is highly recommend to set the\n   * {@link TarOptions#processUmask} option as well, to avoid the call to the\n   * deprecated (and thread-unsafe) `process.umask()` method.\n   */\n  chmod?: boolean\n\n  /**\n   * When setting the {@link TarOptions#chmod} option to `true`, you may\n   * provide a value here to avoid having to call the deprecated and\n   * thread-unsafe `process.umask()` method.\n   *\n   * This has no effect with `chmod` is not set to true, as mode values are not\n   * set explicitly anyway. If `chmod` is set to `true`, and a value is not\n   * provided here, then `process.umask()` must be called, which will result in\n   * deprecation warnings.\n   *\n   * The most common values for this are `0o22` (resulting in directories\n   * created with mode `0o755` and files with `0o644` by default) and `0o2`\n   * (resulting in directores created with mode `0o775` and files `0o664`, so\n   * they are group-writable).\n   */\n  processUmask?: number\n\n  //////////////////////////\n  // archive creation options\n\n  /**\n   * When parsing/listing archives, `entry` streams are by default resumed\n   * (set into \"flowing\" mode) immediately after the call to `onentry()`.\n   * Set `noResume: true` to suppress this behavior.\n   *\n   * Note that when this is set, the stream will never complete until the\n   * data is consumed somehow.\n   *\n   * Set automatically in extract operations, since the entry is piped to\n   * a file system entry right away. Only relevant when parsing.\n   */\n  noResume?: boolean\n\n  /**\n   * When extracting or listing archives, this method will be called with\n   * each entry that is not excluded by a `filter`.\n   *\n   * Important when listing archives synchronously from a file, because there\n   * is otherwise no way to interact with the data!\n   */\n  onentry?: (entry: ReadEntry) => any\n\n  /**\n   * Pack the targets of symbolic links rather than the link itself.\n   */\n  follow?: boolean\n\n  /**\n   * When creating archives, omit any metadata that is system-specific:\n   * `ctime`, `atime`, `uid`, `gid`, `uname`, `gname`, `dev`, `ino`, and\n   * `nlink`. Note that `mtime` is still included, because this is necessary\n   * for other time-based operations such as `tar.update`. Additionally, `mode`\n   * is set to a \"reasonable default\" for mose unix systems, based on an\n   * effective `umask` of `0o22`.\n   *\n   * This also defaults the `portable` option in the gzip configs when creating\n   * a compressed archive, in order to produce deterministic archives that are\n   * not operating-system specific.\n   */\n  portable?: boolean\n\n  /**\n   * When creating archives, do not recursively archive the contents of\n   * directories. By default, archiving a directory archives all of its\n   * contents as well.\n   */\n  noDirRecurse?: boolean\n\n  /**\n   * Suppress Pax extended headers when creating archives. Note that this means\n   * long paths and linkpaths will be truncated, and large or negative numeric\n   * values may be interpreted incorrectly.\n   */\n  noPax?: boolean\n\n  /**\n   * Set to a `Date` object to force a specific `mtime` value for everything\n   * written to an archive.\n   *\n   * This is useful when creating archives that are intended to be\n   * deterministic based on their contents, irrespective of the file's last\n   * modification time.\n   *\n   * Overridden by `noMtime`.\n   */\n  mtime?: Date\n\n  /**\n   * A path portion to prefix onto the entries added to an archive.\n   */\n  prefix?: string\n\n  /**\n   * The mode to set on any created file archive, defaults to 0o666\n   * masked by the process umask, often resulting in 0o644.\n   *\n   * This does *not* affect the mode fields of individual entries, or the\n   * mode status of extracted entries on the filesystem.\n   */\n  mode?: number\n\n  //////////////////////////\n  // internal options\n\n  /**\n   * A cache of mtime values, to avoid having to stat the same file repeatedly.\n   *\n   * @internal\n   */\n  mtimeCache?: Map<string, Date>\n\n  /**\n   * maximum buffer size for `fs.read()` operations.\n   *\n   * @internal\n   */\n  maxReadSize?: number\n\n  /**\n   * Filter modes of entries being unpacked, like `process.umask()`\n   *\n   * @internal\n   */\n  umask?: number\n\n  /**\n   * Default mode for directories. Used for all implicitly created directories,\n   * and any directories in the archive that do not have a mode field.\n   *\n   * @internal\n   */\n  dmode?: number\n\n  /**\n   * default mode for files\n   *\n   * @internal\n   */\n  fmode?: number\n\n  /**\n   * Map that tracks which directories already exist, for extraction\n   *\n   * @internal\n   */\n  dirCache?: Map<string, boolean>\n  /**\n   * maximum supported size of meta entries. Defaults to 1MB\n   *\n   * @internal\n   */\n  maxMetaEntrySize?: number\n\n  /**\n   * A Map object containing the device and inode value for any file whose\n   * `nlink` value is greater than 1, to identify hard links when creating\n   * archives.\n   *\n   * @internal\n   */\n  linkCache?: Map<LinkCacheKey, string>\n\n  /**\n   * A map object containing the results of `fs.readdir()` calls.\n   *\n   * @internal\n   */\n  readdirCache?: Map<string, string[]>\n\n  /**\n   * A cache of all `lstat` results, for use in creating archives.\n   *\n   * @internal\n   */\n  statCache?: Map<string, Stats>\n\n  /**\n   * Number of concurrent jobs to run when creating archives.\n   *\n   * Defaults to 4.\n   *\n   * @internal\n   */\n  jobs?: number\n\n  /**\n   * Automatically set to true on Windows systems.\n   *\n   * When extracting, causes behavior where filenames containing `<|>?:`\n   * characters are converted to windows-compatible escape sequences in the\n   * created filesystem entries.\n   *\n   * When packing, causes behavior where paths replace `\\` with `/`, and\n   * filenames containing the windows-compatible escaped forms of `<|>?:` are\n   * converted to actual `<|>?:` characters in the archive.\n   *\n   * @internal\n   */\n  win32?: boolean\n\n  /**\n   * For `WriteEntry` objects, the absolute path to the entry on the\n   * filesystem. By default, this is `resolve(cwd, entry.path)`, but it can be\n   * overridden explicitly.\n   *\n   * @internal\n   */\n  absolute?: string\n\n  /**\n   * Used with Parser stream interface, to attach and take over when the\n   * stream is completely parsed. If this is set, then the prefinish,\n   * finish, and end events will not fire, and are the responsibility of\n   * the ondone method to emit properly.\n   *\n   * @internal\n   */\n  ondone?: () => void\n\n  /**\n   * Mostly for testing, but potentially useful in some cases.\n   * Forcibly trigger a chown on every entry, no matter what.\n   */\n  forceChown?: boolean\n}\n\nexport type TarOptionsSync = TarOptions & { sync: true }\nexport type TarOptionsAsync = TarOptions & { sync?: false }\nexport type TarOptionsFile = TarOptions & { file: string }\nexport type TarOptionsNoFile = TarOptions & { file?: undefined }\nexport type TarOptionsSyncFile = TarOptionsSync & TarOptionsFile\nexport type TarOptionsAsyncFile = TarOptionsAsync & TarOptionsFile\nexport type TarOptionsSyncNoFile = TarOptionsSync & TarOptionsNoFile\nexport type TarOptionsAsyncNoFile = TarOptionsAsync & TarOptionsNoFile\n\nexport type LinkCacheKey = `${number}:${number}`\n\nexport interface TarOptionsWithAliases extends TarOptions {\n  /**\n   * The effective current working directory for this tar command\n   */\n  C?: TarOptions['cwd']\n  /**\n   * The tar file to be read and/or written. When this is set, a stream\n   * is not returned. Asynchronous commands will return a promise indicating\n   * when the operation is completed, and synchronous commands will return\n   * immediately.\n   */\n  f?: TarOptions['file']\n  /**\n   * When creating a tar archive, this can be used to compress it as well.\n   * Set to `true` to use the default gzip options, or customize them as\n   * needed.\n   *\n   * When reading, if this is unset, then the compression status will be\n   * inferred from the archive data. This is generally best, unless you are\n   * sure of the compression settings in use to create the archive, and want to\n   * fail if the archive doesn't match expectations.\n   */\n  z?: TarOptions['gzip']\n  /**\n   * When creating archives, preserve absolute and `..` paths in the archive,\n   * rather than sanitizing them under the cwd.\n   *\n   * When extracting, allow absolute paths, paths containing `..`, and\n   * extracting through symbolic links. By default, the root `/` is stripped\n   * from absolute paths (eg, turning `/x/y/z` into `x/y/z`), paths containing\n   * `..` are not extracted, and any file whose location would be modified by a\n   * symbolic link is not extracted.\n   *\n   * **WARNING** This is almost always unsafe, and must NEVER be used on\n   * archives from untrusted sources, such as user input, and every entry must\n   * be validated to ensure it is safe to write. Even if the input is not\n   * malicious, mistakes can cause a lot of damage!\n   */\n  P?: TarOptions['preservePaths']\n  /**\n   * When extracting, unlink files before creating them. Without this option,\n   * tar overwrites existing files, which preserves existing hardlinks. With\n   * this option, existing hardlinks will be broken, as will any symlink that\n   * would affect the location of an extracted file.\n   */\n  U?: TarOptions['unlink']\n  /**\n   * When extracting, strip the specified number of path portions from the\n   * entry path. For example, with `{strip: 2}`, the entry `a/b/c/d` would be\n   * extracted to `{cwd}/c/d`.\n   */\n  'strip-components'?: TarOptions['strip']\n  /**\n   * When extracting, strip the specified number of path portions from the\n   * entry path. For example, with `{strip: 2}`, the entry `a/b/c/d` would be\n   * extracted to `{cwd}/c/d`.\n   */\n  stripComponents?: TarOptions['strip']\n  /**\n   * When extracting, keep the existing file on disk if it's newer than the\n   * file in the archive.\n   */\n  'keep-newer'?: TarOptions['newer']\n  /**\n   * When extracting, keep the existing file on disk if it's newer than the\n   * file in the archive.\n   */\n  keepNewer?: TarOptions['newer']\n  /**\n   * When extracting, keep the existing file on disk if it's newer than the\n   * file in the archive.\n   */\n  'keep-newer-files'?: TarOptions['newer']\n  /**\n   * When extracting, keep the existing file on disk if it's newer than the\n   * file in the archive.\n   */\n  keepNewerFiles?: TarOptions['newer']\n  /**\n   * When extracting, do not overwrite existing files at all.\n   */\n  k?: TarOptions['keep']\n  /**\n   * When extracting, do not overwrite existing files at all.\n   */\n  'keep-existing'?: TarOptions['keep']\n  /**\n   * When extracting, do not overwrite existing files at all.\n   */\n  keepExisting?: TarOptions['keep']\n  /**\n   * When extracting, do not set the `mtime` value for extracted entries to\n   * match the `mtime` in the archive.\n   *\n   * When creating archives, do not store the `mtime` value in the entry. Note\n   * that this prevents properly using other mtime-based features (such as\n   * `tar.update` or the `newer` option) with the resulting archive.\n   */\n  m?: TarOptions['noMtime']\n  /**\n   * When extracting, do not set the `mtime` value for extracted entries to\n   * match the `mtime` in the archive.\n   *\n   * When creating archives, do not store the `mtime` value in the entry. Note\n   * that this prevents properly using other mtime-based features (such as\n   * `tar.update` or the `newer` option) with the resulting archive.\n   */\n  'no-mtime'?: TarOptions['noMtime']\n  /**\n   * When extracting, set the `uid` and `gid` of extracted entries to the `uid`\n   * and `gid` fields in the archive. Defaults to true when run as root, and\n   * false otherwise.\n   *\n   * If false, then files and directories will be set with the owner and group\n   * of the user running the process. This is similar to `-p` in `tar(1)`, but\n   * ACLs and other system-specific data is never unpacked in this\n   * implementation, and modes are set by default already.\n   */\n  p?: TarOptions['preserveOwner']\n  /**\n   * Pack the targets of symbolic links rather than the link itself.\n   */\n  L?: TarOptions['follow']\n  /**\n   * Pack the targets of symbolic links rather than the link itself.\n   */\n  h?: TarOptions['follow']\n\n  /**\n   * Deprecated option. Set explicitly false to set `chmod: true`. Ignored\n   * if {@link TarOptions#chmod} is set to any boolean value.\n   *\n   * @deprecated\n   */\n  noChmod?: boolean\n}\n\nexport type TarOptionsWithAliasesSync = TarOptionsWithAliases & {\n  sync: true\n}\nexport type TarOptionsWithAliasesAsync = TarOptionsWithAliases & {\n  sync?: false\n}\nexport type TarOptionsWithAliasesFile =\n  | (TarOptionsWithAliases & {\n      file: string\n    })\n  | (TarOptionsWithAliases & { f: string })\nexport type TarOptionsWithAliasesSyncFile =\n  TarOptionsWithAliasesSync & TarOptionsWithAliasesFile\nexport type TarOptionsWithAliasesAsyncFile =\n  TarOptionsWithAliasesAsync & TarOptionsWithAliasesFile\n\nexport type TarOptionsWithAliasesNoFile = TarOptionsWithAliases & {\n  f?: undefined\n  file?: undefined\n}\n\nexport type TarOptionsWithAliasesSyncNoFile =\n  TarOptionsWithAliasesSync & TarOptionsWithAliasesNoFile\nexport type TarOptionsWithAliasesAsyncNoFile =\n  TarOptionsWithAliasesAsync & TarOptionsWithAliasesNoFile\n\nexport const isSyncFile = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsSyncFile => !!o.sync && !!o.file\nexport const isAsyncFile = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsAsyncFile => !o.sync && !!o.file\nexport const isSyncNoFile = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsSyncNoFile => !!o.sync && !o.file\nexport const isAsyncNoFile = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsAsyncNoFile => !o.sync && !o.file\nexport const isSync = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsSync => !!o.sync\nexport const isAsync = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsAsync => !o.sync\nexport const isFile = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsFile => !!o.file\nexport const isNoFile = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsNoFile => !o.file\n\nconst dealiasKey = (\n  k: keyof TarOptionsWithAliases,\n): keyof TarOptions => {\n  const d = argmap.get(k)\n  if (d) return d\n  return k as keyof TarOptions\n}\n\nexport const dealias = (\n  opt: TarOptionsWithAliases = {},\n): TarOptions => {\n  if (!opt) return {}\n  const result: Record<string, any> = {}\n  for (const [key, v] of Object.entries(opt) as [\n    keyof TarOptionsWithAliases,\n    any,\n  ][]) {\n    // TS doesn't know that aliases are going to always be the same type\n    const k = dealiasKey(key)\n    result[k] = v\n  }\n  // affordance for deprecated noChmod -> chmod\n  if (result.chmod === undefined && result.noChmod === false) {\n    result.chmod = true\n  }\n  delete result.noChmod\n  return result as TarOptions\n}\n", "import {\n  dealias,\n  isAsyncFile,\n  isAsyncNoFile,\n  isSyncFile,\n  isSyncNoFile,\n  TarOptions,\n  TarOptionsAsyncFile,\n  TarOptionsAsyncNoFile,\n  TarOptionsSyncFile,\n  TarOptionsSyncNoFile,\n  TarOptionsWithAliases,\n  TarOptionsWithAliasesAsync,\n  TarOptionsWithAliasesAsyncFile,\n  TarOptionsWithAliasesAsyncNoFile,\n  TarOptionsWithAliasesFile,\n  TarOptionsWithAliasesNoFile,\n  TarOptionsWithAliasesSync,\n  TarOptionsWithAliasesSyncFile,\n  TarOptionsWithAliasesSyncNoFile,\n} from './options.js'\n\nexport type CB = (er?: Error) => any\n\nexport type TarCommand<\n  AsyncClass,\n  SyncClass extends { sync: true },\n> = {\n  // async and no file specified\n  (): AsyncClass\n  (opt: TarOptionsWithAliasesAsyncNoFile): AsyncClass\n  (entries: string[]): AsyncClass\n  (\n    opt: TarOptionsWithAliasesAsyncNoFile,\n    entries: string[],\n  ): AsyncClass\n} & {\n  // sync and no file\n  (opt: TarOptionsWithAliasesSyncNoFile): SyncClass\n  (opt: TarOptionsWithAliasesSyncNoFile, entries: string[]): SyncClass\n} & {\n  // async and file\n  (opt: TarOptionsWithAliasesAsyncFile): Promise<void>\n  (\n    opt: TarOptionsWithAliasesAsyncFile,\n    entries: string[],\n  ): Promise<void>\n  (opt: TarOptionsWithAliasesAsyncFile, cb: CB): Promise<void>\n  (\n    opt: TarOptionsWithAliasesAsyncFile,\n    entries: string[],\n    cb: CB,\n  ): Promise<void>\n} & {\n  // sync and file\n  (opt: TarOptionsWithAliasesSyncFile): void\n  (opt: TarOptionsWithAliasesSyncFile, entries: string[]): void\n} & {\n  // sync, maybe file\n  (opt: TarOptionsWithAliasesSync): typeof opt extends (\n    TarOptionsWithAliasesFile\n  ) ?\n    void\n  : typeof opt extends TarOptionsWithAliasesNoFile ? SyncClass\n  : void | SyncClass\n  (\n    opt: TarOptionsWithAliasesSync,\n    entries: string[],\n  ): typeof opt extends TarOptionsWithAliasesFile ? void\n  : typeof opt extends TarOptionsWithAliasesNoFile ? SyncClass\n  : void | SyncClass\n} & {\n  // async, maybe file\n  (opt: TarOptionsWithAliasesAsync): typeof opt extends (\n    TarOptionsWithAliasesFile\n  ) ?\n    Promise<void>\n  : typeof opt extends TarOptionsWithAliasesNoFile ? AsyncClass\n  : Promise<void> | AsyncClass\n  (\n    opt: TarOptionsWithAliasesAsync,\n    entries: string[],\n  ): typeof opt extends TarOptionsWithAliasesFile ? Promise<void>\n  : typeof opt extends TarOptionsWithAliasesNoFile ? AsyncClass\n  : Promise<void> | AsyncClass\n  (opt: TarOptionsWithAliasesAsync, cb: CB): Promise<void>\n  (\n    opt: TarOptionsWithAliasesAsync,\n    entries: string[],\n    cb: CB,\n  ): typeof opt extends TarOptionsWithAliasesFile ? Promise<void>\n  : typeof opt extends TarOptionsWithAliasesNoFile ? never\n  : Promise<void>\n} & {\n  // maybe sync, file\n  (opt: TarOptionsWithAliasesFile): Promise<void> | void\n  (\n    opt: TarOptionsWithAliasesFile,\n    entries: string[],\n  ): typeof opt extends TarOptionsWithAliasesSync ? void\n  : typeof opt extends TarOptionsWithAliasesAsync ? Promise<void>\n  : Promise<void> | void\n  (opt: TarOptionsWithAliasesFile, cb: CB): Promise<void>\n  (\n    opt: TarOptionsWithAliasesFile,\n    entries: string[],\n    cb: CB,\n  ): typeof opt extends TarOptionsWithAliasesSync ? never\n  : typeof opt extends TarOptionsWithAliasesAsync ? Promise<void>\n  : Promise<void>\n} & {\n  // maybe sync, no file\n  (opt: TarOptionsWithAliasesNoFile): typeof opt extends (\n    TarOptionsWithAliasesSync\n  ) ?\n    SyncClass\n  : typeof opt extends TarOptionsWithAliasesAsync ? AsyncClass\n  : SyncClass | AsyncClass\n  (\n    opt: TarOptionsWithAliasesNoFile,\n    entries: string[],\n  ): typeof opt extends TarOptionsWithAliasesSync ? SyncClass\n  : typeof opt extends TarOptionsWithAliasesAsync ? AsyncClass\n  : SyncClass | AsyncClass\n} & {\n  // maybe sync, maybe file\n  (opt: TarOptionsWithAliases): typeof opt extends (\n    TarOptionsWithAliasesFile\n  ) ?\n    typeof opt extends TarOptionsWithAliasesSync ? void\n    : typeof opt extends TarOptionsWithAliasesAsync ? Promise<void>\n    : void | Promise<void>\n  : typeof opt extends TarOptionsWithAliasesNoFile ?\n    typeof opt extends TarOptionsWithAliasesSync ? SyncClass\n    : typeof opt extends TarOptionsWithAliasesAsync ? AsyncClass\n    : SyncClass | AsyncClass\n  : typeof opt extends TarOptionsWithAliasesSync ? SyncClass | void\n  : typeof opt extends TarOptionsWithAliasesAsync ?\n    AsyncClass | Promise<void>\n  : SyncClass | void | AsyncClass | Promise<void>\n} & {\n  // extras\n  syncFile: (opt: TarOptionsSyncFile, entries: string[]) => void\n  asyncFile: (\n    opt: TarOptionsAsyncFile,\n    entries: string[],\n    cb?: CB,\n  ) => Promise<void>\n  syncNoFile: (\n    opt: TarOptionsSyncNoFile,\n    entries: string[],\n  ) => SyncClass\n  asyncNoFile: (\n    opt: TarOptionsAsyncNoFile,\n    entries: string[],\n  ) => AsyncClass\n  validate?: (opt: TarOptions, entries?: string[]) => void\n}\n\nexport const makeCommand = <\n  AsyncClass,\n  SyncClass extends { sync: true },\n>(\n  syncFile: (opt: TarOptionsSyncFile, entries: string[]) => void,\n  asyncFile: (\n    opt: TarOptionsAsyncFile,\n    entries: string[],\n    cb?: CB,\n  ) => Promise<void>,\n  syncNoFile: (\n    opt: TarOptionsSyncNoFile,\n    entries: string[],\n  ) => SyncClass,\n  asyncNoFile: (\n    opt: TarOptionsAsyncNoFile,\n    entries: string[],\n  ) => AsyncClass,\n  validate?: (opt: TarOptions, entries?: string[]) => void,\n): TarCommand<AsyncClass, SyncClass> => {\n  return Object.assign(\n    (\n      opt_: TarOptionsWithAliases | string[] = [],\n      entries?: string[] | CB,\n      cb?: CB,\n    ) => {\n      if (Array.isArray(opt_)) {\n        entries = opt_\n        opt_ = {}\n      }\n\n      if (typeof entries === 'function') {\n        cb = entries\n        entries = undefined\n      }\n\n      if (!entries) {\n        entries = []\n      } else {\n        entries = Array.from(entries)\n      }\n\n      const opt = dealias(opt_)\n\n      validate?.(opt, entries)\n\n      if (isSyncFile(opt)) {\n        if (typeof cb === 'function') {\n          throw new TypeError(\n            'callback not supported for sync tar functions',\n          )\n        }\n        return syncFile(opt, entries)\n      } else if (isAsyncFile(opt)) {\n        const p = asyncFile(opt, entries)\n        // weirdness to make TS happy\n        const c = cb ? cb : undefined\n        return c ? p.then(() => c(), c) : p\n      } else if (isSyncNoFile(opt)) {\n        if (typeof cb === 'function') {\n          throw new TypeError(\n            'callback not supported for sync tar functions',\n          )\n        }\n        return syncNoFile(opt, entries)\n      } else if (isAsyncNoFile(opt)) {\n        if (typeof cb === 'function') {\n          throw new TypeError(\n            'callback only supported with file option',\n          )\n        }\n        return asyncNoFile(opt, entries)\n        /* c8 ignore start */\n      } else {\n        throw new Error('impossible options??')\n      }\n      /* c8 ignore stop */\n    },\n    {\n      syncFile,\n      asyncFile,\n      syncNoFile,\n      asyncNoFile,\n      validate,\n    },\n  ) as TarCommand<AsyncClass, SyncClass>\n}\n", "// this[BUFFER] is the remainder of a chunk if we're waiting for\n// the full 512 bytes of a header to come in.  We will Buffer.concat()\n// it to the next write(), which is a mem copy, but a small one.\n//\n// this[QUEUE] is a Yallist of entries that haven't been emitted\n// yet this can only get filled up if the user keeps write()ing after\n// a write() returns false, or does a write() with more than one entry\n//\n// We don't buffer chunks, we always parse them and either create an\n// entry, or push it into the active entry.  The ReadEntry class knows\n// to throw data away if .ignore=true\n//\n// Shift entry off the buffer when it emits 'end', and emit 'entry' for\n// the next one in the list.\n//\n// At any time, we're pushing body chunks into the entry at WRITEENTRY,\n// and waiting for 'end' on the entry at READENTRY\n//\n// ignored entries get .resume() called on them straight away\n\nimport { EventEmitter as EE } from 'events'\nimport { BrotliDecompress, Unzip } from 'minizlib'\nimport { Yallist } from 'yallist'\nimport { Header } from './header.js'\nimport { TarOptions } from './options.js'\nimport { Pax } from './pax.js'\nimport { ReadEntry } from './read-entry.js'\nimport {\n  warnMethod,\n  type WarnData,\n  type Warner,\n} from './warn-method.js'\n\nconst maxMetaEntrySize = 1024 * 1024\nconst gzipHeader = Buffer.from([0x1f, 0x8b])\n\nconst STATE = Symbol('state')\nconst WRITEENTRY = Symbol('writeEntry')\nconst READENTRY = Symbol('readEntry')\nconst NEXTENTRY = Symbol('nextEntry')\nconst PROCESSENTRY = Symbol('processEntry')\nconst EX = Symbol('extendedHeader')\nconst GEX = Symbol('globalExtendedHeader')\nconst META = Symbol('meta')\nconst EMITMETA = Symbol('emitMeta')\nconst BUFFER = Symbol('buffer')\nconst QUEUE = Symbol('queue')\nconst ENDED = Symbol('ended')\nconst EMITTEDEND = Symbol('emittedEnd')\nconst EMIT = Symbol('emit')\nconst UNZIP = Symbol('unzip')\nconst CONSUMECHUNK = Symbol('consumeChunk')\nconst CONSUMECHUNKSUB = Symbol('consumeChunkSub')\nconst CONSUMEBODY = Symbol('consumeBody')\nconst CONSUMEMETA = Symbol('consumeMeta')\nconst CONSUMEHEADER = Symbol('consumeHeader')\nconst CONSUMING = Symbol('consuming')\nconst BUFFERCONCAT = Symbol('bufferConcat')\nconst MAYBEEND = Symbol('maybeEnd')\nconst WRITING = Symbol('writing')\nconst ABORTED = Symbol('aborted')\nconst DONE = Symbol('onDone')\nconst SAW_VALID_ENTRY = Symbol('sawValidEntry')\nconst SAW_NULL_BLOCK = Symbol('sawNullBlock')\nconst SAW_EOF = Symbol('sawEOF')\nconst CLOSESTREAM = Symbol('closeStream')\n\nconst noop = () => true\n\nexport type State = 'begin' | 'header' | 'ignore' | 'meta' | 'body'\n\nexport class Parser extends EE implements Warner {\n  file: string\n  strict: boolean\n  maxMetaEntrySize: number\n  filter: Exclude<TarOptions['filter'], undefined>\n  brotli?: TarOptions['brotli']\n\n  writable: true = true\n  readable: false = false;\n\n  [QUEUE]: Yallist<ReadEntry | [string | symbol, any, any]> =\n    new Yallist();\n  [BUFFER]?: Buffer;\n  [READENTRY]?: ReadEntry;\n  [WRITEENTRY]?: ReadEntry;\n  [STATE]: State = 'begin';\n  [META]: string = '';\n  [EX]?: Pax;\n  [GEX]?: Pax;\n  [ENDED]: boolean = false;\n  [UNZIP]?: false | Unzip | BrotliDecompress;\n  [ABORTED]: boolean = false;\n  [SAW_VALID_ENTRY]?: boolean;\n  [SAW_NULL_BLOCK]: boolean = false;\n  [SAW_EOF]: boolean = false;\n  [WRITING]: boolean = false;\n  [CONSUMING]: boolean = false;\n  [EMITTEDEND]: boolean = false\n\n  constructor(opt: TarOptions = {}) {\n    super()\n\n    this.file = opt.file || ''\n\n    // these BADARCHIVE errors can't be detected early. listen on DONE.\n    this.on(DONE, () => {\n      if (\n        this[STATE] === 'begin' ||\n        this[SAW_VALID_ENTRY] === false\n      ) {\n        // either less than 1 block of data, or all entries were invalid.\n        // Either way, probably not even a tarball.\n        this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format')\n      }\n    })\n\n    if (opt.ondone) {\n      this.on(DONE, opt.ondone)\n    } else {\n      this.on(DONE, () => {\n        this.emit('prefinish')\n        this.emit('finish')\n        this.emit('end')\n      })\n    }\n\n    this.strict = !!opt.strict\n    this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize\n    this.filter = typeof opt.filter === 'function' ? opt.filter : noop\n    // Unlike gzip, brotli doesn't have any magic bytes to identify it\n    // Users need to explicitly tell us they're extracting a brotli file\n    // Or we infer from the file extension\n    const isTBR =\n      opt.file &&\n      (opt.file.endsWith('.tar.br') || opt.file.endsWith('.tbr'))\n    // if it's a tbr file it MIGHT be brotli, but we don't know until\n    // we look at it and verify it's not a valid tar file.\n    this.brotli =\n      !opt.gzip && opt.brotli !== undefined ? opt.brotli\n      : isTBR ? undefined\n      : false\n\n    // have to set this so that streams are ok piping into it\n    this.on('end', () => this[CLOSESTREAM]())\n\n    if (typeof opt.onwarn === 'function') {\n      this.on('warn', opt.onwarn)\n    }\n    if (typeof opt.onentry === 'function') {\n      this.on('entry', opt.onentry)\n    }\n  }\n\n  warn(\n    code: string,\n    message: string | Error,\n    data: WarnData = {},\n  ): void {\n    warnMethod(this, code, message, data)\n  }\n\n  [CONSUMEHEADER](chunk: Buffer, position: number) {\n    if (this[SAW_VALID_ENTRY] === undefined) {\n      this[SAW_VALID_ENTRY] = false\n    }\n    let header\n    try {\n      header = new Header(chunk, position, this[EX], this[GEX])\n    } catch (er) {\n      return this.warn('TAR_ENTRY_INVALID', er as Error)\n    }\n\n    if (header.nullBlock) {\n      if (this[SAW_NULL_BLOCK]) {\n        this[SAW_EOF] = true\n        // ending an archive with no entries.  pointless, but legal.\n        if (this[STATE] === 'begin') {\n          this[STATE] = 'header'\n        }\n        this[EMIT]('eof')\n      } else {\n        this[SAW_NULL_BLOCK] = true\n        this[EMIT]('nullBlock')\n      }\n    } else {\n      this[SAW_NULL_BLOCK] = false\n      if (!header.cksumValid) {\n        this.warn('TAR_ENTRY_INVALID', 'checksum failure', { header })\n      } else if (!header.path) {\n        this.warn('TAR_ENTRY_INVALID', 'path is required', { header })\n      } else {\n        const type = header.type\n        if (/^(Symbolic)?Link$/.test(type) && !header.linkpath) {\n          this.warn('TAR_ENTRY_INVALID', 'linkpath required', {\n            header,\n          })\n        } else if (\n          !/^(Symbolic)?Link$/.test(type) &&\n          !/^(Global)?ExtendedHeader$/.test(type) &&\n          header.linkpath\n        ) {\n          this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', {\n            header,\n          })\n        } else {\n          const entry = (this[WRITEENTRY] = new ReadEntry(\n            header,\n            this[EX],\n            this[GEX],\n          ))\n\n          // we do this for meta & ignored entries as well, because they\n          // are still valid tar, or else we wouldn't know to ignore them\n          if (!this[SAW_VALID_ENTRY]) {\n            if (entry.remain) {\n              // this might be the one!\n              const onend = () => {\n                if (!entry.invalid) {\n                  this[SAW_VALID_ENTRY] = true\n                }\n              }\n              entry.on('end', onend)\n            } else {\n              this[SAW_VALID_ENTRY] = true\n            }\n          }\n\n          if (entry.meta) {\n            if (entry.size > this.maxMetaEntrySize) {\n              entry.ignore = true\n              this[EMIT]('ignoredEntry', entry)\n              this[STATE] = 'ignore'\n              entry.resume()\n            } else if (entry.size > 0) {\n              this[META] = ''\n              entry.on('data', c => (this[META] += c))\n              this[STATE] = 'meta'\n            }\n          } else {\n            this[EX] = undefined\n            entry.ignore =\n              entry.ignore || !this.filter(entry.path, entry)\n\n            if (entry.ignore) {\n              // probably valid, just not something we care about\n              this[EMIT]('ignoredEntry', entry)\n              this[STATE] = entry.remain ? 'ignore' : 'header'\n              entry.resume()\n            } else {\n              if (entry.remain) {\n                this[STATE] = 'body'\n              } else {\n                this[STATE] = 'header'\n                entry.end()\n              }\n\n              if (!this[READENTRY]) {\n                this[QUEUE].push(entry)\n                this[NEXTENTRY]()\n              } else {\n                this[QUEUE].push(entry)\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n\n  [CLOSESTREAM]() {\n    queueMicrotask(() => this.emit('close'))\n  }\n\n  [PROCESSENTRY](entry?: ReadEntry | [string | symbol, any, any]) {\n    let go = true\n\n    if (!entry) {\n      this[READENTRY] = undefined\n      go = false\n    } else if (Array.isArray(entry)) {\n      const [ev, ...args]: [string | symbol, any, any] = entry\n      this.emit(ev, ...args)\n    } else {\n      this[READENTRY] = entry\n      this.emit('entry', entry)\n      if (!entry.emittedEnd) {\n        entry.on('end', () => this[NEXTENTRY]())\n        go = false\n      }\n    }\n\n    return go\n  }\n\n  [NEXTENTRY]() {\n    do {} while (this[PROCESSENTRY](this[QUEUE].shift()))\n\n    if (!this[QUEUE].length) {\n      // At this point, there's nothing in the queue, but we may have an\n      // entry which is being consumed (readEntry).\n      // If we don't, then we definitely can handle more data.\n      // If we do, and either it's flowing, or it has never had any data\n      // written to it, then it needs more.\n      // The only other possibility is that it has returned false from a\n      // write() call, so we wait for the next drain to continue.\n      const re = this[READENTRY]\n      const drainNow = !re || re.flowing || re.size === re.remain\n      if (drainNow) {\n        if (!this[WRITING]) {\n          this.emit('drain')\n        }\n      } else {\n        re.once('drain', () => this.emit('drain'))\n      }\n    }\n  }\n\n  [CONSUMEBODY](chunk: Buffer, position: number) {\n    // write up to but no  more than writeEntry.blockRemain\n    const entry = this[WRITEENTRY]\n    /* c8 ignore start */\n    if (!entry) {\n      throw new Error('attempt to consume body without entry??')\n    }\n    const br = entry.blockRemain ?? 0\n    /* c8 ignore stop */\n    const c =\n      br >= chunk.length && position === 0 ?\n        chunk\n      : chunk.subarray(position, position + br)\n\n    entry.write(c)\n\n    if (!entry.blockRemain) {\n      this[STATE] = 'header'\n      this[WRITEENTRY] = undefined\n      entry.end()\n    }\n\n    return c.length\n  }\n\n  [CONSUMEMETA](chunk: Buffer, position: number) {\n    const entry = this[WRITEENTRY]\n    const ret = this[CONSUMEBODY](chunk, position)\n\n    // if we finished, then the entry is reset\n    if (!this[WRITEENTRY] && entry) {\n      this[EMITMETA](entry)\n    }\n\n    return ret\n  }\n\n  [EMIT](ev: string | symbol, data?: any, extra?: any) {\n    if (!this[QUEUE].length && !this[READENTRY]) {\n      this.emit(ev, data, extra)\n    } else {\n      this[QUEUE].push([ev, data, extra])\n    }\n  }\n\n  [EMITMETA](entry: ReadEntry) {\n    this[EMIT]('meta', this[META])\n    switch (entry.type) {\n      case 'ExtendedHeader':\n      case 'OldExtendedHeader':\n        this[EX] = Pax.parse(this[META], this[EX], false)\n        break\n\n      case 'GlobalExtendedHeader':\n        this[GEX] = Pax.parse(this[META], this[GEX], true)\n        break\n\n      case 'NextFileHasLongPath':\n      case 'OldGnuLongPath': {\n        const ex = this[EX] ?? Object.create(null)\n        this[EX] = ex\n        ex.path = this[META].replace(/\\0.*/, '')\n        break\n      }\n\n      case 'NextFileHasLongLinkpath': {\n        const ex = this[EX] || Object.create(null)\n        this[EX] = ex\n        ex.linkpath = this[META].replace(/\\0.*/, '')\n        break\n      }\n\n      /* c8 ignore start */\n      default:\n        throw new Error('unknown meta: ' + entry.type)\n      /* c8 ignore stop */\n    }\n  }\n\n  abort(error: Error) {\n    this[ABORTED] = true\n    this.emit('abort', error)\n    // always throws, even in non-strict mode\n    this.warn('TAR_ABORT', error, { recoverable: false })\n  }\n\n  write(\n    buffer: Uint8Array | string,\n    cb?: (err?: Error | null) => void,\n  ): boolean\n  write(\n    str: string,\n    encoding?: BufferEncoding,\n    cb?: (err?: Error | null) => void,\n  ): boolean\n  write(\n    chunk: Buffer | string,\n    encoding?: BufferEncoding | (() => any),\n    cb?: () => any,\n  ): boolean {\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = undefined\n    }\n    if (typeof chunk === 'string') {\n      chunk = Buffer.from(\n        chunk,\n        /* c8 ignore next */\n        typeof encoding === 'string' ? encoding : 'utf8',\n      )\n    }\n    if (this[ABORTED]) {\n      /* c8 ignore next */\n      cb?.()\n      return false\n    }\n\n    // first write, might be gzipped\n    const needSniff =\n      this[UNZIP] === undefined ||\n      (this.brotli === undefined && this[UNZIP] === false)\n    if (needSniff && chunk) {\n      if (this[BUFFER]) {\n        chunk = Buffer.concat([this[BUFFER], chunk])\n        this[BUFFER] = undefined\n      }\n      if (chunk.length < gzipHeader.length) {\n        this[BUFFER] = chunk\n        /* c8 ignore next */\n        cb?.()\n        return true\n      }\n\n      // look for gzip header\n      for (\n        let i = 0;\n        this[UNZIP] === undefined && i < gzipHeader.length;\n        i++\n      ) {\n        if (chunk[i] !== gzipHeader[i]) {\n          this[UNZIP] = false\n        }\n      }\n\n      const maybeBrotli = this.brotli === undefined\n      if (this[UNZIP] === false && maybeBrotli) {\n        // read the first header to see if it's a valid tar file. If so,\n        // we can safely assume that it's not actually brotli, despite the\n        // .tbr or .tar.br file extension.\n        // if we ended before getting a full chunk, yes, def brotli\n        if (chunk.length < 512) {\n          if (this[ENDED]) {\n            this.brotli = true\n          } else {\n            this[BUFFER] = chunk\n            /* c8 ignore next */\n            cb?.()\n            return true\n          }\n        } else {\n          // if it's tar, it's pretty reliably not brotli, chances of\n          // that happening are astronomical.\n          try {\n            new Header(chunk.subarray(0, 512))\n            this.brotli = false\n          } catch (_) {\n            this.brotli = true\n          }\n        }\n      }\n\n      if (\n        this[UNZIP] === undefined ||\n        (this[UNZIP] === false && this.brotli)\n      ) {\n        const ended = this[ENDED]\n        this[ENDED] = false\n        this[UNZIP] =\n          this[UNZIP] === undefined ?\n            new Unzip({})\n          : new BrotliDecompress({})\n        this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk))\n        this[UNZIP].on('error', er => this.abort(er as Error))\n        this[UNZIP].on('end', () => {\n          this[ENDED] = true\n          this[CONSUMECHUNK]()\n        })\n        this[WRITING] = true\n        const ret = !!this[UNZIP][ended ? 'end' : 'write'](chunk)\n        this[WRITING] = false\n        cb?.()\n        return ret\n      }\n    }\n\n    this[WRITING] = true\n    if (this[UNZIP]) {\n      this[UNZIP].write(chunk)\n    } else {\n      this[CONSUMECHUNK](chunk)\n    }\n    this[WRITING] = false\n\n    // return false if there's a queue, or if the current entry isn't flowing\n    const ret =\n      this[QUEUE].length ? false\n      : this[READENTRY] ? this[READENTRY].flowing\n      : true\n\n    // if we have no queue, then that means a clogged READENTRY\n    if (!ret && !this[QUEUE].length) {\n      this[READENTRY]?.once('drain', () => this.emit('drain'))\n    }\n\n    /* c8 ignore next */\n    cb?.()\n    return ret\n  }\n\n  [BUFFERCONCAT](c: Buffer) {\n    if (c && !this[ABORTED]) {\n      this[BUFFER] =\n        this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c\n    }\n  }\n\n  [MAYBEEND]() {\n    if (\n      this[ENDED] &&\n      !this[EMITTEDEND] &&\n      !this[ABORTED] &&\n      !this[CONSUMING]\n    ) {\n      this[EMITTEDEND] = true\n      const entry = this[WRITEENTRY]\n      if (entry && entry.blockRemain) {\n        // truncated, likely a damaged file\n        const have = this[BUFFER] ? this[BUFFER].length : 0\n        this.warn(\n          'TAR_BAD_ARCHIVE',\n          `Truncated input (needed ${entry.blockRemain} more bytes, only ${have} available)`,\n          { entry },\n        )\n        if (this[BUFFER]) {\n          entry.write(this[BUFFER])\n        }\n        entry.end()\n      }\n      this[EMIT](DONE)\n    }\n  }\n\n  [CONSUMECHUNK](chunk?: Buffer) {\n    if (this[CONSUMING] && chunk) {\n      this[BUFFERCONCAT](chunk)\n    } else if (!chunk && !this[BUFFER]) {\n      this[MAYBEEND]()\n    } else if (chunk) {\n      this[CONSUMING] = true\n      if (this[BUFFER]) {\n        this[BUFFERCONCAT](chunk)\n        const c = this[BUFFER]\n        this[BUFFER] = undefined\n        this[CONSUMECHUNKSUB](c)\n      } else {\n        this[CONSUMECHUNKSUB](chunk)\n      }\n\n      while (\n        this[BUFFER] &&\n        (this[BUFFER] as Buffer)?.length >= 512 &&\n        !this[ABORTED] &&\n        !this[SAW_EOF]\n      ) {\n        const c = this[BUFFER]\n        this[BUFFER] = undefined\n        this[CONSUMECHUNKSUB](c)\n      }\n      this[CONSUMING] = false\n    }\n\n    if (!this[BUFFER] || this[ENDED]) {\n      this[MAYBEEND]()\n    }\n  }\n\n  [CONSUMECHUNKSUB](chunk: Buffer) {\n    // we know that we are in CONSUMING mode, so anything written goes into\n    // the buffer.  Advance the position and put any remainder in the buffer.\n    let position = 0\n    const length = chunk.length\n    while (\n      position + 512 <= length &&\n      !this[ABORTED] &&\n      !this[SAW_EOF]\n    ) {\n      switch (this[STATE]) {\n        case 'begin':\n        case 'header':\n          this[CONSUMEHEADER](chunk, position)\n          position += 512\n          break\n\n        case 'ignore':\n        case 'body':\n          position += this[CONSUMEBODY](chunk, position)\n          break\n\n        case 'meta':\n          position += this[CONSUMEMETA](chunk, position)\n          break\n\n        /* c8 ignore start */\n        default:\n          throw new Error('invalid state: ' + this[STATE])\n        /* c8 ignore stop */\n      }\n    }\n\n    if (position < length) {\n      if (this[BUFFER]) {\n        this[BUFFER] = Buffer.concat([\n          chunk.subarray(position),\n          this[BUFFER],\n        ])\n      } else {\n        this[BUFFER] = chunk.subarray(position)\n      }\n    }\n  }\n\n  end(cb?: () => void): this\n  end(data: string | Buffer, cb?: () => void): this\n  end(str: string, encoding?: BufferEncoding, cb?: () => void): this\n  end(\n    chunk?: string | Buffer | (() => void),\n    encoding?: BufferEncoding | (() => void),\n    cb?: () => void,\n  ) {\n    if (typeof chunk === 'function') {\n      cb = chunk\n      encoding = undefined\n      chunk = undefined\n    }\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = undefined\n    }\n    if (typeof chunk === 'string') {\n      chunk = Buffer.from(chunk, encoding)\n    }\n    if (cb) this.once('finish', cb)\n    if (!this[ABORTED]) {\n      if (this[UNZIP]) {\n        /* c8 ignore start */\n        if (chunk) this[UNZIP].write(chunk)\n        /* c8 ignore stop */\n        this[UNZIP].end()\n      } else {\n        this[ENDED] = true\n        if (this.brotli === undefined)\n          chunk = chunk || Buffer.alloc(0)\n        if (chunk) this.write(chunk)\n        this[MAYBEEND]()\n      }\n    }\n    return this\n  }\n}\n", "import assert from 'assert'\nimport { Buffer } from 'buffer'\nimport { Minipass } from 'minipass'\nimport realZlib from 'zlib'\nimport { constants } from './constants.js'\nexport { constants } from './constants.js'\n\nconst OriginalBufferConcat = Buffer.concat\nconst _superWrite = Symbol('_superWrite')\n\nexport class ZlibError extends Error {\n  code?: string\n  errno?: number\n  constructor(err: NodeJS.ErrnoException | Error) {\n    super('zlib: ' + err.message)\n    this.code = (err as NodeJS.ErrnoException).code\n    this.errno = (err as NodeJS.ErrnoException).errno\n    /* c8 ignore next */\n    if (!this.code) this.code = 'ZLIB_ERROR'\n\n    this.message = 'zlib: ' + err.message\n    Error.captureStackTrace(this, this.constructor)\n  }\n\n  get name() {\n    return 'ZlibError'\n  }\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\nconst _flushFlag = Symbol('flushFlag')\n\nexport type ChunkWithFlushFlag = Minipass.ContiguousData & {\n  [_flushFlag]?: number\n}\n\nexport type ZlibBaseOptions = Minipass.Options<Minipass.ContiguousData> & {\n  flush?: number\n  finishFlush?: number\n  fullFlushFlag?: number\n}\nexport type ZlibMode =\n  | 'Gzip'\n  | 'Gunzip'\n  | 'Deflate'\n  | 'Inflate'\n  | 'DeflateRaw'\n  | 'InflateRaw'\n  | 'Unzip'\nexport type ZlibHandle =\n  | realZlib.Gzip\n  | realZlib.Gunzip\n  | realZlib.Deflate\n  | realZlib.Inflate\n  | realZlib.DeflateRaw\n  | realZlib.InflateRaw\nexport type BrotliMode = 'BrotliCompress' | 'BrotliDecompress'\n\nabstract class ZlibBase extends Minipass<Buffer, ChunkWithFlushFlag> {\n  #sawError: boolean = false\n  #ended: boolean = false\n  #flushFlag: number\n  #finishFlushFlag: number\n  #fullFlushFlag: number\n  #handle?: ZlibHandle\n  #onError: (err: ZlibError) => any\n\n  get sawError() {\n    return this.#sawError\n  }\n  get handle() {\n    return this.#handle\n  }\n  /* c8 ignore start */\n  get flushFlag() {\n    return this.#flushFlag\n  }\n  /* c8 ignore stop */\n\n  constructor(opts: ZlibBaseOptions, mode: ZlibMode | BrotliMode) {\n    if (!opts || typeof opts !== 'object')\n      throw new TypeError('invalid options for ZlibBase constructor')\n\n    //@ts-ignore\n    super(opts)\n\n    /* c8 ignore start */\n    this.#flushFlag = opts.flush ?? 0\n    this.#finishFlushFlag = opts.finishFlush ?? 0\n    this.#fullFlushFlag = opts.fullFlushFlag ?? 0\n    /* c8 ignore stop */\n\n    // this will throw if any options are invalid for the class selected\n    try {\n      // @types/node doesn't know that it exports the classes, but they're there\n      //@ts-ignore\n      this.#handle = new realZlib[mode](opts)\n    } catch (er) {\n      // make sure that all errors get decorated properly\n      throw new ZlibError(er as NodeJS.ErrnoException)\n    }\n\n    this.#onError = err => {\n      // no sense raising multiple errors, since we abort on the first one.\n      if (this.#sawError) return\n\n      this.#sawError = true\n\n      // there is no way to cleanly recover.\n      // continuing only obscures problems.\n      this.close()\n      this.emit('error', err)\n    }\n\n    this.#handle?.on('error', er => this.#onError(new ZlibError(er)))\n    this.once('end', () => this.close)\n  }\n\n  close() {\n    if (this.#handle) {\n      this.#handle.close()\n      this.#handle = undefined\n      this.emit('close')\n    }\n  }\n\n  reset() {\n    if (!this.#sawError) {\n      assert(this.#handle, 'zlib binding closed')\n      //@ts-ignore\n      return this.#handle.reset?.()\n    }\n  }\n\n  flush(flushFlag?: number) {\n    if (this.ended) return\n\n    if (typeof flushFlag !== 'number') flushFlag = this.#fullFlushFlag\n\n    this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))\n  }\n\n  end(cb?: () => void): this\n  end(chunk: ChunkWithFlushFlag, cb?: () => void): this\n  end(\n    chunk: ChunkWithFlushFlag,\n    encoding?: Minipass.Encoding,\n    cb?: () => void,\n  ): this\n  end(\n    chunk?: ChunkWithFlushFlag | (() => void),\n    encoding?: Minipass.Encoding | (() => void),\n    cb?: () => void,\n  ) {\n    /* c8 ignore start */\n    if (typeof chunk === 'function') {\n      cb = chunk\n      encoding = undefined\n      chunk = undefined\n    }\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = undefined\n    }\n    /* c8 ignore stop */\n    if (chunk) {\n      if (encoding) this.write(chunk, encoding)\n      else this.write(chunk)\n    }\n    this.flush(this.#finishFlushFlag)\n    this.#ended = true\n    return super.end(cb)\n  }\n\n  get ended() {\n    return this.#ended\n  }\n\n  // overridden in the gzip classes to do portable writes\n  [_superWrite](data: Buffer & { [_flushFlag]?: number }) {\n    return super.write(data)\n  }\n\n  write(chunk: ChunkWithFlushFlag, cb?: () => void): boolean\n  write(\n    chunk: ChunkWithFlushFlag,\n    encoding?: Minipass.Encoding,\n    cb?: () => void,\n  ): boolean\n  write(\n    chunk: ChunkWithFlushFlag,\n    encoding?: Minipass.Encoding | (() => void),\n    cb?: () => void,\n  ) {\n    // process the chunk using the sync process\n    // then super.write() all the outputted chunks\n    if (typeof encoding === 'function')\n      (cb = encoding), (encoding = 'utf8')\n\n    if (typeof chunk === 'string')\n      chunk = Buffer.from(chunk as string, encoding as BufferEncoding)\n\n    if (this.#sawError) return\n    assert(this.#handle, 'zlib binding closed')\n\n    // _processChunk tries to .close() the native handle after it's done, so we\n    // intercept that by temporarily making it a no-op.\n    // diving into the node:zlib internals a bit here\n    const nativeHandle = (this.#handle as unknown as { _handle: any })\n      ._handle\n    const originalNativeClose = nativeHandle.close\n    nativeHandle.close = () => {}\n    const originalClose = this.#handle.close\n    this.#handle.close = () => {}\n    // It also calls `Buffer.concat()` at the end, which may be convenient\n    // for some, but which we are not interested in as it slows us down.\n    Buffer.concat = args => args as unknown as Buffer\n    let result: undefined | Buffer | Buffer[] = undefined\n    try {\n      const flushFlag =\n        typeof chunk[_flushFlag] === 'number'\n          ? chunk[_flushFlag]\n          : this.#flushFlag\n      result = (\n        this.#handle as unknown as {\n          _processChunk: (chunk: Buffer, flushFlag: number) => Buffer[]\n        }\n      )._processChunk(chunk as Buffer, flushFlag)\n      // if we don't throw, reset it back how it was\n      Buffer.concat = OriginalBufferConcat\n    } catch (err) {\n      // or if we do, put Buffer.concat() back before we emit error\n      // Error events call into user code, which may call Buffer.concat()\n      Buffer.concat = OriginalBufferConcat\n      this.#onError(new ZlibError(err as NodeJS.ErrnoException))\n    } finally {\n      if (this.#handle) {\n        // Core zlib resets `_handle` to null after attempting to close the\n        // native handle. Our no-op handler prevented actual closure, but we\n        // need to restore the `._handle` property.\n        ;(this.#handle as unknown as { _handle: any })._handle =\n          nativeHandle\n        nativeHandle.close = originalNativeClose\n        this.#handle.close = originalClose\n        // `_processChunk()` adds an 'error' listener. If we don't remove it\n        // after each call, these handlers start piling up.\n        this.#handle.removeAllListeners('error')\n        // make sure OUR error listener is still attached tho\n      }\n    }\n\n    if (this.#handle)\n      this.#handle.on('error', er => this.#onError(new ZlibError(er)))\n\n    let writeReturn\n    if (result) {\n      if (Array.isArray(result) && result.length > 0) {\n        const r = result[0]\n        // The first buffer is always `handle._outBuffer`, which would be\n        // re-used for later invocations; so, we always have to copy that one.\n        writeReturn = this[_superWrite](Buffer.from(r as Buffer))\n        for (let i = 1; i < result.length; i++) {\n          writeReturn = this[_superWrite](result[i] as Buffer)\n        }\n      } else {\n        // either a single Buffer or an empty array\n        writeReturn = this[_superWrite](Buffer.from(result as Buffer | []))\n      }\n    }\n\n    if (cb) cb()\n    return writeReturn\n  }\n}\n\nexport type ZlibOptions = ZlibBaseOptions & {\n  level?: number\n  strategy?: number\n}\n\nexport class Zlib extends ZlibBase {\n  #level?: number\n  #strategy?: number\n\n  constructor(opts: ZlibOptions, mode: ZlibMode) {\n    opts = opts || {}\n\n    opts.flush = opts.flush || constants.Z_NO_FLUSH\n    opts.finishFlush = opts.finishFlush || constants.Z_FINISH\n    opts.fullFlushFlag = constants.Z_FULL_FLUSH\n    super(opts, mode)\n\n    this.#level = opts.level\n    this.#strategy = opts.strategy\n  }\n\n  params(level: number, strategy: number) {\n    if (this.sawError) return\n\n    if (!this.handle)\n      throw new Error('cannot switch params when binding is closed')\n\n    // no way to test this without also not supporting params at all\n    /* c8 ignore start */\n    if (!(this.handle as { params?: any }).params)\n      throw new Error('not supported in this implementation')\n    /* c8 ignore stop */\n\n    if (this.#level !== level || this.#strategy !== strategy) {\n      this.flush(constants.Z_SYNC_FLUSH)\n      assert(this.handle, 'zlib binding closed')\n      // .params() calls .flush(), but the latter is always async in the\n      // core zlib. We override .flush() temporarily to intercept that and\n      // flush synchronously.\n      const origFlush = this.handle.flush\n      this.handle.flush = (\n        flushFlag?: (() => void) | number,\n        cb?: () => void,\n      ) => {\n        /* c8 ignore start */\n        if (typeof flushFlag === 'function') {\n          cb = flushFlag\n          flushFlag = this.flushFlag\n        }\n        /* c8 ignore stop */\n        this.flush(flushFlag)\n        cb?.()\n      }\n      try {\n        ;(\n          this.handle as unknown as {\n            params: (level?: number, strategy?: number) => void\n          }\n        ).params(level, strategy)\n      } finally {\n        this.handle.flush = origFlush\n      }\n      /* c8 ignore start */\n      if (this.handle) {\n        this.#level = level\n        this.#strategy = strategy\n      }\n      /* c8 ignore stop */\n    }\n  }\n}\n\n// minimal 2-byte header\nexport class Deflate extends Zlib {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'Deflate')\n  }\n}\n\nexport class Inflate extends Zlib {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'Inflate')\n  }\n}\n\n// gzip - bigger header, same deflate compression\nexport type GzipOptions = ZlibOptions & { portable?: boolean }\nexport class Gzip extends Zlib {\n  #portable: boolean\n  constructor(opts: GzipOptions) {\n    super(opts, 'Gzip')\n    this.#portable = opts && !!opts.portable\n  }\n\n  [_superWrite](data: Buffer & { [_flushFlag]?: number }) {\n    if (!this.#portable) return super[_superWrite](data)\n\n    // we'll always get the header emitted in one first chunk\n    // overwrite the OS indicator byte with 0xFF\n    this.#portable = false\n    data[9] = 255\n    return super[_superWrite](data)\n  }\n}\n\nexport class Gunzip extends Zlib {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'Gunzip')\n  }\n}\n\n// raw - no header\nexport class DeflateRaw extends Zlib {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'DeflateRaw')\n  }\n}\n\nexport class InflateRaw extends Zlib {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'InflateRaw')\n  }\n}\n\n// auto-detect header.\nexport class Unzip extends Zlib {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'Unzip')\n  }\n}\n\nexport class Brotli extends ZlibBase {\n  constructor(opts: ZlibOptions, mode: BrotliMode) {\n    opts = opts || {}\n\n    opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS\n    opts.finishFlush =\n      opts.finishFlush || constants.BROTLI_OPERATION_FINISH\n    opts.fullFlushFlag = constants.BROTLI_OPERATION_FLUSH\n    super(opts, mode)\n  }\n}\n\nexport class BrotliCompress extends Brotli {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'BrotliCompress')\n  }\n}\n\nexport class BrotliDecompress extends Brotli {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'BrotliDecompress')\n  }\n}\n", "// Update with any zlib constants that are added or changed in the future.\n// Node v6 didn't export this, so we just hard code the version and rely\n// on all the other hard-coded values from zlib v4736.  When node v6\n// support drops, we can just export the realZlibConstants object.\nimport realZlib from 'zlib'\n/* c8 ignore start */\nconst realZlibConstants = realZlib.constants || { ZLIB_VERNUM: 4736 }\n/* c8 ignore stop */\n\nexport const constants = Object.freeze(\n  Object.assign(\n    Object.create(null),\n    {\n      Z_NO_FLUSH: 0,\n      Z_PARTIAL_FLUSH: 1,\n      Z_SYNC_FLUSH: 2,\n      Z_FULL_FLUSH: 3,\n      Z_FINISH: 4,\n      Z_BLOCK: 5,\n      Z_OK: 0,\n      Z_STREAM_END: 1,\n      Z_NEED_DICT: 2,\n      Z_ERRNO: -1,\n      Z_STREAM_ERROR: -2,\n      Z_DATA_ERROR: -3,\n      Z_MEM_ERROR: -4,\n      Z_BUF_ERROR: -5,\n      Z_VERSION_ERROR: -6,\n      Z_NO_COMPRESSION: 0,\n      Z_BEST_SPEED: 1,\n      Z_BEST_COMPRESSION: 9,\n      Z_DEFAULT_COMPRESSION: -1,\n      Z_FILTERED: 1,\n      Z_HUFFMAN_ONLY: 2,\n      Z_RLE: 3,\n      Z_FIXED: 4,\n      Z_DEFAULT_STRATEGY: 0,\n      DEFLATE: 1,\n      INFLATE: 2,\n      GZIP: 3,\n      GUNZIP: 4,\n      DEFLATERAW: 5,\n      INFLATERAW: 6,\n      UNZIP: 7,\n      BROTLI_DECODE: 8,\n      BROTLI_ENCODE: 9,\n      Z_MIN_WINDOWBITS: 8,\n      Z_MAX_WINDOWBITS: 15,\n      Z_DEFAULT_WINDOWBITS: 15,\n      Z_MIN_CHUNK: 64,\n      Z_MAX_CHUNK: Infinity,\n      Z_DEFAULT_CHUNK: 16384,\n      Z_MIN_MEMLEVEL: 1,\n      Z_MAX_MEMLEVEL: 9,\n      Z_DEFAULT_MEMLEVEL: 8,\n      Z_MIN_LEVEL: -1,\n      Z_MAX_LEVEL: 9,\n      Z_DEFAULT_LEVEL: -1,\n      BROTLI_OPERATION_PROCESS: 0,\n      BROTLI_OPERATION_FLUSH: 1,\n      BROTLI_OPERATION_FINISH: 2,\n      BROTLI_OPERATION_EMIT_METADATA: 3,\n      BROTLI_MODE_GENERIC: 0,\n      BROTLI_MODE_TEXT: 1,\n      BROTLI_MODE_FONT: 2,\n      BROTLI_DEFAULT_MODE: 0,\n      BROTLI_MIN_QUALITY: 0,\n      BROTLI_MAX_QUALITY: 11,\n      BROTLI_DEFAULT_QUALITY: 11,\n      BROTLI_MIN_WINDOW_BITS: 10,\n      BROTLI_MAX_WINDOW_BITS: 24,\n      BROTLI_LARGE_MAX_WINDOW_BITS: 30,\n      BROTLI_DEFAULT_WINDOW: 22,\n      BROTLI_MIN_INPUT_BLOCK_BITS: 16,\n      BROTLI_MAX_INPUT_BLOCK_BITS: 24,\n      BROTLI_PARAM_MODE: 0,\n      BROTLI_PARAM_QUALITY: 1,\n      BROTLI_PARAM_LGWIN: 2,\n      BROTLI_PARAM_LGBLOCK: 3,\n      BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,\n      BROTLI_PARAM_SIZE_HINT: 5,\n      BROTLI_PARAM_LARGE_WINDOW: 6,\n      BROTLI_PARAM_NPOSTFIX: 7,\n      BROTLI_PARAM_NDIRECT: 8,\n      BROTLI_DECODER_RESULT_ERROR: 0,\n      BROTLI_DECODER_RESULT_SUCCESS: 1,\n      BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,\n      BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,\n      BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,\n      BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,\n      BROTLI_DECODER_NO_ERROR: 0,\n      BROTLI_DECODER_SUCCESS: 1,\n      BROTLI_DECODER_NEEDS_MORE_INPUT: 2,\n      BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,\n      BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,\n      BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,\n      BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,\n      BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,\n      BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,\n      BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,\n      BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,\n      BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,\n      BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,\n      BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,\n      BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,\n      BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,\n      BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,\n      BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,\n      BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,\n      BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,\n      BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,\n      BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,\n      BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,\n      BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,\n      BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,\n      BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,\n      BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,\n      BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,\n      BROTLI_DECODER_ERROR_UNREACHABLE: -31,\n    },\n    realZlibConstants,\n  ),\n)\n", "export class Yallist<T = unknown> {\n  tail?: Node<T>\n  head?: Node<T>\n  length: number = 0\n\n  static create<T = unknown>(list: Iterable<T> = []) {\n    return new Yallist(list)\n  }\n\n  constructor(list: Iterable<T> = []) {\n    for (const item of list) {\n      this.push(item)\n    }\n  }\n\n  *[Symbol.iterator]() {\n    for (let walker = this.head; walker; walker = walker.next) {\n      yield walker.value\n    }\n  }\n\n  removeNode(node: Node<T>) {\n    if (node.list !== this) {\n      throw new Error(\n        'removing node which does not belong to this list',\n      )\n    }\n\n    const next = node.next\n    const prev = node.prev\n\n    if (next) {\n      next.prev = prev\n    }\n\n    if (prev) {\n      prev.next = next\n    }\n\n    if (node === this.head) {\n      this.head = next\n    }\n    if (node === this.tail) {\n      this.tail = prev\n    }\n\n    this.length--\n    node.next = undefined\n    node.prev = undefined\n    node.list = undefined\n\n    return next\n  }\n\n  unshiftNode(node: Node<T>) {\n    if (node === this.head) {\n      return\n    }\n\n    if (node.list) {\n      node.list.removeNode(node)\n    }\n\n    const head = this.head\n    node.list = this\n    node.next = head\n    if (head) {\n      head.prev = node\n    }\n\n    this.head = node\n    if (!this.tail) {\n      this.tail = node\n    }\n    this.length++\n  }\n\n  pushNode(node: Node<T>) {\n    if (node === this.tail) {\n      return\n    }\n\n    if (node.list) {\n      node.list.removeNode(node)\n    }\n\n    const tail = this.tail\n    node.list = this\n    node.prev = tail\n    if (tail) {\n      tail.next = node\n    }\n\n    this.tail = node\n    if (!this.head) {\n      this.head = node\n    }\n    this.length++\n  }\n\n  push(...args: T[]) {\n    for (let i = 0, l = args.length; i < l; i++) {\n      push(this, args[i])\n    }\n    return this.length\n  }\n\n  unshift(...args: T[]) {\n    for (var i = 0, l = args.length; i < l; i++) {\n      unshift(this, args[i])\n    }\n    return this.length\n  }\n\n  pop() {\n    if (!this.tail) {\n      return undefined\n    }\n\n    const res = this.tail.value\n    const t = this.tail\n    this.tail = this.tail.prev\n    if (this.tail) {\n      this.tail.next = undefined\n    } else {\n      this.head = undefined\n    }\n    t.list = undefined\n    this.length--\n    return res\n  }\n\n  shift() {\n    if (!this.head) {\n      return undefined\n    }\n\n    const res = this.head.value\n    const h = this.head\n    this.head = this.head.next\n    if (this.head) {\n      this.head.prev = undefined\n    } else {\n      this.tail = undefined\n    }\n    h.list = undefined\n    this.length--\n    return res\n  }\n\n  forEach(\n    fn: (value: T, i: number, list: Yallist<T>) => any,\n    thisp?: any,\n  ) {\n    thisp = thisp || this\n    for (let walker = this.head, i = 0; !!walker; i++) {\n      fn.call(thisp, walker.value, i, this)\n      walker = walker.next\n    }\n  }\n\n  forEachReverse(\n    fn: (value: T, i: number, list: Yallist<T>) => any,\n    thisp?: any,\n  ) {\n    thisp = thisp || this\n    for (let walker = this.tail, i = this.length - 1; !!walker; i--) {\n      fn.call(thisp, walker.value, i, this)\n      walker = walker.prev\n    }\n  }\n\n  get(n: number) {\n    let i = 0\n    let walker = this.head\n    for (; !!walker && i < n; i++) {\n      walker = walker.next\n    }\n    if (i === n && !!walker) {\n      return walker.value\n    }\n  }\n\n  getReverse(n: number) {\n    let i = 0\n    let walker = this.tail\n    for (; !!walker && i < n; i++) {\n      // abort out of the list early if we hit a cycle\n      walker = walker.prev\n    }\n    if (i === n && !!walker) {\n      return walker.value\n    }\n  }\n\n  map<R = any>(\n    fn: (value: T, list: Yallist<T>) => R,\n    thisp?: any,\n  ): Yallist<R> {\n    thisp = thisp || this\n    const res = new Yallist<R>()\n    for (let walker = this.head; !!walker; ) {\n      res.push(fn.call(thisp, walker.value, this))\n      walker = walker.next\n    }\n    return res\n  }\n\n  mapReverse<R = any>(\n    fn: (value: T, list: Yallist<T>) => R,\n    thisp?: any,\n  ): Yallist<R> {\n    thisp = thisp || this\n    var res = new Yallist<R>()\n    for (let walker = this.tail; !!walker; ) {\n      res.push(fn.call(thisp, walker.value, this))\n      walker = walker.prev\n    }\n    return res\n  }\n\n  reduce(fn: (left: T, right: T, i: number) => T): T\n  reduce<R = any>(\n    fn: (acc: R, next: T, i: number) => R,\n    initial: R,\n  ): R\n  reduce<R = any>(\n    fn: (acc: R, next: T, i: number) => R,\n    initial?: R,\n  ): R {\n    let acc: R | T\n    let walker = this.head\n    if (arguments.length > 1) {\n      acc = initial as R\n    } else if (this.head) {\n      walker = this.head.next\n      acc = this.head.value\n    } else {\n      throw new TypeError(\n        'Reduce of empty list with no initial value',\n      )\n    }\n\n    for (var i = 0; !!walker; i++) {\n      acc = fn(acc as R, walker.value, i)\n      walker = walker.next\n    }\n\n    return acc as R\n  }\n\n  reduceReverse(fn: (left: T, right: T, i: number) => T): T\n  reduceReverse<R = any>(\n    fn: (acc: R, next: T, i: number) => R,\n    initial: R,\n  ): R\n  reduceReverse<R = any>(\n    fn: (acc: R, next: T, i: number) => R,\n    initial?: R,\n  ): R {\n    let acc: R | T\n    let walker = this.tail\n    if (arguments.length > 1) {\n      acc = initial as R\n    } else if (this.tail) {\n      walker = this.tail.prev\n      acc = this.tail.value\n    } else {\n      throw new TypeError(\n        'Reduce of empty list with no initial value',\n      )\n    }\n\n    for (let i = this.length - 1; !!walker; i--) {\n      acc = fn(acc as R, walker.value, i)\n      walker = walker.prev\n    }\n\n    return acc as R\n  }\n\n  toArray() {\n    const arr = new Array(this.length)\n    for (let i = 0, walker = this.head; !!walker; i++) {\n      arr[i] = walker.value\n      walker = walker.next\n    }\n    return arr\n  }\n\n  toArrayReverse() {\n    const arr = new Array(this.length)\n    for (let i = 0, walker = this.tail; !!walker; i++) {\n      arr[i] = walker.value\n      walker = walker.prev\n    }\n    return arr\n  }\n\n  slice(from: number = 0, to: number = this.length) {\n    if (to < 0) {\n      to += this.length\n    }\n    if (from < 0) {\n      from += this.length\n    }\n    const ret = new Yallist()\n    if (to < from || to < 0) {\n      return ret\n    }\n    if (from < 0) {\n      from = 0\n    }\n    if (to > this.length) {\n      to = this.length\n    }\n    let walker = this.head\n    let i = 0\n    for (i = 0; !!walker && i < from; i++) {\n      walker = walker.next\n    }\n    for (; !!walker && i < to; i++, walker = walker.next) {\n      ret.push(walker.value)\n    }\n    return ret\n  }\n\n  sliceReverse(from: number = 0, to: number = this.length) {\n    if (to < 0) {\n      to += this.length\n    }\n    if (from < 0) {\n      from += this.length\n    }\n    const ret = new Yallist()\n    if (to < from || to < 0) {\n      return ret\n    }\n    if (from < 0) {\n      from = 0\n    }\n    if (to > this.length) {\n      to = this.length\n    }\n    let i = this.length\n    let walker = this.tail\n    for (; !!walker && i > to; i--) {\n      walker = walker.prev\n    }\n    for (; !!walker && i > from; i--, walker = walker.prev) {\n      ret.push(walker.value)\n    }\n    return ret\n  }\n\n  splice(start: number, deleteCount: number = 0, ...nodes: T[]) {\n    if (start > this.length) {\n      start = this.length - 1\n    }\n    if (start < 0) {\n      start = this.length + start\n    }\n\n    let walker = this.head\n\n    for (let i = 0; !!walker && i < start; i++) {\n      walker = walker.next\n    }\n\n    const ret: T[] = []\n    for (let i = 0; !!walker && i < deleteCount; i++) {\n      ret.push(walker.value)\n      walker = this.removeNode(walker)\n    }\n    if (!walker) {\n      walker = this.tail\n    } else if (walker !== this.tail) {\n      walker = walker.prev\n    }\n\n    for (const v of nodes) {\n      walker = insertAfter<T>(this, walker, v)\n    }\n\n    return ret\n  }\n\n  reverse() {\n    const head = this.head\n    const tail = this.tail\n    for (let walker = head; !!walker; walker = walker.prev) {\n      const p = walker.prev\n      walker.prev = walker.next\n      walker.next = p\n    }\n    this.head = tail\n    this.tail = head\n    return this\n  }\n}\n\n// insertAfter undefined means \"make the node the new head of list\"\nfunction insertAfter<T>(\n  self: Yallist<T>,\n  node: Node<T> | undefined,\n  value: T,\n) {\n  const prev = node\n  const next = node ? node.next : self.head\n  const inserted = new Node<T>(value, prev, next, self)\n\n  if (inserted.next === undefined) {\n    self.tail = inserted\n  }\n  if (inserted.prev === undefined) {\n    self.head = inserted\n  }\n\n  self.length++\n\n  return inserted\n}\n\nfunction push<T>(self: Yallist<T>, item: T) {\n  self.tail = new Node<T>(item, self.tail, undefined, self)\n  if (!self.head) {\n    self.head = self.tail\n  }\n  self.length++\n}\n\nfunction unshift<T>(self: Yallist<T>, item: T) {\n  self.head = new Node<T>(item, undefined, self.head, self)\n  if (!self.tail) {\n    self.tail = self.head\n  }\n  self.length++\n}\n\nexport class Node<T = unknown> {\n  list?: Yallist<T>\n  next?: Node<T>\n  prev?: Node<T>\n  value: T\n\n  constructor(\n    value: T,\n    prev?: Node<T> | undefined,\n    next?: Node<T> | undefined,\n    list?: Yallist<T> | undefined,\n  ) {\n    this.list = list\n    this.value = value\n\n    if (prev) {\n      prev.next = this\n      this.prev = prev\n    } else {\n      this.prev = undefined\n    }\n\n    if (next) {\n      next.prev = this\n      this.next = next\n    } else {\n      this.next = undefined\n    }\n  }\n}\n", "// parse a 512-byte header block to a data object, or vice-versa\n// encode returns `true` if a pax extended header is needed, because\n// the data could not be faithfully encoded in a simple header.\n// (Also, check header.needPax to see if it needs a pax header.)\n\nimport { posix as pathModule } from 'node:path'\nimport * as large from './large-numbers.js'\nimport type { EntryTypeCode, EntryTypeName } from './types.js'\nimport * as types from './types.js'\n\nexport type HeaderData = {\n  path?: string\n  mode?: number\n  uid?: number\n  gid?: number\n  size?: number\n  cksum?: number\n  type?: EntryTypeName | 'Unsupported'\n  linkpath?: string\n  uname?: string\n  gname?: string\n  devmaj?: number\n  devmin?: number\n  atime?: Date\n  ctime?: Date\n  mtime?: Date\n\n  // fields that are common in extended PAX headers, but not in the\n  // \"standard\" tar header block\n  charset?: string\n  comment?: string\n  dev?: number\n  ino?: number\n  nlink?: number\n}\n\nexport class Header implements HeaderData {\n  cksumValid: boolean = false\n  needPax: boolean = false\n  nullBlock: boolean = false\n\n  block?: Buffer\n  path?: string\n  mode?: number\n  uid?: number\n  gid?: number\n  size?: number\n  cksum?: number\n  #type: EntryTypeCode | 'Unsupported' = 'Unsupported'\n  linkpath?: string\n  uname?: string\n  gname?: string\n  devmaj: number = 0\n  devmin: number = 0\n  atime?: Date\n  ctime?: Date\n  mtime?: Date\n\n  charset?: string\n  comment?: string\n\n  constructor(\n    data?: Buffer | HeaderData,\n    off: number = 0,\n    ex?: HeaderData,\n    gex?: HeaderData,\n  ) {\n    if (Buffer.isBuffer(data)) {\n      this.decode(data, off || 0, ex, gex)\n    } else if (data) {\n      this.#slurp(data)\n    }\n  }\n\n  decode(\n    buf: Buffer,\n    off: number,\n    ex?: HeaderData,\n    gex?: HeaderData,\n  ) {\n    if (!off) {\n      off = 0\n    }\n\n    if (!buf || !(buf.length >= off + 512)) {\n      throw new Error('need 512 bytes for header')\n    }\n\n    this.path = decString(buf, off, 100)\n    this.mode = decNumber(buf, off + 100, 8)\n    this.uid = decNumber(buf, off + 108, 8)\n    this.gid = decNumber(buf, off + 116, 8)\n    this.size = decNumber(buf, off + 124, 12)\n    this.mtime = decDate(buf, off + 136, 12)\n    this.cksum = decNumber(buf, off + 148, 12)\n\n    // if we have extended or global extended headers, apply them now\n    // See https://github.com/npm/node-tar/pull/187\n    // Apply global before local, so it overrides\n    if (gex) this.#slurp(gex, true)\n    if (ex) this.#slurp(ex)\n\n    // old tar versions marked dirs as a file with a trailing /\n    const t = decString(buf, off + 156, 1)\n    if (types.isCode(t)) {\n      this.#type = t || '0'\n    }\n    if (this.#type === '0' && this.path.slice(-1) === '/') {\n      this.#type = '5'\n    }\n\n    // tar implementations sometimes incorrectly put the stat(dir).size\n    // as the size in the tarball, even though Directory entries are\n    // not able to have any body at all.  In the very rare chance that\n    // it actually DOES have a body, we weren't going to do anything with\n    // it anyway, and it'll just be a warning about an invalid header.\n    if (this.#type === '5') {\n      this.size = 0\n    }\n\n    this.linkpath = decString(buf, off + 157, 100)\n    if (\n      buf.subarray(off + 257, off + 265).toString() ===\n      'ustar\\u000000'\n    ) {\n      this.uname = decString(buf, off + 265, 32)\n      this.gname = decString(buf, off + 297, 32)\n      /* c8 ignore start */\n      this.devmaj = decNumber(buf, off + 329, 8) ?? 0\n      this.devmin = decNumber(buf, off + 337, 8) ?? 0\n      /* c8 ignore stop */\n      if (buf[off + 475] !== 0) {\n        // definitely a prefix, definitely >130 chars.\n        const prefix = decString(buf, off + 345, 155)\n        this.path = prefix + '/' + this.path\n      } else {\n        const prefix = decString(buf, off + 345, 130)\n        if (prefix) {\n          this.path = prefix + '/' + this.path\n        }\n        this.atime = decDate(buf, off + 476, 12)\n        this.ctime = decDate(buf, off + 488, 12)\n      }\n    }\n\n    let sum = 8 * 0x20\n    for (let i = off; i < off + 148; i++) {\n      sum += buf[i] as number\n    }\n\n    for (let i = off + 156; i < off + 512; i++) {\n      sum += buf[i] as number\n    }\n\n    this.cksumValid = sum === this.cksum\n    if (this.cksum === undefined && sum === 8 * 0x20) {\n      this.nullBlock = true\n    }\n  }\n\n  #slurp(ex: HeaderData, gex: boolean = false) {\n    Object.assign(\n      this,\n      Object.fromEntries(\n        Object.entries(ex).filter(([k, v]) => {\n          // we slurp in everything except for the path attribute in\n          // a global extended header, because that's weird. Also, any\n          // null/undefined values are ignored.\n          return !(\n            v === null ||\n            v === undefined ||\n            (k === 'path' && gex) ||\n            (k === 'linkpath' && gex) ||\n            k === 'global'\n          )\n        }),\n      ),\n    )\n  }\n\n  encode(buf?: Buffer, off: number = 0) {\n    if (!buf) {\n      buf = this.block = Buffer.alloc(512)\n    }\n\n    if (this.#type === 'Unsupported') {\n      this.#type = '0'\n    }\n\n    if (!(buf.length >= off + 512)) {\n      throw new Error('need 512 bytes for header')\n    }\n\n    const prefixSize = this.ctime || this.atime ? 130 : 155\n    const split = splitPrefix(this.path || '', prefixSize)\n    const path = split[0]\n    const prefix = split[1]\n    this.needPax = !!split[2]\n\n    this.needPax = encString(buf, off, 100, path) || this.needPax\n    this.needPax =\n      encNumber(buf, off + 100, 8, this.mode) || this.needPax\n    this.needPax =\n      encNumber(buf, off + 108, 8, this.uid) || this.needPax\n    this.needPax =\n      encNumber(buf, off + 116, 8, this.gid) || this.needPax\n    this.needPax =\n      encNumber(buf, off + 124, 12, this.size) || this.needPax\n    this.needPax =\n      encDate(buf, off + 136, 12, this.mtime) || this.needPax\n    buf[off + 156] = this.#type.charCodeAt(0)\n    this.needPax =\n      encString(buf, off + 157, 100, this.linkpath) || this.needPax\n    buf.write('ustar\\u000000', off + 257, 8)\n    this.needPax =\n      encString(buf, off + 265, 32, this.uname) || this.needPax\n    this.needPax =\n      encString(buf, off + 297, 32, this.gname) || this.needPax\n    this.needPax =\n      encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n    this.needPax =\n      encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n    this.needPax =\n      encString(buf, off + 345, prefixSize, prefix) || this.needPax\n    if (buf[off + 475] !== 0) {\n      this.needPax =\n        encString(buf, off + 345, 155, prefix) || this.needPax\n    } else {\n      this.needPax =\n        encString(buf, off + 345, 130, prefix) || this.needPax\n      this.needPax =\n        encDate(buf, off + 476, 12, this.atime) || this.needPax\n      this.needPax =\n        encDate(buf, off + 488, 12, this.ctime) || this.needPax\n    }\n\n    let sum = 8 * 0x20\n    for (let i = off; i < off + 148; i++) {\n      sum += buf[i] as number\n    }\n\n    for (let i = off + 156; i < off + 512; i++) {\n      sum += buf[i] as number\n    }\n\n    this.cksum = sum\n    encNumber(buf, off + 148, 8, this.cksum)\n    this.cksumValid = true\n\n    return this.needPax\n  }\n\n  get type(): EntryTypeName {\n    return (\n      this.#type === 'Unsupported' ?\n        this.#type\n      : types.name.get(this.#type)) as EntryTypeName\n  }\n\n  get typeKey(): EntryTypeCode | 'Unsupported' {\n    return this.#type\n  }\n\n  set type(type: EntryTypeCode | EntryTypeName | 'Unsupported') {\n    const c = String(types.code.get(type as EntryTypeName))\n    if (types.isCode(c) || c === 'Unsupported') {\n      this.#type = c\n    } else if (types.isCode(type)) {\n      this.#type = type\n    } else {\n      throw new TypeError('invalid entry type: ' + type)\n    }\n  }\n}\n\nconst splitPrefix = (\n  p: string,\n  prefixSize: number,\n): [string, string, boolean] => {\n  const pathSize = 100\n  let pp = p\n  let prefix = ''\n  let ret: undefined | [string, string, boolean] = undefined\n  const root = pathModule.parse(p).root || '.'\n\n  if (Buffer.byteLength(pp) < pathSize) {\n    ret = [pp, prefix, false]\n  } else {\n    // first set prefix to the dir, and path to the base\n    prefix = pathModule.dirname(pp)\n    pp = pathModule.basename(pp)\n\n    do {\n      if (\n        Buffer.byteLength(pp) <= pathSize &&\n        Buffer.byteLength(prefix) <= prefixSize\n      ) {\n        // both fit!\n        ret = [pp, prefix, false]\n      } else if (\n        Buffer.byteLength(pp) > pathSize &&\n        Buffer.byteLength(prefix) <= prefixSize\n      ) {\n        // prefix fits in prefix, but path doesn't fit in path\n        ret = [pp.slice(0, pathSize - 1), prefix, true]\n      } else {\n        // make path take a bit from prefix\n        pp = pathModule.join(pathModule.basename(prefix), pp)\n        prefix = pathModule.dirname(prefix)\n      }\n    } while (prefix !== root && ret === undefined)\n\n    // at this point, found no resolution, just truncate\n    if (!ret) {\n      ret = [p.slice(0, pathSize - 1), '', true]\n    }\n  }\n  return ret\n}\n\nconst decString = (buf: Buffer, off: number, size: number) =>\n  buf\n    .subarray(off, off + size)\n    .toString('utf8')\n    .replace(/\\0.*/, '')\n\nconst decDate = (buf: Buffer, off: number, size: number) =>\n  numToDate(decNumber(buf, off, size))\n\nconst numToDate = (num?: number) =>\n  num === undefined ? undefined : new Date(num * 1000)\n\nconst decNumber = (buf: Buffer, off: number, size: number) =>\n  Number(buf[off]) & 0x80 ?\n    large.parse(buf.subarray(off, off + size))\n  : decSmallNumber(buf, off, size)\n\nconst nanUndef = (value: number) => (isNaN(value) ? undefined : value)\n\nconst decSmallNumber = (buf: Buffer, off: number, size: number) =>\n  nanUndef(\n    parseInt(\n      buf\n        .subarray(off, off + size)\n        .toString('utf8')\n        .replace(/\\0.*$/, '')\n        .trim(),\n      8,\n    ),\n  )\n\n// the maximum encodable as a null-terminated octal, by field size\nconst MAXNUM = {\n  12: 0o77777777777,\n  8: 0o7777777,\n}\n\nconst encNumber = (\n  buf: Buffer,\n  off: number,\n  size: 12 | 8,\n  num?: number,\n) =>\n  num === undefined ? false\n  : num > MAXNUM[size] || num < 0 ?\n    (large.encode(num, buf.subarray(off, off + size)), true)\n  : (encSmallNumber(buf, off, size, num), false)\n\nconst encSmallNumber = (\n  buf: Buffer,\n  off: number,\n  size: number,\n  num: number,\n) => buf.write(octalString(num, size), off, size, 'ascii')\n\nconst octalString = (num: number, size: number) =>\n  padOctal(Math.floor(num).toString(8), size)\n\nconst padOctal = (str: string, size: number) =>\n  (str.length === size - 1 ?\n    str\n  : new Array(size - str.length - 1).join('0') + str + ' ') + '\\0'\n\nconst encDate = (\n  buf: Buffer,\n  off: number,\n  size: 8 | 12,\n  date?: Date,\n) =>\n  date === undefined ? false : (\n    encNumber(buf, off, size, date.getTime() / 1000)\n  )\n\n// enough to fill the longest string we've got\nconst NULLS = new Array(156).join('\\0')\n// pad with nulls, return true if it's longer or non-ascii\nconst encString = (\n  buf: Buffer,\n  off: number,\n  size: number,\n  str?: string,\n) =>\n  str === undefined ? false : (\n    (buf.write(str + NULLS, off, size, 'utf8'),\n    str.length !== Buffer.byteLength(str) || str.length > size)\n  )\n", "// Tar can encode large and negative numbers using a leading byte of\n// 0xff for negative, and 0x80 for positive.\n\nexport const encode = (num: number, buf: Buffer) => {\n  if (!Number.isSafeInteger(num)) {\n    // The number is so large that javascript cannot represent it with integer\n    // precision.\n    throw Error(\n      'cannot encode number outside of javascript safe integer range',\n    )\n  } else if (num < 0) {\n    encodeNegative(num, buf)\n  } else {\n    encodePositive(num, buf)\n  }\n  return buf\n}\n\nconst encodePositive = (num: number, buf: Buffer) => {\n  buf[0] = 0x80\n\n  for (var i = buf.length; i > 1; i--) {\n    buf[i - 1] = num & 0xff\n    num = Math.floor(num / 0x100)\n  }\n}\n\nconst encodeNegative = (num: number, buf: Buffer) => {\n  buf[0] = 0xff\n  var flipped = false\n  num = num * -1\n  for (var i = buf.length; i > 1; i--) {\n    var byte = num & 0xff\n    num = Math.floor(num / 0x100)\n    if (flipped) {\n      buf[i - 1] = onesComp(byte)\n    } else if (byte === 0) {\n      buf[i - 1] = 0\n    } else {\n      flipped = true\n      buf[i - 1] = twosComp(byte)\n    }\n  }\n}\n\nexport const parse = (buf: Buffer) => {\n  const pre = buf[0]\n  const value =\n    pre === 0x80 ? pos(buf.subarray(1, buf.length))\n    : pre === 0xff ? twos(buf)\n    : null\n  if (value === null) {\n    throw Error('invalid base256 encoding')\n  }\n\n  if (!Number.isSafeInteger(value)) {\n    // The number is so large that javascript cannot represent it with integer\n    // precision.\n    throw Error(\n      'parsed number outside of javascript safe integer range',\n    )\n  }\n\n  return value\n}\n\nconst twos = (buf: Buffer) => {\n  var len = buf.length\n  var sum = 0\n  var flipped = false\n  for (var i = len - 1; i > -1; i--) {\n    var byte = Number(buf[i])\n    var f\n    if (flipped) {\n      f = onesComp(byte)\n    } else if (byte === 0) {\n      f = byte\n    } else {\n      flipped = true\n      f = twosComp(byte)\n    }\n    if (f !== 0) {\n      sum -= f * Math.pow(256, len - i - 1)\n    }\n  }\n  return sum\n}\n\nconst pos = (buf: Buffer) => {\n  var len = buf.length\n  var sum = 0\n  for (var i = len - 1; i > -1; i--) {\n    var byte = Number(buf[i])\n    if (byte !== 0) {\n      sum += byte * Math.pow(256, len - i - 1)\n    }\n  }\n  return sum\n}\n\nconst onesComp = (byte: number) => (0xff ^ byte) & 0xff\n\nconst twosComp = (byte: number) => ((0xff ^ byte) + 1) & 0xff\n", "export const isCode = (c: string): c is EntryTypeCode =>\n  name.has(c as EntryTypeCode)\n\nexport const isName = (c: string): c is EntryTypeName =>\n  code.has(c as EntryTypeName)\n\nexport type EntryTypeCode =\n  | '0'\n  | ''\n  | '1'\n  | '2'\n  | '3'\n  | '4'\n  | '5'\n  | '6'\n  | '7'\n  | 'g'\n  | 'x'\n  | 'A'\n  | 'D'\n  | 'I'\n  | 'K'\n  | 'L'\n  | 'M'\n  | 'N'\n  | 'S'\n  | 'V'\n  | 'X'\n\nexport type EntryTypeName =\n  | 'File'\n  | 'OldFile'\n  | 'Link'\n  | 'SymbolicLink'\n  | 'CharacterDevice'\n  | 'BlockDevice'\n  | 'Directory'\n  | 'FIFO'\n  | 'ContiguousFile'\n  | 'GlobalExtendedHeader'\n  | 'ExtendedHeader'\n  | 'SolarisACL'\n  | 'GNUDumpDir'\n  | 'Inode'\n  | 'NextFileHasLongLinkpath'\n  | 'NextFileHasLongPath'\n  | 'ContinuationFile'\n  | 'OldGnuLongPath'\n  | 'SparseFile'\n  | 'TapeVolumeHeader'\n  | 'OldExtendedHeader'\n  | 'Unsupported'\n\n// map types from key to human-friendly name\nexport const name = new Map<EntryTypeCode, EntryTypeName>([\n  ['0', 'File'],\n  // same as File\n  ['', 'OldFile'],\n  ['1', 'Link'],\n  ['2', 'SymbolicLink'],\n  // Devices and FIFOs aren't fully supported\n  // they are parsed, but skipped when unpacking\n  ['3', 'CharacterDevice'],\n  ['4', 'BlockDevice'],\n  ['5', 'Directory'],\n  ['6', 'FIFO'],\n  // same as File\n  ['7', 'ContiguousFile'],\n  // pax headers\n  ['g', 'GlobalExtendedHeader'],\n  ['x', 'ExtendedHeader'],\n  // vendor-specific stuff\n  // skip\n  ['A', 'SolarisACL'],\n  // like 5, but with data, which should be skipped\n  ['D', 'GNUDumpDir'],\n  // metadata only, skip\n  ['I', 'Inode'],\n  // data = link path of next file\n  ['K', 'NextFileHasLongLinkpath'],\n  // data = path of next file\n  ['L', 'NextFileHasLongPath'],\n  // skip\n  ['M', 'ContinuationFile'],\n  // like L\n  ['N', 'OldGnuLongPath'],\n  // skip\n  ['S', 'SparseFile'],\n  // skip\n  ['V', 'TapeVolumeHeader'],\n  // like x\n  ['X', 'OldExtendedHeader'],\n])\n\n// map the other direction\nexport const code = new Map<EntryTypeName, EntryTypeCode>(\n  Array.from(name).map(kv => [kv[1], kv[0]]),\n)\n", "import { basename } from 'node:path'\nimport { Header, HeaderData } from './header.js'\n\nexport class Pax implements HeaderData {\n  atime?: Date\n  mtime?: Date\n  ctime?: Date\n\n  charset?: string\n  comment?: string\n\n  gid?: number\n  uid?: number\n\n  gname?: string\n  uname?: string\n  linkpath?: string\n  dev?: number\n  ino?: number\n  nlink?: number\n  path?: string\n  size?: number\n  mode?: number\n\n  global: boolean\n\n  constructor(obj: HeaderData, global: boolean = false) {\n    this.atime = obj.atime\n    this.charset = obj.charset\n    this.comment = obj.comment\n    this.ctime = obj.ctime\n    this.dev = obj.dev\n    this.gid = obj.gid\n    this.global = global\n    this.gname = obj.gname\n    this.ino = obj.ino\n    this.linkpath = obj.linkpath\n    this.mtime = obj.mtime\n    this.nlink = obj.nlink\n    this.path = obj.path\n    this.size = obj.size\n    this.uid = obj.uid\n    this.uname = obj.uname\n  }\n\n  encode() {\n    const body = this.encodeBody()\n    if (body === '') {\n      return Buffer.allocUnsafe(0)\n    }\n\n    const bodyLen = Buffer.byteLength(body)\n    // round up to 512 bytes\n    // add 512 for header\n    const bufLen = 512 * Math.ceil(1 + bodyLen / 512)\n    const buf = Buffer.allocUnsafe(bufLen)\n\n    // 0-fill the header section, it might not hit every field\n    for (let i = 0; i < 512; i++) {\n      buf[i] = 0\n    }\n\n    new Header({\n      // XXX split the path\n      // then the path should be PaxHeader + basename, but less than 99,\n      // prepend with the dirname\n      /* c8 ignore start */\n      path: ('PaxHeader/' + basename(this.path ?? '')).slice(0, 99),\n      /* c8 ignore stop */\n      mode: this.mode || 0o644,\n      uid: this.uid,\n      gid: this.gid,\n      size: bodyLen,\n      mtime: this.mtime,\n      type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader',\n      linkpath: '',\n      uname: this.uname || '',\n      gname: this.gname || '',\n      devmaj: 0,\n      devmin: 0,\n      atime: this.atime,\n      ctime: this.ctime,\n    }).encode(buf)\n\n    buf.write(body, 512, bodyLen, 'utf8')\n\n    // null pad after the body\n    for (let i = bodyLen + 512; i < buf.length; i++) {\n      buf[i] = 0\n    }\n\n    return buf\n  }\n\n  encodeBody() {\n    return (\n      this.encodeField('path') +\n      this.encodeField('ctime') +\n      this.encodeField('atime') +\n      this.encodeField('dev') +\n      this.encodeField('ino') +\n      this.encodeField('nlink') +\n      this.encodeField('charset') +\n      this.encodeField('comment') +\n      this.encodeField('gid') +\n      this.encodeField('gname') +\n      this.encodeField('linkpath') +\n      this.encodeField('mtime') +\n      this.encodeField('size') +\n      this.encodeField('uid') +\n      this.encodeField('uname')\n    )\n  }\n\n  encodeField(field: keyof Pax): string {\n    if (this[field] === undefined) {\n      return ''\n    }\n    const r = this[field]\n    const v = r instanceof Date ? r.getTime() / 1000 : r\n    const s =\n      ' ' +\n      (field === 'dev' || field === 'ino' || field === 'nlink' ?\n        'SCHILY.'\n      : '') +\n      field +\n      '=' +\n      v +\n      '\\n'\n    const byteLen = Buffer.byteLength(s)\n    // the digits includes the length of the digits in ascii base-10\n    // so if it's 9 characters, then adding 1 for the 9 makes it 10\n    // which makes it 11 chars.\n    let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1\n    if (byteLen + digits >= Math.pow(10, digits)) {\n      digits += 1\n    }\n    const len = digits + byteLen\n    return len + s\n  }\n\n  static parse(str: string, ex?: HeaderData, g: boolean = false) {\n    return new Pax(merge(parseKV(str), ex), g)\n  }\n}\n\nconst merge = (a: HeaderData, b?: HeaderData) =>\n  b ? Object.assign({}, b, a) : a\n\nconst parseKV = (str: string) =>\n  str\n    .replace(/\\n$/, '')\n    .split('\\n')\n    .reduce(parseKVLine, Object.create(null))\n\nconst parseKVLine = (set: Record<string, any>, line: string) => {\n  const n = parseInt(line, 10)\n\n  // XXX Values with \\n in them will fail this.\n  // Refactor to not be a naive line-by-line parse.\n  if (n !== Buffer.byteLength(line) + 1) {\n    return set\n  }\n\n  line = line.slice((n + ' ').length)\n  const kv = line.split('=')\n  const r = kv.shift()\n\n  if (!r) {\n    return set\n  }\n\n  const k = r.replace(/^SCHILY\\.(dev|ino|nlink)/, '$1')\n\n  const v = kv.join('=')\n  set[k] =\n    /^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(k) ?\n      new Date(Number(v) * 1000)\n    : /^[0-9]+$/.test(v) ? +v\n    : v\n  return set\n}\n", "// on windows, either \\ or / are valid directory separators.\n// on unix, \\ is a valid character in filenames.\n// so, on windows, and only on windows, we replace all \\ chars with /,\n// so that we can use / as our one and only directory separator char.\n\nconst platform =\n  process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\n\nexport const normalizeWindowsPath =\n  platform !== 'win32' ?\n    (p: string) => p\n  : (p: string) => p && p.replace(/\\\\/g, '/')\n", "import { Minipass } from 'minipass'\nimport { Header } from './header.js'\nimport { normalizeWindowsPath } from './normalize-windows-path.js'\nimport { Pax } from './pax.js'\nimport { EntryTypeName } from './types.js'\n\nexport class ReadEntry extends Minipass<Buffer, Buffer> {\n  extended?: Pax\n  globalExtended?: Pax\n  header: Header\n  startBlockSize: number\n  blockRemain: number\n  remain: number\n  type: EntryTypeName\n  meta: boolean = false\n  ignore: boolean = false\n  path: string\n  mode?: number\n  uid?: number\n  gid?: number\n  uname?: string\n  gname?: string\n  size: number = 0\n  mtime?: Date\n  atime?: Date\n  ctime?: Date\n  linkpath?: string\n\n  dev?: number\n  ino?: number\n  nlink?: number\n  invalid: boolean = false\n  absolute?: string\n  unsupported: boolean = false\n\n  constructor(header: Header, ex?: Pax, gex?: Pax) {\n    super({})\n    // read entries always start life paused.  this is to avoid the\n    // situation where Minipass's auto-ending empty streams results\n    // in an entry ending before we're ready for it.\n    this.pause()\n    this.extended = ex\n    this.globalExtended = gex\n    this.header = header\n    /* c8 ignore start */\n    this.remain = header.size ?? 0\n    /* c8 ignore stop */\n    this.startBlockSize = 512 * Math.ceil(this.remain / 512)\n    this.blockRemain = this.startBlockSize\n    this.type = header.type\n    switch (this.type) {\n      case 'File':\n      case 'OldFile':\n      case 'Link':\n      case 'SymbolicLink':\n      case 'CharacterDevice':\n      case 'BlockDevice':\n      case 'Directory':\n      case 'FIFO':\n      case 'ContiguousFile':\n      case 'GNUDumpDir':\n        break\n\n      case 'NextFileHasLongLinkpath':\n      case 'NextFileHasLongPath':\n      case 'OldGnuLongPath':\n      case 'GlobalExtendedHeader':\n      case 'ExtendedHeader':\n      case 'OldExtendedHeader':\n        this.meta = true\n        break\n\n      // NOTE: gnutar and bsdtar treat unrecognized types as 'File'\n      // it may be worth doing the same, but with a warning.\n      default:\n        this.ignore = true\n    }\n\n    /* c8 ignore start */\n    if (!header.path) {\n      throw new Error('no path provided for tar.ReadEntry')\n    }\n    /* c8 ignore stop */\n\n    this.path = normalizeWindowsPath(header.path) as string\n    this.mode = header.mode\n    if (this.mode) {\n      this.mode = this.mode & 0o7777\n    }\n    this.uid = header.uid\n    this.gid = header.gid\n    this.uname = header.uname\n    this.gname = header.gname\n    this.size = this.remain\n    this.mtime = header.mtime\n    this.atime = header.atime\n    this.ctime = header.ctime\n    /* c8 ignore start */\n    this.linkpath =\n      header.linkpath ?\n        normalizeWindowsPath(header.linkpath)\n      : undefined\n    /* c8 ignore stop */\n    this.uname = header.uname\n    this.gname = header.gname\n\n    if (ex) {\n      this.#slurp(ex)\n    }\n    if (gex) {\n      this.#slurp(gex, true)\n    }\n  }\n\n  write(data: Buffer) {\n    const writeLen = data.length\n    if (writeLen > this.blockRemain) {\n      throw new Error('writing more to entry than is appropriate')\n    }\n\n    const r = this.remain\n    const br = this.blockRemain\n    this.remain = Math.max(0, r - writeLen)\n    this.blockRemain = Math.max(0, br - writeLen)\n    if (this.ignore) {\n      return true\n    }\n\n    if (r >= writeLen) {\n      return super.write(data)\n    }\n\n    // r < writeLen\n    return super.write(data.subarray(0, r))\n  }\n\n  #slurp(ex: Pax, gex: boolean = false) {\n    if (ex.path) ex.path = normalizeWindowsPath(ex.path)\n    if (ex.linkpath) ex.linkpath = normalizeWindowsPath(ex.linkpath)\n    Object.assign(\n      this,\n      Object.fromEntries(\n        Object.entries(ex).filter(([k, v]) => {\n          // we slurp in everything except for the path attribute in\n          // a global extended header, because that's weird. Also, any\n          // null/undefined values are ignored.\n          return !(\n            v === null ||\n            v === undefined ||\n            (k === 'path' && gex)\n          )\n        }),\n      ),\n    )\n  }\n}\n", "import { type Minipass } from 'minipass'\n\n/** has a warn method */\nexport type Warner = {\n  warn(code: string, message: string | Error, data: any): void\n  file?: string\n  cwd?: string\n  strict?: boolean\n\n  emit(\n    event: 'warn',\n    code: string,\n    message: string,\n    data?: WarnData,\n  ): void\n  emit(event: 'error', error: TarError): void\n}\n\nexport type WarnEvent = Minipass.Events & {\n  warn: [code: string, message: string, data: WarnData]\n}\n\nexport type WarnData = {\n  file?: string\n  cwd?: string\n  code?: string\n  tarCode?: string\n  recoverable?: boolean\n  [k: string]: any\n}\n\nexport type TarError = Error & WarnData\n\nexport const warnMethod = (\n  self: Warner,\n  code: string,\n  message: string | Error,\n  data: WarnData = {},\n) => {\n  if (self.file) {\n    data.file = self.file\n  }\n  if (self.cwd) {\n    data.cwd = self.cwd\n  }\n  data.code =\n    (message instanceof Error &&\n      (message as NodeJS.ErrnoException).code) ||\n    code\n  data.tarCode = code\n  if (!self.strict && data.recoverable !== false) {\n    if (message instanceof Error) {\n      data = Object.assign(message, data)\n      message = message.message\n    }\n    self.emit('warn', code, message, data)\n  } else if (message instanceof Error) {\n    self.emit('error', Object.assign(message, data))\n  } else {\n    self.emit(\n      'error',\n      Object.assign(new Error(`${code}: ${message}`), data),\n    )\n  }\n}\n", "// warning: extremely hot code path.\n// This has been meticulously optimized for use\n// within npm install on large package trees.\n// Do not edit without careful benchmarking.\nexport const stripTrailingSlashes = (str: string) => {\n  let i = str.length - 1\n  let slashesStart = -1\n  while (i > -1 && str.charAt(i) === '/') {\n    slashesStart = i\n    i--\n  }\n  return slashesStart === -1 ? str : str.slice(0, slashesStart)\n}\n", "import os from \"node:os\";\n\nimport * as errors from \"./errors.js\";\nimport type { PackageManifest } from \"./read-manifest.js\";\nimport {\n  ACCESS_PUBLIC,\n  ACCESS_RESTRICTED,\n  STRATEGY_UPGRADE,\n  STRATEGY_ALL,\n  type Access,\n  type Strategy,\n  type Options,\n  type Logger,\n} from \"./options.js\";\n\nconst REGISTRY_NPM = \"https://registry.npmjs.org/\";\nexport const TAG_LATEST = \"latest\";\n\n/** Normalized and sanitized auth, publish, and runtime configurations. */\nexport interface NormalizedOptions {\n  registry: URL;\n  token: string;\n  tag: ConfigValue<string>;\n  access: ConfigValue<Access | undefined>;\n  provenance: ConfigValue<boolean>;\n  ignoreScripts: ConfigValue<boolean>;\n  dryRun: ConfigValue<boolean>;\n  strategy: ConfigValue<Strategy>;\n  logger: Logger | undefined;\n  temporaryDirectory: string;\n}\n\n/** A config value, and whether that value differs from default. */\nexport interface ConfigValue<TValue> {\n  value: TValue;\n  isDefault: boolean;\n}\n\n/**\n * Normalizes and sanitizes options, and fills-in any default values.\n *\n * @param manifest Package metadata from package.json.\n * @param options User-input options.\n * @returns Validated auth and publish configuration.\n */\nexport function normalizeOptions(\n  manifest: PackageManifest,\n  options: Options\n): NormalizedOptions {\n  const defaultTag = manifest.publishConfig?.tag ?? TAG_LATEST;\n\n  const defaultRegistry = manifest.publishConfig?.registry ?? REGISTRY_NPM;\n\n  const defaultAccess =\n    manifest.publishConfig?.access ??\n    (manifest.scope === undefined ? ACCESS_PUBLIC : undefined);\n\n  const defaultProvenance = manifest.publishConfig?.provenance ?? false;\n\n  return {\n    token: validateToken(options.token),\n    registry: validateRegistry(options.registry ?? defaultRegistry),\n    tag: setValue(options.tag, defaultTag, validateTag),\n    access: setValue(options.access, defaultAccess, validateAccess),\n    provenance: setValue(options.provenance, defaultProvenance, Boolean),\n    ignoreScripts: setValue(options.ignoreScripts, true, Boolean),\n    dryRun: setValue(options.dryRun, false, Boolean),\n    strategy: setValue(options.strategy, STRATEGY_ALL, validateStrategy),\n    logger: options.logger,\n    temporaryDirectory: options.temporaryDirectory ?? os.tmpdir(),\n  };\n}\n\nconst setValue = <TValue>(\n  value: unknown,\n  defaultValue: unknown,\n  validate: (value: unknown) => TValue\n): ConfigValue<TValue> => ({\n  value: validate(value ?? defaultValue),\n  isDefault: value === undefined,\n});\n\nconst validateToken = (value: unknown): string => {\n  if (typeof value === \"string\" && value.length > 0) {\n    return value;\n  }\n\n  throw new errors.InvalidTokenError();\n};\n\nconst validateRegistry = (value: unknown): URL => {\n  try {\n    return new URL(value as string | URL);\n  } catch {\n    throw new errors.InvalidRegistryUrlError(value);\n  }\n};\n\nconst validateTag = (value: unknown): string => {\n  if (typeof value === \"string\") {\n    const trimmedValue = value.trim();\n    const encodedValue = encodeURIComponent(trimmedValue);\n\n    if (trimmedValue.length > 0 && trimmedValue === encodedValue) {\n      return value;\n    }\n  }\n\n  throw new errors.InvalidTagError(value);\n};\n\nconst validateAccess = (value: unknown): Access | undefined => {\n  if (\n    value === undefined ||\n    value === ACCESS_PUBLIC ||\n    value === ACCESS_RESTRICTED\n  ) {\n    return value;\n  }\n\n  throw new errors.InvalidAccessError(value);\n};\n\nconst validateStrategy = (value: unknown): Strategy => {\n  if (value === STRATEGY_ALL || value === STRATEGY_UPGRADE) {\n    return value;\n  }\n\n  throw new errors.InvalidStrategyError(value);\n};\n", "import childProcess from \"node:child_process\";\nimport os from \"node:os\";\n\nimport * as errors from \"../errors.js\";\nimport type { Logger } from \"../options.js\";\nimport type { NpmCliEnvironment } from \"./use-npm-environment.js\";\n\nexport interface NpmCliOptions {\n  environment: NpmCliEnvironment;\n  ignoreScripts: boolean;\n  logger?: Logger | undefined;\n}\n\nexport interface NpmCallResult<CommandT extends string> {\n  successData: SuccessData<CommandT> | undefined;\n  errorCode: string | undefined;\n  error: Error | undefined;\n}\n\ntype SuccessData<T extends string> = T extends typeof VIEW\n  ? NpmViewData\n  : T extends typeof PUBLISH\n    ? NpmPublishData\n    : unknown;\n\nexport interface NpmViewData {\n  \"dist-tags\": Record<string, string>;\n  versions: string[];\n}\nexport interface NpmPublishData {\n  id: string;\n  files: { path: string; size: number }[];\n}\n\nexport const VIEW = \"view\";\nexport const PUBLISH = \"publish\";\n\nexport const E404 = \"E404\";\nexport const EPUBLISHCONFLICT = \"EPUBLISHCONFLICT\";\n\nconst IS_WINDOWS = os.platform() === \"win32\";\nconst NPM = IS_WINDOWS ? \"npm.cmd\" : \"npm\";\nconst JSON_MATCH_RE = /(\\{[\\s\\S]*\\})/mu;\n\nconst baseArguments = (options: NpmCliOptions) =>\n  options.ignoreScripts ? [\"--ignore-scripts\", \"--json\"] : [\"--json\"];\n\n/**\n * Call the NPM CLI in JSON mode.\n *\n * @param command The command of the NPM CLI to call\n * @param cliArguments Any arguments to send to the command\n * @param options Customize environment variables or add an error handler.\n * @returns The parsed JSON, or stdout if unparsable.\n */\nexport async function callNpmCli<CommandT extends string>(\n  command: CommandT,\n  cliArguments: string[],\n  options: NpmCliOptions\n): Promise<NpmCallResult<CommandT>> {\n  const { stdout, stderr, exitCode } = await execNpm(\n    [command, ...baseArguments(options), ...cliArguments],\n    options.environment,\n    options.logger\n  );\n\n  let successData;\n  let errorCode;\n  let error;\n\n  if (exitCode === 0) {\n    successData = parseJson<SuccessData<CommandT>>(stdout);\n  } else {\n    const errorPayload = parseJson<{ error?: { code?: unknown } }>(\n      stdout,\n      stderr\n    );\n\n    if (errorPayload?.error?.code) {\n      errorCode = String(errorPayload.error.code).toUpperCase();\n    }\n\n    error = new errors.NpmCallError(command, exitCode, stderr);\n  }\n\n  return { successData, errorCode, error };\n}\n\n/**\n * Execute the npm CLI.\n *\n * @param commandArguments Npm subcommand and arguments.\n * @param environment Environment variables.\n * @param logger Optional logger.\n * @returns Stdout, stderr, and the exit code.\n */\nasync function execNpm(\n  commandArguments: string[],\n  environment: Record<string, string>,\n  logger?: Logger\n): Promise<{ stdout: string; stderr: string; exitCode: number }> {\n  logger?.debug?.(`Running command: ${NPM} ${commandArguments.join(\" \")}`);\n\n  return new Promise((resolve) => {\n    let stdout = \"\";\n    let stderr = \"\";\n\n    const npm = childProcess.spawn(NPM, commandArguments, {\n      env: { ...process.env, ...environment },\n      shell: IS_WINDOWS,\n    });\n\n    npm.stdout.on(\"data\", (data: string) => (stdout += data));\n    npm.stderr.on(\"data\", (data: string) => (stderr += data));\n    npm.on(\"close\", (code) => {\n      logger?.debug?.(`Received stdout: ${stdout}`);\n      logger?.debug?.(`Received stderr: ${stderr}`);\n\n      resolve({\n        stdout: stdout.trim(),\n        stderr: stderr.trim(),\n        exitCode: code ?? 0,\n      });\n    });\n  });\n}\n\n/**\n * Parse CLI outputs for JSON data.\n *\n * Certain versions of the npm CLI may intersperse JSON with human-readable\n * output, which this function accounts for.\n *\n * @param values CLI outputs to check\n * @returns Parsed JSON, if able to parse.\n */\nfunction parseJson<TParsed>(...values: string[]): TParsed | undefined {\n  for (const value of values) {\n    const jsonValue = JSON_MATCH_RE.exec(value)?.[1];\n\n    if (jsonValue) {\n      try {\n        return JSON.parse(jsonValue) as TParsed;\n      } catch {\n        return undefined;\n      }\n    }\n  }\n\n  return undefined;\n}\n", "import fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nimport type { PackageManifest } from \"../read-manifest.js\";\nimport type { NormalizedOptions } from \"../normalize-options.js\";\n\nexport type NpmCliEnvironment = Record<string, string>;\n\nexport type NpmCliTask<TReturn> = (\n  manifest: PackageManifest,\n  options: NormalizedOptions,\n  environment: NpmCliEnvironment\n) => Promise<TReturn>;\n\n/**\n * Create a temporary .npmrc file with the given auth token, and call a task\n * with env vars set to use that .npmrc.\n *\n * @param manifest Pacakge metadata.\n * @param options Configuration options.\n * @param task A function called with the configured environment. After the\n *   function resolves, the temporary .npmrc file will be removed.\n * @returns The resolved value of `task`\n */\nexport async function useNpmEnvironment<TReturn>(\n  manifest: PackageManifest,\n  options: NormalizedOptions,\n  task: NpmCliTask<TReturn>\n): Promise<TReturn> {\n  const { registry, token, logger, temporaryDirectory } = options;\n  const { host, origin, pathname } = registry;\n  const pathnameWithSlash = pathname.endsWith(\"/\") ? pathname : `${pathname}/`;\n  const config = [\n    \"; created by jsdevtools/npm-publish\",\n    `//${host}${pathnameWithSlash}:_authToken=\\${NODE_AUTH_TOKEN}`,\n    `registry=${origin}${pathnameWithSlash}`,\n    \"\",\n  ].join(os.EOL);\n\n  const npmrcDirectory = await fs.mkdtemp(\n    path.join(temporaryDirectory, \"npm-publish-\")\n  );\n  const npmrc = path.join(npmrcDirectory, \".npmrc\");\n  const environment = { NODE_AUTH_TOKEN: token, npm_config_userconfig: npmrc };\n\n  await fs.writeFile(npmrc, config, \"utf8\");\n\n  logger?.debug?.(`Temporary .npmrc created at ${npmrc}\\n${config}`);\n\n  try {\n    return await task(manifest, options, environment);\n  } finally {\n    await fs.rm(npmrcDirectory, { force: true, recursive: true });\n  }\n}\n", "import semverDifference from \"semver/functions/diff\";\nimport semverGreaterThan from \"semver/functions/gt\";\nimport semverValid from \"semver/functions/valid\";\n\nimport { STRATEGY_ALL } from \"../options.js\";\nimport type { NormalizedOptions } from \"../normalize-options.js\";\nimport { INITIAL, DIFFERENT, type ReleaseType } from \"../results.js\";\nimport type { NpmViewData } from \"../npm/index.js\";\n\nexport interface VersionComparison {\n  type: ReleaseType | undefined;\n  oldVersion: string | undefined;\n}\n\n/**\n * Compare previously published versions with the package's current version.\n *\n * @param currentVersion The current package version.\n * @param publishedVersions The versions that have already been published.\n * @param options Configuration options\n * @returns The release type and previous version.\n */\nexport function compareVersions(\n  currentVersion: string,\n  publishedVersions: NpmViewData | undefined,\n  options: NormalizedOptions\n): VersionComparison {\n  const { versions, \"dist-tags\": tags } = publishedVersions ?? {};\n  const { strategy, tag: publishTag } = options;\n  const oldVersion = semverValid(tags?.[publishTag.value]) ?? undefined;\n  const isUnique = !versions?.includes(currentVersion);\n  let type: ReleaseType | undefined;\n\n  if (isUnique) {\n    if (!oldVersion) {\n      type = INITIAL;\n    } else if (semverGreaterThan(currentVersion, oldVersion)) {\n      type = semverDifference(currentVersion, oldVersion) ?? DIFFERENT;\n    } else if (strategy.value === STRATEGY_ALL) {\n      type = DIFFERENT;\n    }\n  }\n\n  return { type, oldVersion };\n}\n", "import type { NormalizedOptions } from \"../normalize-options.js\";\n\n/**\n * Given a package name and publish configuration, get the NPM CLI view\n * arguments.\n *\n * @param packageName Package name.\n * @param options Publish configuration.\n * @param retryWithTag Include a non-latest tag in the package spec for a rety\n *   attempt.\n * @returns Arguments to pass to the NPM CLI. If `retryWithTag` is true, but the\n *   publish config is using the `latest` tag, will return `undefined`.\n */\nexport function getViewArguments(\n  packageName: string,\n  options: NormalizedOptions,\n  retryWithTag = false\n): string[] {\n  const packageSpec = retryWithTag\n    ? `${packageName}@${options.tag.value}`\n    : packageName;\n\n  return [packageSpec, \"dist-tags\", \"versions\"];\n}\n\n/**\n * Given a publish configuration, get the NPM CLI publish arguments.\n *\n * @param packageSpec Package specification path.\n * @param options Publish configuration.\n * @returns Arguments to pass to the NPM CLI.\n */\nexport function getPublishArguments(\n  packageSpec: string,\n  options: NormalizedOptions\n): string[] {\n  const { tag, access, dryRun, provenance } = options;\n  const publishArguments = [];\n\n  if (packageSpec.length > 0) {\n    publishArguments.push(packageSpec);\n  }\n\n  if (!tag.isDefault) {\n    publishArguments.push(\"--tag\", tag.value);\n  }\n\n  if (!access.isDefault && access.value) {\n    publishArguments.push(\"--access\", access.value);\n  }\n\n  if (!provenance.isDefault && provenance.value) {\n    publishArguments.push(\"--provenance\");\n  }\n\n  if (!dryRun.isDefault && dryRun.value) {\n    publishArguments.push(\"--dry-run\");\n  }\n\n  return publishArguments;\n}\n", "import type { PackageManifest } from \"../read-manifest.js\";\nimport type { NormalizedOptions } from \"../normalize-options.js\";\nimport {\n  VIEW,\n  PUBLISH,\n  E404,\n  EPUBLISHCONFLICT,\n  callNpmCli,\n  type NpmCliEnvironment,\n} from \"../npm/index.js\";\nimport { compareVersions, type VersionComparison } from \"./compare-versions.js\";\nimport { getViewArguments, getPublishArguments } from \"./get-arguments.js\";\n\nexport interface PublishResult extends VersionComparison {\n  id: string | undefined;\n  files: PublishFile[];\n}\n\nexport interface PublishFile {\n  path: string;\n  size: number;\n}\n\n/**\n * Get the currently published versions of a package and publish if needed.\n *\n * @param manifest The package to potentially publish.\n * @param options Configuration options.\n * @param environment Environment variables for the npm cli.\n * @returns Information about the publish, including if it occurred.\n */\nexport async function compareAndPublish(\n  manifest: PackageManifest,\n  options: NormalizedOptions,\n  environment: NpmCliEnvironment\n): Promise<PublishResult> {\n  const { name, version, packageSpec } = manifest;\n  const cliOptions = {\n    environment,\n    ignoreScripts: options.ignoreScripts.value,\n    logger: options.logger,\n  };\n\n  const viewArguments = getViewArguments(name, options);\n  const publishArguments = getPublishArguments(packageSpec, options);\n  let viewCall = await callNpmCli(VIEW, viewArguments, cliOptions);\n\n  // `npm view` will succeed with no output the package exists in the registry\n  // with no `latest` tag. This is only possible with third-party registries.\n  // https://github.com/npm/cli/issues/6408\n  if (!viewCall.successData && !viewCall.error) {\n    // Retry the call to `npm view` with the configured publish tag,\n    // to at least try to get something.\n    const viewWithTagArguments = getViewArguments(name, options, true);\n    viewCall = await callNpmCli(VIEW, viewWithTagArguments, cliOptions);\n  }\n\n  if (viewCall.error && viewCall.errorCode !== E404) {\n    throw viewCall.error;\n  }\n\n  const isDryRun = options.dryRun.value;\n  const comparison = compareVersions(version, viewCall.successData, options);\n  const publishCall =\n    comparison.type ?? isDryRun\n      ? await callNpmCli(PUBLISH, publishArguments, cliOptions)\n      : { successData: undefined, errorCode: undefined, error: undefined };\n\n  if (publishCall.error && publishCall.errorCode !== EPUBLISHCONFLICT) {\n    throw publishCall.error;\n  }\n\n  const { successData: publishData } = publishCall;\n\n  return {\n    id: isDryRun && !comparison.type ? undefined : publishData?.id,\n    files: publishData?.files ?? [],\n    type: publishData ? comparison.type : undefined,\n    oldVersion: comparison.oldVersion,\n  };\n}\n", "import os from \"node:os\";\n\nimport type { PublishResult } from \"./compare-and-publish/index.js\";\nimport type { PackageManifest } from \"./read-manifest.js\";\nimport type { NormalizedOptions } from \"./normalize-options.js\";\n\nconst DRY_RUN_BANNER =\n  \"=== DRY RUN === DRY RUN === DRY RUN === DRY RUN === DRY RUN ===\";\n\nconst CONTENTS_BANNER = \"=== Contents ===\";\n\n/**\n * Format publish results into a string.\n *\n * @param manifest Package manifest\n * @param options Configuration options.\n * @param result Results from running npm publish.\n * @returns Formatted string.\n */\nexport function formatPublishResult(\n  manifest: PackageManifest,\n  options: NormalizedOptions,\n  result: PublishResult\n): string {\n  const lines = [];\n\n  lines.push(\n    result.id === undefined\n      ? `\uD83D\uDE45\u200D\u2640\uFE0F ${manifest.name}@${manifest.version} already published.`\n      : `\uD83D\uDCE6 ${result.id}`\n  );\n\n  if (result.files.length > 0) {\n    lines.push(\"\", CONTENTS_BANNER);\n  }\n\n  for (const { path, size } of result.files) {\n    lines.push(`${formatSize(size)}\\t${path}`);\n  }\n\n  return (\n    options.dryRun.value\n      ? [DRY_RUN_BANNER, \"\", ...lines, \"\", DRY_RUN_BANNER]\n      : lines\n  ).join(os.EOL);\n}\n\nconst formatSize = (size: number): string => {\n  if (size < 1000) {\n    return `${size} B`;\n  }\n  if (size < 1_000_000) {\n    return `${(size / 1000).toFixed(1)} kB`;\n  }\n\n  return `${(size / 1_000_000).toFixed(1)} MB`;\n};\n", "import { readManifest } from \"./read-manifest.js\";\nimport { normalizeOptions } from \"./normalize-options.js\";\nimport { useNpmEnvironment } from \"./npm/index.js\";\nimport { compareAndPublish } from \"./compare-and-publish/index.js\";\nimport { formatPublishResult } from \"./format-publish-result.js\";\nimport type { Options } from \"./options.js\";\nimport type { Results } from \"./results.js\";\n\n/**\n * Publishes a package to NPM, if its version has changed.\n *\n * @param options Publish options.\n * @returns Release metadata.\n */\nexport async function npmPublish(options: Options): Promise<Results> {\n  const manifest = await readManifest(options.package);\n  const normalizedOptions = normalizeOptions(manifest, options);\n  const publishResult = await useNpmEnvironment(\n    manifest,\n    normalizedOptions,\n    compareAndPublish\n  );\n\n  normalizedOptions.logger?.info?.(\n    formatPublishResult(manifest, normalizedOptions, publishResult)\n  );\n\n  return {\n    id: publishResult.id,\n    type: publishResult.type,\n    oldVersion: publishResult.oldVersion,\n    name: manifest.name,\n    version: manifest.version,\n    registry: normalizedOptions.registry,\n    tag: normalizedOptions.tag.value,\n    access: normalizedOptions.access.value,\n    strategy: normalizedOptions.strategy.value,\n    dryRun: normalizedOptions.dryRun.value,\n  };\n}\n", "/** Wrapper module for @actions/core */\nimport {\n  getInput as ghGetInput,\n  setOutput as ghSetOutput,\n  setSecret as ghSetSecret,\n  setFailed as ghSetFailed,\n  debug as ghLogDebug,\n  info as ghLogInfo,\n  error as ghLogError,\n} from \"@actions/core\";\n\nimport type { Logger } from \"../options.js\";\n\n/** Logger using the methods from @actions/core. */\nexport const logger: Logger = {\n  debug: ghLogDebug,\n  info: ghLogInfo,\n  error: ghLogError,\n};\n\n/**\n * Get input by name.\n *\n * @param name Input name\n * @returns The input string value, or undefined if not set\n */\nexport function getInput<T extends string>(name: string): T | undefined {\n  const inputString = ghGetInput(name);\n  return inputString.length > 0 ? (inputString as T) : undefined;\n}\n\n/**\n * Get a required secret input by name.\n *\n * @param name Input name\n * @returns The input secret value.\n */\nexport function getRequiredSecretInput(name: string): string {\n  const inputString = ghGetInput(name, { required: true });\n  ghSetSecret(inputString);\n  return inputString;\n}\n\n/**\n * Get a boolean input by name.\n *\n * @param name Input name\n * @returns True if value is \"true\", false if \"false\", undefined if unset\n */\nexport function getBooleanInput(name: string): boolean | undefined {\n  const inputString = ghGetInput(name).toLowerCase();\n\n  if (inputString === \"true\") return true;\n  if (inputString === \"false\") return false;\n  return undefined;\n}\n\n/**\n * Set the action as failed due to an error.\n *\n * @param error An value from a `catch`\n */\nexport function setFailed(error: unknown) {\n  ghSetFailed(error as Error);\n}\n\n/**\n * Set an output by name.\n *\n * @param name Output name\n * @param value Output value\n */\nexport function setOutput(name: string, value: string | boolean): void;\n\n/**\n * Set an output by name.\n *\n * @param name Output name\n * @param value Output value\n * @param defaultValue Default value if value is undefined.\n */\nexport function setOutput(\n  name: string,\n  value: string | boolean | undefined,\n  defaultValue: string | boolean\n): void;\n\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function setOutput(\n  name: string,\n  value: string | boolean | undefined,\n  defaultValue?: string | boolean | undefined\n): void {\n  ghSetOutput(name, value ?? defaultValue);\n}\n"],
-  "mappings": "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",
+  "sourcesContent": ["'use strict'\nconst { builtinModules: builtins } = require('module')\n\nvar scopedPackagePattern = new RegExp('^(?:@([^/]+?)[/])?([^/]+?)$')\nvar blacklist = [\n  'node_modules',\n  'favicon.ico',\n]\n\nfunction validate (name) {\n  var warnings = []\n  var errors = []\n\n  if (name === null) {\n    errors.push('name cannot be null')\n    return done(warnings, errors)\n  }\n\n  if (name === undefined) {\n    errors.push('name cannot be undefined')\n    return done(warnings, errors)\n  }\n\n  if (typeof name !== 'string') {\n    errors.push('name must be a string')\n    return done(warnings, errors)\n  }\n\n  if (!name.length) {\n    errors.push('name length must be greater than zero')\n  }\n\n  if (name.match(/^\\./)) {\n    errors.push('name cannot start with a period')\n  }\n\n  if (name.match(/^_/)) {\n    errors.push('name cannot start with an underscore')\n  }\n\n  if (name.trim() !== name) {\n    errors.push('name cannot contain leading or trailing spaces')\n  }\n\n  // No funny business\n  blacklist.forEach(function (blacklistedName) {\n    if (name.toLowerCase() === blacklistedName) {\n      errors.push(blacklistedName + ' is a blacklisted name')\n    }\n  })\n\n  // Generate warnings for stuff that used to be allowed\n\n  // core module names like http, events, util, etc\n  if (builtins.includes(name.toLowerCase())) {\n    warnings.push(name + ' is a core module name')\n  }\n\n  if (name.length > 214) {\n    warnings.push('name can no longer contain more than 214 characters')\n  }\n\n  // mIxeD CaSe nAMEs\n  if (name.toLowerCase() !== name) {\n    warnings.push('name can no longer contain capital letters')\n  }\n\n  if (/[~'!()*]/.test(name.split('/').slice(-1)[0])) {\n    warnings.push('name can no longer contain special characters (\"~\\'!()*\")')\n  }\n\n  if (encodeURIComponent(name) !== name) {\n    // Maybe it's a scoped package name, like @user/package\n    var nameMatch = name.match(scopedPackagePattern)\n    if (nameMatch) {\n      var user = nameMatch[1]\n      var pkg = nameMatch[2]\n      if (encodeURIComponent(user) === user && encodeURIComponent(pkg) === pkg) {\n        return done(warnings, errors)\n      }\n    }\n\n    errors.push('name can only contain URL-friendly characters')\n  }\n\n  return done(warnings, errors)\n}\n\nvar done = function (warnings, errors) {\n  var result = {\n    validForNewPackages: errors.length === 0 && warnings.length === 0,\n    validForOldPackages: errors.length === 0,\n    warnings: warnings,\n    errors: errors,\n  }\n  if (!result.warnings.length) {\n    delete result.warnings\n  }\n  if (!result.errors.length) {\n    delete result.errors\n  }\n  return result\n}\n\nmodule.exports = validate\n", "const debug = (\n  typeof process === 'object' &&\n  process.env &&\n  process.env.NODE_DEBUG &&\n  /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n  : () => {}\n\nmodule.exports = debug\n", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n  'major',\n  'premajor',\n  'minor',\n  'preminor',\n  'patch',\n  'prepatch',\n  'prerelease',\n]\n\nmodule.exports = {\n  MAX_LENGTH,\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_SAFE_INTEGER,\n  RELEASE_TYPES,\n  SEMVER_SPEC_VERSION,\n  FLAG_INCLUDE_PRERELEASE: 0b001,\n  FLAG_LOOSE: 0b010,\n}\n", "const {\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n  ['\\\\s', 1],\n  ['\\\\d', MAX_LENGTH],\n  [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n  for (const [token, max] of safeRegexReplacements) {\n    value = value\n      .split(`${token}*`).join(`${token}{0,${max}}`)\n      .split(`${token}+`).join(`${token}{1,${max}}`)\n  }\n  return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n  const safe = makeSafeRegex(value)\n  const index = R++\n  debug(name, index, value)\n  t[name] = index\n  src[index] = value\n  re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n  safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups.  The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:${src[t.PRERELEASE]})?${\n                     src[t.BUILD]}?` +\n                   `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:${src[t.PRERELEASELOOSE]})?${\n                          src[t.BUILD]}?` +\n                        `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n              '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n              `(?:${src[t.PRERELEASE]})?` +\n              `(?:${src[t.BUILD]})?` +\n              `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s+-\\\\s+` +\n                   `(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s+-\\\\s+` +\n                        `(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n  if (!options) {\n    return emptyOpts\n  }\n\n  if (typeof options !== 'object') {\n    return looseOption\n  }\n\n  return options\n}\nmodule.exports = parseOptions\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n  const anum = numeric.test(a)\n  const bnum = numeric.test(b)\n\n  if (anum && bnum) {\n    a = +a\n    b = +b\n  }\n\n  return a === b ? 0\n    : (anum && !bnum) ? -1\n    : (bnum && !anum) ? 1\n    : a < b ? -1\n    : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n  compareIdentifiers,\n  rcompareIdentifiers,\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n  constructor (version, options) {\n    options = parseOptions(options)\n\n    if (version instanceof SemVer) {\n      if (version.loose === !!options.loose &&\n          version.includePrerelease === !!options.includePrerelease) {\n        return version\n      } else {\n        version = version.version\n      }\n    } else if (typeof version !== 'string') {\n      throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n    }\n\n    if (version.length > MAX_LENGTH) {\n      throw new TypeError(\n        `version is longer than ${MAX_LENGTH} characters`\n      )\n    }\n\n    debug('SemVer', version, options)\n    this.options = options\n    this.loose = !!options.loose\n    // this isn't actually relevant for versions, but keep it so that we\n    // don't run into trouble passing this.options around.\n    this.includePrerelease = !!options.includePrerelease\n\n    const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n    if (!m) {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    this.raw = version\n\n    // these are actually numbers\n    this.major = +m[1]\n    this.minor = +m[2]\n    this.patch = +m[3]\n\n    if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n      throw new TypeError('Invalid major version')\n    }\n\n    if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n      throw new TypeError('Invalid minor version')\n    }\n\n    if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n      throw new TypeError('Invalid patch version')\n    }\n\n    // numberify any prerelease numeric ids\n    if (!m[4]) {\n      this.prerelease = []\n    } else {\n      this.prerelease = m[4].split('.').map((id) => {\n        if (/^[0-9]+$/.test(id)) {\n          const num = +id\n          if (num >= 0 && num < MAX_SAFE_INTEGER) {\n            return num\n          }\n        }\n        return id\n      })\n    }\n\n    this.build = m[5] ? m[5].split('.') : []\n    this.format()\n  }\n\n  format () {\n    this.version = `${this.major}.${this.minor}.${this.patch}`\n    if (this.prerelease.length) {\n      this.version += `-${this.prerelease.join('.')}`\n    }\n    return this.version\n  }\n\n  toString () {\n    return this.version\n  }\n\n  compare (other) {\n    debug('SemVer.compare', this.version, this.options, other)\n    if (!(other instanceof SemVer)) {\n      if (typeof other === 'string' && other === this.version) {\n        return 0\n      }\n      other = new SemVer(other, this.options)\n    }\n\n    if (other.version === this.version) {\n      return 0\n    }\n\n    return this.compareMain(other) || this.comparePre(other)\n  }\n\n  compareMain (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    return (\n      compareIdentifiers(this.major, other.major) ||\n      compareIdentifiers(this.minor, other.minor) ||\n      compareIdentifiers(this.patch, other.patch)\n    )\n  }\n\n  comparePre (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    // NOT having a prerelease is > having one\n    if (this.prerelease.length && !other.prerelease.length) {\n      return -1\n    } else if (!this.prerelease.length && other.prerelease.length) {\n      return 1\n    } else if (!this.prerelease.length && !other.prerelease.length) {\n      return 0\n    }\n\n    let i = 0\n    do {\n      const a = this.prerelease[i]\n      const b = other.prerelease[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  compareBuild (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    let i = 0\n    do {\n      const a = this.build[i]\n      const b = other.build[i]\n      debug('build compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  // preminor will bump the version up to the next minor release, and immediately\n  // down to pre-release. premajor and prepatch work the same way.\n  inc (release, identifier, identifierBase) {\n    switch (release) {\n      case 'premajor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor = 0\n        this.major++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'preminor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'prepatch':\n        // If this is already a prerelease, it will bump to the next version\n        // drop any prereleases that might already exist, since they are not\n        // relevant at this point.\n        this.prerelease.length = 0\n        this.inc('patch', identifier, identifierBase)\n        this.inc('pre', identifier, identifierBase)\n        break\n      // If the input is a non-prerelease version, this acts the same as\n      // prepatch.\n      case 'prerelease':\n        if (this.prerelease.length === 0) {\n          this.inc('patch', identifier, identifierBase)\n        }\n        this.inc('pre', identifier, identifierBase)\n        break\n\n      case 'major':\n        // If this is a pre-major version, bump up to the same major version.\n        // Otherwise increment major.\n        // 1.0.0-5 bumps to 1.0.0\n        // 1.1.0 bumps to 2.0.0\n        if (\n          this.minor !== 0 ||\n          this.patch !== 0 ||\n          this.prerelease.length === 0\n        ) {\n          this.major++\n        }\n        this.minor = 0\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'minor':\n        // If this is a pre-minor version, bump up to the same minor version.\n        // Otherwise increment minor.\n        // 1.2.0-5 bumps to 1.2.0\n        // 1.2.1 bumps to 1.3.0\n        if (this.patch !== 0 || this.prerelease.length === 0) {\n          this.minor++\n        }\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'patch':\n        // If this is not a pre-release version, it will increment the patch.\n        // If it is a pre-release it will bump up to the same patch version.\n        // 1.2.0-5 patches to 1.2.0\n        // 1.2.0 patches to 1.2.1\n        if (this.prerelease.length === 0) {\n          this.patch++\n        }\n        this.prerelease = []\n        break\n      // This probably shouldn't be used publicly.\n      // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n      case 'pre': {\n        const base = Number(identifierBase) ? 1 : 0\n\n        if (!identifier && identifierBase === false) {\n          throw new Error('invalid increment argument: identifier is empty')\n        }\n\n        if (this.prerelease.length === 0) {\n          this.prerelease = [base]\n        } else {\n          let i = this.prerelease.length\n          while (--i >= 0) {\n            if (typeof this.prerelease[i] === 'number') {\n              this.prerelease[i]++\n              i = -2\n            }\n          }\n          if (i === -1) {\n            // didn't increment anything\n            if (identifier === this.prerelease.join('.') && identifierBase === false) {\n              throw new Error('invalid increment argument: identifier already exists')\n            }\n            this.prerelease.push(base)\n          }\n        }\n        if (identifier) {\n          // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n          // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n          let prerelease = [identifier, base]\n          if (identifierBase === false) {\n            prerelease = [identifier]\n          }\n          if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n            if (isNaN(this.prerelease[1])) {\n              this.prerelease = prerelease\n            }\n          } else {\n            this.prerelease = prerelease\n          }\n        }\n        break\n      }\n      default:\n        throw new Error(`invalid increment argument: ${release}`)\n    }\n    this.raw = this.format()\n    if (this.build.length) {\n      this.raw += `+${this.build.join('.')}`\n    }\n    return this\n  }\n}\n\nmodule.exports = SemVer\n", "const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n  if (version instanceof SemVer) {\n    return version\n  }\n  try {\n    return new SemVer(version, options)\n  } catch (er) {\n    if (!throwErrors) {\n      return null\n    }\n    throw er\n  }\n}\n\nmodule.exports = parse\n", "const parse = require('./parse')\nconst valid = (version, options) => {\n  const v = parse(version, options)\n  return v ? v.version : null\n}\nmodule.exports = valid\n", "const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n  const v1 = parse(version1, null, true)\n  const v2 = parse(version2, null, true)\n  const comparison = v1.compare(v2)\n\n  if (comparison === 0) {\n    return null\n  }\n\n  const v1Higher = comparison > 0\n  const highVersion = v1Higher ? v1 : v2\n  const lowVersion = v1Higher ? v2 : v1\n  const highHasPre = !!highVersion.prerelease.length\n  const lowHasPre = !!lowVersion.prerelease.length\n\n  if (lowHasPre && !highHasPre) {\n    // Going from prerelease -> no prerelease requires some special casing\n\n    // If the low version has only a major, then it will always be a major\n    // Some examples:\n    // 1.0.0-1 -> 1.0.0\n    // 1.0.0-1 -> 1.1.1\n    // 1.0.0-1 -> 2.0.0\n    if (!lowVersion.patch && !lowVersion.minor) {\n      return 'major'\n    }\n\n    // Otherwise it can be determined by checking the high version\n\n    if (highVersion.patch) {\n      // anything higher than a patch bump would result in the wrong version\n      return 'patch'\n    }\n\n    if (highVersion.minor) {\n      // anything higher than a minor bump would result in the wrong version\n      return 'minor'\n    }\n\n    // bumping major/minor/patch all have same result\n    return 'major'\n  }\n\n  // add the `pre` prefix if we are going to a prerelease version\n  const prefix = highHasPre ? 'pre' : ''\n\n  if (v1.major !== v2.major) {\n    return prefix + 'major'\n  }\n\n  if (v1.minor !== v2.minor) {\n    return prefix + 'minor'\n  }\n\n  if (v1.patch !== v2.patch) {\n    return prefix + 'patch'\n  }\n\n  // high and low are preleases\n  return 'prerelease'\n}\n\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n  new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", null, null, "import crypto from 'crypto';\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n  if (poolPtr > rnds8Pool.length - 16) {\n    crypto.randomFillSync(rnds8Pool);\n    poolPtr = 0;\n  }\n\n  return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}", "export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;", "import REGEX from './regex.js';\n\nfunction validate(uuid) {\n  return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;", "import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;", "import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n  let i = buf && offset || 0;\n  const b = buf || new Array(16);\n  options = options || {};\n  let node = options.node || _nodeId;\n  let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n  // specified.  We do this lazily to minimize issues related to insufficient\n  // system entropy.  See #189\n\n  if (node == null || clockseq == null) {\n    const seedBytes = options.random || (options.rng || rng)();\n\n    if (node == null) {\n      // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n      node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n    }\n\n    if (clockseq == null) {\n      // Per 4.2.2, randomize (14 bit) clockseq\n      clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n    }\n  } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n  // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so\n  // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n  // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n  let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n  // cycle to simulate higher resolution clock\n\n  let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n  const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n  if (dt < 0 && options.clockseq === undefined) {\n    clockseq = clockseq + 1 & 0x3fff;\n  } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n  // time interval\n\n\n  if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n    nsecs = 0;\n  } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n  if (nsecs >= 10000) {\n    throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n  }\n\n  _lastMSecs = msecs;\n  _lastNSecs = nsecs;\n  _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n  msecs += 12219292800000; // `time_low`\n\n  const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n  b[i++] = tl >>> 24 & 0xff;\n  b[i++] = tl >>> 16 & 0xff;\n  b[i++] = tl >>> 8 & 0xff;\n  b[i++] = tl & 0xff; // `time_mid`\n\n  const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n  b[i++] = tmh >>> 8 & 0xff;\n  b[i++] = tmh & 0xff; // `time_high_and_version`\n\n  b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n  b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n  b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n  b[i++] = clockseq & 0xff; // `node`\n\n  for (let n = 0; n < 6; ++n) {\n    b[i + n] = node[n];\n  }\n\n  return buf || stringify(b);\n}\n\nexport default v1;", "import validate from './validate.js';\n\nfunction parse(uuid) {\n  if (!validate(uuid)) {\n    throw TypeError('Invalid UUID');\n  }\n\n  let v;\n  const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n  arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n  arr[1] = v >>> 16 & 0xff;\n  arr[2] = v >>> 8 & 0xff;\n  arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n  arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n  arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n  arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n  arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n  arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n  arr[9] = v & 0xff; // Parse ........-....-....-....-############\n  // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n  arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n  arr[11] = v / 0x100000000 & 0xff;\n  arr[12] = v >>> 24 & 0xff;\n  arr[13] = v >>> 16 & 0xff;\n  arr[14] = v >>> 8 & 0xff;\n  arr[15] = v & 0xff;\n  return arr;\n}\n\nexport default parse;", "import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n  str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n  const bytes = [];\n\n  for (let i = 0; i < str.length; ++i) {\n    bytes.push(str.charCodeAt(i));\n  }\n\n  return bytes;\n}\n\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n  function generateUUID(value, namespace, buf, offset) {\n    if (typeof value === 'string') {\n      value = stringToBytes(value);\n    }\n\n    if (typeof namespace === 'string') {\n      namespace = parse(namespace);\n    }\n\n    if (namespace.length !== 16) {\n      throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n    } // Compute hash of namespace and value, Per 4.3\n    // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n    // hashfunc([...namespace, ... value])`\n\n\n    let bytes = new Uint8Array(16 + value.length);\n    bytes.set(namespace);\n    bytes.set(value, namespace.length);\n    bytes = hashfunc(bytes);\n    bytes[6] = bytes[6] & 0x0f | version;\n    bytes[8] = bytes[8] & 0x3f | 0x80;\n\n    if (buf) {\n      offset = offset || 0;\n\n      for (let i = 0; i < 16; ++i) {\n        buf[offset + i] = bytes[i];\n      }\n\n      return buf;\n    }\n\n    return stringify(bytes);\n  } // Function#name is not settable on some platforms (#270)\n\n\n  try {\n    generateUUID.name = name; // eslint-disable-next-line no-empty\n  } catch (err) {} // For CommonJS default export support\n\n\n  generateUUID.DNS = DNS;\n  generateUUID.URL = URL;\n  return generateUUID;\n}", "import crypto from 'crypto';\n\nfunction md5(bytes) {\n  if (Array.isArray(bytes)) {\n    bytes = Buffer.from(bytes);\n  } else if (typeof bytes === 'string') {\n    bytes = Buffer.from(bytes, 'utf8');\n  }\n\n  return crypto.createHash('md5').update(bytes).digest();\n}\n\nexport default md5;", "import v35 from './v35.js';\nimport md5 from './md5.js';\nconst v3 = v35('v3', 0x30, md5);\nexport default v3;", "import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  options = options || {};\n  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return stringify(rnds);\n}\n\nexport default v4;", "import crypto from 'crypto';\n\nfunction sha1(bytes) {\n  if (Array.isArray(bytes)) {\n    bytes = Buffer.from(bytes);\n  } else if (typeof bytes === 'string') {\n    bytes = Buffer.from(bytes, 'utf8');\n  }\n\n  return crypto.createHash('sha1').update(bytes).digest();\n}\n\nexport default sha1;", "import v35 from './v35.js';\nimport sha1 from './sha1.js';\nconst v5 = v35('v5', 0x50, sha1);\nexport default v5;", "export default '00000000-0000-0000-0000-000000000000';", "import validate from './validate.js';\n\nfunction version(uuid) {\n  if (!validate(uuid)) {\n    throw TypeError('Invalid UUID');\n  }\n\n  return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;", "export { default as v1 } from './v1.js';\nexport { default as v3 } from './v3.js';\nexport { default as v4 } from './v4.js';\nexport { default as v5 } from './v5.js';\nexport { default as NIL } from './nil.js';\nexport { default as version } from './version.js';\nexport { default as validate } from './validate.js';\nexport { default as stringify } from './stringify.js';\nexport { default as parse } from './parse.js';", null, null, "'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n  var agent = new TunnelingAgent(options);\n  agent.request = http.request;\n  return agent;\n}\n\nfunction httpsOverHttp(options) {\n  var agent = new TunnelingAgent(options);\n  agent.request = http.request;\n  agent.createSocket = createSecureSocket;\n  agent.defaultPort = 443;\n  return agent;\n}\n\nfunction httpOverHttps(options) {\n  var agent = new TunnelingAgent(options);\n  agent.request = https.request;\n  return agent;\n}\n\nfunction httpsOverHttps(options) {\n  var agent = new TunnelingAgent(options);\n  agent.request = https.request;\n  agent.createSocket = createSecureSocket;\n  agent.defaultPort = 443;\n  return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n  var self = this;\n  self.options = options || {};\n  self.proxyOptions = self.options.proxy || {};\n  self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n  self.requests = [];\n  self.sockets = [];\n\n  self.on('free', function onFree(socket, host, port, localAddress) {\n    var options = toOptions(host, port, localAddress);\n    for (var i = 0, len = self.requests.length; i < len; ++i) {\n      var pending = self.requests[i];\n      if (pending.host === options.host && pending.port === options.port) {\n        // Detect the request to connect same origin server,\n        // reuse the connection.\n        self.requests.splice(i, 1);\n        pending.request.onSocket(socket);\n        return;\n      }\n    }\n    socket.destroy();\n    self.removeSocket(socket);\n  });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n  var self = this;\n  var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n  if (self.sockets.length >= this.maxSockets) {\n    // We are over limit so we'll add it to the queue.\n    self.requests.push(options);\n    return;\n  }\n\n  // If we are under maxSockets create a new one.\n  self.createSocket(options, function(socket) {\n    socket.on('free', onFree);\n    socket.on('close', onCloseOrRemove);\n    socket.on('agentRemove', onCloseOrRemove);\n    req.onSocket(socket);\n\n    function onFree() {\n      self.emit('free', socket, options);\n    }\n\n    function onCloseOrRemove(err) {\n      self.removeSocket(socket);\n      socket.removeListener('free', onFree);\n      socket.removeListener('close', onCloseOrRemove);\n      socket.removeListener('agentRemove', onCloseOrRemove);\n    }\n  });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n  var self = this;\n  var placeholder = {};\n  self.sockets.push(placeholder);\n\n  var connectOptions = mergeOptions({}, self.proxyOptions, {\n    method: 'CONNECT',\n    path: options.host + ':' + options.port,\n    agent: false,\n    headers: {\n      host: options.host + ':' + options.port\n    }\n  });\n  if (options.localAddress) {\n    connectOptions.localAddress = options.localAddress;\n  }\n  if (connectOptions.proxyAuth) {\n    connectOptions.headers = connectOptions.headers || {};\n    connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n        new Buffer(connectOptions.proxyAuth).toString('base64');\n  }\n\n  debug('making CONNECT request');\n  var connectReq = self.request(connectOptions);\n  connectReq.useChunkedEncodingByDefault = false; // for v0.6\n  connectReq.once('response', onResponse); // for v0.6\n  connectReq.once('upgrade', onUpgrade);   // for v0.6\n  connectReq.once('connect', onConnect);   // for v0.7 or later\n  connectReq.once('error', onError);\n  connectReq.end();\n\n  function onResponse(res) {\n    // Very hacky. This is necessary to avoid http-parser leaks.\n    res.upgrade = true;\n  }\n\n  function onUpgrade(res, socket, head) {\n    // Hacky.\n    process.nextTick(function() {\n      onConnect(res, socket, head);\n    });\n  }\n\n  function onConnect(res, socket, head) {\n    connectReq.removeAllListeners();\n    socket.removeAllListeners();\n\n    if (res.statusCode !== 200) {\n      debug('tunneling socket could not be established, statusCode=%d',\n        res.statusCode);\n      socket.destroy();\n      var error = new Error('tunneling socket could not be established, ' +\n        'statusCode=' + res.statusCode);\n      error.code = 'ECONNRESET';\n      options.request.emit('error', error);\n      self.removeSocket(placeholder);\n      return;\n    }\n    if (head.length > 0) {\n      debug('got illegal response body from proxy');\n      socket.destroy();\n      var error = new Error('got illegal response body from proxy');\n      error.code = 'ECONNRESET';\n      options.request.emit('error', error);\n      self.removeSocket(placeholder);\n      return;\n    }\n    debug('tunneling connection has established');\n    self.sockets[self.sockets.indexOf(placeholder)] = socket;\n    return cb(socket);\n  }\n\n  function onError(cause) {\n    connectReq.removeAllListeners();\n\n    debug('tunneling socket could not be established, cause=%s\\n',\n          cause.message, cause.stack);\n    var error = new Error('tunneling socket could not be established, ' +\n                          'cause=' + cause.message);\n    error.code = 'ECONNRESET';\n    options.request.emit('error', error);\n    self.removeSocket(placeholder);\n  }\n};\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n  var pos = this.sockets.indexOf(socket)\n  if (pos === -1) {\n    return;\n  }\n  this.sockets.splice(pos, 1);\n\n  var pending = this.requests.shift();\n  if (pending) {\n    // If we have pending requests and a socket gets closed a new one\n    // needs to be created to take over in the pool for the one that closed.\n    this.createSocket(pending, function(socket) {\n      pending.request.onSocket(socket);\n    });\n  }\n};\n\nfunction createSecureSocket(options, cb) {\n  var self = this;\n  TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n    var hostHeader = options.request.getHeader('host');\n    var tlsOptions = mergeOptions({}, self.options, {\n      socket: socket,\n      servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n    });\n\n    // 0 is dummy port for v0.6\n    var secureSocket = tls.connect(0, tlsOptions);\n    self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n    cb(secureSocket);\n  });\n}\n\n\nfunction toOptions(host, port, localAddress) {\n  if (typeof host === 'string') { // since v0.10\n    return {\n      host: host,\n      port: port,\n      localAddress: localAddress\n    };\n  }\n  return host; // for v0.11 or later\n}\n\nfunction mergeOptions(target) {\n  for (var i = 1, len = arguments.length; i < len; ++i) {\n    var overrides = arguments[i];\n    if (typeof overrides === 'object') {\n      var keys = Object.keys(overrides);\n      for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n        var k = keys[j];\n        if (overrides[k] !== undefined) {\n          target[k] = overrides[k];\n        }\n      }\n    }\n  }\n  return target;\n}\n\n\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n  debug = function() {\n    var args = Array.prototype.slice.call(arguments);\n    if (typeof args[0] === 'string') {\n      args[0] = 'TUNNEL: ' + args[0];\n    } else {\n      args.unshift('TUNNEL:');\n    }\n    console.error.apply(console, args);\n  }\n} else {\n  debug = function() {};\n}\nexports.debug = debug; // for test\n", "module.exports = require('./lib/tunnel');\n", null, null, null, null, null, null, "/** Action entry point */\nimport { npmPublish } from \"../index.js\";\nimport * as core from \"./core.js\";\n\n/** Run the action. */\nasync function run(): Promise<void> {\n  const results = await npmPublish({\n    token: core.getRequiredSecretInput(\"token\"),\n    registry: core.getInput(\"registry\"),\n    package: core.getInput(\"package\"),\n    tag: core.getInput(\"tag\"),\n    access: core.getInput(\"access\"),\n    provenance: core.getBooleanInput(\"provenance\"),\n    strategy: core.getInput(\"strategy\"),\n    ignoreScripts: core.getBooleanInput(\"ignore-scripts\"),\n    dryRun: core.getBooleanInput(\"dry-run\"),\n    logger: core.logger,\n    temporaryDirectory: process.env[\"RUNNER_TEMP\"],\n  });\n\n  core.setOutput(\"id\", results.id, \"\");\n  core.setOutput(\"name\", results.name);\n  core.setOutput(\"version\", results.version);\n  core.setOutput(\"type\", results.type, \"\");\n  core.setOutput(\"old-version\", results.oldVersion, \"\");\n  core.setOutput(\"registry\", results.registry.href);\n  core.setOutput(\"tag\", results.tag);\n  core.setOutput(\"access\", results.access, \"default\");\n  core.setOutput(\"strategy\", results.strategy);\n  core.setOutput(\"dry-run\", results.dryRun);\n}\n\n/** Main action entry point. */\nexport async function main(): Promise<void> {\n  try {\n    await run();\n  } catch (error) {\n    core.setFailed(error);\n  }\n}\n", "/** The possible access levels for an NPM package */\nexport type Access = typeof ACCESS_PUBLIC | typeof ACCESS_RESTRICTED;\nexport const ACCESS_PUBLIC = \"public\";\nexport const ACCESS_RESTRICTED = \"restricted\";\n\n/**\n * Version check strategy.\n *\n * - `upgrade`: the package will only be published if its version is higher than\n *   the existing version on the configured tag.\n * - `all`: the package will be published if its version is not yet published,\n *   even if its lower that the existing tag.\n */\nexport type Strategy = typeof STRATEGY_UPGRADE | typeof STRATEGY_ALL;\nexport const STRATEGY_UPGRADE = \"upgrade\";\nexport const STRATEGY_ALL = \"all\";\n\n/** An interface that can be used to log messages. */\nexport interface Logger {\n  error: (message: string | Error) => void;\n  info?: undefined | ((message: string) => void);\n  debug?: undefined | ((message: string) => void);\n}\n\n/** Options that determine how/whether the package is published. */\nexport interface Options {\n  /** The NPM access token to use when publishing. */\n  token: string;\n\n  /**\n   * The absolute or relative path of your package.\n   *\n   * Defaults to the package in the current working directory.\n   */\n  package?: string | undefined;\n\n  /**\n   * The NPM registry URL to use.\n   *\n   * Defaults to \"https://registry.npmjs.org/\".\n   *\n   * Can be set by the package.json's `publishConfig` field.\n   */\n  registry?: string | URL | undefined;\n\n  /**\n   * The tag to publish to.\n   *\n   * Defaults to \"latest\".\n   *\n   * Can be set by the package.json's `publishConfig` field.\n   */\n  tag?: string | undefined;\n\n  /**\n   * Package access.\n   *\n   * Determines whether the published package should be publicly visible, or\n   * restricted to members of your NPM organization. This only applies to scoped\n   * packages.\n   *\n   * Defaults to \"restricted\" for scoped packages, unless that package has been\n   * previously published as `public`.\n   *\n   * Can be set by the package.json's `publishConfig` field.\n   */\n  access?: Access | undefined;\n\n  /**\n   * Generate provenance statements.\n   *\n   * Publish must be run from a supported CI provider to succeed. When run from\n   * GitHub Actions, requires `id-token: write` permission.\n   *\n   * Defaults to `false`.\n   *\n   * Can be set by the package.json's `publishConfig` field.\n   */\n  provenance?: boolean | undefined;\n\n  /**\n   * Version check strategy.\n   *\n   * - `always` (default): the package will be published if its version is simply\n   *   not yet published.\n   * - `upgrade`: the package will only be published if its version is higher than\n   *   the existing version on the configured tag.\n   */\n  strategy?: Strategy | undefined;\n\n  /**\n   * Ignore lifecycle scripts.\n   *\n   * If `true` (default), `--ignore-scripts` will be passed to `npm`. If you\n   * rely on publish lifecycle scripts - i.e. `prepublishOnly`, `prepack`,\n   * `prepare`, `postpack`, `publish`, `postpublish` - you should set this to\n   * `false` or rework your build and publish workflow.\n   */\n  ignoreScripts?: boolean | undefined;\n\n  /**\n   * Pretend to publish, but don't actually upload to the registry.\n   *\n   * Defaults to `false`.\n   */\n  dryRun?: boolean | undefined;\n\n  /** Optional logger. */\n  logger?: Logger | undefined;\n\n  /**\n   * Temporary directory.\n   *\n   * Defaults to os.tmpdir()\n   */\n  temporaryDirectory?: string | undefined;\n}\n", "import type { Access, Strategy } from \"./options.js\";\nimport type { ReleaseType as SemverReleaseType } from \"semver\";\n\n/** Release type */\nexport type ReleaseType = SemverReleaseType | typeof INITIAL | typeof DIFFERENT;\n\nexport const INITIAL = \"initial\";\nexport const DIFFERENT = \"different\";\n\n/** Results of the publish */\nexport interface Results {\n  /**\n   * The identifier of the published package, if published. Format is\n   * `${packageName}@${version}`\n   */\n  id: string | undefined;\n\n  /** The name of the NPM package that was published */\n  name: string;\n\n  /** The version that was published */\n  version: string;\n\n  /** The type of version change that occurred, if any. */\n  type: ReleaseType | undefined;\n\n  /** The version number that was previously published to NPM, if any. */\n  oldVersion: string | undefined;\n\n  /** The registry where the package was published */\n  registry: URL;\n\n  /** The tag that the package was published to. */\n  tag: string;\n\n  /**\n   * Indicates whether the published package is publicly visible or restricted\n   * to members of your NPM organization.\n   *\n   * If package is scoped, undefined means npm's scoped package defaults. If a\n   * scoped package has previously been published as public, the default is\n   * public. Otherwise, it is restricted.\n   */\n  access: Access | undefined;\n\n  /** Version check strategy used. */\n  strategy: Strategy;\n\n  /** Whether this was a dry run (not published to NPM) */\n  dryRun: boolean;\n}\n", "import os from \"node:os\";\n\nimport {\n  ACCESS_PUBLIC,\n  ACCESS_RESTRICTED,\n  STRATEGY_ALL,\n  STRATEGY_UPGRADE,\n} from \"./options.js\";\n\nexport class InvalidPackageError extends TypeError {\n  public constructor(value: unknown) {\n    super(\n      `Package must be a directory, package.json, or .tgz file, got \"${String(\n        value\n      )}\"`\n    );\n    this.name = \"PackageJsonReadError\";\n  }\n}\n\nexport class PackageJsonReadError extends Error {\n  public constructor(manifestPath: string, originalError: unknown) {\n    const message = [\n      `Could not read package.json at ${manifestPath}`,\n      originalError instanceof Error ? originalError.message : \"\",\n    ]\n      .filter(Boolean)\n      .join(os.EOL);\n\n    super(message);\n    this.name = \"PackageJsonReadError\";\n  }\n}\n\nexport class PackageTarballReadError extends Error {\n  public constructor(tarballPath: string, originalError: unknown) {\n    const message = [\n      `Could not read package.json from ${tarballPath}`,\n      originalError instanceof Error ? originalError.message : \"\",\n    ]\n      .filter(Boolean)\n      .join(os.EOL);\n\n    super(message);\n    this.name = \"PackageTarballReadError\";\n  }\n}\n\nexport class PackageJsonParseError extends SyntaxError {\n  public constructor(packageSpec: string, originalError: unknown) {\n    const message = [\n      `Invalid JSON, could not parse package.json for ${packageSpec}`,\n      originalError instanceof Error ? originalError.message : \"\",\n    ]\n      .filter(Boolean)\n      .join(os.EOL);\n\n    super(message);\n    this.name = \"PackageJsonParseError\";\n  }\n}\n\nexport class InvalidPackageNameError extends TypeError {\n  public constructor(value: unknown) {\n    super(`Package name is not valid, got \"${String(value)}\"`);\n    this.name = \"InvalidPackageNameError\";\n  }\n}\n\nexport class InvalidPackageVersionError extends TypeError {\n  public constructor(value: unknown) {\n    super(\n      `Package version must be a valid semantic version, got \"${String(value)}\"`\n    );\n    this.name = \"InvalidPackageVersionError\";\n  }\n}\n\nexport class InvalidPackagePublishConfigError extends TypeError {\n  public constructor(value: unknown) {\n    super(`Publish config must be an object, got \"${String(value)}\"`);\n    this.name = \"InvalidPackagePublishConfigError\";\n  }\n}\n\nexport class InvalidRegistryUrlError extends TypeError {\n  public constructor(value: unknown) {\n    super(`Registry URL invalid, got \"${String(value)}\"`);\n    this.name = \"InvalidRegistryUrlError\";\n  }\n}\n\nexport class InvalidTokenError extends TypeError {\n  public constructor() {\n    super(\"Token must be a non-empty string.\");\n    this.name = \"InvalidTokenError\";\n  }\n}\n\nexport class InvalidTagError extends TypeError {\n  public constructor(value: unknown) {\n    super(`Tag must be a non-empty string, got \"${String(value)}\".`);\n    this.name = \"InvalidTagError\";\n  }\n}\n\nexport class InvalidAccessError extends TypeError {\n  public constructor(value: unknown) {\n    super(\n      `Access must be \"${ACCESS_PUBLIC}\" or \"${ACCESS_RESTRICTED}\", got \"${String(\n        value\n      )}\".`\n    );\n    this.name = \"InvalidAccessError\";\n  }\n}\n\nexport class InvalidStrategyError extends TypeError {\n  public constructor(value: unknown) {\n    super(\n      `Strategy must be \"${STRATEGY_UPGRADE}\" or \"${STRATEGY_ALL}\", got \"${String(\n        value\n      )}\".`\n    );\n    this.name = \"InvalidStrategyError\";\n  }\n}\n\nexport class NpmCallError extends Error {\n  public constructor(command: string, exitCode: number, stderr: string) {\n    super(\n      [\n        `Call to \"npm ${command}\" exited with non-zero exit code ${exitCode}`,\n        stderr,\n      ].join(os.EOL)\n    );\n    this.name = \"NpmCallError\";\n  }\n}\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport validatePackageName from \"validate-npm-package-name\";\nimport semverValid from \"semver/functions/valid\";\nimport { list as tarList } from \"tar/list\";\nimport type { ReadEntry } from \"tar\";\nimport * as errors from \"./errors.js\";\n\n/** A package manifest (package.json) and associated details. */\nexport interface PackageManifest {\n  packageSpec: string;\n  name: string;\n  version: string;\n  scope: string | undefined;\n  publishConfig: PackagePublishConfig | undefined;\n}\n\n/** Any publish configuration defined in package.json. */\nexport interface PackagePublishConfig {\n  tag?: string;\n  access?: string;\n  registry?: string;\n  provenance?: boolean;\n}\n\nconst SCOPE_RE = /^(@.+)\\/.+$/u;\n\nconst MANIFEST_BASENAME = \"package.json\";\nconst TARBALL_EXTNAME = \".tgz\";\n\nconst isManifest = (file: unknown): file is string => {\n  return typeof file === \"string\" && path.basename(file) === MANIFEST_BASENAME;\n};\n\nconst isDirectory = (file: unknown): file is string => {\n  return typeof file === \"string\" && path.extname(file) === \"\";\n};\n\nconst isTarball = (file: unknown): file is string => {\n  return typeof file === \"string\" && path.extname(file) === TARBALL_EXTNAME;\n};\n\nconst normalizeVersion = (version: unknown): string | undefined => {\n  return semverValid(version as string) ?? undefined;\n};\n\nconst validateName = (name: unknown): name is string => {\n  return validatePackageName(name as string).validForNewPackages;\n};\n\nconst readPackageJson = async (...pathSegments: string[]): Promise<string> => {\n  const file = path.resolve(...pathSegments);\n\n  try {\n    return await fs.readFile(file, \"utf8\");\n  } catch (error) {\n    throw new errors.PackageJsonReadError(file, error);\n  }\n};\n\nconst readTarballPackageJson = async (file: string): Promise<string> => {\n  const data: Buffer[] = [];\n  const onReadEntry = (entry: ReadEntry) => {\n    if (entry.path === \"package/package.json\") {\n      entry.on(\"data\", (chunk) => data.push(chunk));\n    }\n  };\n\n  try {\n    await tarList({ file, onReadEntry });\n\n    if (data.length === 0) {\n      throw new Error(\"package.json not found inside archive\");\n    }\n  } catch (error) {\n    throw new errors.PackageTarballReadError(file, error);\n  }\n\n  return Buffer.concat(data).toString();\n};\n\n/**\n * Reads the package manifest (package.json) and returns its parsed contents.\n *\n * @param packagePath The path to the package being published.\n * @returns The parsed package metadata.\n */\nexport async function readManifest(\n  packagePath: unknown\n): Promise<PackageManifest> {\n  let packageSpec: string | undefined;\n  let manifestContents: string;\n\n  if (!packagePath) {\n    packageSpec = \"\";\n    manifestContents = await readPackageJson(MANIFEST_BASENAME);\n  } else if (isManifest(packagePath)) {\n    packageSpec = path.resolve(path.dirname(packagePath));\n    manifestContents = await readPackageJson(packagePath);\n  } else if (isDirectory(packagePath)) {\n    packageSpec = path.resolve(packagePath);\n    manifestContents = await readPackageJson(packagePath, MANIFEST_BASENAME);\n  } else if (isTarball(packagePath)) {\n    packageSpec = path.resolve(packagePath);\n    manifestContents = await readTarballPackageJson(packageSpec);\n  } else {\n    throw new errors.InvalidPackageError(packagePath);\n  }\n\n  let manifestJson: Record<string, unknown>;\n  let name: unknown;\n  let version: unknown;\n  let publishConfig: unknown;\n\n  try {\n    manifestJson = JSON.parse(manifestContents) as Record<string, unknown>;\n    name = manifestJson[\"name\"];\n    version = normalizeVersion(manifestJson[\"version\"]);\n    publishConfig = manifestJson[\"publishConfig\"] ?? {};\n  } catch (error) {\n    throw new errors.PackageJsonParseError(packageSpec, error);\n  }\n\n  if (!validateName(name)) {\n    throw new errors.InvalidPackageNameError(name);\n  }\n\n  if (typeof version !== \"string\") {\n    throw new errors.InvalidPackageVersionError(manifestJson[\"version\"]);\n  }\n\n  if (\n    typeof publishConfig !== \"object\" ||\n    Array.isArray(publishConfig) ||\n    !publishConfig\n  ) {\n    throw new errors.InvalidPackagePublishConfigError(publishConfig);\n  }\n\n  return {\n    packageSpec,\n    name,\n    version,\n    publishConfig,\n    scope: SCOPE_RE.exec(name)?.[1],\n  };\n}\n", "import EE from 'events'\nimport fs from 'fs'\nimport { Minipass } from 'minipass'\n\nconst writev = fs.writev\n\nconst _autoClose = Symbol('_autoClose')\nconst _close = Symbol('_close')\nconst _ended = Symbol('_ended')\nconst _fd = Symbol('_fd')\nconst _finished = Symbol('_finished')\nconst _flags = Symbol('_flags')\nconst _flush = Symbol('_flush')\nconst _handleChunk = Symbol('_handleChunk')\nconst _makeBuf = Symbol('_makeBuf')\nconst _mode = Symbol('_mode')\nconst _needDrain = Symbol('_needDrain')\nconst _onerror = Symbol('_onerror')\nconst _onopen = Symbol('_onopen')\nconst _onread = Symbol('_onread')\nconst _onwrite = Symbol('_onwrite')\nconst _open = Symbol('_open')\nconst _path = Symbol('_path')\nconst _pos = Symbol('_pos')\nconst _queue = Symbol('_queue')\nconst _read = Symbol('_read')\nconst _readSize = Symbol('_readSize')\nconst _reading = Symbol('_reading')\nconst _remain = Symbol('_remain')\nconst _size = Symbol('_size')\nconst _write = Symbol('_write')\nconst _writing = Symbol('_writing')\nconst _defaultFlag = Symbol('_defaultFlag')\nconst _errored = Symbol('_errored')\n\nexport type ReadStreamOptions =\n  Minipass.Options<Minipass.ContiguousData> & {\n    fd?: number\n    readSize?: number\n    size?: number\n    autoClose?: boolean\n  }\n\nexport type ReadStreamEvents = Minipass.Events<Minipass.ContiguousData> & {\n  open: [fd: number]\n}\n\nexport class ReadStream extends Minipass<\n  Minipass.ContiguousData,\n  Buffer,\n  ReadStreamEvents\n> {\n  [_errored]: boolean = false;\n  [_fd]?: number;\n  [_path]: string;\n  [_readSize]: number;\n  [_reading]: boolean = false;\n  [_size]: number;\n  [_remain]: number;\n  [_autoClose]: boolean\n\n  constructor(path: string, opt: ReadStreamOptions) {\n    opt = opt || {}\n    super(opt)\n\n    this.readable = true\n    this.writable = false\n\n    if (typeof path !== 'string') {\n      throw new TypeError('path must be a string')\n    }\n\n    this[_errored] = false\n    this[_fd] = typeof opt.fd === 'number' ? opt.fd : undefined\n    this[_path] = path\n    this[_readSize] = opt.readSize || 16 * 1024 * 1024\n    this[_reading] = false\n    this[_size] = typeof opt.size === 'number' ? opt.size : Infinity\n    this[_remain] = this[_size]\n    this[_autoClose] =\n      typeof opt.autoClose === 'boolean' ? opt.autoClose : true\n\n    if (typeof this[_fd] === 'number') {\n      this[_read]()\n    } else {\n      this[_open]()\n    }\n  }\n\n  get fd() {\n    return this[_fd]\n  }\n\n  get path() {\n    return this[_path]\n  }\n\n  //@ts-ignore\n  write() {\n    throw new TypeError('this is a readable stream')\n  }\n\n  //@ts-ignore\n  end() {\n    throw new TypeError('this is a readable stream')\n  }\n\n  [_open]() {\n    fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))\n  }\n\n  [_onopen](er?: NodeJS.ErrnoException | null, fd?: number) {\n    if (er) {\n      this[_onerror](er)\n    } else {\n      this[_fd] = fd\n      this.emit('open', fd as number)\n      this[_read]()\n    }\n  }\n\n  [_makeBuf]() {\n    return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))\n  }\n\n  [_read]() {\n    if (!this[_reading]) {\n      this[_reading] = true\n      const buf = this[_makeBuf]()\n      /* c8 ignore start */\n      if (buf.length === 0) {\n        return process.nextTick(() => this[_onread](null, 0, buf))\n      }\n      /* c8 ignore stop */\n      fs.read(this[_fd] as number, buf, 0, buf.length, null, (er, br, b) =>\n        this[_onread](er, br, b),\n      )\n    }\n  }\n\n  [_onread](er?: NodeJS.ErrnoException | null, br?: number, buf?: Buffer) {\n    this[_reading] = false\n    if (er) {\n      this[_onerror](er)\n    } else if (this[_handleChunk](br as number, buf as Buffer)) {\n      this[_read]()\n    }\n  }\n\n  [_close]() {\n    if (this[_autoClose] && typeof this[_fd] === 'number') {\n      const fd = this[_fd]\n      this[_fd] = undefined\n      fs.close(fd, er =>\n        er ? this.emit('error', er) : this.emit('close'),\n      )\n    }\n  }\n\n  [_onerror](er: NodeJS.ErrnoException) {\n    this[_reading] = true\n    this[_close]()\n    this.emit('error', er)\n  }\n\n  [_handleChunk](br: number, buf: Buffer) {\n    let ret = false\n    // no effect if infinite\n    this[_remain] -= br\n    if (br > 0) {\n      ret = super.write(br < buf.length ? buf.subarray(0, br) : buf)\n    }\n\n    if (br === 0 || this[_remain] <= 0) {\n      ret = false\n      this[_close]()\n      super.end()\n    }\n\n    return ret\n  }\n\n  emit<Event extends keyof ReadStreamEvents>(\n    ev: Event,\n    ...args: ReadStreamEvents[Event]\n  ): boolean {\n    switch (ev) {\n      case 'prefinish':\n      case 'finish':\n        return false\n\n      case 'drain':\n        if (typeof this[_fd] === 'number') {\n          this[_read]()\n        }\n        return false\n\n      case 'error':\n        if (this[_errored]) {\n          return false\n        }\n        this[_errored] = true\n        return super.emit(ev, ...args)\n\n      default:\n        return super.emit(ev, ...args)\n    }\n  }\n}\n\nexport class ReadStreamSync extends ReadStream {\n  [_open]() {\n    let threw = true\n    try {\n      this[_onopen](null, fs.openSync(this[_path], 'r'))\n      threw = false\n    } finally {\n      if (threw) {\n        this[_close]()\n      }\n    }\n  }\n\n  [_read]() {\n    let threw = true\n    try {\n      if (!this[_reading]) {\n        this[_reading] = true\n        do {\n          const buf = this[_makeBuf]()\n          /* c8 ignore start */\n          const br =\n            buf.length === 0\n              ? 0\n              : fs.readSync(this[_fd] as number, buf, 0, buf.length, null)\n          /* c8 ignore stop */\n          if (!this[_handleChunk](br, buf)) {\n            break\n          }\n        } while (true)\n        this[_reading] = false\n      }\n      threw = false\n    } finally {\n      if (threw) {\n        this[_close]()\n      }\n    }\n  }\n\n  [_close]() {\n    if (this[_autoClose] && typeof this[_fd] === 'number') {\n      const fd = this[_fd]\n      this[_fd] = undefined\n      fs.closeSync(fd)\n      this.emit('close')\n    }\n  }\n}\n\nexport type WriteStreamOptions = {\n  fd?: number\n  autoClose?: boolean\n  mode?: number\n  captureRejections?: boolean\n  start?: number\n  flags?: string\n}\n\nexport class WriteStream extends EE {\n  readable: false = false\n  writable: boolean = true;\n  [_errored]: boolean = false;\n  [_writing]: boolean = false;\n  [_ended]: boolean = false;\n  [_queue]: Buffer[] = [];\n  [_needDrain]: boolean = false;\n  [_path]: string;\n  [_mode]: number;\n  [_autoClose]: boolean;\n  [_fd]?: number;\n  [_defaultFlag]: boolean;\n  [_flags]: string;\n  [_finished]: boolean = false;\n  [_pos]?: number\n\n  constructor(path: string, opt: WriteStreamOptions) {\n    opt = opt || {}\n    super(opt)\n    this[_path] = path\n    this[_fd] = typeof opt.fd === 'number' ? opt.fd : undefined\n    this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n    this[_pos] = typeof opt.start === 'number' ? opt.start : undefined\n    this[_autoClose] =\n      typeof opt.autoClose === 'boolean' ? opt.autoClose : true\n\n    // truncating makes no sense when writing into the middle\n    const defaultFlag = this[_pos] !== undefined ? 'r+' : 'w'\n    this[_defaultFlag] = opt.flags === undefined\n    this[_flags] = opt.flags === undefined ? defaultFlag : opt.flags\n\n    if (this[_fd] === undefined) {\n      this[_open]()\n    }\n  }\n\n  emit(ev: string, ...args: any[]) {\n    if (ev === 'error') {\n      if (this[_errored]) {\n        return false\n      }\n      this[_errored] = true\n    }\n    return super.emit(ev, ...args)\n  }\n\n  get fd() {\n    return this[_fd]\n  }\n\n  get path() {\n    return this[_path]\n  }\n\n  [_onerror](er: NodeJS.ErrnoException) {\n    this[_close]()\n    this[_writing] = true\n    this.emit('error', er)\n  }\n\n  [_open]() {\n    fs.open(this[_path], this[_flags], this[_mode], (er, fd) =>\n      this[_onopen](er, fd),\n    )\n  }\n\n  [_onopen](er?: null | NodeJS.ErrnoException, fd?: number) {\n    if (\n      this[_defaultFlag] &&\n      this[_flags] === 'r+' &&\n      er &&\n      er.code === 'ENOENT'\n    ) {\n      this[_flags] = 'w'\n      this[_open]()\n    } else if (er) {\n      this[_onerror](er)\n    } else {\n      this[_fd] = fd\n      this.emit('open', fd)\n      if (!this[_writing]) {\n        this[_flush]()\n      }\n    }\n  }\n\n  end(buf: string, enc?: BufferEncoding): this\n  end(buf?: Buffer, enc?: undefined): this\n  end(buf?: Buffer | string, enc?: BufferEncoding): this {\n    if (buf) {\n      //@ts-ignore\n      this.write(buf, enc)\n    }\n\n    this[_ended] = true\n\n    // synthetic after-write logic, where drain/finish live\n    if (\n      !this[_writing] &&\n      !this[_queue].length &&\n      typeof this[_fd] === 'number'\n    ) {\n      this[_onwrite](null, 0)\n    }\n    return this\n  }\n\n  write(buf: string, enc?: BufferEncoding): boolean\n  write(buf: Buffer, enc?: undefined): boolean\n  write(buf: Buffer | string, enc?: BufferEncoding): boolean {\n    if (typeof buf === 'string') {\n      buf = Buffer.from(buf, enc)\n    }\n\n    if (this[_ended]) {\n      this.emit('error', new Error('write() after end()'))\n      return false\n    }\n\n    if (this[_fd] === undefined || this[_writing] || this[_queue].length) {\n      this[_queue].push(buf)\n      this[_needDrain] = true\n      return false\n    }\n\n    this[_writing] = true\n    this[_write](buf)\n    return true\n  }\n\n  [_write](buf: Buffer) {\n    fs.write(\n      this[_fd] as number,\n      buf,\n      0,\n      buf.length,\n      this[_pos],\n      (er, bw) => this[_onwrite](er, bw),\n    )\n  }\n\n  [_onwrite](er?: null | NodeJS.ErrnoException, bw?: number) {\n    if (er) {\n      this[_onerror](er)\n    } else {\n      if (this[_pos] !== undefined && typeof bw === 'number') {\n        this[_pos] += bw\n      }\n      if (this[_queue].length) {\n        this[_flush]()\n      } else {\n        this[_writing] = false\n\n        if (this[_ended] && !this[_finished]) {\n          this[_finished] = true\n          this[_close]()\n          this.emit('finish')\n        } else if (this[_needDrain]) {\n          this[_needDrain] = false\n          this.emit('drain')\n        }\n      }\n    }\n  }\n\n  [_flush]() {\n    if (this[_queue].length === 0) {\n      if (this[_ended]) {\n        this[_onwrite](null, 0)\n      }\n    } else if (this[_queue].length === 1) {\n      this[_write](this[_queue].pop() as Buffer)\n    } else {\n      const iovec = this[_queue]\n      this[_queue] = []\n      writev(this[_fd] as number, iovec, this[_pos] as number, (er, bw) =>\n        this[_onwrite](er, bw),\n      )\n    }\n  }\n\n  [_close]() {\n    if (this[_autoClose] && typeof this[_fd] === 'number') {\n      const fd = this[_fd]\n      this[_fd] = undefined\n      fs.close(fd, er =>\n        er ? this.emit('error', er) : this.emit('close'),\n      )\n    }\n  }\n}\n\nexport class WriteStreamSync extends WriteStream {\n  [_open](): void {\n    let fd\n    // only wrap in a try{} block if we know we'll retry, to avoid\n    // the rethrow obscuring the error's source frame in most cases.\n    if (this[_defaultFlag] && this[_flags] === 'r+') {\n      try {\n        fd = fs.openSync(this[_path], this[_flags], this[_mode])\n      } catch (er) {\n        if ((er as NodeJS.ErrnoException)?.code === 'ENOENT') {\n          this[_flags] = 'w'\n          return this[_open]()\n        } else {\n          throw er\n        }\n      }\n    } else {\n      fd = fs.openSync(this[_path], this[_flags], this[_mode])\n    }\n\n    this[_onopen](null, fd)\n  }\n\n  [_close]() {\n    if (this[_autoClose] && typeof this[_fd] === 'number') {\n      const fd = this[_fd]\n      this[_fd] = undefined\n      fs.closeSync(fd)\n      this.emit('close')\n    }\n  }\n\n  [_write](buf: Buffer) {\n    // throw the original, but try to close if it fails\n    let threw = true\n    try {\n      this[_onwrite](\n        null,\n        fs.writeSync(this[_fd] as number, buf, 0, buf.length, this[_pos]),\n      )\n      threw = false\n    } finally {\n      if (threw) {\n        try {\n          this[_close]()\n        } catch {\n          // ok error\n        }\n      }\n    }\n  }\n}\n", "const proc =\n  typeof process === 'object' && process\n    ? process\n    : {\n        stdout: null,\n        stderr: null,\n      }\nimport { EventEmitter } from 'node:events'\nimport Stream from 'node:stream'\nimport { StringDecoder } from 'node:string_decoder'\n\n/**\n * Same as StringDecoder, but exposing the `lastNeed` flag on the type\n */\ntype SD = StringDecoder & { lastNeed: boolean }\n\nexport type { SD, Pipe, PipeProxyErrors }\n\n/**\n * Return true if the argument is a Minipass stream, Node stream, or something\n * else that Minipass can interact with.\n */\nexport const isStream = (\n  s: any\n): s is Minipass.Readable | Minipass.Writable =>\n  !!s &&\n  typeof s === 'object' &&\n  (s instanceof Minipass ||\n    s instanceof Stream ||\n    isReadable(s) ||\n    isWritable(s))\n\n/**\n * Return true if the argument is a valid {@link Minipass.Readable}\n */\nexport const isReadable = (s: any): s is Minipass.Readable =>\n  !!s &&\n  typeof s === 'object' &&\n  s instanceof EventEmitter &&\n  typeof (s as Minipass.Readable).pipe === 'function' &&\n  // node core Writable streams have a pipe() method, but it throws\n  (s as Minipass.Readable).pipe !== Stream.Writable.prototype.pipe\n\n/**\n * Return true if the argument is a valid {@link Minipass.Writable}\n */\nexport const isWritable = (s: any): s is Minipass.Readable =>\n  !!s &&\n  typeof s === 'object' &&\n  s instanceof EventEmitter &&\n  typeof (s as Minipass.Writable).write === 'function' &&\n  typeof (s as Minipass.Writable).end === 'function'\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFER = Symbol('buffer')\nconst PIPES = Symbol('pipes')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\n// internal event when stream is destroyed\nconst DESTROYED = Symbol('destroyed')\n// internal event when stream has an error\nconst ERROR = Symbol('error')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\nconst ABORT = Symbol('abort')\nconst ABORTED = Symbol('aborted')\nconst SIGNAL = Symbol('signal')\nconst DATALISTENERS = Symbol('dataListeners')\nconst DISCARDED = Symbol('discarded')\n\nconst defer = (fn: (...a: any[]) => any) => Promise.resolve().then(fn)\nconst nodefer = (fn: (...a: any[]) => any) => fn()\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\ntype EndishEvent = 'end' | 'finish' | 'prefinish'\nconst isEndish = (ev: any): ev is EndishEvent =>\n  ev === 'end' || ev === 'finish' || ev === 'prefinish'\n\nconst isArrayBufferLike = (b: any): b is ArrayBufferLike =>\n  b instanceof ArrayBuffer ||\n  (!!b &&\n    typeof b === 'object' &&\n    b.constructor &&\n    b.constructor.name === 'ArrayBuffer' &&\n    b.byteLength >= 0)\n\nconst isArrayBufferView = (b: any): b is ArrayBufferView =>\n  !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\n/**\n * Options that may be passed to stream.pipe()\n */\nexport interface PipeOptions {\n  /**\n   * end the destination stream when the source stream ends\n   */\n  end?: boolean\n  /**\n   * proxy errors from the source stream to the destination stream\n   */\n  proxyErrors?: boolean\n}\n\n/**\n * Internal class representing a pipe to a destination stream.\n *\n * @internal\n */\nclass Pipe<T extends unknown> {\n  src: Minipass<T>\n  dest: Minipass<any, T>\n  opts: PipeOptions\n  ondrain: () => any\n  constructor(\n    src: Minipass<T>,\n    dest: Minipass.Writable,\n    opts: PipeOptions\n  ) {\n    this.src = src\n    this.dest = dest as Minipass<any, T>\n    this.opts = opts\n    this.ondrain = () => src[RESUME]()\n    this.dest.on('drain', this.ondrain)\n  }\n  unpipe() {\n    this.dest.removeListener('drain', this.ondrain)\n  }\n  // only here for the prototype\n  /* c8 ignore start */\n  proxyErrors(_er: any) {}\n  /* c8 ignore stop */\n  end() {\n    this.unpipe()\n    if (this.opts.end) this.dest.end()\n  }\n}\n\n/**\n * Internal class representing a pipe to a destination stream where\n * errors are proxied.\n *\n * @internal\n */\nclass PipeProxyErrors<T> extends Pipe<T> {\n  unpipe() {\n    this.src.removeListener('error', this.proxyErrors)\n    super.unpipe()\n  }\n  constructor(\n    src: Minipass<T>,\n    dest: Minipass.Writable,\n    opts: PipeOptions\n  ) {\n    super(src, dest, opts)\n    this.proxyErrors = er => dest.emit('error', er)\n    src.on('error', this.proxyErrors)\n  }\n}\n\nexport namespace Minipass {\n  /**\n   * Encoding used to create a stream that outputs strings rather than\n   * Buffer objects.\n   */\n  export type Encoding = BufferEncoding | 'buffer' | null\n\n  /**\n   * Any stream that Minipass can pipe into\n   */\n  export type Writable =\n    | Minipass<any, any, any>\n    | NodeJS.WriteStream\n    | (NodeJS.WriteStream & { fd: number })\n    | (EventEmitter & {\n        end(): any\n        write(chunk: any, ...args: any[]): any\n      })\n\n  /**\n   * Any stream that can be read from\n   */\n  export type Readable =\n    | Minipass<any, any, any>\n    | NodeJS.ReadStream\n    | (NodeJS.ReadStream & { fd: number })\n    | (EventEmitter & {\n        pause(): any\n        resume(): any\n        pipe(...destArgs: any[]): any\n      })\n\n  /**\n   * Utility type that can be iterated sync or async\n   */\n  export type DualIterable<T> = Iterable<T> & AsyncIterable<T>\n\n  type EventArguments = Record<string | symbol, unknown[]>\n\n  /**\n   * The listing of events that a Minipass class can emit.\n   * Extend this when extending the Minipass class, and pass as\n   * the third template argument.  The key is the name of the event,\n   * and the value is the argument list.\n   *\n   * Any undeclared events will still be allowed, but the handler will get\n   * arguments as `unknown[]`.\n   */\n  export interface Events<RType extends any = Buffer>\n    extends EventArguments {\n    readable: []\n    data: [chunk: RType]\n    error: [er: unknown]\n    abort: [reason: unknown]\n    drain: []\n    resume: []\n    end: []\n    finish: []\n    prefinish: []\n    close: []\n    [DESTROYED]: [er?: unknown]\n    [ERROR]: [er: unknown]\n  }\n\n  /**\n   * String or buffer-like data that can be joined and sliced\n   */\n  export type ContiguousData =\n    | Buffer\n    | ArrayBufferLike\n    | ArrayBufferView\n    | string\n  export type BufferOrString = Buffer | string\n\n  /**\n   * Options passed to the Minipass constructor.\n   */\n  export type SharedOptions = {\n    /**\n     * Defer all data emission and other events until the end of the\n     * current tick, similar to Node core streams\n     */\n    async?: boolean\n    /**\n     * A signal which will abort the stream\n     */\n    signal?: AbortSignal\n    /**\n     * Output string encoding. Set to `null` or `'buffer'` (or omit) to\n     * emit Buffer objects rather than strings.\n     *\n     * Conflicts with `objectMode`\n     */\n    encoding?: BufferEncoding | null | 'buffer'\n    /**\n     * Output data exactly as it was written, supporting non-buffer/string\n     * data (such as arbitrary objects, falsey values, etc.)\n     *\n     * Conflicts with `encoding`\n     */\n    objectMode?: boolean\n  }\n\n  /**\n   * Options for a string encoded output\n   */\n  export type EncodingOptions = SharedOptions & {\n    encoding: BufferEncoding\n    objectMode?: false\n  }\n\n  /**\n   * Options for contiguous data buffer output\n   */\n  export type BufferOptions = SharedOptions & {\n    encoding?: null | 'buffer'\n    objectMode?: false\n  }\n\n  /**\n   * Options for objectMode arbitrary output\n   */\n  export type ObjectModeOptions = SharedOptions & {\n    objectMode: true\n    encoding?: null\n  }\n\n  /**\n   * Utility type to determine allowed options based on read type\n   */\n  export type Options<T> =\n    | ObjectModeOptions\n    | (T extends string\n        ? EncodingOptions\n        : T extends Buffer\n        ? BufferOptions\n        : SharedOptions)\n}\n\nconst isObjectModeOptions = (\n  o: Minipass.SharedOptions\n): o is Minipass.ObjectModeOptions => !!o.objectMode\n\nconst isEncodingOptions = (\n  o: Minipass.SharedOptions\n): o is Minipass.EncodingOptions =>\n  !o.objectMode && !!o.encoding && o.encoding !== 'buffer'\n\n/**\n * Main export, the Minipass class\n *\n * `RType` is the type of data emitted, defaults to Buffer\n *\n * `WType` is the type of data to be written, if RType is buffer or string,\n * then any {@link Minipass.ContiguousData} is allowed.\n *\n * `Events` is the set of event handler signatures that this object\n * will emit, see {@link Minipass.Events}\n */\nexport class Minipass<\n    RType extends unknown = Buffer,\n    WType extends unknown = RType extends Minipass.BufferOrString\n      ? Minipass.ContiguousData\n      : RType,\n    Events extends Minipass.Events<RType> = Minipass.Events<RType>\n  >\n  extends EventEmitter\n  implements Minipass.DualIterable<RType>\n{\n  [FLOWING]: boolean = false;\n  [PAUSED]: boolean = false;\n  [PIPES]: Pipe<RType>[] = [];\n  [BUFFER]: RType[] = [];\n  [OBJECTMODE]: boolean;\n  [ENCODING]: BufferEncoding | null;\n  [ASYNC]: boolean;\n  [DECODER]: SD | null;\n  [EOF]: boolean = false;\n  [EMITTED_END]: boolean = false;\n  [EMITTING_END]: boolean = false;\n  [CLOSED]: boolean = false;\n  [EMITTED_ERROR]: unknown = null;\n  [BUFFERLENGTH]: number = 0;\n  [DESTROYED]: boolean = false;\n  [SIGNAL]?: AbortSignal;\n  [ABORTED]: boolean = false;\n  [DATALISTENERS]: number = 0;\n  [DISCARDED]: boolean = false\n\n  /**\n   * true if the stream can be written\n   */\n  writable: boolean = true\n  /**\n   * true if the stream can be read\n   */\n  readable: boolean = true\n\n  /**\n   * If `RType` is Buffer, then options do not need to be provided.\n   * Otherwise, an options object must be provided to specify either\n   * {@link Minipass.SharedOptions.objectMode} or\n   * {@link Minipass.SharedOptions.encoding}, as appropriate.\n   */\n  constructor(\n    ...args:\n      | [Minipass.ObjectModeOptions]\n      | (RType extends Buffer\n          ? [] | [Minipass.Options<RType>]\n          : [Minipass.Options<RType>])\n  ) {\n    const options: Minipass.Options<RType> = (args[0] ||\n      {}) as Minipass.Options<RType>\n    super()\n    if (options.objectMode && typeof options.encoding === 'string') {\n      throw new TypeError(\n        'Encoding and objectMode may not be used together'\n      )\n    }\n    if (isObjectModeOptions(options)) {\n      this[OBJECTMODE] = true\n      this[ENCODING] = null\n    } else if (isEncodingOptions(options)) {\n      this[ENCODING] = options.encoding\n      this[OBJECTMODE] = false\n    } else {\n      this[OBJECTMODE] = false\n      this[ENCODING] = null\n    }\n    this[ASYNC] = !!options.async\n    this[DECODER] = this[ENCODING]\n      ? (new StringDecoder(this[ENCODING]) as SD)\n      : null\n\n    //@ts-ignore - private option for debugging and testing\n    if (options && options.debugExposeBuffer === true) {\n      Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] })\n    }\n    //@ts-ignore - private option for debugging and testing\n    if (options && options.debugExposePipes === true) {\n      Object.defineProperty(this, 'pipes', { get: () => this[PIPES] })\n    }\n\n    const { signal } = options\n    if (signal) {\n      this[SIGNAL] = signal\n      if (signal.aborted) {\n        this[ABORT]()\n      } else {\n        signal.addEventListener('abort', () => this[ABORT]())\n      }\n    }\n  }\n\n  /**\n   * The amount of data stored in the buffer waiting to be read.\n   *\n   * For Buffer strings, this will be the total byte length.\n   * For string encoding streams, this will be the string character length,\n   * according to JavaScript's `string.length` logic.\n   * For objectMode streams, this is a count of the items waiting to be\n   * emitted.\n   */\n  get bufferLength() {\n    return this[BUFFERLENGTH]\n  }\n\n  /**\n   * The `BufferEncoding` currently in use, or `null`\n   */\n  get encoding() {\n    return this[ENCODING]\n  }\n\n  /**\n   * @deprecated - This is a read only property\n   */\n  set encoding(_enc) {\n    throw new Error('Encoding must be set at instantiation time')\n  }\n\n  /**\n   * @deprecated - Encoding may only be set at instantiation time\n   */\n  setEncoding(_enc: Minipass.Encoding) {\n    throw new Error('Encoding must be set at instantiation time')\n  }\n\n  /**\n   * True if this is an objectMode stream\n   */\n  get objectMode() {\n    return this[OBJECTMODE]\n  }\n\n  /**\n   * @deprecated - This is a read-only property\n   */\n  set objectMode(_om) {\n    throw new Error('objectMode must be set at instantiation time')\n  }\n\n  /**\n   * true if this is an async stream\n   */\n  get ['async'](): boolean {\n    return this[ASYNC]\n  }\n  /**\n   * Set to true to make this stream async.\n   *\n   * Once set, it cannot be unset, as this would potentially cause incorrect\n   * behavior.  Ie, a sync stream can be made async, but an async stream\n   * cannot be safely made sync.\n   */\n  set ['async'](a: boolean) {\n    this[ASYNC] = this[ASYNC] || !!a\n  }\n\n  // drop everything and get out of the flow completely\n  [ABORT]() {\n    this[ABORTED] = true\n    this.emit('abort', this[SIGNAL]?.reason)\n    this.destroy(this[SIGNAL]?.reason)\n  }\n\n  /**\n   * True if the stream has been aborted.\n   */\n  get aborted() {\n    return this[ABORTED]\n  }\n  /**\n   * No-op setter. Stream aborted status is set via the AbortSignal provided\n   * in the constructor options.\n   */\n  set aborted(_) {}\n\n  /**\n   * Write data into the stream\n   *\n   * If the chunk written is a string, and encoding is not specified, then\n   * `utf8` will be assumed. If the stream encoding matches the encoding of\n   * a written string, and the state of the string decoder allows it, then\n   * the string will be passed through to either the output or the internal\n   * buffer without any processing. Otherwise, it will be turned into a\n   * Buffer object for processing into the desired encoding.\n   *\n   * If provided, `cb` function is called immediately before return for\n   * sync streams, or on next tick for async streams, because for this\n   * base class, a chunk is considered \"processed\" once it is accepted\n   * and either emitted or buffered. That is, the callback does not indicate\n   * that the chunk has been eventually emitted, though of course child\n   * classes can override this function to do whatever processing is required\n   * and call `super.write(...)` only once processing is completed.\n   */\n  write(chunk: WType, cb?: () => void): boolean\n  write(\n    chunk: WType,\n    encoding?: Minipass.Encoding,\n    cb?: () => void\n  ): boolean\n  write(\n    chunk: WType,\n    encoding?: Minipass.Encoding | (() => void),\n    cb?: () => void\n  ): boolean {\n    if (this[ABORTED]) return false\n    if (this[EOF]) throw new Error('write after end')\n\n    if (this[DESTROYED]) {\n      this.emit(\n        'error',\n        Object.assign(\n          new Error('Cannot call write after a stream was destroyed'),\n          { code: 'ERR_STREAM_DESTROYED' }\n        )\n      )\n      return true\n    }\n\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = 'utf8'\n    }\n\n    if (!encoding) encoding = 'utf8'\n\n    const fn = this[ASYNC] ? defer : nodefer\n\n    // convert array buffers and typed array views into buffers\n    // at some point in the future, we may want to do the opposite!\n    // leave strings and buffers as-is\n    // anything is only allowed if in object mode, so throw\n    if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n      if (isArrayBufferView(chunk)) {\n        //@ts-ignore - sinful unsafe type changing\n        chunk = Buffer.from(\n          chunk.buffer,\n          chunk.byteOffset,\n          chunk.byteLength\n        )\n      } else if (isArrayBufferLike(chunk)) {\n        //@ts-ignore - sinful unsafe type changing\n        chunk = Buffer.from(chunk)\n      } else if (typeof chunk !== 'string') {\n        throw new Error(\n          'Non-contiguous data written to non-objectMode stream'\n        )\n      }\n    }\n\n    // handle object mode up front, since it's simpler\n    // this yields better performance, fewer checks later.\n    if (this[OBJECTMODE]) {\n      // maybe impossible?\n      /* c8 ignore start */\n      if (this[FLOWING] && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n      /* c8 ignore stop */\n\n      if (this[FLOWING]) this.emit('data', chunk as unknown as RType)\n      else this[BUFFERPUSH](chunk as unknown as RType)\n\n      if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n      if (cb) fn(cb)\n\n      return this[FLOWING]\n    }\n\n    // at this point the chunk is a buffer or string\n    // don't buffer it up or send it to the decoder\n    if (!(chunk as Minipass.BufferOrString).length) {\n      if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n      if (cb) fn(cb)\n      return this[FLOWING]\n    }\n\n    // fast-path writing strings of same encoding to a stream with\n    // an empty buffer, skipping the buffer/decoder dance\n    if (\n      typeof chunk === 'string' &&\n      // unless it is a string already ready for us to use\n      !(encoding === this[ENCODING] && !this[DECODER]?.lastNeed)\n    ) {\n      //@ts-ignore - sinful unsafe type change\n      chunk = Buffer.from(chunk, encoding)\n    }\n\n    if (Buffer.isBuffer(chunk) && this[ENCODING]) {\n      //@ts-ignore - sinful unsafe type change\n      chunk = this[DECODER].write(chunk)\n    }\n\n    // Note: flushing CAN potentially switch us into not-flowing mode\n    if (this[FLOWING] && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n\n    if (this[FLOWING]) this.emit('data', chunk as unknown as RType)\n    else this[BUFFERPUSH](chunk as unknown as RType)\n\n    if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n    if (cb) fn(cb)\n\n    return this[FLOWING]\n  }\n\n  /**\n   * Low-level explicit read method.\n   *\n   * In objectMode, the argument is ignored, and one item is returned if\n   * available.\n   *\n   * `n` is the number of bytes (or in the case of encoding streams,\n   * characters) to consume. If `n` is not provided, then the entire buffer\n   * is returned, or `null` is returned if no data is available.\n   *\n   * If `n` is greater that the amount of data in the internal buffer,\n   * then `null` is returned.\n   */\n  read(n?: number | null): RType | null {\n    if (this[DESTROYED]) return null\n    this[DISCARDED] = false\n\n    if (\n      this[BUFFERLENGTH] === 0 ||\n      n === 0 ||\n      (n && n > this[BUFFERLENGTH])\n    ) {\n      this[MAYBE_EMIT_END]()\n      return null\n    }\n\n    if (this[OBJECTMODE]) n = null\n\n    if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {\n      // not object mode, so if we have an encoding, then RType is string\n      // otherwise, must be Buffer\n      this[BUFFER] = [\n        (this[ENCODING]\n          ? this[BUFFER].join('')\n          : Buffer.concat(\n              this[BUFFER] as Buffer[],\n              this[BUFFERLENGTH]\n            )) as RType,\n      ]\n    }\n\n    const ret = this[READ](n || null, this[BUFFER][0] as RType)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [READ](n: number | null, chunk: RType) {\n    if (this[OBJECTMODE]) this[BUFFERSHIFT]()\n    else {\n      const c = chunk as Minipass.BufferOrString\n      if (n === c.length || n === null) this[BUFFERSHIFT]()\n      else if (typeof c === 'string') {\n        this[BUFFER][0] = c.slice(n) as RType\n        chunk = c.slice(0, n) as RType\n        this[BUFFERLENGTH] -= n\n      } else {\n        this[BUFFER][0] = c.subarray(n) as RType\n        chunk = c.subarray(0, n) as RType\n        this[BUFFERLENGTH] -= n\n      }\n    }\n\n    this.emit('data', chunk)\n\n    if (!this[BUFFER].length && !this[EOF]) this.emit('drain')\n\n    return chunk\n  }\n\n  /**\n   * End the stream, optionally providing a final write.\n   *\n   * See {@link Minipass#write} for argument descriptions\n   */\n  end(cb?: () => void): this\n  end(chunk: WType, cb?: () => void): this\n  end(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): this\n  end(\n    chunk?: WType | (() => void),\n    encoding?: Minipass.Encoding | (() => void),\n    cb?: () => void\n  ): this {\n    if (typeof chunk === 'function') {\n      cb = chunk as () => void\n      chunk = undefined\n    }\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = 'utf8'\n    }\n    if (chunk !== undefined) this.write(chunk, encoding)\n    if (cb) this.once('end', cb)\n    this[EOF] = true\n    this.writable = false\n\n    // if we haven't written anything, then go ahead and emit,\n    // even if we're not reading.\n    // we'll re-emit if a new 'end' listener is added anyway.\n    // This makes MP more suitable to write-only use cases.\n    if (this[FLOWING] || !this[PAUSED]) this[MAYBE_EMIT_END]()\n    return this\n  }\n\n  // don't let the internal resume be overwritten\n  [RESUME]() {\n    if (this[DESTROYED]) return\n\n    if (!this[DATALISTENERS] && !this[PIPES].length) {\n      this[DISCARDED] = true\n    }\n    this[PAUSED] = false\n    this[FLOWING] = true\n    this.emit('resume')\n    if (this[BUFFER].length) this[FLUSH]()\n    else if (this[EOF]) this[MAYBE_EMIT_END]()\n    else this.emit('drain')\n  }\n\n  /**\n   * Resume the stream if it is currently in a paused state\n   *\n   * If called when there are no pipe destinations or `data` event listeners,\n   * this will place the stream in a \"discarded\" state, where all data will\n   * be thrown away. The discarded state is removed if a pipe destination or\n   * data handler is added, if pause() is called, or if any synchronous or\n   * asynchronous iteration is started.\n   */\n  resume() {\n    return this[RESUME]()\n  }\n\n  /**\n   * Pause the stream\n   */\n  pause() {\n    this[FLOWING] = false\n    this[PAUSED] = true\n    this[DISCARDED] = false\n  }\n\n  /**\n   * true if the stream has been forcibly destroyed\n   */\n  get destroyed() {\n    return this[DESTROYED]\n  }\n\n  /**\n   * true if the stream is currently in a flowing state, meaning that\n   * any writes will be immediately emitted.\n   */\n  get flowing() {\n    return this[FLOWING]\n  }\n\n  /**\n   * true if the stream is currently in a paused state\n   */\n  get paused() {\n    return this[PAUSED]\n  }\n\n  [BUFFERPUSH](chunk: RType) {\n    if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1\n    else this[BUFFERLENGTH] += (chunk as Minipass.BufferOrString).length\n    this[BUFFER].push(chunk)\n  }\n\n  [BUFFERSHIFT](): RType {\n    if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1\n    else\n      this[BUFFERLENGTH] -= (\n        this[BUFFER][0] as Minipass.BufferOrString\n      ).length\n    return this[BUFFER].shift() as RType\n  }\n\n  [FLUSH](noDrain: boolean = false) {\n    do {} while (\n      this[FLUSHCHUNK](this[BUFFERSHIFT]()) &&\n      this[BUFFER].length\n    )\n\n    if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain')\n  }\n\n  [FLUSHCHUNK](chunk: RType) {\n    this.emit('data', chunk)\n    return this[FLOWING]\n  }\n\n  /**\n   * Pipe all data emitted by this stream into the destination provided.\n   *\n   * Triggers the flow of data.\n   */\n  pipe<W extends Minipass.Writable>(dest: W, opts?: PipeOptions): W {\n    if (this[DESTROYED]) return dest\n    this[DISCARDED] = false\n\n    const ended = this[EMITTED_END]\n    opts = opts || {}\n    if (dest === proc.stdout || dest === proc.stderr) opts.end = false\n    else opts.end = opts.end !== false\n    opts.proxyErrors = !!opts.proxyErrors\n\n    // piping an ended stream ends immediately\n    if (ended) {\n      if (opts.end) dest.end()\n    } else {\n      // \"as\" here just ignores the WType, which pipes don't care about,\n      // since they're only consuming from us, and writing to the dest\n      this[PIPES].push(\n        !opts.proxyErrors\n          ? new Pipe<RType>(this as Minipass<RType>, dest, opts)\n          : new PipeProxyErrors<RType>(this as Minipass<RType>, dest, opts)\n      )\n      if (this[ASYNC]) defer(() => this[RESUME]())\n      else this[RESUME]()\n    }\n\n    return dest\n  }\n\n  /**\n   * Fully unhook a piped destination stream.\n   *\n   * If the destination stream was the only consumer of this stream (ie,\n   * there are no other piped destinations or `'data'` event listeners)\n   * then the flow of data will stop until there is another consumer or\n   * {@link Minipass#resume} is explicitly called.\n   */\n  unpipe<W extends Minipass.Writable>(dest: W) {\n    const p = this[PIPES].find(p => p.dest === dest)\n    if (p) {\n      if (this[PIPES].length === 1) {\n        if (this[FLOWING] && this[DATALISTENERS] === 0) {\n          this[FLOWING] = false\n        }\n        this[PIPES] = []\n      } else this[PIPES].splice(this[PIPES].indexOf(p), 1)\n      p.unpipe()\n    }\n  }\n\n  /**\n   * Alias for {@link Minipass#on}\n   */\n  addListener<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ): this {\n    return this.on(ev, handler)\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.on`, with the following\n   * behavior differences to prevent data loss and unnecessary hangs:\n   *\n   * - Adding a 'data' event handler will trigger the flow of data\n   *\n   * - Adding a 'readable' event handler when there is data waiting to be read\n   *   will cause 'readable' to be emitted immediately.\n   *\n   * - Adding an 'endish' event handler ('end', 'finish', etc.) which has\n   *   already passed will cause the event to be emitted immediately and all\n   *   handlers removed.\n   *\n   * - Adding an 'error' event handler after an error has been emitted will\n   *   cause the event to be re-emitted immediately with the error previously\n   *   raised.\n   */\n  on<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ): this {\n    const ret = super.on(\n      ev as string | symbol,\n      handler as (...a: any[]) => any\n    )\n    if (ev === 'data') {\n      this[DISCARDED] = false\n      this[DATALISTENERS]++\n      if (!this[PIPES].length && !this[FLOWING]) {\n        this[RESUME]()\n      }\n    } else if (ev === 'readable' && this[BUFFERLENGTH] !== 0) {\n      super.emit('readable')\n    } else if (isEndish(ev) && this[EMITTED_END]) {\n      super.emit(ev)\n      this.removeAllListeners(ev)\n    } else if (ev === 'error' && this[EMITTED_ERROR]) {\n      const h = handler as (...a: Events['error']) => any\n      if (this[ASYNC]) defer(() => h.call(this, this[EMITTED_ERROR]))\n      else h.call(this, this[EMITTED_ERROR])\n    }\n    return ret\n  }\n\n  /**\n   * Alias for {@link Minipass#off}\n   */\n  removeListener<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ) {\n    return this.off(ev, handler)\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.off`\n   *\n   * If a 'data' event handler is removed, and it was the last consumer\n   * (ie, there are no pipe destinations or other 'data' event listeners),\n   * then the flow of data will stop until there is another consumer or\n   * {@link Minipass#resume} is explicitly called.\n   */\n  off<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ) {\n    const ret = super.off(\n      ev as string | symbol,\n      handler as (...a: any[]) => any\n    )\n    // if we previously had listeners, and now we don't, and we don't\n    // have any pipes, then stop the flow, unless it's been explicitly\n    // put in a discarded flowing state via stream.resume().\n    if (ev === 'data') {\n      this[DATALISTENERS] = this.listeners('data').length\n      if (\n        this[DATALISTENERS] === 0 &&\n        !this[DISCARDED] &&\n        !this[PIPES].length\n      ) {\n        this[FLOWING] = false\n      }\n    }\n    return ret\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.removeAllListeners`\n   *\n   * If all 'data' event handlers are removed, and they were the last consumer\n   * (ie, there are no pipe destinations), then the flow of data will stop\n   * until there is another consumer or {@link Minipass#resume} is explicitly\n   * called.\n   */\n  removeAllListeners<Event extends keyof Events>(ev?: Event) {\n    const ret = super.removeAllListeners(ev as string | symbol | undefined)\n    if (ev === 'data' || ev === undefined) {\n      this[DATALISTENERS] = 0\n      if (!this[DISCARDED] && !this[PIPES].length) {\n        this[FLOWING] = false\n      }\n    }\n    return ret\n  }\n\n  /**\n   * true if the 'end' event has been emitted\n   */\n  get emittedEnd() {\n    return this[EMITTED_END]\n  }\n\n  [MAYBE_EMIT_END]() {\n    if (\n      !this[EMITTING_END] &&\n      !this[EMITTED_END] &&\n      !this[DESTROYED] &&\n      this[BUFFER].length === 0 &&\n      this[EOF]\n    ) {\n      this[EMITTING_END] = true\n      this.emit('end')\n      this.emit('prefinish')\n      this.emit('finish')\n      if (this[CLOSED]) this.emit('close')\n      this[EMITTING_END] = false\n    }\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.emit`, with the following\n   * behavior differences to prevent data loss and unnecessary hangs:\n   *\n   * If the stream has been destroyed, and the event is something other\n   * than 'close' or 'error', then `false` is returned and no handlers\n   * are called.\n   *\n   * If the event is 'end', and has already been emitted, then the event\n   * is ignored. If the stream is in a paused or non-flowing state, then\n   * the event will be deferred until data flow resumes. If the stream is\n   * async, then handlers will be called on the next tick rather than\n   * immediately.\n   *\n   * If the event is 'close', and 'end' has not yet been emitted, then\n   * the event will be deferred until after 'end' is emitted.\n   *\n   * If the event is 'error', and an AbortSignal was provided for the stream,\n   * and there are no listeners, then the event is ignored, matching the\n   * behavior of node core streams in the presense of an AbortSignal.\n   *\n   * If the event is 'finish' or 'prefinish', then all listeners will be\n   * removed after emitting the event, to prevent double-firing.\n   */\n  emit<Event extends keyof Events>(\n    ev: Event,\n    ...args: Events[Event]\n  ): boolean {\n    const data = args[0]\n    // error and close are only events allowed after calling destroy()\n    if (\n      ev !== 'error' &&\n      ev !== 'close' &&\n      ev !== DESTROYED &&\n      this[DESTROYED]\n    ) {\n      return false\n    } else if (ev === 'data') {\n      return !this[OBJECTMODE] && !data\n        ? false\n        : this[ASYNC]\n        ? (defer(() => this[EMITDATA](data as RType)), true)\n        : this[EMITDATA](data as RType)\n    } else if (ev === 'end') {\n      return this[EMITEND]()\n    } else if (ev === 'close') {\n      this[CLOSED] = true\n      // don't emit close before 'end' and 'finish'\n      if (!this[EMITTED_END] && !this[DESTROYED]) return false\n      const ret = super.emit('close')\n      this.removeAllListeners('close')\n      return ret\n    } else if (ev === 'error') {\n      this[EMITTED_ERROR] = data\n      super.emit(ERROR, data)\n      const ret =\n        !this[SIGNAL] || this.listeners('error').length\n          ? super.emit('error', data)\n          : false\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'resume') {\n      const ret = super.emit('resume')\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'finish' || ev === 'prefinish') {\n      const ret = super.emit(ev)\n      this.removeAllListeners(ev)\n      return ret\n    }\n\n    // Some other unknown event\n    const ret = super.emit(ev as string, ...args)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITDATA](data: RType) {\n    for (const p of this[PIPES]) {\n      if (p.dest.write(data as RType) === false) this.pause()\n    }\n    const ret = this[DISCARDED] ? false : super.emit('data', data)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITEND]() {\n    if (this[EMITTED_END]) return false\n\n    this[EMITTED_END] = true\n    this.readable = false\n    return this[ASYNC]\n      ? (defer(() => this[EMITEND2]()), true)\n      : this[EMITEND2]()\n  }\n\n  [EMITEND2]() {\n    if (this[DECODER]) {\n      const data = this[DECODER].end()\n      if (data) {\n        for (const p of this[PIPES]) {\n          p.dest.write(data as RType)\n        }\n        if (!this[DISCARDED]) super.emit('data', data)\n      }\n    }\n\n    for (const p of this[PIPES]) {\n      p.end()\n    }\n    const ret = super.emit('end')\n    this.removeAllListeners('end')\n    return ret\n  }\n\n  /**\n   * Return a Promise that resolves to an array of all emitted data once\n   * the stream ends.\n   */\n  async collect(): Promise<RType[] & { dataLength: number }> {\n    const buf: RType[] & { dataLength: number } = Object.assign([], {\n      dataLength: 0,\n    })\n    if (!this[OBJECTMODE]) buf.dataLength = 0\n    // set the promise first, in case an error is raised\n    // by triggering the flow here.\n    const p = this.promise()\n    this.on('data', c => {\n      buf.push(c)\n      if (!this[OBJECTMODE])\n        buf.dataLength += (c as Minipass.BufferOrString).length\n    })\n    await p\n    return buf\n  }\n\n  /**\n   * Return a Promise that resolves to the concatenation of all emitted data\n   * once the stream ends.\n   *\n   * Not allowed on objectMode streams.\n   */\n  async concat(): Promise<RType> {\n    if (this[OBJECTMODE]) {\n      throw new Error('cannot concat in objectMode')\n    }\n    const buf = await this.collect()\n    return (\n      this[ENCODING]\n        ? buf.join('')\n        : Buffer.concat(buf as Buffer[], buf.dataLength)\n    ) as RType\n  }\n\n  /**\n   * Return a void Promise that resolves once the stream ends.\n   */\n  async promise(): Promise<void> {\n    return new Promise<void>((resolve, reject) => {\n      this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n      this.on('error', er => reject(er))\n      this.on('end', () => resolve())\n    })\n  }\n\n  /**\n   * Asynchronous `for await of` iteration.\n   *\n   * This will continue emitting all chunks until the stream terminates.\n   */\n  [Symbol.asyncIterator](): AsyncGenerator<RType, void, void> {\n    // set this up front, in case the consumer doesn't call next()\n    // right away.\n    this[DISCARDED] = false\n    let stopped = false\n    const stop = async (): Promise<IteratorReturnResult<void>> => {\n      this.pause()\n      stopped = true\n      return { value: undefined, done: true }\n    }\n    const next = (): Promise<IteratorResult<RType, void>> => {\n      if (stopped) return stop()\n      const res = this.read()\n      if (res !== null) return Promise.resolve({ done: false, value: res })\n\n      if (this[EOF]) return stop()\n\n      let resolve!: (res: IteratorResult<RType>) => void\n      let reject!: (er: unknown) => void\n      const onerr = (er: unknown) => {\n        this.off('data', ondata)\n        this.off('end', onend)\n        this.off(DESTROYED, ondestroy)\n        stop()\n        reject(er)\n      }\n      const ondata = (value: RType) => {\n        this.off('error', onerr)\n        this.off('end', onend)\n        this.off(DESTROYED, ondestroy)\n        this.pause()\n        resolve({ value, done: !!this[EOF] })\n      }\n      const onend = () => {\n        this.off('error', onerr)\n        this.off('data', ondata)\n        this.off(DESTROYED, ondestroy)\n        stop()\n        resolve({ done: true, value: undefined })\n      }\n      const ondestroy = () => onerr(new Error('stream destroyed'))\n      return new Promise<IteratorResult<RType>>((res, rej) => {\n        reject = rej\n        resolve = res\n        this.once(DESTROYED, ondestroy)\n        this.once('error', onerr)\n        this.once('end', onend)\n        this.once('data', ondata)\n      })\n    }\n\n    return {\n      next,\n      throw: stop,\n      return: stop,\n      [Symbol.asyncIterator]() {\n        return this\n      },\n    }\n  }\n\n  /**\n   * Synchronous `for of` iteration.\n   *\n   * The iteration will terminate when the internal buffer runs out, even\n   * if the stream has not yet terminated.\n   */\n  [Symbol.iterator](): Generator<RType, void, void> {\n    // set this up front, in case the consumer doesn't call next()\n    // right away.\n    this[DISCARDED] = false\n    let stopped = false\n    const stop = (): IteratorReturnResult<void> => {\n      this.pause()\n      this.off(ERROR, stop)\n      this.off(DESTROYED, stop)\n      this.off('end', stop)\n      stopped = true\n      return { done: true, value: undefined }\n    }\n\n    const next = (): IteratorResult<RType, void> => {\n      if (stopped) return stop()\n      const value = this.read()\n      return value === null ? stop() : { done: false, value }\n    }\n\n    this.once('end', stop)\n    this.once(ERROR, stop)\n    this.once(DESTROYED, stop)\n\n    return {\n      next,\n      throw: stop,\n      return: stop,\n      [Symbol.iterator]() {\n        return this\n      },\n    }\n  }\n\n  /**\n   * Destroy a stream, preventing it from being used for any further purpose.\n   *\n   * If the stream has a `close()` method, then it will be called on\n   * destruction.\n   *\n   * After destruction, any attempt to write data, read data, or emit most\n   * events will be ignored.\n   *\n   * If an error argument is provided, then it will be emitted in an\n   * 'error' event.\n   */\n  destroy(er?: unknown) {\n    if (this[DESTROYED]) {\n      if (er) this.emit('error', er)\n      else this.emit(DESTROYED)\n      return this\n    }\n\n    this[DESTROYED] = true\n    this[DISCARDED] = true\n\n    // throw away all buffered data, it's never coming out\n    this[BUFFER].length = 0\n    this[BUFFERLENGTH] = 0\n\n    const wc = this as Minipass<RType, WType, Events> & {\n      close?: () => void\n    }\n    if (typeof wc.close === 'function' && !this[CLOSED]) wc.close()\n\n    if (er) this.emit('error', er)\n    // if no error to emit, still reject pending promises\n    else this.emit(DESTROYED)\n\n    return this\n  }\n\n  /**\n   * Alias for {@link isStream}\n   *\n   * Former export location, maintained for backwards compatibility.\n   *\n   * @deprecated\n   */\n  static get isStream() {\n    return isStream\n  }\n}\n", "// tar -t\nimport * as fsm from '@isaacs/fs-minipass'\nimport fs from 'node:fs'\nimport { dirname, parse } from 'path'\nimport { makeCommand } from './make-command.js'\nimport {\n  TarOptions,\n  TarOptionsFile,\n  TarOptionsSyncFile,\n} from './options.js'\nimport { Parser } from './parse.js'\nimport { stripTrailingSlashes } from './strip-trailing-slashes.js'\n\nconst onReadEntryFunction = (opt: TarOptions) => {\n  const onReadEntry = opt.onReadEntry\n  opt.onReadEntry =\n    onReadEntry ?\n      e => {\n        onReadEntry(e)\n        e.resume()\n      }\n    : e => e.resume()\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nexport const filesFilter = (opt: TarOptions, files: string[]) => {\n  const map = new Map<string, boolean>(\n    files.map(f => [stripTrailingSlashes(f), true]),\n  )\n  const filter = opt.filter\n\n  const mapHas = (file: string, r: string = ''): boolean => {\n    const root = r || parse(file).root || '.'\n    let ret: boolean\n    if (file === root) ret = false\n    else {\n      const m = map.get(file)\n      if (m !== undefined) {\n        ret = m\n      } else {\n        ret = mapHas(dirname(file), root)\n      }\n    }\n\n    map.set(file, ret)\n    return ret\n  }\n\n  opt.filter =\n    filter ?\n      (file, entry) =>\n        filter(file, entry) && mapHas(stripTrailingSlashes(file))\n    : file => mapHas(stripTrailingSlashes(file))\n}\n\nconst listFileSync = (opt: TarOptionsSyncFile) => {\n  const p = new Parser(opt)\n  const file = opt.file\n  let fd\n  try {\n    const stat = fs.statSync(file)\n    const readSize = opt.maxReadSize || 16 * 1024 * 1024\n    if (stat.size < readSize) {\n      p.end(fs.readFileSync(file))\n    } else {\n      let pos = 0\n      const buf = Buffer.allocUnsafe(readSize)\n      fd = fs.openSync(file, 'r')\n      while (pos < stat.size) {\n        const bytesRead = fs.readSync(fd, buf, 0, readSize, pos)\n        pos += bytesRead\n        p.write(buf.subarray(0, bytesRead))\n      }\n      p.end()\n    }\n  } finally {\n    if (typeof fd === 'number') {\n      try {\n        fs.closeSync(fd)\n        /* c8 ignore next */\n      } catch (er) {}\n    }\n  }\n}\n\nconst listFile = (\n  opt: TarOptionsFile,\n  _files: string[],\n): Promise<void> => {\n  const parse = new Parser(opt)\n  const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n  const file = opt.file\n  const p = new Promise<void>((resolve, reject) => {\n    parse.on('error', reject)\n    parse.on('end', resolve)\n\n    fs.stat(file, (er, stat) => {\n      if (er) {\n        reject(er)\n      } else {\n        const stream = new fsm.ReadStream(file, {\n          readSize: readSize,\n          size: stat.size,\n        })\n        stream.on('error', reject)\n        stream.pipe(parse)\n      }\n    })\n  })\n  return p\n}\n\nexport const list = makeCommand(\n  listFileSync,\n  listFile,\n  opt => new Parser(opt) as Parser & { sync: true },\n  opt => new Parser(opt),\n  (opt, files) => {\n    if (files?.length) filesFilter(opt, files)\n    if (!opt.noResume) onReadEntryFunction(opt)\n  },\n)\n", "// turn tar(1) style args like `C` into the more verbose things like `cwd`\n\nimport { type GzipOptions, type ZlibOptions } from 'minizlib'\nimport { type Stats } from 'node:fs'\nimport { type ReadEntry } from './read-entry.js'\nimport { type WarnData } from './warn-method.js'\nimport { WriteEntry } from './write-entry.js'\n\nconst argmap = new Map<keyof TarOptionsWithAliases, keyof TarOptions>(\n  [\n    ['C', 'cwd'],\n    ['f', 'file'],\n    ['z', 'gzip'],\n    ['P', 'preservePaths'],\n    ['U', 'unlink'],\n    ['strip-components', 'strip'],\n    ['stripComponents', 'strip'],\n    ['keep-newer', 'newer'],\n    ['keepNewer', 'newer'],\n    ['keep-newer-files', 'newer'],\n    ['keepNewerFiles', 'newer'],\n    ['k', 'keep'],\n    ['keep-existing', 'keep'],\n    ['keepExisting', 'keep'],\n    ['m', 'noMtime'],\n    ['no-mtime', 'noMtime'],\n    ['p', 'preserveOwner'],\n    ['L', 'follow'],\n    ['h', 'follow'],\n    ['onentry', 'onReadEntry'],\n  ],\n)\n\n/**\n * The options that can be provided to tar commands.\n *\n * Note that some of these are only relevant for certain commands, since\n * they are specific to reading or writing.\n *\n * Aliases are provided in the {@link TarOptionsWithAliases} type.\n */\nexport interface TarOptions {\n  //////////////////////////\n  // shared options\n\n  /**\n   * Perform all I/O operations synchronously. If the stream is ended\n   * immediately, then it will be processed entirely synchronously.\n   */\n  sync?: boolean\n\n  /**\n   * The tar file to be read and/or written. When this is set, a stream\n   * is not returned. Asynchronous commands will return a promise indicating\n   * when the operation is completed, and synchronous commands will return\n   * immediately.\n   */\n  file?: string\n\n  /**\n   * Treat warnings as crash-worthy errors. Defaults false.\n   */\n  strict?: boolean\n\n  /**\n   * The effective current working directory for this tar command\n   */\n  cwd?: string\n\n  /**\n   * When creating a tar archive, this can be used to compress it as well.\n   * Set to `true` to use the default gzip options, or customize them as\n   * needed.\n   *\n   * When reading, if this is unset, then the compression status will be\n   * inferred from the archive data. This is generally best, unless you are\n   * sure of the compression settings in use to create the archive, and want to\n   * fail if the archive doesn't match expectations.\n   */\n  gzip?: boolean | GzipOptions\n\n  /**\n   * When creating archives, preserve absolute and `..` paths in the archive,\n   * rather than sanitizing them under the cwd.\n   *\n   * When extracting, allow absolute paths, paths containing `..`, and\n   * extracting through symbolic links. By default, the root `/` is stripped\n   * from absolute paths (eg, turning `/x/y/z` into `x/y/z`), paths containing\n   * `..` are not extracted, and any file whose location would be modified by a\n   * symbolic link is not extracted.\n   *\n   * **WARNING** This is almost always unsafe, and must NEVER be used on\n   * archives from untrusted sources, such as user input, and every entry must\n   * be validated to ensure it is safe to write. Even if the input is not\n   * malicious, mistakes can cause a lot of damage!\n   */\n  preservePaths?: boolean\n\n  /**\n   * When extracting, do not set the `mtime` value for extracted entries to\n   * match the `mtime` in the archive.\n   *\n   * When creating archives, do not store the `mtime` value in the entry. Note\n   * that this prevents properly using other mtime-based features (such as\n   * `tar.update` or the `newer` option) with the resulting archive.\n   */\n  noMtime?: boolean\n\n  /**\n   * Set to `true` or an object with settings for `zlib.BrotliCompress()` to\n   * create a brotli-compressed archive\n   *\n   * When extracting, this will cause the archive to be treated as a\n   * brotli-compressed file if set to `true` or a ZlibOptions object.\n   *\n   * If set `false`, then brotli options will not be used.\n   *\n   * If both this and the `gzip` option are left `undefined`, then tar will\n   * attempt to infer the brotli compression status, but can only do so based\n   * on the filename. If the filename ends in `.tbr` or `.tar.br`, and the\n   * first 512 bytes are not a valid tar header, then brotli decompression\n   * will be attempted.\n   */\n  brotli?: boolean | ZlibOptions\n\n  /**\n   * A function that is called with `(path, stat)` when creating an archive, or\n   * `(path, entry)` when extracting. Return true to process the file/entry, or\n   * false to exclude it.\n   */\n  filter?: (path: string, entry: Stats | ReadEntry) => boolean\n\n  /**\n   * A function that gets called for any warning encountered.\n   *\n   * Note: if `strict` is set, then the warning will throw, and this method\n   * will not be called.\n   */\n  onwarn?: (code: string, message: string, data: WarnData) => any\n\n  //////////////////////////\n  // extraction options\n\n  /**\n   * When extracting, unlink files before creating them. Without this option,\n   * tar overwrites existing files, which preserves existing hardlinks. With\n   * this option, existing hardlinks will be broken, as will any symlink that\n   * would affect the location of an extracted file.\n   */\n  unlink?: boolean\n\n  /**\n   * When extracting, strip the specified number of path portions from the\n   * entry path. For example, with `{strip: 2}`, the entry `a/b/c/d` would be\n   * extracted to `{cwd}/c/d`.\n   *\n   * Any entry whose entire path is stripped will be excluded.\n   */\n  strip?: number\n\n  /**\n   * When extracting, keep the existing file on disk if it's newer than the\n   * file in the archive.\n   */\n  newer?: boolean\n\n  /**\n   * When extracting, do not overwrite existing files at all.\n   */\n  keep?: boolean\n\n  /**\n   * When extracting, set the `uid` and `gid` of extracted entries to the `uid`\n   * and `gid` fields in the archive. Defaults to true when run as root, and\n   * false otherwise.\n   *\n   * If false, then files and directories will be set with the owner and group\n   * of the user running the process. This is similar to `-p` in `tar(1)`, but\n   * ACLs and other system-specific data is never unpacked in this\n   * implementation, and modes are set by default already.\n   */\n  preserveOwner?: boolean\n\n  /**\n   * The maximum depth of subfolders to extract into. This defaults to 1024.\n   * Anything deeper than the limit will raise a warning and skip the entry.\n   * Set to `Infinity` to remove the limitation.\n   */\n  maxDepth?: number\n\n  /**\n   * When extracting, force all created files and directories, and all\n   * implicitly created directories, to be owned by the specified user id,\n   * regardless of the `uid` field in the archive.\n   *\n   * Cannot be used along with `preserveOwner`. Requires also setting the `gid`\n   * option.\n   */\n  uid?: number\n\n  /**\n   * When extracting, force all created files and directories, and all\n   * implicitly created directories, to be owned by the specified group id,\n   * regardless of the `gid` field in the archive.\n   *\n   * Cannot be used along with `preserveOwner`. Requires also setting the `uid`\n   * option.\n   */\n  gid?: number\n\n  /**\n   * When extracting, provide a function that takes an `entry` object, and\n   * returns a stream, or any falsey value. If a stream is provided, then that\n   * stream's data will be written instead of the contents of the archive\n   * entry. If a falsey value is provided, then the entry is written to disk as\n   * normal.\n   *\n   * To exclude items from extraction, use the `filter` option.\n   *\n   * Note that using an asynchronous stream type with the `transform` option\n   * will cause undefined behavior in synchronous extractions.\n   * [MiniPass](http://npm.im/minipass)-based streams are designed for this use\n   * case.\n   */\n  transform?: (entry: ReadEntry) => any\n\n  /**\n   * Call `chmod()` to ensure that extracted files match the entry's mode\n   * field. Without this field set, all mode fields in archive entries are a\n   * best effort attempt only.\n   *\n   * Setting this necessitates a call to the deprecated `process.umask()`\n   * method to determine the default umask value, unless a `processUmask`\n   * config is provided as well.\n   *\n   * If not set, tar will attempt to create file system entries with whatever\n   * mode is provided, and let the implicit process `umask` apply normally, but\n   * if a file already exists to be written to, then its existing mode will not\n   * be modified.\n   *\n   * When setting `chmod: true`, it is highly recommend to set the\n   * {@link TarOptions#processUmask} option as well, to avoid the call to the\n   * deprecated (and thread-unsafe) `process.umask()` method.\n   */\n  chmod?: boolean\n\n  /**\n   * When setting the {@link TarOptions#chmod} option to `true`, you may\n   * provide a value here to avoid having to call the deprecated and\n   * thread-unsafe `process.umask()` method.\n   *\n   * This has no effect with `chmod` is not set to true, as mode values are not\n   * set explicitly anyway. If `chmod` is set to `true`, and a value is not\n   * provided here, then `process.umask()` must be called, which will result in\n   * deprecation warnings.\n   *\n   * The most common values for this are `0o22` (resulting in directories\n   * created with mode `0o755` and files with `0o644` by default) and `0o2`\n   * (resulting in directores created with mode `0o775` and files `0o664`, so\n   * they are group-writable).\n   */\n  processUmask?: number\n\n  //////////////////////////\n  // archive creation options\n\n  /**\n   * When parsing/listing archives, `entry` streams are by default resumed\n   * (set into \"flowing\" mode) immediately after the call to `onReadEntry()`.\n   * Set `noResume: true` to suppress this behavior.\n   *\n   * Note that when this is set, the stream will never complete until the\n   * data is consumed somehow.\n   *\n   * Set automatically in extract operations, since the entry is piped to\n   * a file system entry right away. Only relevant when parsing.\n   */\n  noResume?: boolean\n\n  /**\n   * When creating, updating, or replacing within archives, this method will\n   * be called with each WriteEntry that is created.\n   */\n  onWriteEntry?: (entry: WriteEntry) => any\n\n  /**\n   * When extracting or listing archives, this method will be called with\n   * each entry that is not excluded by a `filter`.\n   *\n   * Important when listing archives synchronously from a file, because there\n   * is otherwise no way to interact with the data!\n   */\n  onReadEntry?: (entry: ReadEntry) => any\n\n  /**\n   * Pack the targets of symbolic links rather than the link itself.\n   */\n  follow?: boolean\n\n  /**\n   * When creating archives, omit any metadata that is system-specific:\n   * `ctime`, `atime`, `uid`, `gid`, `uname`, `gname`, `dev`, `ino`, and\n   * `nlink`. Note that `mtime` is still included, because this is necessary\n   * for other time-based operations such as `tar.update`. Additionally, `mode`\n   * is set to a \"reasonable default\" for mose unix systems, based on an\n   * effective `umask` of `0o22`.\n   *\n   * This also defaults the `portable` option in the gzip configs when creating\n   * a compressed archive, in order to produce deterministic archives that are\n   * not operating-system specific.\n   */\n  portable?: boolean\n\n  /**\n   * When creating archives, do not recursively archive the contents of\n   * directories. By default, archiving a directory archives all of its\n   * contents as well.\n   */\n  noDirRecurse?: boolean\n\n  /**\n   * Suppress Pax extended headers when creating archives. Note that this means\n   * long paths and linkpaths will be truncated, and large or negative numeric\n   * values may be interpreted incorrectly.\n   */\n  noPax?: boolean\n\n  /**\n   * Set to a `Date` object to force a specific `mtime` value for everything\n   * written to an archive.\n   *\n   * This is useful when creating archives that are intended to be\n   * deterministic based on their contents, irrespective of the file's last\n   * modification time.\n   *\n   * Overridden by `noMtime`.\n   */\n  mtime?: Date\n\n  /**\n   * A path portion to prefix onto the entries added to an archive.\n   */\n  prefix?: string\n\n  /**\n   * The mode to set on any created file archive, defaults to 0o666\n   * masked by the process umask, often resulting in 0o644.\n   *\n   * This does *not* affect the mode fields of individual entries, or the\n   * mode status of extracted entries on the filesystem.\n   */\n  mode?: number\n\n  //////////////////////////\n  // internal options\n\n  /**\n   * A cache of mtime values, to avoid having to stat the same file repeatedly.\n   *\n   * @internal\n   */\n  mtimeCache?: Map<string, Date>\n\n  /**\n   * maximum buffer size for `fs.read()` operations.\n   *\n   * @internal\n   */\n  maxReadSize?: number\n\n  /**\n   * Filter modes of entries being unpacked, like `process.umask()`\n   *\n   * @internal\n   */\n  umask?: number\n\n  /**\n   * Default mode for directories. Used for all implicitly created directories,\n   * and any directories in the archive that do not have a mode field.\n   *\n   * @internal\n   */\n  dmode?: number\n\n  /**\n   * default mode for files\n   *\n   * @internal\n   */\n  fmode?: number\n\n  /**\n   * Map that tracks which directories already exist, for extraction\n   *\n   * @internal\n   */\n  dirCache?: Map<string, boolean>\n  /**\n   * maximum supported size of meta entries. Defaults to 1MB\n   *\n   * @internal\n   */\n  maxMetaEntrySize?: number\n\n  /**\n   * A Map object containing the device and inode value for any file whose\n   * `nlink` value is greater than 1, to identify hard links when creating\n   * archives.\n   *\n   * @internal\n   */\n  linkCache?: Map<LinkCacheKey, string>\n\n  /**\n   * A map object containing the results of `fs.readdir()` calls.\n   *\n   * @internal\n   */\n  readdirCache?: Map<string, string[]>\n\n  /**\n   * A cache of all `lstat` results, for use in creating archives.\n   *\n   * @internal\n   */\n  statCache?: Map<string, Stats>\n\n  /**\n   * Number of concurrent jobs to run when creating archives.\n   *\n   * Defaults to 4.\n   *\n   * @internal\n   */\n  jobs?: number\n\n  /**\n   * Automatically set to true on Windows systems.\n   *\n   * When extracting, causes behavior where filenames containing `<|>?:`\n   * characters are converted to windows-compatible escape sequences in the\n   * created filesystem entries.\n   *\n   * When packing, causes behavior where paths replace `\\` with `/`, and\n   * filenames containing the windows-compatible escaped forms of `<|>?:` are\n   * converted to actual `<|>?:` characters in the archive.\n   *\n   * @internal\n   */\n  win32?: boolean\n\n  /**\n   * For `WriteEntry` objects, the absolute path to the entry on the\n   * filesystem. By default, this is `resolve(cwd, entry.path)`, but it can be\n   * overridden explicitly.\n   *\n   * @internal\n   */\n  absolute?: string\n\n  /**\n   * Used with Parser stream interface, to attach and take over when the\n   * stream is completely parsed. If this is set, then the prefinish,\n   * finish, and end events will not fire, and are the responsibility of\n   * the ondone method to emit properly.\n   *\n   * @internal\n   */\n  ondone?: () => void\n\n  /**\n   * Mostly for testing, but potentially useful in some cases.\n   * Forcibly trigger a chown on every entry, no matter what.\n   */\n  forceChown?: boolean\n\n  /**\n   * ambiguous deprecated name for {@link onReadEntry}\n   *\n   * @deprecated\n   */\n  onentry?: (entry: ReadEntry) => any\n}\n\nexport type TarOptionsSync = TarOptions & { sync: true }\nexport type TarOptionsAsync = TarOptions & { sync?: false }\nexport type TarOptionsFile = TarOptions & { file: string }\nexport type TarOptionsNoFile = TarOptions & { file?: undefined }\nexport type TarOptionsSyncFile = TarOptionsSync & TarOptionsFile\nexport type TarOptionsAsyncFile = TarOptionsAsync & TarOptionsFile\nexport type TarOptionsSyncNoFile = TarOptionsSync & TarOptionsNoFile\nexport type TarOptionsAsyncNoFile = TarOptionsAsync & TarOptionsNoFile\n\nexport type LinkCacheKey = `${number}:${number}`\n\nexport interface TarOptionsWithAliases extends TarOptions {\n  /**\n   * The effective current working directory for this tar command\n   */\n  C?: TarOptions['cwd']\n  /**\n   * The tar file to be read and/or written. When this is set, a stream\n   * is not returned. Asynchronous commands will return a promise indicating\n   * when the operation is completed, and synchronous commands will return\n   * immediately.\n   */\n  f?: TarOptions['file']\n  /**\n   * When creating a tar archive, this can be used to compress it as well.\n   * Set to `true` to use the default gzip options, or customize them as\n   * needed.\n   *\n   * When reading, if this is unset, then the compression status will be\n   * inferred from the archive data. This is generally best, unless you are\n   * sure of the compression settings in use to create the archive, and want to\n   * fail if the archive doesn't match expectations.\n   */\n  z?: TarOptions['gzip']\n  /**\n   * When creating archives, preserve absolute and `..` paths in the archive,\n   * rather than sanitizing them under the cwd.\n   *\n   * When extracting, allow absolute paths, paths containing `..`, and\n   * extracting through symbolic links. By default, the root `/` is stripped\n   * from absolute paths (eg, turning `/x/y/z` into `x/y/z`), paths containing\n   * `..` are not extracted, and any file whose location would be modified by a\n   * symbolic link is not extracted.\n   *\n   * **WARNING** This is almost always unsafe, and must NEVER be used on\n   * archives from untrusted sources, such as user input, and every entry must\n   * be validated to ensure it is safe to write. Even if the input is not\n   * malicious, mistakes can cause a lot of damage!\n   */\n  P?: TarOptions['preservePaths']\n  /**\n   * When extracting, unlink files before creating them. Without this option,\n   * tar overwrites existing files, which preserves existing hardlinks. With\n   * this option, existing hardlinks will be broken, as will any symlink that\n   * would affect the location of an extracted file.\n   */\n  U?: TarOptions['unlink']\n  /**\n   * When extracting, strip the specified number of path portions from the\n   * entry path. For example, with `{strip: 2}`, the entry `a/b/c/d` would be\n   * extracted to `{cwd}/c/d`.\n   */\n  'strip-components'?: TarOptions['strip']\n  /**\n   * When extracting, strip the specified number of path portions from the\n   * entry path. For example, with `{strip: 2}`, the entry `a/b/c/d` would be\n   * extracted to `{cwd}/c/d`.\n   */\n  stripComponents?: TarOptions['strip']\n  /**\n   * When extracting, keep the existing file on disk if it's newer than the\n   * file in the archive.\n   */\n  'keep-newer'?: TarOptions['newer']\n  /**\n   * When extracting, keep the existing file on disk if it's newer than the\n   * file in the archive.\n   */\n  keepNewer?: TarOptions['newer']\n  /**\n   * When extracting, keep the existing file on disk if it's newer than the\n   * file in the archive.\n   */\n  'keep-newer-files'?: TarOptions['newer']\n  /**\n   * When extracting, keep the existing file on disk if it's newer than the\n   * file in the archive.\n   */\n  keepNewerFiles?: TarOptions['newer']\n  /**\n   * When extracting, do not overwrite existing files at all.\n   */\n  k?: TarOptions['keep']\n  /**\n   * When extracting, do not overwrite existing files at all.\n   */\n  'keep-existing'?: TarOptions['keep']\n  /**\n   * When extracting, do not overwrite existing files at all.\n   */\n  keepExisting?: TarOptions['keep']\n  /**\n   * When extracting, do not set the `mtime` value for extracted entries to\n   * match the `mtime` in the archive.\n   *\n   * When creating archives, do not store the `mtime` value in the entry. Note\n   * that this prevents properly using other mtime-based features (such as\n   * `tar.update` or the `newer` option) with the resulting archive.\n   */\n  m?: TarOptions['noMtime']\n  /**\n   * When extracting, do not set the `mtime` value for extracted entries to\n   * match the `mtime` in the archive.\n   *\n   * When creating archives, do not store the `mtime` value in the entry. Note\n   * that this prevents properly using other mtime-based features (such as\n   * `tar.update` or the `newer` option) with the resulting archive.\n   */\n  'no-mtime'?: TarOptions['noMtime']\n  /**\n   * When extracting, set the `uid` and `gid` of extracted entries to the `uid`\n   * and `gid` fields in the archive. Defaults to true when run as root, and\n   * false otherwise.\n   *\n   * If false, then files and directories will be set with the owner and group\n   * of the user running the process. This is similar to `-p` in `tar(1)`, but\n   * ACLs and other system-specific data is never unpacked in this\n   * implementation, and modes are set by default already.\n   */\n  p?: TarOptions['preserveOwner']\n  /**\n   * Pack the targets of symbolic links rather than the link itself.\n   */\n  L?: TarOptions['follow']\n  /**\n   * Pack the targets of symbolic links rather than the link itself.\n   */\n  h?: TarOptions['follow']\n\n  /**\n   * Deprecated option. Set explicitly false to set `chmod: true`. Ignored\n   * if {@link TarOptions#chmod} is set to any boolean value.\n   *\n   * @deprecated\n   */\n  noChmod?: boolean\n}\n\nexport type TarOptionsWithAliasesSync = TarOptionsWithAliases & {\n  sync: true\n}\nexport type TarOptionsWithAliasesAsync = TarOptionsWithAliases & {\n  sync?: false\n}\nexport type TarOptionsWithAliasesFile =\n  | (TarOptionsWithAliases & {\n      file: string\n    })\n  | (TarOptionsWithAliases & { f: string })\nexport type TarOptionsWithAliasesSyncFile =\n  TarOptionsWithAliasesSync & TarOptionsWithAliasesFile\nexport type TarOptionsWithAliasesAsyncFile =\n  TarOptionsWithAliasesAsync & TarOptionsWithAliasesFile\n\nexport type TarOptionsWithAliasesNoFile = TarOptionsWithAliases & {\n  f?: undefined\n  file?: undefined\n}\n\nexport type TarOptionsWithAliasesSyncNoFile =\n  TarOptionsWithAliasesSync & TarOptionsWithAliasesNoFile\nexport type TarOptionsWithAliasesAsyncNoFile =\n  TarOptionsWithAliasesAsync & TarOptionsWithAliasesNoFile\n\nexport const isSyncFile = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsSyncFile => !!o.sync && !!o.file\nexport const isAsyncFile = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsAsyncFile => !o.sync && !!o.file\nexport const isSyncNoFile = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsSyncNoFile => !!o.sync && !o.file\nexport const isAsyncNoFile = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsAsyncNoFile => !o.sync && !o.file\nexport const isSync = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsSync => !!o.sync\nexport const isAsync = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsAsync => !o.sync\nexport const isFile = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsFile => !!o.file\nexport const isNoFile = <O extends TarOptions>(\n  o: O,\n): o is O & TarOptionsNoFile => !o.file\n\nconst dealiasKey = (\n  k: keyof TarOptionsWithAliases,\n): keyof TarOptions => {\n  const d = argmap.get(k)\n  if (d) return d\n  return k as keyof TarOptions\n}\n\nexport const dealias = (\n  opt: TarOptionsWithAliases = {},\n): TarOptions => {\n  if (!opt) return {}\n  const result: Record<string, any> = {}\n  for (const [key, v] of Object.entries(opt) as [\n    keyof TarOptionsWithAliases,\n    any,\n  ][]) {\n    // TS doesn't know that aliases are going to always be the same type\n    const k = dealiasKey(key)\n    result[k] = v\n  }\n  // affordance for deprecated noChmod -> chmod\n  if (result.chmod === undefined && result.noChmod === false) {\n    result.chmod = true\n  }\n  delete result.noChmod\n  return result as TarOptions\n}\n", "import {\n  dealias,\n  isAsyncFile,\n  isAsyncNoFile,\n  isSyncFile,\n  isSyncNoFile,\n  TarOptions,\n  TarOptionsAsyncFile,\n  TarOptionsAsyncNoFile,\n  TarOptionsSyncFile,\n  TarOptionsSyncNoFile,\n  TarOptionsWithAliases,\n  TarOptionsWithAliasesAsync,\n  TarOptionsWithAliasesAsyncFile,\n  TarOptionsWithAliasesAsyncNoFile,\n  TarOptionsWithAliasesFile,\n  TarOptionsWithAliasesNoFile,\n  TarOptionsWithAliasesSync,\n  TarOptionsWithAliasesSyncFile,\n  TarOptionsWithAliasesSyncNoFile,\n} from './options.js'\n\nexport type CB = (er?: Error) => any\n\nexport type TarCommand<\n  AsyncClass,\n  SyncClass extends { sync: true },\n> = {\n  // async and no file specified\n  (): AsyncClass\n  (opt: TarOptionsWithAliasesAsyncNoFile): AsyncClass\n  (entries: string[]): AsyncClass\n  (\n    opt: TarOptionsWithAliasesAsyncNoFile,\n    entries: string[],\n  ): AsyncClass\n} & {\n  // sync and no file\n  (opt: TarOptionsWithAliasesSyncNoFile): SyncClass\n  (opt: TarOptionsWithAliasesSyncNoFile, entries: string[]): SyncClass\n} & {\n  // async and file\n  (opt: TarOptionsWithAliasesAsyncFile): Promise<void>\n  (\n    opt: TarOptionsWithAliasesAsyncFile,\n    entries: string[],\n  ): Promise<void>\n  (opt: TarOptionsWithAliasesAsyncFile, cb: CB): Promise<void>\n  (\n    opt: TarOptionsWithAliasesAsyncFile,\n    entries: string[],\n    cb: CB,\n  ): Promise<void>\n} & {\n  // sync and file\n  (opt: TarOptionsWithAliasesSyncFile): void\n  (opt: TarOptionsWithAliasesSyncFile, entries: string[]): void\n} & {\n  // sync, maybe file\n  (opt: TarOptionsWithAliasesSync): typeof opt extends (\n    TarOptionsWithAliasesFile\n  ) ?\n    void\n  : typeof opt extends TarOptionsWithAliasesNoFile ? SyncClass\n  : void | SyncClass\n  (\n    opt: TarOptionsWithAliasesSync,\n    entries: string[],\n  ): typeof opt extends TarOptionsWithAliasesFile ? void\n  : typeof opt extends TarOptionsWithAliasesNoFile ? SyncClass\n  : void | SyncClass\n} & {\n  // async, maybe file\n  (opt: TarOptionsWithAliasesAsync): typeof opt extends (\n    TarOptionsWithAliasesFile\n  ) ?\n    Promise<void>\n  : typeof opt extends TarOptionsWithAliasesNoFile ? AsyncClass\n  : Promise<void> | AsyncClass\n  (\n    opt: TarOptionsWithAliasesAsync,\n    entries: string[],\n  ): typeof opt extends TarOptionsWithAliasesFile ? Promise<void>\n  : typeof opt extends TarOptionsWithAliasesNoFile ? AsyncClass\n  : Promise<void> | AsyncClass\n  (opt: TarOptionsWithAliasesAsync, cb: CB): Promise<void>\n  (\n    opt: TarOptionsWithAliasesAsync,\n    entries: string[],\n    cb: CB,\n  ): typeof opt extends TarOptionsWithAliasesFile ? Promise<void>\n  : typeof opt extends TarOptionsWithAliasesNoFile ? never\n  : Promise<void>\n} & {\n  // maybe sync, file\n  (opt: TarOptionsWithAliasesFile): Promise<void> | void\n  (\n    opt: TarOptionsWithAliasesFile,\n    entries: string[],\n  ): typeof opt extends TarOptionsWithAliasesSync ? void\n  : typeof opt extends TarOptionsWithAliasesAsync ? Promise<void>\n  : Promise<void> | void\n  (opt: TarOptionsWithAliasesFile, cb: CB): Promise<void>\n  (\n    opt: TarOptionsWithAliasesFile,\n    entries: string[],\n    cb: CB,\n  ): typeof opt extends TarOptionsWithAliasesSync ? never\n  : typeof opt extends TarOptionsWithAliasesAsync ? Promise<void>\n  : Promise<void>\n} & {\n  // maybe sync, no file\n  (opt: TarOptionsWithAliasesNoFile): typeof opt extends (\n    TarOptionsWithAliasesSync\n  ) ?\n    SyncClass\n  : typeof opt extends TarOptionsWithAliasesAsync ? AsyncClass\n  : SyncClass | AsyncClass\n  (\n    opt: TarOptionsWithAliasesNoFile,\n    entries: string[],\n  ): typeof opt extends TarOptionsWithAliasesSync ? SyncClass\n  : typeof opt extends TarOptionsWithAliasesAsync ? AsyncClass\n  : SyncClass | AsyncClass\n} & {\n  // maybe sync, maybe file\n  (opt: TarOptionsWithAliases): typeof opt extends (\n    TarOptionsWithAliasesFile\n  ) ?\n    typeof opt extends TarOptionsWithAliasesSync ? void\n    : typeof opt extends TarOptionsWithAliasesAsync ? Promise<void>\n    : void | Promise<void>\n  : typeof opt extends TarOptionsWithAliasesNoFile ?\n    typeof opt extends TarOptionsWithAliasesSync ? SyncClass\n    : typeof opt extends TarOptionsWithAliasesAsync ? AsyncClass\n    : SyncClass | AsyncClass\n  : typeof opt extends TarOptionsWithAliasesSync ? SyncClass | void\n  : typeof opt extends TarOptionsWithAliasesAsync ?\n    AsyncClass | Promise<void>\n  : SyncClass | void | AsyncClass | Promise<void>\n} & {\n  // extras\n  syncFile: (opt: TarOptionsSyncFile, entries: string[]) => void\n  asyncFile: (\n    opt: TarOptionsAsyncFile,\n    entries: string[],\n    cb?: CB,\n  ) => Promise<void>\n  syncNoFile: (\n    opt: TarOptionsSyncNoFile,\n    entries: string[],\n  ) => SyncClass\n  asyncNoFile: (\n    opt: TarOptionsAsyncNoFile,\n    entries: string[],\n  ) => AsyncClass\n  validate?: (opt: TarOptions, entries?: string[]) => void\n}\n\nexport const makeCommand = <\n  AsyncClass,\n  SyncClass extends { sync: true },\n>(\n  syncFile: (opt: TarOptionsSyncFile, entries: string[]) => void,\n  asyncFile: (\n    opt: TarOptionsAsyncFile,\n    entries: string[],\n    cb?: CB,\n  ) => Promise<void>,\n  syncNoFile: (\n    opt: TarOptionsSyncNoFile,\n    entries: string[],\n  ) => SyncClass,\n  asyncNoFile: (\n    opt: TarOptionsAsyncNoFile,\n    entries: string[],\n  ) => AsyncClass,\n  validate?: (opt: TarOptions, entries?: string[]) => void,\n): TarCommand<AsyncClass, SyncClass> => {\n  return Object.assign(\n    (\n      opt_: TarOptionsWithAliases | string[] = [],\n      entries?: string[] | CB,\n      cb?: CB,\n    ) => {\n      if (Array.isArray(opt_)) {\n        entries = opt_\n        opt_ = {}\n      }\n\n      if (typeof entries === 'function') {\n        cb = entries\n        entries = undefined\n      }\n\n      if (!entries) {\n        entries = []\n      } else {\n        entries = Array.from(entries)\n      }\n\n      const opt = dealias(opt_)\n\n      validate?.(opt, entries)\n\n      if (isSyncFile(opt)) {\n        if (typeof cb === 'function') {\n          throw new TypeError(\n            'callback not supported for sync tar functions',\n          )\n        }\n        return syncFile(opt, entries)\n      } else if (isAsyncFile(opt)) {\n        const p = asyncFile(opt, entries)\n        // weirdness to make TS happy\n        const c = cb ? cb : undefined\n        return c ? p.then(() => c(), c) : p\n      } else if (isSyncNoFile(opt)) {\n        if (typeof cb === 'function') {\n          throw new TypeError(\n            'callback not supported for sync tar functions',\n          )\n        }\n        return syncNoFile(opt, entries)\n      } else if (isAsyncNoFile(opt)) {\n        if (typeof cb === 'function') {\n          throw new TypeError(\n            'callback only supported with file option',\n          )\n        }\n        return asyncNoFile(opt, entries)\n        /* c8 ignore start */\n      } else {\n        throw new Error('impossible options??')\n      }\n      /* c8 ignore stop */\n    },\n    {\n      syncFile,\n      asyncFile,\n      syncNoFile,\n      asyncNoFile,\n      validate,\n    },\n  ) as TarCommand<AsyncClass, SyncClass>\n}\n", "// this[BUFFER] is the remainder of a chunk if we're waiting for\n// the full 512 bytes of a header to come in.  We will Buffer.concat()\n// it to the next write(), which is a mem copy, but a small one.\n//\n// this[QUEUE] is a Yallist of entries that haven't been emitted\n// yet this can only get filled up if the user keeps write()ing after\n// a write() returns false, or does a write() with more than one entry\n//\n// We don't buffer chunks, we always parse them and either create an\n// entry, or push it into the active entry.  The ReadEntry class knows\n// to throw data away if .ignore=true\n//\n// Shift entry off the buffer when it emits 'end', and emit 'entry' for\n// the next one in the list.\n//\n// At any time, we're pushing body chunks into the entry at WRITEENTRY,\n// and waiting for 'end' on the entry at READENTRY\n//\n// ignored entries get .resume() called on them straight away\n\nimport { EventEmitter as EE } from 'events'\nimport { BrotliDecompress, Unzip } from 'minizlib'\nimport { Yallist } from 'yallist'\nimport { Header } from './header.js'\nimport { TarOptions } from './options.js'\nimport { Pax } from './pax.js'\nimport { ReadEntry } from './read-entry.js'\nimport {\n  warnMethod,\n  type WarnData,\n  type Warner,\n} from './warn-method.js'\n\nconst maxMetaEntrySize = 1024 * 1024\nconst gzipHeader = Buffer.from([0x1f, 0x8b])\n\nconst STATE = Symbol('state')\nconst WRITEENTRY = Symbol('writeEntry')\nconst READENTRY = Symbol('readEntry')\nconst NEXTENTRY = Symbol('nextEntry')\nconst PROCESSENTRY = Symbol('processEntry')\nconst EX = Symbol('extendedHeader')\nconst GEX = Symbol('globalExtendedHeader')\nconst META = Symbol('meta')\nconst EMITMETA = Symbol('emitMeta')\nconst BUFFER = Symbol('buffer')\nconst QUEUE = Symbol('queue')\nconst ENDED = Symbol('ended')\nconst EMITTEDEND = Symbol('emittedEnd')\nconst EMIT = Symbol('emit')\nconst UNZIP = Symbol('unzip')\nconst CONSUMECHUNK = Symbol('consumeChunk')\nconst CONSUMECHUNKSUB = Symbol('consumeChunkSub')\nconst CONSUMEBODY = Symbol('consumeBody')\nconst CONSUMEMETA = Symbol('consumeMeta')\nconst CONSUMEHEADER = Symbol('consumeHeader')\nconst CONSUMING = Symbol('consuming')\nconst BUFFERCONCAT = Symbol('bufferConcat')\nconst MAYBEEND = Symbol('maybeEnd')\nconst WRITING = Symbol('writing')\nconst ABORTED = Symbol('aborted')\nconst DONE = Symbol('onDone')\nconst SAW_VALID_ENTRY = Symbol('sawValidEntry')\nconst SAW_NULL_BLOCK = Symbol('sawNullBlock')\nconst SAW_EOF = Symbol('sawEOF')\nconst CLOSESTREAM = Symbol('closeStream')\n\nconst noop = () => true\n\nexport type State = 'begin' | 'header' | 'ignore' | 'meta' | 'body'\n\nexport class Parser extends EE implements Warner {\n  file: string\n  strict: boolean\n  maxMetaEntrySize: number\n  filter: Exclude<TarOptions['filter'], undefined>\n  brotli?: TarOptions['brotli']\n\n  writable: true = true\n  readable: false = false;\n\n  [QUEUE]: Yallist<ReadEntry | [string | symbol, any, any]> =\n    new Yallist();\n  [BUFFER]?: Buffer;\n  [READENTRY]?: ReadEntry;\n  [WRITEENTRY]?: ReadEntry;\n  [STATE]: State = 'begin';\n  [META]: string = '';\n  [EX]?: Pax;\n  [GEX]?: Pax;\n  [ENDED]: boolean = false;\n  [UNZIP]?: false | Unzip | BrotliDecompress;\n  [ABORTED]: boolean = false;\n  [SAW_VALID_ENTRY]?: boolean;\n  [SAW_NULL_BLOCK]: boolean = false;\n  [SAW_EOF]: boolean = false;\n  [WRITING]: boolean = false;\n  [CONSUMING]: boolean = false;\n  [EMITTEDEND]: boolean = false\n\n  constructor(opt: TarOptions = {}) {\n    super()\n\n    this.file = opt.file || ''\n\n    // these BADARCHIVE errors can't be detected early. listen on DONE.\n    this.on(DONE, () => {\n      if (\n        this[STATE] === 'begin' ||\n        this[SAW_VALID_ENTRY] === false\n      ) {\n        // either less than 1 block of data, or all entries were invalid.\n        // Either way, probably not even a tarball.\n        this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format')\n      }\n    })\n\n    if (opt.ondone) {\n      this.on(DONE, opt.ondone)\n    } else {\n      this.on(DONE, () => {\n        this.emit('prefinish')\n        this.emit('finish')\n        this.emit('end')\n      })\n    }\n\n    this.strict = !!opt.strict\n    this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize\n    this.filter = typeof opt.filter === 'function' ? opt.filter : noop\n    // Unlike gzip, brotli doesn't have any magic bytes to identify it\n    // Users need to explicitly tell us they're extracting a brotli file\n    // Or we infer from the file extension\n    const isTBR =\n      opt.file &&\n      (opt.file.endsWith('.tar.br') || opt.file.endsWith('.tbr'))\n    // if it's a tbr file it MIGHT be brotli, but we don't know until\n    // we look at it and verify it's not a valid tar file.\n    this.brotli =\n      !opt.gzip && opt.brotli !== undefined ? opt.brotli\n      : isTBR ? undefined\n      : false\n\n    // have to set this so that streams are ok piping into it\n    this.on('end', () => this[CLOSESTREAM]())\n\n    if (typeof opt.onwarn === 'function') {\n      this.on('warn', opt.onwarn)\n    }\n    if (typeof opt.onReadEntry === 'function') {\n      this.on('entry', opt.onReadEntry)\n    }\n  }\n\n  warn(\n    code: string,\n    message: string | Error,\n    data: WarnData = {},\n  ): void {\n    warnMethod(this, code, message, data)\n  }\n\n  [CONSUMEHEADER](chunk: Buffer, position: number) {\n    if (this[SAW_VALID_ENTRY] === undefined) {\n      this[SAW_VALID_ENTRY] = false\n    }\n    let header\n    try {\n      header = new Header(chunk, position, this[EX], this[GEX])\n    } catch (er) {\n      return this.warn('TAR_ENTRY_INVALID', er as Error)\n    }\n\n    if (header.nullBlock) {\n      if (this[SAW_NULL_BLOCK]) {\n        this[SAW_EOF] = true\n        // ending an archive with no entries.  pointless, but legal.\n        if (this[STATE] === 'begin') {\n          this[STATE] = 'header'\n        }\n        this[EMIT]('eof')\n      } else {\n        this[SAW_NULL_BLOCK] = true\n        this[EMIT]('nullBlock')\n      }\n    } else {\n      this[SAW_NULL_BLOCK] = false\n      if (!header.cksumValid) {\n        this.warn('TAR_ENTRY_INVALID', 'checksum failure', { header })\n      } else if (!header.path) {\n        this.warn('TAR_ENTRY_INVALID', 'path is required', { header })\n      } else {\n        const type = header.type\n        if (/^(Symbolic)?Link$/.test(type) && !header.linkpath) {\n          this.warn('TAR_ENTRY_INVALID', 'linkpath required', {\n            header,\n          })\n        } else if (\n          !/^(Symbolic)?Link$/.test(type) &&\n          !/^(Global)?ExtendedHeader$/.test(type) &&\n          header.linkpath\n        ) {\n          this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', {\n            header,\n          })\n        } else {\n          const entry = (this[WRITEENTRY] = new ReadEntry(\n            header,\n            this[EX],\n            this[GEX],\n          ))\n\n          // we do this for meta & ignored entries as well, because they\n          // are still valid tar, or else we wouldn't know to ignore them\n          if (!this[SAW_VALID_ENTRY]) {\n            if (entry.remain) {\n              // this might be the one!\n              const onend = () => {\n                if (!entry.invalid) {\n                  this[SAW_VALID_ENTRY] = true\n                }\n              }\n              entry.on('end', onend)\n            } else {\n              this[SAW_VALID_ENTRY] = true\n            }\n          }\n\n          if (entry.meta) {\n            if (entry.size > this.maxMetaEntrySize) {\n              entry.ignore = true\n              this[EMIT]('ignoredEntry', entry)\n              this[STATE] = 'ignore'\n              entry.resume()\n            } else if (entry.size > 0) {\n              this[META] = ''\n              entry.on('data', c => (this[META] += c))\n              this[STATE] = 'meta'\n            }\n          } else {\n            this[EX] = undefined\n            entry.ignore =\n              entry.ignore || !this.filter(entry.path, entry)\n\n            if (entry.ignore) {\n              // probably valid, just not something we care about\n              this[EMIT]('ignoredEntry', entry)\n              this[STATE] = entry.remain ? 'ignore' : 'header'\n              entry.resume()\n            } else {\n              if (entry.remain) {\n                this[STATE] = 'body'\n              } else {\n                this[STATE] = 'header'\n                entry.end()\n              }\n\n              if (!this[READENTRY]) {\n                this[QUEUE].push(entry)\n                this[NEXTENTRY]()\n              } else {\n                this[QUEUE].push(entry)\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n\n  [CLOSESTREAM]() {\n    queueMicrotask(() => this.emit('close'))\n  }\n\n  [PROCESSENTRY](entry?: ReadEntry | [string | symbol, any, any]) {\n    let go = true\n\n    if (!entry) {\n      this[READENTRY] = undefined\n      go = false\n    } else if (Array.isArray(entry)) {\n      const [ev, ...args]: [string | symbol, any, any] = entry\n      this.emit(ev, ...args)\n    } else {\n      this[READENTRY] = entry\n      this.emit('entry', entry)\n      if (!entry.emittedEnd) {\n        entry.on('end', () => this[NEXTENTRY]())\n        go = false\n      }\n    }\n\n    return go\n  }\n\n  [NEXTENTRY]() {\n    do {} while (this[PROCESSENTRY](this[QUEUE].shift()))\n\n    if (!this[QUEUE].length) {\n      // At this point, there's nothing in the queue, but we may have an\n      // entry which is being consumed (readEntry).\n      // If we don't, then we definitely can handle more data.\n      // If we do, and either it's flowing, or it has never had any data\n      // written to it, then it needs more.\n      // The only other possibility is that it has returned false from a\n      // write() call, so we wait for the next drain to continue.\n      const re = this[READENTRY]\n      const drainNow = !re || re.flowing || re.size === re.remain\n      if (drainNow) {\n        if (!this[WRITING]) {\n          this.emit('drain')\n        }\n      } else {\n        re.once('drain', () => this.emit('drain'))\n      }\n    }\n  }\n\n  [CONSUMEBODY](chunk: Buffer, position: number) {\n    // write up to but no  more than writeEntry.blockRemain\n    const entry = this[WRITEENTRY]\n    /* c8 ignore start */\n    if (!entry) {\n      throw new Error('attempt to consume body without entry??')\n    }\n    const br = entry.blockRemain ?? 0\n    /* c8 ignore stop */\n    const c =\n      br >= chunk.length && position === 0 ?\n        chunk\n      : chunk.subarray(position, position + br)\n\n    entry.write(c)\n\n    if (!entry.blockRemain) {\n      this[STATE] = 'header'\n      this[WRITEENTRY] = undefined\n      entry.end()\n    }\n\n    return c.length\n  }\n\n  [CONSUMEMETA](chunk: Buffer, position: number) {\n    const entry = this[WRITEENTRY]\n    const ret = this[CONSUMEBODY](chunk, position)\n\n    // if we finished, then the entry is reset\n    if (!this[WRITEENTRY] && entry) {\n      this[EMITMETA](entry)\n    }\n\n    return ret\n  }\n\n  [EMIT](ev: string | symbol, data?: any, extra?: any) {\n    if (!this[QUEUE].length && !this[READENTRY]) {\n      this.emit(ev, data, extra)\n    } else {\n      this[QUEUE].push([ev, data, extra])\n    }\n  }\n\n  [EMITMETA](entry: ReadEntry) {\n    this[EMIT]('meta', this[META])\n    switch (entry.type) {\n      case 'ExtendedHeader':\n      case 'OldExtendedHeader':\n        this[EX] = Pax.parse(this[META], this[EX], false)\n        break\n\n      case 'GlobalExtendedHeader':\n        this[GEX] = Pax.parse(this[META], this[GEX], true)\n        break\n\n      case 'NextFileHasLongPath':\n      case 'OldGnuLongPath': {\n        const ex = this[EX] ?? Object.create(null)\n        this[EX] = ex\n        ex.path = this[META].replace(/\\0.*/, '')\n        break\n      }\n\n      case 'NextFileHasLongLinkpath': {\n        const ex = this[EX] || Object.create(null)\n        this[EX] = ex\n        ex.linkpath = this[META].replace(/\\0.*/, '')\n        break\n      }\n\n      /* c8 ignore start */\n      default:\n        throw new Error('unknown meta: ' + entry.type)\n      /* c8 ignore stop */\n    }\n  }\n\n  abort(error: Error) {\n    this[ABORTED] = true\n    this.emit('abort', error)\n    // always throws, even in non-strict mode\n    this.warn('TAR_ABORT', error, { recoverable: false })\n  }\n\n  write(\n    buffer: Uint8Array | string,\n    cb?: (err?: Error | null) => void,\n  ): boolean\n  write(\n    str: string,\n    encoding?: BufferEncoding,\n    cb?: (err?: Error | null) => void,\n  ): boolean\n  write(\n    chunk: Buffer | string,\n    encoding?: BufferEncoding | (() => any),\n    cb?: () => any,\n  ): boolean {\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = undefined\n    }\n    if (typeof chunk === 'string') {\n      chunk = Buffer.from(\n        chunk,\n        /* c8 ignore next */\n        typeof encoding === 'string' ? encoding : 'utf8',\n      )\n    }\n    if (this[ABORTED]) {\n      /* c8 ignore next */\n      cb?.()\n      return false\n    }\n\n    // first write, might be gzipped\n    const needSniff =\n      this[UNZIP] === undefined ||\n      (this.brotli === undefined && this[UNZIP] === false)\n    if (needSniff && chunk) {\n      if (this[BUFFER]) {\n        chunk = Buffer.concat([this[BUFFER], chunk])\n        this[BUFFER] = undefined\n      }\n      if (chunk.length < gzipHeader.length) {\n        this[BUFFER] = chunk\n        /* c8 ignore next */\n        cb?.()\n        return true\n      }\n\n      // look for gzip header\n      for (\n        let i = 0;\n        this[UNZIP] === undefined && i < gzipHeader.length;\n        i++\n      ) {\n        if (chunk[i] !== gzipHeader[i]) {\n          this[UNZIP] = false\n        }\n      }\n\n      const maybeBrotli = this.brotli === undefined\n      if (this[UNZIP] === false && maybeBrotli) {\n        // read the first header to see if it's a valid tar file. If so,\n        // we can safely assume that it's not actually brotli, despite the\n        // .tbr or .tar.br file extension.\n        // if we ended before getting a full chunk, yes, def brotli\n        if (chunk.length < 512) {\n          if (this[ENDED]) {\n            this.brotli = true\n          } else {\n            this[BUFFER] = chunk\n            /* c8 ignore next */\n            cb?.()\n            return true\n          }\n        } else {\n          // if it's tar, it's pretty reliably not brotli, chances of\n          // that happening are astronomical.\n          try {\n            new Header(chunk.subarray(0, 512))\n            this.brotli = false\n          } catch (_) {\n            this.brotli = true\n          }\n        }\n      }\n\n      if (\n        this[UNZIP] === undefined ||\n        (this[UNZIP] === false && this.brotli)\n      ) {\n        const ended = this[ENDED]\n        this[ENDED] = false\n        this[UNZIP] =\n          this[UNZIP] === undefined ?\n            new Unzip({})\n          : new BrotliDecompress({})\n        this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk))\n        this[UNZIP].on('error', er => this.abort(er as Error))\n        this[UNZIP].on('end', () => {\n          this[ENDED] = true\n          this[CONSUMECHUNK]()\n        })\n        this[WRITING] = true\n        const ret = !!this[UNZIP][ended ? 'end' : 'write'](chunk)\n        this[WRITING] = false\n        cb?.()\n        return ret\n      }\n    }\n\n    this[WRITING] = true\n    if (this[UNZIP]) {\n      this[UNZIP].write(chunk)\n    } else {\n      this[CONSUMECHUNK](chunk)\n    }\n    this[WRITING] = false\n\n    // return false if there's a queue, or if the current entry isn't flowing\n    const ret =\n      this[QUEUE].length ? false\n      : this[READENTRY] ? this[READENTRY].flowing\n      : true\n\n    // if we have no queue, then that means a clogged READENTRY\n    if (!ret && !this[QUEUE].length) {\n      this[READENTRY]?.once('drain', () => this.emit('drain'))\n    }\n\n    /* c8 ignore next */\n    cb?.()\n    return ret\n  }\n\n  [BUFFERCONCAT](c: Buffer) {\n    if (c && !this[ABORTED]) {\n      this[BUFFER] =\n        this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c\n    }\n  }\n\n  [MAYBEEND]() {\n    if (\n      this[ENDED] &&\n      !this[EMITTEDEND] &&\n      !this[ABORTED] &&\n      !this[CONSUMING]\n    ) {\n      this[EMITTEDEND] = true\n      const entry = this[WRITEENTRY]\n      if (entry && entry.blockRemain) {\n        // truncated, likely a damaged file\n        const have = this[BUFFER] ? this[BUFFER].length : 0\n        this.warn(\n          'TAR_BAD_ARCHIVE',\n          `Truncated input (needed ${entry.blockRemain} more bytes, only ${have} available)`,\n          { entry },\n        )\n        if (this[BUFFER]) {\n          entry.write(this[BUFFER])\n        }\n        entry.end()\n      }\n      this[EMIT](DONE)\n    }\n  }\n\n  [CONSUMECHUNK](chunk?: Buffer) {\n    if (this[CONSUMING] && chunk) {\n      this[BUFFERCONCAT](chunk)\n    } else if (!chunk && !this[BUFFER]) {\n      this[MAYBEEND]()\n    } else if (chunk) {\n      this[CONSUMING] = true\n      if (this[BUFFER]) {\n        this[BUFFERCONCAT](chunk)\n        const c = this[BUFFER]\n        this[BUFFER] = undefined\n        this[CONSUMECHUNKSUB](c)\n      } else {\n        this[CONSUMECHUNKSUB](chunk)\n      }\n\n      while (\n        this[BUFFER] &&\n        (this[BUFFER] as Buffer)?.length >= 512 &&\n        !this[ABORTED] &&\n        !this[SAW_EOF]\n      ) {\n        const c = this[BUFFER]\n        this[BUFFER] = undefined\n        this[CONSUMECHUNKSUB](c)\n      }\n      this[CONSUMING] = false\n    }\n\n    if (!this[BUFFER] || this[ENDED]) {\n      this[MAYBEEND]()\n    }\n  }\n\n  [CONSUMECHUNKSUB](chunk: Buffer) {\n    // we know that we are in CONSUMING mode, so anything written goes into\n    // the buffer.  Advance the position and put any remainder in the buffer.\n    let position = 0\n    const length = chunk.length\n    while (\n      position + 512 <= length &&\n      !this[ABORTED] &&\n      !this[SAW_EOF]\n    ) {\n      switch (this[STATE]) {\n        case 'begin':\n        case 'header':\n          this[CONSUMEHEADER](chunk, position)\n          position += 512\n          break\n\n        case 'ignore':\n        case 'body':\n          position += this[CONSUMEBODY](chunk, position)\n          break\n\n        case 'meta':\n          position += this[CONSUMEMETA](chunk, position)\n          break\n\n        /* c8 ignore start */\n        default:\n          throw new Error('invalid state: ' + this[STATE])\n        /* c8 ignore stop */\n      }\n    }\n\n    if (position < length) {\n      if (this[BUFFER]) {\n        this[BUFFER] = Buffer.concat([\n          chunk.subarray(position),\n          this[BUFFER],\n        ])\n      } else {\n        this[BUFFER] = chunk.subarray(position)\n      }\n    }\n  }\n\n  end(cb?: () => void): this\n  end(data: string | Buffer, cb?: () => void): this\n  end(str: string, encoding?: BufferEncoding, cb?: () => void): this\n  end(\n    chunk?: string | Buffer | (() => void),\n    encoding?: BufferEncoding | (() => void),\n    cb?: () => void,\n  ) {\n    if (typeof chunk === 'function') {\n      cb = chunk\n      encoding = undefined\n      chunk = undefined\n    }\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = undefined\n    }\n    if (typeof chunk === 'string') {\n      chunk = Buffer.from(chunk, encoding)\n    }\n    if (cb) this.once('finish', cb)\n    if (!this[ABORTED]) {\n      if (this[UNZIP]) {\n        /* c8 ignore start */\n        if (chunk) this[UNZIP].write(chunk)\n        /* c8 ignore stop */\n        this[UNZIP].end()\n      } else {\n        this[ENDED] = true\n        if (this.brotli === undefined)\n          chunk = chunk || Buffer.alloc(0)\n        if (chunk) this.write(chunk)\n        this[MAYBEEND]()\n      }\n    }\n    return this\n  }\n}\n", "import assert from 'assert'\nimport { Buffer } from 'buffer'\nimport { Minipass } from 'minipass'\nimport realZlib from 'zlib'\nimport { constants } from './constants.js'\nexport { constants } from './constants.js'\n\nconst OriginalBufferConcat = Buffer.concat\nconst _superWrite = Symbol('_superWrite')\n\nexport class ZlibError extends Error {\n  code?: string\n  errno?: number\n  constructor(err: NodeJS.ErrnoException | Error) {\n    super('zlib: ' + err.message)\n    this.code = (err as NodeJS.ErrnoException).code\n    this.errno = (err as NodeJS.ErrnoException).errno\n    /* c8 ignore next */\n    if (!this.code) this.code = 'ZLIB_ERROR'\n\n    this.message = 'zlib: ' + err.message\n    Error.captureStackTrace(this, this.constructor)\n  }\n\n  get name() {\n    return 'ZlibError'\n  }\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\nconst _flushFlag = Symbol('flushFlag')\n\nexport type ChunkWithFlushFlag = Minipass.ContiguousData & {\n  [_flushFlag]?: number\n}\n\nexport type ZlibBaseOptions = Minipass.Options<Minipass.ContiguousData> & {\n  flush?: number\n  finishFlush?: number\n  fullFlushFlag?: number\n}\nexport type ZlibMode =\n  | 'Gzip'\n  | 'Gunzip'\n  | 'Deflate'\n  | 'Inflate'\n  | 'DeflateRaw'\n  | 'InflateRaw'\n  | 'Unzip'\nexport type ZlibHandle =\n  | realZlib.Gzip\n  | realZlib.Gunzip\n  | realZlib.Deflate\n  | realZlib.Inflate\n  | realZlib.DeflateRaw\n  | realZlib.InflateRaw\nexport type BrotliMode = 'BrotliCompress' | 'BrotliDecompress'\n\nabstract class ZlibBase extends Minipass<Buffer, ChunkWithFlushFlag> {\n  #sawError: boolean = false\n  #ended: boolean = false\n  #flushFlag: number\n  #finishFlushFlag: number\n  #fullFlushFlag: number\n  #handle?: ZlibHandle\n  #onError: (err: ZlibError) => any\n\n  get sawError() {\n    return this.#sawError\n  }\n  get handle() {\n    return this.#handle\n  }\n  /* c8 ignore start */\n  get flushFlag() {\n    return this.#flushFlag\n  }\n  /* c8 ignore stop */\n\n  constructor(opts: ZlibBaseOptions, mode: ZlibMode | BrotliMode) {\n    if (!opts || typeof opts !== 'object')\n      throw new TypeError('invalid options for ZlibBase constructor')\n\n    //@ts-ignore\n    super(opts)\n\n    /* c8 ignore start */\n    this.#flushFlag = opts.flush ?? 0\n    this.#finishFlushFlag = opts.finishFlush ?? 0\n    this.#fullFlushFlag = opts.fullFlushFlag ?? 0\n    /* c8 ignore stop */\n\n    // this will throw if any options are invalid for the class selected\n    try {\n      // @types/node doesn't know that it exports the classes, but they're there\n      //@ts-ignore\n      this.#handle = new realZlib[mode](opts)\n    } catch (er) {\n      // make sure that all errors get decorated properly\n      throw new ZlibError(er as NodeJS.ErrnoException)\n    }\n\n    this.#onError = err => {\n      // no sense raising multiple errors, since we abort on the first one.\n      if (this.#sawError) return\n\n      this.#sawError = true\n\n      // there is no way to cleanly recover.\n      // continuing only obscures problems.\n      this.close()\n      this.emit('error', err)\n    }\n\n    this.#handle?.on('error', er => this.#onError(new ZlibError(er)))\n    this.once('end', () => this.close)\n  }\n\n  close() {\n    if (this.#handle) {\n      this.#handle.close()\n      this.#handle = undefined\n      this.emit('close')\n    }\n  }\n\n  reset() {\n    if (!this.#sawError) {\n      assert(this.#handle, 'zlib binding closed')\n      //@ts-ignore\n      return this.#handle.reset?.()\n    }\n  }\n\n  flush(flushFlag?: number) {\n    if (this.ended) return\n\n    if (typeof flushFlag !== 'number') flushFlag = this.#fullFlushFlag\n\n    this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))\n  }\n\n  end(cb?: () => void): this\n  end(chunk: ChunkWithFlushFlag, cb?: () => void): this\n  end(\n    chunk: ChunkWithFlushFlag,\n    encoding?: Minipass.Encoding,\n    cb?: () => void,\n  ): this\n  end(\n    chunk?: ChunkWithFlushFlag | (() => void),\n    encoding?: Minipass.Encoding | (() => void),\n    cb?: () => void,\n  ) {\n    /* c8 ignore start */\n    if (typeof chunk === 'function') {\n      cb = chunk\n      encoding = undefined\n      chunk = undefined\n    }\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = undefined\n    }\n    /* c8 ignore stop */\n    if (chunk) {\n      if (encoding) this.write(chunk, encoding)\n      else this.write(chunk)\n    }\n    this.flush(this.#finishFlushFlag)\n    this.#ended = true\n    return super.end(cb)\n  }\n\n  get ended() {\n    return this.#ended\n  }\n\n  // overridden in the gzip classes to do portable writes\n  [_superWrite](data: Buffer & { [_flushFlag]?: number }) {\n    return super.write(data)\n  }\n\n  write(chunk: ChunkWithFlushFlag, cb?: () => void): boolean\n  write(\n    chunk: ChunkWithFlushFlag,\n    encoding?: Minipass.Encoding,\n    cb?: () => void,\n  ): boolean\n  write(\n    chunk: ChunkWithFlushFlag,\n    encoding?: Minipass.Encoding | (() => void),\n    cb?: () => void,\n  ) {\n    // process the chunk using the sync process\n    // then super.write() all the outputted chunks\n    if (typeof encoding === 'function')\n      (cb = encoding), (encoding = 'utf8')\n\n    if (typeof chunk === 'string')\n      chunk = Buffer.from(chunk as string, encoding as BufferEncoding)\n\n    if (this.#sawError) return\n    assert(this.#handle, 'zlib binding closed')\n\n    // _processChunk tries to .close() the native handle after it's done, so we\n    // intercept that by temporarily making it a no-op.\n    // diving into the node:zlib internals a bit here\n    const nativeHandle = (this.#handle as unknown as { _handle: any })\n      ._handle\n    const originalNativeClose = nativeHandle.close\n    nativeHandle.close = () => {}\n    const originalClose = this.#handle.close\n    this.#handle.close = () => {}\n    // It also calls `Buffer.concat()` at the end, which may be convenient\n    // for some, but which we are not interested in as it slows us down.\n    Buffer.concat = args => args as unknown as Buffer\n    let result: undefined | Buffer | Buffer[] = undefined\n    try {\n      const flushFlag =\n        typeof chunk[_flushFlag] === 'number'\n          ? chunk[_flushFlag]\n          : this.#flushFlag\n      result = (\n        this.#handle as unknown as {\n          _processChunk: (chunk: Buffer, flushFlag: number) => Buffer[]\n        }\n      )._processChunk(chunk as Buffer, flushFlag)\n      // if we don't throw, reset it back how it was\n      Buffer.concat = OriginalBufferConcat\n    } catch (err) {\n      // or if we do, put Buffer.concat() back before we emit error\n      // Error events call into user code, which may call Buffer.concat()\n      Buffer.concat = OriginalBufferConcat\n      this.#onError(new ZlibError(err as NodeJS.ErrnoException))\n    } finally {\n      if (this.#handle) {\n        // Core zlib resets `_handle` to null after attempting to close the\n        // native handle. Our no-op handler prevented actual closure, but we\n        // need to restore the `._handle` property.\n        ;(this.#handle as unknown as { _handle: any })._handle =\n          nativeHandle\n        nativeHandle.close = originalNativeClose\n        this.#handle.close = originalClose\n        // `_processChunk()` adds an 'error' listener. If we don't remove it\n        // after each call, these handlers start piling up.\n        this.#handle.removeAllListeners('error')\n        // make sure OUR error listener is still attached tho\n      }\n    }\n\n    if (this.#handle)\n      this.#handle.on('error', er => this.#onError(new ZlibError(er)))\n\n    let writeReturn\n    if (result) {\n      if (Array.isArray(result) && result.length > 0) {\n        const r = result[0]\n        // The first buffer is always `handle._outBuffer`, which would be\n        // re-used for later invocations; so, we always have to copy that one.\n        writeReturn = this[_superWrite](Buffer.from(r as Buffer))\n        for (let i = 1; i < result.length; i++) {\n          writeReturn = this[_superWrite](result[i] as Buffer)\n        }\n      } else {\n        // either a single Buffer or an empty array\n        writeReturn = this[_superWrite](Buffer.from(result as Buffer | []))\n      }\n    }\n\n    if (cb) cb()\n    return writeReturn\n  }\n}\n\nexport type ZlibOptions = ZlibBaseOptions & {\n  level?: number\n  strategy?: number\n}\n\nexport class Zlib extends ZlibBase {\n  #level?: number\n  #strategy?: number\n\n  constructor(opts: ZlibOptions, mode: ZlibMode) {\n    opts = opts || {}\n\n    opts.flush = opts.flush || constants.Z_NO_FLUSH\n    opts.finishFlush = opts.finishFlush || constants.Z_FINISH\n    opts.fullFlushFlag = constants.Z_FULL_FLUSH\n    super(opts, mode)\n\n    this.#level = opts.level\n    this.#strategy = opts.strategy\n  }\n\n  params(level: number, strategy: number) {\n    if (this.sawError) return\n\n    if (!this.handle)\n      throw new Error('cannot switch params when binding is closed')\n\n    // no way to test this without also not supporting params at all\n    /* c8 ignore start */\n    if (!(this.handle as { params?: any }).params)\n      throw new Error('not supported in this implementation')\n    /* c8 ignore stop */\n\n    if (this.#level !== level || this.#strategy !== strategy) {\n      this.flush(constants.Z_SYNC_FLUSH)\n      assert(this.handle, 'zlib binding closed')\n      // .params() calls .flush(), but the latter is always async in the\n      // core zlib. We override .flush() temporarily to intercept that and\n      // flush synchronously.\n      const origFlush = this.handle.flush\n      this.handle.flush = (\n        flushFlag?: (() => void) | number,\n        cb?: () => void,\n      ) => {\n        /* c8 ignore start */\n        if (typeof flushFlag === 'function') {\n          cb = flushFlag\n          flushFlag = this.flushFlag\n        }\n        /* c8 ignore stop */\n        this.flush(flushFlag)\n        cb?.()\n      }\n      try {\n        ;(\n          this.handle as unknown as {\n            params: (level?: number, strategy?: number) => void\n          }\n        ).params(level, strategy)\n      } finally {\n        this.handle.flush = origFlush\n      }\n      /* c8 ignore start */\n      if (this.handle) {\n        this.#level = level\n        this.#strategy = strategy\n      }\n      /* c8 ignore stop */\n    }\n  }\n}\n\n// minimal 2-byte header\nexport class Deflate extends Zlib {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'Deflate')\n  }\n}\n\nexport class Inflate extends Zlib {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'Inflate')\n  }\n}\n\n// gzip - bigger header, same deflate compression\nexport type GzipOptions = ZlibOptions & { portable?: boolean }\nexport class Gzip extends Zlib {\n  #portable: boolean\n  constructor(opts: GzipOptions) {\n    super(opts, 'Gzip')\n    this.#portable = opts && !!opts.portable\n  }\n\n  [_superWrite](data: Buffer & { [_flushFlag]?: number }) {\n    if (!this.#portable) return super[_superWrite](data)\n\n    // we'll always get the header emitted in one first chunk\n    // overwrite the OS indicator byte with 0xFF\n    this.#portable = false\n    data[9] = 255\n    return super[_superWrite](data)\n  }\n}\n\nexport class Gunzip extends Zlib {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'Gunzip')\n  }\n}\n\n// raw - no header\nexport class DeflateRaw extends Zlib {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'DeflateRaw')\n  }\n}\n\nexport class InflateRaw extends Zlib {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'InflateRaw')\n  }\n}\n\n// auto-detect header.\nexport class Unzip extends Zlib {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'Unzip')\n  }\n}\n\nexport class Brotli extends ZlibBase {\n  constructor(opts: ZlibOptions, mode: BrotliMode) {\n    opts = opts || {}\n\n    opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS\n    opts.finishFlush =\n      opts.finishFlush || constants.BROTLI_OPERATION_FINISH\n    opts.fullFlushFlag = constants.BROTLI_OPERATION_FLUSH\n    super(opts, mode)\n  }\n}\n\nexport class BrotliCompress extends Brotli {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'BrotliCompress')\n  }\n}\n\nexport class BrotliDecompress extends Brotli {\n  constructor(opts: ZlibOptions) {\n    super(opts, 'BrotliDecompress')\n  }\n}\n", "// Update with any zlib constants that are added or changed in the future.\n// Node v6 didn't export this, so we just hard code the version and rely\n// on all the other hard-coded values from zlib v4736.  When node v6\n// support drops, we can just export the realZlibConstants object.\nimport realZlib from 'zlib'\n/* c8 ignore start */\nconst realZlibConstants = realZlib.constants || { ZLIB_VERNUM: 4736 }\n/* c8 ignore stop */\n\nexport const constants = Object.freeze(\n  Object.assign(\n    Object.create(null),\n    {\n      Z_NO_FLUSH: 0,\n      Z_PARTIAL_FLUSH: 1,\n      Z_SYNC_FLUSH: 2,\n      Z_FULL_FLUSH: 3,\n      Z_FINISH: 4,\n      Z_BLOCK: 5,\n      Z_OK: 0,\n      Z_STREAM_END: 1,\n      Z_NEED_DICT: 2,\n      Z_ERRNO: -1,\n      Z_STREAM_ERROR: -2,\n      Z_DATA_ERROR: -3,\n      Z_MEM_ERROR: -4,\n      Z_BUF_ERROR: -5,\n      Z_VERSION_ERROR: -6,\n      Z_NO_COMPRESSION: 0,\n      Z_BEST_SPEED: 1,\n      Z_BEST_COMPRESSION: 9,\n      Z_DEFAULT_COMPRESSION: -1,\n      Z_FILTERED: 1,\n      Z_HUFFMAN_ONLY: 2,\n      Z_RLE: 3,\n      Z_FIXED: 4,\n      Z_DEFAULT_STRATEGY: 0,\n      DEFLATE: 1,\n      INFLATE: 2,\n      GZIP: 3,\n      GUNZIP: 4,\n      DEFLATERAW: 5,\n      INFLATERAW: 6,\n      UNZIP: 7,\n      BROTLI_DECODE: 8,\n      BROTLI_ENCODE: 9,\n      Z_MIN_WINDOWBITS: 8,\n      Z_MAX_WINDOWBITS: 15,\n      Z_DEFAULT_WINDOWBITS: 15,\n      Z_MIN_CHUNK: 64,\n      Z_MAX_CHUNK: Infinity,\n      Z_DEFAULT_CHUNK: 16384,\n      Z_MIN_MEMLEVEL: 1,\n      Z_MAX_MEMLEVEL: 9,\n      Z_DEFAULT_MEMLEVEL: 8,\n      Z_MIN_LEVEL: -1,\n      Z_MAX_LEVEL: 9,\n      Z_DEFAULT_LEVEL: -1,\n      BROTLI_OPERATION_PROCESS: 0,\n      BROTLI_OPERATION_FLUSH: 1,\n      BROTLI_OPERATION_FINISH: 2,\n      BROTLI_OPERATION_EMIT_METADATA: 3,\n      BROTLI_MODE_GENERIC: 0,\n      BROTLI_MODE_TEXT: 1,\n      BROTLI_MODE_FONT: 2,\n      BROTLI_DEFAULT_MODE: 0,\n      BROTLI_MIN_QUALITY: 0,\n      BROTLI_MAX_QUALITY: 11,\n      BROTLI_DEFAULT_QUALITY: 11,\n      BROTLI_MIN_WINDOW_BITS: 10,\n      BROTLI_MAX_WINDOW_BITS: 24,\n      BROTLI_LARGE_MAX_WINDOW_BITS: 30,\n      BROTLI_DEFAULT_WINDOW: 22,\n      BROTLI_MIN_INPUT_BLOCK_BITS: 16,\n      BROTLI_MAX_INPUT_BLOCK_BITS: 24,\n      BROTLI_PARAM_MODE: 0,\n      BROTLI_PARAM_QUALITY: 1,\n      BROTLI_PARAM_LGWIN: 2,\n      BROTLI_PARAM_LGBLOCK: 3,\n      BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,\n      BROTLI_PARAM_SIZE_HINT: 5,\n      BROTLI_PARAM_LARGE_WINDOW: 6,\n      BROTLI_PARAM_NPOSTFIX: 7,\n      BROTLI_PARAM_NDIRECT: 8,\n      BROTLI_DECODER_RESULT_ERROR: 0,\n      BROTLI_DECODER_RESULT_SUCCESS: 1,\n      BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,\n      BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,\n      BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,\n      BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,\n      BROTLI_DECODER_NO_ERROR: 0,\n      BROTLI_DECODER_SUCCESS: 1,\n      BROTLI_DECODER_NEEDS_MORE_INPUT: 2,\n      BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,\n      BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,\n      BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,\n      BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,\n      BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,\n      BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,\n      BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,\n      BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,\n      BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,\n      BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,\n      BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,\n      BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,\n      BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,\n      BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,\n      BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,\n      BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,\n      BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,\n      BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,\n      BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,\n      BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,\n      BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,\n      BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,\n      BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,\n      BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,\n      BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,\n      BROTLI_DECODER_ERROR_UNREACHABLE: -31,\n    },\n    realZlibConstants,\n  ),\n)\n", "export class Yallist<T = unknown> {\n  tail?: Node<T>\n  head?: Node<T>\n  length: number = 0\n\n  static create<T = unknown>(list: Iterable<T> = []) {\n    return new Yallist(list)\n  }\n\n  constructor(list: Iterable<T> = []) {\n    for (const item of list) {\n      this.push(item)\n    }\n  }\n\n  *[Symbol.iterator]() {\n    for (let walker = this.head; walker; walker = walker.next) {\n      yield walker.value\n    }\n  }\n\n  removeNode(node: Node<T>) {\n    if (node.list !== this) {\n      throw new Error(\n        'removing node which does not belong to this list',\n      )\n    }\n\n    const next = node.next\n    const prev = node.prev\n\n    if (next) {\n      next.prev = prev\n    }\n\n    if (prev) {\n      prev.next = next\n    }\n\n    if (node === this.head) {\n      this.head = next\n    }\n    if (node === this.tail) {\n      this.tail = prev\n    }\n\n    this.length--\n    node.next = undefined\n    node.prev = undefined\n    node.list = undefined\n\n    return next\n  }\n\n  unshiftNode(node: Node<T>) {\n    if (node === this.head) {\n      return\n    }\n\n    if (node.list) {\n      node.list.removeNode(node)\n    }\n\n    const head = this.head\n    node.list = this\n    node.next = head\n    if (head) {\n      head.prev = node\n    }\n\n    this.head = node\n    if (!this.tail) {\n      this.tail = node\n    }\n    this.length++\n  }\n\n  pushNode(node: Node<T>) {\n    if (node === this.tail) {\n      return\n    }\n\n    if (node.list) {\n      node.list.removeNode(node)\n    }\n\n    const tail = this.tail\n    node.list = this\n    node.prev = tail\n    if (tail) {\n      tail.next = node\n    }\n\n    this.tail = node\n    if (!this.head) {\n      this.head = node\n    }\n    this.length++\n  }\n\n  push(...args: T[]) {\n    for (let i = 0, l = args.length; i < l; i++) {\n      push(this, args[i])\n    }\n    return this.length\n  }\n\n  unshift(...args: T[]) {\n    for (var i = 0, l = args.length; i < l; i++) {\n      unshift(this, args[i])\n    }\n    return this.length\n  }\n\n  pop() {\n    if (!this.tail) {\n      return undefined\n    }\n\n    const res = this.tail.value\n    const t = this.tail\n    this.tail = this.tail.prev\n    if (this.tail) {\n      this.tail.next = undefined\n    } else {\n      this.head = undefined\n    }\n    t.list = undefined\n    this.length--\n    return res\n  }\n\n  shift() {\n    if (!this.head) {\n      return undefined\n    }\n\n    const res = this.head.value\n    const h = this.head\n    this.head = this.head.next\n    if (this.head) {\n      this.head.prev = undefined\n    } else {\n      this.tail = undefined\n    }\n    h.list = undefined\n    this.length--\n    return res\n  }\n\n  forEach(\n    fn: (value: T, i: number, list: Yallist<T>) => any,\n    thisp?: any,\n  ) {\n    thisp = thisp || this\n    for (let walker = this.head, i = 0; !!walker; i++) {\n      fn.call(thisp, walker.value, i, this)\n      walker = walker.next\n    }\n  }\n\n  forEachReverse(\n    fn: (value: T, i: number, list: Yallist<T>) => any,\n    thisp?: any,\n  ) {\n    thisp = thisp || this\n    for (let walker = this.tail, i = this.length - 1; !!walker; i--) {\n      fn.call(thisp, walker.value, i, this)\n      walker = walker.prev\n    }\n  }\n\n  get(n: number) {\n    let i = 0\n    let walker = this.head\n    for (; !!walker && i < n; i++) {\n      walker = walker.next\n    }\n    if (i === n && !!walker) {\n      return walker.value\n    }\n  }\n\n  getReverse(n: number) {\n    let i = 0\n    let walker = this.tail\n    for (; !!walker && i < n; i++) {\n      // abort out of the list early if we hit a cycle\n      walker = walker.prev\n    }\n    if (i === n && !!walker) {\n      return walker.value\n    }\n  }\n\n  map<R = any>(\n    fn: (value: T, list: Yallist<T>) => R,\n    thisp?: any,\n  ): Yallist<R> {\n    thisp = thisp || this\n    const res = new Yallist<R>()\n    for (let walker = this.head; !!walker; ) {\n      res.push(fn.call(thisp, walker.value, this))\n      walker = walker.next\n    }\n    return res\n  }\n\n  mapReverse<R = any>(\n    fn: (value: T, list: Yallist<T>) => R,\n    thisp?: any,\n  ): Yallist<R> {\n    thisp = thisp || this\n    var res = new Yallist<R>()\n    for (let walker = this.tail; !!walker; ) {\n      res.push(fn.call(thisp, walker.value, this))\n      walker = walker.prev\n    }\n    return res\n  }\n\n  reduce(fn: (left: T, right: T, i: number) => T): T\n  reduce<R = any>(\n    fn: (acc: R, next: T, i: number) => R,\n    initial: R,\n  ): R\n  reduce<R = any>(\n    fn: (acc: R, next: T, i: number) => R,\n    initial?: R,\n  ): R {\n    let acc: R | T\n    let walker = this.head\n    if (arguments.length > 1) {\n      acc = initial as R\n    } else if (this.head) {\n      walker = this.head.next\n      acc = this.head.value\n    } else {\n      throw new TypeError(\n        'Reduce of empty list with no initial value',\n      )\n    }\n\n    for (var i = 0; !!walker; i++) {\n      acc = fn(acc as R, walker.value, i)\n      walker = walker.next\n    }\n\n    return acc as R\n  }\n\n  reduceReverse(fn: (left: T, right: T, i: number) => T): T\n  reduceReverse<R = any>(\n    fn: (acc: R, next: T, i: number) => R,\n    initial: R,\n  ): R\n  reduceReverse<R = any>(\n    fn: (acc: R, next: T, i: number) => R,\n    initial?: R,\n  ): R {\n    let acc: R | T\n    let walker = this.tail\n    if (arguments.length > 1) {\n      acc = initial as R\n    } else if (this.tail) {\n      walker = this.tail.prev\n      acc = this.tail.value\n    } else {\n      throw new TypeError(\n        'Reduce of empty list with no initial value',\n      )\n    }\n\n    for (let i = this.length - 1; !!walker; i--) {\n      acc = fn(acc as R, walker.value, i)\n      walker = walker.prev\n    }\n\n    return acc as R\n  }\n\n  toArray() {\n    const arr = new Array(this.length)\n    for (let i = 0, walker = this.head; !!walker; i++) {\n      arr[i] = walker.value\n      walker = walker.next\n    }\n    return arr\n  }\n\n  toArrayReverse() {\n    const arr = new Array(this.length)\n    for (let i = 0, walker = this.tail; !!walker; i++) {\n      arr[i] = walker.value\n      walker = walker.prev\n    }\n    return arr\n  }\n\n  slice(from: number = 0, to: number = this.length) {\n    if (to < 0) {\n      to += this.length\n    }\n    if (from < 0) {\n      from += this.length\n    }\n    const ret = new Yallist()\n    if (to < from || to < 0) {\n      return ret\n    }\n    if (from < 0) {\n      from = 0\n    }\n    if (to > this.length) {\n      to = this.length\n    }\n    let walker = this.head\n    let i = 0\n    for (i = 0; !!walker && i < from; i++) {\n      walker = walker.next\n    }\n    for (; !!walker && i < to; i++, walker = walker.next) {\n      ret.push(walker.value)\n    }\n    return ret\n  }\n\n  sliceReverse(from: number = 0, to: number = this.length) {\n    if (to < 0) {\n      to += this.length\n    }\n    if (from < 0) {\n      from += this.length\n    }\n    const ret = new Yallist()\n    if (to < from || to < 0) {\n      return ret\n    }\n    if (from < 0) {\n      from = 0\n    }\n    if (to > this.length) {\n      to = this.length\n    }\n    let i = this.length\n    let walker = this.tail\n    for (; !!walker && i > to; i--) {\n      walker = walker.prev\n    }\n    for (; !!walker && i > from; i--, walker = walker.prev) {\n      ret.push(walker.value)\n    }\n    return ret\n  }\n\n  splice(start: number, deleteCount: number = 0, ...nodes: T[]) {\n    if (start > this.length) {\n      start = this.length - 1\n    }\n    if (start < 0) {\n      start = this.length + start\n    }\n\n    let walker = this.head\n\n    for (let i = 0; !!walker && i < start; i++) {\n      walker = walker.next\n    }\n\n    const ret: T[] = []\n    for (let i = 0; !!walker && i < deleteCount; i++) {\n      ret.push(walker.value)\n      walker = this.removeNode(walker)\n    }\n    if (!walker) {\n      walker = this.tail\n    } else if (walker !== this.tail) {\n      walker = walker.prev\n    }\n\n    for (const v of nodes) {\n      walker = insertAfter<T>(this, walker, v)\n    }\n\n    return ret\n  }\n\n  reverse() {\n    const head = this.head\n    const tail = this.tail\n    for (let walker = head; !!walker; walker = walker.prev) {\n      const p = walker.prev\n      walker.prev = walker.next\n      walker.next = p\n    }\n    this.head = tail\n    this.tail = head\n    return this\n  }\n}\n\n// insertAfter undefined means \"make the node the new head of list\"\nfunction insertAfter<T>(\n  self: Yallist<T>,\n  node: Node<T> | undefined,\n  value: T,\n) {\n  const prev = node\n  const next = node ? node.next : self.head\n  const inserted = new Node<T>(value, prev, next, self)\n\n  if (inserted.next === undefined) {\n    self.tail = inserted\n  }\n  if (inserted.prev === undefined) {\n    self.head = inserted\n  }\n\n  self.length++\n\n  return inserted\n}\n\nfunction push<T>(self: Yallist<T>, item: T) {\n  self.tail = new Node<T>(item, self.tail, undefined, self)\n  if (!self.head) {\n    self.head = self.tail\n  }\n  self.length++\n}\n\nfunction unshift<T>(self: Yallist<T>, item: T) {\n  self.head = new Node<T>(item, undefined, self.head, self)\n  if (!self.tail) {\n    self.tail = self.head\n  }\n  self.length++\n}\n\nexport class Node<T = unknown> {\n  list?: Yallist<T>\n  next?: Node<T>\n  prev?: Node<T>\n  value: T\n\n  constructor(\n    value: T,\n    prev?: Node<T> | undefined,\n    next?: Node<T> | undefined,\n    list?: Yallist<T> | undefined,\n  ) {\n    this.list = list\n    this.value = value\n\n    if (prev) {\n      prev.next = this\n      this.prev = prev\n    } else {\n      this.prev = undefined\n    }\n\n    if (next) {\n      next.prev = this\n      this.next = next\n    } else {\n      this.next = undefined\n    }\n  }\n}\n", "// parse a 512-byte header block to a data object, or vice-versa\n// encode returns `true` if a pax extended header is needed, because\n// the data could not be faithfully encoded in a simple header.\n// (Also, check header.needPax to see if it needs a pax header.)\n\nimport { posix as pathModule } from 'node:path'\nimport * as large from './large-numbers.js'\nimport type { EntryTypeCode, EntryTypeName } from './types.js'\nimport * as types from './types.js'\n\nexport type HeaderData = {\n  path?: string\n  mode?: number\n  uid?: number\n  gid?: number\n  size?: number\n  cksum?: number\n  type?: EntryTypeName | 'Unsupported'\n  linkpath?: string\n  uname?: string\n  gname?: string\n  devmaj?: number\n  devmin?: number\n  atime?: Date\n  ctime?: Date\n  mtime?: Date\n\n  // fields that are common in extended PAX headers, but not in the\n  // \"standard\" tar header block\n  charset?: string\n  comment?: string\n  dev?: number\n  ino?: number\n  nlink?: number\n}\n\nexport class Header implements HeaderData {\n  cksumValid: boolean = false\n  needPax: boolean = false\n  nullBlock: boolean = false\n\n  block?: Buffer\n  path?: string\n  mode?: number\n  uid?: number\n  gid?: number\n  size?: number\n  cksum?: number\n  #type: EntryTypeCode | 'Unsupported' = 'Unsupported'\n  linkpath?: string\n  uname?: string\n  gname?: string\n  devmaj: number = 0\n  devmin: number = 0\n  atime?: Date\n  ctime?: Date\n  mtime?: Date\n\n  charset?: string\n  comment?: string\n\n  constructor(\n    data?: Buffer | HeaderData,\n    off: number = 0,\n    ex?: HeaderData,\n    gex?: HeaderData,\n  ) {\n    if (Buffer.isBuffer(data)) {\n      this.decode(data, off || 0, ex, gex)\n    } else if (data) {\n      this.#slurp(data)\n    }\n  }\n\n  decode(\n    buf: Buffer,\n    off: number,\n    ex?: HeaderData,\n    gex?: HeaderData,\n  ) {\n    if (!off) {\n      off = 0\n    }\n\n    if (!buf || !(buf.length >= off + 512)) {\n      throw new Error('need 512 bytes for header')\n    }\n\n    this.path = decString(buf, off, 100)\n    this.mode = decNumber(buf, off + 100, 8)\n    this.uid = decNumber(buf, off + 108, 8)\n    this.gid = decNumber(buf, off + 116, 8)\n    this.size = decNumber(buf, off + 124, 12)\n    this.mtime = decDate(buf, off + 136, 12)\n    this.cksum = decNumber(buf, off + 148, 12)\n\n    // if we have extended or global extended headers, apply them now\n    // See https://github.com/npm/node-tar/pull/187\n    // Apply global before local, so it overrides\n    if (gex) this.#slurp(gex, true)\n    if (ex) this.#slurp(ex)\n\n    // old tar versions marked dirs as a file with a trailing /\n    const t = decString(buf, off + 156, 1)\n    if (types.isCode(t)) {\n      this.#type = t || '0'\n    }\n    if (this.#type === '0' && this.path.slice(-1) === '/') {\n      this.#type = '5'\n    }\n\n    // tar implementations sometimes incorrectly put the stat(dir).size\n    // as the size in the tarball, even though Directory entries are\n    // not able to have any body at all.  In the very rare chance that\n    // it actually DOES have a body, we weren't going to do anything with\n    // it anyway, and it'll just be a warning about an invalid header.\n    if (this.#type === '5') {\n      this.size = 0\n    }\n\n    this.linkpath = decString(buf, off + 157, 100)\n    if (\n      buf.subarray(off + 257, off + 265).toString() ===\n      'ustar\\u000000'\n    ) {\n      this.uname = decString(buf, off + 265, 32)\n      this.gname = decString(buf, off + 297, 32)\n      /* c8 ignore start */\n      this.devmaj = decNumber(buf, off + 329, 8) ?? 0\n      this.devmin = decNumber(buf, off + 337, 8) ?? 0\n      /* c8 ignore stop */\n      if (buf[off + 475] !== 0) {\n        // definitely a prefix, definitely >130 chars.\n        const prefix = decString(buf, off + 345, 155)\n        this.path = prefix + '/' + this.path\n      } else {\n        const prefix = decString(buf, off + 345, 130)\n        if (prefix) {\n          this.path = prefix + '/' + this.path\n        }\n        this.atime = decDate(buf, off + 476, 12)\n        this.ctime = decDate(buf, off + 488, 12)\n      }\n    }\n\n    let sum = 8 * 0x20\n    for (let i = off; i < off + 148; i++) {\n      sum += buf[i] as number\n    }\n\n    for (let i = off + 156; i < off + 512; i++) {\n      sum += buf[i] as number\n    }\n\n    this.cksumValid = sum === this.cksum\n    if (this.cksum === undefined && sum === 8 * 0x20) {\n      this.nullBlock = true\n    }\n  }\n\n  #slurp(ex: HeaderData, gex: boolean = false) {\n    Object.assign(\n      this,\n      Object.fromEntries(\n        Object.entries(ex).filter(([k, v]) => {\n          // we slurp in everything except for the path attribute in\n          // a global extended header, because that's weird. Also, any\n          // null/undefined values are ignored.\n          return !(\n            v === null ||\n            v === undefined ||\n            (k === 'path' && gex) ||\n            (k === 'linkpath' && gex) ||\n            k === 'global'\n          )\n        }),\n      ),\n    )\n  }\n\n  encode(buf?: Buffer, off: number = 0) {\n    if (!buf) {\n      buf = this.block = Buffer.alloc(512)\n    }\n\n    if (this.#type === 'Unsupported') {\n      this.#type = '0'\n    }\n\n    if (!(buf.length >= off + 512)) {\n      throw new Error('need 512 bytes for header')\n    }\n\n    const prefixSize = this.ctime || this.atime ? 130 : 155\n    const split = splitPrefix(this.path || '', prefixSize)\n    const path = split[0]\n    const prefix = split[1]\n    this.needPax = !!split[2]\n\n    this.needPax = encString(buf, off, 100, path) || this.needPax\n    this.needPax =\n      encNumber(buf, off + 100, 8, this.mode) || this.needPax\n    this.needPax =\n      encNumber(buf, off + 108, 8, this.uid) || this.needPax\n    this.needPax =\n      encNumber(buf, off + 116, 8, this.gid) || this.needPax\n    this.needPax =\n      encNumber(buf, off + 124, 12, this.size) || this.needPax\n    this.needPax =\n      encDate(buf, off + 136, 12, this.mtime) || this.needPax\n    buf[off + 156] = this.#type.charCodeAt(0)\n    this.needPax =\n      encString(buf, off + 157, 100, this.linkpath) || this.needPax\n    buf.write('ustar\\u000000', off + 257, 8)\n    this.needPax =\n      encString(buf, off + 265, 32, this.uname) || this.needPax\n    this.needPax =\n      encString(buf, off + 297, 32, this.gname) || this.needPax\n    this.needPax =\n      encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n    this.needPax =\n      encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n    this.needPax =\n      encString(buf, off + 345, prefixSize, prefix) || this.needPax\n    if (buf[off + 475] !== 0) {\n      this.needPax =\n        encString(buf, off + 345, 155, prefix) || this.needPax\n    } else {\n      this.needPax =\n        encString(buf, off + 345, 130, prefix) || this.needPax\n      this.needPax =\n        encDate(buf, off + 476, 12, this.atime) || this.needPax\n      this.needPax =\n        encDate(buf, off + 488, 12, this.ctime) || this.needPax\n    }\n\n    let sum = 8 * 0x20\n    for (let i = off; i < off + 148; i++) {\n      sum += buf[i] as number\n    }\n\n    for (let i = off + 156; i < off + 512; i++) {\n      sum += buf[i] as number\n    }\n\n    this.cksum = sum\n    encNumber(buf, off + 148, 8, this.cksum)\n    this.cksumValid = true\n\n    return this.needPax\n  }\n\n  get type(): EntryTypeName {\n    return (\n      this.#type === 'Unsupported' ?\n        this.#type\n      : types.name.get(this.#type)) as EntryTypeName\n  }\n\n  get typeKey(): EntryTypeCode | 'Unsupported' {\n    return this.#type\n  }\n\n  set type(type: EntryTypeCode | EntryTypeName | 'Unsupported') {\n    const c = String(types.code.get(type as EntryTypeName))\n    if (types.isCode(c) || c === 'Unsupported') {\n      this.#type = c\n    } else if (types.isCode(type)) {\n      this.#type = type\n    } else {\n      throw new TypeError('invalid entry type: ' + type)\n    }\n  }\n}\n\nconst splitPrefix = (\n  p: string,\n  prefixSize: number,\n): [string, string, boolean] => {\n  const pathSize = 100\n  let pp = p\n  let prefix = ''\n  let ret: undefined | [string, string, boolean] = undefined\n  const root = pathModule.parse(p).root || '.'\n\n  if (Buffer.byteLength(pp) < pathSize) {\n    ret = [pp, prefix, false]\n  } else {\n    // first set prefix to the dir, and path to the base\n    prefix = pathModule.dirname(pp)\n    pp = pathModule.basename(pp)\n\n    do {\n      if (\n        Buffer.byteLength(pp) <= pathSize &&\n        Buffer.byteLength(prefix) <= prefixSize\n      ) {\n        // both fit!\n        ret = [pp, prefix, false]\n      } else if (\n        Buffer.byteLength(pp) > pathSize &&\n        Buffer.byteLength(prefix) <= prefixSize\n      ) {\n        // prefix fits in prefix, but path doesn't fit in path\n        ret = [pp.slice(0, pathSize - 1), prefix, true]\n      } else {\n        // make path take a bit from prefix\n        pp = pathModule.join(pathModule.basename(prefix), pp)\n        prefix = pathModule.dirname(prefix)\n      }\n    } while (prefix !== root && ret === undefined)\n\n    // at this point, found no resolution, just truncate\n    if (!ret) {\n      ret = [p.slice(0, pathSize - 1), '', true]\n    }\n  }\n  return ret\n}\n\nconst decString = (buf: Buffer, off: number, size: number) =>\n  buf\n    .subarray(off, off + size)\n    .toString('utf8')\n    .replace(/\\0.*/, '')\n\nconst decDate = (buf: Buffer, off: number, size: number) =>\n  numToDate(decNumber(buf, off, size))\n\nconst numToDate = (num?: number) =>\n  num === undefined ? undefined : new Date(num * 1000)\n\nconst decNumber = (buf: Buffer, off: number, size: number) =>\n  Number(buf[off]) & 0x80 ?\n    large.parse(buf.subarray(off, off + size))\n  : decSmallNumber(buf, off, size)\n\nconst nanUndef = (value: number) => (isNaN(value) ? undefined : value)\n\nconst decSmallNumber = (buf: Buffer, off: number, size: number) =>\n  nanUndef(\n    parseInt(\n      buf\n        .subarray(off, off + size)\n        .toString('utf8')\n        .replace(/\\0.*$/, '')\n        .trim(),\n      8,\n    ),\n  )\n\n// the maximum encodable as a null-terminated octal, by field size\nconst MAXNUM = {\n  12: 0o77777777777,\n  8: 0o7777777,\n}\n\nconst encNumber = (\n  buf: Buffer,\n  off: number,\n  size: 12 | 8,\n  num?: number,\n) =>\n  num === undefined ? false\n  : num > MAXNUM[size] || num < 0 ?\n    (large.encode(num, buf.subarray(off, off + size)), true)\n  : (encSmallNumber(buf, off, size, num), false)\n\nconst encSmallNumber = (\n  buf: Buffer,\n  off: number,\n  size: number,\n  num: number,\n) => buf.write(octalString(num, size), off, size, 'ascii')\n\nconst octalString = (num: number, size: number) =>\n  padOctal(Math.floor(num).toString(8), size)\n\nconst padOctal = (str: string, size: number) =>\n  (str.length === size - 1 ?\n    str\n  : new Array(size - str.length - 1).join('0') + str + ' ') + '\\0'\n\nconst encDate = (\n  buf: Buffer,\n  off: number,\n  size: 8 | 12,\n  date?: Date,\n) =>\n  date === undefined ? false : (\n    encNumber(buf, off, size, date.getTime() / 1000)\n  )\n\n// enough to fill the longest string we've got\nconst NULLS = new Array(156).join('\\0')\n// pad with nulls, return true if it's longer or non-ascii\nconst encString = (\n  buf: Buffer,\n  off: number,\n  size: number,\n  str?: string,\n) =>\n  str === undefined ? false : (\n    (buf.write(str + NULLS, off, size, 'utf8'),\n    str.length !== Buffer.byteLength(str) || str.length > size)\n  )\n", "// Tar can encode large and negative numbers using a leading byte of\n// 0xff for negative, and 0x80 for positive.\n\nexport const encode = (num: number, buf: Buffer) => {\n  if (!Number.isSafeInteger(num)) {\n    // The number is so large that javascript cannot represent it with integer\n    // precision.\n    throw Error(\n      'cannot encode number outside of javascript safe integer range',\n    )\n  } else if (num < 0) {\n    encodeNegative(num, buf)\n  } else {\n    encodePositive(num, buf)\n  }\n  return buf\n}\n\nconst encodePositive = (num: number, buf: Buffer) => {\n  buf[0] = 0x80\n\n  for (var i = buf.length; i > 1; i--) {\n    buf[i - 1] = num & 0xff\n    num = Math.floor(num / 0x100)\n  }\n}\n\nconst encodeNegative = (num: number, buf: Buffer) => {\n  buf[0] = 0xff\n  var flipped = false\n  num = num * -1\n  for (var i = buf.length; i > 1; i--) {\n    var byte = num & 0xff\n    num = Math.floor(num / 0x100)\n    if (flipped) {\n      buf[i - 1] = onesComp(byte)\n    } else if (byte === 0) {\n      buf[i - 1] = 0\n    } else {\n      flipped = true\n      buf[i - 1] = twosComp(byte)\n    }\n  }\n}\n\nexport const parse = (buf: Buffer) => {\n  const pre = buf[0]\n  const value =\n    pre === 0x80 ? pos(buf.subarray(1, buf.length))\n    : pre === 0xff ? twos(buf)\n    : null\n  if (value === null) {\n    throw Error('invalid base256 encoding')\n  }\n\n  if (!Number.isSafeInteger(value)) {\n    // The number is so large that javascript cannot represent it with integer\n    // precision.\n    throw Error(\n      'parsed number outside of javascript safe integer range',\n    )\n  }\n\n  return value\n}\n\nconst twos = (buf: Buffer) => {\n  var len = buf.length\n  var sum = 0\n  var flipped = false\n  for (var i = len - 1; i > -1; i--) {\n    var byte = Number(buf[i])\n    var f\n    if (flipped) {\n      f = onesComp(byte)\n    } else if (byte === 0) {\n      f = byte\n    } else {\n      flipped = true\n      f = twosComp(byte)\n    }\n    if (f !== 0) {\n      sum -= f * Math.pow(256, len - i - 1)\n    }\n  }\n  return sum\n}\n\nconst pos = (buf: Buffer) => {\n  var len = buf.length\n  var sum = 0\n  for (var i = len - 1; i > -1; i--) {\n    var byte = Number(buf[i])\n    if (byte !== 0) {\n      sum += byte * Math.pow(256, len - i - 1)\n    }\n  }\n  return sum\n}\n\nconst onesComp = (byte: number) => (0xff ^ byte) & 0xff\n\nconst twosComp = (byte: number) => ((0xff ^ byte) + 1) & 0xff\n", "export const isCode = (c: string): c is EntryTypeCode =>\n  name.has(c as EntryTypeCode)\n\nexport const isName = (c: string): c is EntryTypeName =>\n  code.has(c as EntryTypeName)\n\nexport type EntryTypeCode =\n  | '0'\n  | ''\n  | '1'\n  | '2'\n  | '3'\n  | '4'\n  | '5'\n  | '6'\n  | '7'\n  | 'g'\n  | 'x'\n  | 'A'\n  | 'D'\n  | 'I'\n  | 'K'\n  | 'L'\n  | 'M'\n  | 'N'\n  | 'S'\n  | 'V'\n  | 'X'\n\nexport type EntryTypeName =\n  | 'File'\n  | 'OldFile'\n  | 'Link'\n  | 'SymbolicLink'\n  | 'CharacterDevice'\n  | 'BlockDevice'\n  | 'Directory'\n  | 'FIFO'\n  | 'ContiguousFile'\n  | 'GlobalExtendedHeader'\n  | 'ExtendedHeader'\n  | 'SolarisACL'\n  | 'GNUDumpDir'\n  | 'Inode'\n  | 'NextFileHasLongLinkpath'\n  | 'NextFileHasLongPath'\n  | 'ContinuationFile'\n  | 'OldGnuLongPath'\n  | 'SparseFile'\n  | 'TapeVolumeHeader'\n  | 'OldExtendedHeader'\n  | 'Unsupported'\n\n// map types from key to human-friendly name\nexport const name = new Map<EntryTypeCode, EntryTypeName>([\n  ['0', 'File'],\n  // same as File\n  ['', 'OldFile'],\n  ['1', 'Link'],\n  ['2', 'SymbolicLink'],\n  // Devices and FIFOs aren't fully supported\n  // they are parsed, but skipped when unpacking\n  ['3', 'CharacterDevice'],\n  ['4', 'BlockDevice'],\n  ['5', 'Directory'],\n  ['6', 'FIFO'],\n  // same as File\n  ['7', 'ContiguousFile'],\n  // pax headers\n  ['g', 'GlobalExtendedHeader'],\n  ['x', 'ExtendedHeader'],\n  // vendor-specific stuff\n  // skip\n  ['A', 'SolarisACL'],\n  // like 5, but with data, which should be skipped\n  ['D', 'GNUDumpDir'],\n  // metadata only, skip\n  ['I', 'Inode'],\n  // data = link path of next file\n  ['K', 'NextFileHasLongLinkpath'],\n  // data = path of next file\n  ['L', 'NextFileHasLongPath'],\n  // skip\n  ['M', 'ContinuationFile'],\n  // like L\n  ['N', 'OldGnuLongPath'],\n  // skip\n  ['S', 'SparseFile'],\n  // skip\n  ['V', 'TapeVolumeHeader'],\n  // like x\n  ['X', 'OldExtendedHeader'],\n])\n\n// map the other direction\nexport const code = new Map<EntryTypeName, EntryTypeCode>(\n  Array.from(name).map(kv => [kv[1], kv[0]]),\n)\n", "import { basename } from 'node:path'\nimport { Header, HeaderData } from './header.js'\n\nexport class Pax implements HeaderData {\n  atime?: Date\n  mtime?: Date\n  ctime?: Date\n\n  charset?: string\n  comment?: string\n\n  gid?: number\n  uid?: number\n\n  gname?: string\n  uname?: string\n  linkpath?: string\n  dev?: number\n  ino?: number\n  nlink?: number\n  path?: string\n  size?: number\n  mode?: number\n\n  global: boolean\n\n  constructor(obj: HeaderData, global: boolean = false) {\n    this.atime = obj.atime\n    this.charset = obj.charset\n    this.comment = obj.comment\n    this.ctime = obj.ctime\n    this.dev = obj.dev\n    this.gid = obj.gid\n    this.global = global\n    this.gname = obj.gname\n    this.ino = obj.ino\n    this.linkpath = obj.linkpath\n    this.mtime = obj.mtime\n    this.nlink = obj.nlink\n    this.path = obj.path\n    this.size = obj.size\n    this.uid = obj.uid\n    this.uname = obj.uname\n  }\n\n  encode() {\n    const body = this.encodeBody()\n    if (body === '') {\n      return Buffer.allocUnsafe(0)\n    }\n\n    const bodyLen = Buffer.byteLength(body)\n    // round up to 512 bytes\n    // add 512 for header\n    const bufLen = 512 * Math.ceil(1 + bodyLen / 512)\n    const buf = Buffer.allocUnsafe(bufLen)\n\n    // 0-fill the header section, it might not hit every field\n    for (let i = 0; i < 512; i++) {\n      buf[i] = 0\n    }\n\n    new Header({\n      // XXX split the path\n      // then the path should be PaxHeader + basename, but less than 99,\n      // prepend with the dirname\n      /* c8 ignore start */\n      path: ('PaxHeader/' + basename(this.path ?? '')).slice(0, 99),\n      /* c8 ignore stop */\n      mode: this.mode || 0o644,\n      uid: this.uid,\n      gid: this.gid,\n      size: bodyLen,\n      mtime: this.mtime,\n      type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader',\n      linkpath: '',\n      uname: this.uname || '',\n      gname: this.gname || '',\n      devmaj: 0,\n      devmin: 0,\n      atime: this.atime,\n      ctime: this.ctime,\n    }).encode(buf)\n\n    buf.write(body, 512, bodyLen, 'utf8')\n\n    // null pad after the body\n    for (let i = bodyLen + 512; i < buf.length; i++) {\n      buf[i] = 0\n    }\n\n    return buf\n  }\n\n  encodeBody() {\n    return (\n      this.encodeField('path') +\n      this.encodeField('ctime') +\n      this.encodeField('atime') +\n      this.encodeField('dev') +\n      this.encodeField('ino') +\n      this.encodeField('nlink') +\n      this.encodeField('charset') +\n      this.encodeField('comment') +\n      this.encodeField('gid') +\n      this.encodeField('gname') +\n      this.encodeField('linkpath') +\n      this.encodeField('mtime') +\n      this.encodeField('size') +\n      this.encodeField('uid') +\n      this.encodeField('uname')\n    )\n  }\n\n  encodeField(field: keyof Pax): string {\n    if (this[field] === undefined) {\n      return ''\n    }\n    const r = this[field]\n    const v = r instanceof Date ? r.getTime() / 1000 : r\n    const s =\n      ' ' +\n      (field === 'dev' || field === 'ino' || field === 'nlink' ?\n        'SCHILY.'\n      : '') +\n      field +\n      '=' +\n      v +\n      '\\n'\n    const byteLen = Buffer.byteLength(s)\n    // the digits includes the length of the digits in ascii base-10\n    // so if it's 9 characters, then adding 1 for the 9 makes it 10\n    // which makes it 11 chars.\n    let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1\n    if (byteLen + digits >= Math.pow(10, digits)) {\n      digits += 1\n    }\n    const len = digits + byteLen\n    return len + s\n  }\n\n  static parse(str: string, ex?: HeaderData, g: boolean = false) {\n    return new Pax(merge(parseKV(str), ex), g)\n  }\n}\n\nconst merge = (a: HeaderData, b?: HeaderData) =>\n  b ? Object.assign({}, b, a) : a\n\nconst parseKV = (str: string) =>\n  str\n    .replace(/\\n$/, '')\n    .split('\\n')\n    .reduce(parseKVLine, Object.create(null))\n\nconst parseKVLine = (set: Record<string, any>, line: string) => {\n  const n = parseInt(line, 10)\n\n  // XXX Values with \\n in them will fail this.\n  // Refactor to not be a naive line-by-line parse.\n  if (n !== Buffer.byteLength(line) + 1) {\n    return set\n  }\n\n  line = line.slice((n + ' ').length)\n  const kv = line.split('=')\n  const r = kv.shift()\n\n  if (!r) {\n    return set\n  }\n\n  const k = r.replace(/^SCHILY\\.(dev|ino|nlink)/, '$1')\n\n  const v = kv.join('=')\n  set[k] =\n    /^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(k) ?\n      new Date(Number(v) * 1000)\n    : /^[0-9]+$/.test(v) ? +v\n    : v\n  return set\n}\n", "// on windows, either \\ or / are valid directory separators.\n// on unix, \\ is a valid character in filenames.\n// so, on windows, and only on windows, we replace all \\ chars with /,\n// so that we can use / as our one and only directory separator char.\n\nconst platform =\n  process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\n\nexport const normalizeWindowsPath =\n  platform !== 'win32' ?\n    (p: string) => p\n  : (p: string) => p && p.replace(/\\\\/g, '/')\n", "import { Minipass } from 'minipass'\nimport { Header } from './header.js'\nimport { normalizeWindowsPath } from './normalize-windows-path.js'\nimport { Pax } from './pax.js'\nimport { EntryTypeName } from './types.js'\n\nexport class ReadEntry extends Minipass<Buffer, Buffer> {\n  extended?: Pax\n  globalExtended?: Pax\n  header: Header\n  startBlockSize: number\n  blockRemain: number\n  remain: number\n  type: EntryTypeName\n  meta: boolean = false\n  ignore: boolean = false\n  path: string\n  mode?: number\n  uid?: number\n  gid?: number\n  uname?: string\n  gname?: string\n  size: number = 0\n  mtime?: Date\n  atime?: Date\n  ctime?: Date\n  linkpath?: string\n\n  dev?: number\n  ino?: number\n  nlink?: number\n  invalid: boolean = false\n  absolute?: string\n  unsupported: boolean = false\n\n  constructor(header: Header, ex?: Pax, gex?: Pax) {\n    super({})\n    // read entries always start life paused.  this is to avoid the\n    // situation where Minipass's auto-ending empty streams results\n    // in an entry ending before we're ready for it.\n    this.pause()\n    this.extended = ex\n    this.globalExtended = gex\n    this.header = header\n    /* c8 ignore start */\n    this.remain = header.size ?? 0\n    /* c8 ignore stop */\n    this.startBlockSize = 512 * Math.ceil(this.remain / 512)\n    this.blockRemain = this.startBlockSize\n    this.type = header.type\n    switch (this.type) {\n      case 'File':\n      case 'OldFile':\n      case 'Link':\n      case 'SymbolicLink':\n      case 'CharacterDevice':\n      case 'BlockDevice':\n      case 'Directory':\n      case 'FIFO':\n      case 'ContiguousFile':\n      case 'GNUDumpDir':\n        break\n\n      case 'NextFileHasLongLinkpath':\n      case 'NextFileHasLongPath':\n      case 'OldGnuLongPath':\n      case 'GlobalExtendedHeader':\n      case 'ExtendedHeader':\n      case 'OldExtendedHeader':\n        this.meta = true\n        break\n\n      // NOTE: gnutar and bsdtar treat unrecognized types as 'File'\n      // it may be worth doing the same, but with a warning.\n      default:\n        this.ignore = true\n    }\n\n    /* c8 ignore start */\n    if (!header.path) {\n      throw new Error('no path provided for tar.ReadEntry')\n    }\n    /* c8 ignore stop */\n\n    this.path = normalizeWindowsPath(header.path) as string\n    this.mode = header.mode\n    if (this.mode) {\n      this.mode = this.mode & 0o7777\n    }\n    this.uid = header.uid\n    this.gid = header.gid\n    this.uname = header.uname\n    this.gname = header.gname\n    this.size = this.remain\n    this.mtime = header.mtime\n    this.atime = header.atime\n    this.ctime = header.ctime\n    /* c8 ignore start */\n    this.linkpath =\n      header.linkpath ?\n        normalizeWindowsPath(header.linkpath)\n      : undefined\n    /* c8 ignore stop */\n    this.uname = header.uname\n    this.gname = header.gname\n\n    if (ex) {\n      this.#slurp(ex)\n    }\n    if (gex) {\n      this.#slurp(gex, true)\n    }\n  }\n\n  write(data: Buffer) {\n    const writeLen = data.length\n    if (writeLen > this.blockRemain) {\n      throw new Error('writing more to entry than is appropriate')\n    }\n\n    const r = this.remain\n    const br = this.blockRemain\n    this.remain = Math.max(0, r - writeLen)\n    this.blockRemain = Math.max(0, br - writeLen)\n    if (this.ignore) {\n      return true\n    }\n\n    if (r >= writeLen) {\n      return super.write(data)\n    }\n\n    // r < writeLen\n    return super.write(data.subarray(0, r))\n  }\n\n  #slurp(ex: Pax, gex: boolean = false) {\n    if (ex.path) ex.path = normalizeWindowsPath(ex.path)\n    if (ex.linkpath) ex.linkpath = normalizeWindowsPath(ex.linkpath)\n    Object.assign(\n      this,\n      Object.fromEntries(\n        Object.entries(ex).filter(([k, v]) => {\n          // we slurp in everything except for the path attribute in\n          // a global extended header, because that's weird. Also, any\n          // null/undefined values are ignored.\n          return !(\n            v === null ||\n            v === undefined ||\n            (k === 'path' && gex)\n          )\n        }),\n      ),\n    )\n  }\n}\n", "import { type Minipass } from 'minipass'\n\n/** has a warn method */\nexport type Warner = {\n  warn(code: string, message: string | Error, data: any): void\n  file?: string\n  cwd?: string\n  strict?: boolean\n\n  emit(\n    event: 'warn',\n    code: string,\n    message: string,\n    data?: WarnData,\n  ): void\n  emit(event: 'error', error: TarError): void\n}\n\nexport type WarnEvent = Minipass.Events & {\n  warn: [code: string, message: string, data: WarnData]\n}\n\nexport type WarnData = {\n  file?: string\n  cwd?: string\n  code?: string\n  tarCode?: string\n  recoverable?: boolean\n  [k: string]: any\n}\n\nexport type TarError = Error & WarnData\n\nexport const warnMethod = (\n  self: Warner,\n  code: string,\n  message: string | Error,\n  data: WarnData = {},\n) => {\n  if (self.file) {\n    data.file = self.file\n  }\n  if (self.cwd) {\n    data.cwd = self.cwd\n  }\n  data.code =\n    (message instanceof Error &&\n      (message as NodeJS.ErrnoException).code) ||\n    code\n  data.tarCode = code\n  if (!self.strict && data.recoverable !== false) {\n    if (message instanceof Error) {\n      data = Object.assign(message, data)\n      message = message.message\n    }\n    self.emit('warn', code, message, data)\n  } else if (message instanceof Error) {\n    self.emit('error', Object.assign(message, data))\n  } else {\n    self.emit(\n      'error',\n      Object.assign(new Error(`${code}: ${message}`), data),\n    )\n  }\n}\n", "// warning: extremely hot code path.\n// This has been meticulously optimized for use\n// within npm install on large package trees.\n// Do not edit without careful benchmarking.\nexport const stripTrailingSlashes = (str: string) => {\n  let i = str.length - 1\n  let slashesStart = -1\n  while (i > -1 && str.charAt(i) === '/') {\n    slashesStart = i\n    i--\n  }\n  return slashesStart === -1 ? str : str.slice(0, slashesStart)\n}\n", "import os from \"node:os\";\n\nimport * as errors from \"./errors.js\";\nimport type { PackageManifest } from \"./read-manifest.js\";\nimport {\n  ACCESS_PUBLIC,\n  ACCESS_RESTRICTED,\n  STRATEGY_UPGRADE,\n  STRATEGY_ALL,\n  type Access,\n  type Strategy,\n  type Options,\n  type Logger,\n} from \"./options.js\";\n\nconst REGISTRY_NPM = \"https://registry.npmjs.org/\";\nexport const TAG_LATEST = \"latest\";\n\n/** Normalized and sanitized auth, publish, and runtime configurations. */\nexport interface NormalizedOptions {\n  registry: URL;\n  token: string;\n  tag: ConfigValue<string>;\n  access: ConfigValue<Access | undefined>;\n  provenance: ConfigValue<boolean>;\n  ignoreScripts: ConfigValue<boolean>;\n  dryRun: ConfigValue<boolean>;\n  strategy: ConfigValue<Strategy>;\n  logger: Logger | undefined;\n  temporaryDirectory: string;\n}\n\n/** A config value, and whether that value differs from default. */\nexport interface ConfigValue<TValue> {\n  value: TValue;\n  isDefault: boolean;\n}\n\n/**\n * Normalizes and sanitizes options, and fills-in any default values.\n *\n * @param manifest Package metadata from package.json.\n * @param options User-input options.\n * @returns Validated auth and publish configuration.\n */\nexport function normalizeOptions(\n  manifest: PackageManifest,\n  options: Options\n): NormalizedOptions {\n  const defaultTag = manifest.publishConfig?.tag ?? TAG_LATEST;\n\n  const defaultRegistry = manifest.publishConfig?.registry ?? REGISTRY_NPM;\n\n  const defaultAccess =\n    manifest.publishConfig?.access ??\n    (manifest.scope === undefined ? ACCESS_PUBLIC : undefined);\n\n  const defaultProvenance = manifest.publishConfig?.provenance ?? false;\n\n  return {\n    token: validateToken(options.token),\n    registry: validateRegistry(options.registry ?? defaultRegistry),\n    tag: setValue(options.tag, defaultTag, validateTag),\n    access: setValue(options.access, defaultAccess, validateAccess),\n    provenance: setValue(options.provenance, defaultProvenance, Boolean),\n    ignoreScripts: setValue(options.ignoreScripts, true, Boolean),\n    dryRun: setValue(options.dryRun, false, Boolean),\n    strategy: setValue(options.strategy, STRATEGY_ALL, validateStrategy),\n    logger: options.logger,\n    temporaryDirectory: options.temporaryDirectory ?? os.tmpdir(),\n  };\n}\n\nconst setValue = <TValue>(\n  value: unknown,\n  defaultValue: unknown,\n  validate: (value: unknown) => TValue\n): ConfigValue<TValue> => ({\n  value: validate(value ?? defaultValue),\n  isDefault: value === undefined,\n});\n\nconst validateToken = (value: unknown): string => {\n  if (typeof value === \"string\" && value.length > 0) {\n    return value;\n  }\n\n  throw new errors.InvalidTokenError();\n};\n\nconst validateRegistry = (value: unknown): URL => {\n  try {\n    return new URL(value as string | URL);\n  } catch {\n    throw new errors.InvalidRegistryUrlError(value);\n  }\n};\n\nconst validateTag = (value: unknown): string => {\n  if (typeof value === \"string\") {\n    const trimmedValue = value.trim();\n    const encodedValue = encodeURIComponent(trimmedValue);\n\n    if (trimmedValue.length > 0 && trimmedValue === encodedValue) {\n      return value;\n    }\n  }\n\n  throw new errors.InvalidTagError(value);\n};\n\nconst validateAccess = (value: unknown): Access | undefined => {\n  if (\n    value === undefined ||\n    value === ACCESS_PUBLIC ||\n    value === ACCESS_RESTRICTED\n  ) {\n    return value;\n  }\n\n  throw new errors.InvalidAccessError(value);\n};\n\nconst validateStrategy = (value: unknown): Strategy => {\n  if (value === STRATEGY_ALL || value === STRATEGY_UPGRADE) {\n    return value;\n  }\n\n  throw new errors.InvalidStrategyError(value);\n};\n", "import childProcess from \"node:child_process\";\nimport os from \"node:os\";\n\nimport * as errors from \"../errors.js\";\nimport type { Logger } from \"../options.js\";\nimport type { NpmCliEnvironment } from \"./use-npm-environment.js\";\n\nexport interface NpmCliOptions {\n  environment: NpmCliEnvironment;\n  ignoreScripts: boolean;\n  logger?: Logger | undefined;\n}\n\nexport interface NpmCallResult<CommandT extends string> {\n  successData: SuccessData<CommandT> | undefined;\n  errorCode: string | undefined;\n  error: Error | undefined;\n}\n\ntype SuccessData<T extends string> = T extends typeof VIEW\n  ? NpmViewData\n  : T extends typeof PUBLISH\n    ? NpmPublishData\n    : unknown;\n\nexport interface NpmViewData {\n  \"dist-tags\": Record<string, string>;\n  versions: string[];\n}\nexport interface NpmPublishData {\n  id: string;\n  files: { path: string; size: number }[];\n}\n\nexport const VIEW = \"view\";\nexport const PUBLISH = \"publish\";\n\nexport const E404 = \"E404\";\nexport const EPUBLISHCONFLICT = \"EPUBLISHCONFLICT\";\n\nconst IS_WINDOWS = os.platform() === \"win32\";\nconst NPM = IS_WINDOWS ? \"npm.cmd\" : \"npm\";\nconst JSON_MATCH_RE = /(\\{[\\s\\S]*\\})/mu;\n\nconst baseArguments = (options: NpmCliOptions) =>\n  options.ignoreScripts ? [\"--ignore-scripts\", \"--json\"] : [\"--json\"];\n\n/**\n * Call the NPM CLI in JSON mode.\n *\n * @param command The command of the NPM CLI to call\n * @param cliArguments Any arguments to send to the command\n * @param options Customize environment variables or add an error handler.\n * @returns The parsed JSON, or stdout if unparsable.\n */\nexport async function callNpmCli<CommandT extends string>(\n  command: CommandT,\n  cliArguments: string[],\n  options: NpmCliOptions\n): Promise<NpmCallResult<CommandT>> {\n  const { stdout, stderr, exitCode } = await execNpm(\n    [command, ...baseArguments(options), ...cliArguments],\n    options.environment,\n    options.logger\n  );\n\n  let successData;\n  let errorCode;\n  let error;\n\n  if (exitCode === 0) {\n    successData = parseJson<SuccessData<CommandT>>(stdout);\n  } else {\n    const errorPayload = parseJson<{ error?: { code?: unknown } }>(\n      stdout,\n      stderr\n    );\n\n    if (errorPayload?.error?.code) {\n      errorCode = String(errorPayload.error.code).toUpperCase();\n    }\n\n    error = new errors.NpmCallError(command, exitCode, stderr);\n  }\n\n  return { successData, errorCode, error };\n}\n\n/**\n * Execute the npm CLI.\n *\n * @param commandArguments Npm subcommand and arguments.\n * @param environment Environment variables.\n * @param logger Optional logger.\n * @returns Stdout, stderr, and the exit code.\n */\nasync function execNpm(\n  commandArguments: string[],\n  environment: Record<string, string>,\n  logger?: Logger\n): Promise<{ stdout: string; stderr: string; exitCode: number }> {\n  logger?.debug?.(`Running command: ${NPM} ${commandArguments.join(\" \")}`);\n\n  return new Promise((resolve) => {\n    let stdout = \"\";\n    let stderr = \"\";\n\n    const npm = childProcess.spawn(NPM, commandArguments, {\n      env: { ...process.env, ...environment },\n      shell: IS_WINDOWS,\n    });\n\n    npm.stdout.on(\"data\", (data: string) => (stdout += data));\n    npm.stderr.on(\"data\", (data: string) => (stderr += data));\n    npm.on(\"close\", (code) => {\n      logger?.debug?.(`Received stdout: ${stdout}`);\n      logger?.debug?.(`Received stderr: ${stderr}`);\n\n      resolve({\n        stdout: stdout.trim(),\n        stderr: stderr.trim(),\n        exitCode: code ?? 0,\n      });\n    });\n  });\n}\n\n/**\n * Parse CLI outputs for JSON data.\n *\n * Certain versions of the npm CLI may intersperse JSON with human-readable\n * output, which this function accounts for.\n *\n * @param values CLI outputs to check\n * @returns Parsed JSON, if able to parse.\n */\nfunction parseJson<TParsed>(...values: string[]): TParsed | undefined {\n  for (const value of values) {\n    const jsonValue = JSON_MATCH_RE.exec(value)?.[1];\n\n    if (jsonValue) {\n      try {\n        return JSON.parse(jsonValue) as TParsed;\n      } catch {\n        return undefined;\n      }\n    }\n  }\n\n  return undefined;\n}\n", "import fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nimport type { PackageManifest } from \"../read-manifest.js\";\nimport type { NormalizedOptions } from \"../normalize-options.js\";\n\nexport type NpmCliEnvironment = Record<string, string>;\n\nexport type NpmCliTask<TReturn> = (\n  manifest: PackageManifest,\n  options: NormalizedOptions,\n  environment: NpmCliEnvironment\n) => Promise<TReturn>;\n\n/**\n * Create a temporary .npmrc file with the given auth token, and call a task\n * with env vars set to use that .npmrc.\n *\n * @param manifest Pacakge metadata.\n * @param options Configuration options.\n * @param task A function called with the configured environment. After the\n *   function resolves, the temporary .npmrc file will be removed.\n * @returns The resolved value of `task`\n */\nexport async function useNpmEnvironment<TReturn>(\n  manifest: PackageManifest,\n  options: NormalizedOptions,\n  task: NpmCliTask<TReturn>\n): Promise<TReturn> {\n  const { registry, token, logger, temporaryDirectory } = options;\n  const { host, origin, pathname } = registry;\n  const pathnameWithSlash = pathname.endsWith(\"/\") ? pathname : `${pathname}/`;\n  const config = [\n    \"; created by jsdevtools/npm-publish\",\n    `//${host}${pathnameWithSlash}:_authToken=\\${NODE_AUTH_TOKEN}`,\n    `registry=${origin}${pathnameWithSlash}`,\n    \"\",\n  ].join(os.EOL);\n\n  const npmrcDirectory = await fs.mkdtemp(\n    path.join(temporaryDirectory, \"npm-publish-\")\n  );\n  const npmrc = path.join(npmrcDirectory, \".npmrc\");\n  const environment = { NODE_AUTH_TOKEN: token, npm_config_userconfig: npmrc };\n\n  await fs.writeFile(npmrc, config, \"utf8\");\n\n  logger?.debug?.(`Temporary .npmrc created at ${npmrc}\\n${config}`);\n\n  try {\n    return await task(manifest, options, environment);\n  } finally {\n    await fs.rm(npmrcDirectory, { force: true, recursive: true });\n  }\n}\n", "import semverDifference from \"semver/functions/diff\";\nimport semverGreaterThan from \"semver/functions/gt\";\nimport semverValid from \"semver/functions/valid\";\n\nimport { STRATEGY_ALL } from \"../options.js\";\nimport type { NormalizedOptions } from \"../normalize-options.js\";\nimport { INITIAL, DIFFERENT, type ReleaseType } from \"../results.js\";\nimport type { NpmViewData } from \"../npm/index.js\";\n\nexport interface VersionComparison {\n  type: ReleaseType | undefined;\n  oldVersion: string | undefined;\n}\n\n/**\n * Compare previously published versions with the package's current version.\n *\n * @param currentVersion The current package version.\n * @param publishedVersions The versions that have already been published.\n * @param options Configuration options\n * @returns The release type and previous version.\n */\nexport function compareVersions(\n  currentVersion: string,\n  publishedVersions: NpmViewData | undefined,\n  options: NormalizedOptions\n): VersionComparison {\n  const { versions, \"dist-tags\": tags } = publishedVersions ?? {};\n  const { strategy, tag: publishTag } = options;\n  const oldVersion = semverValid(tags?.[publishTag.value]) ?? undefined;\n  const isUnique = !versions?.includes(currentVersion);\n  let type: ReleaseType | undefined;\n\n  if (isUnique) {\n    if (!oldVersion) {\n      type = INITIAL;\n    } else if (semverGreaterThan(currentVersion, oldVersion)) {\n      type = semverDifference(currentVersion, oldVersion) ?? DIFFERENT;\n    } else if (strategy.value === STRATEGY_ALL) {\n      type = DIFFERENT;\n    }\n  }\n\n  return { type, oldVersion };\n}\n", "import type { NormalizedOptions } from \"../normalize-options.js\";\n\n/**\n * Given a package name and publish configuration, get the NPM CLI view\n * arguments.\n *\n * @param packageName Package name.\n * @param options Publish configuration.\n * @param retryWithTag Include a non-latest tag in the package spec for a rety\n *   attempt.\n * @returns Arguments to pass to the NPM CLI. If `retryWithTag` is true, but the\n *   publish config is using the `latest` tag, will return `undefined`.\n */\nexport function getViewArguments(\n  packageName: string,\n  options: NormalizedOptions,\n  retryWithTag = false\n): string[] {\n  const packageSpec = retryWithTag\n    ? `${packageName}@${options.tag.value}`\n    : packageName;\n\n  return [packageSpec, \"dist-tags\", \"versions\"];\n}\n\n/**\n * Given a publish configuration, get the NPM CLI publish arguments.\n *\n * @param packageSpec Package specification path.\n * @param options Publish configuration.\n * @returns Arguments to pass to the NPM CLI.\n */\nexport function getPublishArguments(\n  packageSpec: string,\n  options: NormalizedOptions\n): string[] {\n  const { tag, access, dryRun, provenance } = options;\n  const publishArguments = [];\n\n  if (packageSpec.length > 0) {\n    publishArguments.push(packageSpec);\n  }\n\n  if (!tag.isDefault) {\n    publishArguments.push(\"--tag\", tag.value);\n  }\n\n  if (!access.isDefault && access.value) {\n    publishArguments.push(\"--access\", access.value);\n  }\n\n  if (!provenance.isDefault && provenance.value) {\n    publishArguments.push(\"--provenance\");\n  }\n\n  if (!dryRun.isDefault && dryRun.value) {\n    publishArguments.push(\"--dry-run\");\n  }\n\n  return publishArguments;\n}\n", "import type { PackageManifest } from \"../read-manifest.js\";\nimport type { NormalizedOptions } from \"../normalize-options.js\";\nimport {\n  VIEW,\n  PUBLISH,\n  E404,\n  EPUBLISHCONFLICT,\n  callNpmCli,\n  type NpmCliEnvironment,\n} from \"../npm/index.js\";\nimport { compareVersions, type VersionComparison } from \"./compare-versions.js\";\nimport { getViewArguments, getPublishArguments } from \"./get-arguments.js\";\n\nexport interface PublishResult extends VersionComparison {\n  id: string | undefined;\n  files: PublishFile[];\n}\n\nexport interface PublishFile {\n  path: string;\n  size: number;\n}\n\n/**\n * Get the currently published versions of a package and publish if needed.\n *\n * @param manifest The package to potentially publish.\n * @param options Configuration options.\n * @param environment Environment variables for the npm cli.\n * @returns Information about the publish, including if it occurred.\n */\nexport async function compareAndPublish(\n  manifest: PackageManifest,\n  options: NormalizedOptions,\n  environment: NpmCliEnvironment\n): Promise<PublishResult> {\n  const { name, version, packageSpec } = manifest;\n  const cliOptions = {\n    environment,\n    ignoreScripts: options.ignoreScripts.value,\n    logger: options.logger,\n  };\n\n  const viewArguments = getViewArguments(name, options);\n  const publishArguments = getPublishArguments(packageSpec, options);\n  let viewCall = await callNpmCli(VIEW, viewArguments, cliOptions);\n\n  // `npm view` will succeed with no output the package exists in the registry\n  // with no `latest` tag. This is only possible with third-party registries.\n  // https://github.com/npm/cli/issues/6408\n  if (!viewCall.successData && !viewCall.error) {\n    // Retry the call to `npm view` with the configured publish tag,\n    // to at least try to get something.\n    const viewWithTagArguments = getViewArguments(name, options, true);\n    viewCall = await callNpmCli(VIEW, viewWithTagArguments, cliOptions);\n  }\n\n  if (viewCall.error && viewCall.errorCode !== E404) {\n    throw viewCall.error;\n  }\n\n  const isDryRun = options.dryRun.value;\n  const comparison = compareVersions(version, viewCall.successData, options);\n  const publishCall =\n    comparison.type ?? isDryRun\n      ? await callNpmCli(PUBLISH, publishArguments, cliOptions)\n      : { successData: undefined, errorCode: undefined, error: undefined };\n\n  if (publishCall.error && publishCall.errorCode !== EPUBLISHCONFLICT) {\n    throw publishCall.error;\n  }\n\n  const { successData: publishData } = publishCall;\n\n  return {\n    id: isDryRun && !comparison.type ? undefined : publishData?.id,\n    files: publishData?.files ?? [],\n    type: publishData ? comparison.type : undefined,\n    oldVersion: comparison.oldVersion,\n  };\n}\n", "import os from \"node:os\";\n\nimport type { PublishResult } from \"./compare-and-publish/index.js\";\nimport type { PackageManifest } from \"./read-manifest.js\";\nimport type { NormalizedOptions } from \"./normalize-options.js\";\n\nconst DRY_RUN_BANNER =\n  \"=== DRY RUN === DRY RUN === DRY RUN === DRY RUN === DRY RUN ===\";\n\nconst CONTENTS_BANNER = \"=== Contents ===\";\n\n/**\n * Format publish results into a string.\n *\n * @param manifest Package manifest\n * @param options Configuration options.\n * @param result Results from running npm publish.\n * @returns Formatted string.\n */\nexport function formatPublishResult(\n  manifest: PackageManifest,\n  options: NormalizedOptions,\n  result: PublishResult\n): string {\n  const lines = [];\n\n  lines.push(\n    result.id === undefined\n      ? `\uD83D\uDE45\u200D\u2640\uFE0F ${manifest.name}@${manifest.version} already published.`\n      : `\uD83D\uDCE6 ${result.id}`\n  );\n\n  if (result.files.length > 0) {\n    lines.push(\"\", CONTENTS_BANNER);\n  }\n\n  for (const { path, size } of result.files) {\n    lines.push(`${formatSize(size)}\\t${path}`);\n  }\n\n  return (\n    options.dryRun.value\n      ? [DRY_RUN_BANNER, \"\", ...lines, \"\", DRY_RUN_BANNER]\n      : lines\n  ).join(os.EOL);\n}\n\nconst formatSize = (size: number): string => {\n  if (size < 1000) {\n    return `${size} B`;\n  }\n  if (size < 1_000_000) {\n    return `${(size / 1000).toFixed(1)} kB`;\n  }\n\n  return `${(size / 1_000_000).toFixed(1)} MB`;\n};\n", "import { readManifest } from \"./read-manifest.js\";\nimport { normalizeOptions } from \"./normalize-options.js\";\nimport { useNpmEnvironment } from \"./npm/index.js\";\nimport { compareAndPublish } from \"./compare-and-publish/index.js\";\nimport { formatPublishResult } from \"./format-publish-result.js\";\nimport type { Options } from \"./options.js\";\nimport type { Results } from \"./results.js\";\n\n/**\n * Publishes a package to NPM, if its version has changed.\n *\n * @param options Publish options.\n * @returns Release metadata.\n */\nexport async function npmPublish(options: Options): Promise<Results> {\n  const manifest = await readManifest(options.package);\n  const normalizedOptions = normalizeOptions(manifest, options);\n  const publishResult = await useNpmEnvironment(\n    manifest,\n    normalizedOptions,\n    compareAndPublish\n  );\n\n  normalizedOptions.logger?.info?.(\n    formatPublishResult(manifest, normalizedOptions, publishResult)\n  );\n\n  return {\n    id: publishResult.id,\n    type: publishResult.type,\n    oldVersion: publishResult.oldVersion,\n    name: manifest.name,\n    version: manifest.version,\n    registry: normalizedOptions.registry,\n    tag: normalizedOptions.tag.value,\n    access: normalizedOptions.access.value,\n    strategy: normalizedOptions.strategy.value,\n    dryRun: normalizedOptions.dryRun.value,\n  };\n}\n", "/** Wrapper module for @actions/core */\nimport {\n  getInput as ghGetInput,\n  setOutput as ghSetOutput,\n  setSecret as ghSetSecret,\n  setFailed as ghSetFailed,\n  debug as ghLogDebug,\n  info as ghLogInfo,\n  error as ghLogError,\n} from \"@actions/core\";\n\nimport type { Logger } from \"../options.js\";\n\n/** Logger using the methods from @actions/core. */\nexport const logger: Logger = {\n  debug: ghLogDebug,\n  info: ghLogInfo,\n  error: ghLogError,\n};\n\n/**\n * Get input by name.\n *\n * @param name Input name\n * @returns The input string value, or undefined if not set\n */\nexport function getInput<T extends string>(name: string): T | undefined {\n  const inputString = ghGetInput(name);\n  return inputString.length > 0 ? (inputString as T) : undefined;\n}\n\n/**\n * Get a required secret input by name.\n *\n * @param name Input name\n * @returns The input secret value.\n */\nexport function getRequiredSecretInput(name: string): string {\n  const inputString = ghGetInput(name, { required: true });\n  ghSetSecret(inputString);\n  return inputString;\n}\n\n/**\n * Get a boolean input by name.\n *\n * @param name Input name\n * @returns True if value is \"true\", false if \"false\", undefined if unset\n */\nexport function getBooleanInput(name: string): boolean | undefined {\n  const inputString = ghGetInput(name).toLowerCase();\n\n  if (inputString === \"true\") return true;\n  if (inputString === \"false\") return false;\n  return undefined;\n}\n\n/**\n * Set the action as failed due to an error.\n *\n * @param error An value from a `catch`\n */\nexport function setFailed(error: unknown) {\n  ghSetFailed(error as Error);\n}\n\n/**\n * Set an output by name.\n *\n * @param name Output name\n * @param value Output value\n */\nexport function setOutput(name: string, value: string | boolean): void;\n\n/**\n * Set an output by name.\n *\n * @param name Output name\n * @param value Output value\n * @param defaultValue Default value if value is undefined.\n */\nexport function setOutput(\n  name: string,\n  value: string | boolean | undefined,\n  defaultValue: string | boolean\n): void;\n\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function setOutput(\n  name: string,\n  value: string | boolean | undefined,\n  defaultValue?: string | boolean | undefined\n): void {\n  ghSetOutput(name, value ?? defaultValue);\n}\n"],
+  "mappings": "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",
   "names": ["exports", "module", "validate", "name", "exports", "module", "exports", "module", "exports", "module", "name", "exports", "module", "exports", "module", "exports", "module", "version", "exports", "module", "parse", "version", "exports", "module", "parse", "version", "exports", "module", "parse", "v1", "exports", "module", "exports", "module", "exports", "os", "exports", "name", "crypto", "parse", "name", "version", "URL", "crypto", "import_crypto", "crypto", "import_crypto", "fs", "os", "exports", "exports", "exports", "assert", "options", "pos", "socket", "require_tunnel", "exports", "module", "HttpCodes", "exports", "Headers", "MediaTypes", "exports", "exports", "exports", "code", "path", "exports", "os", "path", "ExitCode", "exports", "name", "getInput", "getBooleanInput", "setOutput", "setFailed", "os", "import_node_path", "Stream", "p", "ret", "res", "fs", "path", "EE", "validate", "import_events", "import_zlib", "realZlib", "realZlib", "assert", "list", "path", "pathModule", "import_node_path", "code", "BUFFER", "ABORTED", "EE", "code", "chunk", "ret", "fs", "pos", "parse", "path", "version", "semverValid", "name", "validatePackageName", "fs", "import_node_os", "os", "validate", "import_node_os", "os", "logger", "childProcess", "code", "_a", "import_promises", "import_node_os", "import_node_path", "logger", "os", "fs", "path", "import_valid", "semverValid", "semverGreaterThan", "semverDifference", "name", "version", "import_node_os", "path", "os", "ghLogDebug", "ghLogInfo", "ghLogError", "name", "ghGetInput", "ghSetSecret", "ghSetFailed", "ghSetOutput"]
 }
diff --git a/package-lock.json b/package-lock.json
index d025810..2ca45f6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2047,12 +2047,12 @@
       }
     },
     "node_modules/braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
       "dev": true,
       "dependencies": {
-        "fill-range": "^7.0.1"
+        "fill-range": "^7.1.1"
       },
       "engines": {
         "node": ">=8"
@@ -3213,9 +3213,9 @@
       }
     },
     "node_modules/fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
       "dev": true,
       "dependencies": {
         "to-regex-range": "^5.0.1"
@@ -7866,12 +7866,12 @@
       }
     },
     "braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
       "dev": true,
       "requires": {
-        "fill-range": "^7.0.1"
+        "fill-range": "^7.1.1"
       }
     },
     "browserslist": {
@@ -8695,9 +8695,9 @@
       }
     },
     "fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
       "dev": true,
       "requires": {
         "to-regex-range": "^5.0.1"
diff --git a/src/read-manifest.ts b/src/read-manifest.ts
index 8e2f248..46535cd 100644
--- a/src/read-manifest.ts
+++ b/src/read-manifest.ts
@@ -60,14 +60,14 @@ const readPackageJson = async (...pathSegments: string[]): Promise<string> => {
 
 const readTarballPackageJson = async (file: string): Promise<string> => {
   const data: Buffer[] = [];
-  const onentry = (entry: ReadEntry) => {
+  const onReadEntry = (entry: ReadEntry) => {
     if (entry.path === "package/package.json") {
       entry.on("data", (chunk) => data.push(chunk));
     }
   };
 
   try {
-    await tarList({ file, onentry });
+    await tarList({ file, onReadEntry });
 
     if (data.length === 0) {
       throw new Error("package.json not found inside archive");