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] --- 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 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 {\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 {\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 => {\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 => {\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 {\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;\n let name: unknown;\n let version: unknown;\n let publishConfig: unknown;\n\n try {\n manifestJson = JSON.parse(manifestContents) as Record;\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 & {\n fd?: number\n readSize?: number\n size?: number\n autoClose?: boolean\n }\n\nexport type ReadStreamEvents = Minipass.Events & {\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(\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 {\n src: Minipass\n dest: Minipass\n opts: PipeOptions\n ondrain: () => any\n constructor(\n src: Minipass,\n dest: Minipass.Writable,\n opts: PipeOptions\n ) {\n this.src = src\n this.dest = dest as Minipass\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 extends Pipe {\n unpipe() {\n this.src.removeListener('error', this.proxyErrors)\n super.unpipe()\n }\n constructor(\n src: Minipass,\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\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\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 = Iterable & AsyncIterable\n\n type EventArguments = Record\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\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 =\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 = Minipass.Events\n >\n extends EventEmitter\n implements Minipass.DualIterable\n{\n [FLOWING]: boolean = false;\n [PAUSED]: boolean = false;\n [PIPES]: Pipe[] = [];\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]\n : [Minipass.Options])\n ) {\n const options: Minipass.Options = (args[0] ||\n {}) as Minipass.Options\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(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(this as Minipass, dest, opts)\n : new PipeProxyErrors(this as Minipass, 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(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(\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(\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(\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(\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(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(\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 {\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 {\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 {\n return new Promise((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 {\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> => {\n this.pause()\n stopped = true\n return { value: undefined, done: true }\n }\n const next = (): Promise> => {\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) => 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>((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 {\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 => {\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 => {\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 & {\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(\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 => {\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((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(\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\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\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\n\n /**\n * A map object containing the results of `fs.readdir()` calls.\n *\n * @internal\n */\n readdirCache?: Map\n\n /**\n * A cache of all `lstat` results, for use in creating archives.\n *\n * @internal\n */\n statCache?: Map\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 = (\n o: O,\n): o is O & TarOptionsSyncFile => !!o.sync && !!o.file\nexport const isAsyncFile = (\n o: O,\n): o is O & TarOptionsAsyncFile => !o.sync && !!o.file\nexport const isSyncNoFile = (\n o: O,\n): o is O & TarOptionsSyncNoFile => !!o.sync && !o.file\nexport const isAsyncNoFile = (\n o: O,\n): o is O & TarOptionsAsyncNoFile => !o.sync && !o.file\nexport const isSync = (\n o: O,\n): o is O & TarOptionsSync => !!o.sync\nexport const isAsync = (\n o: O,\n): o is O & TarOptionsAsync => !o.sync\nexport const isFile = (\n o: O,\n): o is O & TarOptionsFile => !!o.file\nexport const isNoFile = (\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 = {}\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\n (\n opt: TarOptionsWithAliasesAsyncFile,\n entries: string[],\n ): Promise\n (opt: TarOptionsWithAliasesAsyncFile, cb: CB): Promise\n (\n opt: TarOptionsWithAliasesAsyncFile,\n entries: string[],\n cb: CB,\n ): Promise\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\n : typeof opt extends TarOptionsWithAliasesNoFile ? AsyncClass\n : Promise | AsyncClass\n (\n opt: TarOptionsWithAliasesAsync,\n entries: string[],\n ): typeof opt extends TarOptionsWithAliasesFile ? Promise\n : typeof opt extends TarOptionsWithAliasesNoFile ? AsyncClass\n : Promise | AsyncClass\n (opt: TarOptionsWithAliasesAsync, cb: CB): Promise\n (\n opt: TarOptionsWithAliasesAsync,\n entries: string[],\n cb: CB,\n ): typeof opt extends TarOptionsWithAliasesFile ? Promise\n : typeof opt extends TarOptionsWithAliasesNoFile ? never\n : Promise\n} & {\n // maybe sync, file\n (opt: TarOptionsWithAliasesFile): Promise | void\n (\n opt: TarOptionsWithAliasesFile,\n entries: string[],\n ): typeof opt extends TarOptionsWithAliasesSync ? void\n : typeof opt extends TarOptionsWithAliasesAsync ? Promise\n : Promise | void\n (opt: TarOptionsWithAliasesFile, cb: CB): Promise\n (\n opt: TarOptionsWithAliasesFile,\n entries: string[],\n cb: CB,\n ): typeof opt extends TarOptionsWithAliasesSync ? never\n : typeof opt extends TarOptionsWithAliasesAsync ? Promise\n : Promise\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\n : void | Promise\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\n : SyncClass | void | AsyncClass | Promise\n} & {\n // extras\n syncFile: (opt: TarOptionsSyncFile, entries: string[]) => void\n asyncFile: (\n opt: TarOptionsAsyncFile,\n entries: string[],\n cb?: CB,\n ) => Promise\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,\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 => {\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\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\n brotli?: TarOptions['brotli']\n\n writable: true = true\n readable: false = false;\n\n [QUEUE]: Yallist =\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 & {\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 {\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 {\n tail?: Node\n head?: Node\n length: number = 0\n\n static create(list: Iterable = []) {\n return new Yallist(list)\n }\n\n constructor(list: Iterable = []) {\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) {\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) {\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) {\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) => 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) => 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(\n fn: (value: T, list: Yallist) => R,\n thisp?: any,\n ): Yallist {\n thisp = thisp || this\n const res = new Yallist()\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(\n fn: (value: T, list: Yallist) => R,\n thisp?: any,\n ): Yallist {\n thisp = thisp || this\n var res = new Yallist()\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(\n fn: (acc: R, next: T, i: number) => R,\n initial: R,\n ): R\n reduce(\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(\n fn: (acc: R, next: T, i: number) => R,\n initial: R,\n ): R\n reduceReverse(\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(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(\n self: Yallist,\n node: Node | undefined,\n value: T,\n) {\n const prev = node\n const next = node ? node.next : self.head\n const inserted = new Node(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(self: Yallist, item: T) {\n self.tail = new Node(item, self.tail, undefined, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift(self: Yallist, item: T) {\n self.head = new Node(item, undefined, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nexport class Node {\n list?: Yallist\n next?: Node\n prev?: Node\n value: T\n\n constructor(\n value: T,\n prev?: Node | undefined,\n next?: Node | undefined,\n list?: Yallist | 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([\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(\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, 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 {\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;\n access: ConfigValue;\n provenance: ConfigValue;\n ignoreScripts: ConfigValue;\n dryRun: ConfigValue;\n strategy: ConfigValue;\n logger: Logger | undefined;\n temporaryDirectory: string;\n}\n\n/** A config value, and whether that value differs from default. */\nexport interface ConfigValue {\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 = (\n value: unknown,\n defaultValue: unknown,\n validate: (value: unknown) => TValue\n): ConfigValue => ({\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 {\n successData: SuccessData | undefined;\n errorCode: string | undefined;\n error: Error | undefined;\n}\n\ntype SuccessData = T extends typeof VIEW\n ? NpmViewData\n : T extends typeof PUBLISH\n ? NpmPublishData\n : unknown;\n\nexport interface NpmViewData {\n \"dist-tags\": Record;\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(\n command: CommandT,\n cliArguments: string[],\n options: NpmCliOptions\n): Promise> {\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>(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,\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(...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;\n\nexport type NpmCliTask = (\n manifest: PackageManifest,\n options: NormalizedOptions,\n environment: NpmCliEnvironment\n) => Promise;\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(\n manifest: PackageManifest,\n options: NormalizedOptions,\n task: NpmCliTask\n): Promise {\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 {\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 {\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(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 {\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 {\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 => {\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 => {\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 {\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;\n let name: unknown;\n let version: unknown;\n let publishConfig: unknown;\n\n try {\n manifestJson = JSON.parse(manifestContents) as Record;\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 & {\n fd?: number\n readSize?: number\n size?: number\n autoClose?: boolean\n }\n\nexport type ReadStreamEvents = Minipass.Events & {\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(\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 {\n src: Minipass\n dest: Minipass\n opts: PipeOptions\n ondrain: () => any\n constructor(\n src: Minipass,\n dest: Minipass.Writable,\n opts: PipeOptions\n ) {\n this.src = src\n this.dest = dest as Minipass\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 extends Pipe {\n unpipe() {\n this.src.removeListener('error', this.proxyErrors)\n super.unpipe()\n }\n constructor(\n src: Minipass,\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\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\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 = Iterable & AsyncIterable\n\n type EventArguments = Record\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\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 =\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 = Minipass.Events\n >\n extends EventEmitter\n implements Minipass.DualIterable\n{\n [FLOWING]: boolean = false;\n [PAUSED]: boolean = false;\n [PIPES]: Pipe[] = [];\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]\n : [Minipass.Options])\n ) {\n const options: Minipass.Options = (args[0] ||\n {}) as Minipass.Options\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(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(this as Minipass, dest, opts)\n : new PipeProxyErrors(this as Minipass, 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(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(\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(\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(\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(\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(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(\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 {\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 {\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 {\n return new Promise((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 {\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> => {\n this.pause()\n stopped = true\n return { value: undefined, done: true }\n }\n const next = (): Promise> => {\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) => 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>((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 {\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 => {\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 => {\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 & {\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(\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 => {\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((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(\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\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\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\n\n /**\n * A map object containing the results of `fs.readdir()` calls.\n *\n * @internal\n */\n readdirCache?: Map\n\n /**\n * A cache of all `lstat` results, for use in creating archives.\n *\n * @internal\n */\n statCache?: Map\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 = (\n o: O,\n): o is O & TarOptionsSyncFile => !!o.sync && !!o.file\nexport const isAsyncFile = (\n o: O,\n): o is O & TarOptionsAsyncFile => !o.sync && !!o.file\nexport const isSyncNoFile = (\n o: O,\n): o is O & TarOptionsSyncNoFile => !!o.sync && !o.file\nexport const isAsyncNoFile = (\n o: O,\n): o is O & TarOptionsAsyncNoFile => !o.sync && !o.file\nexport const isSync = (\n o: O,\n): o is O & TarOptionsSync => !!o.sync\nexport const isAsync = (\n o: O,\n): o is O & TarOptionsAsync => !o.sync\nexport const isFile = (\n o: O,\n): o is O & TarOptionsFile => !!o.file\nexport const isNoFile = (\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 = {}\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\n (\n opt: TarOptionsWithAliasesAsyncFile,\n entries: string[],\n ): Promise\n (opt: TarOptionsWithAliasesAsyncFile, cb: CB): Promise\n (\n opt: TarOptionsWithAliasesAsyncFile,\n entries: string[],\n cb: CB,\n ): Promise\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\n : typeof opt extends TarOptionsWithAliasesNoFile ? AsyncClass\n : Promise | AsyncClass\n (\n opt: TarOptionsWithAliasesAsync,\n entries: string[],\n ): typeof opt extends TarOptionsWithAliasesFile ? Promise\n : typeof opt extends TarOptionsWithAliasesNoFile ? AsyncClass\n : Promise | AsyncClass\n (opt: TarOptionsWithAliasesAsync, cb: CB): Promise\n (\n opt: TarOptionsWithAliasesAsync,\n entries: string[],\n cb: CB,\n ): typeof opt extends TarOptionsWithAliasesFile ? Promise\n : typeof opt extends TarOptionsWithAliasesNoFile ? never\n : Promise\n} & {\n // maybe sync, file\n (opt: TarOptionsWithAliasesFile): Promise | void\n (\n opt: TarOptionsWithAliasesFile,\n entries: string[],\n ): typeof opt extends TarOptionsWithAliasesSync ? void\n : typeof opt extends TarOptionsWithAliasesAsync ? Promise\n : Promise | void\n (opt: TarOptionsWithAliasesFile, cb: CB): Promise\n (\n opt: TarOptionsWithAliasesFile,\n entries: string[],\n cb: CB,\n ): typeof opt extends TarOptionsWithAliasesSync ? never\n : typeof opt extends TarOptionsWithAliasesAsync ? Promise\n : Promise\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\n : void | Promise\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\n : SyncClass | void | AsyncClass | Promise\n} & {\n // extras\n syncFile: (opt: TarOptionsSyncFile, entries: string[]) => void\n asyncFile: (\n opt: TarOptionsAsyncFile,\n entries: string[],\n cb?: CB,\n ) => Promise\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,\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 => {\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\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\n brotli?: TarOptions['brotli']\n\n writable: true = true\n readable: false = false;\n\n [QUEUE]: Yallist =\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 & {\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 {\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 {\n tail?: Node\n head?: Node\n length: number = 0\n\n static create(list: Iterable = []) {\n return new Yallist(list)\n }\n\n constructor(list: Iterable = []) {\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) {\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) {\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) {\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) => 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) => 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(\n fn: (value: T, list: Yallist) => R,\n thisp?: any,\n ): Yallist {\n thisp = thisp || this\n const res = new Yallist()\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(\n fn: (value: T, list: Yallist) => R,\n thisp?: any,\n ): Yallist {\n thisp = thisp || this\n var res = new Yallist()\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(\n fn: (acc: R, next: T, i: number) => R,\n initial: R,\n ): R\n reduce(\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(\n fn: (acc: R, next: T, i: number) => R,\n initial: R,\n ): R\n reduceReverse(\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(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(\n self: Yallist,\n node: Node | undefined,\n value: T,\n) {\n const prev = node\n const next = node ? node.next : self.head\n const inserted = new Node(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(self: Yallist, item: T) {\n self.tail = new Node(item, self.tail, undefined, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift(self: Yallist, item: T) {\n self.head = new Node(item, undefined, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nexport class Node {\n list?: Yallist\n next?: Node\n prev?: Node\n value: T\n\n constructor(\n value: T,\n prev?: Node | undefined,\n next?: Node | undefined,\n list?: Yallist | 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([\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(\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, 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 {\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;\n access: ConfigValue;\n provenance: ConfigValue;\n ignoreScripts: ConfigValue;\n dryRun: ConfigValue;\n strategy: ConfigValue;\n logger: Logger | undefined;\n temporaryDirectory: string;\n}\n\n/** A config value, and whether that value differs from default. */\nexport interface ConfigValue {\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 = (\n value: unknown,\n defaultValue: unknown,\n validate: (value: unknown) => TValue\n): ConfigValue => ({\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 {\n successData: SuccessData | undefined;\n errorCode: string | undefined;\n error: Error | undefined;\n}\n\ntype SuccessData = T extends typeof VIEW\n ? NpmViewData\n : T extends typeof PUBLISH\n ? NpmPublishData\n : unknown;\n\nexport interface NpmViewData {\n \"dist-tags\": Record;\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(\n command: CommandT,\n cliArguments: string[],\n options: NpmCliOptions\n): Promise> {\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>(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,\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(...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;\n\nexport type NpmCliTask = (\n manifest: PackageManifest,\n options: NormalizedOptions,\n environment: NpmCliEnvironment\n) => Promise;\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(\n manifest: PackageManifest,\n options: NormalizedOptions,\n task: NpmCliTask\n): Promise {\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 {\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 {\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(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 => { const readTarballPackageJson = async (file: string): Promise => { 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");